push options decomposition up so we can extract
This commit is contained in:
parent
3bc684bf04
commit
d991b67040
@ -57,12 +57,18 @@ class Mapping #:nodoc:
|
||||
WILDCARD_PATH = %r{\*([^/\)]+)\)?$}
|
||||
|
||||
attr_reader :scope, :path, :options, :requirements, :conditions, :defaults
|
||||
attr_reader :to, :default_controller, :default_action
|
||||
|
||||
def initialize(set, scope, path, options)
|
||||
@set, @scope, @path, @options = set, scope, path, options
|
||||
@set, @scope, @path = set, scope, path
|
||||
@requirements, @conditions, @defaults = {}, {}, {}
|
||||
|
||||
normalize_options!
|
||||
options = scope[:options].merge(options) if scope[:options]
|
||||
@to = options[:to]
|
||||
@default_controller = options[:controller] || scope[:controller]
|
||||
@default_action = options[:action] || scope[:action]
|
||||
|
||||
@options = normalize_options!(options)
|
||||
normalize_path!
|
||||
normalize_requirements!
|
||||
normalize_conditions!
|
||||
@ -94,14 +100,13 @@ def optional_format?
|
||||
options[:format] != false && !path.include?(':format') && !path.end_with?('/')
|
||||
end
|
||||
|
||||
def normalize_options!
|
||||
@options.reverse_merge!(scope[:options]) if scope[:options]
|
||||
def normalize_options!(options)
|
||||
path_without_format = path.sub(/\(\.:format\)$/, '')
|
||||
|
||||
# Add a constraint for wildcard route to make it non-greedy and match the
|
||||
# optional format part of the route by default
|
||||
if path_without_format.match(WILDCARD_PATH) && @options[:format] != false
|
||||
@options[$1.to_sym] ||= /.+?/
|
||||
if path_without_format.match(WILDCARD_PATH) && options[:format] != false
|
||||
options[$1.to_sym] ||= /.+?/
|
||||
end
|
||||
|
||||
if path_without_format.match(':controller')
|
||||
@ -111,10 +116,10 @@ def normalize_options!
|
||||
# controllers with default routes like :controller/:action/:id(.:format), e.g:
|
||||
# GET /admin/products/show/1
|
||||
# => { controller: 'admin/products', action: 'show', id: '1' }
|
||||
@options[:controller] ||= /.+?/
|
||||
options[:controller] ||= /.+?/
|
||||
end
|
||||
|
||||
@options.merge!(default_controller_and_action)
|
||||
options.merge!(default_controller_and_action)
|
||||
end
|
||||
|
||||
def normalize_requirements!
|
||||
@ -303,18 +308,6 @@ def endpoint
|
||||
def dispatcher
|
||||
Routing::RouteSet::Dispatcher.new(defaults)
|
||||
end
|
||||
|
||||
def to
|
||||
options[:to]
|
||||
end
|
||||
|
||||
def default_controller
|
||||
options[:controller] || scope[:controller]
|
||||
end
|
||||
|
||||
def default_action
|
||||
options[:action] || scope[:action]
|
||||
end
|
||||
end
|
||||
|
||||
# Invokes Journey::Router::Utils.normalize_path and ensure that
|
||||
|
Loading…
Reference in New Issue
Block a user