UNPKG

856 BJavaScriptView Raw
1var assert = require('assert')
2
3module.exports = walk
4
5// walk a wayfarer trie
6// (obj, fn) -> null
7function 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 // (str, obj) -> null
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}