@dizmo/functions-tree2json
Provides two functions tree2array
and tree2object
, where:
-
tree2array
: maps a hierarchical tree recursively to an array via theget
(returning the value for a node) andsee
(returning the sub-nodes for a node) callback functions, until the tree is completely mapped (orsee
returning an empty list[]
for the node).
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.
-
tree2object
: maps a hierarchical tree recursively to a JSON-like object via teget
(returning the value for a node) andsee
(returning the sub-nodes for a node) callback functions, until the tree is completely mapped (orsee
returning an empty list[]
for the node).
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-tree2json --save
Require
const { tree2array, tree2object } = require('@dizmo/functions-tree2json');
Examples
import { tree2array, tree2object } from '@dizmo/functions-tree2json';
declare const db: {
// db should return value for given path (or root)
get: (path: string | null) => any;
// db should return nodes for given path (or root)
see: (path: string | null) => string[];
};
const root_array
= tree2array(null, db.get, db.see);
const node_array
= tree2array('path/to/node', db.get, db.see);
const root_object
= tree2object(null, db.get, db.see);
const node_object
= tree2object('path/to/node', db.get, db.see);
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