added old data
This commit is contained in:
72
project2/node_modules/entities/lib/decode.js
generated
vendored
Normal file
72
project2/node_modules/entities/lib/decode.js
generated
vendored
Normal file
@@ -0,0 +1,72 @@
|
||||
var entityMap = require("../maps/entities.json"),
|
||||
legacyMap = require("../maps/legacy.json"),
|
||||
xmlMap = require("../maps/xml.json"),
|
||||
decodeCodePoint = require("./decode_codepoint.js");
|
||||
|
||||
var decodeXMLStrict = getStrictDecoder(xmlMap),
|
||||
decodeHTMLStrict = getStrictDecoder(entityMap);
|
||||
|
||||
function getStrictDecoder(map){
|
||||
var keys = Object.keys(map).join("|"),
|
||||
replace = getReplacer(map);
|
||||
|
||||
keys += "|#[xX][\\da-fA-F]+|#\\d+";
|
||||
|
||||
var re = new RegExp("&(?:" + keys + ");", "g");
|
||||
|
||||
return function(str){
|
||||
return String(str).replace(re, replace);
|
||||
};
|
||||
}
|
||||
|
||||
var decodeHTML = (function(){
|
||||
var legacy = Object.keys(legacyMap)
|
||||
.sort(sorter);
|
||||
|
||||
var keys = Object.keys(entityMap)
|
||||
.sort(sorter);
|
||||
|
||||
for(var i = 0, j = 0; i < keys.length; i++){
|
||||
if(legacy[j] === keys[i]){
|
||||
keys[i] += ";?";
|
||||
j++;
|
||||
} else {
|
||||
keys[i] += ";";
|
||||
}
|
||||
}
|
||||
|
||||
var re = new RegExp("&(?:" + keys.join("|") + "|#[xX][\\da-fA-F]+;?|#\\d+;?)", "g"),
|
||||
replace = getReplacer(entityMap);
|
||||
|
||||
function replacer(str){
|
||||
if(str.substr(-1) !== ";") str += ";";
|
||||
return replace(str);
|
||||
}
|
||||
|
||||
//TODO consider creating a merged map
|
||||
return function(str){
|
||||
return String(str).replace(re, replacer);
|
||||
};
|
||||
}());
|
||||
|
||||
function sorter(a, b){
|
||||
return a < b ? 1 : -1;
|
||||
}
|
||||
|
||||
function getReplacer(map){
|
||||
return function replace(str){
|
||||
if(str.charAt(1) === "#"){
|
||||
if(str.charAt(2) === "X" || str.charAt(2) === "x"){
|
||||
return decodeCodePoint(parseInt(str.substr(3), 16));
|
||||
}
|
||||
return decodeCodePoint(parseInt(str.substr(2), 10));
|
||||
}
|
||||
return map[str.slice(1, -1)];
|
||||
};
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
XML: decodeXMLStrict,
|
||||
HTML: decodeHTML,
|
||||
HTMLStrict: decodeHTMLStrict
|
||||
};
|
26
project2/node_modules/entities/lib/decode_codepoint.js
generated
vendored
Normal file
26
project2/node_modules/entities/lib/decode_codepoint.js
generated
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
var decodeMap = require("../maps/decode.json");
|
||||
|
||||
module.exports = decodeCodePoint;
|
||||
|
||||
// modified version of https://github.com/mathiasbynens/he/blob/master/src/he.js#L94-L119
|
||||
function decodeCodePoint(codePoint){
|
||||
|
||||
if((codePoint >= 0xD800 && codePoint <= 0xDFFF) || codePoint > 0x10FFFF){
|
||||
return "\uFFFD";
|
||||
}
|
||||
|
||||
if(codePoint in decodeMap){
|
||||
codePoint = decodeMap[codePoint];
|
||||
}
|
||||
|
||||
var output = "";
|
||||
|
||||
if(codePoint > 0xFFFF){
|
||||
codePoint -= 0x10000;
|
||||
output += String.fromCharCode(codePoint >>> 10 & 0x3FF | 0xD800);
|
||||
codePoint = 0xDC00 | codePoint & 0x3FF;
|
||||
}
|
||||
|
||||
output += String.fromCharCode(codePoint);
|
||||
return output;
|
||||
}
|
48
project2/node_modules/entities/lib/encode.js
generated
vendored
Normal file
48
project2/node_modules/entities/lib/encode.js
generated
vendored
Normal file
@@ -0,0 +1,48 @@
|
||||
var inverseXML = getInverseObj(require("../maps/xml.json")),
|
||||
xmlReplacer = getInverseReplacer(inverseXML);
|
||||
|
||||
exports.XML = getInverse(inverseXML, xmlReplacer);
|
||||
|
||||
var inverseHTML = getInverseObj(require("../maps/entities.json")),
|
||||
htmlReplacer = getInverseReplacer(inverseHTML);
|
||||
|
||||
exports.HTML = getInverse(inverseHTML, htmlReplacer);
|
||||
|
||||
function getInverseObj(obj){
|
||||
return Object.keys(obj).sort().reduce(function(inverse, name){
|
||||
inverse[obj[name]] = "&" + name + ";";
|
||||
return inverse;
|
||||
}, {});
|
||||
}
|
||||
|
||||
function getInverseReplacer(inverse){
|
||||
return new RegExp("\\" + Object.keys(inverse).sort().join("|\\"), "g");
|
||||
}
|
||||
|
||||
var re_nonASCII = /[^\0-\x7F]/g,
|
||||
re_astralSymbols = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g;
|
||||
|
||||
function nonUTF8Replacer(c){
|
||||
return "&#x" + c.charCodeAt(0).toString(16).toUpperCase() + ";";
|
||||
}
|
||||
|
||||
function astralReplacer(c){
|
||||
// http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae
|
||||
var high = c.charCodeAt(0);
|
||||
var low = c.charCodeAt(1);
|
||||
var codePoint = (high - 0xD800) * 0x400 + low - 0xDC00 + 0x10000;
|
||||
return "&#x" + codePoint.toString(16).toUpperCase() + ";";
|
||||
}
|
||||
|
||||
function getInverse(inverse, re){
|
||||
function func(name){
|
||||
return inverse[name];
|
||||
}
|
||||
|
||||
return function(data){
|
||||
return data
|
||||
.replace(re, func)
|
||||
.replace(re_astralSymbols, astralReplacer)
|
||||
.replace(re_nonASCII, nonUTF8Replacer);
|
||||
};
|
||||
}
|
Reference in New Issue
Block a user