diff options
author | Minteck <contact@minteck.org> | 2023-02-23 19:34:56 +0100 |
---|---|---|
committer | Minteck <contact@minteck.org> | 2023-02-23 19:34:56 +0100 |
commit | 3d1cd02f27518f1a04374c7c8320cd5d82ede6e9 (patch) | |
tree | 75be5fba4368472fb11c8015aee026b2b9a71888 /includes/external/school/node_modules/string-strip-html/examples/strip-from-json.js | |
parent | 8cc1f13c17fa2fb5a4410542d39e650e02945634 (diff) | |
download | pluralconnect-3d1cd02f27518f1a04374c7c8320cd5d82ede6e9.tar.gz pluralconnect-3d1cd02f27518f1a04374c7c8320cd5d82ede6e9.tar.bz2 pluralconnect-3d1cd02f27518f1a04374c7c8320cd5d82ede6e9.zip |
Updated 40 files, added 37 files, deleted 1103 files and renamed 3905 files (automated)
Diffstat (limited to 'includes/external/school/node_modules/string-strip-html/examples/strip-from-json.js')
-rw-r--r-- | includes/external/school/node_modules/string-strip-html/examples/strip-from-json.js | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/includes/external/school/node_modules/string-strip-html/examples/strip-from-json.js b/includes/external/school/node_modules/string-strip-html/examples/strip-from-json.js new file mode 100644 index 0000000..95d8bd0 --- /dev/null +++ b/includes/external/school/node_modules/string-strip-html/examples/strip-from-json.js @@ -0,0 +1,41 @@ +// Strip HTML from a raw JSON string + +import { strict as assert } from "assert"; +import { stripHtml } from "../dist/string-strip-html.esm.js"; +import { traverse } from "../../ast-monkey-traverse"; + +const stripFromJsonStr = (str) => { + return traverse(JSON.parse(str), (key, val) => { + // if currently an object is traversed, you get both "key" and "val" + // if it's array, only "key" is present, "val" is undefined + const current = val !== undefined ? val : key; + if ( + // ensure it's a plain object, not array (monkey will report only "key" in + // arrays and "val" will be undefined) + // also ensure object's value a string, not boolean or number, because we + // don't strip HTML from booleans or numbers or anything else than strings + typeof val === "string" + ) { + // monkey's callback is like Array.map - whatever you return gets written: + return stripHtml(val).result; + } + // default return, do nothing: + return current; + }); +}; + +// nothing to strip, "<" is false alarm: +assert.equal( + JSON.stringify(stripFromJsonStr(`{"Operator":"<","IsValid":true}`), null, 0), + `{"Operator":"<","IsValid":true}` +); + +// some HTML within one of key values, monkey will skip the boolean: +assert.equal( + JSON.stringify( + stripFromJsonStr(`{"Operator":"a <div>b</div> c","IsValid":true}`), + null, + 0 + ), + `{"Operator":"a b c","IsValid":true}` +); |