pry 0.11.3-java → 0.12.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 (118) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +139 -1
  3. data/LICENSE +1 -1
  4. data/README.md +13 -30
  5. data/bin/pry +0 -4
  6. data/lib/pry.rb +17 -47
  7. data/lib/pry/cli.rb +17 -24
  8. data/lib/pry/code.rb +6 -6
  9. data/lib/pry/code/code_file.rb +5 -4
  10. data/lib/pry/code/code_range.rb +3 -3
  11. data/lib/pry/code/loc.rb +14 -8
  12. data/lib/pry/code_object.rb +4 -4
  13. data/lib/pry/color_printer.rb +1 -0
  14. data/lib/pry/command.rb +36 -29
  15. data/lib/pry/command_set.rb +17 -52
  16. data/lib/pry/commands/amend_line.rb +3 -4
  17. data/lib/pry/commands/bang.rb +1 -1
  18. data/lib/pry/commands/cat.rb +7 -6
  19. data/lib/pry/commands/cat/exception_formatter.rb +9 -8
  20. data/lib/pry/commands/cat/input_expression_formatter.rb +1 -1
  21. data/lib/pry/commands/change_prompt.rb +29 -9
  22. data/lib/pry/commands/clear_screen.rb +14 -0
  23. data/lib/pry/commands/code_collector.rb +9 -9
  24. data/lib/pry/commands/easter_eggs.rb +3 -3
  25. data/lib/pry/commands/edit.rb +8 -7
  26. data/lib/pry/commands/exit.rb +2 -1
  27. data/lib/pry/commands/find_method.rb +11 -13
  28. data/lib/pry/commands/gem_cd.rb +1 -1
  29. data/lib/pry/commands/gem_install.rb +2 -2
  30. data/lib/pry/commands/gem_list.rb +2 -2
  31. data/lib/pry/commands/gem_open.rb +1 -1
  32. data/lib/pry/commands/gem_search.rb +2 -2
  33. data/lib/pry/commands/gem_stats.rb +83 -0
  34. data/lib/pry/commands/gist.rb +7 -6
  35. data/lib/pry/commands/help.rb +3 -3
  36. data/lib/pry/commands/hist.rb +9 -8
  37. data/lib/pry/commands/import_set.rb +2 -1
  38. data/lib/pry/commands/install_command.rb +7 -6
  39. data/lib/pry/commands/list_inspectors.rb +2 -2
  40. data/lib/pry/commands/ls.rb +27 -30
  41. data/lib/pry/commands/ls/constants.rb +4 -4
  42. data/lib/pry/commands/ls/formatter.rb +3 -2
  43. data/lib/pry/commands/ls/globals.rb +0 -2
  44. data/lib/pry/commands/ls/grep.rb +0 -2
  45. data/lib/pry/commands/ls/instance_vars.rb +0 -1
  46. data/lib/pry/commands/ls/local_names.rb +0 -2
  47. data/lib/pry/commands/ls/local_vars.rb +0 -2
  48. data/lib/pry/commands/ls/ls_entity.rb +0 -1
  49. data/lib/pry/commands/ls/methods.rb +0 -3
  50. data/lib/pry/commands/ls/methods_helper.rb +1 -1
  51. data/lib/pry/commands/ls/self_methods.rb +0 -1
  52. data/lib/pry/commands/play.rb +1 -2
  53. data/lib/pry/commands/pry_backtrace.rb +1 -1
  54. data/lib/pry/commands/raise_up.rb +2 -1
  55. data/lib/pry/commands/ri.rb +5 -4
  56. data/lib/pry/commands/shell_command.rb +3 -2
  57. data/lib/pry/commands/shell_mode.rb +6 -6
  58. data/lib/pry/commands/show_doc.rb +5 -7
  59. data/lib/pry/commands/show_info.rb +25 -18
  60. data/lib/pry/commands/show_source.rb +5 -2
  61. data/lib/pry/commands/stat.rb +1 -1
  62. data/lib/pry/commands/watch_expression.rb +9 -7
  63. data/lib/pry/commands/whereami.rb +4 -4
  64. data/lib/pry/commands/wtf.rb +15 -2
  65. data/lib/pry/config.rb +33 -9
  66. data/lib/pry/config/behavior.rb +229 -205
  67. data/lib/pry/config/convenience.rb +24 -21
  68. data/lib/pry/config/default.rb +153 -143
  69. data/lib/pry/config/memoization.rb +41 -37
  70. data/lib/pry/core_extensions.rb +4 -3
  71. data/lib/pry/editor.rb +5 -12
  72. data/lib/pry/exceptions.rb +0 -2
  73. data/lib/pry/helpers.rb +1 -0
  74. data/lib/pry/helpers/base_helpers.rb +133 -4
  75. data/lib/pry/helpers/command_helpers.rb +5 -4
  76. data/lib/pry/helpers/documentation_helpers.rb +2 -2
  77. data/lib/pry/helpers/options_helpers.rb +5 -5
  78. data/lib/pry/helpers/platform.rb +58 -0
  79. data/lib/pry/helpers/table.rb +20 -15
  80. data/lib/pry/helpers/text.rb +3 -4
  81. data/lib/pry/history.rb +21 -8
  82. data/lib/pry/hooks.rb +3 -3
  83. data/lib/pry/indent.rb +15 -17
  84. data/lib/pry/input_completer.rb +12 -7
  85. data/lib/pry/input_lock.rb +0 -2
  86. data/lib/pry/last_exception.rb +1 -1
  87. data/lib/pry/method.rb +37 -31
  88. data/lib/pry/method/disowned.rb +2 -1
  89. data/lib/pry/method/patcher.rb +2 -2
  90. data/lib/pry/method/weird_method_locator.rb +7 -8
  91. data/lib/pry/object_path.rb +5 -4
  92. data/lib/pry/output.rb +3 -2
  93. data/lib/pry/pager.rb +4 -3
  94. data/lib/pry/platform.rb +79 -81
  95. data/lib/pry/plugins.rb +7 -3
  96. data/lib/pry/prompt.rb +144 -25
  97. data/lib/pry/pry_class.rb +53 -29
  98. data/lib/pry/pry_instance.rb +88 -55
  99. data/lib/pry/repl.rb +33 -4
  100. data/lib/pry/repl_file_loader.rb +1 -2
  101. data/lib/pry/ring.rb +84 -0
  102. data/lib/pry/rubygem.rb +6 -6
  103. data/lib/pry/slop.rb +17 -17
  104. data/lib/pry/slop/commands.rb +3 -4
  105. data/lib/pry/slop/option.rb +19 -21
  106. data/lib/pry/terminal.rb +2 -1
  107. data/lib/pry/testable/mockable.rb +2 -2
  108. data/lib/pry/testable/pry_tester.rb +1 -1
  109. data/lib/pry/testable/utility.rb +2 -2
  110. data/lib/pry/testable/variables.rb +1 -1
  111. data/lib/pry/version.rb +1 -1
  112. data/lib/pry/wrapped_module.rb +15 -15
  113. data/lib/pry/wrapped_module/candidate.rb +2 -2
  114. metadata +19 -31
  115. data/lib/pry/commands/list_prompts.rb +0 -35
  116. data/lib/pry/commands/simple_prompt.rb +0 -22
  117. data/lib/pry/history_array.rb +0 -121
  118. data/lib/pry/rbx_path.rb +0 -22
@@ -18,11 +18,11 @@ class Pry
18
18
 
19
19
  COLORS.each_pair do |color, value|
20
20
  define_method color do |text|
21
- "\033[0;#{30+value}m#{text}\033[0m"
21
+ "\033[0;#{30 + value}m#{text}\033[0m"
22
22
  end
23
23
 
24
24
  define_method "bright_#{color}" do |text|
25
- "\033[1;#{30+value}m#{text}\033[0m"
25
+ "\033[1;#{30 + value}m#{text}\033[0m"
26
26
  end
27
27
 
28
28
  COLORS.each_pair do |bg_color, bg_value|
@@ -60,7 +60,6 @@ class Pry
60
60
  def default(text)
61
61
  text.to_s
62
62
  end
63
- alias_method :bright_default, :bold
64
63
 
65
64
  #
66
65
  # @yield
@@ -95,7 +94,7 @@ class Pry
95
94
  # @param [#each_line] text
96
95
  # @param [Fixnum] offset
97
96
  # @return [String]
98
- def with_line_numbers(text, offset, color=:blue)
97
+ def with_line_numbers(text, offset, color = :blue)
99
98
  lines = text.each_line.to_a
100
99
  max_width = (offset + lines.count).to_s.length
101
100
  lines.each_with_index.map do |line, index|
@@ -7,7 +7,7 @@ class Pry
7
7
  # @return [Fixnum] Number of lines in history when Pry first loaded.
8
8
  attr_reader :original_lines
9
9
 
10
- def initialize(options={})
10
+ def initialize(options = {})
11
11
  @history = []
12
12
  @original_lines = 0
13
13
  @file_path = options[:file_path]
@@ -25,8 +25,8 @@ class Pry
25
25
  @pusher = method(:push_to_readline)
26
26
  @clearer = method(:clear_readline)
27
27
  else
28
- @pusher = proc { }
29
- @clearer = proc { }
28
+ @pusher = proc {}
29
+ @clearer = proc {}
30
30
  end
31
31
  end
32
32
 
@@ -34,6 +34,8 @@ class Pry
34
34
  # @return [Integer] The number of lines loaded
35
35
  def load
36
36
  @loader.call do |line|
37
+ next if invalid_readline_line?(line)
38
+
37
39
  @pusher.call(line.chomp)
38
40
  @history << line.chomp
39
41
  @original_lines += 1
@@ -44,7 +46,9 @@ class Pry
44
46
  # @param [String] line
45
47
  # @return [String] The same line that was passed in
46
48
  def push(line)
47
- unless line.empty? || (@history.last && line == @history.last)
49
+ empty_or_invalid_line = line.empty? || invalid_readline_line?(line)
50
+
51
+ unless empty_or_invalid_line || (@history.last && line == @history.last)
48
52
  @pusher.call(line)
49
53
  @history << line
50
54
  if !should_ignore?(line) && Pry.config.history.should_save
@@ -107,8 +111,8 @@ class Pry
107
111
  if File.exist?(path)
108
112
  File.foreach(path) { |line| yield(line) }
109
113
  end
110
- rescue => error
111
- warn "History file not loaded: #{error.message}"
114
+ rescue SystemCallError => error
115
+ warn "Unable to read history file: #{error.message}"
112
116
  end
113
117
 
114
118
  # The default pusher. Appends the given line to Readline::HISTORY.
@@ -132,17 +136,26 @@ class Pry
132
136
  if defined?(@history_file)
133
137
  @history_file
134
138
  else
139
+ unless File.exist?(history_file_path)
140
+ FileUtils.mkdir_p(File.dirname(history_file_path))
141
+ end
135
142
  @history_file = File.open(history_file_path, 'a', 0600).tap do |file|
136
143
  file.sync = true
137
144
  end
138
145
  end
139
- rescue Errno::EACCES
140
- warn 'History not saved; unable to open your history file for writing.'
146
+ rescue SystemCallError => error
147
+ warn "Unable to write history file: #{error.message}"
141
148
  @history_file = false
142
149
  end
143
150
 
144
151
  def history_file_path
145
152
  File.expand_path(@file_path || Pry.config.history.file)
146
153
  end
154
+
155
+ def invalid_readline_line?(line)
156
+ # `Readline::HISTORY << line` raises an `ArgumentError` if `line`
157
+ # includes a null byte
158
+ line.include?("\0")
159
+ end
147
160
  end
148
161
  end
@@ -15,7 +15,7 @@ class Pry
15
15
  end
16
16
 
17
17
  # Ensure that duplicates have their @hooks object.
18
- def initialize_copy(orig)
18
+ def initialize_copy(_orig)
19
19
  hooks_dup = @hooks.dup
20
20
  @hooks.each do |k, v|
21
21
  hooks_dup[k] = v.dup
@@ -32,7 +32,7 @@ class Pry
32
32
  #
33
33
  # @param [Pry::Hooks] other The `Pry::Hooks` instance to merge
34
34
  # @return [Pry:Hooks] The receiver.
35
- # @see {#merge}
35
+ # @see #merge
36
36
  def merge!(other)
37
37
  @hooks.merge!(other.dup.hooks) do |key, array, other_array|
38
38
  temp_hash, output = {}, []
@@ -65,7 +65,7 @@ class Pry
65
65
  # @param [#call] callable The callable.
66
66
  # @yield The block to use as the callable (if no `callable` provided).
67
67
  # @return [Pry:Hooks] The receiver.
68
- def add_hook(event_name, hook_name, callable=nil, &block)
68
+ def add_hook(event_name, hook_name, callable = nil, &block)
69
69
  event_name = event_name.to_s
70
70
 
71
71
  # do not allow duplicates, but allow multiple `nil` hooks
@@ -143,10 +143,9 @@ class Pry
143
143
  prefix = indent_level
144
144
 
145
145
  input.lines.each do |line|
146
-
147
146
  if in_string?
148
147
  tokens = tokenize("#{open_delimiters_line}\n#{line}")
149
- tokens = tokens.drop_while{ |token, type| !(String === token && token.include?("\n")) }
148
+ tokens = tokens.drop_while { |token, type| !(String === token && token.include?("\n")) }
150
149
  previously_in_string = true
151
150
  else
152
151
  tokens = tokenize(line)
@@ -155,7 +154,7 @@ class Pry
155
154
 
156
155
  before, after = indentation_delta(tokens)
157
156
 
158
- before.times{ prefix.sub! SPACES, '' }
157
+ before.times { prefix.sub! SPACES, '' }
159
158
  new_prefix = prefix + SPACES * after
160
159
 
161
160
  line = prefix + line.lstrip unless previously_in_string
@@ -215,7 +214,7 @@ class Pry
215
214
  # If the list of tokens contains a matching closing token the line should
216
215
  # not be indented (and thus we should return true).
217
216
  tokens.each do |token, kind|
218
- is_singleline_if = (SINGLELINE_TOKENS.include?(token)) && end_of_statement?(last_token, last_kind)
217
+ is_singleline_if = (SINGLELINE_TOKENS.include?(token)) && end_of_statement?(last_token, last_kind)
219
218
  is_optional_do = (token == "do" && seen_for_at.include?(add_after - 1))
220
219
 
221
220
  last_token, last_kind = token, kind unless kind == :space
@@ -358,7 +357,7 @@ class Pry
358
357
  #
359
358
  # @param [String] token a token from Coderay
360
359
  # @param [Symbol] kind the kind of that token
361
- def track_module_nesting_end(token, kind=:keyword)
360
+ def track_module_nesting_end(token, kind = :keyword)
362
361
  if kind == :keyword && (token == "class" || token == "module")
363
362
  @module_nesting.pop
364
363
  end
@@ -382,25 +381,24 @@ class Pry
382
381
  # the correct indentation. Mostly useful for fixing 'end'.
383
382
  #
384
383
  # @param [String] prompt The user's prompt
385
- # @param [String] code The code the user just typed in.
386
- # @param [Fixnum] overhang (0) The number of chars to erase afterwards (i.e.,
387
- # the difference in length between the old line and the new one).
388
- # @return [String]
389
- def correct_indentation(prompt, code, overhang=0)
384
+ # @param [String] code The code the user just typed in
385
+ # @param [Integer] overhang The number of characters to erase afterwards (the
386
+ # the difference in length between the old line and the new one)
387
+ #
388
+ # @return [String] correctly indented line
389
+ def correct_indentation(prompt, code, overhang = 0)
390
390
  prompt = prompt.delete("\001\002")
391
391
  line_to_measure = Pry::Helpers::Text.strip_color(prompt) << code
392
392
  whitespace = ' ' * overhang
393
393
 
394
- _, cols = Terminal.screen_size
395
-
396
- cols = cols.to_i
397
- lines = (cols != 0 ? (line_to_measure.length / cols + 1) : 1).to_i
394
+ cols = Terminal.width!
395
+ lines = cols == 0 ? 1 : (line_to_measure.length / cols + 1).to_i
398
396
 
399
- if Pry::Helpers::BaseHelpers.windows_ansi?
400
- move_up = "\e[#{lines}F"
397
+ if Helpers::Platform.windows_ansi?
398
+ move_up = "\e[#{lines}F"
401
399
  move_down = "\e[#{lines}E"
402
400
  else
403
- move_up = "\e[#{lines}A\e[0G"
401
+ move_up = "\e[#{lines}A\e[0G"
404
402
  move_down = "\e[#{lines}B\e[0G"
405
403
  end
406
404
 
@@ -34,7 +34,7 @@ class Pry::InputCompleter
34
34
  "yield" ]
35
35
 
36
36
  Operators = [
37
- "%", "&", "*", "**", "+", "-", "/",
37
+ "%", "&", "*", "**", "+", "-", "/",
38
38
  "<", "<<", "<=", "<=>", "==", "===", "=~", ">", ">=", ">>",
39
39
  "[]", "[]=", "^", "!", "!=", "!~"
40
40
  ]
@@ -92,7 +92,7 @@ class Pry::InputCompleter
92
92
  when SYMBOL_REGEXP # Symbol
93
93
  if Symbol.respond_to?(:all_symbols)
94
94
  sym = Regexp.quote($1)
95
- candidates = Symbol.all_symbols.collect{|s| ":" << s.id2name}
95
+ candidates = Symbol.all_symbols.collect { |s| ":" << s.id2name }
96
96
  candidates.grep(/^#{sym}/)
97
97
  else
98
98
  []
@@ -100,7 +100,7 @@ class Pry::InputCompleter
100
100
  when TOPLEVEL_LOOKUP_REGEXP # Absolute Constant or class methods
101
101
  receiver = $1
102
102
  candidates = Object.constants.collect(&:to_s)
103
- candidates.grep(/^#{receiver}/).collect{|e| "::" << e}
103
+ candidates.grep(/^#{receiver}/).collect { |e| "::" << e }
104
104
  when CONSTANT_REGEXP # Constant
105
105
  message = $1
106
106
  begin
@@ -120,7 +120,7 @@ class Pry::InputCompleter
120
120
  rescue Pry::RescuableException
121
121
  candidates = []
122
122
  end
123
- candidates.grep(/^#{message}/).collect{|e| receiver + "::" + e}
123
+ candidates.grep(/^#{message}/).collect { |e| receiver + "::" + e }
124
124
  when SYMBOL_METHOD_CALL_REGEXP # method call on a Symbol
125
125
  receiver = $1
126
126
  message = Regexp.quote($2)
@@ -167,10 +167,12 @@ class Pry::InputCompleter
167
167
  end
168
168
  else
169
169
  # func1.func2
170
+ require 'set'
170
171
  candidates = Set.new
171
172
  to_ignore = ignored_modules
172
- ObjectSpace.each_object(Module){|m|
173
+ ObjectSpace.each_object(Module) { |m|
173
174
  next if (to_ignore.include?(m) rescue true)
175
+
174
176
  # jruby doesn't always provide #instance_methods() on each
175
177
  # object.
176
178
  if m.respond_to?(:instance_methods)
@@ -195,7 +197,7 @@ class Pry::InputCompleter
195
197
  if eval("respond_to?(:class_variables)", bind)
196
198
  candidates += eval("class_variables", bind).collect(&:to_s)
197
199
  end
198
- candidates = (candidates|ReservedWords|custom_completions).grep(/^#{Regexp.quote(input)}/)
200
+ candidates = (candidates | ReservedWords | custom_completions).grep(/^#{Regexp.quote(input)}/)
199
201
  candidates.collect(&path)
200
202
  end
201
203
  rescue Pry::RescuableException
@@ -220,7 +222,8 @@ class Pry::InputCompleter
220
222
  # path is a proc that takes an input and builds a full path.
221
223
  def build_path(input)
222
224
  # check to see if the input is a regex
223
- return proc {|i| i.to_s }, input if input[/\/\./]
225
+ return proc { |i| i.to_s }, input if input[/\/\./]
226
+
224
227
  trailing_slash = input.end_with?('/')
225
228
  contexts = input.chomp('/').split(/\//)
226
229
  input = contexts[-1]
@@ -241,6 +244,7 @@ class Pry::InputCompleter
241
244
 
242
245
  scanner = lambda do |m|
243
246
  next if s.include?(m) # IRB::ExtendCommandBundle::EXCB recurses.
247
+
244
248
  s << m
245
249
  m.constants(false).each do |c|
246
250
  value = m.const_get(c)
@@ -251,6 +255,7 @@ class Pry::InputCompleter
251
255
  # FIXME: Add Pry here as well?
252
256
  [:IRB, :SLex, :RubyLex, :RubyToken].each do |module_name|
253
257
  next unless Object.const_defined?(module_name)
258
+
254
259
  scanner.call(Object.const_get(module_name))
255
260
  end
256
261
 
@@ -1,5 +1,3 @@
1
- require 'thread'
2
-
3
1
  class Pry
4
2
  # There is one InputLock per input (such as STDIN) as two REPLs on the same
5
3
  # input makes things delirious. InputLock serializes accesses to the input so
@@ -23,7 +23,7 @@ class Pry::LastException < BasicObject
23
23
  end
24
24
  end
25
25
 
26
- def respond_to_missing?(name, include_all=false)
26
+ def respond_to_missing?(name, include_all = false)
27
27
  @e.respond_to?(name, include_all)
28
28
  end
29
29
 
@@ -39,7 +39,7 @@ class Pry
39
39
  # contain any context.
40
40
  # @return [Pry::Method, nil] A `Pry::Method` instance containing the requested
41
41
  # method, or `nil` if name is `nil` or no method could be located matching the parameters.
42
- def from_str(name, target=TOPLEVEL_BINDING, options={})
42
+ def from_str(name, target = TOPLEVEL_BINDING, options = {})
43
43
  if name.nil?
44
44
  nil
45
45
  elsif name.to_s =~ /(.+)\#(\S+)\Z/
@@ -56,8 +56,8 @@ class Pry
56
56
  elsif options[:methods]
57
57
  from_obj(target.eval("self"), name, target)
58
58
  else
59
- from_str(name, target, :instance => true) or
60
- from_str(name, target, :methods => true)
59
+ from_str(name, target, instance: true) or
60
+ from_str(name, target, methods: true)
61
61
  end
62
62
 
63
63
  rescue Pry::RescuableException
@@ -101,7 +101,7 @@ class Pry
101
101
  # @param [Symbol] method_type The type of method: :method or :instance_method
102
102
  # @param [Binding] target The binding where the method is looked up.
103
103
  # @return [Method, UnboundMethod] The 'refined' method object.
104
- def lookup_method_via_binding(obj, method_name, method_type, target=TOPLEVEL_BINDING)
104
+ def lookup_method_via_binding(obj, method_name, method_type, target = TOPLEVEL_BINDING)
105
105
  Pry.current[:obj] = obj
106
106
  Pry.current[:name] = method_name
107
107
  receiver = obj.is_a?(Module) ? "Module" : "Kernel"
@@ -118,7 +118,7 @@ class Pry
118
118
  # @param [String] name
119
119
  # @param [Binding] target The binding where the method is looked up.
120
120
  # @return [Pry::Method, nil]
121
- def from_class(klass, name, target=TOPLEVEL_BINDING)
121
+ def from_class(klass, name, target = TOPLEVEL_BINDING)
122
122
  new(lookup_method_via_binding(klass, name, :instance_method, target)) rescue nil
123
123
  end
124
124
  alias from_module from_class
@@ -131,7 +131,7 @@ class Pry
131
131
  # @param [String] name
132
132
  # @param [Binding] target The binding where the method is looked up.
133
133
  # @return [Pry::Method, nil]
134
- def from_obj(obj, name, target=TOPLEVEL_BINDING)
134
+ def from_obj(obj, name, target = TOPLEVEL_BINDING)
135
135
  new(lookup_method_via_binding(obj, name, :method, target)) rescue nil
136
136
  end
137
137
 
@@ -139,10 +139,10 @@ class Pry
139
139
  # @param [Class,Module] klass
140
140
  # @param [Boolean] include_super Whether to include methods from ancestors.
141
141
  # @return [Array[Pry::Method]]
142
- def all_from_class(klass, include_super=true)
142
+ def all_from_class(klass, include_super = true)
143
143
  %w(public protected private).flat_map do |visibility|
144
144
  safe_send(klass, :"#{visibility}_instance_methods", include_super).map do |method_name|
145
- new(safe_send(klass, :instance_method, method_name), :visibility => visibility.to_sym)
145
+ new(safe_send(klass, :instance_method, method_name), visibility: visibility.to_sym)
146
146
  end
147
147
  end
148
148
  end
@@ -157,7 +157,7 @@ class Pry
157
157
  #
158
158
  # @return [Array[Pry::Method]]
159
159
  #
160
- def all_from_obj(obj, include_super=true)
160
+ def all_from_obj(obj, include_super = true)
161
161
  all_from_class(singleton_class_of(obj), include_super)
162
162
  end
163
163
 
@@ -166,7 +166,7 @@ class Pry
166
166
  # please use {all_from_obj} instead.
167
167
  # the `method_type` argument is ignored.
168
168
  #
169
- def all_from_common(obj, method_type = nil, include_super=true)
169
+ def all_from_common(obj, _method_type = nil, include_super = true)
170
170
  all_from_obj(obj, include_super)
171
171
  end
172
172
 
@@ -233,7 +233,7 @@ class Pry
233
233
  # @param [::Method, UnboundMethod, Proc] method
234
234
  # @param [Hash] known_info Can be used to pre-cache expensive to compute stuff.
235
235
  # @return [Pry::Method]
236
- def initialize(method, known_info={})
236
+ def initialize(method, known_info = {})
237
237
  @method = method
238
238
  @visibility = known_info[:visibility]
239
239
  end
@@ -298,7 +298,8 @@ class Pry
298
298
  # @return [String, nil] The documentation for the method, or `nil` if it's
299
299
  # unavailable.
300
300
  def doc
301
- @doc ||= case source_type
301
+ @doc ||=
302
+ case source_type
302
303
  when :c
303
304
  info = pry_doc_info
304
305
  info.docstring if info
@@ -317,7 +318,7 @@ class Pry
317
318
  # `nil` if the filename is unavailable.
318
319
  def source_file
319
320
  if source_location.nil?
320
- if !rbx? and source_type == :c
321
+ if source_type == :c
321
322
  info = pry_doc_info
322
323
  info.file if info
323
324
  end
@@ -354,20 +355,24 @@ class Pry
354
355
 
355
356
  # @return [String] A representation of the method's signature, including its
356
357
  # name and parameters. Optional and "rest" parameters are marked with `*`
357
- # and block parameters with `&`. If the parameter names are unavailable,
358
- # they're given numbered names instead.
358
+ # and block parameters with `&`. Keyword arguments are shown with `:`
359
+ # If the parameter names are unavailable, they're given numbered names instead.
359
360
  # Paraphrased from `awesome_print` gem.
360
361
  def signature
361
362
  if respond_to?(:parameters)
362
- args = parameters.inject([]) do |arr, (typ, nam)|
363
- nam ||= (typ == :block ? 'block' : "arg#{arr.size + 1}")
364
- arr << case typ
365
- when :req then nam.to_s
366
- when :opt then "#{nam}=?"
367
- when :rest then "*#{nam}"
368
- when :block then "&#{nam}"
369
- else '?'
370
- end
363
+ args = parameters.inject([]) do |args_array, (arg_type, name)|
364
+ name ||= (arg_type == :block ? 'block' : "arg#{args_array.size + 1}")
365
+ args_array.push(
366
+ case arg_type
367
+ when :req then name.to_s
368
+ when :opt then "#{name}=?"
369
+ when :rest then "*#{name}"
370
+ when :block then "&#{name}"
371
+ when :key then "#{name}:?"
372
+ when :keyreq then "#{name}:"
373
+ else '?'
374
+ end
375
+ )
371
376
  end
372
377
  else
373
378
  args = (1..arity.abs).map { |i| "arg#{i}" }
@@ -379,7 +384,7 @@ class Pry
379
384
 
380
385
  # @return [Pry::Method, nil] The wrapped method that is called when you
381
386
  # use "super" in the body of this method.
382
- def super(times=1)
387
+ def super(times = 1)
383
388
  if UnboundMethod === @method
384
389
  sup = super_using_ancestors(Pry::Method.instance_resolution_order(owner), times)
385
390
  else
@@ -393,6 +398,7 @@ class Pry
393
398
  # before any aliasing, or `nil` if it can't be determined.
394
399
  def original_name
395
400
  return nil if source_type != :ruby
401
+
396
402
  method_name_from_first_line(source.lines.first)
397
403
  end
398
404
 
@@ -461,7 +467,7 @@ class Pry
461
467
 
462
468
  # @param [String, Symbol] method_name
463
469
  # @return [Boolean]
464
- def respond_to?(method_name, include_all=false)
470
+ def respond_to?(method_name, include_all = false)
465
471
  super or @method.respond_to?(method_name, include_all)
466
472
  end
467
473
 
@@ -483,7 +489,7 @@ class Pry
483
489
  Pry::MethodInfo.info_for(@method) or raise CommandError, "Cannot locate this method: #{name}. (source_location returns nil)"
484
490
  else
485
491
  fail_msg = "Cannot locate this method: #{name}."
486
- if mri?
492
+ if Helpers::Platform.mri?
487
493
  fail_msg += " Invoke the 'gem-install pry-doc' Pry command to get access to Ruby Core documentation.\n"
488
494
  end
489
495
  raise CommandError, fail_msg
@@ -492,7 +498,7 @@ class Pry
492
498
 
493
499
  # @param [Class, Module] ancestors The ancestors to investigate
494
500
  # @return [Method] The unwrapped super-method
495
- def super_using_ancestors(ancestors, times=1)
501
+ def super_using_ancestors(ancestors, times = 1)
496
502
  next_owner = self.owner
497
503
  times.times do
498
504
  i = ancestors.index(next_owner) + 1
@@ -529,9 +535,9 @@ class Pry
529
535
  end
530
536
 
531
537
  def ruby_source
532
- # clone of MethodSource.source_helper that knows to use our
533
- # hacked version of source_location for rbx core methods, and
534
- # our input buffer for methods defined in (pry)
538
+ # Clone of `MethodSource.source_helper` that knows to use our
539
+ # hacked version of `source_location` for our input buffer for methods
540
+ # defined in `(pry)`.
535
541
  file, line = *source_location
536
542
  raise SourceNotFoundError, "Could not locate source for #{name_with_owner}!" unless file
537
543