Index: tools/vulcanize/node_modules/vulcanize/node_modules/cheerio/node_modules/entities/index.js |
diff --git a/tools/vulcanize/node_modules/vulcanize/node_modules/cheerio/node_modules/entities/index.js b/tools/vulcanize/node_modules/vulcanize/node_modules/cheerio/node_modules/entities/index.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..b5365383305f17647e17cd2ae1afbfea04ad2e97 |
--- /dev/null |
+++ b/tools/vulcanize/node_modules/vulcanize/node_modules/cheerio/node_modules/entities/index.js |
@@ -0,0 +1,117 @@ |
+var modes = ["XML", "HTML4", "HTML5"]; |
+ |
+module.exports = { |
+ decode: function(data, level){ |
+ if(!modes[level]) level = 0; |
+ return module.exports["decode" + modes[level]](data); |
+ }, |
+ decodeStrict: function(data, level){ |
+ if(!modes[level]) level = 0; |
+ return module.exports["decode" + modes[level] + "Strict"](data); |
+ }, |
+ encode: function(data, level){ |
+ if(!modes[level]) level = 0; |
+ return module.exports["encode" + modes[level]](data); |
+ } |
+}; |
+ |
+modes.reduce(function(prev, name){ |
+ var obj = require("./entities/" + name.toLowerCase() + ".json"); |
+ |
+ if(prev){ |
+ Object.keys(prev).forEach(function(name){ |
+ obj[name] = prev[name]; |
+ }); |
+ } |
+ |
+ module.exports["decode" + name + "Strict"] = getStrictReplacer(obj); |
+ |
+ if(name === "XML"){ |
+ //there is no non-strict mode for XML |
+ module.exports.decodeXML = module.exports.decodeXMLStrict; |
+ } else { |
+ module.exports["decode" + name] = getReplacer(obj); |
+ } |
+ |
+ module.exports["encode" + name] = getReverse(obj); |
+ |
+ return obj; |
+}, null); |
+ |
+function getReplacer(obj){ |
+ var keys = Object.keys(obj).sort(); |
+ var re = keys.join("|").replace(/(\w+)\|\1;/g, "$1;?"); |
+ |
+ // also match hex and char codes |
+ re += "|#[xX][\\da-fA-F]+;?|#\\d+;?"; |
+ |
+ return genReplaceFunc( |
+ new RegExp("&(?:" + re + ")", "g"), |
+ function func(name){ |
+ if(name.charAt(1) === "#"){ |
+ if(name.charAt(2).toLowerCase() === "x"){ |
+ return String.fromCharCode(parseInt(name.substr(3), 16)); |
+ } |
+ return String.fromCharCode(parseInt(name.substr(2), 10)); |
+ } |
+ return obj[name.substr(1)]; |
+ } |
+ ); |
+} |
+ |
+function getStrictReplacer(obj){ |
+ var keys = Object.keys(obj).sort().filter(RegExp.prototype.test, /;$/); |
+ var re = keys.map(function(name){ |
+ return name.slice(0, -1); //remove trailing semicolon |
+ }).join("|"); |
+ |
+ // also match hex and char codes |
+ re += "|#[xX][\\da-fA-F]+|#\\d+"; |
+ |
+ var expr = new RegExp("&(?:" + re + ");", "g"); |
+ |
+ return genReplaceFunc(expr, func); |
+ |
+ function func(name){ |
+ if(name.charAt(1) === "#"){ |
+ if(name.charAt(2).toLowerCase() === "x"){ |
+ return String.fromCharCode(parseInt(name.substr(3), 16)); |
+ } |
+ return String.fromCharCode(parseInt(name.substr(2), 10)); |
+ } |
+ return obj[name.substr(1)]; |
+ } |
+} |
+ |
+var re_nonUTF8 = /[\u00c0-\u00d6\u00d8-\u00f6\u00f8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd]/g; |
+ |
+function nonUTF8Replacer(c){ |
+ return "&#" + c.charCodeAt(0) + ";"; |
+} |
+ |
+function getReverse(obj){ |
+ var reverse = Object.keys(obj).filter(function(name){ |
+ //prefer identifiers with a semicolon |
+ return name.substr(-1) === ";" || obj[name + ";"] !== obj[name]; |
+ }).reduce(function(reverse, name){ |
+ reverse[obj[name]] = name; |
+ return reverse; |
+ }, {}); |
+ |
+ var regex = new RegExp("\\" + Object.keys(reverse).sort().join("|\\"), "g"); |
+ function func(name){ |
+ return "&" + reverse[name]; |
+ } |
+ |
+ return function(data){ |
+ return data |
+ .replace(regex, func) |
+ .replace(re_nonUTF8, nonUTF8Replacer); |
+ }; |
+} |
+ |
+function genReplaceFunc(regex, func){ |
+ return function(data){ |
+ return data.replace(regex, func); |
+ }; |
+} |