jug

Graph engine prototype.

Graph

Graph engine prototype.

I'm trying to build a graph engine, which works on any database supported by it. I know it will be necessary to build mediators for this. So will be the next step, but before anything else, I will build features that deal with the abstract concept of it.

Some of the features that will be included:

  • Comparison graphs
  • difference
  • union
  • intersection
  • Tree decisions
  • Walk through the tree
  • versioning
  • Kicking actions performed

Are things, basic I work for the "jug" support. And be more if i can.

Installation

npm install jug

Init the graph

var wire = jug.init();

Init the graph with data

var wire = jug.init({
    interest: {
        cloth: 't-shirt',
        color: 'red',
        size: 'medium'
    }
});

Seed node

wire.seed();

Seed node with data

wire.seed({
    info: {
        cloth: 't-shirt',
        color: 'red',
        size: 'medium'
    } 
});

Access node

wire.edge( 0 );

Get distance between nodes

// first argument is 'from' object
// second argument is 'to' object
wire.proximity('interest', 'info');

Find a node

wire.find( 'info', { color: 'red' } );

Verify the level

wire.edge( 0 ).level();

Verify if the current node is the root

wire.isRoot();

Getting childs of an specified edge

wire.getChildsOf( 0 );

Getting parents of an specified level and edge

wire.getParentsFrom( 1, 0 );

Getting the length of childs of an specified edge

wire.getScopeOf( 0 );

Getting siblings of current level, excluding the index indicated

wire.getSiblingsOf( 1 );

Example

var Jug = require('jug');
var util = require('util');

var root = Jug.init();

root
    .seed()
    .seed();

root.data({
    interest: {
        genre: 'Action',
        year: 2014,
        stars: [ 'Eva Green', 'Duck Dogers' ]
    }    
});

root.edge( 0 ).data({
    info: {
        name: '300: Rise of an Empire',
        genre: 'Action',
        stars: [ 'Eva Green', 'Duck Dogers' ],
        year: 2014
    } 
});

root.edge( 1 ).data({
    info: {
        name: 'Man of Steel',
        genre: 'Action',
        stars: [ 'Henry Cavill' ],
        year: 2013
    }    
});

var distance = root.proximity('interest', 'info'); 
var close = distance.indexOf( 0 );
var nodeData = root.edge( close ).data();

console.log(
    'distance: %s\ndata: %s',
    distance.join(', '),
    util.inspect( nodeData['info'] )
);

To contribute with anithing

First of all:

git clone https://github.com/kaiquewdev/Graph

enter in the Graph directory and run:

sudo npm install

after all dependencies was solved, install the mocha:

sudo npm install -g mocha

and test:

mocha -u tdd lib/index.test.js

Yeah, read the code and contribute with ideas or coding.

Branch pattern

git checkout -b feature/name-of-the-responsability
git checkout -b fix/name-of-the-responsability

Commit pattern

* Title of the feature or fix
* 80 columns