pry 0.12.2-java → 0.13.0-java
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 +110 -1
- data/LICENSE +1 -1
- data/README.md +331 -269
- data/bin/pry +5 -0
- data/lib/pry.rb +133 -119
- data/lib/pry/basic_object.rb +8 -4
- data/lib/pry/block_command.rb +22 -0
- data/lib/pry/class_command.rb +194 -0
- data/lib/pry/cli.rb +40 -31
- data/lib/pry/code.rb +39 -27
- data/lib/pry/code/code_file.rb +28 -24
- data/lib/pry/code/code_range.rb +4 -2
- data/lib/pry/code/loc.rb +15 -8
- data/lib/pry/code_object.rb +40 -38
- data/lib/pry/color_printer.rb +47 -46
- data/lib/pry/command.rb +166 -369
- data/lib/pry/command_set.rb +76 -73
- data/lib/pry/command_state.rb +31 -0
- data/lib/pry/commands/amend_line.rb +86 -81
- data/lib/pry/commands/bang.rb +18 -14
- data/lib/pry/commands/bang_pry.rb +15 -11
- data/lib/pry/commands/cat.rb +61 -54
- data/lib/pry/commands/cat/abstract_formatter.rb +23 -18
- data/lib/pry/commands/cat/exception_formatter.rb +71 -60
- data/lib/pry/commands/cat/file_formatter.rb +55 -49
- data/lib/pry/commands/cat/input_expression_formatter.rb +35 -30
- data/lib/pry/commands/cd.rb +40 -35
- data/lib/pry/commands/change_inspector.rb +29 -22
- data/lib/pry/commands/change_prompt.rb +44 -39
- data/lib/pry/commands/clear_screen.rb +16 -10
- data/lib/pry/commands/code_collector.rb +148 -133
- data/lib/pry/commands/disable_pry.rb +23 -19
- data/lib/pry/commands/easter_eggs.rb +19 -30
- data/lib/pry/commands/edit.rb +184 -161
- data/lib/pry/commands/edit/exception_patcher.rb +21 -17
- data/lib/pry/commands/edit/file_and_line_locator.rb +34 -23
- data/lib/pry/commands/exit.rb +39 -35
- data/lib/pry/commands/exit_all.rb +24 -20
- data/lib/pry/commands/exit_program.rb +20 -16
- data/lib/pry/commands/find_method.rb +168 -160
- data/lib/pry/commands/fix_indent.rb +16 -12
- data/lib/pry/commands/help.rb +140 -133
- data/lib/pry/commands/hist.rb +151 -150
- data/lib/pry/commands/import_set.rb +20 -16
- data/lib/pry/commands/jump_to.rb +25 -21
- data/lib/pry/commands/list_inspectors.rb +35 -28
- data/lib/pry/commands/ls.rb +124 -102
- data/lib/pry/commands/ls/constants.rb +59 -42
- data/lib/pry/commands/ls/formatter.rb +50 -46
- data/lib/pry/commands/ls/globals.rb +38 -34
- data/lib/pry/commands/ls/grep.rb +17 -13
- data/lib/pry/commands/ls/instance_vars.rb +29 -27
- data/lib/pry/commands/ls/interrogatable.rb +18 -12
- data/lib/pry/commands/ls/jruby_hacks.rb +47 -41
- data/lib/pry/commands/ls/local_names.rb +26 -22
- data/lib/pry/commands/ls/local_vars.rb +38 -28
- data/lib/pry/commands/ls/ls_entity.rb +47 -51
- data/lib/pry/commands/ls/methods.rb +44 -43
- data/lib/pry/commands/ls/methods_helper.rb +46 -42
- data/lib/pry/commands/ls/self_methods.rb +23 -22
- data/lib/pry/commands/nesting.rb +21 -17
- data/lib/pry/commands/play.rb +93 -82
- data/lib/pry/commands/pry_backtrace.rb +24 -17
- data/lib/pry/commands/pry_version.rb +15 -11
- data/lib/pry/commands/raise_up.rb +27 -22
- data/lib/pry/commands/reload_code.rb +60 -48
- data/lib/pry/commands/reset.rb +16 -12
- data/lib/pry/commands/ri.rb +55 -45
- data/lib/pry/commands/save_file.rb +45 -43
- data/lib/pry/commands/shell_command.rb +51 -51
- data/lib/pry/commands/shell_mode.rb +21 -17
- data/lib/pry/commands/show_doc.rb +81 -68
- data/lib/pry/commands/show_info.rb +189 -171
- data/lib/pry/commands/show_input.rb +16 -11
- data/lib/pry/commands/show_source.rb +109 -45
- data/lib/pry/commands/stat.rb +35 -31
- data/lib/pry/commands/switch_to.rb +21 -15
- data/lib/pry/commands/toggle_color.rb +20 -16
- data/lib/pry/commands/watch_expression.rb +89 -86
- data/lib/pry/commands/watch_expression/expression.rb +32 -27
- data/lib/pry/commands/whereami.rb +156 -148
- data/lib/pry/commands/wtf.rb +75 -50
- data/lib/pry/config.rb +311 -25
- 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/control_d_handler.rb +28 -0
- data/lib/pry/core_extensions.rb +9 -7
- data/lib/pry/editor.rb +48 -21
- data/lib/pry/env.rb +18 -0
- data/lib/pry/exception_handler.rb +43 -0
- data/lib/pry/exceptions.rb +13 -16
- data/lib/pry/forwardable.rb +5 -1
- data/lib/pry/helpers.rb +2 -0
- data/lib/pry/helpers/base_helpers.rb +68 -197
- data/lib/pry/helpers/command_helpers.rb +50 -61
- data/lib/pry/helpers/documentation_helpers.rb +20 -13
- data/lib/pry/helpers/options_helpers.rb +14 -7
- data/lib/pry/helpers/platform.rb +7 -5
- data/lib/pry/helpers/table.rb +33 -26
- data/lib/pry/helpers/text.rb +17 -14
- data/lib/pry/history.rb +48 -56
- data/lib/pry/hooks.rb +21 -12
- data/lib/pry/indent.rb +54 -50
- data/lib/pry/input_completer.rb +248 -230
- data/lib/pry/input_lock.rb +8 -9
- data/lib/pry/inspector.rb +36 -24
- data/lib/pry/last_exception.rb +45 -45
- data/lib/pry/method.rb +141 -94
- data/lib/pry/method/disowned.rb +16 -4
- data/lib/pry/method/patcher.rb +12 -3
- data/lib/pry/method/weird_method_locator.rb +68 -44
- data/lib/pry/object_path.rb +33 -25
- data/lib/pry/output.rb +121 -35
- data/lib/pry/pager.rb +41 -42
- data/lib/pry/plugins.rb +25 -8
- data/lib/pry/prompt.rb +123 -54
- data/lib/pry/pry_class.rb +61 -98
- data/lib/pry/pry_instance.rb +217 -215
- data/lib/pry/repl.rb +18 -22
- data/lib/pry/repl_file_loader.rb +27 -21
- data/lib/pry/ring.rb +11 -6
- data/lib/pry/slop.rb +574 -563
- data/lib/pry/slop/commands.rb +164 -169
- data/lib/pry/slop/option.rb +172 -168
- data/lib/pry/syntax_highlighter.rb +26 -0
- data/lib/pry/system_command_handler.rb +17 -0
- data/lib/pry/testable.rb +59 -61
- data/lib/pry/testable/evalable.rb +21 -12
- data/lib/pry/testable/mockable.rb +18 -10
- data/lib/pry/testable/pry_tester.rb +71 -56
- data/lib/pry/testable/utility.rb +29 -21
- data/lib/pry/testable/variables.rb +49 -43
- data/lib/pry/version.rb +3 -1
- data/lib/pry/warning.rb +27 -0
- data/lib/pry/wrapped_module.rb +51 -42
- data/lib/pry/wrapped_module/candidate.rb +21 -14
- metadata +31 -30
- data/lib/pry/commands.rb +0 -6
- 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 -32
- data/lib/pry/commands/gem_list.rb +0 -33
- data/lib/pry/commands/gem_open.rb +0 -29
- data/lib/pry/commands/gem_readme.rb +0 -25
- data/lib/pry/commands/gem_search.rb +0 -40
- data/lib/pry/commands/gem_stats.rb +0 -83
- data/lib/pry/commands/gist.rb +0 -102
- data/lib/pry/commands/install_command.rb +0 -54
- data/lib/pry/config/behavior.rb +0 -255
- data/lib/pry/config/convenience.rb +0 -28
- data/lib/pry/config/default.rb +0 -159
- data/lib/pry/config/memoization.rb +0 -48
- data/lib/pry/platform.rb +0 -91
- data/lib/pry/rubygem.rb +0 -84
- data/lib/pry/terminal.rb +0 -91
@@ -1,23 +1,27 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
class Pry
|
2
|
-
class Command
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
4
|
+
class Command
|
5
|
+
class ImportSet < Pry::ClassCommand
|
6
|
+
match 'import-set'
|
7
|
+
group 'Commands'
|
8
|
+
# TODO: Provide a better description with examples and a general conception
|
9
|
+
# of this command.
|
10
|
+
description 'Import a Pry command set.'
|
8
11
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
+
banner <<-'BANNER'
|
13
|
+
Import a Pry command set.
|
14
|
+
BANNER
|
12
15
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
+
# TODO: resolve unused parameter.
|
17
|
+
def process(_command_set_name)
|
18
|
+
raise CommandError, "Provide a command set name" if command_set.nil?
|
16
19
|
|
17
|
-
|
18
|
-
|
20
|
+
set = target.eval(arg_string)
|
21
|
+
pry_instance.commands.import set
|
22
|
+
end
|
19
23
|
end
|
20
|
-
end
|
21
24
|
|
22
|
-
|
25
|
+
Pry::Commands.add_command(Pry::Command::ImportSet)
|
26
|
+
end
|
23
27
|
end
|
data/lib/pry/commands/jump_to.rb
CHANGED
@@ -1,29 +1,33 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
class Pry
|
2
|
-
class Command
|
3
|
-
|
4
|
-
|
5
|
-
|
4
|
+
class Command
|
5
|
+
class JumpTo < Pry::ClassCommand
|
6
|
+
match 'jump-to'
|
7
|
+
group 'Navigating Pry'
|
8
|
+
description 'Jump to a binding further up the stack.'
|
6
9
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
+
banner <<-'BANNER'
|
11
|
+
Jump to a binding further up the stack, popping all bindings below.
|
12
|
+
BANNER
|
10
13
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
14
|
+
def process(break_level)
|
15
|
+
break_level = break_level.to_i
|
16
|
+
nesting_level = pry_instance.binding_stack.size - 1
|
17
|
+
max_nest_level = nesting_level - 1
|
15
18
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
19
|
+
case break_level
|
20
|
+
when nesting_level
|
21
|
+
output.puts "Already at nesting level #{nesting_level}"
|
22
|
+
when 0..max_nest_level
|
23
|
+
pry_instance.binding_stack = pry_instance.binding_stack[0..break_level]
|
24
|
+
else
|
25
|
+
output.puts "Invalid nest level. Must be between 0 and " \
|
26
|
+
"#{max_nest_level}. Got #{break_level}."
|
27
|
+
end
|
24
28
|
end
|
25
29
|
end
|
26
|
-
end
|
27
30
|
|
28
|
-
|
31
|
+
Pry::Commands.add_command(Pry::Command::JumpTo)
|
32
|
+
end
|
29
33
|
end
|
@@ -1,35 +1,42 @@
|
|
1
|
-
|
2
|
-
match 'list-inspectors'
|
3
|
-
group 'Input and Output'
|
4
|
-
description 'List the inspector procs available for use.'
|
5
|
-
banner <<-BANNER
|
6
|
-
Usage: list-inspectors
|
1
|
+
# frozen_string_literal: true
|
7
2
|
|
8
|
-
|
9
|
-
|
10
|
-
|
3
|
+
class Pry
|
4
|
+
class Command
|
5
|
+
class ListInspectors < Pry::ClassCommand
|
6
|
+
match 'list-inspectors'
|
7
|
+
group 'Input and Output'
|
8
|
+
description 'List the inspector procs available for use.'
|
9
|
+
banner <<-BANNER
|
10
|
+
Usage: list-inspectors
|
11
11
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
output.write "Name: #{bold(name)}"
|
16
|
-
output.puts selected_inspector?(inspector) ? selected_text : ""
|
17
|
-
output.puts inspector[:description]
|
18
|
-
output.puts
|
19
|
-
end
|
20
|
-
end
|
12
|
+
List the inspector procs available to print return values. You can use
|
13
|
+
change-inspector to switch between them.
|
14
|
+
BANNER
|
21
15
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
16
|
+
def process
|
17
|
+
output.puts heading("Available inspectors") + "\n"
|
18
|
+
inspector_map.each do |name, inspector|
|
19
|
+
output.write "Name: #{bold(name)}"
|
20
|
+
output.puts selected_inspector?(inspector) ? selected_text : ""
|
21
|
+
output.puts inspector[:description]
|
22
|
+
output.puts
|
23
|
+
end
|
24
|
+
end
|
26
25
|
|
27
|
-
|
28
|
-
red " (selected) "
|
29
|
-
end
|
26
|
+
private
|
30
27
|
|
31
|
-
|
32
|
-
|
28
|
+
def inspector_map
|
29
|
+
Pry::Inspector::MAP
|
30
|
+
end
|
31
|
+
|
32
|
+
def selected_text
|
33
|
+
red " (selected) "
|
34
|
+
end
|
35
|
+
|
36
|
+
def selected_inspector?(inspector)
|
37
|
+
pry_instance.print == inspector[:value]
|
38
|
+
end
|
39
|
+
Pry::Commands.add_command(self)
|
40
|
+
end
|
33
41
|
end
|
34
|
-
Pry::Commands.add_command(self)
|
35
42
|
end
|
data/lib/pry/commands/ls.rb
CHANGED
@@ -1,113 +1,135 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
2
3
|
class Pry
|
3
|
-
class Command
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
opt
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
opt.on :
|
4
|
+
class Command
|
5
|
+
class Ls < Pry::ClassCommand
|
6
|
+
DEFAULT_OPTIONS = {
|
7
|
+
heading_color: :bright_blue,
|
8
|
+
public_method_color: :default,
|
9
|
+
private_method_color: :blue,
|
10
|
+
protected_method_color: :blue,
|
11
|
+
method_missing_color: :bright_red,
|
12
|
+
local_var_color: :yellow,
|
13
|
+
pry_var_color: :default, # e.g. _, pry_instance, _file_
|
14
|
+
instance_var_color: :blue, # e.g. @foo
|
15
|
+
class_var_color: :bright_blue, # e.g. @@foo
|
16
|
+
global_var_color: :default, # e.g. $CODERAY_DEBUG, $eventmachine_library
|
17
|
+
builtin_global_color: :cyan, # e.g. $stdin, $-w, $PID
|
18
|
+
pseudo_global_color: :cyan, # e.g. $~, $1..$9, $LAST_MATCH_INFO
|
19
|
+
constant_color: :default, # e.g. VERSION, ARGF
|
20
|
+
class_constant_color: :blue, # e.g. Object, Kernel
|
21
|
+
exception_constant_color: :magenta, # e.g. Exception, RuntimeError
|
22
|
+
unloaded_constant_color: :yellow, # Any constant that is still in .autoload? state
|
23
|
+
separator: " ",
|
24
|
+
ceiling: [Object, Module, Class]
|
25
|
+
}.freeze
|
26
|
+
|
27
|
+
match 'ls'
|
28
|
+
group 'Context'
|
29
|
+
description 'Show the list of vars and methods in the current scope.'
|
30
|
+
command_options shellwords: false, interpolate: false
|
31
|
+
|
32
|
+
banner <<-'BANNER'
|
33
|
+
Usage: ls [-m|-M|-p|-pM] [-q|-v] [-c|-i] [Object]
|
34
|
+
ls [-g] [-l]
|
35
|
+
|
36
|
+
ls shows you which methods, constants and variables are accessible to Pry. By
|
37
|
+
default it shows you the local variables defined in the current shell, and any
|
38
|
+
public methods or instance variables defined on the current object.
|
39
|
+
|
40
|
+
The colours used are configurable using Pry.config.ls.*_color, and the separator
|
41
|
+
is Pry.config.ls.separator.
|
42
|
+
|
43
|
+
Pry.config.ls.ceiling is used to hide methods defined higher up in the
|
44
|
+
inheritance chain, this is by default set to [Object, Module, Class] so that
|
45
|
+
methods defined on all Objects are omitted. The -v flag can be used to ignore
|
46
|
+
this setting and show all methods, while the -q can be used to set the ceiling
|
47
|
+
much lower and show only methods defined on the object or its direct class.
|
48
|
+
|
49
|
+
Also check out `find-method` command (run `help find-method`).
|
50
|
+
BANNER
|
51
|
+
|
52
|
+
def options(opt)
|
53
|
+
opt.on :m, :methods, "Show public methods defined on the Object"
|
54
|
+
opt.on :M, "instance-methods", "Show public methods defined in a " \
|
55
|
+
"Module or Class"
|
56
|
+
opt.on :p, :ppp, "Show public, protected (in yellow) and private " \
|
57
|
+
"(in green) methods"
|
58
|
+
opt.on :q, :quiet, "Show only methods defined on object.singleton_class " \
|
59
|
+
"and object.class"
|
60
|
+
opt.on :v, :verbose, "Show methods and constants on all super-classes " \
|
61
|
+
"(ignores Pry.config.ls.ceiling)"
|
62
|
+
opt.on :g, :globals, "Show global variables, including those builtin to " \
|
63
|
+
"Ruby (in cyan)"
|
64
|
+
opt.on :l, :locals, "Show hash of local vars, sorted by descending size"
|
65
|
+
opt.on :c, :constants, "Show constants, highlighting classes (in blue), " \
|
66
|
+
"and exceptions (in purple).\n" \
|
67
|
+
"#{' ' * 32}Constants that are pending autoload? " \
|
68
|
+
"are also shown (in yellow)"
|
69
|
+
opt.on :i, :ivars, "Show instance variables (in blue) and class " \
|
70
|
+
"variables (in bright blue)"
|
71
|
+
opt.on :G, :grep, "Filter output by regular expression", argument: true
|
72
|
+
|
73
|
+
if Object.respond_to?(:deprecate_constant)
|
74
|
+
opt.on :d, :dconstants, "Show deprecated constants"
|
75
|
+
end
|
76
|
+
|
77
|
+
return unless Helpers::Platform.jruby?
|
78
|
+
|
79
|
+
opt.on :J, "all-java", "Show all the aliases for methods from java " \
|
80
|
+
"(default is to show only prettiest)"
|
64
81
|
end
|
65
|
-
|
66
|
-
|
82
|
+
|
83
|
+
# Exclude -q, -v and --grep because they,
|
84
|
+
# don't specify what the user wants to see.
|
85
|
+
def no_user_opts?
|
86
|
+
!(opts[:methods] || opts['instance-methods'] || opts[:ppp] ||
|
87
|
+
opts[:globals] || opts[:locals] || opts[:constants] || opts[:ivars])
|
67
88
|
end
|
68
|
-
end
|
69
89
|
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
90
|
+
def process
|
91
|
+
@interrogatee = args.empty? ? target_self : target.eval(args.join(' '))
|
92
|
+
raise_errors_if_arguments_are_weird
|
93
|
+
ls_entity = LsEntity.new(
|
94
|
+
interrogatee: @interrogatee,
|
95
|
+
no_user_opts: no_user_opts?,
|
96
|
+
opts: opts,
|
97
|
+
args: args,
|
98
|
+
pry_instance: pry_instance
|
99
|
+
)
|
76
100
|
|
77
|
-
|
78
|
-
|
79
|
-
raise_errors_if_arguments_are_weird
|
80
|
-
ls_entity = LsEntity.new({
|
81
|
-
interrogatee: @interrogatee,
|
82
|
-
no_user_opts: no_user_opts?,
|
83
|
-
opts: opts,
|
84
|
-
args: args,
|
85
|
-
_pry_: _pry_
|
86
|
-
})
|
87
|
-
|
88
|
-
_pry_.pager.page ls_entity.entities_table
|
89
|
-
end
|
101
|
+
pry_instance.pager.page ls_entity.entities_table
|
102
|
+
end
|
90
103
|
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
[
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
+
private
|
105
|
+
|
106
|
+
def error_list
|
107
|
+
any_args = args.any?
|
108
|
+
# rubocop:disable Style/CaseEquality
|
109
|
+
non_mod_interrogatee = !(Module === @interrogatee)
|
110
|
+
# rubocop:enable Style/CaseEquality
|
111
|
+
[
|
112
|
+
['-l does not make sense with a specified Object', :locals, any_args],
|
113
|
+
['-g does not make sense with a specified Object', :globals, any_args],
|
114
|
+
['-q does not make sense with -v', :quiet, opts.present?(:verbose)],
|
115
|
+
[
|
116
|
+
'-M only makes sense with a Module or a Class', 'instance-methods',
|
117
|
+
non_mod_interrogatee
|
118
|
+
],
|
119
|
+
[
|
120
|
+
'-c only makes sense with a Module or a Class', :constants,
|
121
|
+
any_args && non_mod_interrogatee
|
122
|
+
]
|
123
|
+
]
|
124
|
+
end
|
104
125
|
|
105
|
-
|
106
|
-
|
107
|
-
|
126
|
+
def raise_errors_if_arguments_are_weird
|
127
|
+
error_list.each do |message, option, invalid_expr|
|
128
|
+
raise Pry::CommandError, message if opts.present?(option) && invalid_expr
|
129
|
+
end
|
108
130
|
end
|
109
131
|
end
|
110
|
-
end
|
111
132
|
|
112
|
-
|
133
|
+
Pry::Commands.add_command(Pry::Command::Ls)
|
134
|
+
end
|
113
135
|
end
|
@@ -1,55 +1,72 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
2
|
|
3
3
|
class Pry
|
4
|
-
class Command
|
5
|
-
class
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
@no_user_opts = no_user_opts
|
14
|
-
@default_switch = opts[:constants]
|
15
|
-
@verbose_switch = opts[:verbose]
|
16
|
-
@dconstants = opts.dconstants?
|
17
|
-
end
|
4
|
+
class Command
|
5
|
+
class Ls < Pry::ClassCommand
|
6
|
+
class Constants < Pry::Command::Ls::Formatter
|
7
|
+
DEPRECATED_CONSTANTS = [
|
8
|
+
:Data, :Fixnum, :Bignum, :TimeoutError, :NIL, :FALSE, :TRUE
|
9
|
+
].tap do |constants|
|
10
|
+
constants << :JavaPackageModuleTemplate if Helpers::Platform.jruby?
|
11
|
+
end
|
12
|
+
include Pry::Command::Ls::Interrogatable
|
18
13
|
|
19
|
-
|
20
|
-
|
21
|
-
|
14
|
+
def initialize(interrogatee, no_user_opts, opts, pry_instance)
|
15
|
+
super(pry_instance)
|
16
|
+
@interrogatee = interrogatee
|
17
|
+
@no_user_opts = no_user_opts
|
18
|
+
@default_switch = opts[:constants]
|
19
|
+
@verbose_switch = opts[:verbose]
|
20
|
+
@dconstants = opts.dconstants?
|
21
|
+
end
|
22
22
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
output_section('constants', grep.regexp[format(mod, constants)])
|
27
|
-
end
|
23
|
+
def correct_opts?
|
24
|
+
super || (@no_user_opts && interrogating_a_module?)
|
25
|
+
end
|
28
26
|
|
29
|
-
|
27
|
+
def output_self
|
28
|
+
mod = interrogatee_mod
|
29
|
+
constants = WrappedModule.new(mod).constants(@verbose_switch)
|
30
|
+
output_section('constants', grep.regexp[format(mod, constants)])
|
31
|
+
end
|
30
32
|
|
31
|
-
|
32
|
-
@dconstants == true
|
33
|
-
end
|
33
|
+
private
|
34
34
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
35
|
+
def show_deprecated_constants?
|
36
|
+
@dconstants == true
|
37
|
+
end
|
38
|
+
|
39
|
+
def format(mod, constants)
|
40
|
+
constants.sort_by(&:downcase).map do |name|
|
41
|
+
if Object.respond_to?(:deprecate_constant) &&
|
42
|
+
DEPRECATED_CONSTANTS.include?(name) &&
|
43
|
+
!show_deprecated_constants?
|
44
|
+
next
|
45
|
+
end
|
42
46
|
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
47
|
+
if (const = (begin
|
48
|
+
!mod.autoload?(name) && (mod.const_get(name) || true)
|
49
|
+
rescue StandardError
|
50
|
+
nil
|
51
|
+
end))
|
52
|
+
if begin
|
53
|
+
const < Exception
|
54
|
+
rescue StandardError
|
55
|
+
false
|
56
|
+
end
|
57
|
+
color(:exception_constant, name)
|
58
|
+
elsif begin
|
59
|
+
mod.const_get(name).is_a?(Module)
|
60
|
+
rescue StandardError
|
61
|
+
false
|
62
|
+
end
|
63
|
+
color(:class_constant, name)
|
64
|
+
else
|
65
|
+
color(:constant, name)
|
66
|
+
end
|
48
67
|
else
|
49
|
-
color(:
|
68
|
+
color(:unloaded_constant, name)
|
50
69
|
end
|
51
|
-
else
|
52
|
-
color(:unloaded_constant, name)
|
53
70
|
end
|
54
71
|
end
|
55
72
|
end
|