pry 0.9.12.6 → 0.10.0.pre2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +702 -0
- data/LICENSE +2 -2
- data/{README.markdown → README.md} +37 -31
- data/lib/pry.rb +38 -151
- data/lib/pry/cli.rb +35 -17
- data/lib/pry/code.rb +24 -63
- data/lib/pry/code/code_file.rb +103 -0
- data/lib/pry/code/code_range.rb +2 -1
- data/lib/pry/code/loc.rb +2 -2
- data/lib/pry/code_object.rb +40 -21
- data/lib/pry/color_printer.rb +55 -0
- data/lib/pry/command.rb +12 -9
- data/lib/pry/command_set.rb +81 -38
- data/lib/pry/commands.rb +1 -1
- data/lib/pry/commands/amend_line.rb +2 -2
- data/lib/pry/commands/bang.rb +1 -1
- data/lib/pry/commands/cat.rb +11 -2
- data/lib/pry/commands/cat/exception_formatter.rb +5 -6
- data/lib/pry/commands/cat/file_formatter.rb +15 -32
- data/lib/pry/commands/cd.rb +14 -3
- data/lib/pry/commands/change_inspector.rb +27 -0
- data/lib/pry/commands/change_prompt.rb +26 -0
- data/lib/pry/commands/code_collector.rb +4 -4
- data/lib/pry/commands/easter_eggs.rb +3 -3
- data/lib/pry/commands/edit.rb +10 -22
- data/lib/pry/commands/edit/exception_patcher.rb +2 -2
- data/lib/pry/commands/edit/file_and_line_locator.rb +0 -2
- data/lib/pry/commands/exit_program.rb +0 -1
- data/lib/pry/commands/find_method.rb +16 -22
- data/lib/pry/commands/gem_install.rb +5 -2
- data/lib/pry/commands/gem_open.rb +1 -1
- data/lib/pry/commands/gist.rb +10 -11
- data/lib/pry/commands/help.rb +14 -14
- data/lib/pry/commands/hist.rb +27 -8
- data/lib/pry/commands/install_command.rb +14 -12
- data/lib/pry/commands/list_inspectors.rb +35 -0
- data/lib/pry/commands/list_prompts.rb +35 -0
- data/lib/pry/commands/ls.rb +72 -296
- data/lib/pry/commands/ls/constants.rb +47 -0
- data/lib/pry/commands/ls/formatter.rb +49 -0
- data/lib/pry/commands/ls/globals.rb +48 -0
- data/lib/pry/commands/ls/grep.rb +21 -0
- data/lib/pry/commands/ls/instance_vars.rb +39 -0
- data/lib/pry/commands/ls/interrogatable.rb +18 -0
- data/lib/pry/commands/ls/jruby_hacks.rb +49 -0
- data/lib/pry/commands/ls/local_names.rb +35 -0
- data/lib/pry/commands/ls/local_vars.rb +39 -0
- data/lib/pry/commands/ls/ls_entity.rb +70 -0
- data/lib/pry/commands/ls/methods.rb +57 -0
- data/lib/pry/commands/ls/methods_helper.rb +46 -0
- data/lib/pry/commands/ls/self_methods.rb +32 -0
- data/lib/pry/commands/play.rb +44 -10
- data/lib/pry/commands/pry_backtrace.rb +1 -2
- data/lib/pry/commands/raise_up.rb +2 -2
- data/lib/pry/commands/reload_code.rb +16 -19
- data/lib/pry/commands/ri.rb +7 -3
- data/lib/pry/commands/shell_command.rb +18 -13
- data/lib/pry/commands/shell_mode.rb +2 -4
- data/lib/pry/commands/show_doc.rb +5 -0
- data/lib/pry/commands/show_info.rb +8 -13
- data/lib/pry/commands/show_source.rb +15 -3
- data/lib/pry/commands/simple_prompt.rb +1 -1
- data/lib/pry/commands/toggle_color.rb +8 -4
- data/lib/pry/commands/watch_expression.rb +105 -0
- data/lib/pry/commands/watch_expression/expression.rb +38 -0
- data/lib/pry/commands/whereami.rb +18 -10
- data/lib/pry/commands/wtf.rb +3 -3
- data/lib/pry/config.rb +20 -254
- data/lib/pry/config/behavior.rb +139 -0
- data/lib/pry/config/convenience.rb +26 -0
- data/lib/pry/config/default.rb +165 -0
- data/lib/pry/core_extensions.rb +31 -21
- data/lib/pry/editor.rb +107 -103
- data/lib/pry/exceptions.rb +77 -0
- data/lib/pry/helpers/base_helpers.rb +22 -109
- data/lib/pry/helpers/command_helpers.rb +10 -8
- data/lib/pry/helpers/documentation_helpers.rb +1 -2
- data/lib/pry/helpers/text.rb +4 -5
- data/lib/pry/history.rb +46 -45
- data/lib/pry/history_array.rb +6 -1
- data/lib/pry/hooks.rb +9 -29
- data/lib/pry/indent.rb +6 -6
- data/lib/pry/input_completer.rb +242 -0
- data/lib/pry/input_lock.rb +132 -0
- data/lib/pry/inspector.rb +27 -0
- data/lib/pry/last_exception.rb +61 -0
- data/lib/pry/method.rb +82 -87
- data/lib/pry/{commands/edit/method_patcher.rb → method/patcher.rb} +41 -38
- data/lib/pry/module_candidate.rb +4 -14
- data/lib/pry/object_path.rb +82 -0
- data/lib/pry/output.rb +50 -0
- data/lib/pry/pager.rb +191 -47
- data/lib/pry/plugins.rb +1 -1
- data/lib/pry/prompt.rb +26 -0
- data/lib/pry/pry_class.rb +149 -230
- data/lib/pry/pry_instance.rb +302 -413
- data/lib/pry/rbx_path.rb +1 -1
- data/lib/pry/repl.rb +202 -0
- data/lib/pry/repl_file_loader.rb +20 -26
- data/lib/pry/rubygem.rb +13 -5
- data/lib/pry/terminal.rb +2 -1
- data/lib/pry/test/helper.rb +26 -41
- data/lib/pry/version.rb +1 -1
- data/lib/pry/wrapped_module.rb +45 -59
- metadata +61 -224
- data/.document +0 -2
- data/.gitignore +0 -16
- data/.travis.yml +0 -25
- data/.yardopts +0 -1
- data/CHANGELOG +0 -534
- data/CONTRIBUTORS +0 -55
- data/Gemfile +0 -12
- data/Rakefile +0 -140
- data/TODO +0 -117
- data/lib/pry/completion.rb +0 -321
- data/lib/pry/custom_completions.rb +0 -6
- data/lib/pry/rbx_method.rb +0 -13
- data/man/pry.1 +0 -195
- data/man/pry.1.html +0 -204
- data/man/pry.1.ronn +0 -141
- data/pry.gemspec +0 -29
- 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 -241
- 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 -515
- 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
@@ -1,31 +1,32 @@
|
|
1
1
|
class Pry
|
2
2
|
class Command::Cat
|
3
3
|
class FileFormatter < AbstractFormatter
|
4
|
-
|
5
|
-
|
6
|
-
|
4
|
+
attr_reader :file_with_embedded_line
|
5
|
+
attr_reader :opts
|
6
|
+
attr_reader :_pry_
|
7
7
|
|
8
8
|
def initialize(file_with_embedded_line, _pry_, opts)
|
9
9
|
@file_with_embedded_line = file_with_embedded_line
|
10
10
|
@opts = opts
|
11
11
|
@_pry_ = _pry_
|
12
|
+
@code_from_file = Pry::Code.from_file(file_name)
|
12
13
|
end
|
13
14
|
|
14
15
|
def format
|
15
16
|
raise CommandError, "Must provide a filename, --in, or --ex." if !file_with_embedded_line
|
16
17
|
|
17
18
|
set_file_and_dir_locals(file_name, _pry_, _pry_.current_context)
|
18
|
-
decorate(
|
19
|
+
decorate(@code_from_file)
|
19
20
|
end
|
20
21
|
|
21
|
-
private
|
22
|
-
|
23
22
|
def file_and_line
|
24
|
-
file_name, line_num = file_with_embedded_line.split(
|
23
|
+
file_name, line_num = file_with_embedded_line.split(/:(?!\/|\\)/)
|
25
24
|
|
26
|
-
[
|
25
|
+
[file_name, line_num ? line_num.to_i : nil]
|
27
26
|
end
|
28
27
|
|
28
|
+
private
|
29
|
+
|
29
30
|
def file_name
|
30
31
|
file_and_line.first
|
31
32
|
end
|
@@ -35,7 +36,7 @@ class Pry
|
|
35
36
|
end
|
36
37
|
|
37
38
|
def code_window_size
|
38
|
-
|
39
|
+
_pry_.config.default_window_size || 7
|
39
40
|
end
|
40
41
|
|
41
42
|
def decorate(content)
|
@@ -47,36 +48,18 @@ class Pry
|
|
47
48
|
end
|
48
49
|
|
49
50
|
def detect_code_type_from_file(file_name)
|
50
|
-
|
51
|
+
code_type = @code_from_file.code_type
|
51
52
|
|
52
|
-
if
|
53
|
-
|
54
|
-
when "py"
|
55
|
-
:python
|
56
|
-
when "rb", "gemspec", "rakefile", "ru", "pryrc", "irbrc"
|
57
|
-
:ruby
|
58
|
-
when "js"
|
59
|
-
return :javascript
|
60
|
-
when "yml", "prytheme"
|
61
|
-
:yaml
|
62
|
-
when "groovy"
|
63
|
-
:groovy
|
64
|
-
when "c"
|
65
|
-
:c
|
66
|
-
when "cpp"
|
67
|
-
:cpp
|
68
|
-
when "java"
|
69
|
-
:java
|
70
|
-
else
|
71
|
-
:text
|
72
|
-
end
|
73
|
-
else
|
53
|
+
if code_type == :unknown
|
54
|
+
name, ext = File.basename(file_name).split('.', 2)
|
74
55
|
case name
|
75
56
|
when "Rakefile", "Gemfile"
|
76
57
|
:ruby
|
77
58
|
else
|
78
59
|
:text
|
79
60
|
end
|
61
|
+
else
|
62
|
+
code_type
|
80
63
|
end
|
81
64
|
end
|
82
65
|
end
|
data/lib/pry/commands/cd.rb
CHANGED
@@ -9,7 +9,7 @@ class Pry
|
|
9
9
|
|
10
10
|
Move into new context (object or scope). As in UNIX shells use `cd ..` to go
|
11
11
|
back, `cd /` to return to Pry top-level and `cd -` to toggle between last two
|
12
|
-
scopes. Complex syntax (e.g `cd ../@x
|
12
|
+
scopes. Complex syntax (e.g `cd ../@x/@y`) also supported.
|
13
13
|
|
14
14
|
cd @x
|
15
15
|
cd ..
|
@@ -21,8 +21,19 @@ class Pry
|
|
21
21
|
|
22
22
|
def process
|
23
23
|
state.old_stack ||= []
|
24
|
-
|
25
|
-
|
24
|
+
|
25
|
+
if arg_string.strip == "-"
|
26
|
+
unless state.old_stack.empty?
|
27
|
+
_pry_.binding_stack, state.old_stack = state.old_stack, _pry_.binding_stack
|
28
|
+
end
|
29
|
+
else
|
30
|
+
stack = ObjectPath.new(arg_string, _pry_.binding_stack).resolve
|
31
|
+
|
32
|
+
if stack && stack != _pry_.binding_stack
|
33
|
+
state.old_stack = _pry_.binding_stack
|
34
|
+
_pry_.binding_stack = stack
|
35
|
+
end
|
36
|
+
end
|
26
37
|
end
|
27
38
|
end
|
28
39
|
|
@@ -0,0 +1,27 @@
|
|
1
|
+
class Pry::Command::ChangeInspector < Pry::ClassCommand
|
2
|
+
match 'change-inspector'
|
3
|
+
group 'Input and Output'
|
4
|
+
description 'Change the current inspector proc.'
|
5
|
+
command_options argument_required: true
|
6
|
+
banner <<-BANNER
|
7
|
+
Usage: change-inspector NAME
|
8
|
+
|
9
|
+
Change the proc used to print return values. See list-inspectors for a list
|
10
|
+
of available procs and a short description of what each one does.
|
11
|
+
BANNER
|
12
|
+
|
13
|
+
def process(inspector)
|
14
|
+
if inspector_map.key?(inspector)
|
15
|
+
_pry_.print = inspector_map[inspector][:value]
|
16
|
+
output.puts "Switched to the '#{inspector}' inspector!"
|
17
|
+
else
|
18
|
+
raise Pry::CommandError, "'#{inspector}' isn't a known inspector!"
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
def inspector_map
|
24
|
+
Pry::Inspector::MAP
|
25
|
+
end
|
26
|
+
Pry::Commands.add_command(self)
|
27
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
class Pry::Command::ChangePrompt < Pry::ClassCommand
|
2
|
+
match 'change-prompt'
|
3
|
+
group 'Input and Output'
|
4
|
+
description 'Change the current prompt.'
|
5
|
+
command_options argument_required: true
|
6
|
+
banner <<-BANNER
|
7
|
+
Usage: change-prompt NAME
|
8
|
+
|
9
|
+
Change the current prompt. See list-prompts for a list of available
|
10
|
+
prompts.
|
11
|
+
BANNER
|
12
|
+
|
13
|
+
def process(prompt)
|
14
|
+
if prompt_map.key?(prompt)
|
15
|
+
_pry_.prompt = prompt_map[prompt][:value]
|
16
|
+
else
|
17
|
+
raise Pry::CommandError, "'#{prompt}' isn't a known prompt!"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
private
|
22
|
+
def prompt_map
|
23
|
+
Pry::Prompt::MAP
|
24
|
+
end
|
25
|
+
Pry::Commands.add_command(self)
|
26
|
+
end
|
@@ -2,9 +2,9 @@ class Pry
|
|
2
2
|
class Command::CodeCollector
|
3
3
|
include Helpers::CommandHelpers
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
|
5
|
+
attr_reader :args
|
6
|
+
attr_reader :opts
|
7
|
+
attr_reader :_pry_
|
8
8
|
|
9
9
|
# The name of the explicitly given file (if any).
|
10
10
|
attr_accessor :file
|
@@ -91,7 +91,7 @@ class Pry
|
|
91
91
|
# @return [String]
|
92
92
|
def pry_output_content
|
93
93
|
pry_array_content_as_string(_pry_.output_array, self.class.output_result_ranges) do |v|
|
94
|
-
|
94
|
+
_pry_.config.gist.inspecter.call(v)
|
95
95
|
end
|
96
96
|
end
|
97
97
|
|
@@ -83,8 +83,8 @@ TEXT
|
|
83
83
|
end
|
84
84
|
|
85
85
|
command "test-ansi", "" do
|
86
|
-
prev_color =
|
87
|
-
|
86
|
+
prev_color = _pry_.config.color
|
87
|
+
_pry_.config.color = true
|
88
88
|
|
89
89
|
picture = unindent <<-'EOS'.gsub(/[[:alpha:]!]/) { |s| text.red(s) }
|
90
90
|
____ _______________________
|
@@ -106,7 +106,7 @@ TEXT
|
|
106
106
|
output.puts "\n" * 6
|
107
107
|
output.puts "** ENV['TERM'] is #{ENV['TERM']} **\n\n"
|
108
108
|
|
109
|
-
|
109
|
+
_pry_.config.color = prev_color
|
110
110
|
end
|
111
111
|
end
|
112
112
|
end
|
data/lib/pry/commands/edit.rb
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
class Pry
|
2
2
|
class Command::Edit < Pry::ClassCommand
|
3
|
-
require 'pry/commands/edit/method_patcher'
|
4
3
|
require 'pry/commands/edit/exception_patcher'
|
5
4
|
require 'pry/commands/edit/file_and_line_locator'
|
6
5
|
|
@@ -13,7 +12,7 @@ class Pry
|
|
13
12
|
|
14
13
|
Open a text editor. When no FILE is given, edits the pry input buffer.
|
15
14
|
When a method/module/command is given, the code is opened in an editor.
|
16
|
-
Ensure `Pry.config.editor` is set to your editor of choice.
|
15
|
+
Ensure `Pry.config.editor` or `_pry_.config.editor` is set to your editor of choice.
|
17
16
|
|
18
17
|
edit sample.rb edit -p MyClass#my_method
|
19
18
|
edit sample.rb --line 105 edit MyClass
|
@@ -31,7 +30,7 @@ class Pry
|
|
31
30
|
opt.on :t, :temp, "Open an empty temporary file"
|
32
31
|
opt.on :l, :line, "Jump to this line in the opened file",
|
33
32
|
:argument => true, :as => Integer
|
34
|
-
opt.on :n, :"no-reload", "Don't automatically reload the edited
|
33
|
+
opt.on :n, :"no-reload", "Don't automatically reload the edited file"
|
35
34
|
opt.on :c, :current, "Open the current __FILE__ and at __LINE__ (as returned by `whereami`)"
|
36
35
|
opt.on :r, :reload, "Reload the edited code immediately (default for ruby files)"
|
37
36
|
opt.on :p, :patch, "Instead of editing the object's file, try to edit in a tempfile and apply as a monkey patch"
|
@@ -61,12 +60,10 @@ class Pry
|
|
61
60
|
end
|
62
61
|
|
63
62
|
def repl_edit
|
64
|
-
content = Pry::Editor.edit_tempfile_with_content(initial_temp_file_content,
|
63
|
+
content = Pry::Editor.new(_pry_).edit_tempfile_with_content(initial_temp_file_content,
|
65
64
|
initial_temp_file_content.lines.count)
|
66
|
-
|
67
|
-
|
68
|
-
eval_string.replace content
|
69
|
-
end
|
65
|
+
silence_warnings do
|
66
|
+
eval_string.replace content
|
70
67
|
end
|
71
68
|
end
|
72
69
|
|
@@ -83,7 +80,7 @@ class Pry
|
|
83
80
|
ExceptionPatcher.new(_pry_, state, file_and_line_for_current_exception).perform_patch
|
84
81
|
else
|
85
82
|
if code_object.is_a?(Pry::Method)
|
86
|
-
|
83
|
+
code_object.redefine Pry::Editor.new(_pry_).edit_tempfile_with_content(code_object.source)
|
87
84
|
else
|
88
85
|
raise NotImplementedError, "Cannot yet patch #{code_object} objects!"
|
89
86
|
end
|
@@ -119,12 +116,12 @@ class Pry
|
|
119
116
|
|
120
117
|
ensure_file_name_is_valid(file_name)
|
121
118
|
|
122
|
-
Pry::Editor.invoke_editor(file_name, line, reload?(file_name))
|
119
|
+
Pry::Editor.new(_pry_).invoke_editor(file_name, line, reload?(file_name))
|
123
120
|
set_file_and_dir_locals(file_name)
|
124
121
|
|
125
122
|
if reload?(file_name)
|
126
123
|
silence_warnings do
|
127
|
-
|
124
|
+
load file_name
|
128
125
|
end
|
129
126
|
end
|
130
127
|
end
|
@@ -168,12 +165,7 @@ class Pry
|
|
168
165
|
end
|
169
166
|
|
170
167
|
def never_reload?
|
171
|
-
opts.present?(:'no-reload') ||
|
172
|
-
end
|
173
|
-
|
174
|
-
# conditions much less strict than for reload? (which is for file-based reloads)
|
175
|
-
def repl_reload?
|
176
|
-
!never_reload?
|
168
|
+
opts.present?(:'no-reload') || _pry_.config.disable_auto_reload
|
177
169
|
end
|
178
170
|
|
179
171
|
def reload?(file_name="")
|
@@ -194,13 +186,9 @@ class Pry
|
|
194
186
|
end
|
195
187
|
|
196
188
|
def probably_a_file?(str)
|
197
|
-
[".rb", ".c", ".py", ".yml", ".gemspec"].include?
|
189
|
+
[".rb", ".c", ".py", ".yml", ".gemspec"].include?(File.extname(str)) ||
|
198
190
|
str =~ /\/|\\/
|
199
191
|
end
|
200
|
-
|
201
|
-
def complete(search)
|
202
|
-
super + Bond::Rc.files(search.split(" ").last || '')
|
203
|
-
end
|
204
192
|
end
|
205
193
|
|
206
194
|
Pry::Commands.add_command(Pry::Command::Edit)
|
@@ -13,10 +13,10 @@ class Pry
|
|
13
13
|
|
14
14
|
# perform the patch
|
15
15
|
def perform_patch
|
16
|
-
file_name,
|
16
|
+
file_name, _ = file_and_line
|
17
17
|
lines = state.dynamical_ex_file || File.read(file_name)
|
18
18
|
|
19
|
-
source = Pry::Editor.edit_tempfile_with_content(lines)
|
19
|
+
source = Pry::Editor.new(_pry_).edit_tempfile_with_content(lines)
|
20
20
|
_pry_.evaluate_ruby source
|
21
21
|
state.dynamical_ex_file = source.split("\n")
|
22
22
|
end
|
@@ -21,8 +21,6 @@ class Pry
|
|
21
21
|
raise CommandError, "Exception has no associated file." if file_name.nil?
|
22
22
|
raise CommandError, "Cannot edit exceptions raised in REPL." if Pry.eval_path == file_name
|
23
23
|
|
24
|
-
file_name = RbxPath.convert_path_to_full(file_name) if RbxPath.is_core_path?(file_name)
|
25
|
-
|
26
24
|
[file_name, line]
|
27
25
|
end
|
28
26
|
|
@@ -6,8 +6,6 @@ class Pry
|
|
6
6
|
group 'Context'
|
7
7
|
description 'Recursively search for a method within a Class/Module or the current namespace.'
|
8
8
|
command_options :shellwords => false
|
9
|
-
command_options :requires_gem => 'ruby18_source_location' if mri_18?
|
10
|
-
|
11
9
|
|
12
10
|
banner <<-'BANNER'
|
13
11
|
Usage: find-method [-n|-c] METHOD [NAMESPACE]
|
@@ -26,13 +24,9 @@ class Pry
|
|
26
24
|
find-method -c 'output.puts' Pry
|
27
25
|
BANNER
|
28
26
|
|
29
|
-
def
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
def options(opti)
|
34
|
-
opti.on :n, :name, "Search for a method by name"
|
35
|
-
opti.on :c, :content, "Search for a method based on content in Regex form"
|
27
|
+
def options(opt)
|
28
|
+
opt.on :n, :name, "Search for a method by name"
|
29
|
+
opt.on :c, :content, "Search for a method based on content in Regex form"
|
36
30
|
end
|
37
31
|
|
38
32
|
def process
|
@@ -82,7 +76,7 @@ class Pry
|
|
82
76
|
|
83
77
|
# pretty-print a list of matching methods.
|
84
78
|
#
|
85
|
-
# @param Array
|
79
|
+
# @param [Array<Method>] matches
|
86
80
|
def print_matches(matches)
|
87
81
|
grouped = matches.group_by(&:owner)
|
88
82
|
order = grouped.keys.sort_by{ |x| x.name || x.to_s }
|
@@ -105,7 +99,7 @@ class Pry
|
|
105
99
|
# if `-c` was not given
|
106
100
|
def additional_info(header, method)
|
107
101
|
if opts.content?
|
108
|
-
": "
|
102
|
+
": " << colorize_code(matched_method_lines(header, method))
|
109
103
|
else
|
110
104
|
""
|
111
105
|
end
|
@@ -117,9 +111,9 @@ class Pry
|
|
117
111
|
|
118
112
|
# Run the given block against every constant in the provided namespace.
|
119
113
|
#
|
120
|
-
# @param Module
|
121
|
-
# @param Hash
|
122
|
-
# @yieldparam
|
114
|
+
# @param [Module] klass The namespace in which to start the search.
|
115
|
+
# @param [Hash<Module,Boolean>] done The namespaces we've already visited (private)
|
116
|
+
# @yieldparam klass Each class/module in the namespace.
|
123
117
|
#
|
124
118
|
def recurse_namespace(klass, done={}, &block)
|
125
119
|
return if !(Module === klass) || done[klass]
|
@@ -145,10 +139,10 @@ class Pry
|
|
145
139
|
|
146
140
|
# Gather all the methods in a namespace that pass the given block.
|
147
141
|
#
|
148
|
-
# @param Module
|
149
|
-
# @yieldparam Method
|
150
|
-
# @yieldreturn Boolean
|
151
|
-
# @return Array
|
142
|
+
# @param [Module] namespace The namespace in which to search.
|
143
|
+
# @yieldparam [Method] method The method to test
|
144
|
+
# @yieldreturn [Boolean]
|
145
|
+
# @return [Array<Method>]
|
152
146
|
#
|
153
147
|
def search_all_methods(namespace)
|
154
148
|
done = Hash.new{ |h,k| h[k] = {} }
|
@@ -169,8 +163,8 @@ class Pry
|
|
169
163
|
# Search for all methods with a name that matches the given regex
|
170
164
|
# within a namespace.
|
171
165
|
#
|
172
|
-
# @param Module
|
173
|
-
# @return Array
|
166
|
+
# @param [Module] namespace The namespace to search
|
167
|
+
# @return [Array<Method>]
|
174
168
|
#
|
175
169
|
def name_search(namespace)
|
176
170
|
search_all_methods(namespace) do |meth|
|
@@ -181,8 +175,8 @@ class Pry
|
|
181
175
|
# Search for all methods who's implementation matches the given regex
|
182
176
|
# within a namespace.
|
183
177
|
#
|
184
|
-
# @param Module
|
185
|
-
# @return Array
|
178
|
+
# @param [Module] namespace The namespace to search
|
179
|
+
# @return [Array<Method>]
|
186
180
|
#
|
187
181
|
def content_search(namespace)
|
188
182
|
search_all_methods(namespace) do |meth|
|
@@ -8,8 +8,8 @@ class Pry
|
|
8
8
|
banner <<-'BANNER'
|
9
9
|
Usage: gem-install GEM_NAME
|
10
10
|
|
11
|
-
Installs the given gem
|
12
|
-
|
11
|
+
Installs the given gem, refreshes the gem cache, and requires the gem for you
|
12
|
+
based on a best guess from the gem name.
|
13
13
|
|
14
14
|
gem-install pry-stack_explorer
|
15
15
|
BANNER
|
@@ -22,6 +22,9 @@ class Pry
|
|
22
22
|
Rubygem.install(gem)
|
23
23
|
output.puts "Gem `#{ text.green(gem) }` installed."
|
24
24
|
require gem
|
25
|
+
rescue LoadError
|
26
|
+
require_path = gem.split('-').join('/')
|
27
|
+
require require_path
|
25
28
|
end
|
26
29
|
end
|
27
30
|
|