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

visit(node) click to toggle source
# File rbs-3.6.1/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
visit_all(nodes) click to toggle source
# File rbs-3.6.1/lib/rbs/ast/visitor.rb, line 70
def visit_all(nodes)
  nodes.each do |node|
    visit(node)
  end
end
visit_declaration_class(node) click to toggle source
# File rbs-3.6.1/lib/rbs/ast/visitor.rb, line 79
def visit_declaration_class(node)
  visit_all(node.members)
end
visit_declaration_constant(node) click to toggle source
# File rbs-3.6.1/lib/rbs/ast/visitor.rb, line 87
def visit_declaration_constant(node)
end
visit_declaration_global(node) click to toggle source
# File rbs-3.6.1/lib/rbs/ast/visitor.rb, line 76
def visit_declaration_global(node)
end
visit_declaration_interface(node) click to toggle source
# File rbs-3.6.1/lib/rbs/ast/visitor.rb, line 93
def visit_declaration_interface(node)
  visit_all(node.members)
end
visit_declaration_module(node) click to toggle source
# File rbs-3.6.1/lib/rbs/ast/visitor.rb, line 83
def visit_declaration_module(node)
  visit_all(node.members)
end
visit_declaration_type_alias(node) click to toggle source
# File rbs-3.6.1/lib/rbs/ast/visitor.rb, line 90
def visit_declaration_type_alias(node)
end
visit_member_alias(node) click to toggle source
# File rbs-3.6.1/lib/rbs/ast/visitor.rb, line 97
def visit_member_alias(node)
end
visit_member_attr_accessor(node) click to toggle source
# File rbs-3.6.1/lib/rbs/ast/visitor.rb, line 124
def visit_member_attr_accessor(node)
end
visit_member_attr_reader(node) click to toggle source
# File rbs-3.6.1/lib/rbs/ast/visitor.rb, line 118
def visit_member_attr_reader(node)
end
visit_member_attr_writer(node) click to toggle source
# File rbs-3.6.1/lib/rbs/ast/visitor.rb, line 121
def visit_member_attr_writer(node)
end
visit_member_class_instance_variable(node) click to toggle source
# File rbs-3.6.1/lib/rbs/ast/visitor.rb, line 100
def visit_member_class_instance_variable(node)
end
visit_member_class_variable(node) click to toggle source
# File rbs-3.6.1/lib/rbs/ast/visitor.rb, line 103
def visit_member_class_variable(node)
end
visit_member_extend(node) click to toggle source
# File rbs-3.6.1/lib/rbs/ast/visitor.rb, line 133
def visit_member_extend(node)
end
visit_member_include(node) click to toggle source
# File rbs-3.6.1/lib/rbs/ast/visitor.rb, line 127
def visit_member_include(node)
end
visit_member_instance_variable(node) click to toggle source
# File rbs-3.6.1/lib/rbs/ast/visitor.rb, line 106
def visit_member_instance_variable(node)
end
visit_member_method_definition(node) click to toggle source
# File rbs-3.6.1/lib/rbs/ast/visitor.rb, line 115
def visit_member_method_definition(node)
end
visit_member_prepend(node) click to toggle source
# File rbs-3.6.1/lib/rbs/ast/visitor.rb, line 130
def visit_member_prepend(node)
end
visit_member_private(node) click to toggle source
# File rbs-3.6.1/lib/rbs/ast/visitor.rb, line 109
def visit_member_private(node)
end
visit_member_public(node) click to toggle source
# File rbs-3.6.1/lib/rbs/ast/visitor.rb, line 112
def visit_member_public(node)
end