pry 0.12.0 → 0.14.0

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 +4 -4
  2. data/CHANGELOG.md +162 -1
  3. data/LICENSE +1 -1
  4. data/README.md +331 -269
  5. data/bin/pry +5 -0
  6. data/lib/pry.rb +132 -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 +43 -51
  11. data/lib/pry/code.rb +40 -28
  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 +22 -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 +80 -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 +110 -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 +307 -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 +186 -180
  118. data/lib/pry/prompt.rb +123 -54
  119. data/lib/pry/pry_class.rb +61 -103
  120. data/lib/pry/pry_instance.rb +217 -215
  121. data/lib/pry/repl.rb +18 -22
  122. data/lib/pry/repl_file_loader.rb +27 -21
  123. data/lib/pry/ring.rb +11 -6
  124. data/lib/pry/slop.rb +574 -563
  125. data/lib/pry/slop/commands.rb +164 -169
  126. data/lib/pry/slop/option.rb +172 -168
  127. data/lib/pry/syntax_highlighter.rb +26 -0
  128. data/lib/pry/system_command_handler.rb +17 -0
  129. data/lib/pry/testable.rb +59 -61
  130. data/lib/pry/testable/evalable.rb +21 -12
  131. data/lib/pry/testable/mockable.rb +18 -10
  132. data/lib/pry/testable/pry_tester.rb +71 -56
  133. data/lib/pry/testable/utility.rb +29 -21
  134. data/lib/pry/testable/variables.rb +49 -43
  135. data/lib/pry/version.rb +3 -1
  136. data/lib/pry/warning.rb +27 -0
  137. data/lib/pry/wrapped_module.rb +51 -42
  138. data/lib/pry/wrapped_module/candidate.rb +21 -14
  139. metadata +35 -35
  140. data/lib/pry/commands.rb +0 -6
  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/gem_readme.rb +0 -25
  147. data/lib/pry/commands/gem_search.rb +0 -40
  148. data/lib/pry/commands/gem_stats.rb +0 -83
  149. data/lib/pry/commands/gist.rb +0 -102
  150. data/lib/pry/commands/install_command.rb +0 -54
  151. data/lib/pry/config/behavior.rb +0 -255
  152. data/lib/pry/config/convenience.rb +0 -28
  153. data/lib/pry/config/default.rb +0 -159
  154. data/lib/pry/config/memoization.rb +0 -48
  155. data/lib/pry/platform.rb +0 -91
  156. data/lib/pry/plugins.rb +0 -122
  157. data/lib/pry/rubygem.rb +0 -84
  158. data/lib/pry/terminal.rb +0 -91
data/lib/pry/cli.rb CHANGED
@@ -1,3 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'stringio'
4
+
1
5
  class Pry
2
6
  # Manage the processing of command line options
3
7
  class CLI
@@ -31,15 +35,6 @@ class Pry
31
35
  self
32
36
  end
33
37
 
34
- # Bring in options defined in plugins
35
- def add_plugin_options
36
- Pry.plugins.values.each do |plugin|
37
- plugin.load_cli_options
38
- end
39
-
40
- self
41
- end
42
-
43
38
  # Add a block responsible for processing parsed options.
44
39
  def add_option_processor(&block)
45
40
  self.option_processors ||= []
@@ -56,14 +51,22 @@ class Pry
56
51
 
57
52
  def parse_options(args = ARGV)
58
53
  unless options
59
- raise NoOptionsError, "No command line options defined! Use Pry::CLI.add_options to add command line options."
54
+ raise NoOptionsError,
55
+ "No command line options defined! Use Pry::CLI.add_options to " \
56
+ "add command line options."
60
57
  end
61
58
 
62
- self.input_args = args
59
+ @pass_argv = args.index { |cli_arg| %w[- --].include?(cli_arg) }
60
+ if @pass_argv
61
+ slop_args = args[0...@pass_argv]
62
+ self.input_args = args.replace(args[@pass_argv + 1..-1])
63
+ else
64
+ self.input_args = slop_args = args
65
+ end
63
66
 
64
67
  begin
65
68
  opts = Pry::Slop.parse!(
66
- args,
69
+ slop_args,
67
70
  help: true,
68
71
  multiple_switches: false,
69
72
  strict: true,
@@ -72,22 +75,20 @@ class Pry
72
75
  rescue Pry::Slop::InvalidOptionError
73
76
  # Display help message on unknown switches and exit.
74
77
  puts Pry::Slop.new(&options)
75
- exit
78
+ Kernel.exit
76
79
  end
77
80
 
78
81
  Pry.initial_session_setup
79
82
  Pry.final_session_setup
80
83
 
81
84
  # Option processors are optional.
82
- if option_processors
83
- option_processors.each { |processor| processor.call(opts) }
84
- end
85
+ option_processors.each { |processor| processor.call(opts) } if option_processors
85
86
 
86
87
  opts
87
88
  end
88
89
 
89
90
  def start(opts)
90
- exit if opts.help?
91
+ Kernel.exit if opts.help?
91
92
 
92
93
  # invoked via cli
93
94
  Pry.cli = true
@@ -95,16 +96,16 @@ class Pry
95
96
  # create the actual context
96
97
  if opts[:context]
97
98
  Pry.initial_session_setup
98
- context = Pry.binding_for(eval(opts[:context]))
99
+ context = Pry.binding_for(eval(opts[:context])) # rubocop:disable Security/Eval
99
100
  Pry.final_session_setup
100
101
  else
101
102
  context = Pry.toplevel_binding
102
103
  end
103
104
 
104
- if Pry::CLI.input_args.any? && Pry::CLI.input_args != ["pry"]
105
+ if !@pass_argv && Pry::CLI.input_args.any? && Pry::CLI.input_args != ["pry"]
105
106
  full_name = File.expand_path(Pry::CLI.input_args.first)
106
107
  Pry.load_file_through_repl(full_name)
107
- exit
108
+ Kernel.exit
108
109
  end
109
110
 
110
111
  # Start the session (running any code passed with -e, if there is any)
@@ -116,27 +117,19 @@ class Pry
116
117
  end
117
118
  end
118
119
 
119
- # Bring in options defined by plugins
120
- Pry::Slop.new do
121
- on "no-plugins" do
122
- Pry.config.should_load_plugins = false
123
- end
124
- end.parse(ARGV.dup)
125
-
126
- if Pry.config.should_load_plugins
127
- Pry::CLI.add_plugin_options
128
- end
129
-
130
120
  # The default Pry command line options (before plugin options are included)
131
121
  Pry::CLI.add_options do
132
122
  banner(
133
123
  "Usage: pry [OPTIONS]\n" \
134
124
  "Start a Pry session.\n" \
135
- "See http://pryrepl.org/ for more information.\n"
125
+ "See http://pryrepl.org/ for more information.\n" \
126
+ "Copyright (c) 2016 John Mair (banisterfiend)" \
136
127
  )
137
128
 
138
- on :e, :exec=, "A line of code to execute in context before the session starts" do |input|
139
- Pry.config.exec_string += "\n" if Pry.config.exec_string.length > 0
129
+ on(
130
+ :e, :exec=, "A line of code to execute in context before the session starts"
131
+ ) do |input|
132
+ Pry.config.exec_string += "\n" unless Pry.config.exec_string.empty?
140
133
  Pry.config.exec_string += input
141
134
  end
142
135
 
@@ -157,49 +150,48 @@ Pry::CLI.add_options do
157
150
  Pry.config.should_load_local_rc = false
158
151
  end
159
152
 
160
- on :s, "select-plugin=", "Only load specified plugin (and no others)." do |plugin_name|
161
- Pry.config.should_load_plugins = false
162
- Pry.plugins[plugin_name].activate!
153
+ on :s, "select-plugin=", "Only load specified plugin (and no others)." do |_plugin_name|
154
+ warn "The --select-plugin option is deprecated and has no effect"
163
155
  end
164
156
 
165
- on :d, "disable-plugin=", "Disable a specific plugin." do |plugin_name|
166
- Pry.plugins[plugin_name].disable!
157
+ on :d, "disable-plugin=", "Disable a specific plugin." do |_plugin_name|
158
+ warn "The --disable-plugin option is deprecated and has no effect"
167
159
  end
168
160
 
169
161
  on "no-plugins", "Suppress loading of plugins." do
170
- Pry.config.should_load_plugins = false
162
+ warn "The --no-plugins option is deprecated and has no effect"
171
163
  end
172
164
 
173
165
  on "plugins", "List installed plugins." do
174
166
  puts "Installed Plugins:"
175
167
  puts "--"
176
168
  Pry.locate_plugins.each do |plugin|
177
- puts "#{plugin.name}".ljust(18) << plugin.spec.summary
169
+ puts plugin.name.to_s.ljust(18) << plugin.spec.summary
178
170
  end
179
- exit
171
+ Kernel.exit
180
172
  end
181
173
 
182
174
  on "simple-prompt", "Enable simple prompt mode" do
183
- Pry.config.prompt = Pry::Prompt[:simple][:value]
175
+ Pry.config.prompt = Pry::Prompt[:simple]
184
176
  end
185
177
 
186
178
  on "noprompt", "No prompt mode" do
187
- Pry.config.prompt = Pry::Prompt[:none][:value]
179
+ Pry.config.prompt = Pry::Prompt[:none]
188
180
  end
189
181
 
190
182
  on :r, :require=, "`require` a Ruby script at startup" do |file|
191
183
  Pry.config.requires << file
192
184
  end
193
185
 
194
- on :I=, "Add a path to the $LOAD_PATH", as: Array, delimiter: ":" do |load_path|
186
+ on(:I=, "Add a path to the $LOAD_PATH", as: Array, delimiter: ":") do |load_path|
195
187
  load_path.map! do |path|
196
- /\A\.\// =~ path ? path : File.expand_path(path)
188
+ %r{\A\./} =~ path ? path : File.expand_path(path)
197
189
  end
198
190
 
199
191
  $LOAD_PATH.unshift(*load_path)
200
192
  end
201
193
 
202
- on "gem", "Shorthand for -I./lib -rgemname" do |load_path|
194
+ on "gem", "Shorthand for -I./lib -rgemname" do |_load_path|
203
195
  $LOAD_PATH.unshift("./lib")
204
196
  Dir["./lib/*.rb"].each do |file|
205
197
  Pry.config.requires << file
@@ -208,11 +200,11 @@ Pry::CLI.add_options do
208
200
 
209
201
  on :v, :version, "Display the Pry version" do
210
202
  puts "Pry version #{Pry::VERSION} on Ruby #{RUBY_VERSION}"
211
- exit
203
+ Kernel.exit
212
204
  end
213
205
 
214
- on(:c, :context=,
215
- "Start the session in the specified context. Equivalent to `context.pry` in a session.",
206
+ on :c, :context=,
207
+ "Start the session in the specified context. Equivalent to " \
208
+ "`context.pry` in a session.",
216
209
  default: "Pry.toplevel_binding"
217
- )
218
210
  end
data/lib/pry/code.rb CHANGED
@@ -1,6 +1,6 @@
1
- require 'pry/code/loc'
2
- require 'pry/code/code_range'
3
- require 'pry/code/code_file'
1
+ # frozen_string_literal: true
2
+
3
+ require 'method_source'
4
4
 
5
5
  class Pry
6
6
  class << self
@@ -85,11 +85,10 @@ class Pry
85
85
  # @param [Integer?] start_line
86
86
  # @param [Symbol?] code_type
87
87
  def initialize(lines = [], start_line = 1, code_type = :ruby)
88
- if lines.is_a? String
89
- lines = lines.lines
88
+ lines = lines.lines if lines.is_a? String
89
+ @lines = lines.each_with_index.map do |line, lineno|
90
+ LOC.new(line, lineno + start_line.to_i)
90
91
  end
91
- @lines = lines.each_with_index.map { |line, lineno|
92
- LOC.new(line, lineno + start_line.to_i) }
93
92
  @code_type = code_type
94
93
 
95
94
  @with_marker = @with_indentation = @with_line_numbers = nil
@@ -99,14 +98,10 @@ class Pry
99
98
  # line, unless specified otherwise.
100
99
  #
101
100
  # @param [String] line
102
- # @param [Integer?] lineno
103
- # @return [String] The inserted line.
104
- def push(line, lineno = nil)
105
- if lineno.nil?
106
- lineno = @lines.last.lineno + 1
107
- end
108
- @lines.push(LOC.new(line, lineno))
109
- line
101
+ # @return [void]
102
+ def push(line)
103
+ line_number = @lines.any? ? @lines.last.lineno + 1 : 1
104
+ @lines.push(LOC.new(line, line_number))
110
105
  end
111
106
  alias << push
112
107
 
@@ -120,6 +115,16 @@ class Pry
120
115
  end
121
116
  end
122
117
 
118
+ # Filter the lines using the given block.
119
+ #
120
+ # @yield [LOC]
121
+ # @return [Code]
122
+ def reject(&block)
123
+ alter do
124
+ @lines = @lines.reject(&block)
125
+ end
126
+ end
127
+
123
128
  # Remove all lines that aren't in the given range, expressed either as a
124
129
  # `Range` object or a first and last line number (inclusive). Negative
125
130
  # indices count from the end of the array of lines.
@@ -243,25 +248,20 @@ class Pry
243
248
  end
244
249
  end
245
250
 
246
- # @return [String]
247
- def inspect
248
- Object.instance_method(:to_s).bind(self).call
249
- end
250
-
251
251
  # @return [Integer] the number of digits in the last line.
252
252
  def max_lineno_width
253
- @lines.length > 0 ? @lines.last.lineno.to_s.length : 0
253
+ !@lines.empty? ? @lines.last.lineno.to_s.length : 0
254
254
  end
255
255
 
256
256
  # @return [String] a formatted representation (based on the configuration of
257
257
  # the object).
258
258
  def to_s
259
- print_to_output("", false)
259
+ print_to_output(''.dup, false)
260
260
  end
261
261
 
262
262
  # @return [String] a (possibly highlighted) copy of the source code.
263
263
  def highlighted
264
- print_to_output("", true)
264
+ print_to_output(''.dup, true)
265
265
  end
266
266
 
267
267
  # Writes a formatted representation (based on the configuration of the
@@ -332,14 +332,26 @@ class Pry
332
332
  end
333
333
 
334
334
  # Forward any missing methods to the output of `#to_s`.
335
- def method_missing(name, *args, &block)
336
- to_s.send(name, *args, &block)
335
+ def method_missing(method_name, *args, &block)
336
+ if (string = to_s).respond_to?(method_name)
337
+ string.__send__(method_name, *args, &block)
338
+ else
339
+ super
340
+ end
337
341
  end
338
- undef =~
342
+ undef =~ if method_defined?(:=~)
339
343
 
340
344
  # Check whether String responds to missing methods.
341
- def respond_to_missing?(name, include_all = false)
342
- ''.respond_to?(name, include_all)
345
+ def respond_to_missing?(method_name, include_private = false)
346
+ ''.respond_to?(method_name, include_private) || super
347
+ end
348
+
349
+ if RUBY_VERSION.start_with?('1.9')
350
+ # @todo This is needed for Ruby 1.9 support where `lines` return an
351
+ # Enumerator. Newer Rubies return an Array
352
+ def lines
353
+ super.to_a
354
+ end
343
355
  end
344
356
 
345
357
  protected
@@ -1,29 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'method_source'
4
+
1
5
  class Pry
2
6
  class CodeFile
3
- DEFAULT_EXT = '.rb'
7
+ DEFAULT_EXT = '.rb'.freeze
4
8
 
5
9
  # List of all supported languages.
6
10
  # @return [Hash]
7
11
  EXTENSIONS = {
8
- %w(.py) => :python,
9
- %w(.js) => :javascript,
10
- %w(.css) => :css,
11
- %w(.xml) => :xml,
12
- %w(.php) => :php,
13
- %w(.html) => :html,
14
- %w(.diff) => :diff,
15
- %w(.java) => :java,
16
- %w(.json) => :json,
17
- %w(.c .h) => :c,
18
- %w(.rhtml) => :rhtml,
19
- %w(.yaml .yml) => :yaml,
20
- %w(.cpp .hpp .cc .h .cxx) => :cpp,
21
- %w(.rb .ru .irbrc .gemspec .pryrc .rake) => :ruby,
22
- }
12
+ %w[.py] => :python,
13
+ %w[.js] => :javascript,
14
+ %w[.css] => :css,
15
+ %w[.xml] => :xml,
16
+ %w[.php] => :php,
17
+ %w[.html] => :html,
18
+ %w[.diff] => :diff,
19
+ %w[.java] => :java,
20
+ %w[.json] => :json,
21
+ %w[.c .h] => :c,
22
+ %w[.rhtml] => :rhtml,
23
+ %w[.yaml .yml] => :yaml,
24
+ %w[.cpp .hpp .cc .h .cxx] => :cpp,
25
+ %w[.rb .ru .irbrc .gemspec .pryrc .rake] => :ruby
26
+ }.freeze
23
27
 
24
28
  FILES = {
25
- %w(Gemfile Rakefile Guardfile Capfile) => :ruby
26
- }
29
+ %w[Gemfile Rakefile Guardfile Capfile] => :ruby
30
+ }.freeze
27
31
 
28
32
  # Store the current working directory. This allows show-source etc. to work if
29
33
  # your process has changed directory since boot. [Issue #675]
@@ -58,16 +62,16 @@ class Pry
58
62
  # readable for some reason.
59
63
  # @return [String] absolute path for the given `filename`.
60
64
  def abs_path
61
- code_path.detect { |path| readable?(path) } or
62
- raise MethodSource::SourceNotFoundError,
63
- "Cannot open #{ @filename.inspect } for reading."
65
+ code_path.detect { |path| readable?(path) } ||
66
+ raise(MethodSource::SourceNotFoundError,
67
+ "Cannot open #{@filename.inspect} for reading.")
64
68
  end
65
69
 
66
70
  # @param [String] path
67
71
  # @return [Boolean] if the path, with or without the default ext,
68
72
  # is a readable file then `true`, otherwise `false`.
69
73
  def readable?(path)
70
- File.readable?(path) && !File.directory?(path) or
74
+ File.readable?(path) && !File.directory?(path) ||
71
75
  File.readable?(path << DEFAULT_EXT)
72
76
  end
73
77
 
@@ -80,8 +84,8 @@ class Pry
80
84
  # @param [String] filename
81
85
  # @param [Symbol] default (:unknown) the file type to assume if none could be
82
86
  # detected.
83
- # @return [Symbol, nil] The CodeRay type of a file from its extension, or
84
- # `nil` if `:unknown`.
87
+ # @return [Symbol, nil] The SyntaxHighlighter type of a file from its
88
+ # extension, or `nil` if `:unknown`.
85
89
  def type_from_filename(filename, default = :unknown)
86
90
  _, @code_type = EXTENSIONS.find do |k, _|
87
91
  k.any? { |ext| ext == File.extname(filename) }
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Pry
2
4
  class Code
3
5
  # Represents a range of lines in a code listing.
@@ -20,9 +22,9 @@ class Pry
20
22
 
21
23
  private
22
24
 
23
- def start_line; @start_line; end
25
+ attr_reader :start_line
24
26
 
25
- def end_line; @end_line; end
27
+ attr_reader :end_line
26
28
 
27
29
  # If `end_line` is equal to `nil`, then calculate it from the first
28
30
  # parameter, `start_line`. Otherwise, leave it as it is.
data/lib/pry/code/loc.rb CHANGED
@@ -1,7 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Pry
2
4
  class Code
3
- # Represents a line of code (which may, in fact, contain multiple lines if the
4
- # entirety was eval'd as a single unit following the `edit` command).
5
+ # Represents a line of code (which may, in fact, contain multiple lines if
6
+ # the entirety was eval'd as a single unit following the `edit` command).
5
7
  #
6
8
  # A line of code is a tuple, which consists of a line and a line number. A
7
9
  # `LOC` object's state (namely, the line parameter) can be changed via
@@ -52,7 +54,7 @@ class Pry
52
54
  # @param [Symbol] code_type
53
55
  # @return [void]
54
56
  def colorize(code_type)
55
- tuple[0] = CodeRay.scan(line, code_type).term
57
+ tuple[0] = SyntaxHighlighter.highlight(line, code_type)
56
58
  end
57
59
 
58
60
  # Prepends the line number `lineno` to the `line`.
@@ -61,9 +63,14 @@ class Pry
61
63
  # @return [void]
62
64
  def add_line_number(max_width = 0, color = false)
63
65
  padded = lineno.to_s.rjust(max_width)
64
- colorized_lineno = color ? Pry::Helpers::BaseHelpers.colorize_code(padded) : padded
66
+ colorized_lineno =
67
+ if color
68
+ Pry::Helpers::BaseHelpers.colorize_code(padded)
69
+ else
70
+ padded
71
+ end
65
72
  properly_padded_line = handle_multiline_entries_from_edit_command(line, max_width)
66
- tuple[0] = "#{ colorized_lineno }: #{ properly_padded_line }"
73
+ tuple[0] = "#{colorized_lineno}: #{properly_padded_line}"
67
74
  end
68
75
 
69
76
  # Prepends a marker "=>" or an empty marker to the +line+.
@@ -74,9 +81,9 @@ class Pry
74
81
  def add_marker(marker_lineno)
75
82
  tuple[0] =
76
83
  if lineno == marker_lineno
77
- " => #{ line }"
84
+ " => #{line}"
78
85
  else
79
- " #{ line }"
86
+ " #{line}"
80
87
  end
81
88
  end
82
89
 
@@ -85,7 +92,7 @@ class Pry
85
92
  # @param [Integer] distance
86
93
  # @return [void]
87
94
  def indent(distance)
88
- tuple[0] = "#{ ' ' * distance }#{ line }"
95
+ tuple[0] = "#{' ' * distance}#{line}"
89
96
  end
90
97
 
91
98
  def handle_multiline_entries_from_edit_command(line, max_width)