aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack
diff options
context:
space:
mode:
authorAaron Patterson <aaron.patterson@gmail.com>2015-08-12 10:48:23 -0700
committerAaron Patterson <aaron.patterson@gmail.com>2015-08-12 14:30:53 -0700
commitf88c68a819b0abb93a0bf12d24caaa12e31c504b (patch)
tree76eadd67ab1401aadcf9897c8b7d80b5f3c194ed /actionpack
parentc10d7d16908c6858428331b3cdb056bd059aba63 (diff)
downloadrails-f88c68a819b0abb93a0bf12d24caaa12e31c504b.tar.gz
rails-f88c68a819b0abb93a0bf12d24caaa12e31c504b.tar.bz2
rails-f88c68a819b0abb93a0bf12d24caaa12e31c504b.zip
simplify `split_constraints`
If we do the Regexp verification in a second method, then the `split_constraints` method gets much easier.
Diffstat (limited to 'actionpack')
-rw-r--r--actionpack/lib/action_dispatch/routing/mapper.rb23
1 files changed, 11 insertions, 12 deletions
diff --git a/actionpack/lib/action_dispatch/routing/mapper.rb b/actionpack/lib/action_dispatch/routing/mapper.rb
index c4872b8c6f..7a74774fdb 100644
--- a/actionpack/lib/action_dispatch/routing/mapper.rb
+++ b/actionpack/lib/action_dispatch/routing/mapper.rb
@@ -112,6 +112,8 @@ module ActionDispatch
end
requirements, conditions = split_constraints path_params, constraints
+ verify_regexp_requirements requirements.map(&:last).grep(Regexp)
+
formats = normalize_format(formatted)
@requirements = formats[:requirements].merge Hash[requirements]
@@ -182,12 +184,7 @@ module ActionDispatch
def split_constraints(path_params, constraints)
constraints.partition do |key, requirement|
- if path_params.include?(key) || key == :controller
- verify_regexp_requirement(requirement) if requirement.is_a?(Regexp)
- true
- else
- false
- end
+ path_params.include?(key) || key == :controller
end
end
@@ -207,13 +204,15 @@ module ActionDispatch
end
end
- def verify_regexp_requirement(requirement)
- if requirement.source =~ ANCHOR_CHARACTERS_REGEX
- raise ArgumentError, "Regexp anchor characters are not allowed in routing requirements: #{requirement.inspect}"
- end
+ def verify_regexp_requirements(requirements)
+ requirements.each do |requirement|
+ if requirement.source =~ ANCHOR_CHARACTERS_REGEX
+ raise ArgumentError, "Regexp anchor characters are not allowed in routing requirements: #{requirement.inspect}"
+ end
- if requirement.multiline?
- raise ArgumentError, "Regexp multiline option is not allowed in routing requirements: #{requirement.inspect}"
+ if requirement.multiline?
+ raise ArgumentError, "Regexp multiline option is not allowed in routing requirements: #{requirement.inspect}"
+ end
end
end