tolstoy
v1.2.4
Published
Generic graph structure with ascetic API
Downloads
6
Readme
Generic graph structure with ascetic API.
Usage
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.