pry 0.10.4 → 0.12.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +251 -16
- data/LICENSE +1 -1
- data/README.md +35 -51
- data/bin/pry +3 -11
- data/lib/pry/basic_object.rb +6 -0
- data/lib/pry/cli.rb +50 -52
- data/lib/pry/code/code_file.rb +13 -6
- data/lib/pry/code/code_range.rb +3 -3
- data/lib/pry/code/loc.rb +14 -8
- data/lib/pry/code.rb +11 -6
- data/lib/pry/code_object.rb +27 -4
- data/lib/pry/color_printer.rb +20 -10
- data/lib/pry/command.rb +76 -45
- data/lib/pry/command_set.rb +17 -45
- data/lib/pry/commands/amend_line.rb +3 -4
- data/lib/pry/commands/bang.rb +1 -1
- data/lib/pry/commands/cat/exception_formatter.rb +10 -8
- data/lib/pry/commands/cat/file_formatter.rb +7 -3
- data/lib/pry/commands/cat/input_expression_formatter.rb +1 -1
- data/lib/pry/commands/cat.rb +7 -6
- data/lib/pry/commands/change_prompt.rb +29 -9
- data/lib/pry/commands/clear_screen.rb +14 -0
- data/lib/pry/commands/code_collector.rb +25 -23
- data/lib/pry/commands/easter_eggs.rb +12 -12
- data/lib/pry/commands/edit/file_and_line_locator.rb +1 -1
- data/lib/pry/commands/edit.rb +15 -10
- data/lib/pry/commands/exit.rb +2 -1
- data/lib/pry/commands/find_method.rb +12 -14
- data/lib/pry/commands/gem_cd.rb +1 -1
- data/lib/pry/commands/gem_install.rb +2 -2
- data/lib/pry/commands/gem_list.rb +2 -2
- data/lib/pry/commands/gem_open.rb +2 -2
- data/lib/pry/commands/gem_readme.rb +25 -0
- data/lib/pry/commands/gem_search.rb +40 -0
- data/lib/pry/commands/gem_stats.rb +83 -0
- data/lib/pry/commands/gist.rb +7 -6
- data/lib/pry/commands/help.rb +3 -3
- data/lib/pry/commands/hist.rb +11 -10
- data/lib/pry/commands/import_set.rb +2 -1
- data/lib/pry/commands/install_command.rb +7 -6
- data/lib/pry/commands/jump_to.rb +7 -7
- data/lib/pry/commands/list_inspectors.rb +2 -2
- data/lib/pry/commands/ls/constants.rb +14 -3
- data/lib/pry/commands/ls/formatter.rb +4 -2
- data/lib/pry/commands/ls/globals.rb +0 -2
- data/lib/pry/commands/ls/grep.rb +0 -2
- data/lib/pry/commands/ls/instance_vars.rb +0 -1
- data/lib/pry/commands/ls/jruby_hacks.rb +2 -2
- data/lib/pry/commands/ls/local_names.rb +0 -2
- data/lib/pry/commands/ls/local_vars.rb +0 -2
- data/lib/pry/commands/ls/ls_entity.rb +0 -1
- data/lib/pry/commands/ls/methods.rb +0 -3
- data/lib/pry/commands/ls/methods_helper.rb +1 -1
- data/lib/pry/commands/ls/self_methods.rb +2 -1
- data/lib/pry/commands/ls.rb +30 -31
- data/lib/pry/commands/play.rb +3 -4
- data/lib/pry/commands/pry_backtrace.rb +1 -1
- data/lib/pry/commands/raise_up.rb +2 -1
- data/lib/pry/commands/reload_code.rb +2 -2
- data/lib/pry/commands/ri.rb +9 -4
- data/lib/pry/commands/shell_command.rb +36 -9
- data/lib/pry/commands/shell_mode.rb +6 -6
- data/lib/pry/commands/show_doc.rb +5 -7
- data/lib/pry/commands/show_info.rb +35 -20
- data/lib/pry/commands/show_source.rb +5 -2
- data/lib/pry/commands/stat.rb +1 -1
- data/lib/pry/commands/watch_expression/expression.rb +1 -1
- data/lib/pry/commands/watch_expression.rb +9 -7
- data/lib/pry/commands/whereami.rb +11 -10
- data/lib/pry/commands/wtf.rb +15 -2
- data/lib/pry/config/behavior.rb +230 -114
- data/lib/pry/config/convenience.rb +24 -21
- data/lib/pry/config/default.rb +151 -153
- data/lib/pry/config/memoization.rb +48 -0
- data/lib/pry/config.rb +30 -19
- data/lib/pry/core_extensions.rb +15 -4
- data/lib/pry/editor.rb +5 -12
- data/lib/pry/exceptions.rb +1 -3
- data/lib/pry/forwardable.rb +23 -0
- data/lib/pry/helpers/base_helpers.rb +197 -110
- data/lib/pry/helpers/command_helpers.rb +5 -4
- data/lib/pry/helpers/documentation_helpers.rb +3 -2
- data/lib/pry/helpers/options_helpers.rb +6 -6
- data/lib/pry/helpers/platform.rb +58 -0
- data/lib/pry/helpers/table.rb +20 -15
- data/lib/pry/helpers/text.rb +82 -74
- data/lib/pry/helpers.rb +1 -0
- data/lib/pry/history.rb +43 -9
- data/lib/pry/hooks.rb +50 -109
- data/lib/pry/indent.rb +21 -19
- data/lib/pry/input_completer.rb +146 -123
- data/lib/pry/input_lock.rb +0 -2
- data/lib/pry/last_exception.rb +2 -2
- data/lib/pry/method/disowned.rb +3 -1
- data/lib/pry/method/patcher.rb +2 -5
- data/lib/pry/method/weird_method_locator.rb +21 -11
- data/lib/pry/method.rb +44 -38
- data/lib/pry/object_path.rb +5 -4
- data/lib/pry/output.rb +37 -37
- data/lib/pry/pager.rb +195 -184
- data/lib/pry/platform.rb +91 -0
- data/lib/pry/plugins.rb +27 -8
- data/lib/pry/prompt.rb +144 -25
- data/lib/pry/pry_class.rb +83 -33
- data/lib/pry/pry_instance.rb +94 -59
- data/lib/pry/repl.rb +70 -11
- data/lib/pry/repl_file_loader.rb +2 -3
- data/lib/pry/ring.rb +84 -0
- data/lib/pry/rubygem.rb +9 -7
- data/lib/pry/slop/LICENSE +20 -0
- data/lib/pry/slop/commands.rb +195 -0
- data/lib/pry/slop/option.rb +206 -0
- data/lib/pry/slop.rb +661 -0
- data/lib/pry/terminal.rb +18 -6
- data/lib/pry/testable/evalable.rb +15 -0
- data/lib/pry/testable/mockable.rb +14 -0
- data/lib/pry/testable/pry_tester.rb +73 -0
- data/lib/pry/testable/utility.rb +26 -0
- data/lib/pry/testable/variables.rb +46 -0
- data/lib/pry/testable.rb +70 -0
- data/lib/pry/version.rb +1 -1
- data/lib/pry/{module_candidate.rb → wrapped_module/candidate.rb} +8 -14
- data/lib/pry/wrapped_module.rb +21 -21
- data/lib/pry.rb +21 -50
- metadata +29 -40
- data/lib/pry/commands/list_prompts.rb +0 -35
- data/lib/pry/commands/simple_prompt.rb +0 -22
- data/lib/pry/history_array.rb +0 -121
- data/lib/pry/rbx_path.rb +0 -22
- data/lib/pry/test/helper.rb +0 -170
data/lib/pry/commands/help.rb
CHANGED
@@ -59,7 +59,7 @@ class Pry
|
|
59
59
|
# @param [Array<Pry::Command>] commands
|
60
60
|
# @return [String] The generated help string.
|
61
61
|
def help_text_for_commands(name, commands)
|
62
|
-
"#{
|
62
|
+
"#{bold(name.capitalize)}\n" << commands.map do |command|
|
63
63
|
" #{command.options[:listing].to_s.ljust(18)} #{command.description.capitalize}"
|
64
64
|
end.join("\n")
|
65
65
|
end
|
@@ -75,14 +75,14 @@ class Pry
|
|
75
75
|
# @param [Array<Pry::Command>] commands The commands to sort
|
76
76
|
# @return [Array<Pry::Command>] commands sorted by listing name.
|
77
77
|
def sorted_commands(commands)
|
78
|
-
commands.sort_by{ |command| command.options[:listing].to_s }
|
78
|
+
commands.sort_by { |command| command.options[:listing].to_s }
|
79
79
|
end
|
80
80
|
|
81
81
|
# Display help for an individual command or group.
|
82
82
|
#
|
83
83
|
# @param [String] search The string to search for.
|
84
84
|
def display_search(search)
|
85
|
-
if command = command_set.find_command_for_help(search)
|
85
|
+
if (command = command_set.find_command_for_help(search))
|
86
86
|
display_command(command)
|
87
87
|
else
|
88
88
|
display_filtered_search_results(search)
|
data/lib/pry/commands/hist.rb
CHANGED
@@ -21,13 +21,13 @@ class Pry
|
|
21
21
|
|
22
22
|
def options(opt)
|
23
23
|
opt.on :a, :all, "Display all history"
|
24
|
-
opt.on :H, :head, "Display the first N items", :
|
25
|
-
opt.on :T, :tail, "Display the last N items", :
|
26
|
-
opt.on :s, :show, "Show the given range of lines", :
|
27
|
-
opt.on :G, :grep, "Show lines matching the given pattern", :
|
24
|
+
opt.on :H, :head, "Display the first N items", optional_argument: true, as: Integer
|
25
|
+
opt.on :T, :tail, "Display the last N items", optional_argument: true, as: Integer
|
26
|
+
opt.on :s, :show, "Show the given range of lines", optional_argument: true, as: Range
|
27
|
+
opt.on :G, :grep, "Show lines matching the given pattern", argument: true, as: String
|
28
28
|
opt.on :c, :clear , "Clear the current session's history"
|
29
|
-
opt.on :r, :replay, "Replay a line or range of lines", :
|
30
|
-
opt.on :save, "Save history to a file", :
|
29
|
+
opt.on :r, :replay, "Replay a line or range of lines", argument: true, as: Range
|
30
|
+
opt.on :save, "Save history to a file", argument: true, as: Range
|
31
31
|
opt.on :e, :'exclude-pry', "Exclude Pry commands from the history"
|
32
32
|
opt.on :n, :'no-numbers', "Omit line numbers"
|
33
33
|
end
|
@@ -43,7 +43,8 @@ class Pry
|
|
43
43
|
@history = @history.grep(opts[:grep])
|
44
44
|
end
|
45
45
|
|
46
|
-
@history =
|
46
|
+
@history =
|
47
|
+
case
|
47
48
|
when opts.present?(:head)
|
48
49
|
@history.take_lines(1, opts[:head] || 10)
|
49
50
|
when opts.present?(:tail)
|
@@ -119,7 +120,7 @@ class Pry
|
|
119
120
|
check_for_juxtaposed_replay(replay_sequence)
|
120
121
|
|
121
122
|
replay_sequence.lines.each do |line|
|
122
|
-
_pry_.eval line, :
|
123
|
+
_pry_.eval line, generated: true
|
123
124
|
end
|
124
125
|
end
|
125
126
|
|
@@ -170,8 +171,8 @@ class Pry
|
|
170
171
|
else
|
171
172
|
Pry.history.to_a.last(Pry.history.session_line_count)
|
172
173
|
end
|
173
|
-
|
174
|
-
Pry::Code(h[0..-2])
|
174
|
+
|
175
|
+
Pry::Code(Pry.history.filter(h[0..-2]))
|
175
176
|
end
|
176
177
|
end
|
177
178
|
|
@@ -10,7 +10,8 @@ class Pry
|
|
10
10
|
Import a Pry command set.
|
11
11
|
BANNER
|
12
12
|
|
13
|
-
|
13
|
+
# TODO: resolve unused parameter.
|
14
|
+
def process(_command_set_name)
|
14
15
|
raise CommandError, "Provide a command set name" if command_set.nil?
|
15
16
|
|
16
17
|
set = target.eval(arg_string)
|
@@ -16,21 +16,22 @@ class Pry
|
|
16
16
|
command = find_command(name)
|
17
17
|
|
18
18
|
unless command
|
19
|
-
output.puts "Command #{
|
19
|
+
output.puts "Command #{ green(name) } is not found"
|
20
20
|
return
|
21
21
|
end
|
22
22
|
|
23
23
|
if command_dependencies_met?(command.options)
|
24
|
-
output.puts "Dependencies for #{
|
24
|
+
output.puts "Dependencies for #{ green(name) } are met. Nothing to do"
|
25
25
|
return
|
26
26
|
end
|
27
27
|
|
28
|
-
output.puts "Attempting to install #{
|
28
|
+
output.puts "Attempting to install #{ green(name) } command..."
|
29
29
|
gems_to_install = Array(command.options[:requires_gem])
|
30
30
|
|
31
31
|
gems_to_install.each do |g|
|
32
32
|
next if Rubygem.installed?(g)
|
33
|
-
|
33
|
+
|
34
|
+
output.puts "Installing #{ green(g) } gem..."
|
34
35
|
Rubygem.install(g)
|
35
36
|
end
|
36
37
|
|
@@ -38,14 +39,14 @@ class Pry
|
|
38
39
|
begin
|
39
40
|
require g
|
40
41
|
rescue LoadError
|
41
|
-
fail_msg = "Required gem #{
|
42
|
+
fail_msg = "Required gem #{ green(g) } installed but not found."
|
42
43
|
fail_msg += " Aborting command installation\n"
|
43
44
|
fail_msg += 'Tips: 1. Check your PATH; 2. Run `bundle update`'
|
44
45
|
raise CommandError, fail_msg
|
45
46
|
end
|
46
47
|
end
|
47
48
|
|
48
|
-
output.puts "Installation of #{
|
49
|
+
output.puts "Installation of #{ green(name) } successful! Type `help #{name}` for information"
|
49
50
|
end
|
50
51
|
end
|
51
52
|
|
data/lib/pry/commands/jump_to.rb
CHANGED
@@ -9,18 +9,18 @@ class Pry
|
|
9
9
|
BANNER
|
10
10
|
|
11
11
|
def process(break_level)
|
12
|
-
break_level
|
13
|
-
nesting_level
|
12
|
+
break_level = break_level.to_i
|
13
|
+
nesting_level = _pry_.binding_stack.size - 1
|
14
|
+
max_nest_level = nesting_level - 1
|
14
15
|
|
15
16
|
case break_level
|
16
17
|
when nesting_level
|
17
18
|
output.puts "Already at nesting level #{nesting_level}"
|
18
|
-
when
|
19
|
-
_pry_.binding_stack
|
20
|
-
|
19
|
+
when 0..max_nest_level
|
20
|
+
_pry_.binding_stack = _pry_.binding_stack[0..break_level]
|
21
21
|
else
|
22
|
-
|
23
|
-
|
22
|
+
output.puts "Invalid nest level. Must be between 0 and " \
|
23
|
+
"#{max_nest_level}. Got #{break_level}."
|
24
24
|
end
|
25
25
|
end
|
26
26
|
end
|
@@ -12,7 +12,7 @@ class Pry::Command::ListInspectors < Pry::ClassCommand
|
|
12
12
|
def process
|
13
13
|
output.puts heading("Available inspectors") + "\n"
|
14
14
|
inspector_map.each do |name, inspector|
|
15
|
-
output.write "Name: #{
|
15
|
+
output.write "Name: #{bold(name)}"
|
16
16
|
output.puts selected_inspector?(inspector) ? selected_text : ""
|
17
17
|
output.puts inspector[:description]
|
18
18
|
output.puts
|
@@ -25,7 +25,7 @@ private
|
|
25
25
|
end
|
26
26
|
|
27
27
|
def selected_text
|
28
|
-
|
28
|
+
red " (selected) "
|
29
29
|
end
|
30
30
|
|
31
31
|
def selected_inspector?(inspector)
|
@@ -3,15 +3,17 @@ require 'pry/commands/ls/interrogatable'
|
|
3
3
|
class Pry
|
4
4
|
class Command::Ls < Pry::ClassCommand
|
5
5
|
class Constants < Pry::Command::Ls::Formatter
|
6
|
+
DEPRECATED_CONSTANTS = [:Data, :Fixnum, :Bignum, :TimeoutError, :NIL, :FALSE, :TRUE]
|
7
|
+
DEPRECATED_CONSTANTS << :JavaPackageModuleTemplate if Helpers::Platform.jruby?
|
6
8
|
include Pry::Command::Ls::Interrogatable
|
7
9
|
|
8
|
-
|
9
10
|
def initialize(interrogatee, no_user_opts, opts, _pry_)
|
10
11
|
super(_pry_)
|
11
12
|
@interrogatee = interrogatee
|
12
13
|
@no_user_opts = no_user_opts
|
13
14
|
@default_switch = opts[:constants]
|
14
15
|
@verbose_switch = opts[:verbose]
|
16
|
+
@dconstants = opts.dconstants?
|
15
17
|
end
|
16
18
|
|
17
19
|
def correct_opts?
|
@@ -26,9 +28,19 @@ class Pry
|
|
26
28
|
|
27
29
|
private
|
28
30
|
|
31
|
+
def show_deprecated_constants?
|
32
|
+
@dconstants == true
|
33
|
+
end
|
34
|
+
|
29
35
|
def format(mod, constants)
|
30
36
|
constants.sort_by(&:downcase).map do |name|
|
31
|
-
if
|
37
|
+
if Object.respond_to?(:deprecate_constant) and
|
38
|
+
DEPRECATED_CONSTANTS.include?(name) and
|
39
|
+
!show_deprecated_constants?
|
40
|
+
next
|
41
|
+
end
|
42
|
+
|
43
|
+
if (const = (!mod.autoload?(name) && (mod.const_get(name) || true) rescue nil))
|
32
44
|
if (const < Exception rescue false)
|
33
45
|
color(:exception_constant, name)
|
34
46
|
elsif (Module === mod.const_get(name) rescue false)
|
@@ -41,7 +53,6 @@ class Pry
|
|
41
53
|
end
|
42
54
|
end
|
43
55
|
end
|
44
|
-
|
45
56
|
end
|
46
57
|
end
|
47
58
|
end
|
@@ -7,10 +7,12 @@ class Pry
|
|
7
7
|
def initialize(_pry_)
|
8
8
|
@_pry_ = _pry_
|
9
9
|
@target = _pry_.current_context
|
10
|
+
@default_switch = nil
|
10
11
|
end
|
11
12
|
|
12
13
|
def write_out
|
13
14
|
return false unless correct_opts?
|
15
|
+
|
14
16
|
output_self
|
15
17
|
end
|
16
18
|
|
@@ -24,8 +26,9 @@ class Pry
|
|
24
26
|
# Outputs nothing if the section would be empty.
|
25
27
|
def output_section(heading, body)
|
26
28
|
return '' if body.compact.empty?
|
29
|
+
|
27
30
|
fancy_heading = Pry::Helpers::Text.bold(color(:heading, heading))
|
28
|
-
Pry::Helpers.tablify_or_one_line(fancy_heading, body)
|
31
|
+
Pry::Helpers.tablify_or_one_line(fancy_heading, body, @_pry_.config)
|
29
32
|
end
|
30
33
|
|
31
34
|
def format_value(value)
|
@@ -43,7 +46,6 @@ class Pry
|
|
43
46
|
def grep
|
44
47
|
@grep || proc { |x| x }
|
45
48
|
end
|
46
|
-
|
47
49
|
end
|
48
50
|
end
|
49
51
|
end
|
@@ -1,7 +1,6 @@
|
|
1
1
|
class Pry
|
2
2
|
class Command::Ls < Pry::ClassCommand
|
3
3
|
class Globals < Pry::Command::Ls::Formatter
|
4
|
-
|
5
4
|
# Taken from "puts global_variables.inspect".
|
6
5
|
BUILTIN_GLOBALS =
|
7
6
|
%w($" $$ $* $, $-0 $-F $-I $-K $-W $-a $-d $-i $-l $-p $-v $-w $. $/ $\\
|
@@ -42,7 +41,6 @@ class Pry
|
|
42
41
|
end
|
43
42
|
end
|
44
43
|
end
|
45
|
-
|
46
44
|
end
|
47
45
|
end
|
48
46
|
end
|
data/lib/pry/commands/ls/grep.rb
CHANGED
@@ -19,7 +19,7 @@ module Pry::Command::Ls::JRubyHacks
|
|
19
19
|
m.name.sub(/\A(is|get|set)(?=[A-Z_])/, '').gsub(/[_?=]/, '').downcase
|
20
20
|
end
|
21
21
|
|
22
|
-
grouped.
|
22
|
+
grouped.flat_map do |key, values|
|
23
23
|
values = values.sort_by do |m|
|
24
24
|
rubbishness(m.name)
|
25
25
|
end
|
@@ -28,7 +28,7 @@ module Pry::Command::Ls::JRubyHacks
|
|
28
28
|
values.select do |x|
|
29
29
|
(!found.any? { |y| x == y }) && found << x
|
30
30
|
end
|
31
|
-
end
|
31
|
+
end
|
32
32
|
end
|
33
33
|
|
34
34
|
# When removing jruby aliases, we want to keep the alias that is
|
@@ -1,7 +1,6 @@
|
|
1
1
|
class Pry
|
2
2
|
class Command::Ls < Pry::ClassCommand
|
3
3
|
class LocalNames < Pry::Command::Ls::Formatter
|
4
|
-
|
5
4
|
def initialize(no_user_opts, args, _pry_)
|
6
5
|
super(_pry_)
|
7
6
|
@no_user_opts = no_user_opts
|
@@ -29,7 +28,6 @@ class Pry
|
|
29
28
|
end
|
30
29
|
end
|
31
30
|
end
|
32
|
-
|
33
31
|
end
|
34
32
|
end
|
35
33
|
end
|
@@ -1,7 +1,6 @@
|
|
1
1
|
class Pry
|
2
2
|
class Command::Ls < Pry::ClassCommand
|
3
3
|
class LocalVars < Pry::Command::Ls::Formatter
|
4
|
-
|
5
4
|
def initialize(opts, _pry_)
|
6
5
|
super(_pry_)
|
7
6
|
@default_switch = opts[:locals]
|
@@ -33,7 +32,6 @@ class Pry
|
|
33
32
|
pad = desired_width + color_escape_padding
|
34
33
|
"%-#{pad}s = %s" % [color(:local_var, colorized_lhs), rhs]
|
35
34
|
end
|
36
|
-
|
37
35
|
end
|
38
36
|
end
|
39
37
|
end
|
@@ -4,7 +4,6 @@ require 'pry/commands/ls/interrogatable'
|
|
4
4
|
class Pry
|
5
5
|
class Command::Ls < Pry::ClassCommand
|
6
6
|
class Methods < Pry::Command::Ls::Formatter
|
7
|
-
|
8
7
|
include Pry::Command::Ls::Interrogatable
|
9
8
|
include Pry::Command::Ls::MethodsHelper
|
10
9
|
|
@@ -37,7 +36,6 @@ class Pry
|
|
37
36
|
super || @instance_methods_switch || @ppp_switch || @no_user_opts
|
38
37
|
end
|
39
38
|
|
40
|
-
|
41
39
|
# Get a lambda that can be used with `take_while` to prevent over-eager
|
42
40
|
# traversal of the Object's ancestry graph.
|
43
41
|
def below_ceiling
|
@@ -51,7 +49,6 @@ class Pry
|
|
51
49
|
end
|
52
50
|
lambda { |klass| !ceiling.include?(klass) }
|
53
51
|
end
|
54
|
-
|
55
52
|
end
|
56
53
|
end
|
57
54
|
end
|
@@ -11,6 +11,8 @@ class Pry
|
|
11
11
|
super(_pry_)
|
12
12
|
@interrogatee = interrogatee
|
13
13
|
@no_user_opts = no_user_opts
|
14
|
+
@ppp_switch = opts[:ppp]
|
15
|
+
@jruby_switch = opts['all-java']
|
14
16
|
end
|
15
17
|
|
16
18
|
def output_self
|
@@ -26,7 +28,6 @@ class Pry
|
|
26
28
|
def correct_opts?
|
27
29
|
@no_user_opts && interrogating_a_module?
|
28
30
|
end
|
29
|
-
|
30
31
|
end
|
31
32
|
end
|
32
33
|
end
|
data/lib/pry/commands/ls.rb
CHANGED
@@ -2,31 +2,30 @@ require 'pry/commands/ls/ls_entity'
|
|
2
2
|
class Pry
|
3
3
|
class Command::Ls < Pry::ClassCommand
|
4
4
|
DEFAULT_OPTIONS = {
|
5
|
-
:
|
6
|
-
:
|
7
|
-
:
|
8
|
-
:
|
9
|
-
:
|
10
|
-
:
|
11
|
-
:
|
12
|
-
:
|
13
|
-
:
|
14
|
-
:
|
15
|
-
:
|
16
|
-
:
|
17
|
-
:
|
18
|
-
:
|
19
|
-
:
|
20
|
-
:
|
21
|
-
:
|
22
|
-
:
|
5
|
+
heading_color: :bright_blue,
|
6
|
+
public_method_color: :default,
|
7
|
+
private_method_color: :blue,
|
8
|
+
protected_method_color: :blue,
|
9
|
+
method_missing_color: :bright_red,
|
10
|
+
local_var_color: :yellow,
|
11
|
+
pry_var_color: :default, # e.g. _, _pry_, _file_
|
12
|
+
instance_var_color: :blue, # e.g. @foo
|
13
|
+
class_var_color: :bright_blue, # e.g. @@foo
|
14
|
+
global_var_color: :default, # e.g. $CODERAY_DEBUG, $eventmachine_library
|
15
|
+
builtin_global_color: :cyan, # e.g. $stdin, $-w, $PID
|
16
|
+
pseudo_global_color: :cyan, # e.g. $~, $1..$9, $LAST_MATCH_INFO
|
17
|
+
constant_color: :default, # e.g. VERSION, ARGF
|
18
|
+
class_constant_color: :blue, # e.g. Object, Kernel
|
19
|
+
exception_constant_color: :magenta, # e.g. Exception, RuntimeError
|
20
|
+
unloaded_constant_color: :yellow, # Any constant that is still in .autoload? state
|
21
|
+
separator: " ",
|
22
|
+
ceiling: [Object, Module, Class]
|
23
23
|
}
|
24
24
|
|
25
|
-
|
26
25
|
match 'ls'
|
27
26
|
group 'Context'
|
28
27
|
description 'Show the list of vars and methods in the current scope.'
|
29
|
-
command_options :
|
28
|
+
command_options shellwords: false, interpolate: false
|
30
29
|
|
31
30
|
banner <<-'BANNER'
|
32
31
|
Usage: ls [-m|-M|-p|-pM] [-q|-v] [-c|-i] [Object]
|
@@ -48,9 +47,8 @@ class Pry
|
|
48
47
|
Also check out `find-method` command (run `help find-method`).
|
49
48
|
BANNER
|
50
49
|
|
51
|
-
|
52
50
|
def options(opt)
|
53
|
-
opt.on :m, :methods,
|
51
|
+
opt.on :m, :methods, "Show public methods defined on the Object"
|
54
52
|
opt.on :M, "instance-methods", "Show public methods defined in a Module or Class"
|
55
53
|
opt.on :p, :ppp, "Show public, protected (in yellow) and private (in green) methods"
|
56
54
|
opt.on :q, :quiet, "Show only methods defined on object.singleton_class and object.class"
|
@@ -60,9 +58,11 @@ class Pry
|
|
60
58
|
opt.on :c, :constants, "Show constants, highlighting classes (in blue), and exceptions (in purple).\n" <<
|
61
59
|
" " * 32 << "Constants that are pending autoload? are also shown (in yellow)"
|
62
60
|
opt.on :i, :ivars, "Show instance variables (in blue) and class variables (in bright blue)"
|
63
|
-
opt.on :G, :grep, "Filter output by regular expression", :
|
64
|
-
|
65
|
-
|
61
|
+
opt.on :G, :grep, "Filter output by regular expression", argument: true
|
62
|
+
if Object.respond_to?(:deprecate_constant)
|
63
|
+
opt.on :d, :dconstants, "Show deprecated constants"
|
64
|
+
end
|
65
|
+
if Helpers::Platform.jruby?
|
66
66
|
opt.on :J, "all-java", "Show all the aliases for methods from java (default is to show only prettiest)"
|
67
67
|
end
|
68
68
|
end
|
@@ -78,11 +78,11 @@ class Pry
|
|
78
78
|
@interrogatee = args.empty? ? target_self : target.eval(args.join(' '))
|
79
79
|
raise_errors_if_arguments_are_weird
|
80
80
|
ls_entity = LsEntity.new({
|
81
|
-
:
|
82
|
-
:
|
83
|
-
:
|
84
|
-
:
|
85
|
-
:
|
81
|
+
interrogatee: @interrogatee,
|
82
|
+
no_user_opts: no_user_opts?,
|
83
|
+
opts: opts,
|
84
|
+
args: args,
|
85
|
+
_pry_: _pry_
|
86
86
|
})
|
87
87
|
|
88
88
|
_pry_.pager.page ls_entity.entities_table
|
@@ -107,7 +107,6 @@ class Pry
|
|
107
107
|
raise Pry::CommandError, message if opts.present?(option) && invalid_expr
|
108
108
|
end
|
109
109
|
end
|
110
|
-
|
111
110
|
end
|
112
111
|
|
113
112
|
Pry::Commands.add_command(Pry::Command::Ls)
|
data/lib/pry/commands/play.rb
CHANGED
@@ -12,7 +12,7 @@ class Pry
|
|
12
12
|
|
13
13
|
play --lines 149..153 # assumes current context
|
14
14
|
play -i 20 --lines 1..3 # assumes lines of the input expression at 20
|
15
|
-
play -o 4 # the output of
|
15
|
+
play -o 4 # the output of an expression at 4
|
16
16
|
play Pry#repl -l 1..-1 # play the contents of Pry#repl method
|
17
17
|
play -e 2 # play from specified line until end of valid expression
|
18
18
|
play hello.rb # play a file
|
@@ -31,7 +31,7 @@ class Pry
|
|
31
31
|
' "open". `amend-line` can then be used to' \
|
32
32
|
' modify the method.'
|
33
33
|
|
34
|
-
opt.on :e, :expression=, 'Executes until end of valid expression', :
|
34
|
+
opt.on :e, :expression=, 'Executes until end of valid expression', as: Integer
|
35
35
|
opt.on :p, :print, 'Prints executed code'
|
36
36
|
end
|
37
37
|
|
@@ -53,7 +53,6 @@ class Pry
|
|
53
53
|
end
|
54
54
|
end
|
55
55
|
|
56
|
-
|
57
56
|
def content_after_options
|
58
57
|
if opts.present?(:open)
|
59
58
|
restrict_to_lines(content, (0..-2))
|
@@ -91,7 +90,7 @@ class Pry
|
|
91
90
|
end
|
92
91
|
|
93
92
|
def file_content
|
94
|
-
if default_file && File.
|
93
|
+
if default_file && File.exist?(default_file)
|
95
94
|
@cc.restrict_to_lines(File.read(default_file), @cc.line_range)
|
96
95
|
else
|
97
96
|
raise CommandError, "File does not exist! File was: #{default_file.inspect}"
|
@@ -4,7 +4,7 @@ class Pry
|
|
4
4
|
match(/raise-up(!?\b.*)/)
|
5
5
|
group 'Context'
|
6
6
|
description 'Raise an exception out of the current pry instance.'
|
7
|
-
command_options :
|
7
|
+
command_options listing: 'raise-up'
|
8
8
|
|
9
9
|
banner <<-BANNER
|
10
10
|
Raise up, like exit, allows you to quit pry. Instead of returning a value
|
@@ -23,6 +23,7 @@ class Pry
|
|
23
23
|
|
24
24
|
def process
|
25
25
|
return _pry.pager.page help if captures[0] =~ /(-h|--help)\b/
|
26
|
+
|
26
27
|
# Handle 'raise-up', 'raise-up "foo"', 'raise-up RuntimeError, 'farble' in a rubyesque manner
|
27
28
|
target.eval("_pry_.raise_up#{captures[0]}")
|
28
29
|
end
|
@@ -31,7 +31,7 @@ class Pry
|
|
31
31
|
end
|
32
32
|
|
33
33
|
def reload_current_file
|
34
|
-
if !File.
|
34
|
+
if !File.exist?(current_file)
|
35
35
|
raise CommandError, "Current file: #{current_file} cannot be found on disk!"
|
36
36
|
end
|
37
37
|
|
@@ -49,7 +49,7 @@ class Pry
|
|
49
49
|
def check_for_reloadability(code_object, identifier)
|
50
50
|
if !code_object || !code_object.source_file
|
51
51
|
raise CommandError, "Cannot locate #{identifier}!"
|
52
|
-
elsif !File.
|
52
|
+
elsif !File.exist?(code_object.source_file)
|
53
53
|
raise CommandError,
|
54
54
|
"Cannot reload #{identifier} as it has no associated file on disk. " \
|
55
55
|
"File found was: #{code_object.source_file}"
|
data/lib/pry/commands/ri.rb
CHANGED
@@ -14,6 +14,10 @@ class Pry
|
|
14
14
|
BANNER
|
15
15
|
|
16
16
|
def process(spec)
|
17
|
+
unless spec
|
18
|
+
return output.puts "Please provide a class, module, or method name (e.g: ri Array#push)"
|
19
|
+
end
|
20
|
+
|
17
21
|
# Lazily load RI
|
18
22
|
require 'rdoc/ri/driver'
|
19
23
|
|
@@ -27,13 +31,14 @@ class Pry
|
|
27
31
|
@pager = pager
|
28
32
|
super opts
|
29
33
|
end
|
34
|
+
|
30
35
|
def page
|
31
36
|
paging_text = StringIO.new
|
32
37
|
yield paging_text
|
33
38
|
@pager.page(paging_text.string)
|
34
39
|
end
|
35
40
|
|
36
|
-
def formatter(
|
41
|
+
def formatter(_io)
|
37
42
|
if @formatter_klass
|
38
43
|
@formatter_klass.new
|
39
44
|
else
|
@@ -42,14 +47,14 @@ class Pry
|
|
42
47
|
end
|
43
48
|
end
|
44
49
|
|
45
|
-
RDoc::RI.const_set :PryDriver, subclass
|
50
|
+
RDoc::RI.const_set :PryDriver, subclass # hook it up!
|
46
51
|
end
|
47
52
|
|
48
53
|
# Spin-up an RI insance.
|
49
|
-
ri = RDoc::RI::PryDriver.new _pry_.pager, :
|
54
|
+
ri = RDoc::RI::PryDriver.new _pry_.pager, use_stdout: true, interactive: false
|
50
55
|
|
51
56
|
begin
|
52
|
-
ri.display_names [spec]
|
57
|
+
ri.display_names [spec] # Get the documentation (finally!)
|
53
58
|
rescue RDoc::RI::Driver::NotFoundError => e
|
54
59
|
output.puts "error: '#{e.name}' not found"
|
55
60
|
end
|