Sha256: 9e553e3aa75260cf3778b9a836ecb9324fe7c277a154686411c54048ddf40fa9
Contents?: true
Size: 1.41 KB
Versions: 1
Compression:
Stored size: 1.41 KB
Contents
require "trace_tree/version" require 'binding_of_callers/pry' require 'trace_tree/node' require 'trace_tree/short_gem_path' require 'trace_tree/color' class Binding def trace_tree *log, **opt, &to_do TraceTree.new(self).generate *log, **opt, &to_do end end class TraceTree def initialize bi @bi = bi @trace_points = [] end def generate *log, **opt, &to_do @log = log.empty? ? STDOUT : log[0] node_class = optional_node opt @build_command = opt[:html] ? :tree_html_full : :tree_graph tp = TracePoint.trace(:call, :b_call, :raise, :c_call) do |point| trace_points << node_class.new(point) if wanted? point end bi.eval('self').instance_eval &to_do ensure tp.disable dump_trace_tree end private attr_reader :bi, :trace_points, :log, :build_command def optional_node opt Class.new TraceTree::Node do prepend TraceTree::ShortGemPath unless opt[:gem] == false prepend TraceTree::Color unless opt[:color] == false end end def dump_trace_tree tree = sort(trace_points).send build_command log.puts tree end def wanted? trace_point trace_point.event != :c_call or trace_point.method_id == :throw end def sort stack hash = {} stack.each do |call| unless hash.empty? parent = hash[call.parent_stack] parent << call if parent end hash[call.whole_stack] = call end stack[0] end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
trace_tree-0.1.2 | lib/trace_tree.rb |