Class: Zero::Router
- Inherits:
-
Object
- Object
- Zero::Router
- Defined in:
- lib/zero/router.rb
Constant Summary
- VARIABLE_MATCH =
match for variables in routes
%r{:(\w+)[^/]?}
- VARIABLE_REGEX =
the replacement string to make it an regex
'(?<\1>.+?)'
Instance Method Summary (collapse)
- - (Object) call(env)
-
- (Router) initialize(routes)
constructor
A new instance of Router.
Constructor Details
- (Router) initialize(routes)
A new instance of Router
8 9 10 11 12 13 14 15 |
# File 'lib/zero/router.rb', line 8 def initialize(routes) @routes = {} routes.each do |route, target| @routes[ Regexp.new( route.gsub(VARIABLE_MATCH, VARIABLE_REGEX) + '$')] = target end end |
Instance Method Details
- (Object) call(env)
17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/zero/router.rb', line 17 def call(env) request = Zero::Request.create(env) @routes.each do |route, target| match = route.match(request.path) if match match.names.each_index do |i| request.update_param(match.names[i], match.captures[i]) end return target.call(request.env) end end [404, {'Content-Type' => 'text/html'}, ['Not found!']] end |