class Pry::Command::Cat::ExceptionFormatter
Attributes
_pry_[RW]
ex[RW]
opts[RW]
Public Class Methods
new(exception, _pry_, opts)
click to toggle source
# File lib/pry/commands/cat/exception_formatter.rb, line 8 def initialize(exception, _pry_, opts) @ex = exception @opts = opts @_pry_ = _pry_ end
Public Instance Methods
format()
click to toggle source
# File lib/pry/commands/cat/exception_formatter.rb, line 14 def format check_for_errors set_file_and_dir_locals(backtrace_file, _pry_, _pry_.current_context) code = decorate(Pry::Code.from_file(backtrace_file). between(*start_and_end_line_for_code_window). with_marker(backtrace_line)).to_s "#{header}#{code}" end
Private Instance Methods
backtrace_file()
click to toggle source
# File lib/pry/commands/cat/exception_formatter.rb, line 46 def backtrace_file file = Array(ex.bt_source_location_for(backtrace_level)).first (file && RbxPath.is_core_path?(file)) ? RbxPath.convert_path_to_full(file) : file end
backtrace_level()
click to toggle source
# File lib/pry/commands/cat/exception_formatter.rb, line 29 def backtrace_level return @backtrace_level if @backtrace_level bl = if opts[:ex].nil? ex.bt_index else ex.bt_index = absolute_index_number(opts[:ex], ex.backtrace.size) end increment_backtrace_level @backtrace_level = bl end
backtrace_line()
click to toggle source
# File lib/pry/commands/cat/exception_formatter.rb, line 51 def backtrace_line Array(ex.bt_source_location_for(backtrace_level)).last end
check_for_errors()
click to toggle source
# File lib/pry/commands/cat/exception_formatter.rb, line 55 def check_for_errors raise CommandError, "No exception found." unless ex raise CommandError, "The given backtrace level is out of bounds." unless backtrace_file end
code_window_size()
click to toggle source
# File lib/pry/commands/cat/exception_formatter.rb, line 25 def code_window_size Pry.config.default_window_size || 5 end
header()
click to toggle source
# File lib/pry/commands/cat/exception_formatter.rb, line 67 def header unindent %Q{ #{Helpers::Text.bold 'Exception:'} #{ex.class}: #{ex.message} -- #{Helpers::Text.bold('From:')} #{backtrace_file} @ line #{backtrace_line} @ #{Helpers::Text.bold("level: #{backtrace_level}")} of backtrace (of #{ex.backtrace.size - 1}). } end
increment_backtrace_level()
click to toggle source
# File lib/pry/commands/cat/exception_formatter.rb, line 42 def increment_backtrace_level ex.inc_bt_index end
start_and_end_line_for_code_window()
click to toggle source
# File lib/pry/commands/cat/exception_formatter.rb, line 60 def start_and_end_line_for_code_window start_line = backtrace_line - code_window_size start_line = 1 if start_line < 1 [start_line, backtrace_line + code_window_size] end