class RBS::AST::Visitor - rbs: Ruby Standard Library Documentation

# 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.8.0/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.8.0/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.8.0/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.8.0/lib/rbs/ast/visitor.rb, line 87
    def visit_declaration_constant(node)
    end

visit_declaration_global(node) click to toggle source

    # File rbs-3.8.0/lib/rbs/ast/visitor.rb, line 76
    def visit_declaration_global(node)
    end

visit_declaration_interface(node) click to toggle source

    # File rbs-3.8.0/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.8.0/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.8.0/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.8.0/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.8.0/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.8.0/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.8.0/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.8.0/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.8.0/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.8.0/lib/rbs/ast/visitor.rb, line 133
    def visit_member_extend(node)
    end

visit_member_include(node) click to toggle source

    # File rbs-3.8.0/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.8.0/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.8.0/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.8.0/lib/rbs/ast/visitor.rb, line 130
    def visit_member_prepend(node)
    end

visit_member_private(node) click to toggle source

    # File rbs-3.8.0/lib/rbs/ast/visitor.rb, line 109
    def visit_member_private(node)
    end

visit_member_public(node) click to toggle source

    # File rbs-3.8.0/lib/rbs/ast/visitor.rb, line 112
    def visit_member_public(node)
    end