egg-born-front
Version:
50 lines (42 loc) • 896 B
JavaScript
/***
escapeHtml: based on markdown-it
*/
const HTML_ESCAPE_TEST_RE = /[&<>"']/;
const HTML_ESCAPE_REPLACE_RE = /[&<>"']/g;
const HTML_REPLACEMENTS = {
'&': '&',
'<': '<',
'>': '>',
'"': '"',
"'": ''',
};
function replaceUnsafeChar(ch) {
return HTML_REPLACEMENTS[ch];
}
function escapeHtml(str) {
if (HTML_ESCAPE_TEST_RE.test(str)) {
return str.replace(HTML_ESCAPE_REPLACE_RE, replaceUnsafeChar);
}
return str;
}
const URL_ESCAPE_TEST_RE = /[<>"']/;
const URL_ESCAPE_REPLACE_RE = /[<>"']/g;
const URL_REPLACEMENTS = {
'<': '%3C',
'>': '%3E',
'"': '%22',
"'": '%27',
};
function replaceUnsafeCharURL(ch) {
return URL_REPLACEMENTS[ch];
}
function escapeURL(str) {
if (URL_ESCAPE_TEST_RE.test(str)) {
return str.replace(URL_ESCAPE_REPLACE_RE, replaceUnsafeCharURL);
}
return str;
}
export default {
escapeHtml,
escapeURL,
};