class RBS::AST::Visitor
The Visitor class implements the Visitor pattern for traversing the RBS Abstract Syntax Tree (AST).
It provides methods to visit each type of node in the AST, allowing for custom processing of each node type.
This class is designed to be subclassed, with specific visit methods overridden to implement custom behavior for different node types.
Example usage:
~~~rb class MyVisitor < RBS::AST::Visitor
def visit_declaration_class(node) puts "Visiting class: #{node.name}" super # call `super` to run the default visiting behavior end
end
visitor = MyVisitor.new visitor.visit(ast_node) ~~~
Public Instance Methods
(Members::Base | Declarations::Base node) → void
Source
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/lib/rbs/ast/visitor.rb, line 27 def visit(node) case node when Declarations::Global visit_declaration_global(node) when Declarations::Class visit_declaration_class(node) when Declarations::Module visit_declaration_module(node) when Declarations::Constant visit_declaration_constant(node) when Declarations::TypeAlias visit_declaration_type_alias(node) when Declarations::Interface visit_declaration_interface(node) when Members::Alias visit_member_alias(node) when Members::ClassInstanceVariable visit_member_class_instance_variable(node) when Members::ClassVariable visit_member_class_variable(node) when Members::InstanceVariable visit_member_instance_variable(node) when Members::Private visit_member_private(node) when Members::Public visit_member_public(node) when Members::MethodDefinition visit_member_method_definition(node) when Members::AttrReader visit_member_attr_reader(node) when Members::AttrWriter visit_member_attr_writer(node) when Members::AttrAccessor visit_member_attr_accessor(node) when Members::Include visit_member_include(node) when Members::Prepend visit_member_prepend(node) when Members::Extend visit_member_extend(node) end end
(Enumerable[Members::Base | Declarations::Base] nodes) → void
Source
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/lib/rbs/ast/visitor.rb, line 70 def visit_all(nodes) nodes.each do |node| visit(node) end end
(Declarations::Class node) → void
Source
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/lib/rbs/ast/visitor.rb, line 79 def visit_declaration_class(node) visit_all(node.members) end
(Declarations::Constant node) → void
Source
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/lib/rbs/ast/visitor.rb, line 87 def visit_declaration_constant(node) end
(Declarations::Global node) → void
Source
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/lib/rbs/ast/visitor.rb, line 76 def visit_declaration_global(node) end
(Declarations::Interface node) → void
Source
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/lib/rbs/ast/visitor.rb, line 93 def visit_declaration_interface(node) visit_all(node.members) end
(Declarations::Module node) → void
Source
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/lib/rbs/ast/visitor.rb, line 83 def visit_declaration_module(node) visit_all(node.members) end
(Declarations::TypeAlias node) → void
Source
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/lib/rbs/ast/visitor.rb, line 90 def visit_declaration_type_alias(node) end
(Members::Alias node) → void
Source
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/lib/rbs/ast/visitor.rb, line 97 def visit_member_alias(node) end
(Members::AttrAccessor node) → void
Source
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/lib/rbs/ast/visitor.rb, line 124 def visit_member_attr_accessor(node) end
(Members::AttrReader node) → void
Source
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/lib/rbs/ast/visitor.rb, line 118 def visit_member_attr_reader(node) end
(Members::AttrWriter node) → void
Source
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/lib/rbs/ast/visitor.rb, line 121 def visit_member_attr_writer(node) end
(Members::ClassInstanceVariable node) → void
Source
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/lib/rbs/ast/visitor.rb, line 100 def visit_member_class_instance_variable(node) end
(Members::ClassVariable node) → void
Source
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/lib/rbs/ast/visitor.rb, line 103 def visit_member_class_variable(node) end
(Members::Extend node) → void
Source
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/lib/rbs/ast/visitor.rb, line 133 def visit_member_extend(node) end
(Members::Include node) → void
Source
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/lib/rbs/ast/visitor.rb, line 127 def visit_member_include(node) end
(Members::InstanceVariable node) → void
Source
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/lib/rbs/ast/visitor.rb, line 106 def visit_member_instance_variable(node) end
(Members::MethodDefinition node) → void
Source
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/lib/rbs/ast/visitor.rb, line 115 def visit_member_method_definition(node) end
(Members::Prepend node) → void
Source
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/lib/rbs/ast/visitor.rb, line 130 def visit_member_prepend(node) end
(Members::Private node) → void
Source
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/lib/rbs/ast/visitor.rb, line 109 def visit_member_private(node) end
(Members::Public node) → void
Source
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/lib/rbs/ast/visitor.rb, line 112 def visit_member_public(node) end