documentation - examples - install - todo - not a real horse
var Manifold = require('manifold');
var app = new Manifold();
app.set('get /user/:page(\\d+)', {
parent: 'get /user',
handle: function getUserPage(){};
});
app.set('get /user', {
picture: function getPicture(){
// fetch that thing
},
render: function markup(){
// you know, some markup
}
});
app.get('get /user/10'); // =>
{
notFound: false,
path: 'get /user/10',
url: '/user/10',
match: 'get /user/10',
params: { _: [ 'page' ], page: '10' },
handle: [Function: getUserPage],
picture: [Function: getPicture],
render: [Function: markup]
}
The module.exports
a constructor
var Manifold = require('manifold');
that takes no arguments
var manifold = new Manifold();
In all the following node
refers to the object
mapping path to object.
set a path to regex mapping for an object
arguments
-
path
type string -
props
type function or plainObject -
when is a function it will be assigned to the
props.handle
-
when is a plainObject its properties is cloned and assigned to the node props
returns this
The path is taken as a regular expression using the parth module, which uses the usual conventions on for path to regexp parsing. So you know... interesting things can happen.
samples
manifold.set('get /user/:page(\\d+)', function getUserPage(){
// do stuff
});
manifold.get('get /user/10');
// =>
{
notFound: false,
path: 'get /user/10',
url: '/user/10',
match: 'get /user/10',
params: { _: [ 'page' ], page: '10' },
handle: [Function: getUserPage]
}
get an object matching the given path, clone it if necessary
arguments
path
, optional, type stringoptions
, optional, type object with all extra informationmod
, type object. If is a:- plainObject with property ref, the node found will not be cloned
- regular expression, are the props to skip while cloning
returns the object (cloned/by reference) node
found
In addition, if the node has a parent it will inherit its properties while cloning.
sample
manifold.set('get /user/:page', {
parent: 'get /user',
handle: function getUserPage(){};
});
manifold.set('get /user', {
picture: function getPicture(){
// fetch that thing
},
render: function markup(){
// you know, some markup
}
});
manifold.get('get /user/10'); // =>
{
notFound: false,
path: 'get /user/10',
url: '/user/10',
match: 'get /user/10',
params: { _: [ 'page' ], page: '10' },
handle: [Function: getUserPage],
picture: [Function: getPicture],
render: [Function: markup]
}
manifold.regex
: regexes are stored heremanifold.store
: key value store with all of the nodes stored
I Need it for the runtime module ;)
The project name is an homage to the concept of manifold. Beautiful creature of Math and Physics thought. BUT, this can't be considered the real thing. That is: this is not a manifold. I'd wish!
With npm
npm install manifold --save
Run the example.js
file.
$ npm test
➜ manifold (master) ✓ npm test
manifold
sample
✓ data creation should not fail
✓ sample data should be random
parse
✓ add test data
✓ should parse properties when one sets them
✓ should support objects for setting parsers
rootNode
✓ add test data
✓ should have properties ({ref: true})
✓ should have properties ({ref: true})
✓ should not have properties ({ref: true})
✓ should have properties ({ref: true})
parent
✓ add test data
✓ should have children added after parent is set
✓ should have the same parent by reference
✓ property should not be enumerable after overwrite
children
✓ add test data
✓ should support single object as input
✓ should support array as input
✓ should have parent added after children were set
✓ should not be enumerable after overwrite
✓ should inherit from parent when
20 passing (35ms)