@technobuddha/library
Version:
A large library of useful functions
28 lines • 1.96 kB
JavaScript
import { build } from "./build.js";
import { splitChars } from "./split-chars.js";
/**
* Escape a string for use in HTML
* @param input - The string to escape
* @param options - see {@link EscapeHtmlOptions}
* @example
* ```typescript
* escapeHTML('<div>hello</div>'); // '<div>hello</div>';
* escapeHTML('aáΔ😀', { escapeNonASCII: true }); // 'aáΔ😀';
* ```
* @group Programming
* @category Escaping
*/
export function escapeHTML(input, { escapeNonASCII: escapeNonAscii = false } = {}) {
return build(splitChars(input).map((c) => entities[c] ??
(c < '\u0020' || (c > '\u007E' && c < '\u00a0') || (escapeNonAscii && c > '\u007F') ?
`&#${c.codePointAt(0)};`
: c)));
}
const entities = Object.freeze({
'"': '"',
'&': '&',
"'": ''',
'<': '<',
'>': '>',
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNjYXBlLWh0bWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZXNjYXBlLWh0bWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNuQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFZOUM7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFNLFVBQVUsVUFBVSxDQUN4QixLQUFhLEVBQ2IsRUFBRSxjQUFjLEVBQUUsY0FBYyxHQUFHLEtBQUssS0FBd0IsRUFBRTtJQUVsRSxPQUFPLEtBQUssQ0FDVixVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUNuQixDQUFDLENBQUMsRUFBRSxFQUFFLENBQ0osUUFBUSxDQUFDLENBQUMsQ0FBQztRQUNYLENBQUMsQ0FBQyxHQUFHLFFBQVEsSUFBSSxDQUFDLENBQUMsR0FBRyxRQUFRLElBQUksQ0FBQyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsY0FBYyxJQUFJLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQ25GLEtBQUssQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRztZQUMxQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQ1AsQ0FDRixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sUUFBUSxHQUFpRCxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQzNFLEdBQUcsRUFBRSxRQUFRO0lBQ2IsR0FBRyxFQUFFLE9BQU87SUFDWixHQUFHLEVBQUUsUUFBUTtJQUNiLEdBQUcsRUFBRSxNQUFNO0lBQ1gsR0FBRyxFQUFFLE1BQU07Q0FDWixDQUFDLENBQUMifQ==