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.
Files changed (158) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +110 -1
  3. data/LICENSE +1 -1
  4. data/README.md +331 -269
  5. data/bin/pry +5 -0
  6. data/lib/pry.rb +133 -119
  7. data/lib/pry/basic_object.rb +8 -4
  8. data/lib/pry/block_command.rb +22 -0
  9. data/lib/pry/class_command.rb +194 -0
  10. data/lib/pry/cli.rb +40 -31
  11. data/lib/pry/code.rb +39 -27
  12. data/lib/pry/code/code_file.rb +28 -24
  13. data/lib/pry/code/code_range.rb +4 -2
  14. data/lib/pry/code/loc.rb +15 -8
  15. data/lib/pry/code_object.rb +40 -38
  16. data/lib/pry/color_printer.rb +47 -46
  17. data/lib/pry/command.rb +166 -369
  18. data/lib/pry/command_set.rb +76 -73
  19. data/lib/pry/command_state.rb +31 -0
  20. data/lib/pry/commands/amend_line.rb +86 -81
  21. data/lib/pry/commands/bang.rb +18 -14
  22. data/lib/pry/commands/bang_pry.rb +15 -11
  23. data/lib/pry/commands/cat.rb +61 -54
  24. data/lib/pry/commands/cat/abstract_formatter.rb +23 -18
  25. data/lib/pry/commands/cat/exception_formatter.rb +71 -60
  26. data/lib/pry/commands/cat/file_formatter.rb +55 -49
  27. data/lib/pry/commands/cat/input_expression_formatter.rb +35 -30
  28. data/lib/pry/commands/cd.rb +40 -35
  29. data/lib/pry/commands/change_inspector.rb +29 -22
  30. data/lib/pry/commands/change_prompt.rb +44 -39
  31. data/lib/pry/commands/clear_screen.rb +16 -10
  32. data/lib/pry/commands/code_collector.rb +148 -133
  33. data/lib/pry/commands/disable_pry.rb +23 -19
  34. data/lib/pry/commands/easter_eggs.rb +19 -30
  35. data/lib/pry/commands/edit.rb +184 -161
  36. data/lib/pry/commands/edit/exception_patcher.rb +21 -17
  37. data/lib/pry/commands/edit/file_and_line_locator.rb +34 -23
  38. data/lib/pry/commands/exit.rb +39 -35
  39. data/lib/pry/commands/exit_all.rb +24 -20
  40. data/lib/pry/commands/exit_program.rb +20 -16
  41. data/lib/pry/commands/find_method.rb +168 -160
  42. data/lib/pry/commands/fix_indent.rb +16 -12
  43. data/lib/pry/commands/help.rb +140 -133
  44. data/lib/pry/commands/hist.rb +151 -150
  45. data/lib/pry/commands/import_set.rb +20 -16
  46. data/lib/pry/commands/jump_to.rb +25 -21
  47. data/lib/pry/commands/list_inspectors.rb +35 -28
  48. data/lib/pry/commands/ls.rb +124 -102
  49. data/lib/pry/commands/ls/constants.rb +59 -42
  50. data/lib/pry/commands/ls/formatter.rb +50 -46
  51. data/lib/pry/commands/ls/globals.rb +38 -34
  52. data/lib/pry/commands/ls/grep.rb +17 -13
  53. data/lib/pry/commands/ls/instance_vars.rb +29 -27
  54. data/lib/pry/commands/ls/interrogatable.rb +18 -12
  55. data/lib/pry/commands/ls/jruby_hacks.rb +47 -41
  56. data/lib/pry/commands/ls/local_names.rb +26 -22
  57. data/lib/pry/commands/ls/local_vars.rb +38 -28
  58. data/lib/pry/commands/ls/ls_entity.rb +47 -51
  59. data/lib/pry/commands/ls/methods.rb +44 -43
  60. data/lib/pry/commands/ls/methods_helper.rb +46 -42
  61. data/lib/pry/commands/ls/self_methods.rb +23 -22
  62. data/lib/pry/commands/nesting.rb +21 -17
  63. data/lib/pry/commands/play.rb +93 -82
  64. data/lib/pry/commands/pry_backtrace.rb +24 -17
  65. data/lib/pry/commands/pry_version.rb +15 -11
  66. data/lib/pry/commands/raise_up.rb +27 -22
  67. data/lib/pry/commands/reload_code.rb +60 -48
  68. data/lib/pry/commands/reset.rb +16 -12
  69. data/lib/pry/commands/ri.rb +55 -45
  70. data/lib/pry/commands/save_file.rb +45 -43
  71. data/lib/pry/commands/shell_command.rb +51 -51
  72. data/lib/pry/commands/shell_mode.rb +21 -17
  73. data/lib/pry/commands/show_doc.rb +81 -68
  74. data/lib/pry/commands/show_info.rb +189 -171
  75. data/lib/pry/commands/show_input.rb +16 -11
  76. data/lib/pry/commands/show_source.rb +109 -45
  77. data/lib/pry/commands/stat.rb +35 -31
  78. data/lib/pry/commands/switch_to.rb +21 -15
  79. data/lib/pry/commands/toggle_color.rb +20 -16
  80. data/lib/pry/commands/watch_expression.rb +89 -86
  81. data/lib/pry/commands/watch_expression/expression.rb +32 -27
  82. data/lib/pry/commands/whereami.rb +156 -148
  83. data/lib/pry/commands/wtf.rb +75 -50
  84. data/lib/pry/config.rb +311 -25
  85. data/lib/pry/config/attributable.rb +22 -0
  86. data/lib/pry/config/lazy_value.rb +29 -0
  87. data/lib/pry/config/memoized_value.rb +34 -0
  88. data/lib/pry/config/value.rb +24 -0
  89. data/lib/pry/control_d_handler.rb +28 -0
  90. data/lib/pry/core_extensions.rb +9 -7
  91. data/lib/pry/editor.rb +48 -21
  92. data/lib/pry/env.rb +18 -0
  93. data/lib/pry/exception_handler.rb +43 -0
  94. data/lib/pry/exceptions.rb +13 -16
  95. data/lib/pry/forwardable.rb +5 -1
  96. data/lib/pry/helpers.rb +2 -0
  97. data/lib/pry/helpers/base_helpers.rb +68 -197
  98. data/lib/pry/helpers/command_helpers.rb +50 -61
  99. data/lib/pry/helpers/documentation_helpers.rb +20 -13
  100. data/lib/pry/helpers/options_helpers.rb +14 -7
  101. data/lib/pry/helpers/platform.rb +7 -5
  102. data/lib/pry/helpers/table.rb +33 -26
  103. data/lib/pry/helpers/text.rb +17 -14
  104. data/lib/pry/history.rb +48 -56
  105. data/lib/pry/hooks.rb +21 -12
  106. data/lib/pry/indent.rb +54 -50
  107. data/lib/pry/input_completer.rb +248 -230
  108. data/lib/pry/input_lock.rb +8 -9
  109. data/lib/pry/inspector.rb +36 -24
  110. data/lib/pry/last_exception.rb +45 -45
  111. data/lib/pry/method.rb +141 -94
  112. data/lib/pry/method/disowned.rb +16 -4
  113. data/lib/pry/method/patcher.rb +12 -3
  114. data/lib/pry/method/weird_method_locator.rb +68 -44
  115. data/lib/pry/object_path.rb +33 -25
  116. data/lib/pry/output.rb +121 -35
  117. data/lib/pry/pager.rb +41 -42
  118. data/lib/pry/plugins.rb +25 -8
  119. data/lib/pry/prompt.rb +123 -54
  120. data/lib/pry/pry_class.rb +61 -98
  121. data/lib/pry/pry_instance.rb +217 -215
  122. data/lib/pry/repl.rb +18 -22
  123. data/lib/pry/repl_file_loader.rb +27 -21
  124. data/lib/pry/ring.rb +11 -6
  125. data/lib/pry/slop.rb +574 -563
  126. data/lib/pry/slop/commands.rb +164 -169
  127. data/lib/pry/slop/option.rb +172 -168
  128. data/lib/pry/syntax_highlighter.rb +26 -0
  129. data/lib/pry/system_command_handler.rb +17 -0
  130. data/lib/pry/testable.rb +59 -61
  131. data/lib/pry/testable/evalable.rb +21 -12
  132. data/lib/pry/testable/mockable.rb +18 -10
  133. data/lib/pry/testable/pry_tester.rb +71 -56
  134. data/lib/pry/testable/utility.rb +29 -21
  135. data/lib/pry/testable/variables.rb +49 -43
  136. data/lib/pry/version.rb +3 -1
  137. data/lib/pry/warning.rb +27 -0
  138. data/lib/pry/wrapped_module.rb +51 -42
  139. data/lib/pry/wrapped_module/candidate.rb +21 -14
  140. metadata +31 -30
  141. data/lib/pry/commands.rb +0 -6
  142. data/lib/pry/commands/disabled_commands.rb +0 -2
  143. data/lib/pry/commands/gem_cd.rb +0 -26
  144. data/lib/pry/commands/gem_install.rb +0 -32
  145. data/lib/pry/commands/gem_list.rb +0 -33
  146. data/lib/pry/commands/gem_open.rb +0 -29
  147. data/lib/pry/commands/gem_readme.rb +0 -25
  148. data/lib/pry/commands/gem_search.rb +0 -40
  149. data/lib/pry/commands/gem_stats.rb +0 -83
  150. data/lib/pry/commands/gist.rb +0 -102
  151. data/lib/pry/commands/install_command.rb +0 -54
  152. data/lib/pry/config/behavior.rb +0 -255
  153. data/lib/pry/config/convenience.rb +0 -28
  154. data/lib/pry/config/default.rb +0 -159
  155. data/lib/pry/config/memoization.rb +0 -48
  156. data/lib/pry/platform.rb +0 -91
  157. data/lib/pry/rubygem.rb +0 -84
  158. data/lib/pry/terminal.rb +0 -91
@@ -1,255 +0,0 @@
1
- class Pry
2
- class Config < Pry::BasicObject
3
- module Behavior
4
- ASSIGNMENT = "=".freeze
5
- NODUP = [TrueClass, FalseClass, NilClass, Symbol, Numeric, Module, Proc].freeze
6
- INSPECT_REGEXP = /#{Regexp.escape "default=#<"}/
7
- ReservedKeyError = Class.new(RuntimeError)
8
-
9
- module Builder
10
- #
11
- # Returns a new Behavior, non-recursively (unlike {#from_hash}).
12
- #
13
- # @param
14
- # (see #from_hash)
15
- #
16
- # @return
17
- # (see #from_hash)
18
- #
19
- def assign(attributes, default = nil)
20
- new(default).tap do |behavior|
21
- behavior.merge!(attributes)
22
- end
23
- end
24
-
25
- #
26
- # Returns a new Behavior, recursively walking attributes.
27
- #
28
- # @param [Hash] attributes
29
- # a hash to initialize an instance of self with.
30
- #
31
- # @param [Pry::Config, nil] default
32
- # a default, or nil for none.
33
- #
34
- # @return [Pry::Config]
35
- # returns an instance of self.
36
- #
37
- def from_hash(attributes, default = nil)
38
- new(default).tap do |config|
39
- attributes.each do |key,value|
40
- config[key] = Hash === value ? from_hash(value, nil) : value
41
- end
42
- end
43
- end
44
- end
45
-
46
- def self.included(klass)
47
- klass.extend(Builder)
48
- end
49
-
50
- def initialize(default = Pry.config)
51
- @default = default
52
- @lookup = {}
53
- @reserved_keys = methods.map(&:to_s).freeze
54
- end
55
-
56
- #
57
- # @return [Pry::Config::Behavior]
58
- # returns the default used incase a key isn't found in self.
59
- #
60
- def default
61
- @default
62
- end
63
-
64
- #
65
- # @param [String] key
66
- # a key (as a String)
67
- #
68
- # @return [Object, BasicObject]
69
- # returns an object from self or one of its defaults.
70
- #
71
- def [](key)
72
- key = key.to_s
73
- key?(key) ? @lookup[key] : (@default and @default[key])
74
- end
75
-
76
- #
77
- # Add a key and value pair to self.
78
- #
79
- # @param [String] key
80
- # a key (as a String).
81
- #
82
- # @param [Object,BasicObject] value
83
- # a value.
84
- #
85
- # @raise [Pry::Config::ReservedKeyError]
86
- # when 'key' is a reserved key name.
87
- #
88
- def []=(key, value)
89
- key = key.to_s
90
- if @reserved_keys.include?(key)
91
- raise ReservedKeyError, "It is not possible to use '#{key}' as a key name, please choose a different key name."
92
- end
93
-
94
- __push(key,value)
95
- end
96
-
97
- #
98
- # Removes a key from self.
99
- #
100
- # @param [String] key
101
- # a key (as a String)
102
- #
103
- # @return [void]
104
- #
105
- def forget(key)
106
- key = key.to_s
107
- __remove(key)
108
- end
109
-
110
- #
111
- # @param [Hash, #to_h, #to_hash] other
112
- # a hash to merge into self.
113
- #
114
- # @return [void]
115
- #
116
- def merge!(other)
117
- other = __try_convert_to_hash(other)
118
- raise TypeError, "unable to convert argument into a Hash" unless other
119
-
120
- other.each do |key, value|
121
- self[key] = value
122
- end
123
- end
124
-
125
- #
126
- # @param [Hash, #to_h, #to_hash] other
127
- # a hash to compare against the lookup table of self.
128
- #
129
- def ==(other)
130
- @lookup == __try_convert_to_hash(other)
131
- end
132
- alias_method :eql?, :==
133
-
134
- #
135
- # @param [String] key
136
- # a key (as a String)
137
- #
138
- # @return [Boolean]
139
- # returns true when "key" is a member of self.
140
- #
141
- def key?(key)
142
- key = key.to_s
143
- @lookup.key?(key)
144
- end
145
-
146
- #
147
- # Clear the lookup table of self.
148
- #
149
- # @return [void]
150
- #
151
- def clear
152
- @lookup.clear
153
- true
154
- end
155
-
156
- #
157
- # @return [Array<String>]
158
- # returns an array of keys in self.
159
- #
160
- def keys
161
- @lookup.keys
162
- end
163
-
164
- def eager_load!
165
- default = @default
166
- while default
167
- default.memoized_methods.each { |method| self[key] = default.public_send(key) } if default.respond_to?(:memoized_methods)
168
- default = @default.default
169
- end
170
- end
171
-
172
- def last_default
173
- last = @default
174
- last = last.default while last and last.default
175
- last
176
- end
177
-
178
- #
179
- # @return [Hash]
180
- # returns a duplicate copy of the lookup table used by self.
181
- #
182
- def to_hash
183
- @lookup.dup
184
- end
185
- alias_method :to_h, :to_hash
186
-
187
- def inspect
188
- key_str = keys.map { |key| "'#{key}'" }.join(",")
189
- "#<#{__clip_inspect(self)} keys=[#{key_str}] default=#{@default.inspect}>"
190
- end
191
-
192
- def pretty_print(q)
193
- q.text inspect[1..-1].gsub(INSPECT_REGEXP, "default=<")
194
- end
195
-
196
- def method_missing(name, *args, &block)
197
- key = name.to_s
198
- if key[-1] == ASSIGNMENT
199
- short_key = key[0..-2]
200
- self[short_key] = args[0]
201
- elsif key?(key)
202
- self[key]
203
- elsif @default.respond_to?(name)
204
- value = @default.public_send(name, *args, &block)
205
- self[key] = __dup(value)
206
- else
207
- nil
208
- end
209
- end
210
-
211
- def respond_to_missing?(key, include_all = false)
212
- key = key.to_s.chomp(ASSIGNMENT)
213
- key?(key) or @default.respond_to?(key) or super(key, include_all)
214
- end
215
-
216
- private
217
-
218
- def __clip_inspect(obj)
219
- "#{obj.class}:0x%x" % obj.object_id
220
- end
221
-
222
- def __try_convert_to_hash(obj)
223
- if Hash === obj
224
- obj
225
- elsif obj.respond_to?(:to_h)
226
- obj.to_h
227
- elsif obj.respond_to?(:to_hash)
228
- obj.to_hash
229
- else
230
- nil
231
- end
232
- end
233
-
234
- def __dup(value)
235
- if NODUP.any? { |klass| klass === value }
236
- value
237
- else
238
- value.dup
239
- end
240
- end
241
-
242
- def __push(key,value)
243
- unless singleton_class.method_defined? key
244
- define_singleton_method(key) { self[key] }
245
- define_singleton_method("#{key}=") { |val| @lookup[key] = val }
246
- end
247
- @lookup[key] = value
248
- end
249
-
250
- def __remove(key)
251
- @lookup.delete(key)
252
- end
253
- end
254
- end
255
- end
@@ -1,28 +0,0 @@
1
- class Pry
2
- class Config < Pry::BasicObject
3
- module Convenience
4
- SHORTCUTS = [
5
- :input,
6
- :output,
7
- :commands,
8
- :print,
9
- :exception_handler,
10
- :hooks,
11
- :color,
12
- :pager,
13
- :editor,
14
- :memory_size,
15
- :extra_sticky_locals
16
- ]
17
-
18
- def config_shortcut(*names)
19
- names.each do |name|
20
- reader = name
21
- setter = "#{name}="
22
- define_method(reader) { config.public_send(name) }
23
- define_method(setter) { |value| config.public_send(setter, value) }
24
- end
25
- end
26
- end
27
- end
28
- end
@@ -1,159 +0,0 @@
1
- class Pry
2
- class Config < Pry::BasicObject
3
- class Default
4
- include Config::Behavior
5
- include Config::Memoization
6
-
7
- def_memoized({
8
- input: proc {
9
- lazy_readline
10
- },
11
- output: proc {
12
- $stdout.tap { |out| out.sync = true }
13
- },
14
- commands: proc {
15
- Pry::Commands
16
- },
17
- prompt_name: proc {
18
- Pry::Prompt::DEFAULT_NAME
19
- },
20
- prompt: proc {
21
- Pry::Prompt[:default][:value]
22
- },
23
- prompt_safe_contexts: proc {
24
- Pry::Prompt::SAFE_CONTEXTS
25
- },
26
- print: proc {
27
- Pry::DEFAULT_PRINT
28
- },
29
- quiet: proc {
30
- false
31
- },
32
- exception_handler: proc {
33
- Pry::DEFAULT_EXCEPTION_HANDLER
34
- },
35
- exception_whitelist: proc {
36
- Pry::DEFAULT_EXCEPTION_WHITELIST
37
- },
38
- hooks: proc {
39
- Pry::DEFAULT_HOOKS
40
- },
41
- pager: proc {
42
- true
43
- },
44
- system: proc {
45
- Pry::DEFAULT_SYSTEM
46
- },
47
- color: proc {
48
- Pry::Helpers::BaseHelpers.use_ansi_codes?
49
- },
50
- default_window_size: proc {
51
- 5
52
- },
53
- editor: proc {
54
- Pry.default_editor_for_platform
55
- },
56
- should_load_rc: proc {
57
- true
58
- },
59
- should_load_local_rc: proc {
60
- true
61
- },
62
- should_trap_interrupts: proc {
63
- Pry::Helpers::Platform.jruby?
64
- },
65
- disable_auto_reload: proc {
66
- false
67
- },
68
- command_prefix: proc {
69
- ""
70
- },
71
- auto_indent: proc {
72
- Pry::Helpers::BaseHelpers.use_ansi_codes?
73
- },
74
- correct_indent: proc {
75
- true
76
- },
77
- collision_warning: proc {
78
- false
79
- },
80
- output_prefix: proc {
81
- "=> "
82
- },
83
- requires: proc {
84
- []
85
- },
86
- should_load_requires: proc {
87
- true
88
- },
89
- should_load_plugins: proc {
90
- true
91
- },
92
- windows_console_warning: proc {
93
- true
94
- },
95
- control_d_handler: proc {
96
- Pry::DEFAULT_CONTROL_D_HANDLER
97
- },
98
- memory_size: proc {
99
- 100
100
- },
101
- extra_sticky_locals: proc {
102
- {}
103
- },
104
- command_completions: proc {
105
- proc { commands.keys }
106
- },
107
- file_completions: proc {
108
- proc { Dir["."] }
109
- },
110
- ls: proc {
111
- Pry::Config.from_hash(Pry::Command::Ls::DEFAULT_OPTIONS)
112
- },
113
- completer: proc {
114
- require "pry/input_completer"
115
- Pry::InputCompleter
116
- },
117
- gist: proc {
118
- Pry::Config.from_hash({inspecter: proc(&:pretty_inspect)}, nil)
119
- },
120
- history: proc {
121
- Pry::Config.from_hash({should_save: true, should_load: true}, nil).tap do |history|
122
- history_file =
123
- if File.exist?(File.expand_path('~/.pry_history'))
124
- '~/.pry_history'
125
- elsif ENV.key?('XDG_DATA_HOME') && ENV['XDG_DATA_HOME'] != ''
126
- # See XDG Base Directory Specification at
127
- # https://standards.freedesktop.org/basedir-spec/basedir-spec-0.8.html
128
- ENV['XDG_DATA_HOME'] + '/pry/pry_history'
129
- else
130
- '~/.local/share/pry/pry_history'
131
- end
132
- history.file = File.expand_path(history_file)
133
- end
134
- },
135
- exec_string: proc {
136
- ""
137
- }
138
- })
139
-
140
- def initialize
141
- super(nil)
142
- end
143
-
144
- private
145
-
146
- def lazy_readline
147
- require 'readline'
148
- Readline
149
- rescue LoadError
150
- warn "Sorry, you can't use Pry without Readline or a compatible library."
151
- warn "Possible solutions:"
152
- warn " * Rebuild Ruby with Readline support using `--with-readline`"
153
- warn " * Use the rb-readline gem, which is a pure-Ruby port of Readline"
154
- warn " * Use the pry-coolline gem, a pure-ruby alternative to Readline"
155
- raise
156
- end
157
- end
158
- end
159
- end
@@ -1,48 +0,0 @@
1
- class Pry
2
- class Config < Pry::BasicObject
3
- module Memoization
4
- MEMOIZED_METHODS = Hash.new { |h,k| h[k] = [] }
5
-
6
- module ClassMethods
7
- #
8
- # Defines one or more methods who return a constant value after being
9
- # called once.
10
- #
11
- # @example
12
- # class Foo
13
- # include Pry::Config::Memoization
14
- # def_memoized({
15
- # foo: proc {1+10},
16
- # bar: proc{"aaa"<<"a"}
17
- # })
18
- # end
19
- #
20
- # @param [{String => Proc}] method_table
21
- #
22
- # @return [void]
23
- #
24
- def def_memoized(method_table)
25
- method_table.each do |method_name, method|
26
- define_method(method_name) do
27
- method_table[method_name] = instance_eval(&method) if method_table[method_name].equal? method
28
- method_table[method_name]
29
- end
30
- end
31
- MEMOIZED_METHODS[self] |= method_table.keys
32
- end
33
- end
34
-
35
- def self.included(mod)
36
- mod.extend(ClassMethods)
37
- end
38
-
39
- #
40
- # @return [Array<Symbol>]
41
- # Returns the names of methods that have been defined by {ClassMethods#def_memoized}.
42
- #
43
- def memoized_methods
44
- MEMOIZED_METHODS[self.class]
45
- end
46
- end
47
- end
48
- end