pry 0.9.12.2 → 0.14.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (237) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +1141 -0
  3. data/LICENSE +2 -2
  4. data/README.md +466 -0
  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 +97 -92
  10. data/lib/pry/code/code_file.rb +114 -0
  11. data/lib/pry/code/code_range.rb +7 -4
  12. data/lib/pry/code/loc.rb +27 -14
  13. data/lib/pry/code.rb +62 -90
  14. data/lib/pry/code_object.rb +83 -39
  15. data/lib/pry/color_printer.rb +66 -0
  16. data/lib/pry/command.rb +202 -371
  17. data/lib/pry/command_set.rb +151 -133
  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 -73
  24. data/lib/pry/commands/cat/file_formatter.rb +56 -63
  25. data/lib/pry/commands/cat/input_expression_formatter.rb +35 -30
  26. data/lib/pry/commands/cat.rb +64 -47
  27. data/lib/pry/commands/cd.rb +42 -26
  28. data/lib/pry/commands/change_inspector.rb +34 -0
  29. data/lib/pry/commands/change_prompt.rb +51 -0
  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 +33 -24
  36. data/lib/pry/commands/edit.rb +183 -167
  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 -17
  40. data/lib/pry/commands/find_method.rb +167 -167
  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 +153 -132
  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 +42 -0
  47. data/lib/pry/commands/ls/constants.rb +75 -0
  48. data/lib/pry/commands/ls/formatter.rb +55 -0
  49. data/lib/pry/commands/ls/globals.rb +50 -0
  50. data/lib/pry/commands/ls/grep.rb +23 -0
  51. data/lib/pry/commands/ls/instance_vars.rb +40 -0
  52. data/lib/pry/commands/ls/interrogatable.rb +24 -0
  53. data/lib/pry/commands/ls/jruby_hacks.rb +55 -0
  54. data/lib/pry/commands/ls/local_names.rb +37 -0
  55. data/lib/pry/commands/ls/local_vars.rb +47 -0
  56. data/lib/pry/commands/ls/ls_entity.rb +65 -0
  57. data/lib/pry/commands/ls/methods.rb +55 -0
  58. data/lib/pry/commands/ls/methods_helper.rb +50 -0
  59. data/lib/pry/commands/ls/self_methods.rb +34 -0
  60. data/lib/pry/commands/ls.rb +100 -303
  61. data/lib/pry/commands/nesting.rb +21 -17
  62. data/lib/pry/commands/play.rb +93 -49
  63. data/lib/pry/commands/pry_backtrace.rb +22 -18
  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 +57 -48
  67. data/lib/pry/commands/reset.rb +16 -12
  68. data/lib/pry/commands/ri.rb +57 -38
  69. data/lib/pry/commands/save_file.rb +45 -43
  70. data/lib/pry/commands/shell_command.rb +66 -34
  71. data/lib/pry/commands/shell_mode.rb +22 -20
  72. data/lib/pry/commands/show_doc.rb +80 -65
  73. data/lib/pry/commands/show_info.rb +193 -159
  74. data/lib/pry/commands/show_input.rb +16 -11
  75. data/lib/pry/commands/show_source.rb +113 -33
  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 +21 -13
  79. data/lib/pry/commands/watch_expression/expression.rb +43 -0
  80. data/lib/pry/commands/watch_expression.rb +110 -0
  81. data/lib/pry/commands/whereami.rb +157 -134
  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 +290 -220
  88. data/lib/pry/control_d_handler.rb +28 -0
  89. data/lib/pry/core_extensions.rb +50 -27
  90. data/lib/pry/editor.rb +130 -102
  91. data/lib/pry/env.rb +18 -0
  92. data/lib/pry/exception_handler.rb +43 -0
  93. data/lib/pry/exceptions.rb +73 -0
  94. data/lib/pry/forwardable.rb +27 -0
  95. data/lib/pry/helpers/base_helpers.rb +22 -151
  96. data/lib/pry/helpers/command_helpers.rb +55 -63
  97. data/lib/pry/helpers/documentation_helpers.rb +21 -13
  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 -86
  102. data/lib/pry/helpers.rb +3 -0
  103. data/lib/pry/history.rb +101 -70
  104. data/lib/pry/hooks.rb +67 -137
  105. data/lib/pry/indent.rb +79 -73
  106. data/lib/pry/input_completer.rb +283 -0
  107. data/lib/pry/input_lock.rb +129 -0
  108. data/lib/pry/inspector.rb +39 -0
  109. data/lib/pry/last_exception.rb +61 -0
  110. data/lib/pry/method/disowned.rb +19 -5
  111. data/lib/pry/{commands/edit/method_patcher.rb → method/patcher.rb} +51 -42
  112. data/lib/pry/method/weird_method_locator.rb +80 -44
  113. data/lib/pry/method.rb +225 -176
  114. data/lib/pry/object_path.rb +91 -0
  115. data/lib/pry/output.rb +136 -0
  116. data/lib/pry/pager.rb +227 -68
  117. data/lib/pry/prompt.rb +214 -0
  118. data/lib/pry/pry_class.rb +216 -289
  119. data/lib/pry/pry_instance.rb +438 -500
  120. data/lib/pry/repl.rb +256 -0
  121. data/lib/pry/repl_file_loader.rb +34 -35
  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} +36 -43
  138. data/lib/pry/wrapped_module.rb +102 -103
  139. data/lib/pry.rb +135 -261
  140. metadata +94 -283
  141. data/.document +0 -2
  142. data/.gitignore +0 -16
  143. data/.travis.yml +0 -21
  144. data/.yardopts +0 -1
  145. data/CHANGELOG +0 -534
  146. data/CONTRIBUTORS +0 -55
  147. data/Gemfile +0 -9
  148. data/Guardfile +0 -62
  149. data/README.markdown +0 -400
  150. data/Rakefile +0 -140
  151. data/TODO +0 -117
  152. data/lib/pry/commands/disabled_commands.rb +0 -2
  153. data/lib/pry/commands/gem_cd.rb +0 -26
  154. data/lib/pry/commands/gem_install.rb +0 -29
  155. data/lib/pry/commands/gem_list.rb +0 -33
  156. data/lib/pry/commands/gem_open.rb +0 -29
  157. data/lib/pry/commands/gist.rb +0 -102
  158. data/lib/pry/commands/install_command.rb +0 -51
  159. data/lib/pry/commands/simple_prompt.rb +0 -22
  160. data/lib/pry/commands.rb +0 -6
  161. data/lib/pry/completion.rb +0 -304
  162. data/lib/pry/custom_completions.rb +0 -6
  163. data/lib/pry/history_array.rb +0 -116
  164. data/lib/pry/plugins.rb +0 -103
  165. data/lib/pry/rbx_method.rb +0 -13
  166. data/lib/pry/rbx_path.rb +0 -22
  167. data/lib/pry/rubygem.rb +0 -74
  168. data/lib/pry/terminal.rb +0 -78
  169. data/lib/pry/test/helper.rb +0 -185
  170. data/man/pry.1 +0 -195
  171. data/man/pry.1.html +0 -204
  172. data/man/pry.1.ronn +0 -141
  173. data/pry.gemspec +0 -30
  174. data/spec/Procfile +0 -3
  175. data/spec/cli_spec.rb +0 -78
  176. data/spec/code_object_spec.rb +0 -277
  177. data/spec/code_spec.rb +0 -219
  178. data/spec/command_helpers_spec.rb +0 -29
  179. data/spec/command_integration_spec.rb +0 -644
  180. data/spec/command_set_spec.rb +0 -627
  181. data/spec/command_spec.rb +0 -821
  182. data/spec/commands/amend_line_spec.rb +0 -247
  183. data/spec/commands/bang_spec.rb +0 -19
  184. data/spec/commands/cat_spec.rb +0 -164
  185. data/spec/commands/cd_spec.rb +0 -250
  186. data/spec/commands/disable_pry_spec.rb +0 -25
  187. data/spec/commands/edit_spec.rb +0 -727
  188. data/spec/commands/exit_all_spec.rb +0 -34
  189. data/spec/commands/exit_program_spec.rb +0 -19
  190. data/spec/commands/exit_spec.rb +0 -34
  191. data/spec/commands/find_method_spec.rb +0 -70
  192. data/spec/commands/gem_list_spec.rb +0 -26
  193. data/spec/commands/gist_spec.rb +0 -79
  194. data/spec/commands/help_spec.rb +0 -56
  195. data/spec/commands/hist_spec.rb +0 -181
  196. data/spec/commands/jump_to_spec.rb +0 -15
  197. data/spec/commands/ls_spec.rb +0 -181
  198. data/spec/commands/play_spec.rb +0 -140
  199. data/spec/commands/raise_up_spec.rb +0 -56
  200. data/spec/commands/save_file_spec.rb +0 -177
  201. data/spec/commands/show_doc_spec.rb +0 -510
  202. data/spec/commands/show_input_spec.rb +0 -17
  203. data/spec/commands/show_source_spec.rb +0 -782
  204. data/spec/commands/whereami_spec.rb +0 -203
  205. data/spec/completion_spec.rb +0 -239
  206. data/spec/control_d_handler_spec.rb +0 -58
  207. data/spec/documentation_helper_spec.rb +0 -73
  208. data/spec/editor_spec.rb +0 -79
  209. data/spec/exception_whitelist_spec.rb +0 -21
  210. data/spec/fixtures/candidate_helper1.rb +0 -11
  211. data/spec/fixtures/candidate_helper2.rb +0 -8
  212. data/spec/fixtures/example.erb +0 -5
  213. data/spec/fixtures/example_nesting.rb +0 -33
  214. data/spec/fixtures/show_source_doc_examples.rb +0 -15
  215. data/spec/fixtures/testrc +0 -2
  216. data/spec/fixtures/testrcbad +0 -2
  217. data/spec/fixtures/whereami_helper.rb +0 -6
  218. data/spec/helper.rb +0 -34
  219. data/spec/helpers/bacon.rb +0 -86
  220. data/spec/helpers/mock_pry.rb +0 -43
  221. data/spec/helpers/table_spec.rb +0 -105
  222. data/spec/history_array_spec.rb +0 -67
  223. data/spec/hooks_spec.rb +0 -522
  224. data/spec/indent_spec.rb +0 -301
  225. data/spec/input_stack_spec.rb +0 -90
  226. data/spec/method_spec.rb +0 -482
  227. data/spec/prompt_spec.rb +0 -60
  228. data/spec/pry_defaults_spec.rb +0 -419
  229. data/spec/pry_history_spec.rb +0 -99
  230. data/spec/pry_output_spec.rb +0 -95
  231. data/spec/pry_spec.rb +0 -504
  232. data/spec/run_command_spec.rb +0 -25
  233. data/spec/sticky_locals_spec.rb +0 -157
  234. data/spec/syntax_checking_spec.rb +0 -81
  235. data/spec/wrapped_module_spec.rb +0 -261
  236. data/wiki/Customizing-pry.md +0 -397
  237. data/wiki/Home.md +0 -4
@@ -1,42 +1,47 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Pry
2
- class Command::Cat
3
- class InputExpressionFormatter < AbstractFormatter
4
- attr_accessor :input_expressions
5
- attr_accessor :opts
6
-
7
- def initialize(input_expressions, opts)
8
- @input_expressions = input_expressions
9
- @opts = opts
10
- end
4
+ class Command
5
+ class Cat
6
+ class InputExpressionFormatter < AbstractFormatter
7
+ attr_accessor :input_expressions
8
+ attr_accessor :opts
9
+
10
+ def initialize(input_expressions, opts)
11
+ @input_expressions = input_expressions
12
+ @opts = opts
13
+ end
11
14
 
12
- def format
13
- raise CommandError, "No input expressions!" if numbered_input_items.length < 1
15
+ def format
16
+ raise CommandError, "No input expressions!" if numbered_input_items.empty?
14
17
 
15
- if numbered_input_items.length > 1
16
- content = ""
17
- numbered_input_items.each do |i, s|
18
- content << "#{Helpers::Text.bold(i.to_s)}:\n" << decorate(Pry::Code(s).with_indentation(2)).to_s
19
- end
18
+ if numbered_input_items.length > 1
19
+ content = ''
20
+ numbered_input_items.each do |i, s|
21
+ content += "#{Helpers::Text.bold(i.to_s)}:\n"
22
+ content += decorate(Pry::Code(s).with_indentation(2)).to_s
23
+ end
20
24
 
21
- content
22
- else
23
- decorate(Pry::Code(selected_input_items.first)).to_s
25
+ content
26
+ else
27
+ decorate(Pry::Code(selected_input_items.first))
28
+ end
24
29
  end
25
- end
26
30
 
27
- private
31
+ private
28
32
 
29
- def selected_input_items
30
- input_expressions[normalized_expression_range] || []
31
- end
33
+ def selected_input_items
34
+ input_expressions[normalized_expression_range] || []
35
+ end
32
36
 
33
- def numbered_input_items
34
- @numbered_input_items ||= normalized_expression_range.zip(selected_input_items).
35
- reject { |_, s| s.nil? || s == "" }
36
- end
37
+ def numbered_input_items
38
+ @numbered_input_items ||= normalized_expression_range.zip(selected_input_items)
39
+ .reject { |_, s| s.nil? || s == "" }
40
+ end
37
41
 
38
- def normalized_expression_range
39
- absolute_index_range(opts[:i], input_expressions.length)
42
+ def normalized_expression_range
43
+ absolute_index_range(opts[:i], input_expressions.count)
44
+ end
40
45
  end
41
46
  end
42
47
  end
@@ -1,53 +1,70 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Pry
2
- class Command::Cat < Pry::ClassCommand
3
- require 'pry/commands/cat/abstract_formatter.rb'
4
- require 'pry/commands/cat/input_expression_formatter.rb'
5
- require 'pry/commands/cat/exception_formatter.rb'
6
- require 'pry/commands/cat/file_formatter.rb'
7
-
8
- match 'cat'
9
- group 'Input and Output'
10
- description "Show code from a file, Pry's input buffer, or the last exception."
11
-
12
- banner <<-'BANNER'
13
- Usage: cat FILE
14
- cat --ex [STACK_INDEX]
15
- cat --in [INPUT_INDEX_OR_RANGE]
16
-
17
- `cat` is capable of showing part or all of a source file, the context of the
18
- last exception, or an expression from Pry's input history.
19
-
20
- `cat --ex` defaults to showing the lines surrounding the location of the last
21
- exception. Invoking it more than once travels up the exception's backtrace, and
22
- providing a number shows the context of the given index of the backtrace.
23
- BANNER
24
-
25
- def options(opt)
26
- opt.on :ex, "Show the context of the last exception", :optional_argument => true, :as => Integer
27
- opt.on :i, :in, "Show one or more entries from Pry's expression history", :optional_argument => true, :as => Range, :default => -5..-1
28
- opt.on :s, :start, "Starting line (defaults to the first line)", :optional_argument => true, :as => Integer
29
- opt.on :e, :end, "Ending line (defaults to the last line)", :optional_argument => true, :as => Integer
30
- opt.on :l, :'line-numbers', "Show line numbers"
31
- opt.on :t, :type, "The file type for syntax highlighting (e.g., 'ruby' or 'python')", :argument => true, :as => Symbol
32
- end
4
+ class Command
5
+ class Cat < Pry::ClassCommand
6
+ match 'cat'
7
+ group 'Input and Output'
8
+ description "Show code from a file, Pry's input buffer, or the last exception."
33
9
 
34
- def process
35
- output = case
36
- when opts.present?(:ex)
37
- ExceptionFormatter.new(_pry_.last_exception, _pry_, opts).format
38
- when opts.present?(:in)
39
- InputExpressionFormatter.new(_pry_.input_array, opts).format
40
- else
41
- FileFormatter.new(args.first, _pry_, opts).format
42
- end
43
-
44
- stagger_output(output)
45
- end
10
+ banner <<-'BANNER'
11
+ Usage: cat FILE
12
+ cat --ex [STACK_INDEX]
13
+ cat --in [INPUT_INDEX_OR_RANGE]
14
+
15
+ `cat` is capable of showing part or all of a source file, the context of the
16
+ last exception, or an expression from Pry's input history.
17
+
18
+ `cat --ex` defaults to showing the lines surrounding the location of the last
19
+ exception. Invoking it more than once travels up the exception's backtrace, and
20
+ providing a number shows the context of the given index of the backtrace.
21
+ BANNER
22
+
23
+ def options(opt)
24
+ opt.on :ex, "Show the context of the last exception",
25
+ optional_argument: true, as: Integer
26
+ opt.on :i, :in, "Show one or more entries from Pry's expression history",
27
+ optional_argument: true, as: Range, default: -5..-1
28
+ opt.on :s, :start, "Starting line (defaults to the first line)",
29
+ optional_argument: true, as: Integer
30
+ opt.on :e, :end, "Ending line (defaults to the last line)",
31
+ optional_argument: true, as: Integer
32
+ opt.on :l, :'line-numbers', "Show line numbers"
33
+ opt.on :t, :type, "The file type for syntax highlighting " \
34
+ "(e.g., 'ruby' or 'python')",
35
+ argument: true, as: Symbol
36
+ end
46
37
 
47
- def complete(search)
48
- super + Bond::Rc.files(search.split(" ").last || '')
38
+ def process
39
+ output =
40
+ if opts.present?(:ex)
41
+ ExceptionFormatter.new(
42
+ pry_instance.last_exception, pry_instance, opts
43
+ ).format
44
+ elsif opts.present?(:in)
45
+ InputExpressionFormatter.new(pry_instance.input_ring, opts).format
46
+ else
47
+ FileFormatter.new(args.first, pry_instance, opts).format
48
+ end
49
+
50
+ pry_instance.pager.page output
51
+ end
52
+
53
+ def complete(search)
54
+ super | load_path_completions
55
+ end
56
+
57
+ def load_path_completions
58
+ $LOAD_PATH.flat_map do |path|
59
+ Dir[path + '/**/*'].map do |f|
60
+ next if File.directory?(f)
61
+
62
+ f.sub!(path + '/', '')
63
+ end
64
+ end
65
+ end
49
66
  end
50
- end
51
67
 
52
- Pry::Commands.add_command(Pry::Command::Cat)
68
+ Pry::Commands.add_command(Pry::Command::Cat)
69
+ end
53
70
  end
@@ -1,30 +1,46 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Pry
2
- class Command::Cd < Pry::ClassCommand
3
- match 'cd'
4
- group 'Context'
5
- description 'Move into a new context (object or scope).'
6
-
7
- banner <<-'BANNER'
8
- Usage: cd [OPTIONS] [--help]
9
-
10
- Move into new context (object or scope). As in UNIX shells use `cd ..` to go
11
- back, `cd /` to return to Pry top-level and `cd -` to toggle between last two
12
- scopes. Complex syntax (e.g `cd ../@x/y`) also supported.
13
-
14
- cd @x
15
- cd ..
16
- cd /
17
- cd -
18
-
19
- https://github.com/pry/pry/wiki/State-navigation#wiki-Changing_scope
20
- BANNER
21
-
22
- def process
23
- state.old_stack ||= []
24
- stack, state.old_stack = context_from_object_path(arg_string, _pry_, state.old_stack)
25
- _pry_.binding_stack = stack if stack
4
+ class Command
5
+ class Cd < Pry::ClassCommand
6
+ match 'cd'
7
+ group 'Context'
8
+ description 'Move into a new context (object or scope).'
9
+
10
+ banner <<-'BANNER'
11
+ Usage: cd [OPTIONS] [--help]
12
+
13
+ Move into new context (object or scope). As in UNIX shells use `cd ..` to go
14
+ back, `cd /` to return to Pry top-level and `cd -` to toggle between last two
15
+ scopes. Complex syntax (e.g `cd ../@x/@y`) also supported.
16
+
17
+ cd @x
18
+ cd ..
19
+ cd /
20
+ cd -
21
+
22
+ https://github.com/pry/pry/wiki/State-navigation#wiki-Changing_scope
23
+ BANNER
24
+
25
+ def process
26
+ state.old_stack ||= []
27
+
28
+ if arg_string.strip == "-"
29
+ unless state.old_stack.empty?
30
+ pry_instance.binding_stack, state.old_stack =
31
+ state.old_stack, pry_instance.binding_stack
32
+ end
33
+ else
34
+ stack = ObjectPath.new(arg_string, pry_instance.binding_stack).resolve
35
+
36
+ if stack && stack != pry_instance.binding_stack
37
+ state.old_stack = pry_instance.binding_stack
38
+ pry_instance.binding_stack = stack
39
+ end
40
+ end
41
+ end
26
42
  end
27
- end
28
43
 
29
- Pry::Commands.add_command(Pry::Command::Cd)
44
+ Pry::Commands.add_command(Pry::Command::Cd)
45
+ end
30
46
  end
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Pry
4
+ class Command
5
+ class ChangeInspector < Pry::ClassCommand
6
+ match 'change-inspector'
7
+ group 'Input and Output'
8
+ description 'Change the current inspector proc.'
9
+ command_options argument_required: true
10
+ banner <<-BANNER
11
+ Usage: change-inspector NAME
12
+
13
+ Change the proc used to print return values. See list-inspectors for a list
14
+ of available procs and a short description of what each one does.
15
+ BANNER
16
+
17
+ def process(inspector)
18
+ unless inspector_map.key?(inspector)
19
+ raise Pry::CommandError, "'#{inspector}' isn't a known inspector!"
20
+ end
21
+
22
+ pry_instance.print = inspector_map[inspector][:value]
23
+ output.puts "Switched to the '#{inspector}' inspector!"
24
+ end
25
+
26
+ private
27
+
28
+ def inspector_map
29
+ Pry::Inspector::MAP
30
+ end
31
+ Pry::Commands.add_command(self)
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,51 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Pry
4
+ class Command
5
+ class ChangePrompt < Pry::ClassCommand
6
+ match 'change-prompt'
7
+ group 'Input and Output'
8
+ description 'Change the current prompt.'
9
+ command_options argument_required: true
10
+ banner <<-BANNER
11
+ Usage: change-prompt [OPTIONS] [NAME]
12
+
13
+ Change the current prompt.
14
+ BANNER
15
+
16
+ def options(opt)
17
+ opt.on(:l, :list, 'List the available prompts')
18
+ end
19
+
20
+ def process(prompt)
21
+ if opts.present?(:l)
22
+ list_prompts
23
+ else
24
+ change_prompt(prompt)
25
+ end
26
+ end
27
+
28
+ private
29
+
30
+ def list_prompts
31
+ prompts = Pry::Prompt.all.map do |name, prompt|
32
+ "#{bold(name)}#{red(' (selected)') if pry_instance.prompt == prompt}\n" +
33
+ prompt.description
34
+ end
35
+ output.puts(prompts.join("\n" * 2))
36
+ end
37
+
38
+ def change_prompt(prompt)
39
+ if Pry::Prompt[prompt]
40
+ pry_instance.prompt = Pry::Prompt[prompt]
41
+ else
42
+ raise Pry::CommandError,
43
+ "'#{prompt}' isn't a known prompt. Run `change-prompt --list` " \
44
+ "to see the list of known prompts."
45
+ end
46
+ end
47
+
48
+ Pry::Commands.add_command(self)
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Pry
4
+ class Command
5
+ class ClearScreen < Pry::ClassCommand
6
+ match 'clear-screen'
7
+ group 'Input and Output'
8
+ description 'Clear the contents of the screen/window Pry is running in.'
9
+
10
+ def process
11
+ if Pry::Helpers::Platform.windows?
12
+ pry_instance.config.system.call(pry_instance.output, 'cls', pry_instance)
13
+ else
14
+ pry_instance.config.system.call(pry_instance.output, 'clear', pry_instance)
15
+ end
16
+ end
17
+ Pry::Commands.add_command(self)
18
+ end
19
+ end
20
+ end