UNPKG

cspell-grammar

Version:
43 lines 1.16 kB
const matchHtml = /["'&<>]/g; const matchMarkdown = /[-"'&<>`*_+[\]()\\|~]/g; const entityMap = { '<': '&lt;', '>': '&gt;', '&': '&amp;', '"': '&quot;', "'": '&#39;', }; const charCodeToEntity = compileEntities(entityMap); export function escapeMarkdown(text) { return _escape(text, matchMarkdown); } export function escapeHtml(str) { return _escape(str, matchHtml); } function _escape(str, r) { const cvt = charCodeToEntity; let lastIndex = 0; let html = ''; r.lastIndex = 0; while (r.test(str)) { const i = r.lastIndex - 1; html += str.substring(lastIndex, i) + (cvt[str.codePointAt(i) || 0] || ''); lastIndex = r.lastIndex; } return html + str.substring(lastIndex); } function compileEntities(entityMap) { const result = []; result.length = 127; for (let i = 32; i < 128; ++i) { result[i] = `&#${i};`; } for (const [char, entity] of Object.entries(entityMap)) { const index = char.codePointAt(0); if (!index) continue; result[index] = entity; } return result; } //# sourceMappingURL=escapeMarkdown.js.map