20 lines
533 B
JavaScript
20 lines
533 B
JavaScript
const ATTR_REGEX = /[&"<]/g;
|
|
const CONTENT_REGEX = /[&<]/g;
|
|
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);
|
|
}
|
|
export {
|
|
escape_html as e
|
|
};
|