Class: PryMoves::BacktraceBuilder
- Inherits:
-
Object
- Object
- PryMoves::BacktraceBuilder
- Defined in:
- lib/pry-moves/backtrace_builder.rb
Instance Attribute Summary collapse
-
#colorize ⇒ Object
writeonly
Sets the attribute colorize.
-
#filter ⇒ Object
writeonly
Sets the attribute filter.
-
#lines_numbers ⇒ Object
writeonly
Sets the attribute lines_numbers.
Instance Method Summary collapse
- #build_backtrace ⇒ Object
-
#initialize(frame_manager) ⇒ BacktraceBuilder
constructor
A new instance of BacktraceBuilder.
- #objects_of_class(class_pattern) ⇒ Object
Constructor Details
#initialize(frame_manager) ⇒ BacktraceBuilder
Returns a new instance of BacktraceBuilder.
5 6 7 8 9 10 11 |
# File 'lib/pry-moves/backtrace_builder.rb', line 5 def initialize frame_manager @frame_manager = frame_manager @filter = nil @colorize = false @lines_numbers = true @formatter = PryMoves::Formatter.new end |
Instance Attribute Details
#colorize=(value) ⇒ Object (writeonly)
Sets the attribute colorize
3 4 5 |
# File 'lib/pry-moves/backtrace_builder.rb', line 3 def colorize=(value) @colorize = value end |
#filter=(value) ⇒ Object (writeonly)
Sets the attribute filter
3 4 5 |
# File 'lib/pry-moves/backtrace_builder.rb', line 3 def filter=(value) @filter = value end |
#lines_numbers=(value) ⇒ Object (writeonly)
Sets the attribute lines_numbers
3 4 5 |
# File 'lib/pry-moves/backtrace_builder.rb', line 3 def lines_numbers=(value) @lines_numbers = value end |
Instance Method Details
#build_backtrace ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/pry-moves/backtrace_builder.rb', line 13 def build_backtrace show_all = %w(a all).include?(@filter) show_vapid = %w(+ hidden vapid).include?(@filter) || show_all result = [] current_object, vapid_count = nil, 0 recursion = PryMoves::Recursion::Holder.new @frame_manager.bindings.reverse.each do |binding| next if !show_all and binding.eval('__FILE__').match PryMoves::Backtrace::filter if !show_vapid and binding.hidden vapid_count += 1 next end if vapid_count > 0 result << "👽 frames hidden: #{vapid_count}" vapid_count = 0 end obj, debug_snapshot = binding.eval '[self, (debug_snapshot rescue nil)]' # Comparison of objects directly may raise exception if current_object.object_id != obj.object_id result << "#{debug_snapshot || @formatter.format_obj(obj)}" current_object = obj end file, line = binding.eval('[__FILE__, __LINE__]') recursion.track file, line, result.count, binding.index unless show_vapid result << build_line(binding, file, line) end # recursion.each { |t| t.apply result } result << "👽 frames hidden: #{vapid_count}" if vapid_count > 0 result end |
#objects_of_class(class_pattern) ⇒ Object
53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/pry-moves/backtrace_builder.rb', line 53 def objects_of_class class_pattern result = [] last_object = nil class_pattern.downcase! @frame_manager.bindings.reverse.each do |binding| obj = binding.eval 'self' next if !obj.class.to_s.downcase.include?(class_pattern) || last_object.object_id == obj.object_id result << "#{line_num binding}#{@formatter.format_obj(obj)}" last_object = obj end result end |