diff options
Diffstat (limited to 'node_modules/htmlparser2/node_modules/entities/lib/encode-trie.js')
| -rw-r--r-- | node_modules/htmlparser2/node_modules/entities/lib/encode-trie.js | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/node_modules/htmlparser2/node_modules/entities/lib/encode-trie.js b/node_modules/htmlparser2/node_modules/entities/lib/encode-trie.js new file mode 100644 index 0000000..2e071d2 --- /dev/null +++ b/node_modules/htmlparser2/node_modules/entities/lib/encode-trie.js @@ -0,0 +1,77 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getTrie = exports.encodeHTMLTrieRe = exports.getCodePoint = void 0; +var entities_json_1 = __importDefault(require("./maps/entities.json")); +function isHighSurrugate(c) { + return (c & 64512 /* Mask */) === 55296 /* High */; +} +// For compatibility with node < 4, we wrap `codePointAt` +exports.getCodePoint = +// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition +String.prototype.codePointAt != null + ? function (str, index) { return str.codePointAt(index); } + : // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae + function (c, index) { + return isHighSurrugate(c.charCodeAt(index)) + ? (c.charCodeAt(index) - 55296 /* High */) * 0x400 + + c.charCodeAt(index + 1) - + 0xdc00 + + 0x10000 + : c.charCodeAt(index); + }; +var htmlTrie = getTrie(entities_json_1.default); +function encodeHTMLTrieRe(regExp, str) { + var _a; + var ret = ""; + var lastIdx = 0; + var match; + while ((match = regExp.exec(str)) !== null) { + var i = match.index; + var char = str.charCodeAt(i); + var next = htmlTrie.get(char); + if (next) { + if (next.next != null && i + 1 < str.length) { + var value = (_a = next.next.get(str.charCodeAt(i + 1))) === null || _a === void 0 ? void 0 : _a.value; + if (value != null) { + ret += str.substring(lastIdx, i) + value; + regExp.lastIndex += 1; + lastIdx = i + 2; + continue; + } + } + ret += str.substring(lastIdx, i) + next.value; + lastIdx = i + 1; + } + else { + ret += str.substring(lastIdx, i) + "&#x" + exports.getCodePoint(str, i).toString(16) + ";"; + // Increase by 1 if we have a surrogate pair + lastIdx = regExp.lastIndex += Number(isHighSurrugate(char)); + } + } + return ret + str.substr(lastIdx); +} +exports.encodeHTMLTrieRe = encodeHTMLTrieRe; +function getTrie(map) { + var _a, _b, _c, _d; + var trie = new Map(); + for (var _i = 0, _e = Object.keys(map); _i < _e.length; _i++) { + var value = _e[_i]; + var key = map[value]; + // Resolve the key + var lastMap = trie; + for (var i = 0; i < key.length - 1; i++) { + var char = key.charCodeAt(i); + var next = (_a = lastMap.get(char)) !== null && _a !== void 0 ? _a : {}; + lastMap.set(char, next); + lastMap = (_b = next.next) !== null && _b !== void 0 ? _b : (next.next = new Map()); + } + var val = (_c = lastMap.get(key.charCodeAt(key.length - 1))) !== null && _c !== void 0 ? _c : {}; + (_d = val.value) !== null && _d !== void 0 ? _d : (val.value = "&" + value + ";"); + lastMap.set(key.charCodeAt(key.length - 1), val); + } + return trie; +} +exports.getTrie = getTrie; |
