Sha256: f26e60ac125b1335897395337b1bbcbe4aed9ee16ec34b1f3a42f3388acd496a

Contents?: true

Size: 863 Bytes

Versions: 7

Compression:

Stored size: 863 Bytes

Contents

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

Version data entries

7 entries across 7 versions & 2 rubygems

Version Path
minimum_viable_product-0.0.11 test/dummy/node_modules/htmlescape/htmlescape.js
brwy_rails-0.0.6 test/dummy/node_modules/htmlescape/htmlescape.js
brwy_rails-0.0.5 test/dummy/node_modules/htmlescape/htmlescape.js
brwy_rails-0.0.4 test/dummy/node_modules/htmlescape/htmlescape.js
brwy_rails-0.0.3 test/dummy/node_modules/htmlescape/htmlescape.js
brwy_rails-0.0.2 test/dummy/node_modules/htmlescape/htmlescape.js
brwy_rails-0.0.1 test/dummy/node_modules/htmlescape/htmlescape.js