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