@dizmo/functions-json2tree
TypeScript icon, indicating that this package has built-in type declarations

2.0.13 • Public • Published

NPM version Build Status Coverage Status

@dizmo/functions-json2tree

Provides two functions array2tree and object2tree, where:

  • array2tree: maps an array via an apply function, until the array is completely mapped, or apply returns false.

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 an apply function, until the object is completely mapped or apply returns false.

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

Readme

Keywords

Package Sidebar

Install

npm i @dizmo/functions-json2tree

Weekly Downloads

15

Version

2.0.13

License

ISC

Unpacked Size

44.1 kB

Total Files

11

Last publish

Collaborators

  • dizmo-user
  • hsk81