const escapeRE = /["'&<>]/
export function escapeHtml(string: unknown) { const str = '' + string const match = escapeRE.exec(str)
if (!match) { return str }
let html = '' let escaped: string let index: number let lastIndex = 0 for (index = match.index; index < str.length; index++) { switch (str.charCodeAt(index)) { case 34: escaped = '"' break case 38: escaped = '&' break case 39: escaped = ''' break case 60: escaped = '<' break case 62: escaped = '>' break default: continue }
if (lastIndex !== index) { html += str.slice(lastIndex, index) }
lastIndex = index + 1 html += escaped }
return lastIndex !== index ? html + str.slice(lastIndex, index) : html}
const commentStripRE = /^-?>|<!--|-->|--!>|<!-$/g
export function escapeHtmlComment(src: string): string { return src.replace(commentStripRE, '')}