Giant blob of minor changes
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / dom-serializer / node_modules / entities / lib / encode.js
1 "use strict";
2 var __importDefault = (this && this.__importDefault) || function (mod) {
3     return (mod && mod.__esModule) ? mod : { "default": mod };
4 };
5 Object.defineProperty(exports, "__esModule", { value: true });
6 exports.escape = exports.encodeHTML = exports.encodeXML = void 0;
7 var xml_json_1 = __importDefault(require("./maps/xml.json"));
8 var inverseXML = getInverseObj(xml_json_1.default);
9 var xmlReplacer = getInverseReplacer(inverseXML);
10 exports.encodeXML = getInverse(inverseXML, xmlReplacer);
11 var entities_json_1 = __importDefault(require("./maps/entities.json"));
12 var inverseHTML = getInverseObj(entities_json_1.default);
13 var htmlReplacer = getInverseReplacer(inverseHTML);
14 exports.encodeHTML = getInverse(inverseHTML, htmlReplacer);
15 function getInverseObj(obj) {
16     return Object.keys(obj)
17         .sort()
18         .reduce(function (inverse, name) {
19         inverse[obj[name]] = "&" + name + ";";
20         return inverse;
21     }, {});
22 }
23 function getInverseReplacer(inverse) {
24     var single = [];
25     var multiple = [];
26     for (var _i = 0, _a = Object.keys(inverse); _i < _a.length; _i++) {
27         var k = _a[_i];
28         if (k.length === 1) {
29             // Add value to single array
30             single.push("\\" + k);
31         }
32         else {
33             // Add value to multiple array
34             multiple.push(k);
35         }
36     }
37     // Add ranges to single characters.
38     single.sort();
39     for (var start = 0; start < single.length - 1; start++) {
40         // Find the end of a run of characters
41         var end = start;
42         while (end < single.length - 1 &&
43             single[end].charCodeAt(1) + 1 === single[end + 1].charCodeAt(1)) {
44             end += 1;
45         }
46         var count = 1 + end - start;
47         // We want to replace at least three characters
48         if (count < 3)
49             continue;
50         single.splice(start, count, single[start] + "-" + single[end]);
51     }
52     multiple.unshift("[" + single.join("") + "]");
53     return new RegExp(multiple.join("|"), "g");
54 }
55 var reNonASCII = /(?:[\x80-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])/g;
56 function singleCharReplacer(c) {
57     // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
58     return "&#x" + c.codePointAt(0).toString(16).toUpperCase() + ";";
59 }
60 function getInverse(inverse, re) {
61     return function (data) {
62         return data
63             .replace(re, function (name) { return inverse[name]; })
64             .replace(reNonASCII, singleCharReplacer);
65     };
66 }
67 var reXmlChars = getInverseReplacer(inverseXML);
68 function escape(data) {
69     return data
70         .replace(reXmlChars, singleCharReplacer)
71         .replace(reNonASCII, singleCharReplacer);
72 }
73 exports.escape = escape;