mirror of
https://github.com/marko-js/marko.git
synced 2025-12-08 19:26:05 +00:00
35 lines
838 B
JavaScript
35 lines
838 B
JavaScript
var elTest = /[&<]/;
|
|
var elTestReplace = /[&<]/g;
|
|
var attrTest = /[&<\"\n]/;
|
|
var attrReplace = /[&<\"\n]/g;
|
|
var replacements = {
|
|
'<': '<',
|
|
'&': '&',
|
|
'"': '"',
|
|
'\n': ' ' //Preserve new lines so that they don't get normalized as space
|
|
};
|
|
|
|
function replaceChar(match) {
|
|
return replacements[match];
|
|
}
|
|
|
|
function escapeXml(str) {
|
|
// check for most common case first
|
|
if (typeof str === 'string') {
|
|
return elTest.test(str) ? str.replace(elTestReplace, replaceChar) : str;
|
|
}
|
|
|
|
return (str == null) ? '' : str.toString();
|
|
}
|
|
|
|
function escapeXmlAttr(str) {
|
|
if (typeof str === 'string') {
|
|
return attrTest.test(str) ? str.replace(attrReplace, replaceChar) : str;
|
|
}
|
|
|
|
return (str == null) ? '' : str.toString();
|
|
}
|
|
|
|
|
|
module.exports = escapeXml;
|
|
escapeXml.attr = escapeXmlAttr; |