export function escapeHtml(value: string): string {
if (!value) return ''
return String(value).replace(/[&<>"']/g, c => {
switch (c) {
case '&': return '&'
case '<': return '<'
case '>': return '>'
case '"': return '"'
case "'": return '''
default: return c
}
})
}
export function escapeAttribute(value: string): string {
if (!value) return ''
return String(value).replace(/[&<>"'`]/g, c => {
switch (c) {
case '&': return '&'
case '<': return '<'
case '>': return '>'
case '"': return '"'
case "'": return '''
case '`': return '`'
default: return c
}
})
}
export function renderMultilineText(value: string): string {
return escapeHtml(value).replace(/\r?\n/g, '
')
}
export function decodeHtmlEntities(value: string): string {
if (!value) return ''
return String(value)
.replace(/&/g, '&')
.replace(/</g, '<')
.replace(/>/g, '>')
.replace(/"/g, '"')
.replace(/'/g, "'")
.replace(/`/g, '`')
}