https://github.com/dizmo/functions-tree2json
dizmoFun: tree to JSON mapper
https://github.com/dizmo/functions-tree2json
dizmo function javascript json library mapper tree typescript
Last synced: about 2 months ago
JSON representation
dizmoFun: tree to JSON mapper
- Host: GitHub
- URL: https://github.com/dizmo/functions-tree2json
- Owner: dizmo
- License: isc
- Created: 2018-11-12T17:21:47.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2023-03-15T08:13:00.000Z (over 3 years ago)
- Last Synced: 2025-09-23T17:59:20.557Z (9 months ago)
- Topics: dizmo, function, javascript, json, library, mapper, tree, typescript
- Language: TypeScript
- Size: 822 KB
- Stars: 0
- Watchers: 4
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[](https://npmjs.org/package/@dizmo/functions-tree2json)
[](https://travis-ci.com/dizmo/functions-tree2json)
[](https://coveralls.io/github/dizmo/functions-tree2json?branch=master)
# @dizmo/functions-tree2json
Provides two functions `tree2array` and `tree2object`, where:
* `tree2array`: maps a hierarchical tree recursively to an array via the `get` (returning the value for a node) and `see` (returning the sub-nodes for a node) callback functions, until the tree is completely mapped (or `see` 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 te `get` (returning the value for a node) and `see` (returning the sub-nodes for a node) callback functions, until the tree is completely mapped (or `see` 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
```sh
npm install @dizmo/functions-tree2json --save
```
### Require
```javascript
const { tree2array, tree2object } = require('@dizmo/functions-tree2json');
```
### Examples
```typescript
import { tree2array, tree2object } from '@dizmo/functions-tree2json';
```
```typescript
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
```sh
npm run clean
```
### Build
```sh
npm run build
```
#### without linting and cleaning:
```sh
npm run -- build --no-lint --no-clean
```
#### with UMD bundling (incl. minimization):
```sh
npm run -- build --prepack
```
#### with UMD bundling (excl. minimization):
```sh
npm run -- build --prepack --no-minify
```
### Lint
```sh
npm run lint
```
#### with auto-fixing:
```sh
npm run -- lint --fix
```
### Test
```sh
npm run test
```
#### without linting, cleaning and (re-)building:
```sh
npm run -- test --no-lint --no-clean --no-build
```
### Cover
```sh
npm run cover
```
#### without linting, cleaning and (re-)building:
```sh
npm run -- cover --no-lint --no-clean --no-build
```
## Documentation
```sh
npm run docs
```
## Publish
```sh
npm publish
```
#### initially (if public):
```sh
npm publish --access=public
```
## Copyright
© 2020 [dizmo AG](http://dizmo.com/), Switzerland