route-node
Advanced tools
Comparing version
@@ -0,1 +1,11 @@ | ||
<a name="0.5.0"></a> | ||
# 0.5.0 (2015-11-30) | ||
### Features | ||
* add meta data about parameters and their position in match object ([d95fb92](https://github.com/troch/route-node/commit/d95fb92)) | ||
<a name="0.4.3"></a> | ||
@@ -2,0 +12,0 @@ ## 0.4.3 (2015-11-24) |
@@ -278,2 +278,17 @@ define(['exports', 'module', 'path-parser'], function (exports, module, _pathParser) { | ||
var _meta = segments.reduce(function (meta, segment) { | ||
var urlParams = segment.parser.urlParams.reduce(function (params, p) { | ||
params[p] = 'url'; | ||
return params; | ||
}, {}); | ||
var allParams = segment.parser.queryParams.reduce(function (params, p) { | ||
params[p] = 'query'; | ||
return params; | ||
}, urlParams); | ||
meta[segment.name] = allParams; | ||
return meta; | ||
}, {}); | ||
var name = segments.map(function (segment) { | ||
@@ -284,3 +299,3 @@ return segment.name; | ||
return { name: name, params: params }; | ||
return { name: name, params: params, _meta: _meta }; | ||
} | ||
@@ -287,0 +302,0 @@ }, { |
@@ -283,2 +283,17 @@ 'use strict'; | ||
var _meta = segments.reduce(function (meta, segment) { | ||
var urlParams = segment.parser.urlParams.reduce(function (params, p) { | ||
params[p] = 'url'; | ||
return params; | ||
}, {}); | ||
var allParams = segment.parser.queryParams.reduce(function (params, p) { | ||
params[p] = 'query'; | ||
return params; | ||
}, urlParams); | ||
meta[segment.name] = allParams; | ||
return meta; | ||
}, {}); | ||
var name = segments.map(function (segment) { | ||
@@ -289,3 +304,3 @@ return segment.name; | ||
return { name: name, params: params }; | ||
return { name: name, params: params, _meta: _meta }; | ||
} | ||
@@ -292,0 +307,0 @@ }, { |
@@ -290,2 +290,17 @@ (function (global, factory) { | ||
var _meta = segments.reduce(function (meta, segment) { | ||
var urlParams = segment.parser.urlParams.reduce(function (params, p) { | ||
params[p] = 'url'; | ||
return params; | ||
}, {}); | ||
var allParams = segment.parser.queryParams.reduce(function (params, p) { | ||
params[p] = 'query'; | ||
return params; | ||
}, urlParams); | ||
meta[segment.name] = allParams; | ||
return meta; | ||
}, {}); | ||
var name = segments.map(function (segment) { | ||
@@ -296,3 +311,3 @@ return segment.name; | ||
return { name: name, params: params }; | ||
return { name: name, params: params, _meta: _meta }; | ||
} | ||
@@ -299,0 +314,0 @@ }, { |
@@ -213,6 +213,21 @@ import Path from 'path-parser' | ||
let name = segments.map(segment => segment.name).join('.') | ||
let params = segments.params | ||
const _meta = segments.reduce((meta, segment) => { | ||
const urlParams = segment.parser.urlParams.reduce((params, p) => { | ||
params[p] = 'url'; | ||
return params; | ||
}, {}); | ||
return {name, params} | ||
const allParams = segment.parser.queryParams.reduce((params, p) => { | ||
params[p] = 'query'; | ||
return params; | ||
}, urlParams); | ||
meta[segment.name] = allParams; | ||
return meta; | ||
}, {}); | ||
const name = segments.map(segment => segment.name).join('.') | ||
const params = segments.params | ||
return {name, params, _meta} | ||
} | ||
@@ -219,0 +234,0 @@ |
{ | ||
"name": "route-node", | ||
"version": "0.4.3", | ||
"description": "A package to create a tree of named routes#", | ||
"version": "0.5.0", | ||
"description": "A package to create a tree of named routes", | ||
"main": "dist/commonjs/route-node.js", | ||
@@ -29,9 +29,10 @@ "jsnext:main": "modules/RouteNode.js", | ||
"devDependencies": { | ||
"async": "^1.3.0", | ||
"babel": "^5.5.8", | ||
"conventional-changelog": "^0.2.0", | ||
"should": "^6.0.3", | ||
"mocha": "^2.2.5", | ||
"coveralls": "^2.11.2", | ||
"istanbul": "^0.3.16", | ||
"async": "^1.3.0", | ||
"lodash.omit": "^3.1.0", | ||
"mocha": "^2.2.5", | ||
"should": "^6.0.3", | ||
"through2": "^2.0.0", | ||
@@ -38,0 +39,0 @@ "vinyl-fs": "^1.0.0", |
@@ -7,3 +7,8 @@ 'use strict'; | ||
var should = require('should'); | ||
var omit = require('lodash.omit'); | ||
function withoutMeta(obj) { | ||
return omit(obj, '_meta'); | ||
} | ||
require('mocha'); | ||
@@ -121,4 +126,15 @@ | ||
// Building paths | ||
node.matchPath('/users').should.eql({name: 'users', params: {}}); | ||
node.matchPath('/users/view/1').should.eql({name: 'users.view', params: {id: '1'}}); | ||
withoutMeta(node.matchPath('/users')).should.eql({name: 'users', params: {}}); | ||
node.matchPath('/users/view/1').should.eql({ | ||
_meta: { | ||
users: {}, | ||
view: { | ||
id: 'url' | ||
} | ||
}, | ||
name: 'users.view', | ||
params: {id: '1'} | ||
}); | ||
should.not.exists(node.matchPath('/users/profile/1')); | ||
@@ -147,9 +163,19 @@ should.not.exists(node.matchPath('/users/view/profile/1')); | ||
// Matching | ||
node.matchPath('/grand-parent').should.eql({name: 'grandParent', params: {}}); | ||
node.matchPath('/grand-parent?nickname=gran').should.eql({name: 'grandParent', params: {nickname: 'gran'}}); | ||
node.matchPath('/grand-parent/parent?nickname=gran&name=maman%20man').should.eql({name: 'grandParent.parent', params: {nickname: 'gran', name: 'maman man'}}); | ||
node.matchPath('/grand-parent/parent/child?nickname=gran&name=maman').should.eql({name: 'grandParent.parent.child', params: {nickname: 'gran', name: 'maman'}}); | ||
node.matchPath('/grand-parent/parent/child?nickname=gran&name=maman&age=3').should.eql({name: 'grandParent.parent.child', params: {nickname: 'gran', name: 'maman', age: '3'}}); | ||
node.matchPath('/grand-parent/parent/child?nickname=gran&nickname=granny&name=maman&age=3').should.eql({name: 'grandParent.parent.child', params: {nickname: ['gran', 'granny'], name: 'maman', age: '3'}}); | ||
withoutMeta(node.matchPath('/grand-parent')).should.eql({name: 'grandParent', params: {}}); | ||
node.matchPath('/grand-parent?nickname=gran').should.eql({ | ||
_meta: { | ||
grandParent: { | ||
nickname: 'query' | ||
} | ||
}, | ||
name: 'grandParent', | ||
params: {nickname: 'gran'} | ||
}); | ||
withoutMeta(node.matchPath('/grand-parent/parent?nickname=gran&name=maman%20man')).should.eql({name: 'grandParent.parent', params: {nickname: 'gran', name: 'maman man'}}); | ||
withoutMeta(node.matchPath('/grand-parent/parent/child?nickname=gran&name=maman')).should.eql({name: 'grandParent.parent.child', params: {nickname: 'gran', name: 'maman'}}); | ||
withoutMeta(node.matchPath('/grand-parent/parent/child?nickname=gran&name=maman&age=3')).should.eql({name: 'grandParent.parent.child', params: {nickname: 'gran', name: 'maman', age: '3'}}); | ||
withoutMeta(node.matchPath('/grand-parent/parent/child?nickname=gran&nickname=granny&name=maman&age=3')).should.eql({name: 'grandParent.parent.child', params: {nickname: ['gran', 'granny'], name: 'maman', age: '3'}}); | ||
// Unsuccessful matching | ||
@@ -163,4 +189,4 @@ should.not.exist(node.matchPath('/grand-parent?nickname=gran&name=papa')); | ||
// Building paths | ||
node.matchPath('/users/view/1').should.eql({name: 'users.view', params: {id: '1'}}); | ||
node.matchPath('/users/profile/1').should.eql({name: 'users.splat', params: {id: 'profile/1'}}); | ||
withoutMeta(node.matchPath('/users/view/1')).should.eql({name: 'users.view', params: {id: '1'}}); | ||
withoutMeta(node.matchPath('/users/profile/1')).should.eql({name: 'users.splat', params: {id: 'profile/1'}}); | ||
should.not.exists(node.matchPath('/users/view/profile/1')); | ||
@@ -175,4 +201,4 @@ }); | ||
usersNode.matchPath('/users/view/1').should.eql({name: 'users.view', params: {id: '1'}}); | ||
usersNode.matchPath('/users/list').should.eql({name: 'users.list', params: {}}); | ||
withoutMeta(usersNode.matchPath('/users/view/1')).should.eql({name: 'users.view', params: {id: '1'}}); | ||
withoutMeta(usersNode.matchPath('/users/list')).should.eql({name: 'users.list', params: {}}); | ||
}) | ||
@@ -198,7 +224,7 @@ | ||
rootNode.matchPath('/').should.eql({name: 'index', params: {}}); | ||
rootNode.matchPath('/abo').should.eql({name: 'abo', params: {}}); | ||
rootNode.matchPath('/about').should.eql({name: 'about', params: {}}); | ||
rootNode.matchPath('/abc').should.eql({name: 'id', params: {id: 'abc'}}); | ||
rootNode.matchPath('/section/abc').should.eql({name: 'section', params: {id: 'abc'}}); | ||
withoutMeta(rootNode.matchPath('/')).should.eql({name: 'index', params: {}}); | ||
withoutMeta(rootNode.matchPath('/abo')).should.eql({name: 'abo', params: {}}); | ||
withoutMeta(rootNode.matchPath('/about')).should.eql({name: 'about', params: {}}); | ||
withoutMeta(rootNode.matchPath('/abc')).should.eql({name: 'id', params: {id: 'abc'}}); | ||
withoutMeta(rootNode.matchPath('/section/abc')).should.eql({name: 'section', params: {id: 'abc'}}); | ||
}); | ||
@@ -209,5 +235,5 @@ | ||
should.not.exists(rootNode.matchPath('/users/list/')); | ||
rootNode.matchPath('/users/list', true).should.eql({name: 'users.list', params: {}}); | ||
rootNode.matchPath('/users/list').should.eql({name: 'users.list', params: {}}); | ||
rootNode.matchPath('/users/list/', true).should.eql({name: 'users.list', params: {}}); | ||
withoutMeta(rootNode.matchPath('/users/list', true)).should.eql({name: 'users.list', params: {}}); | ||
withoutMeta(rootNode.matchPath('/users/list')).should.eql({name: 'users.list', params: {}}); | ||
withoutMeta(rootNode.matchPath('/users/list/', true)).should.eql({name: 'users.list', params: {}}); | ||
should.not.exists(rootNode.matchPath('/users/list//', true)); | ||
@@ -217,7 +243,7 @@ | ||
should.not.exists(rootNode.matchPath('/users/list')); | ||
rootNode.matchPath('/users/list', true).should.eql({name: 'users.list', params: {}}); | ||
rootNode.matchPath('/users/list/', true).should.eql({name: 'users.list', params: {}}); | ||
rootNode.matchPath('/users/list/').should.eql({name: 'users.list', params: {}}); | ||
rootNode.matchPath('/').should.eql({name: 'default', params: {}}); | ||
rootNode.matchPath('', true).should.eql({name: 'default', params: {}}); | ||
withoutMeta(rootNode.matchPath('/users/list', true)).should.eql({name: 'users.list', params: {}}); | ||
withoutMeta(rootNode.matchPath('/users/list/', true)).should.eql({name: 'users.list', params: {}}); | ||
withoutMeta(rootNode.matchPath('/users/list/')).should.eql({name: 'users.list', params: {}}); | ||
withoutMeta(rootNode.matchPath('/')).should.eql({name: 'default', params: {}}); | ||
withoutMeta(rootNode.matchPath('', true)).should.eql({name: 'default', params: {}}); | ||
should.not.exists(rootNode.matchPath('/users/list//', true)); | ||
@@ -224,0 +250,0 @@ }); |
Sorry, the diff of this file is not supported yet
71788
4.7%1299
5.61%11
10%