class RuboCop::AST::NodePattern::Compiler::Subcompiler
Base class for subcompilers Implements visitor pattern
Doc on how this fits in the compiling process:
/docs/modules/ROOT/pages/node_pattern.adoc
Attributes
registry[R]
compiler[R]
node[R]
@api private
Public Class Methods
new(compiler)
click to toggle source
# File lib/rubocop/ast/node_pattern/compiler/subcompiler.rb, line 15 def initialize(compiler) @compiler = compiler @node = nil end
Private Class Methods
inherited(base)
click to toggle source
Calls superclass method
# File lib/rubocop/ast/node_pattern/compiler/subcompiler.rb, line 47 def inherited(base) us = self base.class_eval { @registry = us.registry.dup } super end
method_added(method)
click to toggle source
Calls superclass method
# File lib/rubocop/ast/node_pattern/compiler/subcompiler.rb, line 42 def method_added(method) @registry[Regexp.last_match(1).to_sym] = method if method =~ /^visit_(.*)/ super end
Public Instance Methods
compile(node)
click to toggle source
# File lib/rubocop/ast/node_pattern/compiler/subcompiler.rb, line 20 def compile(node) prev = @node @node = node do_compile ensure @node = prev end
Private Instance Methods
do_compile()
click to toggle source
# File lib/rubocop/ast/node_pattern/compiler/subcompiler.rb, line 34 def do_compile send(self.class.registry.fetch(node.type, :visit_other_type)) end