Giter Site home page Giter Site logo

manifold's Introduction

manifold NPM version

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

build

manifold

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

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

LICENSE

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.