string-escape

A JavaScript library for escaping JavaScript strings while generating the shortest possible valid output.

JavaScript string escape

This is a JavaScript library for escaping JavaScript strings while generating the shortest possible valid output.

Feel free to fork if you see possible improvements!

In a browser:

<script src="string-escape.js"></script>

Via npm:

npm install string-escape

In Narwhal, Node.js, and RingoJS:

var stringEscape = require('string-escape');

In Rhino:

load('string-escape.js');

Using an AMD loader like RequireJS:

require(
  {
    'paths': {
      'string-escape': 'path/to/string-escape'
    }
  },
  ['string-escape'],
  function(stringEscape) {
    console.log(stringEscape);
  }
);

This function takes a string and returns an escaped version of the string where any characters that are not printable ASCII symbols are escaped using the shortest possible (but valid) escape sequences for use in JavaScript strings.

stringEscape('Ich ♥ Bücher');
// → 'Ich \\u2665 B\\xFCcher' 
 
stringEscape('foo 𝌆 bar');
// → 'foo \\uD834\\uDF06 bar' 

The optional options argument accepts an object with the following options:

The default value for the quotes option is 'single'. This means that any occurences of ' in the input string will be escaped as \', so that the output can be used in a string literal wrapped in single quotes.

stringEscape('Lorem ipsum "dolor" sit \'amet\' etc.');
// → 'Lorem ipsum "dolor" sit \\\'amet\\\' etc.' 
 
stringEscape('Lorem ipsum "dolor" sit \'amet\' etc.', {
  'quotes': 'single'
});
// → 'Lorem ipsum "dolor" sit \\\'amet\\\' etc.' 
// → "Lorem ipsum \"dolor\" sit \\'amet\\' etc." 

If you want to use the output as part of a string literal wrapped in double quotes, set the quotes option to 'double'.

stringEscape('Lorem ipsum "dolor" sit \'amet\' etc.', {
  'quotes': 'double'
});
// → 'Lorem ipsum \\"dolor\\" sit \'amet\' etc.' 
// → "Lorem ipsum \\\"dolor\\\" sit 'amet' etc." 

A string representing the semantic version number.

This library has been tested in at least Chrome 27-29, Firefox 3-22, Safari 4-6, Opera 10-12, IE 6-10, Node.js v0.10.0, Narwhal 0.3.2, RingoJS 0.8-0.9, PhantomJS 1.9.0, and Rhino 1.7RC4.

After cloning this repository, run npm install to install the dependencies needed for development and testing. You may want to install Istanbul globally using npm install istanbul -g.

Once that’s done, you can run the unit tests in Node using npm test or node tests/tests.js. To run the tests in Rhino, Ringo, Narwhal, and web browsers as well, use grunt test.

To generate the code coverage report, use grunt cover.

Mathias Bynens

This library is dual licensed under the MIT and GPL licenses.