1-08

AST Mutation

  • Visitor pattern for traversing AST
  • Prism::MutationCompiler used for mutating AST
class TagTranslator < Prism::MutationCompiler
  # simplified excerpt
  def visit_call_node(node, dont_translate: false)
    match_tag(node) || super(node)
  end

  def match_tag(node)
    return if node.receiver
  
    Papercraft::TagNode.new(node)
  end
end