lib/rasti/web/router.rb in rasti-web-0.0.5 vs lib/rasti/web/router.rb in rasti-web-0.0.6

- old
+ new

@@ -6,11 +6,11 @@ NOT_FOUND_PATTERN = '/404' VERBS.each do |verb| define_method verb do |pattern, endpoint=nil, &block| - routes[verb] << Route.new(pattern, endpoint, &block) + routes[verb.upcase] << Route.new(pattern, endpoint, &block) end end def not_found(endpoint=nil, &block) @not_found_route = Route.new(NOT_FOUND_PATTERN, endpoint, &block) @@ -20,17 +20,21 @@ route = route_for env env[ROUTE_PARAMS] = route.extract_params env['PATH_INFO'] route.call env end + def all_routes + Hash[routes.map { |m,r| [m, r.map(&:pattern)] }] + end + private def routes @routes ||= Hash.new { |h,k| h[k] = [] } end def route_for(env) - routes[env['REQUEST_METHOD'].downcase].detect { |r| r.match? env['PATH_INFO'] } || not_found_route + routes[env['REQUEST_METHOD'].upcase].detect { |r| r.match? env['PATH_INFO'] } || not_found_route end def not_found_route @not_found_route ||= Route.new NOT_FOUND_PATTERN do |request, response, render| render.status 404, "Not found: #{request.request_method} #{request.path_info}" \ No newline at end of file