Sha256: 38e10fb47c0debcb5a0f93b31b77ca3837e0c30fb078dd8ec94ccb32135f02dc

Contents?: true

Size: 1.49 KB

Versions: 4

Compression:

Stored size: 1.49 KB

Contents

# frozen_string_literal: true

module RShade
  module Formatter
    module Trace
      class String
        ROOT_SEP = "---\n"

        def initialize(opts = {}); end

        # @param [RShade::EventProcessor] event_store
        def call(event_store)
          buffer = StringIO.new
          event_store.each_with_index do |node, idx|
            depth = node.level
            event = node.value
            if depth == 1
              buffer << ROOT_SEP
              next
            end
            next unless event

            buffer.write line(idx, event, node.vlevel)
          end
          buffer.string
        end

        def line(line_idx, value, depth)
          vars = value.vars
          returned_value = value.return_value || {}
          returned_str = "#{returned_value[:type]} #{returned_value[:value]}"
          returned = ColorizedString["=> |#{returned_str}|"].colorize(:magenta)

          class_method = ColorizedString["#{value.klass}##{value.method_name}"].colorize(:green)
          full_path = ColorizedString["#{value.path}:#{value.lineno}"].colorize(:blue)
          line_idx = ColorizedString["[#{line_idx}] "].colorize(:red)
          var_str = vars.map do |_, val|
            var_name = val[:name]
            var_value = val[:value]
            var_type = val[:type]
            "#{var_type} #{var_name} => (#{var_value})"
          end.join(', ')
          "#{'  ' * depth}#{line_idx}#{class_method}(#{var_str}) #{returned} -> #{full_path}\n"
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
rshade-0.2.2 lib/rshade/formatter/trace/string.rb
rshade-0.2.1 lib/rshade/formatter/trace/string.rb
rshade-0.2.0 lib/rshade/formatter/trace/string.rb
rshade-1.10.0 lib/rshade/formatter/trace/string.rb