mirror of
https://github.com/idanoo/GoScrobble.git
synced 2024-11-22 16:35:14 +00:00
133 lines
3.7 KiB
JavaScript
133 lines
3.7 KiB
JavaScript
"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;
|