1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- "use strict";
- var __importDefault = (this && this.__importDefault) || function (mod) {
- return (mod && mod.__esModule) ? mod : { "default": mod };
- };
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.encodeNonAsciiHTML = exports.encodeHTML = void 0;
- var encode_html_js_1 = __importDefault(require("./generated/encode-html.js"));
- var escape_js_1 = require("./escape.js");
- var htmlReplacer = /[\t\n!-,./:-@[-`\f{-}$\x80-\uFFFF]/g;
- /**
- * Encodes all characters in the input using HTML entities. This includes
- * characters that are valid ASCII characters in HTML documents, such as `#`.
- *
- * To get a more compact output, consider using the `encodeNonAsciiHTML`
- * function, which will only encode characters that are not valid in HTML
- * documents, as well as non-ASCII characters.
- *
- * If a character has no equivalent entity, a numeric hexadecimal reference
- * (eg. `ü`) will be used.
- */
- function encodeHTML(data) {
- return encodeHTMLTrieRe(htmlReplacer, data);
- }
- exports.encodeHTML = encodeHTML;
- /**
- * Encodes all non-ASCII characters, as well as characters not valid in HTML
- * documents using HTML entities. This function will not encode characters that
- * are valid in HTML documents, such as `#`.
- *
- * If a character has no equivalent entity, a numeric hexadecimal reference
- * (eg. `ü`) will be used.
- */
- function encodeNonAsciiHTML(data) {
- return encodeHTMLTrieRe(escape_js_1.xmlReplacer, data);
- }
- exports.encodeNonAsciiHTML = encodeNonAsciiHTML;
- function encodeHTMLTrieRe(regExp, str) {
- var ret = "";
- var lastIdx = 0;
- var match;
- while ((match = regExp.exec(str)) !== null) {
- var i = match.index;
- ret += str.substring(lastIdx, i);
- var char = str.charCodeAt(i);
- var next = encode_html_js_1.default.get(char);
- if (typeof next === "object") {
- // We are in a branch. Try to match the next char.
- if (i + 1 < str.length) {
- var nextChar = str.charCodeAt(i + 1);
- var value = typeof next.n === "number"
- ? next.n === nextChar
- ? next.o
- : undefined
- : next.n.get(nextChar);
- if (value !== undefined) {
- ret += value;
- lastIdx = regExp.lastIndex += 1;
- continue;
- }
- }
- next = next.v;
- }
- // We might have a tree node without a value; skip and use a numeric entity.
- if (next !== undefined) {
- ret += next;
- lastIdx = i + 1;
- }
- else {
- var cp = (0, escape_js_1.getCodePoint)(str, i);
- ret += "&#x".concat(cp.toString(16), ";");
- // Increase by 1 if we have a surrogate pair
- lastIdx = regExp.lastIndex += Number(cp !== char);
- }
- }
- return ret + str.substr(lastIdx);
- }
- //# sourceMappingURL=encode.js.map
|