Class: TPTree::Presenters::TreeNodePresenter

Inherits:
Object
  • Object
show all
Defined in:
lib/tp_tree/presenters/tree_node_presenter.rb

Overview

TreeNodePresenter handles the formatting and display logic for TreeNode objects

Instance Method Summary collapse

Constructor Details

#initialize(tree_node, formatter: nil) ⇒ TreeNodePresenter

Returns a new instance of TreeNodePresenter.



9
10
11
12
# File 'lib/tp_tree/presenters/tree_node_presenter.rb', line 9

def initialize(tree_node, formatter: nil)
  @tree_node = tree_node
  @formatter = formatter || Formatters::AnsiFormatter.new
end

Instance Method Details

#to_partsObject



30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/tp_tree/presenters/tree_node_presenter.rb', line 30

def to_parts
  prefix_parts = build_prefix_parts
  color = @formatter.color_for_depth(@tree_node.depth)
  colored_method_name = @formatter.colorize(@tree_node.method_name, color)
  timing_info = @formatter.format_timing(@tree_node.duration)

  content = case @tree_node.event
            when :call
              "#{colored_method_name}(#{@formatter.format_parameters(@tree_node.parameters)})#{timing_info}"
            when :return
              "#{@formatter.format_return_value(@tree_node.return_value)}#{timing_info}"
            when :call_return
              "#{colored_method_name}(#{@formatter.format_parameters(@tree_node.parameters)}) → #{@formatter.format_return_value(@tree_node.return_value)}#{timing_info}"
            end
  [prefix_parts, content]
end

#to_sObject



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/tp_tree/presenters/tree_node_presenter.rb', line 14

def to_s
  prefix = build_prefix
  color = @formatter.color_for_depth(@tree_node.depth)
  colored_method_name = @formatter.colorize(@tree_node.method_name, color)
  timing_info = @formatter.format_timing(@tree_node.duration)

  case @tree_node.event
  when :call
    "#{prefix}#{colored_method_name}(#{@formatter.format_parameters(@tree_node.parameters)})#{timing_info}"
  when :return
    "#{prefix}#{@formatter.format_return_value(@tree_node.return_value)}#{timing_info}"
  when :call_return
    "#{prefix}#{colored_method_name}(#{@formatter.format_parameters(@tree_node.parameters)}) → #{@formatter.format_return_value(@tree_node.return_value)}#{timing_info}"
  end
end