tolstoy

1.2.4 • Public • Published

Generic graph structure with ascetic API.

Usage

npm install tolstoy

var Graph = require('tolstoy');
 
//create from a set of nodes
var graph = new Graph([a, b, c]);
 
//create from a set of connected nodes
graph = new Graph([[a, b], [b, a], [a, c], ...]);
 
//create from the other graph (clone)
graph = new Graph(graph);
 
//add node
graph.add(a).add(b);
 
//delete and disconnect a node
graph.delete(b);
 
//remove all nodes with their connections
graph.clear();
 
//test whether node exists
graph.has(a);
 
//iterate over all nodes
graph.forEach(function (node) {});
 
//connect node a to b, b to c
graph.connect(a, b).connect(b, c);
 
//disconnect node b from a, or from all output nodes, if undefined
//if you need to disconnect all inputs, use `delete(a)` and then `add(a)`.
graph.disconnect(b, a?);
 
//check whether two nodes are connected
graph.isConnected(a, b);
 
//default serialization
graph.toJSON();
graph.fromJSON(obj);
 
//set of nodes
graph.nodes;
 
//map of node’s connected nodes, undirected
graph.edges;
 
//map of node's input nodes
graph.inputs;
 
//map of node's output nodes
graph.outputs;

Principles

  • Tolstoy does not provide a framework of graph calculations, or rendering facilities — the whole purpose of the project is to provide maximally minimal familiar structure to work with graphs, providing minimally possible set of methods.
  • Tolstoy does not try to purport the theoretical purity in sense of directed/undirected/multi/simple graph etc. It provides a basic tiny class to extend on demand to implement any kind of graph-like structure.
  • Tolstoy uses ES6 structures beneath, so you may need to polyfill them with babel etc.
  • API is as close as possible to native structures like Map, Set. Structures should be felt naturally.
  • Tolstoy is a temporary solution, akin to xtend, till there is no native implementation of Graph in node/browsers. As only there is one, tolstoy is going to be replaced with polyfill.

Readme

Keywords

Package Sidebar

Install

npm i tolstoy

Weekly Downloads

0

Version

1.2.4

License

MIT

Last publish

Collaborators

  • dfcreative