refactor(ssr): move escapeHtml to shared

This commit is contained in:
Evan You
2020-02-02 22:08:20 -05:00
parent 327670a034
commit d1eed36452
10 changed files with 37 additions and 24 deletions

View File

@@ -0,0 +1,45 @@
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 = '&quot;'
break
case 38: // &
escaped = '&amp;'
break
case 39: // '
escaped = '&#39;'
break
case 60: // <
escaped = '&lt;'
break
case 62: // >
escaped = '&gt;'
break
default:
continue
}
if (lastIndex !== index) {
html += str.substring(lastIndex, index)
}
lastIndex = index + 1
html += escaped
}
return lastIndex !== index ? html + str.substring(lastIndex, index) : html
}

View File

@@ -8,6 +8,7 @@ export * from './mockWarn'
export * from './normalizeProp'
export * from './domTagConfig'
export * from './domAttrConfig'
export * from './escapeHtml'
export const EMPTY_OBJ: { readonly [key: string]: any } = __DEV__
? Object.freeze({})