react / wstein / node_modules / jest-cli / node_modules / jsdom / node_modules / htmlparser2 / node_modules / entities / lib / encode.js
81147 viewsvar inverseXML = getInverseObj(require("../maps/xml.json")),1xmlReplacer = getInverseReplacer(inverseXML);23exports.XML = getInverse(inverseXML, xmlReplacer);45var inverseHTML = getInverseObj(require("../maps/entities.json")),6htmlReplacer = getInverseReplacer(inverseHTML);78exports.HTML = getInverse(inverseHTML, htmlReplacer);910function getInverseObj(obj){11return Object.keys(obj).sort().reduce(function(inverse, name){12inverse[obj[name]] = "&" + name + ";";13return inverse;14}, {});15}1617function getInverseReplacer(inverse){18return new RegExp("\\" + Object.keys(inverse).sort().join("|\\"), "g");19}2021var re_nonASCII = /[^\0-\x7F]/g,22re_astralSymbols = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g;2324function nonUTF8Replacer(c){25return "&#x" + c.charCodeAt(0).toString(16).toUpperCase() + ";";26}2728function astralReplacer(c){29// http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae30var high = c.charCodeAt(0);31var low = c.charCodeAt(1);32var codePoint = (high - 0xD800) * 0x400 + low - 0xDC00 + 0x10000;33return "&#x" + codePoint.toString(16).toUpperCase() + ";";34}3536function getInverse(inverse, re){37function func(name){38return inverse[name];39}4041return function(data){42return data43.replace(re, func)44.replace(re_astralSymbols, astralReplacer)45.replace(re_nonASCII, nonUTF8Replacer);46};47}4849