12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- "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;
|