summaryrefslogtreecommitdiff
path: root/includes/external/school/node_modules/string-strip-html/examples/strip-from-json.js
diff options
context:
space:
mode:
authorMinteck <contact@minteck.org>2023-02-23 19:34:56 +0100
committerMinteck <contact@minteck.org>2023-02-23 19:34:56 +0100
commit3d1cd02f27518f1a04374c7c8320cd5d82ede6e9 (patch)
tree75be5fba4368472fb11c8015aee026b2b9a71888 /includes/external/school/node_modules/string-strip-html/examples/strip-from-json.js
parent8cc1f13c17fa2fb5a4410542d39e650e02945634 (diff)
downloadpluralconnect-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.js41
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}`
+);