Sha256: 76f84f50cc9d46dafa5dd65ba930d4178d5183f5ce4b74b4e984ea968e880e19

Contents?: true

Size: 1.33 KB

Versions: 5

Compression:

Stored size: 1.33 KB

Contents

import { assertEq } from "./assertions.mjs";

let htmlReplacements = [
    [ /[&]/g, '&' ],
    [ /[<]/g, '&lt;' ],
    [ /[>]/g, '&gt;' ],
];

var EscapeHelper = {
    escapeHTML(text) {
        for (const item of htmlReplacements) {
            text = text.replace(item[0], item[1]);
        }

        return text;
    },
    // Escape for usage within a regex expression
    escapeRegex(text) {
        return text.replace(/([\*\(\).\[\]\{\}\^\$\-\=\;\:\'\"\\])/g, '\\$1'); //'
    },
    // Escape text for usage within a replacement pattern
    // E.g. "foobar".replaceAll("foo", text);
    escapeReplacePattern(text) {
        return text.replace(/\$/g, '$$$$');
    }
};

assertEq("Test escape <", EscapeHelper.escapeHTML('<'), '&lt;');
assertEq("Test escape multiple <", EscapeHelper.escapeHTML('<a></a>'), '&lt;a&gt;&lt;/a&gt;');
assertEq("Test escape >", EscapeHelper.escapeHTML('>'), '&gt;');
assertEq("Test escape identity", EscapeHelper.escapeHTML('Hello, world.'), 'Hello, world.');
assertEq("Test regex escape simple", EscapeHelper.escapeRegex(".*"), "\\.\\*");
assertEq("Test regex more complicated escape", EscapeHelper.escapeRegex("This, is a test... :)"), "This, is a test\\.\\.\\. \\:\\)");
assertEq("Test replace pattern escape", EscapeHelper.escapeReplacePattern("0$ and 24 cents"), "0$$ and 24 cents");

export default EscapeHelper;

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
hematite-0.1.18 assets/js/EscapeHelper.mjs
hematite-0.1.17 assets/js/EscapeHelper.mjs
hematite-0.1.16 assets/js/EscapeHelper.mjs
hematite-0.1.15 assets/js/EscapeHelper.mjs
hematite-0.1.14 assets/js/EscapeHelper.mjs