123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- 'use strict';
- Object.defineProperty(exports, '__esModule', {
- value: true
- });
- exports.escapeText = exports.escapeAttribute = exports.escapeUTF8 = exports.escape = exports.encodeXML = exports.getCodePoint = exports.xmlReplacer = void 0;
- exports.xmlReplacer = /["&'<>$\x80-\uFFFF]/g;
- var xmlCodeMap = new Map([
- [34, '"'],
- [38, '&'],
- [39, '''],
- [60, '<'],
- [62, '>']
- ]);
- // For compatibility with node < 4, we wrap `codePointAt`
- exports.getCodePoint =
- String.prototype.codePointAt != null
- ? function (str, index) {
- return str.codePointAt(index);
- }
- : // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae
- function (c, index) {
- return (c.charCodeAt(index) & 64512) === 55296 ? (c.charCodeAt(index) - 55296) * 1024 + c.charCodeAt(index + 1) - 56320 + 65536 : c.charCodeAt(index);
- };
- /**
- * Encodes all non-ASCII characters, as well as characters not valid in XML
- * documents using XML entities.
- *
- * If a character has no equivalent entity, a
- * numeric hexadecimal reference (eg. `ü`) will be used.
- */
- function encodeXML(str) {
- var ret = '';
- var lastIdx = 0;
- var match;
- while ((match = exports.xmlReplacer.exec(str)) !== null) {
- var i = match.index;
- var char = str.charCodeAt(i);
- var next = xmlCodeMap.get(char);
- if (next !== undefined) {
- ret += str.substring(lastIdx, i) + next;
- lastIdx = i + 1;
- } else {
- ret += ''.concat(str.substring(lastIdx, i), '&#x').concat((0, exports.getCodePoint)(str, i).toString(16), ';');
- // Increase by 1 if we have a surrogate pair
- lastIdx = exports.xmlReplacer.lastIndex += Number((char & 64512) === 55296);
- }
- }
- return ret + str.substr(lastIdx);
- }
- exports.encodeXML = encodeXML;
- /**
- * Encodes all non-ASCII characters, as well as characters not valid in XML
- * documents using numeric hexadecimal reference (eg. `ü`).
- *
- * Have a look at `escapeUTF8` if you want a more concise output at the expense
- * of reduced transportability.
- *
- * @param data String to escape.
- */
- exports.escape = encodeXML;
- function getEscaper(regex, map) {
- return function escape(data) {
- var match;
- var lastIdx = 0;
- var result = '';
- while ((match = regex.exec(data))) {
- if (lastIdx !== match.index) {
- result += data.substring(lastIdx, match.index);
- }
- // We know that this chararcter will be in the map.
- result += map.get(match[0].charCodeAt(0));
- // Every match will be of length 1
- lastIdx = match.index + 1;
- }
- return result + data.substring(lastIdx);
- };
- }
- /**
- * Encodes all characters not valid in XML documents using XML entities.
- *
- * Note that the output will be character-set dependent.
- *
- * @param data String to escape.
- */
- exports.escapeUTF8 = getEscaper(/[&<>'"]/g, xmlCodeMap);
- /**
- * Encodes all characters that have to be escaped in HTML attributes,
- * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.
- *
- * @param data String to escape.
- */
- exports.escapeAttribute = getEscaper(
- /["&\u00A0]/g,
- new Map([
- [34, '"'],
- [38, '&'],
- [160, ' ']
- ])
- );
- /**
- * Encodes all characters that have to be escaped in HTML text,
- * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.
- *
- * @param data String to escape.
- */
- exports.escapeText = getEscaper(
- /[&<>\u00A0]/g,
- new Map([
- [38, '&'],
- [60, '<'],
- [62, '>'],
- [160, ' ']
- ])
- );
- //# sourceMappingURL=escape.js.map
|