Class: XTrace::CallTree
- Inherits:
-
Object
- Object
- XTrace::CallTree
- Defined in:
- lib/xtrace/call_tree.rb
Instance Attribute Summary collapse
-
#call_delta_elapsed ⇒ Object
Returns the value of attribute call_delta_elapsed.
-
#call_depth ⇒ Object
Returns the value of attribute call_depth.
-
#call_time ⇒ Object
Returns the value of attribute call_time.
-
#call_total_elapsed ⇒ Object
Returns the value of attribute call_total_elapsed.
-
#call_trace ⇒ Object
Returns the value of attribute call_trace.
-
#calls ⇒ Object
Returns the value of attribute calls.
-
#elapsed_time ⇒ Object
Returns the value of attribute elapsed_time.
-
#parent ⇒ Object
Returns the value of attribute parent.
Instance Method Summary collapse
- #<<(call_tree) ⇒ Object
- #add_time(elapsed_time) ⇒ Object
- #call_path(delim = ' --> ') ⇒ Object
- #call_stack ⇒ Object
-
#initialize(call_trace, call_depth, call_time, call_total_elapsed, call_delta_elapsed) ⇒ CallTree
constructor
A new instance of CallTree.
- #output ⇒ Object
Constructor Details
#initialize(call_trace, call_depth, call_time, call_total_elapsed, call_delta_elapsed) ⇒ CallTree
Returns a new instance of CallTree.
7 8 9 10 11 12 13 14 15 |
# File 'lib/xtrace/call_tree.rb', line 7 def initialize(call_trace, call_depth, call_time, call_total_elapsed, call_delta_elapsed) @call_trace = call_trace.gsub(/\(.*\)/, '(...)') @call_depth = call_depth @call_time = call_time @call_total_elapsed = call_total_elapsed @call_delta_elapsed = call_delta_elapsed @calls = [] @elapsed_time = call_delta_elapsed end |
Instance Attribute Details
#call_delta_elapsed ⇒ Object
Returns the value of attribute call_delta_elapsed.
3 4 5 |
# File 'lib/xtrace/call_tree.rb', line 3 def call_delta_elapsed @call_delta_elapsed end |
#call_depth ⇒ Object
Returns the value of attribute call_depth.
3 4 5 |
# File 'lib/xtrace/call_tree.rb', line 3 def call_depth @call_depth end |
#call_time ⇒ Object
Returns the value of attribute call_time.
3 4 5 |
# File 'lib/xtrace/call_tree.rb', line 3 def call_time @call_time end |
#call_total_elapsed ⇒ Object
Returns the value of attribute call_total_elapsed.
3 4 5 |
# File 'lib/xtrace/call_tree.rb', line 3 def call_total_elapsed @call_total_elapsed end |
#call_trace ⇒ Object
Returns the value of attribute call_trace.
3 4 5 |
# File 'lib/xtrace/call_tree.rb', line 3 def call_trace @call_trace end |
#calls ⇒ Object
Returns the value of attribute calls.
3 4 5 |
# File 'lib/xtrace/call_tree.rb', line 3 def calls @calls end |
#elapsed_time ⇒ Object
Returns the value of attribute elapsed_time.
3 4 5 |
# File 'lib/xtrace/call_tree.rb', line 3 def elapsed_time @elapsed_time end |
#parent ⇒ Object
Returns the value of attribute parent.
3 4 5 |
# File 'lib/xtrace/call_tree.rb', line 3 def parent @parent end |
Instance Method Details
#<<(call_tree) ⇒ Object
34 35 36 37 38 |
# File 'lib/xtrace/call_tree.rb', line 34 def <<(call_tree) add_time(call_tree.elapsed_time) call_tree.parent = self @calls << call_tree end |
#add_time(elapsed_time) ⇒ Object
29 30 31 32 |
# File 'lib/xtrace/call_tree.rb', line 29 def add_time(elapsed_time) @elapsed_time += elapsed_time @parent.add_time(elapsed_time) unless @parent.nil? end |
#call_path(delim = ' --> ') ⇒ Object
25 26 27 |
# File 'lib/xtrace/call_tree.rb', line 25 def call_path(delim = ' --> ') call_stack.join(delim) end |
#call_stack ⇒ Object
17 18 19 20 21 22 23 |
# File 'lib/xtrace/call_tree.rb', line 17 def call_stack if parent.nil? [@call_trace] else [parent.call_stack, @call_trace].flatten end end |
#output ⇒ Object
40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/xtrace/call_tree.rb', line 40 def output #if @calls.length > 1 if @elapsed_time > 1.0 prefix = ' ' * (@call_depth*2) puts "#{prefix}Call: #{@call_trace}" #puts "#{prefix}\tPath: \n\t > #{self.call_path("\n\t > ")}" puts "#{prefix}\tSubcalls:#{@calls.length}" puts "#{prefix}\tTime Elapsed: #{@elapsed_time}" end @calls.each do |call| call.output end end |