Class: RuboCop::AST::NodePattern::Compiler::Subcompiler
Relationships & Source Files | |
Extension / Inclusion / Inheritance Descendants | |
Subclasses:
AtomSubcompiler, NodePatternSubcompiler, SequenceSubcompiler, RuboCop::AST::NodePattern::Compiler::Debug::NodePatternSubcompiler, RuboCop::AST::NodePattern::Compiler::Debug::SequenceSubcompiler
|
|
Inherits: | Object |
Defined in: | lib/rubocop/ast/node_pattern/compiler/subcompiler.rb |
Overview
Base class for subcompilers Implements visitor pattern
Doc on how this fits in the compiling process: /docs/modules/ROOT/pages/node_pattern.adoc
Class Attribute Summary
- .registry readonly
Class Method Summary
Instance Attribute Summary
Instance Method Summary
- #compile(node)
- #do_compile private
Constructor Details
.new(compiler) ⇒ Subcompiler
Class Attribute Details
.registry (readonly)
[ GitHub ]# File 'lib/rubocop/ast/node_pattern/compiler/subcompiler.rb', line 40
attr_reader :registry
Class Method Details
.inherited(base)
[ GitHub ]# 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)
[ GitHub ]# 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
Instance Attribute Details
#compiler (readonly)
[ GitHub ]# File 'lib/rubocop/ast/node_pattern/compiler/subcompiler.rb', line 13
attr_reader :compiler
#node (readonly, private)
[ GitHub ]# File 'lib/rubocop/ast/node_pattern/compiler/subcompiler.rb', line 32
attr_reader :node
Instance Method Details
#compile(node)
[ GitHub ]# File 'lib/rubocop/ast/node_pattern/compiler/subcompiler.rb', line 20
def compile(node) prev = @node @node = node do_compile ensure @node = prev end