JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 8
  • Score
    100M100P100Q38411F
  • License MIT

ES2015 Class versions of a Node and Tree data structure

Package Exports

  • structz

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (structz) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

structz

ES2015 Class versions of a Node and Tree

Build Status codecov

Install

npm install structz or yarn add structz

ES Module

import { Node, Tree } from 'structz';

CJS

const Structz = require('structz'),
  Node = Structz.Node,
  Tree = Structz.Tree;

Getting Started

After importing the library, you can create as many nodes as you'd like.

let rootSoilNode = new Node('soil');
let fertilizerChildNode = new Node('fertilizer');
let waterChildNode = new Node('h2o');

The new Node() constructor accepts an argument of any Javascript type.

You can append child nodes to a root node like so:

rootSoilNode.append(fertilizerChildNode);
rootSoilNode.append(waterChildNode);

You can detect if a Node is a root or not as well.

rootSoilNode.isRoot(); // -> true
waterChildNode.isRoot(); // -> false

Accessing child nodes is simple.

rootSoilNode.children // returns [fertilizerChildNode, waterChildNode]

You can perform immutable operations on the Node data structure using the Tree class. You instantiate it with a root Node.

let rootNode = new Node(1);
rootNode.append(new Node(2));
let newRootNode = Tree.map(rootNode, (node) => {
  return node + 10;
}); // this returns a `new Tree()` with the newly created `Node` as the `.root` value.
newRootNode.root // returns Node of modified type
// in this case, our new structure looks like:
[11] (root)
|
[12] (child)

Documentation

See docs/index.html for up to date documentation.

Node

Class representing a Node data structure type

Kind: global class

node.children ⇒ Array

Returns an array of child nodes.

Kind: instance property of Node

node.value ⇒ *

Returns the value of the this.attributes.

Kind: instance property of Node

node.value

Sets the value of this.attributes.

Kind: instance property of Node

Param
attribute

node.isRoot() ⇒ boolean

Detects if this Node is a parent node or not.

Kind: instance method of Node

node.hasChildren() ⇒ boolean

Detects if this node has children or not.

Kind: instance method of Node

node.append(child) ⇒ Node

Appends a child Node to this Node.

Kind: instance method of Node

Param
child

node.toString() ⇒ string

Returns a String that represents this Node.

Kind: instance method of Node

Classes

Tree

Class representing a Tree data structure type that contains a Root node

Tree

Class representing a Tree data structure type that contains a Root node

Kind: global class

new Tree(root)

Instantiates a Node as a Binary Tree

Param
root

tree.root ⇒ *

Returns the root of the Node.

Kind: instance property of Tree

Tree.map(node, func, tree) ⇒ *

Performs a function on a Node with the provided function and returns the output. Optionally accepts a Tree to perform this otherwise a new Tree is instantiated and returned (breaks immutability).

Kind: static method of Tree

Param Default
node
func
tree

Current Test Coverage

> structz@1.0.0 test ~/github/structz
> nyc mocha

  A Node data structure
    ✓ Can instantiate a new Node
    ✓ Returns [] children if empty
    ✓ Returns [] children if not empty
    ✓ successfully can append a child
    ✓ returns false if there are no children
    ✓ returns true if there are children
    ✓ can return its own value
    ✓ can set its own value
    ✓ can output itself as a String

  A Tree data structure type that contains a Root node data structure
    ✓ can instantiate itself
    ✓ returns the root Node
    ✓ maps over a Node


  12 passing (12ms)

----------|----------|----------|----------|----------|-------------------|
File      |  % Stmts | % Branch |  % Funcs |  % Lines | Uncovered Line #s |
----------|----------|----------|----------|----------|-------------------|
All files |    88.46 |    71.43 |    91.67 |       92 |                   |
 Node.js  |       80 |        0 |     87.5 |    85.71 |             23,24 |
 Tree.js  |      100 |      100 |      100 |      100 |                   |
----------|----------|----------|----------|----------|-------------------|

Changelog

  • 1.0.0 - Preparing initial release, Updating to support CJS + ES Modules
  • 0.2.4 - Updated JSDoc Generation
  • 0.2.3 - Updated README with starter guide
  • 0.2.2 - Docs updated
  • 0.2.1 - Corrected bug with exports
  • 0.2.0 - Changed package structure for modularity
  • 0.1.1 - Added Test Coverage
  • 0.1.0 - Initial release.