pry 0.9.12.2 → 0.14.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/CHANGELOG.md +1141 -0
- data/LICENSE +2 -2
- data/README.md +466 -0
- data/bin/pry +4 -7
- data/lib/pry/basic_object.rb +10 -0
- data/lib/pry/block_command.rb +22 -0
- data/lib/pry/class_command.rb +194 -0
- data/lib/pry/cli.rb +97 -92
- data/lib/pry/code/code_file.rb +114 -0
- data/lib/pry/code/code_range.rb +7 -4
- data/lib/pry/code/loc.rb +27 -14
- data/lib/pry/code.rb +62 -90
- data/lib/pry/code_object.rb +83 -39
- data/lib/pry/color_printer.rb +66 -0
- data/lib/pry/command.rb +202 -371
- data/lib/pry/command_set.rb +151 -133
- data/lib/pry/command_state.rb +31 -0
- data/lib/pry/commands/amend_line.rb +86 -82
- data/lib/pry/commands/bang.rb +18 -14
- data/lib/pry/commands/bang_pry.rb +15 -11
- data/lib/pry/commands/cat/abstract_formatter.rb +23 -18
- data/lib/pry/commands/cat/exception_formatter.rb +85 -73
- data/lib/pry/commands/cat/file_formatter.rb +56 -63
- data/lib/pry/commands/cat/input_expression_formatter.rb +35 -30
- data/lib/pry/commands/cat.rb +64 -47
- data/lib/pry/commands/cd.rb +42 -26
- data/lib/pry/commands/change_inspector.rb +34 -0
- data/lib/pry/commands/change_prompt.rb +51 -0
- data/lib/pry/commands/clear_screen.rb +20 -0
- data/lib/pry/commands/code_collector.rb +148 -131
- data/lib/pry/commands/disable_pry.rb +23 -19
- data/lib/pry/commands/easter_eggs.rb +23 -34
- data/lib/pry/commands/edit/exception_patcher.rb +21 -17
- data/lib/pry/commands/edit/file_and_line_locator.rb +33 -24
- data/lib/pry/commands/edit.rb +183 -167
- data/lib/pry/commands/exit.rb +40 -35
- data/lib/pry/commands/exit_all.rb +24 -20
- data/lib/pry/commands/exit_program.rb +20 -17
- data/lib/pry/commands/find_method.rb +167 -167
- data/lib/pry/commands/fix_indent.rb +16 -12
- data/lib/pry/commands/help.rb +140 -133
- data/lib/pry/commands/hist.rb +153 -132
- data/lib/pry/commands/import_set.rb +20 -15
- data/lib/pry/commands/jump_to.rb +25 -21
- data/lib/pry/commands/list_inspectors.rb +42 -0
- data/lib/pry/commands/ls/constants.rb +75 -0
- data/lib/pry/commands/ls/formatter.rb +55 -0
- data/lib/pry/commands/ls/globals.rb +50 -0
- data/lib/pry/commands/ls/grep.rb +23 -0
- data/lib/pry/commands/ls/instance_vars.rb +40 -0
- data/lib/pry/commands/ls/interrogatable.rb +24 -0
- data/lib/pry/commands/ls/jruby_hacks.rb +55 -0
- data/lib/pry/commands/ls/local_names.rb +37 -0
- data/lib/pry/commands/ls/local_vars.rb +47 -0
- data/lib/pry/commands/ls/ls_entity.rb +65 -0
- data/lib/pry/commands/ls/methods.rb +55 -0
- data/lib/pry/commands/ls/methods_helper.rb +50 -0
- data/lib/pry/commands/ls/self_methods.rb +34 -0
- data/lib/pry/commands/ls.rb +100 -303
- data/lib/pry/commands/nesting.rb +21 -17
- data/lib/pry/commands/play.rb +93 -49
- data/lib/pry/commands/pry_backtrace.rb +22 -18
- data/lib/pry/commands/pry_version.rb +15 -11
- data/lib/pry/commands/raise_up.rb +33 -27
- data/lib/pry/commands/reload_code.rb +57 -48
- data/lib/pry/commands/reset.rb +16 -12
- data/lib/pry/commands/ri.rb +57 -38
- data/lib/pry/commands/save_file.rb +45 -43
- data/lib/pry/commands/shell_command.rb +66 -34
- data/lib/pry/commands/shell_mode.rb +22 -20
- data/lib/pry/commands/show_doc.rb +80 -65
- data/lib/pry/commands/show_info.rb +193 -159
- data/lib/pry/commands/show_input.rb +16 -11
- data/lib/pry/commands/show_source.rb +113 -33
- data/lib/pry/commands/stat.rb +35 -31
- data/lib/pry/commands/switch_to.rb +21 -15
- data/lib/pry/commands/toggle_color.rb +21 -13
- data/lib/pry/commands/watch_expression/expression.rb +43 -0
- data/lib/pry/commands/watch_expression.rb +110 -0
- data/lib/pry/commands/whereami.rb +157 -134
- data/lib/pry/commands/wtf.rb +78 -40
- data/lib/pry/config/attributable.rb +22 -0
- data/lib/pry/config/lazy_value.rb +29 -0
- data/lib/pry/config/memoized_value.rb +34 -0
- data/lib/pry/config/value.rb +24 -0
- data/lib/pry/config.rb +290 -220
- data/lib/pry/control_d_handler.rb +28 -0
- data/lib/pry/core_extensions.rb +50 -27
- data/lib/pry/editor.rb +130 -102
- data/lib/pry/env.rb +18 -0
- data/lib/pry/exception_handler.rb +43 -0
- data/lib/pry/exceptions.rb +73 -0
- data/lib/pry/forwardable.rb +27 -0
- data/lib/pry/helpers/base_helpers.rb +22 -151
- data/lib/pry/helpers/command_helpers.rb +55 -63
- data/lib/pry/helpers/documentation_helpers.rb +21 -13
- data/lib/pry/helpers/options_helpers.rb +15 -8
- data/lib/pry/helpers/platform.rb +55 -0
- data/lib/pry/helpers/table.rb +44 -32
- data/lib/pry/helpers/text.rb +96 -86
- data/lib/pry/helpers.rb +3 -0
- data/lib/pry/history.rb +101 -70
- data/lib/pry/hooks.rb +67 -137
- data/lib/pry/indent.rb +79 -73
- data/lib/pry/input_completer.rb +283 -0
- data/lib/pry/input_lock.rb +129 -0
- data/lib/pry/inspector.rb +39 -0
- data/lib/pry/last_exception.rb +61 -0
- data/lib/pry/method/disowned.rb +19 -5
- data/lib/pry/{commands/edit/method_patcher.rb → method/patcher.rb} +51 -42
- data/lib/pry/method/weird_method_locator.rb +80 -44
- data/lib/pry/method.rb +225 -176
- data/lib/pry/object_path.rb +91 -0
- data/lib/pry/output.rb +136 -0
- data/lib/pry/pager.rb +227 -68
- data/lib/pry/prompt.rb +214 -0
- data/lib/pry/pry_class.rb +216 -289
- data/lib/pry/pry_instance.rb +438 -500
- data/lib/pry/repl.rb +256 -0
- data/lib/pry/repl_file_loader.rb +34 -35
- data/lib/pry/ring.rb +89 -0
- data/lib/pry/slop/LICENSE +20 -0
- data/lib/pry/slop/commands.rb +190 -0
- data/lib/pry/slop/option.rb +210 -0
- data/lib/pry/slop.rb +672 -0
- data/lib/pry/syntax_highlighter.rb +26 -0
- data/lib/pry/system_command_handler.rb +17 -0
- data/lib/pry/testable/evalable.rb +24 -0
- data/lib/pry/testable/mockable.rb +22 -0
- data/lib/pry/testable/pry_tester.rb +88 -0
- data/lib/pry/testable/utility.rb +34 -0
- data/lib/pry/testable/variables.rb +52 -0
- data/lib/pry/testable.rb +68 -0
- data/lib/pry/version.rb +3 -1
- data/lib/pry/warning.rb +20 -0
- data/lib/pry/{module_candidate.rb → wrapped_module/candidate.rb} +36 -43
- data/lib/pry/wrapped_module.rb +102 -103
- data/lib/pry.rb +135 -261
- metadata +94 -283
- data/.document +0 -2
- data/.gitignore +0 -16
- data/.travis.yml +0 -21
- data/.yardopts +0 -1
- data/CHANGELOG +0 -534
- data/CONTRIBUTORS +0 -55
- data/Gemfile +0 -9
- data/Guardfile +0 -62
- data/README.markdown +0 -400
- data/Rakefile +0 -140
- data/TODO +0 -117
- data/lib/pry/commands/disabled_commands.rb +0 -2
- data/lib/pry/commands/gem_cd.rb +0 -26
- data/lib/pry/commands/gem_install.rb +0 -29
- data/lib/pry/commands/gem_list.rb +0 -33
- data/lib/pry/commands/gem_open.rb +0 -29
- data/lib/pry/commands/gist.rb +0 -102
- data/lib/pry/commands/install_command.rb +0 -51
- data/lib/pry/commands/simple_prompt.rb +0 -22
- data/lib/pry/commands.rb +0 -6
- data/lib/pry/completion.rb +0 -304
- data/lib/pry/custom_completions.rb +0 -6
- data/lib/pry/history_array.rb +0 -116
- data/lib/pry/plugins.rb +0 -103
- data/lib/pry/rbx_method.rb +0 -13
- data/lib/pry/rbx_path.rb +0 -22
- data/lib/pry/rubygem.rb +0 -74
- data/lib/pry/terminal.rb +0 -78
- data/lib/pry/test/helper.rb +0 -185
- data/man/pry.1 +0 -195
- data/man/pry.1.html +0 -204
- data/man/pry.1.ronn +0 -141
- data/pry.gemspec +0 -30
- data/spec/Procfile +0 -3
- data/spec/cli_spec.rb +0 -78
- data/spec/code_object_spec.rb +0 -277
- data/spec/code_spec.rb +0 -219
- data/spec/command_helpers_spec.rb +0 -29
- data/spec/command_integration_spec.rb +0 -644
- data/spec/command_set_spec.rb +0 -627
- data/spec/command_spec.rb +0 -821
- data/spec/commands/amend_line_spec.rb +0 -247
- data/spec/commands/bang_spec.rb +0 -19
- data/spec/commands/cat_spec.rb +0 -164
- data/spec/commands/cd_spec.rb +0 -250
- data/spec/commands/disable_pry_spec.rb +0 -25
- data/spec/commands/edit_spec.rb +0 -727
- data/spec/commands/exit_all_spec.rb +0 -34
- data/spec/commands/exit_program_spec.rb +0 -19
- data/spec/commands/exit_spec.rb +0 -34
- data/spec/commands/find_method_spec.rb +0 -70
- data/spec/commands/gem_list_spec.rb +0 -26
- data/spec/commands/gist_spec.rb +0 -79
- data/spec/commands/help_spec.rb +0 -56
- data/spec/commands/hist_spec.rb +0 -181
- data/spec/commands/jump_to_spec.rb +0 -15
- data/spec/commands/ls_spec.rb +0 -181
- data/spec/commands/play_spec.rb +0 -140
- data/spec/commands/raise_up_spec.rb +0 -56
- data/spec/commands/save_file_spec.rb +0 -177
- data/spec/commands/show_doc_spec.rb +0 -510
- data/spec/commands/show_input_spec.rb +0 -17
- data/spec/commands/show_source_spec.rb +0 -782
- data/spec/commands/whereami_spec.rb +0 -203
- data/spec/completion_spec.rb +0 -239
- data/spec/control_d_handler_spec.rb +0 -58
- data/spec/documentation_helper_spec.rb +0 -73
- data/spec/editor_spec.rb +0 -79
- data/spec/exception_whitelist_spec.rb +0 -21
- data/spec/fixtures/candidate_helper1.rb +0 -11
- data/spec/fixtures/candidate_helper2.rb +0 -8
- data/spec/fixtures/example.erb +0 -5
- data/spec/fixtures/example_nesting.rb +0 -33
- data/spec/fixtures/show_source_doc_examples.rb +0 -15
- data/spec/fixtures/testrc +0 -2
- data/spec/fixtures/testrcbad +0 -2
- data/spec/fixtures/whereami_helper.rb +0 -6
- data/spec/helper.rb +0 -34
- data/spec/helpers/bacon.rb +0 -86
- data/spec/helpers/mock_pry.rb +0 -43
- data/spec/helpers/table_spec.rb +0 -105
- data/spec/history_array_spec.rb +0 -67
- data/spec/hooks_spec.rb +0 -522
- data/spec/indent_spec.rb +0 -301
- data/spec/input_stack_spec.rb +0 -90
- data/spec/method_spec.rb +0 -482
- data/spec/prompt_spec.rb +0 -60
- data/spec/pry_defaults_spec.rb +0 -419
- data/spec/pry_history_spec.rb +0 -99
- data/spec/pry_output_spec.rb +0 -95
- data/spec/pry_spec.rb +0 -504
- data/spec/run_command_spec.rb +0 -25
- data/spec/sticky_locals_spec.rb +0 -157
- data/spec/syntax_checking_spec.rb +0 -81
- data/spec/wrapped_module_spec.rb +0 -261
- data/wiki/Customizing-pry.md +0 -397
- data/wiki/Home.md +0 -4
data/lib/pry/commands/wtf.rb
CHANGED
@@ -1,57 +1,95 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
class Pry
|
2
|
-
class Command
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
4
|
+
class Command
|
5
|
+
class Wtf < Pry::ClassCommand
|
6
|
+
match(/wtf([?!]*)/)
|
7
|
+
group 'Context'
|
8
|
+
description 'Show the backtrace of the most recent exception.'
|
9
|
+
options listing: 'wtf?'
|
7
10
|
|
8
|
-
|
9
|
-
|
11
|
+
banner <<-'BANNER'
|
12
|
+
Usage: wtf[?|!]
|
10
13
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
+
Shows a few lines of the backtrace of the most recent exception (also available
|
15
|
+
as `_ex_.backtrace`). If you want to see more lines, add more question marks or
|
16
|
+
exclamation marks.
|
14
17
|
|
15
|
-
|
16
|
-
|
18
|
+
wtf?
|
19
|
+
wtf?!???!?!?
|
17
20
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
+
# To see the entire backtrace, pass the `-v` or `--verbose` flag.
|
22
|
+
wtf -v
|
23
|
+
BANNER
|
21
24
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
+
RUBY_FRAME_PATTERN = /\A(?<file>(.+)):(?<line>(\d+))/.freeze
|
26
|
+
|
27
|
+
def options(opt)
|
28
|
+
opt.on :v, :verbose, "Show the full backtrace"
|
29
|
+
opt.on :c, :code, "Show code corresponding to the backtrace frame"
|
30
|
+
end
|
25
31
|
|
26
|
-
|
27
|
-
|
32
|
+
def process
|
33
|
+
unless pry_instance.last_exception
|
34
|
+
raise Pry::CommandError, "No most-recent exception"
|
35
|
+
end
|
28
36
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
37
|
+
text = ''.dup
|
38
|
+
unwind_exceptions.each_with_index do |exception, i|
|
39
|
+
title = (i == 0 ? 'Exception' : 'Caused by')
|
40
|
+
text << format_header(title, exception)
|
41
|
+
text << format_backtrace(exception.backtrace)
|
42
|
+
end
|
43
|
+
output.puts(text)
|
34
44
|
end
|
35
|
-
end
|
36
45
|
|
37
|
-
|
46
|
+
private
|
38
47
|
|
39
|
-
|
40
|
-
|
41
|
-
|
48
|
+
def unwind_exceptions
|
49
|
+
exception_list = []
|
50
|
+
exception = pry_instance.last_exception
|
42
51
|
|
43
|
-
|
44
|
-
|
45
|
-
|
52
|
+
while exception
|
53
|
+
exception_list << exception
|
54
|
+
exception = (exception.cause if exception.respond_to?(:cause))
|
55
|
+
end
|
56
|
+
|
57
|
+
exception_list
|
58
|
+
end
|
59
|
+
|
60
|
+
def format_header(title, exception)
|
61
|
+
"#{bold(title + ':')} #{exception.class}: #{exception}\n--\n"
|
62
|
+
end
|
46
63
|
|
47
|
-
|
48
|
-
|
64
|
+
def format_backtrace(backtrace)
|
65
|
+
lines = trim_backtrace(backtrace).map do |frame|
|
66
|
+
next frame unless opts.code?
|
67
|
+
|
68
|
+
match = frame.match(RUBY_FRAME_PATTERN)
|
69
|
+
code = read_line(match[:file], match[:line].to_i)
|
70
|
+
[bold(frame), code].join("\n")
|
71
|
+
end
|
72
|
+
|
73
|
+
Pry::Code.new(lines.compact, 0, :text).with_line_numbers.to_s
|
74
|
+
end
|
75
|
+
|
76
|
+
def trim_backtrace(backtrace)
|
77
|
+
return backtrace if opts.verbose?
|
78
|
+
|
79
|
+
size_of_backtrace = [captures[0].size, 0.5].max * 10
|
80
|
+
backtrace.first(size_of_backtrace)
|
81
|
+
end
|
82
|
+
|
83
|
+
def read_line(file, line)
|
84
|
+
File.open(file, 'r') do |f|
|
85
|
+
(line - 1).times { f.gets }
|
86
|
+
f.gets
|
87
|
+
end
|
88
|
+
rescue Errno::ENOENT
|
89
|
+
nil
|
90
|
+
end
|
49
91
|
end
|
50
92
|
|
51
|
-
|
52
|
-
[captures[0].size, 0.5].max * 10
|
93
|
+
Pry::Commands.add_command(Pry::Command::Wtf)
|
53
94
|
end
|
54
95
|
end
|
55
|
-
|
56
|
-
Pry::Commands.add_command(Pry::Command::Wtf)
|
57
|
-
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class Pry
|
4
|
+
class Config
|
5
|
+
# Attributable provides the ability to create "attribute"
|
6
|
+
# accessors. Attribute accessors create a standard "attr_writer" and a
|
7
|
+
# customised "attr_reader". This reader is Proc-aware (lazy).
|
8
|
+
#
|
9
|
+
# @since v0.13.0
|
10
|
+
# @api private
|
11
|
+
module Attributable
|
12
|
+
def attribute(attr_name)
|
13
|
+
define_method(attr_name) do
|
14
|
+
value = Config::Value.new(instance_variable_get("@#{attr_name}"))
|
15
|
+
value.call
|
16
|
+
end
|
17
|
+
|
18
|
+
attr_writer(attr_name)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class Pry
|
4
|
+
class Config
|
5
|
+
# LazyValue is a Proc (block) wrapper. It is meant to be used as a
|
6
|
+
# configuration value. Subsequent `#call` calls always evaluate the given
|
7
|
+
# block.
|
8
|
+
#
|
9
|
+
# @example
|
10
|
+
# num = 19
|
11
|
+
# value = Pry::Config::LazyValue.new { num += 1 }
|
12
|
+
# value.foo # => 20
|
13
|
+
# value.foo # => 21
|
14
|
+
# value.foo # => 22
|
15
|
+
#
|
16
|
+
# @api private
|
17
|
+
# @since v0.13.0
|
18
|
+
# @see Pry::Config::MemoizedValue
|
19
|
+
class LazyValue
|
20
|
+
def initialize(&block)
|
21
|
+
@block = block
|
22
|
+
end
|
23
|
+
|
24
|
+
def call
|
25
|
+
@block.call
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class Pry
|
4
|
+
class Config
|
5
|
+
# MemoizedValue is a Proc (block) wrapper. It is meant to be used as a
|
6
|
+
# configuration value. Subsequent `#call` calls return the same memoized
|
7
|
+
# result.
|
8
|
+
#
|
9
|
+
# @example
|
10
|
+
# num = 19
|
11
|
+
# value = Pry::Config::MemoizedValue.new { num += 1 }
|
12
|
+
# value.call # => 20
|
13
|
+
# value.call # => 20
|
14
|
+
# value.call # => 20
|
15
|
+
#
|
16
|
+
# @api private
|
17
|
+
# @since v0.13.0
|
18
|
+
# @see Pry::Config::LazyValue
|
19
|
+
class MemoizedValue
|
20
|
+
def initialize(&block)
|
21
|
+
@block = block
|
22
|
+
@called = false
|
23
|
+
@call = nil
|
24
|
+
end
|
25
|
+
|
26
|
+
def call
|
27
|
+
return @call if @called
|
28
|
+
|
29
|
+
@called = true
|
30
|
+
@call = @block.call
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class Pry
|
4
|
+
class Config
|
5
|
+
# Value holds a value for the given attribute and decides how it should
|
6
|
+
# be read. Procs get called, other values are returned as is.
|
7
|
+
#
|
8
|
+
# @since v0.13.0
|
9
|
+
# @api private
|
10
|
+
class Value
|
11
|
+
def initialize(value)
|
12
|
+
@value = value
|
13
|
+
end
|
14
|
+
|
15
|
+
def call
|
16
|
+
unless [Config::MemoizedValue, Config::LazyValue].include?(@value.class)
|
17
|
+
return @value
|
18
|
+
end
|
19
|
+
|
20
|
+
@value.call
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|