mirror of
https://github.com/musix-org/musix-oss
synced 2026-10-15 10:53:44 +00:00
fix
This commit is contained in:
1 parent
cbdffcf19c
commit
5eb0264906
2502 files changed
+360854
No files matched your search
+147
@@ -0,0 +1,147 @@
|
||||
var HTML_ALPHA = ['apos', 'nbsp', 'iexcl', 'cent', 'pound', 'curren', 'yen', 'brvbar', 'sect', 'uml', 'copy', 'ordf', 'laquo', 'not', 'shy', 'reg', 'macr', 'deg', 'plusmn', 'sup2', 'sup3', 'acute', 'micro', 'para', 'middot', 'cedil', 'sup1', 'ordm', 'raquo', 'frac14', 'frac12', 'frac34', 'iquest', 'Agrave', 'Aacute', 'Acirc', 'Atilde', 'Auml', 'Aring', 'Aelig', 'Ccedil', 'Egrave', 'Eacute', 'Ecirc', 'Euml', 'Igrave', 'Iacute', 'Icirc', 'Iuml', 'ETH', 'Ntilde', 'Ograve', 'Oacute', 'Ocirc', 'Otilde', 'Ouml', 'times', 'Oslash', 'Ugrave', 'Uacute', 'Ucirc', 'Uuml', 'Yacute', 'THORN', 'szlig', 'agrave', 'aacute', 'acirc', 'atilde', 'auml', 'aring', 'aelig', 'ccedil', 'egrave', 'eacute', 'ecirc', 'euml', 'igrave', 'iacute', 'icirc', 'iuml', 'eth', 'ntilde', 'ograve', 'oacute', 'ocirc', 'otilde', 'ouml', 'divide', 'oslash', 'ugrave', 'uacute', 'ucirc', 'uuml', 'yacute', 'thorn', 'yuml', 'quot', 'amp', 'lt', 'gt', 'OElig', 'oelig', 'Scaron', 'scaron', 'Yuml', 'circ', 'tilde', 'ensp', 'emsp', 'thinsp', 'zwnj', 'zwj', 'lrm', 'rlm', 'ndash', 'mdash', 'lsquo', 'rsquo', 'sbquo', 'ldquo', 'rdquo', 'bdquo', 'dagger', 'Dagger', 'permil', 'lsaquo', 'rsaquo', 'euro', 'fnof', 'Alpha', 'Beta', 'Gamma', 'Delta', 'Epsilon', 'Zeta', 'Eta', 'Theta', 'Iota', 'Kappa', 'Lambda', 'Mu', 'Nu', 'Xi', 'Omicron', 'Pi', 'Rho', 'Sigma', 'Tau', 'Upsilon', 'Phi', 'Chi', 'Psi', 'Omega', 'alpha', 'beta', 'gamma', 'delta', 'epsilon', 'zeta', 'eta', 'theta', 'iota', 'kappa', 'lambda', 'mu', 'nu', 'xi', 'omicron', 'pi', 'rho', 'sigmaf', 'sigma', 'tau', 'upsilon', 'phi', 'chi', 'psi', 'omega', 'thetasym', 'upsih', 'piv', 'bull', 'hellip', 'prime', 'Prime', 'oline', 'frasl', 'weierp', 'image', 'real', 'trade', 'alefsym', 'larr', 'uarr', 'rarr', 'darr', 'harr', 'crarr', 'lArr', 'uArr', 'rArr', 'dArr', 'hArr', 'forall', 'part', 'exist', 'empty', 'nabla', 'isin', 'notin', 'ni', 'prod', 'sum', 'minus', 'lowast', 'radic', 'prop', 'infin', 'ang', 'and', 'or', 'cap', 'cup', 'int', 'there4', 'sim', 'cong', 'asymp', 'ne', 'equiv', 'le', 'ge', 'sub', 'sup', 'nsub', 'sube', 'supe', 'oplus', 'otimes', 'perp', 'sdot', 'lceil', 'rceil', 'lfloor', 'rfloor', 'lang', 'rang', 'loz', 'spades', 'clubs', 'hearts', 'diams'];
|
||||
var HTML_CODES = [39, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 34, 38, 60, 62, 338, 339, 352, 353, 376, 710, 732, 8194, 8195, 8201, 8204, 8205, 8206, 8207, 8211, 8212, 8216, 8217, 8218, 8220, 8221, 8222, 8224, 8225, 8240, 8249, 8250, 8364, 402, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 977, 978, 982, 8226, 8230, 8242, 8243, 8254, 8260, 8472, 8465, 8476, 8482, 8501, 8592, 8593, 8594, 8595, 8596, 8629, 8656, 8657, 8658, 8659, 8660, 8704, 8706, 8707, 8709, 8711, 8712, 8713, 8715, 8719, 8721, 8722, 8727, 8730, 8733, 8734, 8736, 8743, 8744, 8745, 8746, 8747, 8756, 8764, 8773, 8776, 8800, 8801, 8804, 8805, 8834, 8835, 8836, 8838, 8839, 8853, 8855, 8869, 8901, 8968, 8969, 8970, 8971, 9001, 9002, 9674, 9824, 9827, 9829, 9830];
|
||||
|
||||
var alphaIndex = {};
|
||||
var numIndex = {};
|
||||
|
||||
var i = 0;
|
||||
var length = HTML_ALPHA.length;
|
||||
while (i < length) {
|
||||
var a = HTML_ALPHA[i];
|
||||
var c = HTML_CODES[i];
|
||||
alphaIndex[a] = String.fromCharCode(c);
|
||||
numIndex[c] = a;
|
||||
i++;
|
||||
}
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
*/
|
||||
function Html4Entities() {}
|
||||
|
||||
/**
|
||||
* @param {String} str
|
||||
* @returns {String}
|
||||
*/
|
||||
Html4Entities.prototype.decode = function(str) {
|
||||
if (!str || !str.length) {
|
||||
return '';
|
||||
}
|
||||
return str.replace(/&(#?[\w\d]+);?/g, function(s, entity) {
|
||||
var chr;
|
||||
if (entity.charAt(0) === "#") {
|
||||
var code = entity.charAt(1).toLowerCase() === 'x' ?
|
||||
parseInt(entity.substr(2), 16) :
|
||||
parseInt(entity.substr(1));
|
||||
|
||||
if (!(isNaN(code) || code < -32768 || code > 65535)) {
|
||||
chr = String.fromCharCode(code);
|
||||
}
|
||||
} else {
|
||||
chr = alphaIndex[entity];
|
||||
}
|
||||
return chr || s;
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {String} str
|
||||
* @returns {String}
|
||||
*/
|
||||
Html4Entities.decode = function(str) {
|
||||
return new Html4Entities().decode(str);
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {String} str
|
||||
* @returns {String}
|
||||
*/
|
||||
Html4Entities.prototype.encode = function(str) {
|
||||
if (!str || !str.length) {
|
||||
return '';
|
||||
}
|
||||
var strLength = str.length;
|
||||
var result = '';
|
||||
var i = 0;
|
||||
while (i < strLength) {
|
||||
var alpha = numIndex[str.charCodeAt(i)];
|
||||
result += alpha ? "&" + alpha + ";" : str.charAt(i);
|
||||
i++;
|
||||
}
|
||||
return result;
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {String} str
|
||||
* @returns {String}
|
||||
*/
|
||||
Html4Entities.encode = function(str) {
|
||||
return new Html4Entities().encode(str);
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {String} str
|
||||
* @returns {String}
|
||||
*/
|
||||
Html4Entities.prototype.encodeNonUTF = function(str) {
|
||||
if (!str || !str.length) {
|
||||
return '';
|
||||
}
|
||||
var strLength = str.length;
|
||||
var result = '';
|
||||
var i = 0;
|
||||
while (i < strLength) {
|
||||
var cc = str.charCodeAt(i);
|
||||
var alpha = numIndex[cc];
|
||||
if (alpha) {
|
||||
result += "&" + alpha + ";";
|
||||
} else if (cc < 32 || cc > 126) {
|
||||
result += "&#" + cc + ";";
|
||||
} else {
|
||||
result += str.charAt(i);
|
||||
}
|
||||
i++;
|
||||
}
|
||||
return result;
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {String} str
|
||||
* @returns {String}
|
||||
*/
|
||||
Html4Entities.encodeNonUTF = function(str) {
|
||||
return new Html4Entities().encodeNonUTF(str);
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {String} str
|
||||
* @returns {String}
|
||||
*/
|
||||
Html4Entities.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;
|
||||
}
|
||||
result += '&#' + c + ';';
|
||||
i++;
|
||||
}
|
||||
return result;
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {String} str
|
||||
* @returns {String}
|
||||
*/
|
||||
Html4Entities.encodeNonASCII = function(str) {
|
||||
return new Html4Entities().encodeNonASCII(str);
|
||||
};
|
||||
|
||||
module.exports = Html4Entities;
|
||||
+190
@@ -0,0 +1,190 @@
|
||||
var ENTITIES = [['Aacute', [193]], ['aacute', [225]], ['Abreve', [258]], ['abreve', [259]], ['ac', [8766]], ['acd', [8767]], ['acE', [8766, 819]], ['Acirc', [194]], ['acirc', [226]], ['acute', [180]], ['Acy', [1040]], ['acy', [1072]], ['AElig', [198]], ['aelig', [230]], ['af', [8289]], ['Afr', [120068]], ['afr', [120094]], ['Agrave', [192]], ['agrave', [224]], ['alefsym', [8501]], ['aleph', [8501]], ['Alpha', [913]], ['alpha', [945]], ['Amacr', [256]], ['amacr', [257]], ['amalg', [10815]], ['amp', [38]], ['AMP', [38]], ['andand', [10837]], ['And', [10835]], ['and', [8743]], ['andd', [10844]], ['andslope', [10840]], ['andv', [10842]], ['ang', [8736]], ['ange', [10660]], ['angle', [8736]], ['angmsdaa', [10664]], ['angmsdab', [10665]], ['angmsdac', [10666]], ['angmsdad', [10667]], ['angmsdae', [10668]], ['angmsdaf', [10669]], ['angmsdag', [10670]], ['angmsdah', [10671]], ['angmsd', [8737]], ['angrt', [8735]], ['angrtvb', [8894]], ['angrtvbd', [10653]], ['angsph', [8738]], ['angst', [197]], ['angzarr', [9084]], ['Aogon', [260]], ['aogon', [261]], ['Aopf', [120120]], ['aopf', [120146]], ['apacir', [10863]], ['ap', [8776]], ['apE', [10864]], ['ape', [8778]], ['apid', [8779]], ['apos', [39]], ['ApplyFunction', [8289]], ['approx', [8776]], ['approxeq', [8778]], ['Aring', [197]], ['aring', [229]], ['Ascr', [119964]], ['ascr', [119990]], ['Assign', [8788]], ['ast', [42]], ['asymp', [8776]], ['asympeq', [8781]], ['Atilde', [195]], ['atilde', [227]], ['Auml', [196]], ['auml', [228]], ['awconint', [8755]], ['awint', [10769]], ['backcong', [8780]], ['backepsilon', [1014]], ['backprime', [8245]], ['backsim', [8765]], ['backsimeq', [8909]], ['Backslash', [8726]], ['Barv', [10983]], ['barvee', [8893]], ['barwed', [8965]], ['Barwed', [8966]], ['barwedge', [8965]], ['bbrk', [9141]], ['bbrktbrk', [9142]], ['bcong', [8780]], ['Bcy', [1041]], ['bcy', [1073]], ['bdquo', [8222]], ['becaus', [8757]], ['because', [8757]], ['Because', [8757]], ['bemptyv', [10672]], ['bepsi', [1014]], ['bernou', [8492]], ['Bernoullis', [8492]], ['Beta', [914]], ['beta', [946]], ['beth', [8502]], ['between', [8812]], ['Bfr', [120069]], ['bfr', [120095]], ['bigcap', [8898]], ['bigcirc', [9711]], ['bigcup', [8899]], ['bigodot', [10752]], ['bigoplus', [10753]], ['bigotimes', [10754]], ['bigsqcup', [10758]], ['bigstar', [9733]], ['bigtriangledown', [9661]], ['bigtriangleup', [9651]], ['biguplus', [10756]], ['bigvee', [8897]], ['bigwedge', [8896]], ['bkarow', [10509]], ['blacklozenge', [10731]], ['blacksquare', [9642]], ['blacktriangle', [9652]], ['blacktriangledown', [9662]], ['blacktriangleleft', [9666]], ['blacktriangleright', [9656]], ['blank', [9251]], ['blk12', [9618]], ['blk14', [9617]], ['blk34', [9619]], ['block', [9608]], ['bne', [61, 8421]], ['bnequiv', [8801, 8421]], ['bNot', [10989]], ['bnot', [8976]], ['Bopf', [120121]], ['bopf', [120147]], ['bot', [8869]], ['bottom', [8869]], ['bowtie', [8904]], ['boxbox', [10697]], ['boxdl', [9488]], ['boxdL', [9557]], ['boxDl', [9558]], ['boxDL', [9559]], ['boxdr', [9484]], ['boxdR', [9554]], ['boxDr', [9555]], ['boxDR', [9556]], ['boxh', [9472]], ['boxH', [9552]], ['boxhd', [9516]], ['boxHd', [9572]], ['boxhD', [9573]], ['boxHD', [9574]], ['boxhu', [9524]], ['boxHu', [9575]], ['boxhU', [9576]], ['boxHU', [9577]], ['boxminus', [8863]], ['boxplus', [8862]], ['boxtimes', [8864]], ['boxul', [9496]], ['boxuL', [9563]], ['boxUl', [9564]], ['boxUL', [9565]], ['boxur', [9492]], ['boxuR', [9560]], ['boxUr', [9561]], ['boxUR', [9562]], ['boxv', [9474]], ['boxV', [9553]], ['boxvh', [9532]], ['boxvH', [9578]], ['boxVh', [9579]], ['boxVH', [9580]], ['boxvl', [9508]], ['boxvL', [9569]], ['boxVl', [9570]], ['boxVL', [9571]], ['boxvr', [9500]], ['boxvR', [9566]], ['boxVr', [9567]], ['boxVR', [9568]], ['bprime', [8245]], ['breve', [728]], ['Breve', [728]], ['brvbar', [166]], ['bscr', [119991]], ['Bscr', [8492]], ['bsemi', [8271]], ['bsim', [8765]], ['bsime', [8909]], ['bsolb', [10693]], ['bsol', [92]], ['bsolhsub', [10184]], ['bull', [8226]], ['bullet', [8226]], ['bump', [8782]], ['bumpE', [10926]], ['bumpe', [8783]], ['Bumpeq', [8782]], ['bumpeq', [8783]], ['Cacute', [262]], ['cacute', [263]], ['capand', [10820]], ['capbrcup', [10825]], ['capcap', [10827]], ['cap', [8745]], ['Cap', [8914]], ['capcup', [10823]], ['capdot', [10816]], ['CapitalDifferentialD', [8517]], ['caps', [8745, 65024]], ['caret', [8257]], ['caron', [711]], ['Cayleys', [8493]], ['ccaps', [10829]], ['Ccaron', [268]], ['ccaron', [269]], ['Ccedil', [199]], ['ccedil', [231]], ['Ccirc', [264]], ['ccirc', [265]], ['Cconint', [8752]], ['ccups', [10828]], ['ccupssm', [10832]], ['Cdot', [266]], ['cdot', [267]], ['cedil', [184]], ['Cedilla', [184]], ['cemptyv', [10674]], ['cent', [162]], ['centerdot', [183]], ['CenterDot', [183]], ['cfr', [120096]], ['Cfr', [8493]], ['CHcy', [1063]], ['chcy', [1095]], ['check', [10003]], ['checkmark', [10003]], ['Chi', [935]], ['chi', [967]], ['circ', [710]], ['circeq', [8791]], ['circlearrowleft', [8634]], ['circlearrowright',
Line truncated
|
||||
|
||||
var alphaIndex = {};
|
||||
var charIndex = {};
|
||||
|
||||
createIndexes(alphaIndex, charIndex);
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
*/
|
||||
function Html5Entities() {}
|
||||
|
||||
/**
|
||||
* @param {String} str
|
||||
* @returns {String}
|
||||
*/
|
||||
Html5Entities.prototype.decode = function(str) {
|
||||
if (!str || !str.length) {
|
||||
return '';
|
||||
}
|
||||
return str.replace(/&(#?[\w\d]+);?/g, function(s, entity) {
|
||||
var chr;
|
||||
if (entity.charAt(0) === "#") {
|
||||
var code = entity.charAt(1) === 'x' ?
|
||||
parseInt(entity.substr(2).toLowerCase(), 16) :
|
||||
parseInt(entity.substr(1));
|
||||
|
||||
if (!(isNaN(code) || code < -32768 || code > 65535)) {
|
||||
chr = String.fromCharCode(code);
|
||||
}
|
||||
} else {
|
||||
chr = alphaIndex[entity];
|
||||
}
|
||||
return chr || s;
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {String} str
|
||||
* @returns {String}
|
||||
*/
|
||||
Html5Entities.decode = function(str) {
|
||||
return new Html5Entities().decode(str);
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {String} str
|
||||
* @returns {String}
|
||||
*/
|
||||
Html5Entities.prototype.encode = function(str) {
|
||||
if (!str || !str.length) {
|
||||
return '';
|
||||
}
|
||||
var strLength = str.length;
|
||||
var result = '';
|
||||
var i = 0;
|
||||
while (i < strLength) {
|
||||
var charInfo = charIndex[str.charCodeAt(i)];
|
||||
if (charInfo) {
|
||||
var alpha = charInfo[str.charCodeAt(i + 1)];
|
||||
if (alpha) {
|
||||
i++;
|
||||
} else {
|
||||
alpha = charInfo[''];
|
||||
}
|
||||
if (alpha) {
|
||||
result += "&" + alpha + ";";
|
||||
i++;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
result += str.charAt(i);
|
||||
i++;
|
||||
}
|
||||
return result;
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {String} str
|
||||
* @returns {String}
|
||||
*/
|
||||
Html5Entities.encode = function(str) {
|
||||
return new Html5Entities().encode(str);
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {String} str
|
||||
* @returns {String}
|
||||
*/
|
||||
Html5Entities.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 charInfo = charIndex[c];
|
||||
if (charInfo) {
|
||||
var alpha = charInfo[str.charCodeAt(i + 1)];
|
||||
if (alpha) {
|
||||
i++;
|
||||
} else {
|
||||
alpha = charInfo[''];
|
||||
}
|
||||
if (alpha) {
|
||||
result += "&" + alpha + ";";
|
||||
i++;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if (c < 32 || c > 126) {
|
||||
result += '&#' + c + ';';
|
||||
} else {
|
||||
result += str.charAt(i);
|
||||
}
|
||||
i++;
|
||||
}
|
||||
return result;
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {String} str
|
||||
* @returns {String}
|
||||
*/
|
||||
Html5Entities.encodeNonUTF = function(str) {
|
||||
return new Html5Entities().encodeNonUTF(str);
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {String} str
|
||||
* @returns {String}
|
||||
*/
|
||||
Html5Entities.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;
|
||||
}
|
||||
result += '&#' + c + ';';
|
||||
i++
|
||||
}
|
||||
return result;
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {String} str
|
||||
* @returns {String}
|
||||
*/
|
||||
Html5Entities.encodeNonASCII = function(str) {
|
||||
return new Html5Entities().encodeNonASCII(str);
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {Object} alphaIndex Passed by reference.
|
||||
* @param {Object} charIndex Passed by reference.
|
||||
*/
|
||||
function createIndexes(alphaIndex, charIndex) {
|
||||
var i = ENTITIES.length;
|
||||
var _results = [];
|
||||
while (i--) {
|
||||
var e = ENTITIES[i];
|
||||
var alpha = e[0];
|
||||
var chars = e[1];
|
||||
var chr = chars[0];
|
||||
var addChar = (chr < 32 || chr > 126) || chr === 62 || chr === 60 || chr === 38 || chr === 34 || chr === 39;
|
||||
var charInfo;
|
||||
if (addChar) {
|
||||
charInfo = charIndex[chr] = charIndex[chr] || {};
|
||||
}
|
||||
if (chars[1]) {
|
||||
var chr2 = chars[1];
|
||||
alphaIndex[alpha] = String.fromCharCode(chr) + String.fromCharCode(chr2);
|
||||
_results.push(addChar && (charInfo[chr2] = alpha));
|
||||
} else {
|
||||
alphaIndex[alpha] = String.fromCharCode(chr);
|
||||
_results.push(addChar && (charInfo[''] = alpha));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = Html5Entities;
|
||||
+155
@@ -0,0 +1,155 @@
|
||||
var ALPHA_INDEX = {
|
||||
'<': '<',
|
||||
'>': '>',
|
||||
'"': '"',
|
||||
'&apos': '\'',
|
||||
'&': '&',
|
||||
'<': '<',
|
||||
'>': '>',
|
||||
'"': '"',
|
||||
''': '\'',
|
||||
'&': '&'
|
||||
};
|
||||
|
||||
var CHAR_INDEX = {
|
||||
60: 'lt',
|
||||
62: 'gt',
|
||||
34: 'quot',
|
||||
39: 'apos',
|
||||
38: 'amp'
|
||||
};
|
||||
|
||||
var CHAR_S_INDEX = {
|
||||
'<': '<',
|
||||
'>': '>',
|
||||
'"': '"',
|
||||
'\'': ''',
|
||||
'&': '&'
|
||||
};
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
*/
|
||||
function XmlEntities() {}
|
||||
|
||||
/**
|
||||
* @param {String} str
|
||||
* @returns {String}
|
||||
*/
|
||||
XmlEntities.prototype.encode = function(str) {
|
||||
if (!str || !str.length) {
|
||||
return '';
|
||||
}
|
||||
return str.replace(/<|>|"|'|&/g, function(s) {
|
||||
return CHAR_S_INDEX[s];
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {String} str
|
||||
* @returns {String}
|
||||
*/
|
||||
XmlEntities.encode = function(str) {
|
||||
return new XmlEntities().encode(str);
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {String} str
|
||||
* @returns {String}
|
||||
*/
|
||||
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 || code > 65535) {
|
||||
return '';
|
||||
}
|
||||
return String.fromCharCode(code);
|
||||
}
|
||||
return ALPHA_INDEX[s] || s;
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {String} str
|
||||
* @returns {String}
|
||||
*/
|
||||
XmlEntities.decode = function(str) {
|
||||
return new XmlEntities().decode(str);
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {String} str
|
||||
* @returns {String}
|
||||
*/
|
||||
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) {
|
||||
result += '&#' + c + ';';
|
||||
} else {
|
||||
result += str.charAt(i);
|
||||
}
|
||||
i++;
|
||||
}
|
||||
return result;
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {String} str
|
||||
* @returns {String}
|
||||
*/
|
||||
XmlEntities.encodeNonUTF = function(str) {
|
||||
return new XmlEntities().encodeNonUTF(str);
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {String} str
|
||||
* @returns {String}
|
||||
*/
|
||||
XmlEntities.prototype.encodeNonASCII = function(str) {
|
||||
if (!str || !str.length) {
|
||||
return '';
|
||||
}
|
||||
var strLenght = str.length;
|
||||
var result = '';
|
||||
var i = 0;
|
||||
while (i < strLenght) {
|
||||
var c = str.charCodeAt(i);
|
||||
if (c <= 255) {
|
||||
result += str[i++];
|
||||
continue;
|
||||
}
|
||||
result += '&#' + c + ';';
|
||||
i++;
|
||||
}
|
||||
return result;
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {String} str
|
||||
* @returns {String}
|
||||
*/
|
||||
XmlEntities.encodeNonASCII = function(str) {
|
||||
return new XmlEntities().encodeNonASCII(str);
|
||||
};
|
||||
|
||||
module.exports = XmlEntities;
|
||||
Reference in new issue
Block a user