You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
'use strict';
const internals = {};
module.exports = function (input) {
if (!input) { return ''; }
let escaped = '';
for (let i = 0; i < input.length; ++i) {
const charCode = input.charCodeAt(i);
if (internals.isSafe(charCode)) { escaped += input[i]; } else { escaped += internals.escapeHtmlChar(charCode); } }
return escaped; };
internals.escapeHtmlChar = function (charCode) {
const namedEscape = internals.namedHtml[charCode]; if (typeof namedEscape !== 'undefined') { return namedEscape; }
if (charCode >= 256) { return '&#' + charCode + ';'; }
const hexValue = charCode.toString(16).padStart(2, '0'); return `&#x${hexValue};`; };
internals.isSafe = function (charCode) {
return (typeof internals.safeCharCodes[charCode] !== 'undefined'); };
internals.namedHtml = { '38': '&', '60': '<', '62': '>', '34': '"', '160': ' ', '162': '¢', '163': '£', '164': '¤', '169': '©', '174': '®' };
internals.safeCharCodes = (function () {
const safe = {};
for (let i = 32; i < 123; ++i) {
if ((i >= 97) || // a-z
(i >= 65 && i <= 90) || // A-Z
(i >= 48 && i <= 57) || // 0-9
i === 32 || // space
i === 46 || // .
i === 44 || // ,
i === 45 || // -
i === 58 || // :
i === 95) { // _
safe[i] = null; } }
return safe; }());
|