Class: ActionDispatch::Routing::Mapper
- Inherits:
-
Object
- Object
- ActionDispatch::Routing::Mapper
- Includes:
- Base, Concerns, CustomUrls, HttpHelpers, Resources, Scoping, Redirection
- Defined in:
- lib/action_dispatch/routing/mapper.rb
Defined Under Namespace
Modules: Base, Concerns, CustomUrls, HttpHelpers, Resources, Scoping Classes: Constraints, Mapping, Scope
Constant Summary collapse
- URL_OPTIONS =
[:protocol, :subdomain, :domain, :host, :port]
Constants included from Resources
Resources::CANONICAL_ACTIONS, Resources::RESOURCE_OPTIONS, Resources::VALID_ON_OPTIONS
Constants included from Scoping
Class Method Summary collapse
- .normalize_name(name) ⇒ Object
-
.normalize_path(path) ⇒ Object
Invokes Journey::Router::Utils.normalize_path, then ensures that /(:locale) becomes (/:locale).
Instance Method Summary collapse
-
#initialize(set) ⇒ Mapper
constructor
:nodoc:.
Methods included from CustomUrls
Methods included from Resources
#collection, #draw, #match, #member, #namespace, #nested, #new, #resource, #resources, #resources_path_names, #root, #shallow, #shallow?
Methods included from Concerns
Methods included from Scoping
#constraints, #controller, #defaults, #namespace, #scope
Methods included from Redirection
Methods included from HttpHelpers
#delete, #get, #options, #patch, #post, #put
Methods included from Base
#default_url_options=, #has_named_route?, #match, #mount, #with_default_scope
Constructor Details
Class Method Details
.normalize_name(name) ⇒ Object
381 382 383 |
# File 'lib/action_dispatch/routing/mapper.rb', line 381 def self.normalize_name(name) normalize_path(name)[1..-1].tr("/", "_") end |
.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.
364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 |
# File 'lib/action_dispatch/routing/mapper.rb', line 364 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 |