From 89bf31ee565a0f5b1d7138deaa1873223ef22da2 Mon Sep 17 00:00:00 2001 From: Aaron Patterson Date: Wed, 28 May 2014 16:59:32 -0700 Subject: move nil check to a method that yields to a block if the value is not nil --- actionpack/lib/action_dispatch/routing/mapper.rb | 33 ++++++++++++------------ 1 file changed, 16 insertions(+), 17 deletions(-) (limited to 'actionpack/lib/action_dispatch') diff --git a/actionpack/lib/action_dispatch/routing/mapper.rb b/actionpack/lib/action_dispatch/routing/mapper.rb index d7e0d932fb..58e8ac0201 100644 --- a/actionpack/lib/action_dispatch/routing/mapper.rb +++ b/actionpack/lib/action_dispatch/routing/mapper.rb @@ -237,8 +237,7 @@ module ActionDispatch end def default_controller_and_action - hash = {} - return hash if to.respond_to? :call + return {} if to.respond_to? :call controller, action = get_controller_and_action( default_controller, @@ -247,24 +246,28 @@ module ActionDispatch @scope[:module] ) - if controller - hash[:controller] = translate_controller controller - else - unless segment_keys.include?(:controller) - message = "Missing :controller key on routes definition, please check your routes." - raise ArgumentError, message + hash = check_part(:controller, controller, {}) do + translate_controller controller + end + + check_part(:action, action, hash) do + if Regexp === action + action + else + action.to_s end end + end - if action - hash[:action] = translate_action action + def check_part(name, part, hash) + if part + hash[name] = yield else - unless segment_keys.include?(:action) - message = "Missing :action key on routes definition, please check your routes." + unless segment_keys.include?(name) + message = "Missing :#{name} key on routes definition, please check your routes." raise ArgumentError, message end end - hash end @@ -288,10 +291,6 @@ module ActionDispatch [controller, action] end - def translate_action(action) - Regexp === action ? action : action.to_s - end - def translate_controller(controller) return controller if Regexp === controller return controller.to_s if controller =~ /\A[a-z_0-9][a-z_0-9\/]*\z/ -- cgit v1.2.3