Commit Graph

6 Commits

Author SHA1 Message Date
Buddy Sandidge
62e6469ec7 Add static isNotFound error checker to Router class
If used, it will allow the error message to change without inspecting
the error.message
2016-02-07 22:01:02 -08:00
Buddy Sandidge
f89bc55105 Refactor RouteNode → flatten for better readability 2016-02-07 21:24:50 -08:00
Buddy Sandidge
7c34964dff Add support for functions in router
Can add a function as to match a route. The function takes in a string
url segment and returns some value if the route matches or returns null
or undefined for no match.

Example usage:

function toInt(part) {
  var results = /^(\d+)$/.exec(part)
  return results ? parseInt(results[0], 10) : null
}

var router = new Router()
router.add(['/by/order', toInt], function (val) {
  // val === 123
})

router.route('/by/order/123')
2016-02-07 21:11:51 -08:00
Buddy Sandidge
a317aa86a8 Add support for regular expressions with capture groups
Router
    • add can take either a string or array
        • An array will check each item, for a string will be converted
          to an array

RouteNode
    • rename this._exact → this._children
        • exact matches will not have a '/' in a key because we split on
          the '/' character and RegExp will have a '/' in it
    • If an exact match can't be found first, check every regex on a node
        • Exact match will have preference over RegExp

utils
    • add forEach helper
    • add isArray and isRegExp checker
2016-02-07 20:28:32 -08:00
Buddy Sandidge
10371b7b1e Add Router that only matches exact strings with bootstrapped project
• Add linting with eslint
 • Add unit testing support with mocha with unit tests
 • Add Router class with support for only matching exact strings
 • Add RouteNode class for transversing all routes
2016-02-07 16:04:19 -08:00
Buddy Sandidge
b9d7eb3a7b Initial commit 2016-02-06 20:41:20 -08:00