@faire/mjml-react
Version:
React component library to generate the HTML emails on the fly
58 lines (57 loc) • 1.61 kB
JavaScript
const matchHtmlRegExp = /["'&<>$]/;
export function escapeHtml(string) {
const str = "" + string;
const match = matchHtmlRegExp.exec(str);
if (!match) {
return str;
}
let escape;
let html = "";
let index;
let lastIndex = 0;
for (index = match.index; index < str.length; index++) {
switch (str.charCodeAt(index)) {
case 34: // "
escape = """;
break;
case 36: // $
escape = "$";
break;
case 38: // &
escape = "&";
break;
case 39: // '
escape = "'"; // modified from escape-html; used to be '''
break;
case 60: // <
escape = "<";
break;
case 62: // >
escape = ">";
break;
default:
continue;
}
if (lastIndex !== index) {
html += str.substring(lastIndex, index);
}
lastIndex = index + 1;
html += escape;
}
return lastIndex !== index ? html + str.substring(lastIndex, index) : html;
}
export function escapeTextForBrowser(text) {
if (typeof text === "boolean" || typeof text === "number") {
return "" + text;
}
return escapeHtml(text);
}
export function noop() { }
export function trimContent(child) {
if (child.content) {
child.content = child.content.trim();
}
else if (child.children) {
child.children.forEach(trimContent);
}
}