A visitor is a class that provides a default implementation for every accept method defined on the nodes. This means it can walk a tree without the caller needing to define any special handling. This allows you to handle a subset of the tree, while still walking the whole tree.

For example, to find all of the method calls that call the foo method, you could write:

class FooCalls < Prism::Visitor
  def visit_call_node(node)
    if node.name == :foo
      # Do something with the node
    end

    # Call super so that the visitor continues walking the tree
    super
  end
end
Instance Methods

Visit a AliasMethodNode node

Visit a AlternationPatternNode node

Visit a AndNode node

Visit a ArgumentsNode node

Visit a ArrayNode node

Visit a ArrayPatternNode node

Visit a AssocNode node

Visit a AssocSplatNode node

Visit a BackReferenceReadNode node

Visit a BeginNode node

Visit a BlockArgumentNode node

Visit a BlockLocalVariableNode node

Visit a BlockNode node

Visit a BlockParameterNode node

Visit a BlockParametersNode node

Visit a BreakNode node

Visit a CallAndWriteNode node

Visit a CallNode node

Visit a CallOperatorWriteNode node

Visit a CallOrWriteNode node

Visit a CallTargetNode node

Visit a CapturePatternNode node

Visit a CaseMatchNode node

Visit a CaseNode node

Visit a ClassNode node

Visit a ClassVariableReadNode node

Visit a ClassVariableWriteNode node

Visit a ConstantAndWriteNode node

Visit a ConstantOrWriteNode node

Visit a ConstantPathNode node

Visit a ConstantPathTargetNode node

Visit a ConstantPathWriteNode node

Visit a ConstantReadNode node

Visit a ConstantTargetNode node

Visit a ConstantWriteNode node

Visit a DefinedNode node

Visit a DefNode node

Visit a ElseNode node

Visit a EmbeddedStatementsNode node

Visit a EmbeddedVariableNode node

Visit a EnsureNode node

Visit a FalseNode node

Visit a FindPatternNode node

Visit a FlipFlopNode node

Visit a FloatNode node

Visit a ForNode node

Visit a ForwardingSuperNode node

Visit a GlobalVariableReadNode node

Visit a HashNode node

Visit a HashPatternNode node

Visit a IfNode node

Visit a ImaginaryNode node

Visit a ImplicitNode node

Visit a ImplicitRestNode node

Visit a IndexAndWriteNode node

Visit a IndexOperatorWriteNode node

Visit a IndexOrWriteNode node

Visit a IndexTargetNode node

Visit a InNode node

Visit a IntegerNode node

Visit a InterpolatedStringNode node

Visit a InterpolatedSymbolNode node

Visit a ItParametersNode node

Visit a KeywordHashNode node

Visit a LambdaNode node

Visit a LocalVariableReadNode node

Visit a LocalVariableWriteNode node

Visit a MatchLastLineNode node

Visit a MatchPredicateNode node

Visit a MatchRequiredNode node

Visit a MatchWriteNode node

Visit a MissingNode node

Visit a ModuleNode node

Visit a MultiTargetNode node

Visit a MultiWriteNode node

Visit a NextNode node

Visit a NilNode node

Visit a NumberedParametersNode node

Visit a OptionalParameterNode node

Visit a OrNode node

Visit a ParametersNode node

Visit a ParenthesesNode node

Visit a PinnedExpressionNode node

Visit a PinnedVariableNode node

Visit a PostExecutionNode node

Visit a PreExecutionNode node

Visit a ProgramNode node

Visit a RangeNode node

Visit a RationalNode node

Visit a RedoNode node

Visit a RegularExpressionNode node

Visit a RequiredParameterNode node

Visit a RescueModifierNode node

Visit a RescueNode node

Visit a RestParameterNode node

Visit a RetryNode node

Visit a ReturnNode node

Visit a SelfNode node

Visit a ShareableConstantNode node

Visit a SingletonClassNode node

Visit a SourceEncodingNode node

Visit a SourceFileNode node

Visit a SourceLineNode node

Visit a SplatNode node

Visit a StatementsNode node

Visit a StringNode node

Visit a SuperNode node

Visit a SymbolNode node

Visit a TrueNode node

Visit a UndefNode node

Visit a UnlessNode node

Visit a UntilNode node

Visit a WhenNode node

Visit a WhileNode node

Visit a XStringNode node

Visit a YieldNode node