class TraceCalls::MethodCall
Attributes
called_at_lineno[R]
children[R]
file_path[R]
lineno[R]
name[R]
parent[R]
scope[R]
Public Class Methods
new(name, scope, file_path, lineno, parent, called_at_lineno)
click to toggle source
# File lib/trace_calls/method_call.rb, line 13 def initialize(name, scope, file_path, lineno, parent, called_at_lineno) @name = name @scope = scope @file_path = file_path @lineno = lineno @parent = parent ? parent : self @called_at_lineno = called_at_lineno @children = [] end
Public Instance Methods
<<(method_call)
click to toggle source
# File lib/trace_calls/method_call.rb, line 31 def <<(method_call) @children << method_call self end
eql?(other)
click to toggle source
# File lib/trace_calls/method_call.rb, line 73 def eql?(other) other.hash == hash end
fully_qualified_name()
click to toggle source
# File lib/trace_calls/method_call.rb, line 61 def fully_qualified_name "#{file_path}:#{lineno}:#{@scope}::#{@name}" end
hash()
click to toggle source
# File lib/trace_calls/method_call.rb, line 69 def hash "#{parent.fully_qualified_name}\##{called_at_lineno}>#{fully_qualified_name}".hash end
is_leaf?()
click to toggle source
# File lib/trace_calls/method_call.rb, line 27 def is_leaf? @children.empty? end
is_root?()
click to toggle source
# File lib/trace_calls/method_call.rb, line 23 def is_root? @parent == self end
leaves()
click to toggle source
# File lib/trace_calls/method_call.rb, line 36 def leaves return [self] if is_leaf? @children.map(&:leaves).flatten end
qualified_name()
click to toggle source
# File lib/trace_calls/method_call.rb, line 65 def qualified_name "#{@scope}::#{@name}" end
to_s(detailed: false)
click to toggle source
+-root
+-child 1 +-child 2 \-child 3 \-child 1
# File lib/trace_calls/method_call.rb, line 46 def to_s(detailed: false) method_name_to_get_node_name = (detailed ? :fully_qualified_name : :qualified_name) line = "" line << "+-" if is_root? line << "#{send(method_name_to_get_node_name)}" line << " called from #{parent.send(method_name_to_get_node_name)} at #{called_at_lineno}" unless is_root? unless children.empty? line << "\n" line << children[0..-2].map{ |child| treeify_child_line(child, detailed: detailed) }.join line << treeify_child_line(children.last, last_child: true, detailed: detailed) end line = line[0..-2] if line[-1] == "\n" line end
Private Instance Methods
treeify_child_line(child, last_child: false, detailed: false)
click to toggle source
# File lib/trace_calls/method_call.rb, line 79 def treeify_child_line(child, last_child: false, detailed: false) anchor = (last_child ? "\\" : "+") child_text = "" child_lines = child.to_s(detailed: detailed).lines child_text << " #{anchor}-" + child_lines.shift while not child_lines.empty? do child_text << " |" + child_lines.shift[1..-1] end child_text << "\n" end