blob: 5f0ce6c72bcd2862add2b0a57ab75d13e25863a2 [file] [log] [blame]
/**
* Properly escape JSON for usage as an object literal inside of a `<script>` tag.
* JS implementation of http://golang.org/pkg/encoding/json/#HTMLEscape
* More info: http://timelessrepo.com/json-isnt-a-javascript-subset
*/
'use strict';
var ESCAPE_LOOKUP = {
'&': '\\u0026',
'>': '\\u003e',
'<': '\\u003c',
'\u2028': '\\u2028',
'\u2029': '\\u2029'
};
var ESCAPE_REGEX = /[&><\u2028\u2029]/g;
function escaper(match) {
return ESCAPE_LOOKUP[match];
}
module.exports = function(obj) {
return JSON.stringify(obj).replace(ESCAPE_REGEX, escaper);
};
/***/
var TERMINATORS_LOOKUP = {
'\u2028': '\\u2028',
'\u2029': '\\u2029'
};
var TERMINATORS_REGEX = /[\u2028\u2029]/g;
function sanitizer(match) {
return TERMINATORS_LOOKUP[match];
}
module.exports.sanitize = function(str) {
return str.replace(TERMINATORS_REGEX, sanitizer);
};