mirror of
https://github.com/wassname/DefinitelyTyped.git
synced 2026-09-09 11:13:57 +08:00
Merge pull request #5535 from yevt/master
jug graph library definitions
This commit is contained in:
@@ -0,0 +1,121 @@
|
||||
/// <reference path='./jug.d.ts' />
|
||||
import jug = require('jug');
|
||||
|
||||
/*
|
||||
Example 1.
|
||||
*/
|
||||
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
|
||||
}
|
||||
});
|
||||
|
||||
root.edge(1).seed({
|
||||
test: {
|
||||
some: 'value'
|
||||
}
|
||||
});
|
||||
|
||||
var distance = root.proximity('interest', 'info');
|
||||
var close = distance.indexOf( 0 );
|
||||
var nodeData = root.edge( close ).data();
|
||||
|
||||
/*
|
||||
Example 2.
|
||||
*/
|
||||
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
|
||||
root.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);
|
||||
Vendored
+135
@@ -0,0 +1,135 @@
|
||||
// Type definitions for jug
|
||||
// Project: https://github.com/kaiquewdev/Graph
|
||||
// Definitions by: yevt <https://github.com/yevt>
|
||||
// Definitions: https://github.com/borisyankov/DefinitelyTyped
|
||||
|
||||
declare module "jug" {
|
||||
/**
|
||||
* Internal structure of a vertex
|
||||
*/
|
||||
interface VertexStructure {
|
||||
level: number;
|
||||
edge: Array<Vertex>,
|
||||
data: VertexData,
|
||||
parent: Vertex
|
||||
}
|
||||
|
||||
/**
|
||||
* User data of a vertex.
|
||||
*/
|
||||
type VertexData = Object;
|
||||
|
||||
/**
|
||||
* Graph constructor function.
|
||||
*/
|
||||
interface GraphConstructor {
|
||||
new():Graph;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates root node of a graph.
|
||||
*/
|
||||
interface Graph {
|
||||
vertex:VertexConstructor;
|
||||
init(data?:VertexData):Vertex;
|
||||
}
|
||||
|
||||
/**
|
||||
* Vertex constructor function.
|
||||
*/
|
||||
interface VertexConstructor {
|
||||
new(obj?:VertexData):Vertex;
|
||||
}
|
||||
|
||||
/**
|
||||
* Represents one node of a graph.
|
||||
*/
|
||||
interface Vertex {
|
||||
|
||||
/**
|
||||
* Initial vertex data.
|
||||
*/
|
||||
internal: VertexStructure;
|
||||
|
||||
/**
|
||||
* Verify the level.
|
||||
*/
|
||||
level(): number;
|
||||
|
||||
/**
|
||||
* Get edge count.
|
||||
*/
|
||||
edge(): number;
|
||||
|
||||
/**
|
||||
* Access node.
|
||||
* @param index - edge index.
|
||||
*/
|
||||
edge(index:number): Vertex;
|
||||
|
||||
/**
|
||||
* Seed node.
|
||||
* @param [data] - created vertex UserData.
|
||||
*/
|
||||
seed(data?:VertexData): Vertex;
|
||||
|
||||
/**
|
||||
* Verify if the current node is the root.
|
||||
*/
|
||||
isRoot(): boolean;
|
||||
|
||||
/**
|
||||
* Set node data.
|
||||
* @param obj - data to be set.
|
||||
*/
|
||||
data(obj:VertexData): Vertex;
|
||||
|
||||
/**
|
||||
* Get node data.
|
||||
*/
|
||||
data(): VertexData;
|
||||
|
||||
/**
|
||||
* Get distance between nodes.
|
||||
* @param from
|
||||
* @param to
|
||||
*/
|
||||
proximity(from:string, to:string): Array<number>;
|
||||
|
||||
/**
|
||||
* Find a node.
|
||||
* @param {string} type - object type.
|
||||
* @param {Object} query - _.where query object.
|
||||
*/
|
||||
find(type:string|void, query:Object): Array<VertexData>;
|
||||
|
||||
/**
|
||||
* Get siblings of specified edge.
|
||||
* @param {number} index - edge index.
|
||||
*/
|
||||
getSiblingsOf(index:number): Array<VertexData>;
|
||||
|
||||
/**
|
||||
* Getting childs of an specified edge.
|
||||
* @param egde - target vertex;
|
||||
*/
|
||||
getChildsOf(egde:number): Array<VertexData>;
|
||||
|
||||
/**
|
||||
* Getting parents of an specified level and edge.
|
||||
* @param {number} level - max level.
|
||||
* @param {number} edge - edge index.
|
||||
*/
|
||||
getParentsFrom(level:number, edge:number): Array<VertexData>;
|
||||
|
||||
/**
|
||||
* Getting the length of childs of an specified edge.
|
||||
* @param {number} edge - edge index.
|
||||
*/
|
||||
getScopeOf(edge:number): number;
|
||||
}
|
||||
|
||||
var jug:Graph;
|
||||
|
||||
export = jug;
|
||||
}
|
||||
Reference in New Issue
Block a user