/** | |
* @param {string} data | |
* @returns {import('estree').Literal} | |
*/ | |
export function string_literal(data) { | |
return { | |
type: 'Literal', | |
value: data | |
}; | |
} | |
/** | |
* @param {string} data | |
* @param {{ only_escape_at_symbol?: boolean }} [options] | |
*/ | |
export function escape(data, { only_escape_at_symbol = false } = {}) { | |
return data.replace(only_escape_at_symbol ? /@+/g : /(@+|#+)/g, (match) => { | |
return match + match[0]; | |
}); | |
} | |
const escaped = { | |
'"': '"', | |
"'": ''', | |
'&': '&', | |
'<': '<', | |
'>': '>' | |
}; | |
const regex_html_characters_to_escape = /["'&<>]/g; | |
export function escape_html(html) { | |
return String(html).replace(regex_html_characters_to_escape, (match) => escaped[match]); | |
} | |
const regex_template_characters_to_escape = /(\${|`|\\)/g; | |
export function escape_template(str) { | |
return str.replace(regex_template_characters_to_escape, '\\$1'); | |
} | |