123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- var surrogate_pairs_1 = require("./surrogate-pairs");
- var ALPHA_INDEX = {
- '<': '<',
- '>': '>',
- '"': '"',
- '&apos': '\'',
- '&': '&',
- '<': '<',
- '>': '>',
- '"': '"',
- ''': '\'',
- '&': '&'
- };
- var CHAR_INDEX = {
- 60: 'lt',
- 62: 'gt',
- 34: 'quot',
- 39: 'apos',
- 38: 'amp'
- };
- var CHAR_S_INDEX = {
- '<': '<',
- '>': '>',
- '"': '"',
- '\'': ''',
- '&': '&'
- };
- 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;
|