2.0.13 • Published 3 years ago
@dizmo/functions-json2tree v2.0.13
@dizmo/functions-json2tree
Provides two functions array2tree and object2tree, where:
array2tree: maps an array via anapplyfunction, until the array is completely mapped, orapplyreturnsfalse.
The array is a recursive description of a tree, where the value of a given node is at index 0 of the array followed optionally by other arrays, each containing the name followed by a sub-tree for any given sub-nodes. Each sub-tree is again yet another array according to the same recursive description.
object2tree: maps a JSON-like object via anapplyfunction, until the object is completely mapped orapplyreturnsfalse.
The object conforms to the same rules like any regular JSON or JavaScript object, with the addition that the values of nodes can be directly represented using an underscore _ for the key value.
Usage
Install
npm install @dizmo/functions-json2tree --saveRequire
const { array2tree, object2tree } = require('@dizmo/functions-json2tree');Examples
import { array2tree, object2tree } from '@dizmo/functions-json2tree';declare const db: {
// db should set value for given path (or root)
set: (key: string | null, value: any) => any;
};array2tree("path/to/a-node", [
"α"
], db.set);
array2tree("path/to/b-node", [
"β", ["i", [0]], ["j", [1]], ["k", [2]]
], db.set);
array2tree("path/to/c-node", [
"γ", ["x", ["ξ", ["y", ["υ", ["z", ["ζ"]]]]]]
], db.set);object2tree("path/to/a-node", {
_: "α"
}, db.set);
object2tree("path/to/b-node", {
_: "β", i: 0, j: 1, k: 2
}, db.set);
object2tree("path/to/c-node", {
_: "γ", x: {_: "ξ", y: {_: "υ", z: "ζ"}}
}, db.set);Development
Clean
npm run cleanBuild
npm run buildwithout linting and cleaning:
npm run -- build --no-lint --no-cleanwith UMD bundling (incl. minimization):
npm run -- build --prepackwith UMD bundling (excl. minimization):
npm run -- build --prepack --no-minifyLint
npm run lintwith auto-fixing:
npm run -- lint --fixTest
npm run testwithout linting, cleaning and (re-)building:
npm run -- test --no-lint --no-clean --no-buildCover
npm run coverwithout linting, cleaning and (re-)building:
npm run -- cover --no-lint --no-clean --no-buildDocumentation
npm run docsPublish
npm publishinitially (if public):
npm publish --access=publicCopyright
© 2020 dizmo AG, Switzerland