diff options
author | Aaron Patterson <aaron.patterson@gmail.com> | 2015-08-17 15:28:23 -0700 |
---|---|---|
committer | Aaron Patterson <aaron.patterson@gmail.com> | 2015-08-17 15:28:23 -0700 |
commit | 8d7b883f33034732996f80f73f46d050c7dc9210 (patch) | |
tree | 03ab1b2c56e01ce94406c1000721d5b83d54bf99 | |
parent | 56f734a3615ad522a1dbaafc7442f19e4651640b (diff) | |
download | rails-8d7b883f33034732996f80f73f46d050c7dc9210.tar.gz rails-8d7b883f33034732996f80f73f46d050c7dc9210.tar.bz2 rails-8d7b883f33034732996f80f73f46d050c7dc9210.zip |
avoid is_a? checks
add another predicate method so we can avoid is_a checks
-rw-r--r-- | actionpack/lib/action_dispatch/journey/nodes/node.rb | 2 | ||||
-rw-r--r-- | actionpack/lib/action_dispatch/journey/path/pattern.rb | 4 |
2 files changed, 4 insertions, 2 deletions
diff --git a/actionpack/lib/action_dispatch/journey/nodes/node.rb b/actionpack/lib/action_dispatch/journey/nodes/node.rb index a2de6ce1c8..2b57c368dc 100644 --- a/actionpack/lib/action_dispatch/journey/nodes/node.rb +++ b/actionpack/lib/action_dispatch/journey/nodes/node.rb @@ -40,6 +40,7 @@ module ActionDispatch def symbol?; false; end def literal?; false; end def terminal?; false; end + def star?; false; end end class Terminal < Node # :nodoc: @@ -94,6 +95,7 @@ module ActionDispatch end class Star < Unary # :nodoc: + def star?; true; end def type; :STAR; end def name diff --git a/actionpack/lib/action_dispatch/journey/path/pattern.rb b/actionpack/lib/action_dispatch/journey/path/pattern.rb index 2b384149f9..e93970046c 100644 --- a/actionpack/lib/action_dispatch/journey/path/pattern.rb +++ b/actionpack/lib/action_dispatch/journey/path/pattern.rb @@ -32,12 +32,12 @@ module ActionDispatch end def ast - @spec.grep(Nodes::Symbol).each do |node| + @spec.find_all(&:symbol?).each do |node| re = @requirements[node.to_sym] node.regexp = re if re end - @spec.grep(Nodes::Star).each do |node| + @spec.find_all(&:star?).each do |node| node = node.left node.regexp = @requirements[node.to_sym] || /(.+)/ end |