Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | 2x 2x 2x 2x 2x 2x 2x 2x 2x 15110x 15110x 15110x 15110x 15110x 15110x 15110x 15110x 15110x 135x 135x 135x 135x 135x 15110x 15110x 15110x | const ATTR_REGEX = /[&"<]/g; const CONTENT_REGEX = /[&<]/g; /** * @template V * @param {V} value * @param {boolean} [is_attr] */ export function escape_html(value, is_attr) { const str = String(value ?? ''); const pattern = is_attr ? ATTR_REGEX : CONTENT_REGEX; pattern.lastIndex = 0; let escaped = ''; let last = 0; while (pattern.test(str)) { const i = pattern.lastIndex - 1; const ch = str[i]; escaped += str.substring(last, i) + (ch === '&' ? '&' : ch === '"' ? '"' : '<'); last = i + 1; } return escaped + str.substring(last); } |