@dizmo/functions-json2tree
v2.0.13
Published
JSON to tree mapper
Downloads
21
Readme
@dizmo/functions-json2tree
Provides two functions array2tree
and object2tree
, where:
array2tree
: maps an array via anapply
function, until the array is completely mapped, orapply
returnsfalse
.
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 anapply
function, until the object is completely mapped orapply
returnsfalse
.
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 --save
Require
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 clean
Build
npm run build
without linting and cleaning:
npm run -- build --no-lint --no-clean
with UMD bundling (incl. minimization):
npm run -- build --prepack
with UMD bundling (excl. minimization):
npm run -- build --prepack --no-minify
Lint
npm run lint
with auto-fixing:
npm run -- lint --fix
Test
npm run test
without linting, cleaning and (re-)building:
npm run -- test --no-lint --no-clean --no-build
Cover
npm run cover
without linting, cleaning and (re-)building:
npm run -- cover --no-lint --no-clean --no-build
Documentation
npm run docs
Publish
npm publish
initially (if public):
npm publish --access=public
Copyright
© 2020 dizmo AG, Switzerland