pry 0.10.3 → 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.
Files changed (159) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +439 -16
  3. data/LICENSE +1 -1
  4. data/README.md +362 -302
  5. data/bin/pry +4 -7
  6. data/lib/pry/basic_object.rb +10 -0
  7. data/lib/pry/block_command.rb +22 -0
  8. data/lib/pry/class_command.rb +194 -0
  9. data/lib/pry/cli.rb +84 -97
  10. data/lib/pry/code/code_file.rb +37 -26
  11. data/lib/pry/code/code_range.rb +7 -5
  12. data/lib/pry/code/loc.rb +26 -13
  13. data/lib/pry/code.rb +42 -31
  14. data/lib/pry/code_object.rb +53 -28
  15. data/lib/pry/color_printer.rb +46 -35
  16. data/lib/pry/command.rb +197 -369
  17. data/lib/pry/command_set.rb +89 -114
  18. data/lib/pry/command_state.rb +31 -0
  19. data/lib/pry/commands/amend_line.rb +86 -82
  20. data/lib/pry/commands/bang.rb +18 -14
  21. data/lib/pry/commands/bang_pry.rb +15 -11
  22. data/lib/pry/commands/cat/abstract_formatter.rb +23 -18
  23. data/lib/pry/commands/cat/exception_formatter.rb +85 -72
  24. data/lib/pry/commands/cat/file_formatter.rb +56 -46
  25. data/lib/pry/commands/cat/input_expression_formatter.rb +35 -30
  26. data/lib/pry/commands/cat.rb +62 -54
  27. data/lib/pry/commands/cd.rb +40 -35
  28. data/lib/pry/commands/change_inspector.rb +29 -22
  29. data/lib/pry/commands/change_prompt.rb +48 -23
  30. data/lib/pry/commands/clear_screen.rb +20 -0
  31. data/lib/pry/commands/code_collector.rb +148 -131
  32. data/lib/pry/commands/disable_pry.rb +23 -19
  33. data/lib/pry/commands/easter_eggs.rb +23 -34
  34. data/lib/pry/commands/edit/exception_patcher.rb +21 -17
  35. data/lib/pry/commands/edit/file_and_line_locator.rb +34 -23
  36. data/lib/pry/commands/edit.rb +185 -157
  37. data/lib/pry/commands/exit.rb +40 -35
  38. data/lib/pry/commands/exit_all.rb +24 -20
  39. data/lib/pry/commands/exit_program.rb +20 -16
  40. data/lib/pry/commands/find_method.rb +168 -162
  41. data/lib/pry/commands/fix_indent.rb +16 -12
  42. data/lib/pry/commands/help.rb +140 -133
  43. data/lib/pry/commands/hist.rb +151 -149
  44. data/lib/pry/commands/import_set.rb +20 -15
  45. data/lib/pry/commands/jump_to.rb +25 -21
  46. data/lib/pry/commands/list_inspectors.rb +35 -28
  47. data/lib/pry/commands/ls/constants.rb +59 -31
  48. data/lib/pry/commands/ls/formatter.rb +42 -36
  49. data/lib/pry/commands/ls/globals.rb +38 -36
  50. data/lib/pry/commands/ls/grep.rb +17 -15
  51. data/lib/pry/commands/ls/instance_vars.rb +29 -28
  52. data/lib/pry/commands/ls/interrogatable.rb +18 -12
  53. data/lib/pry/commands/ls/jruby_hacks.rb +47 -41
  54. data/lib/pry/commands/ls/local_names.rb +26 -24
  55. data/lib/pry/commands/ls/local_vars.rb +38 -30
  56. data/lib/pry/commands/ls/ls_entity.rb +47 -52
  57. data/lib/pry/commands/ls/methods.rb +49 -51
  58. data/lib/pry/commands/ls/methods_helper.rb +46 -42
  59. data/lib/pry/commands/ls/self_methods.rb +23 -21
  60. data/lib/pry/commands/ls.rb +124 -103
  61. data/lib/pry/commands/nesting.rb +21 -17
  62. data/lib/pry/commands/play.rb +92 -82
  63. data/lib/pry/commands/pry_backtrace.rb +22 -17
  64. data/lib/pry/commands/pry_version.rb +15 -11
  65. data/lib/pry/commands/raise_up.rb +33 -27
  66. data/lib/pry/commands/reload_code.rb +60 -48
  67. data/lib/pry/commands/reset.rb +16 -12
  68. data/lib/pry/commands/ri.rb +57 -42
  69. data/lib/pry/commands/save_file.rb +45 -43
  70. data/lib/pry/commands/shell_command.rb +56 -29
  71. data/lib/pry/commands/shell_mode.rb +22 -18
  72. data/lib/pry/commands/show_doc.rb +80 -70
  73. data/lib/pry/commands/show_info.rb +194 -155
  74. data/lib/pry/commands/show_input.rb +16 -11
  75. data/lib/pry/commands/show_source.rb +110 -42
  76. data/lib/pry/commands/stat.rb +35 -31
  77. data/lib/pry/commands/switch_to.rb +21 -15
  78. data/lib/pry/commands/toggle_color.rb +20 -16
  79. data/lib/pry/commands/watch_expression/expression.rb +32 -27
  80. data/lib/pry/commands/watch_expression.rb +89 -84
  81. data/lib/pry/commands/whereami.rb +156 -141
  82. data/lib/pry/commands/wtf.rb +78 -40
  83. data/lib/pry/config/attributable.rb +22 -0
  84. data/lib/pry/config/lazy_value.rb +29 -0
  85. data/lib/pry/config/memoized_value.rb +34 -0
  86. data/lib/pry/config/value.rb +24 -0
  87. data/lib/pry/config.rb +310 -20
  88. data/lib/pry/control_d_handler.rb +28 -0
  89. data/lib/pry/core_extensions.rb +22 -9
  90. data/lib/pry/editor.rb +56 -34
  91. data/lib/pry/env.rb +18 -0
  92. data/lib/pry/exception_handler.rb +43 -0
  93. data/lib/pry/exceptions.rb +13 -18
  94. data/lib/pry/forwardable.rb +27 -0
  95. data/lib/pry/helpers/base_helpers.rb +20 -62
  96. data/lib/pry/helpers/command_helpers.rb +52 -62
  97. data/lib/pry/helpers/documentation_helpers.rb +21 -12
  98. data/lib/pry/helpers/options_helpers.rb +15 -8
  99. data/lib/pry/helpers/platform.rb +55 -0
  100. data/lib/pry/helpers/table.rb +44 -32
  101. data/lib/pry/helpers/text.rb +96 -85
  102. data/lib/pry/helpers.rb +3 -0
  103. data/lib/pry/history.rb +81 -55
  104. data/lib/pry/hooks.rb +60 -110
  105. data/lib/pry/indent.rb +74 -68
  106. data/lib/pry/input_completer.rb +199 -158
  107. data/lib/pry/input_lock.rb +7 -10
  108. data/lib/pry/inspector.rb +36 -24
  109. data/lib/pry/last_exception.rb +45 -45
  110. data/lib/pry/method/disowned.rb +19 -5
  111. data/lib/pry/method/patcher.rb +14 -8
  112. data/lib/pry/method/weird_method_locator.rb +79 -45
  113. data/lib/pry/method.rb +178 -124
  114. data/lib/pry/object_path.rb +37 -28
  115. data/lib/pry/output.rb +102 -16
  116. data/lib/pry/pager.rb +187 -174
  117. data/lib/pry/prompt.rb +213 -25
  118. data/lib/pry/pry_class.rb +119 -98
  119. data/lib/pry/pry_instance.rb +261 -224
  120. data/lib/pry/repl.rb +83 -29
  121. data/lib/pry/repl_file_loader.rb +27 -22
  122. data/lib/pry/ring.rb +89 -0
  123. data/lib/pry/slop/LICENSE +20 -0
  124. data/lib/pry/slop/commands.rb +190 -0
  125. data/lib/pry/slop/option.rb +210 -0
  126. data/lib/pry/slop.rb +672 -0
  127. data/lib/pry/syntax_highlighter.rb +26 -0
  128. data/lib/pry/system_command_handler.rb +17 -0
  129. data/lib/pry/testable/evalable.rb +24 -0
  130. data/lib/pry/testable/mockable.rb +22 -0
  131. data/lib/pry/testable/pry_tester.rb +88 -0
  132. data/lib/pry/testable/utility.rb +34 -0
  133. data/lib/pry/testable/variables.rb +52 -0
  134. data/lib/pry/testable.rb +68 -0
  135. data/lib/pry/version.rb +3 -1
  136. data/lib/pry/warning.rb +20 -0
  137. data/lib/pry/{module_candidate.rb → wrapped_module/candidate.rb} +35 -32
  138. data/lib/pry/wrapped_module.rb +68 -63
  139. data/lib/pry.rb +133 -149
  140. metadata +58 -69
  141. data/lib/pry/commands/disabled_commands.rb +0 -2
  142. data/lib/pry/commands/gem_cd.rb +0 -26
  143. data/lib/pry/commands/gem_install.rb +0 -32
  144. data/lib/pry/commands/gem_list.rb +0 -33
  145. data/lib/pry/commands/gem_open.rb +0 -29
  146. data/lib/pry/commands/gist.rb +0 -101
  147. data/lib/pry/commands/install_command.rb +0 -53
  148. data/lib/pry/commands/list_prompts.rb +0 -35
  149. data/lib/pry/commands/simple_prompt.rb +0 -22
  150. data/lib/pry/commands.rb +0 -6
  151. data/lib/pry/config/behavior.rb +0 -139
  152. data/lib/pry/config/convenience.rb +0 -25
  153. data/lib/pry/config/default.rb +0 -161
  154. data/lib/pry/history_array.rb +0 -121
  155. data/lib/pry/plugins.rb +0 -103
  156. data/lib/pry/rbx_path.rb +0 -22
  157. data/lib/pry/rubygem.rb +0 -82
  158. data/lib/pry/terminal.rb +0 -79
  159. data/lib/pry/test/helper.rb +0 -170
@@ -1,22 +1,27 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Pry
2
- class Command::ImportSet < Pry::ClassCommand
3
- match 'import-set'
4
- group 'Commands'
5
- # TODO: Provide a better description with examples and a general conception
6
- # of this command.
7
- description 'Import a Pry command set.'
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
- banner <<-'BANNER'
10
- Import a Pry command set.
11
- BANNER
12
+ banner <<-'BANNER'
13
+ Import a Pry command set.
14
+ BANNER
12
15
 
13
- def process(command_set_name)
14
- raise CommandError, "Provide a command set name" if command_set.nil?
16
+ # TODO: resolve unused parameter.
17
+ def process(_command_set_name)
18
+ raise CommandError, "Provide a command set name" if command_set.nil?
15
19
 
16
- set = target.eval(arg_string)
17
- _pry_.commands.import set
20
+ set = target.eval(arg_string)
21
+ pry_instance.commands.import set
22
+ end
18
23
  end
19
- end
20
24
 
21
- Pry::Commands.add_command(Pry::Command::ImportSet)
25
+ Pry::Commands.add_command(Pry::Command::ImportSet)
26
+ end
22
27
  end
@@ -1,29 +1,33 @@
1
- class Pry
2
- class Command::JumpTo < Pry::ClassCommand
3
- match 'jump-to'
4
- group 'Navigating Pry'
5
- description 'Jump to a binding further up the stack.'
6
-
7
- banner <<-'BANNER'
8
- Jump to a binding further up the stack, popping all bindings below.
9
- BANNER
1
+ # frozen_string_literal: true
10
2
 
11
- def process(break_level)
12
- break_level = break_level.to_i
13
- nesting_level = _pry_.binding_stack.size - 1
3
+ class Pry
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.'
14
9
 
15
- case break_level
16
- when nesting_level
17
- output.puts "Already at nesting level #{nesting_level}"
18
- when (0...nesting_level)
19
- _pry_.binding_stack.slice!(break_level + 1, _pry_.binding_stack.size)
10
+ banner <<-'BANNER'
11
+ Jump to a binding further up the stack, popping all bindings below.
12
+ BANNER
20
13
 
21
- else
14
+ def process(break_level)
15
+ break_level = break_level.to_i
16
+ nesting_level = pry_instance.binding_stack.size - 1
22
17
  max_nest_level = nesting_level - 1
23
- output.puts "Invalid nest level. Must be between 0 and #{max_nest_level}. Got #{break_level}."
18
+
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
- Pry::Commands.add_command(Pry::Command::JumpTo)
31
+ Pry::Commands.add_command(Pry::Command::JumpTo)
32
+ end
29
33
  end
@@ -1,35 +1,42 @@
1
- class Pry::Command::ListInspectors < Pry::ClassCommand
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
- List the inspector procs available to print return values. You can use
9
- change-inspector to switch between them.
10
- BANNER
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
- def process
13
- output.puts heading("Available inspectors") + "\n"
14
- inspector_map.each do |name, inspector|
15
- output.write "Name: #{text.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
- private
23
- def inspector_map
24
- Pry::Inspector::MAP
25
- end
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
- def selected_text
28
- text.red " (selected) "
29
- end
26
+ private
30
27
 
31
- def selected_inspector?(inspector)
32
- _pry_.print == inspector[:value]
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
@@ -1,47 +1,75 @@
1
- require 'pry/commands/ls/interrogatable'
1
+ # frozen_string_literal: true
2
2
 
3
3
  class Pry
4
- class Command::Ls < Pry::ClassCommand
5
- class Constants < Pry::Command::Ls::Formatter
6
- include Pry::Command::Ls::Interrogatable
4
+ class Command
5
+ class Ls < Pry::ClassCommand
6
+ class Constants < Pry::Command::Ls::Formatter
7
+ DEPRECATED_CONSTANTS = %i[
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
7
13
 
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
8
22
 
9
- def initialize(interrogatee, no_user_opts, opts, _pry_)
10
- super(_pry_)
11
- @interrogatee = interrogatee
12
- @no_user_opts = no_user_opts
13
- @default_switch = opts[:constants]
14
- @verbose_switch = opts[:verbose]
15
- end
23
+ def correct_opts?
24
+ super || (@no_user_opts && interrogating_a_module?)
25
+ end
16
26
 
17
- def correct_opts?
18
- super || (@no_user_opts && interrogating_a_module?)
19
- end
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
20
32
 
21
- def output_self
22
- mod = interrogatee_mod
23
- constants = WrappedModule.new(mod).constants(@verbose_switch)
24
- output_section('constants', grep.regexp[format(mod, constants)])
25
- end
33
+ private
26
34
 
27
- private
35
+ def show_deprecated_constants?
36
+ @dconstants == true
37
+ end
28
38
 
29
- def format(mod, constants)
30
- constants.sort_by(&:downcase).map do |name|
31
- if const = (!mod.autoload?(name) && (mod.const_get(name) || true) rescue nil)
32
- if (const < Exception rescue false)
33
- color(:exception_constant, name)
34
- elsif (Module === mod.const_get(name) rescue false)
35
- color(:class_constant, name)
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
46
+
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
36
67
  else
37
- color(:constant, name)
68
+ color(:unloaded_constant, name)
38
69
  end
39
- else
40
- color(:unloaded_constant, name)
41
70
  end
42
71
  end
43
72
  end
44
-
45
73
  end
46
74
  end
47
75
  end
@@ -1,49 +1,55 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Pry
2
- class Command::Ls < Pry::ClassCommand
3
- class Formatter
4
- attr_writer :grep
5
- attr_reader :_pry_
6
-
7
- def initialize(_pry_)
8
- @_pry_ = _pry_
9
- @target = _pry_.current_context
10
- end
4
+ class Command
5
+ class Ls < Pry::ClassCommand
6
+ class Formatter
7
+ attr_writer :grep
8
+ attr_reader :pry_instance
11
9
 
12
- def write_out
13
- return false unless correct_opts?
14
- output_self
15
- end
10
+ def initialize(pry_instance)
11
+ @pry_instance = pry_instance
12
+ @target = pry_instance.current_context
13
+ @default_switch = nil
14
+ end
16
15
 
17
- private
16
+ def write_out
17
+ return false unless correct_opts?
18
18
 
19
- def color(type, str)
20
- Pry::Helpers::Text.send _pry_.config.ls["#{type}_color"], str
21
- end
19
+ output_self
20
+ end
22
21
 
23
- # Add a new section to the output.
24
- # Outputs nothing if the section would be empty.
25
- def output_section(heading, body)
26
- return '' if body.compact.empty?
27
- fancy_heading = Pry::Helpers::Text.bold(color(:heading, heading))
28
- Pry::Helpers.tablify_or_one_line(fancy_heading, body)
29
- end
22
+ private
30
23
 
31
- def format_value(value)
32
- Pry::ColorPrinter.pp(value, '')
33
- end
24
+ def color(type, str)
25
+ Pry::Helpers::Text.send pry_instance.config.ls.send("#{type}_color"), str
26
+ end
34
27
 
35
- def correct_opts?
36
- @default_switch
37
- end
28
+ # Add a new section to the output.
29
+ # Outputs nothing if the section would be empty.
30
+ def output_section(heading, body)
31
+ return '' if body.compact.empty?
38
32
 
39
- def output_self
40
- raise NotImplementedError
41
- end
33
+ fancy_heading = Pry::Helpers::Text.bold(color(:heading, heading))
34
+ Pry::Helpers.tablify_or_one_line(fancy_heading, body, @pry_instance)
35
+ end
42
36
 
43
- def grep
44
- @grep || proc { |x| x }
45
- end
37
+ def format_value(value)
38
+ Pry::ColorPrinter.pp(value, ''.dup)
39
+ end
46
40
 
41
+ def correct_opts?
42
+ @default_switch
43
+ end
44
+
45
+ def output_self
46
+ raise NotImplementedError
47
+ end
48
+
49
+ def grep
50
+ @grep || proc { |x| x }
51
+ end
52
+ end
47
53
  end
48
54
  end
49
55
  end
@@ -1,48 +1,50 @@
1
- class Pry
2
- class Command::Ls < Pry::ClassCommand
3
- class Globals < Pry::Command::Ls::Formatter
1
+ # frozen_string_literal: true
4
2
 
5
- # Taken from "puts global_variables.inspect".
6
- BUILTIN_GLOBALS =
7
- %w($" $$ $* $, $-0 $-F $-I $-K $-W $-a $-d $-i $-l $-p $-v $-w $. $/ $\\
8
- $: $; $< $= $> $0 $ARGV $CONSOLE $DEBUG $DEFAULT_INPUT $DEFAULT_OUTPUT
9
- $FIELD_SEPARATOR $FILENAME $FS $IGNORECASE $INPUT_LINE_NUMBER
10
- $INPUT_RECORD_SEPARATOR $KCODE $LOADED_FEATURES $LOAD_PATH $NR $OFS
11
- $ORS $OUTPUT_FIELD_SEPARATOR $OUTPUT_RECORD_SEPARATOR $PID $PROCESS_ID
12
- $PROGRAM_NAME $RS $VERBOSE $deferr $defout $stderr $stdin $stdout)
3
+ class Pry
4
+ class Command
5
+ class Ls < Pry::ClassCommand
6
+ class Globals < Pry::Command::Ls::Formatter
7
+ # Taken from "puts global_variables.inspect".
8
+ BUILTIN_GLOBALS =
9
+ %w[$" $$ $* $, $-0 $-F $-I $-K $-W $-a $-d $-i $-l $-p $-v $-w $. $/ $\\
10
+ $: $; $< $= $> $0 $ARGV $CONSOLE $DEBUG $DEFAULT_INPUT $DEFAULT_OUTPUT
11
+ $FIELD_SEPARATOR $FILENAME $FS $IGNORECASE $INPUT_LINE_NUMBER
12
+ $INPUT_RECORD_SEPARATOR $KCODE $LOADED_FEATURES $LOAD_PATH $NR $OFS
13
+ $ORS $OUTPUT_FIELD_SEPARATOR $OUTPUT_RECORD_SEPARATOR $PID $PROCESS_ID
14
+ $PROGRAM_NAME $RS $VERBOSE $deferr $defout $stderr $stdin $stdout].freeze
13
15
 
14
- # `$SAFE` and `$?` are thread-local, the exception stuff only works in a
15
- # rescue clause, everything else is basically a local variable with a `$`
16
- # in its name.
17
- PSEUDO_GLOBALS =
18
- %w($! $' $& $` $@ $? $+ $_ $~ $1 $2 $3 $4 $5 $6 $7 $8 $9
19
- $CHILD_STATUS $SAFE $ERROR_INFO $ERROR_POSITION $LAST_MATCH_INFO
20
- $LAST_PAREN_MATCH $LAST_READ_LINE $MATCH $POSTMATCH $PREMATCH)
16
+ # `$SAFE` and `$?` are thread-local, the exception stuff only works in a
17
+ # rescue clause, everything else is basically a local variable with a `$`
18
+ # in its name.
19
+ PSEUDO_GLOBALS =
20
+ %w[$! $' $& $` $@ $? $+ $_ $~ $1 $2 $3 $4 $5 $6 $7 $8 $9
21
+ $CHILD_STATUS $SAFE $ERROR_INFO $ERROR_POSITION $LAST_MATCH_INFO
22
+ $LAST_PAREN_MATCH $LAST_READ_LINE $MATCH $POSTMATCH $PREMATCH].freeze
21
23
 
22
- def initialize(opts, _pry_)
23
- super(_pry_)
24
- @default_switch = opts[:globals]
25
- end
24
+ def initialize(opts, pry_instance)
25
+ super(pry_instance)
26
+ @default_switch = opts[:globals]
27
+ end
26
28
 
27
- def output_self
28
- variables = format(@target.eval('global_variables'))
29
- output_section('global variables', grep.regexp[variables])
30
- end
29
+ def output_self
30
+ variables = format(@target.eval('global_variables'))
31
+ output_section('global variables', grep.regexp[variables])
32
+ end
31
33
 
32
- private
34
+ private
33
35
 
34
- def format(globals)
35
- globals.map(&:to_s).sort_by(&:downcase).map do |name|
36
- if PSEUDO_GLOBALS.include?(name)
37
- color(:pseudo_global, name)
38
- elsif BUILTIN_GLOBALS.include?(name)
39
- color(:builtin_global, name)
40
- else
41
- color(:global_var, name)
36
+ def format(globals)
37
+ globals.map(&:to_s).sort_by(&:downcase).map do |name|
38
+ if PSEUDO_GLOBALS.include?(name)
39
+ color(:pseudo_global, name)
40
+ elsif BUILTIN_GLOBALS.include?(name)
41
+ color(:builtin_global, name)
42
+ else
43
+ color(:global_var, name)
44
+ end
42
45
  end
43
46
  end
44
47
  end
45
-
46
48
  end
47
49
  end
48
50
  end
@@ -1,21 +1,23 @@
1
- class Pry
2
- class Command::Ls < Pry::ClassCommand
3
- class Grep
1
+ # frozen_string_literal: true
4
2
 
5
- def initialize(grep_regexp)
6
- @grep_regexp = grep_regexp
7
- end
3
+ class Pry
4
+ class Command
5
+ class Ls < Pry::ClassCommand
6
+ class Grep
7
+ def initialize(grep_regexp)
8
+ @grep_regexp = grep_regexp
9
+ end
8
10
 
9
- def regexp
10
- proc { |x|
11
- if x.instance_of?(Array)
12
- x.grep(@grep_regexp)
13
- else
14
- x =~ @grep_regexp
15
- end
16
- }
11
+ def regexp
12
+ proc { |x|
13
+ if x.instance_of?(Array)
14
+ x.grep(@grep_regexp)
15
+ else
16
+ x =~ @grep_regexp
17
+ end
18
+ }
19
+ end
17
20
  end
18
-
19
21
  end
20
22
  end
21
23
  end
@@ -1,39 +1,40 @@
1
- require 'pry/commands/ls/interrogatable'
1
+ # frozen_string_literal: true
2
2
 
3
3
  class Pry
4
- class Command::Ls < Pry::ClassCommand
5
- class InstanceVars < Pry::Command::Ls::Formatter
6
- include Pry::Command::Ls::Interrogatable
4
+ class Command
5
+ class Ls < Pry::ClassCommand
6
+ class InstanceVars < Pry::Command::Ls::Formatter
7
+ include Pry::Command::Ls::Interrogatable
7
8
 
8
- def initialize(interrogatee, no_user_opts, opts, _pry_)
9
- super(_pry_)
10
- @interrogatee = interrogatee
11
- @no_user_opts = no_user_opts
12
- @default_switch = opts[:ivars]
13
- end
9
+ def initialize(interrogatee, no_user_opts, opts, pry_instance)
10
+ super(pry_instance)
11
+ @interrogatee = interrogatee
12
+ @no_user_opts = no_user_opts
13
+ @default_switch = opts[:ivars]
14
+ end
14
15
 
15
- def correct_opts?
16
- super || @no_user_opts
17
- end
16
+ def correct_opts?
17
+ super || @no_user_opts
18
+ end
18
19
 
19
- def output_self
20
- ivars = if Object === @interrogatee
21
- Pry::Method.safe_send(@interrogatee, :instance_variables)
22
- else
23
- [] #TODO: BasicObject support
24
- end
25
- kvars = Pry::Method.safe_send(interrogatee_mod, :class_variables)
26
- ivars_out = output_section('instance variables', format(:instance_var, ivars))
27
- kvars_out = output_section('class variables', format(:class_var, kvars))
28
- ivars_out + kvars_out
29
- end
20
+ def output_self
21
+ ivars = if Object === @interrogatee # rubocop:disable Style/CaseEquality
22
+ Pry::Method.safe_send(@interrogatee, :instance_variables)
23
+ else
24
+ [] # TODO: BasicObject support
25
+ end
26
+ kvars = Pry::Method.safe_send(interrogatee_mod, :class_variables)
27
+ ivars_out = output_section('instance variables', format(:instance_var, ivars))
28
+ kvars_out = output_section('class variables', format(:class_var, kvars))
29
+ ivars_out + kvars_out
30
+ end
30
31
 
31
- private
32
+ private
32
33
 
33
- def format(type, vars)
34
- vars.sort_by { |var| var.to_s.downcase }.map { |var| color(type, var) }
34
+ def format(type, vars)
35
+ vars.sort_by { |var| var.to_s.downcase }.map { |var| color(type, var) }
36
+ end
35
37
  end
36
-
37
38
  end
38
39
  end
39
40
  end
@@ -1,18 +1,24 @@
1
- module Pry::Command::Ls::Interrogatable
1
+ # frozen_string_literal: true
2
2
 
3
- private
3
+ class Pry
4
+ class Command
5
+ class Ls < Pry::ClassCommand
6
+ module Interrogatable
7
+ private
4
8
 
5
- def interrogating_a_module?
6
- Module === @interrogatee
7
- end
9
+ def interrogating_a_module?
10
+ Module === @interrogatee # rubocop:disable Style/CaseEquality
11
+ end
8
12
 
9
- def interrogatee_mod
10
- if interrogating_a_module?
11
- @interrogatee
12
- else
13
- singleton = Pry::Method.singleton_class_of(@interrogatee)
14
- singleton.ancestors.grep(::Class).reject { |c| c == singleton }.first
13
+ def interrogatee_mod
14
+ if interrogating_a_module?
15
+ @interrogatee
16
+ else
17
+ singleton = Pry::Method.singleton_class_of(@interrogatee)
18
+ singleton.ancestors.grep(::Class).reject { |c| c == singleton }.first
19
+ end
20
+ end
21
+ end
15
22
  end
16
23
  end
17
-
18
24
  end