summaryrefslogtreecommitdiff
path: root/school/node_modules/string-strip-html/examples/strip-from-json.js
diff options
context:
space:
mode:
authorMinteck <contact@minteck.org>2023-01-10 14:54:04 +0100
committerMinteck <contact@minteck.org>2023-01-10 14:54:04 +0100
commit99c1d9af689e5325f3cf535c4007b3aeb8325229 (patch)
treee663b3c2ebdbd67c818ac0c5147f0ce1d2463cda /school/node_modules/string-strip-html/examples/strip-from-json.js
parent9871b03912fc28ad38b4037ebf26a78aa937baba (diff)
downloadpluralconnect-99c1d9af689e5325f3cf535c4007b3aeb8325229.tar.gz
pluralconnect-99c1d9af689e5325f3cf535c4007b3aeb8325229.tar.bz2
pluralconnect-99c1d9af689e5325f3cf535c4007b3aeb8325229.zip
Update - This is an automated commit
Diffstat (limited to 'school/node_modules/string-strip-html/examples/strip-from-json.js')
-rw-r--r--school/node_modules/string-strip-html/examples/strip-from-json.js41
1 files changed, 41 insertions, 0 deletions
diff --git a/school/node_modules/string-strip-html/examples/strip-from-json.js b/school/node_modules/string-strip-html/examples/strip-from-json.js
new file mode 100644
index 0000000..95d8bd0
--- /dev/null
+++ b/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}`
+);