3.2.0 • Published 10 years ago

manifold v3.2.0

Weekly downloads
42
License
MIT
Repository
github
Last release
10 years ago

manifold NPM version

build

documentation - examples - install - todo - not a real horse

sample

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]
}

documentation

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.

manifold.set(path, props)

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, all option properties are passed first to a parser if there is one and if not, that property 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]
}

manifold.get(path, options, mod)

get an object matching the given path, clone it if necessary

arguments

  • path, optional, type string
  • options, optional, type object with all extra information
  • mod, 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]
}

instance properties

  • manifold.regex: regexes are stored here
  • manifold.store: key value store with all of the nodes stored

why

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!

install

With npm

npm install manifold --save

examples

Run the example.js file.

test

$ 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)

license

3.2.0

10 years ago

3.1.8

10 years ago

3.1.7

10 years ago

3.1.6

10 years ago

3.1.5

10 years ago

3.1.4

10 years ago

3.1.3

10 years ago

3.1.2

10 years ago

3.1.1

10 years ago

3.1.0

10 years ago

3.0.9

10 years ago

3.0.8

10 years ago

3.0.7

10 years ago

3.0.6

10 years ago

3.0.5

10 years ago

3.0.4

10 years ago

3.0.3

10 years ago

3.0.2

10 years ago

3.0.1

10 years ago

3.0.0

10 years ago

2.4.6

10 years ago

2.4.5

10 years ago

2.4.4

10 years ago

2.4.3

10 years ago

2.4.2

10 years ago

2.3.2

10 years ago

2.3.1

10 years ago

2.3.0

10 years ago

2.2.0

10 years ago

2.1.0

10 years ago

2.0.0

10 years ago

1.0.1

11 years ago

1.0.0

11 years ago