1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- '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 entitiy.
- 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
|