From d12ff4fa50719e5282cb2a357968b9532ddce683 Mon Sep 17 00:00:00 2001 From: Aaron Patterson Date: Mon, 17 Aug 2015 13:36:09 -0700 Subject: [PATCH] use predicate methods to avoid is_a? checks we may want to change the name of the class at some point, so it's better to use a predicate --- actionpack/lib/action_dispatch/journey/nodes/node.rb | 2 ++ actionpack/lib/action_dispatch/journey/route.rb | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/actionpack/lib/action_dispatch/journey/nodes/node.rb b/actionpack/lib/action_dispatch/journey/nodes/node.rb index cf6542b370..a2de6ce1c8 100644 --- a/actionpack/lib/action_dispatch/journey/nodes/node.rb +++ b/actionpack/lib/action_dispatch/journey/nodes/node.rb @@ -39,10 +39,12 @@ module ActionDispatch def symbol?; false; end def literal?; false; end + def terminal?; false; end end class Terminal < Node # :nodoc: alias :symbol :left + def terminal?; true; end end class Literal < Terminal # :nodoc: diff --git a/actionpack/lib/action_dispatch/journey/route.rb b/actionpack/lib/action_dispatch/journey/route.rb index 1ead6c8a82..7fcb4080e8 100644 --- a/actionpack/lib/action_dispatch/journey/route.rb +++ b/actionpack/lib/action_dispatch/journey/route.rb @@ -30,7 +30,7 @@ module ActionDispatch def ast @decorated_ast ||= begin decorated_ast = path.ast - decorated_ast.grep(Nodes::Terminal).each { |n| n.memo = self } + decorated_ast.find_all(&:terminal?).each { |n| n.memo = self } decorated_ast end end