6 exports.escapeJavaScript = function (input) {
14 for (var i = 0, il = input.length; i < il; ++i) {
16 var charCode = input.charCodeAt(i);
18 if (internals.isSafe(charCode)) {
22 escaped += internals.escapeJavaScriptChar(charCode);
30 exports.escapeHtml = function (input) {
38 for (var i = 0, il = input.length; i < il; ++i) {
40 var charCode = input.charCodeAt(i);
42 if (internals.isSafe(charCode)) {
46 escaped += internals.escapeHtmlChar(charCode);
54 internals.escapeJavaScriptChar = function (charCode) {
56 if (charCode >= 256) {
57 return '\\u' + internals.padLeft('' + charCode, 4);
60 var hexValue = new Buffer(String.fromCharCode(charCode), 'ascii').toString('hex');
61 return '\\x' + internals.padLeft(hexValue, 2);
65 internals.escapeHtmlChar = function (charCode) {
67 var namedEscape = internals.namedHtml[charCode];
68 if (typeof namedEscape !== 'undefined') {
72 if (charCode >= 256) {
73 return '&#' + charCode + ';';
76 var hexValue = new Buffer(String.fromCharCode(charCode), 'ascii').toString('hex');
77 return '&#x' + internals.padLeft(hexValue, 2) + ';';
81 internals.padLeft = function (str, len) {
83 while (str.length < len) {
91 internals.isSafe = function (charCode) {
93 return (typeof internals.safeCharCodes[charCode] !== 'undefined');
97 internals.namedHtml = {
111 internals.safeCharCodes = (function () {
115 for (var i = 32; i < 123; ++i) {
117 if ((i >= 97) || // a-z
118 (i >= 65 && i <= 90) || // A-Z
119 (i >= 48 && i <= 57) || // 0-9