TreeModel

Manipulate and traverse tree-like structures in javascript.

For download and demos, please visit TreeModel website.

Installation

Node

TreeModel is available as an npm module so you can install it with npm install tree-model and use it in your script:

var TreeModel = require('tree-model'), tree = new TreeModel(), root = tree.parse({name: 'a', children: [{name: 'b'}]});

Browser

Using requirejs

<script src="path/to/require.js"></script> <script> require(["path/to/TreeModel"], function(TreeModel) { var tree = new TreeModel(), root = tree.parse({name: 'a', children: [{name: 'b'}]}); }); </script>

As a global variable

<script src="path/to/TreeModel.js"></script> <script> var tree = new TreeModel(), root = tree.parse({name: 'a', children: [{name: 'b'}]}); </script>

API Reference

var tree = new TreeModel(options)

<p>Create a new TreeModel with the given options.</p> Valid properties for the options object are:

Node tree.parse(model)

<p>Parse the given user defined model and return the root Node object.</p>

Boolean node.isRoot()

<p>Return true if this Node is the root, false otherwise.</p>

Node node.addChild(node)

<p>Add the given node as child of this one. Return the child Node.</p>

Array<Node> node.getPath()

<p>Get the array of Nodes representing the path from the root to this Node (inclusive).</p>

Node node.drop()

<p>Drop the subtree starting at this node. Returns the node itself, which is now a root node.</p>

Node node.first(predicate)

<p>Starting from this node, find the first Node that matches the predicate and return it.</p><p>The predicate is a function wich receives the visited Node and returns true if the Node should be picked and false otherwise.</p>

Array<Node> node.all(predicate)

<p>Starting from this node, find all Nodes that match the predicate and return these.</p>

node.walk(action)

<p>Starting from this node, traverse the subtree calling the action for each visited node. The action is a function which receives the visited Node as argument. The traversal can be halted by returning false from the action.</p> <br /> Note - first, all and walk can optionally receive as first argument an object with traversal options. Currently the only supported option is the traversal strategy which can be any of the following:

Contributing

Running Tests

The tests require npm libraries mocha, chai, and sinon. To install them run: npm install

To run tests, type: npm test

Code Linting

Install jshint: npm install -g jshint

Check src and tests: jshint src/TreeModel.js test/test.js

<br /> Bitdeli Badge