ngraph.traverse

0.0.1 • Public • Published

ngraph.traverse

I'm trying to come up with easy way to traverse graphs, this is all very experimental.

build status Usage

var traverseNodes = require('ngraph.traverse').nodes;
 
// Let's say `graph' is a graph. How to traverse all nodes?
traverseNodes(graph)
  .forEach(function (node) { /* node is here */ });
  
// How all adjacent nodes of `startNodeId'?
var children = traverseNodes(graph)
  .neighbors(startNodeId)
  .forEach(function (node) { /* node is here */ });
 

Traversal does not start until you call forEach() method. This allows you to delay computation.

You can also compose results of previous traversal. E.g. How to visit all neighbors of children from example above?

// All grandchildren?
traverseNodes(graph)
  .neghbors(children)
  .forEach(function(node) { /* node is here */ });

To traverse links:

var traverseLinks = require('ngraph.traverse').links;
 
// all links in graph:
traverseLinks(graph)
  .forEach(function (link) { /* link is here */ });
 
// All outgoing links from node:
traverseLinks(graph)
  .from(startNodeId)
  .forEach(function (link) { /* link is here */ });
    
// All incoming links:
traverseLinks(graph)
  .to(endNodeId)
  .forEach(function (link) { /* link is here */ });
 
// If your links has properties on them:
graph.addLink(0, 1, 'Lu');
// You can traverse only those links:
traverseLinks(graph)
  .where('Lu') 
  .forEach(function (link) { /* link is here */ });
  
// This is equivalent to:
traverseLinks(graph)
  .where(function (link) { return link.data === 'Lu'; } ) 
  .forEach(function (link) { /* link is here */ });

You can traverse from to sets too:

// Traverse all links from nodes with ids 1, 2, 3:
traverseLinks(graph)
  .from([1, 2, 3])
  .forEach(function (link) { /* link is here */ });
 
// You can use traversers too:
var children = traverseNodes(graph).neighbors(startNodeId);
 
// get all links to children:
links.from(startNodeId).to(children).forEach(function(link) { /* .. */ });
 
// get all links to grandchildren:
var grandChildren = traverseNodes(graph).neghbors(children);
links.from(children).to(grandChildren).forEach(function(link) { /* .. */ });

License

BSD 3-Clause

Dependencies (0)

    Dev Dependencies (2)

    Package Sidebar

    Install

    npm i ngraph.traverse

    Weekly Downloads

    5

    Version

    0.0.1

    License

    BSD-3-Clause

    Last publish

    Collaborators

    • anvaka