Class: PrettyDebug

Inherits:
Object show all
Defined in:
lib/pretty_debug.rb

Constant Summary collapse

Hook =
%w[
  at_exit
  set_trace_func
  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
  prepend
  append_features
  extend_features
  prepend_features
]

Class Method Summary collapse

Class Method Details

.backtrace_locations(e) ⇒ Object



137
138
139
140
# File 'lib/pretty_debug.rb', line 137

def self.backtrace_locations e
  e.complement_backtrace_locations
  PrettyArray.new(beautify(e.backtrace_locations))
end

.beautify(a) ⇒ Object



168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
# File 'lib/pretty_debug.rb', line 168

def self.beautify a
  a
  .map{|l| [l.realpath, 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
end

.caller_locationsObject



141
142
143
# File 'lib/pretty_debug.rb', line 141

def self.caller_locations
  PrettyArray.new(beautify(Kernel.caller_locations))
end

.format(&pr) ⇒ Object



132
# File 'lib/pretty_debug.rb', line 132

def self.format ≺ @format = pr end

.message(e) ⇒ Object



133
134
135
136
# File 'lib/pretty_debug.rb', line 133

def self.message e
  e.complement_backtrace_locations
  e.message.to_s.dup.tap{|s| s[0] = s[0].upcase unless s.empty?}.sub(/(?<=[^.])\z/, ".".freeze)
end

.reject(&pr) ⇒ Object



124
125
126
127
# File 'lib/pretty_debug.rb', line 124

def self.reject &pr
  @reject = pr
  @select = ->f, m{true}
end

.select(&pr) ⇒ Object



128
129
130
131
# File 'lib/pretty_debug.rb', line 128

def self.select &pr
  @select = pr
  @reject = ->f, m{false}
end