mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
8eec6ee962
`Pattern#from_sting` was introduced inbb207ea7
to support creating patterns from strings in tests (removing a conditional in the initialize method that had been there only for the sake of those tests). `Pattern#build` was introduced in947ebe9a
, and was similarly used only in tests. My understanding is that [`Mapping#path`][path] is the only place where we initialize a `Path::Pattern` in library code. Since these two methods appear to be used only in tests, this commit moves them out of the class and into a test helper. My reasoning for doing this is that I am doing some performance work that may involve a modification to how `Path::Pattern`s get initialized, and I will have more confidence in that work if I know for sure that these methods are test helpers that can be modified freely. [path]: https://github.com/rails/rails/blob/master/actionpack/lib/action_dispatch/routing/mapper.rb#L192-L194
22 lines
500 B
Ruby
22 lines
500 B
Ruby
# frozen_string_literal: true
|
|
|
|
module ActionDispatch
|
|
module Journey
|
|
module PathHelper
|
|
def path_from_string(string)
|
|
build_path(string, {}, "/.?", true)
|
|
end
|
|
|
|
def build_path(path, requirements, separators, anchored)
|
|
parser = ActionDispatch::Journey::Parser.new
|
|
ast = parser.parse path
|
|
ActionDispatch::Journey::Path::Pattern.new(
|
|
ast,
|
|
requirements,
|
|
separators,
|
|
anchored
|
|
)
|
|
end
|
|
end
|
|
end
|
|
end
|