GoScrobble/web/node_modules/html-entities/lib/xml-entities.js

133 lines
3.7 KiB
JavaScript
Raw Permalink Normal View History

2022-04-25 02:47:15 +00:00
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var surrogate_pairs_1 = require("./surrogate-pairs");
var ALPHA_INDEX = {
'&lt': '<',
'&gt': '>',
'&quot': '"',
'&apos': '\'',
'&amp': '&',
'&lt;': '<',
'&gt;': '>',
'&quot;': '"',
'&apos;': '\'',
'&amp;': '&'
};
var CHAR_INDEX = {
60: 'lt',
62: 'gt',
34: 'quot',
39: 'apos',
38: 'amp'
};
var CHAR_S_INDEX = {
'<': '&lt;',
'>': '&gt;',
'"': '&quot;',
'\'': '&apos;',
'&': '&amp;'
};
var XmlEntities = /** @class */ (function () {
function XmlEntities() {
}
XmlEntities.prototype.encode = function (str) {
if (!str || !str.length) {
return '';
}
return str.replace(/[<>"'&]/g, function (s) {
return CHAR_S_INDEX[s];
});
};
XmlEntities.encode = function (str) {
return new XmlEntities().encode(str);
};
XmlEntities.prototype.decode = function (str) {
if (!str || !str.length) {
return '';
}
return str.replace(/&#?[0-9a-zA-Z]+;?/g, function (s) {
if (s.charAt(1) === '#') {
var code = s.charAt(2).toLowerCase() === 'x' ?
parseInt(s.substr(3), 16) :
parseInt(s.substr(2));
if (!isNaN(code) || code >= -32768) {
if (code <= 65535) {
return String.fromCharCode(code);
}
else {
return surrogate_pairs_1.fromCodePoint(code);
}
}
return '';
}
return ALPHA_INDEX[s] || s;
});
};
XmlEntities.decode = function (str) {
return new XmlEntities().decode(str);
};
XmlEntities.prototype.encodeNonUTF = function (str) {
if (!str || !str.length) {
return '';
}
var strLength = str.length;
var result = '';
var i = 0;
while (i < strLength) {
var c = str.charCodeAt(i);
var alpha = CHAR_INDEX[c];
if (alpha) {
result += "&" + alpha + ";";
i++;
continue;
}
if (c < 32 || c > 126) {
if (c >= surrogate_pairs_1.highSurrogateFrom && c <= surrogate_pairs_1.highSurrogateTo) {
result += '&#' + surrogate_pairs_1.getCodePoint(str, i) + ';';
i++;
}
else {
result += '&#' + c + ';';
}
}
else {
result += str.charAt(i);
}
i++;
}
return result;
};
XmlEntities.encodeNonUTF = function (str) {
return new XmlEntities().encodeNonUTF(str);
};
XmlEntities.prototype.encodeNonASCII = function (str) {
if (!str || !str.length) {
return '';
}
var strLength = str.length;
var result = '';
var i = 0;
while (i < strLength) {
var c = str.charCodeAt(i);
if (c <= 255) {
result += str[i++];
continue;
}
if (c >= surrogate_pairs_1.highSurrogateFrom && c <= surrogate_pairs_1.highSurrogateTo) {
result += '&#' + surrogate_pairs_1.getCodePoint(str, i) + ';';
i++;
}
else {
result += '&#' + c + ';';
}
i++;
}
return result;
};
XmlEntities.encodeNonASCII = function (str) {
return new XmlEntities().encodeNonASCII(str);
};
return XmlEntities;
}());
exports.XmlEntities = XmlEntities;