method
optionalize_trailing_dynamic_segments

v3.0.0 -
Show latest stable
-
0 notes -
Class: ActionDispatch::Routing::DeprecatedMapper
- 1.0.0
- 1.1.6
- 1.2.6
- 2.0.3
- 2.1.0
- 2.2.1
- 2.3.8
- 3.0.0 (0)
- 3.0.9 (0)
- 3.1.0
- 3.2.1
- 3.2.8
- 3.2.13
- 4.0.2
- 4.1.8
- 4.2.1
- 4.2.7
- 4.2.9
- 5.0.0.1
- 5.1.7
- 5.2.3
- 6.0.0
- 6.1.3.1
- 6.1.7.7
- 7.0.0
- 7.1.3.2
- 7.1.3.4
- What's this?
optionalize_trailing_dynamic_segments(path, requirements, defaults)
private
Hide source
# File actionpack/lib/action_dispatch/routing/deprecated_mapper.rb, line 130 def optionalize_trailing_dynamic_segments(path, requirements, defaults) #:nodoc: path = (path =~ /^\//) ? path.dup : "/#{path}" optional, segments = true, [] required_segments = requirements.keys required_segments -= defaults.keys.compact old_segments = path.split('/') old_segments.shift length = old_segments.length old_segments.reverse.each_with_index do |segment, index| required_segments.each do |required| if segment =~ /#{required}/ optional = false break end end if optional if segment == ":id" && segments.include?(":action") optional = false elsif segment == ":controller" || segment == ":action" || segment == ":id" # Ignore elsif !(segment =~ /^:\w+$/) && !(segment =~ /^:\w+\(\.:format\)$/) optional = false elsif segment =~ /^:(\w+)$/ if defaults.has_key?($1.to_sym) defaults.delete($1.to_sym) if defaults[$1.to_sym].nil? else optional = false end end end if optional && index < length - 1 segments.unshift('(/', segment) segments.push(')') elsif optional segments.unshift('/(', segment) segments.push(')') else segments.unshift('/', segment) end end segments.join end