Class: PrettyDebug
Constant Summary collapse
- Hook =
%w[ initialize method_missing singleton_method_added singleton_method_removed singleton_method_undefined respond_to_missing? extended included method_added method_removed method_undefined const_missing inherited intitialize_copy intitialize_clone intitialize_dup ]
Class Method Summary collapse
- .backtrace_locations(e) ⇒ Object
- .beautify(a) ⇒ Object
- .caller_locations ⇒ Object
- .format(&pr) ⇒ Object
- .message(e) ⇒ Object
- .reject(&pr) ⇒ Object
- .select(&pr) ⇒ Object
Class Method Details
.backtrace_locations(e) ⇒ Object
119 120 121 122 |
# File 'lib/pretty_debug.rb', line 119 def self.backtrace_locations e e.complement_backtrace_locations PrettyArray.new(beautify(e.backtrace_locations)) end |
.beautify(a) ⇒ Object
144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 |
# File 'lib/pretty_debug.rb', line 144 def self.beautify a a = a .map{|l| [l.absolute_path, l.lineno, l.label]} .transpose.tap do |_, _, ms| ms.map! do |m| case m when *Hook then "(#{m})" when /\A(rescue in )?block( .*)? in / then "(entered block)".freeze when /\Arescue in / then "".freeze else m end end ms[-1] = "".freeze; ms.rotate!(-1) end.transpose a.reject!{|f, l, m| @reject.call(f, m)} rescue nil a.select!{|f, l, m| @select.call(f, m)} rescue nil a end |
.caller_locations ⇒ Object
123 124 125 |
# File 'lib/pretty_debug.rb', line 123 def self.caller_locations PrettyArray.new(beautify(Kernel.caller_locations)) end |
.format(&pr) ⇒ Object
108 |
# File 'lib/pretty_debug.rb', line 108 def self.format ≺ @format = pr end |
.message(e) ⇒ Object
115 116 117 118 |
# File 'lib/pretty_debug.rb', line 115 def self. e e.complement_backtrace_locations e..dup.tap{|s| s[0] = s[0].upcase unless s.empty?}.sub(/(?<=[^.])\z/, ".".freeze) end |
.reject(&pr) ⇒ Object
100 101 102 103 |
# File 'lib/pretty_debug.rb', line 100 def self.reject &pr reject = @reject @reject = ->(*args){reject.call(*args) or pr.call(*args)} end |
.select(&pr) ⇒ Object
104 105 106 107 |
# File 'lib/pretty_debug.rb', line 104 def self.select &pr select = @select @select = ->(*args){select.call(*args) or pr.call(*args)} end |