提交 1eb6b4a6 编写于 作者: A Aaron Patterson

pull up path normalization.

Eventually I want to pull up AST generation so that we don't have to add
it to the `conditions` hash.
上级 9a4a436f
......@@ -82,6 +82,22 @@ def self.check_via(via)
via
end
def self.normalize_path(path, format)
path = Mapper.normalize_path(path)
if format == true
"#{path}.:format"
elsif optional_format?(path, format)
"#{path}(.:format)"
else
path
end
end
def self.optional_format?(path, format)
format != false && !path.include?(':format') && !path.end_with?('/')
end
def initialize(set, path, defaults, controller, default_action, modyoule, to, formatted, scope_constraints, blocks, via, options_constraints, options)
@defaults = defaults
@set = set
......@@ -90,7 +106,6 @@ def initialize(set, path, defaults, controller, default_action, modyoule, to, fo
@default_controller = controller
@default_action = default_action
path = normalize_path! path, formatted
ast = path_ast path
path_params = path_params ast
......@@ -133,22 +148,6 @@ def to_route
private
def normalize_path!(path, format)
path = Mapper.normalize_path(path)
if format == true
"#{path}.:format"
elsif optional_format?(path, format)
"#{path}(.:format)"
else
path
end
end
def optional_format?(path, format)
format != false && !path.include?(':format') && !path.end_with?('/')
end
def normalize_options!(options, formatted, path_params, path_ast, modyoule)
# Add a constraint for wildcard route to make it non-greedy and match the
# optional format part of the route by default
......@@ -1608,7 +1607,8 @@ def add_route(action, controller, options, _path, to, via, formatted, anchor, op
name_for_action(options.delete(:as), action)
end
mapping = Mapping.build(@scope, @set, URI.parser.escape(path), controller, default_action, to, via, formatted, options_constraints, options)
path = Mapping.normalize_path URI.parser.escape(path), formatted
mapping = Mapping.build(@scope, @set, path, controller, default_action, to, via, formatted, options_constraints, options)
app, conditions, requirements, defaults = mapping.to_route
@set.add_route(app, conditions, requirements, defaults, as, anchor)
end
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册