lib/rack/app/router.rb in rack-app-7.0.0 vs lib/rack/app/router.rb in rack-app-7.1.0

- old
+ new

@@ -1,73 +1,72 @@ class Rack::App::Router - require 'rack/app/router/tree' + require 'rack/app/router/error' attr_reader :tree - NOT_FOUND_APP = lambda do |env| + NOT_FOUND_APP = lambda do |_env| rack_response = Rack::Response.new rack_response.status = 404 rack_response.write('404 Not Found') rack_response.finish end def call(env) - env[Rack::App::Constants::ENV::ROUTER]= self + env[Rack::App::Constants::ENV::ROUTER] = self @tree.call(env) || NOT_FOUND_APP.call(env) end def endpoints @endpoints ||= [] end def register_endpoint!(endpoint) endpoints.push(endpoint) compile_endpoint!(endpoint) - return endpoint + endpoint end # add ! to method name def reset - @lookup_paths = Hash.new #(Hash.new) + @lookup_paths = {} # (Hash.new) @tree = Rack::App::Router::Tree.new compile_registered_endpoints! end # rename to merge! - def merge_router!(router, prop={}) + def merge_router!(router, prop = {}) raise(ArgumentError, 'invalid router object, must implement :endpoints interface') unless router.respond_to?(:endpoints) router.endpoints.each do |endpoint| new_request_path = ::Rack::App::Utils.join(prop[:namespaces], endpoint.request_path) new_ancestors = endpoint.config.ancestor_apps + [prop[:new_ancestor]] new_endpoint = endpoint.fork(:request_path => new_request_path, :ancestors => new_ancestors) register_endpoint!(new_endpoint) end nil end - def show_endpoints - endpoints = self.endpoints wd0 = endpoints.map { |endpoint| endpoint.request_method.to_s.length }.max wd1 = endpoints.map { |endpoint| endpoint.request_path.to_s.length }.max wd2 = endpoints.map { |endpoint| endpoint.description.to_s.length }.max - return endpoints.sort_by { |endpoint| [endpoint.request_method, endpoint.request_path] }.map do |endpoint| + endpoints.sort_by { |endpoint| [endpoint.request_method, endpoint.request_path] }.map do |endpoint| [ endpoint.request_method.to_s.ljust(wd0), endpoint.request_path.to_s.ljust(wd1), endpoint.description.to_s.ljust(wd2) ].join(' ') end - end def path_to(klass, defined_path) - (@lookup_paths[klass][defined_path] || raise("missing path reference")).dup + @lookup_paths[klass] || raise(self.class::Error::AppIsNotMountedInTheRouter, "#{klass} is not registered in the router") + found_path = @lookup_paths[klass][defined_path] || raise(self.class::Error::MountedAppDoesNotHaveThisPath, 'missing path reference') + found_path.dup end protected def initialize @@ -88,9 +87,8 @@ def add_to_lookup_paths(endpoint) return unless endpoint.rack_app? def_path = endpoint.config.defined_request_path final_path = endpoint.request_path dictionary = @lookup_paths[endpoint.config.app_class] ||= {} - dictionary[def_path]= final_path + dictionary[def_path] = final_path end - end