Name Picker Malfunction

    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

    Keywords

    none

    Install

    npm i ngraph.traverse

    DownloadsWeekly Downloads

    3

    Version

    0.0.1

    License

    BSD-3-Clause

    Last publish

    Collaborators

    • anvaka