class Cauldron::Tracer
Attributes
results[R]
sexp[R]
Public Class Methods
new(sexp)
click to toggle source
# File lib/cauldron/tracer.rb, line 7 def initialize(sexp) @sexp = sexp @results = [] end
substitue_tracking()
click to toggle source
# File lib/cauldron/tracer.rb, line 36 def self.substitue_tracking %q{ record("line", "depth", "total_lines", "point") } end
tracking(line, depth, total_line, point)
click to toggle source
# File lib/cauldron/tracer.rb, line 42 def self.tracking(line, depth, total_line, point) a = %Q{ record(#{line}, #{depth}, #{total_line}, #{point}, local_variables.reject { |foo| foo == :_ }.collect { |bar| [bar, eval(bar.to_s)] }) } Ripper::SexpBuilder.new(a).parse end
Public Instance Methods
process(example)
click to toggle source
# File lib/cauldron/tracer.rb, line 12 def process(example) object = Tracer.new(sexp) object.instance_eval(Sorcerer.source(sexp, indent: true)) object.function(example.arguments.first) History.new(object.results) #rescue => e # binding.pry # Sorcerer.source(sexp, indent: true) # var0 = [5,7] end
record(line, depth, total_line, point, entry)
click to toggle source
# File lib/cauldron/tracer.rb, line 24 def record(line, depth, total_line, point, entry) #h = Hash[*entry.flatten] h = Hash[*entry.flatten(1)] h.merge!(:line => line) h.merge!(:depth => depth) h.merge!(:total_line => total_line) h.merge!(:point => point) h = h.reject {|key,value| key.to_s.match /^placeholder/ } @results << h #@results << #entry # TODO Only want the trace to have on result so it should probably be in the initilaize call only end