Method: ActionDispatch::Routing::Mapper.normalize_path
- Defined in:
- actionpack/lib/action_dispatch/routing/mapper.rb
.normalize_path(path) ⇒ Object
Invokes Journey::Router::Utils.normalize_path, then ensures that /(:locale) becomes (/:locale). Except for root cases, where the former is the correct one.
397 398 399 400 401 402 403 404 405 406 407 408 409 410 |
# File 'actionpack/lib/action_dispatch/routing/mapper.rb', line 397 def self.normalize_path(path) path = Journey::Router::Utils.normalize_path(path) # the path for a root URL at this point can be something like # "/(/:locale)(/:platform)/(:browser)", and we would want # "/(:locale)(/:platform)(/:browser)" reverse "/(", "/((" etc to "(/", "((/" etc path.gsub!(%r{/(\(+)/?}, '\1/') # if a path is all optional segments, change the leading "(/" back to "/(" so it # evaluates to "/" when interpreted with no options. Unless, however, at least # one secondary segment consists of a static part, ex. # "(/:locale)(/pages/:page)" path.sub!(%r{^(\(+)/}, '/\1') if %r{^(\(+[^)]+\))(\(+/:[^)]+\))*$}.match?(path) path end |