1 | var assert = require('assert')
|
2 |
|
3 | module.exports = walk
|
4 |
|
5 |
|
6 |
|
7 | function walk (router, transform) {
|
8 | assert.equal(typeof router, 'function', 'wayfarer.walk: router should be an function')
|
9 | assert.equal(typeof transform, 'function', 'wayfarer.walk: transform should be a function')
|
10 |
|
11 | var trie = router._trie
|
12 | assert.equal(typeof trie, 'object', 'wayfarer.walk: trie should be an object')
|
13 |
|
14 |
|
15 | ;(function walk (route, trie) {
|
16 | if (trie.cb) {
|
17 | trie.cb = transform(route, trie.cb)
|
18 | }
|
19 |
|
20 | if (trie.nodes) {
|
21 | var nodes = trie.nodes
|
22 | Object.keys(nodes).forEach(function (key) {
|
23 | var node = nodes[key]
|
24 | var newRoute = (key === '$$')
|
25 | ? route + '/:' + trie.name
|
26 | : route + '/' + key
|
27 | walk(newRoute, node)
|
28 | })
|
29 | }
|
30 | })('', trie.trie)
|
31 | }
|