6 Commits (79fb5395ab26c2f09f661b05c0e7222f3d0d4c37)

Author SHA1 Message Date
Buddy Sandidge 79fb5395ab Correctly handle not found errors in partial routes
Take care of obvious case. A router with a route to '/foo/bar' but not
for '/foo', should give a not found error.
9 years ago
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
9 years ago
Buddy Sandidge f89bc55105 Refactor RouteNode → flatten for better readability 9 years ago
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')
9 years ago
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
9 years ago
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
9 years ago