Class: Perb::Rewriter

Inherits:
Parser::TreeRewriter
  • Object
show all
Defined in:
lib/perb.rb

Overview

This is a tree rewriter that will insert the wrapper code around every method definition.

Instance Method Summary collapse

Instance Method Details

#on_def(node) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/perb.rb', line 11

def on_def(node)
  line = node.location.line || "line?"
  column = node.location.column || "column?"
  method_name = node.children[0] || "*unknown*"
  file_name = @source_rewriter.source_buffer.name
  method_info = "#{method_name} @ #{file_name}:#{line}:#{column}"

  block = node.children[2]
  return if block.nil?

  insert_before(block.loc.expression, "Perb::wrapper(#{Perb.build_wrapper(method_info)}) do\n")
  insert_after(node.loc.expression, "\nend")
end