提交 92d16ec1 编写于 作者: A Aaron Patterson

only loop over `options` once (hopefully)

上级 c0fc116f
......@@ -89,14 +89,15 @@ def initialize(scope, path, options)
constraints = constraints(options_constraints,
scope[:constraints] || {})
(scope[:constraints] || {}),
path_params)
normalize_requirements!(path_params, formatted, constraints)
@conditions[:path_info] = path
@conditions[:parsed_path_info] = ast
normalize_conditions!(path_params, path, ast, via, constraints)
add_request_method(via, @conditions)
normalize_defaults!(formatted, options_constraints)
end
......@@ -207,15 +208,7 @@ def verify_callable_constraint(callable_constraint)
end
end
def normalize_conditions!(path_params, path, ast, via, constraints)
required_defaults = []
options.each do |key, required_default|
unless path_params.include?(key) || Regexp === required_default
required_defaults << key
end
end
@conditions[:required_defaults] = required_defaults
def add_request_method(via, conditions)
unless via == [:all]
if via.empty?
msg = "You should not use the `match` method in your router without specifying an HTTP method.\n" \
......@@ -226,7 +219,7 @@ def normalize_conditions!(path_params, path, ast, via, constraints)
raise ArgumentError, msg
end
@conditions[:request_method] = via.map { |m| m.to_s.dasherize.upcase }
conditions[:request_method] = via.map { |m| m.to_s.dasherize.upcase }
end
end
......@@ -309,10 +302,15 @@ def blocks(options_constraints, scope_blocks)
end
end
def constraints(option_constraints, constraints)
def constraints(option_constraints, constraints, path_params)
required_defaults = []
options.each_pair do |key, option|
constraints[key] = option if Regexp === option
unless path_params.include?(key) || Regexp === option
required_defaults << key
end
end
@conditions[:required_defaults] = required_defaults
constraints.merge!(option_constraints) if option_constraints.is_a?(Hash)
constraints
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册