const escapeRE = /["'&<>]/
function escapeHtmlWithoutRegExp(string) {
const str = '' + string
let html = ''
let escaped
let index
let lastIndex = 0
for (index = 0; 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
}
function escapeHtmlWithRegExp(string) {
const str = '' + string
const match = escapeRE.exec(str)
if (!match) {
return str
}
let html = ''
let escaped
let index
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
}