123456789101112131415161718192021222324252627282930313233343536373839404142 |
- /**
- * 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);
- };
|