1
0
Fork 0
mirror of https://github.com/pry/pry.git synced 2022-11-09 12:35:05 -05:00
pry--pry/lib/pry/commands/wtf.rb
Kyrylo Silin 256f35422a Prettify command descriptions, switches and stuff
Wrap command descriptions to 80 characters. Convert some string options
to symbols (where possible). Align options in code. Remove dots in the
end of switch descriptions.

Signed-off-by: Kyrylo Silin <kyrylosilin@gmail.com>
2013-01-09 22:23:19 +02:00

57 lines
1.3 KiB
Ruby

class Pry
class Command::Wtf < Pry::ClassCommand
match /wtf([?!]*)/
group 'Context'
description 'Show the backtrace of the most recent exception.'
options :listing => 'wtf?'
banner <<-'BANNER'
Usage: wtf[?|!]
Show's a few lines of the backtrace of the most recent exception (also available
as `_ex_.backtrace`). If you want to see more lines, add more question marks or
exclamation marks.
wtf?
wtf?!???!?!?
# To see the entire backtrace, pass the `-v` or `--verbose` flag.
wtf -v
BANNER
def options(opt)
opt.on :v, :verbose, "Show the full backtrace"
end
def process
raise Pry::CommandError, "No most-recent exception" unless exception
output.puts "#{text.bold('Exception:')} #{exception.class}: #{exception}\n--"
if opts.verbose?
output.puts with_line_numbers(backtrace)
else
output.puts with_line_numbers(backtrace.first(size_of_backtrace))
end
end
private
def exception
_pry_.last_exception
end
def with_line_numbers(bt)
Pry::Code.new(bt, 0, :text).with_line_numbers.to_s
end
def backtrace
exception.backtrace
end
def size_of_backtrace
[captures[0].size, 0.5].max * 10
end
end
Pry::Commands.add_command(Pry::Command::Wtf)
end