"use strict"; const matchHtmlRegExp = /["'&<>]/; /** * @param {string} string raw HTML * @returns {string} escaped HTML */ function escapeHtml(string) { const str = `${string}`; const match = matchHtmlRegExp.exec(str); if (!match) { return str; } let escape; let html = ""; let index = 0; let lastIndex = 0; for (({ index } = match); index < str.length; index++) { switch (str.charCodeAt(index)) { // " case 34: escape = """; break; // & case 38: escape = "&"; break; // ' case 39: escape = "'"; break; // < case 60: escape = "<"; break; // > case 62: escape = ">"; break; default: // eslint-disable-next-line no-continue continue; } if (lastIndex !== index) { html += str.substring(lastIndex, index); } lastIndex = index + 1; html += escape; } return lastIndex !== index ? html + str.substring(lastIndex, index) : html; } module.exports = escapeHtml;