irb 1.6.2 → 1.6.3

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.
data/lib/irb/init.rb CHANGED
@@ -1,14 +1,8 @@
1
1
  # frozen_string_literal: false
2
2
  #
3
3
  # irb/init.rb - irb initialize module
4
- # $Release Version: 0.9.6$
5
- # $Revision$
6
4
  # by Keiju ISHITSUKA(keiju@ruby-lang.org)
7
5
  #
8
- # --
9
- #
10
- #
11
- #
12
6
 
13
7
  module IRB # :nodoc:
14
8
 
@@ -407,9 +401,9 @@ module IRB # :nodoc:
407
401
  end
408
402
  if home = ENV["HOME"]
409
403
  yield proc{|rc| home+"/.irb#{rc}"}
404
+ yield proc{|rc| home+"/.config/irb/irb#{rc}"}
410
405
  end
411
406
  current_dir = Dir.pwd
412
- yield proc{|rc| current_dir+"/.config/irb/irb#{rc}"}
413
407
  yield proc{|rc| current_dir+"/.irb#{rc}"}
414
408
  yield proc{|rc| current_dir+"/irb#{rc.sub(/\A_?/, '.')}"}
415
409
  yield proc{|rc| current_dir+"/_irb#{rc}"}
@@ -427,8 +421,6 @@ module IRB # :nodoc:
427
421
  end
428
422
  end
429
423
 
430
-
431
- DefaultEncodings = Struct.new(:external, :internal)
432
424
  class << IRB
433
425
  private
434
426
  def set_encoding(extern, intern = nil, override: true)
@@ -1,14 +1,9 @@
1
1
  # frozen_string_literal: false
2
2
  #
3
3
  # irb/input-method.rb - input methods used irb
4
- # $Release Version: 0.9.6$
5
- # $Revision$
6
4
  # by Keiju ISHITSUKA(keiju@ruby-lang.org)
7
5
  #
8
- # --
9
- #
10
- #
11
- #
6
+
12
7
  require_relative 'src_encoding'
13
8
  require_relative 'magic-file'
14
9
  require_relative 'completion'
data/lib/irb/inspector.rb CHANGED
@@ -1,15 +1,8 @@
1
1
  # frozen_string_literal: false
2
2
  #
3
3
  # irb/inspector.rb - inspect methods
4
- # $Release Version: 0.9.6$
5
- # $Revision: 1.19 $
6
- # $Date: 2002/06/11 07:51:31 $
7
4
  # by Keiju ISHITSUKA(keiju@ruby-lang.org)
8
5
  #
9
- # --
10
- #
11
- #
12
- #
13
6
 
14
7
  module IRB # :nodoc:
15
8
 
@@ -42,6 +35,7 @@ module IRB # :nodoc:
42
35
  # irb(main):001:0> "what?" #=> omg! what?
43
36
  #
44
37
  class Inspector
38
+ KERNEL_INSPECT = Object.instance_method(:inspect)
45
39
  # Default inspectors available to irb, this includes:
46
40
  #
47
41
  # +:pp+:: Using Kernel#pretty_inspect
@@ -100,9 +94,18 @@ module IRB # :nodoc:
100
94
  # Proc to call when the input is evaluated and output in irb.
101
95
  def inspect_value(v)
102
96
  @inspect.call(v)
103
- rescue
104
- puts "(Object doesn't support #inspect)"
105
- ''
97
+ rescue => e
98
+ puts "An error occurred when inspecting the object: #{e.inspect}"
99
+
100
+ begin
101
+ # TODO: change this to bind_call when we drop support for Ruby 2.6
102
+ puts "Result of Kernel#inspect: #{KERNEL_INSPECT.bind(v).call}"
103
+ ''
104
+ rescue => e
105
+ puts "An error occurred when running Kernel#inspect: #{e.inspect}"
106
+ puts e.backtrace.join("\n")
107
+ ''
108
+ end
106
109
  end
107
110
  end
108
111
 
data/lib/irb/lc/error.rb CHANGED
@@ -1,14 +1,8 @@
1
1
  # frozen_string_literal: false
2
2
  #
3
3
  # irb/lc/error.rb -
4
- # $Release Version: 0.9.6$
5
- # $Revision$
6
4
  # by Keiju ISHITSUKA(keiju@ruby-lang.org)
7
5
  #
8
- # --
9
- #
10
- #
11
- #
12
6
 
13
7
  module IRB
14
8
  # :stopdoc:
@@ -22,8 +22,8 @@ Usage: irb.rb [options] [programfile] [arguments]
22
22
  Show truncated result on assignment (default).
23
23
  --inspect Use 'inspect' for output.
24
24
  --noinspect Don't use 'inspect' for output.
25
- --multiline Use multiline editor module.
26
- --nomultiline Don't use multiline editor module (default).
25
+ --multiline Use multiline editor module (default).
26
+ --nomultiline Don't use multiline editor module.
27
27
  --singleline Use single line editor module.
28
28
  --nosingleline Don't use single line editor module (default).
29
29
  --colorize Use color-highlighting (default).
@@ -1,14 +1,8 @@
1
- # -*- coding: utf-8 -*-
2
1
  # frozen_string_literal: false
2
+ #
3
3
  # irb/lc/ja/error.rb -
4
- # $Release Version: 0.9.6$
5
- # $Revision$
6
4
  # by Keiju ISHITSUKA(keiju@ruby-lang.org)
7
5
  #
8
- # --
9
- #
10
- #
11
- #
12
6
 
13
7
  module IRB
14
8
  # :stopdoc:
data/lib/irb/locale.rb CHANGED
@@ -1,14 +1,9 @@
1
1
  # frozen_string_literal: false
2
2
  #
3
3
  # irb/locale.rb - internationalization module
4
- # $Release Version: 0.9.6$
5
- # $Revision$
6
4
  # by Keiju ISHITSUKA(keiju@ruby-lang.org)
7
5
  #
8
- # --
9
- #
10
- #
11
- #
6
+
12
7
  module IRB # :nodoc:
13
8
  class Locale
14
9
 
data/lib/irb/notifier.rb CHANGED
@@ -1,14 +1,8 @@
1
1
  # frozen_string_literal: false
2
2
  #
3
3
  # notifier.rb - output methods used by irb
4
- # $Release Version: 0.9.6$
5
- # $Revision$
6
4
  # by Keiju ISHITSUKA(keiju@ruby-lang.org)
7
5
  #
8
- # --
9
- #
10
- #
11
- #
12
6
 
13
7
  require_relative "output-method"
14
8
 
@@ -1,14 +1,8 @@
1
1
  # frozen_string_literal: false
2
2
  #
3
3
  # output-method.rb - output methods used by irb
4
- # $Release Version: 0.9.6$
5
- # $Revision$
6
4
  # by Keiju ISHITSUKA(keiju@ruby-lang.org)
7
5
  #
8
- # --
9
- #
10
- #
11
- #
12
6
 
13
7
  module IRB
14
8
  # An abstract output class for IO in irb. This is mainly used internally by
data/lib/irb/ruby-lex.rb CHANGED
@@ -1,14 +1,8 @@
1
1
  # frozen_string_literal: false
2
2
  #
3
3
  # irb/ruby-lex.rb - ruby lexcal analyzer
4
- # $Release Version: 0.9.6$
5
- # $Revision$
6
4
  # by Keiju ISHITSUKA(keiju@ruby-lang.org)
7
5
  #
8
- # --
9
- #
10
- #
11
- #
12
6
 
13
7
  require "ripper"
14
8
  require "jruby" if RUBY_ENGINE == "jruby"
@@ -22,7 +16,8 @@ class RubyLex
22
16
  end
23
17
  end
24
18
 
25
- def initialize
19
+ def initialize(context)
20
+ @context = context
26
21
  @exp_line_no = @line_no = 1
27
22
  @indent = 0
28
23
  @continue = false
@@ -48,13 +43,13 @@ class RubyLex
48
43
  end
49
44
 
50
45
  # io functions
51
- def set_input(io, p = nil, context:, &block)
46
+ def set_input(io, &block)
52
47
  @io = io
53
48
  if @io.respond_to?(:check_termination)
54
49
  @io.check_termination do |code|
55
50
  if Reline::IOGate.in_pasting?
56
- lex = RubyLex.new
57
- rest = lex.check_termination_in_prev_line(code, context: context)
51
+ lex = RubyLex.new(@context)
52
+ rest = lex.check_termination_in_prev_line(code)
58
53
  if rest
59
54
  Reline.delete_text
60
55
  rest.bytes.reverse_each do |c|
@@ -67,12 +62,13 @@ class RubyLex
67
62
  else
68
63
  # Accept any single-line input for symbol aliases or commands that transform args
69
64
  command = code.split(/\s/, 2).first
70
- if context.symbol_alias?(command) || context.transform_args?(command)
65
+ if @context.symbol_alias?(command) || @context.transform_args?(command)
71
66
  next true
72
67
  end
73
68
 
74
69
  code.gsub!(/\s*\z/, '').concat("\n")
75
- ltype, indent, continue, code_block_open = check_state(code, context: context)
70
+ tokens = self.class.ripper_lex_without_warning(code, context: @context)
71
+ ltype, indent, continue, code_block_open = check_state(code, tokens)
76
72
  if ltype or indent > 0 or continue or code_block_open
77
73
  false
78
74
  else
@@ -85,7 +81,7 @@ class RubyLex
85
81
  @io.dynamic_prompt do |lines|
86
82
  lines << '' if lines.empty?
87
83
  result = []
88
- tokens = self.class.ripper_lex_without_warning(lines.map{ |l| l + "\n" }.join, context: context)
84
+ tokens = self.class.ripper_lex_without_warning(lines.map{ |l| l + "\n" }.join, context: @context)
89
85
  code = String.new
90
86
  partial_tokens = []
91
87
  unprocessed_tokens = []
@@ -96,8 +92,9 @@ class RubyLex
96
92
  if t.tok.include?("\n")
97
93
  t_str = t.tok
98
94
  t_str.each_line("\n") do |s|
99
- code << s << "\n"
100
- ltype, indent, continue, code_block_open = check_state(code, partial_tokens, context: context)
95
+ code << s
96
+ next unless s.include?("\n")
97
+ ltype, indent, continue, code_block_open = check_state(code, partial_tokens)
101
98
  result << @prompt.call(ltype, indent, continue || code_block_open, @line_no + line_num_offset)
102
99
  line_num_offset += 1
103
100
  end
@@ -108,29 +105,22 @@ class RubyLex
108
105
  end
109
106
 
110
107
  unless unprocessed_tokens.empty?
111
- ltype, indent, continue, code_block_open = check_state(code, unprocessed_tokens, context: context)
108
+ ltype, indent, continue, code_block_open = check_state(code, unprocessed_tokens)
112
109
  result << @prompt.call(ltype, indent, continue || code_block_open, @line_no + line_num_offset)
113
110
  end
114
111
  result
115
112
  end
116
113
  end
117
114
 
118
- if p.respond_to?(:call)
119
- @input = p
120
- elsif block_given?
115
+ if block_given?
121
116
  @input = block
122
117
  else
123
118
  @input = Proc.new{@io.gets}
124
119
  end
125
120
  end
126
121
 
127
- def set_prompt(p = nil, &block)
128
- p = block if block_given?
129
- if p.respond_to?(:call)
130
- @prompt = p
131
- else
132
- @prompt = Proc.new{print p}
133
- end
122
+ def set_prompt(&block)
123
+ @prompt = block
134
124
  end
135
125
 
136
126
  ERROR_TOKENS = [
@@ -188,6 +178,7 @@ class RubyLex
188
178
  if line_count >= line_index
189
179
  return prev_spaces
190
180
  end
181
+ next if t.event == :on_tstring_content || t.event == :on_words_sep
191
182
  if (@tokens.size - 1) > i
192
183
  md = @tokens[i + 1].tok.match(/(\A +)/)
193
184
  prev_spaces = md.nil? ? 0 : md[1].count(' ')
@@ -197,11 +188,11 @@ class RubyLex
197
188
  prev_spaces
198
189
  end
199
190
 
200
- def set_auto_indent(context)
201
- if @io.respond_to?(:auto_indent) and context.auto_indent_mode
191
+ def set_auto_indent
192
+ if @io.respond_to?(:auto_indent) and @context.auto_indent_mode
202
193
  @io.auto_indent do |lines, line_index, byte_pointer, is_newline|
203
194
  if is_newline
204
- @tokens = self.class.ripper_lex_without_warning(lines[0..line_index].join("\n"), context: context)
195
+ @tokens = self.class.ripper_lex_without_warning(lines[0..line_index].join("\n"), context: @context)
205
196
  prev_spaces = find_prev_spaces(line_index)
206
197
  depth_difference = check_newline_depth_difference
207
198
  depth_difference = 0 if depth_difference < 0
@@ -210,19 +201,18 @@ class RubyLex
210
201
  code = line_index.zero? ? '' : lines[0..(line_index - 1)].map{ |l| l + "\n" }.join
211
202
  last_line = lines[line_index]&.byteslice(0, byte_pointer)
212
203
  code += last_line if last_line
213
- @tokens = self.class.ripper_lex_without_warning(code, context: context)
204
+ @tokens = self.class.ripper_lex_without_warning(code, context: @context)
214
205
  check_corresponding_token_depth(lines, line_index)
215
206
  end
216
207
  end
217
208
  end
218
209
  end
219
210
 
220
- def check_state(code, tokens = nil, context: nil)
221
- tokens = self.class.ripper_lex_without_warning(code, context: context) unless tokens
211
+ def check_state(code, tokens)
222
212
  ltype = process_literal_type(tokens)
223
213
  indent = process_nesting_level(tokens)
224
214
  continue = process_continue(tokens)
225
- lvars_code = self.class.generate_local_variables_assign_code(context.local_variables)
215
+ lvars_code = self.class.generate_local_variables_assign_code(@context.local_variables)
226
216
  code = "#{lvars_code}\n#{code}" if lvars_code
227
217
  code_block_open = check_code_block(code, tokens)
228
218
  [ltype, indent, continue, code_block_open]
@@ -243,13 +233,13 @@ class RubyLex
243
233
  @code_block_open = false
244
234
  end
245
235
 
246
- def each_top_level_statement(context)
236
+ def each_top_level_statement
247
237
  initialize_input
248
238
  catch(:TERM_INPUT) do
249
239
  loop do
250
240
  begin
251
241
  prompt
252
- unless l = lex(context)
242
+ unless l = lex
253
243
  throw :TERM_INPUT if @line == ''
254
244
  else
255
245
  @line_no += l.count("\n")
@@ -279,19 +269,19 @@ class RubyLex
279
269
  end
280
270
  end
281
271
 
282
- def lex(context)
272
+ def lex
283
273
  line = @input.call
284
274
  if @io.respond_to?(:check_termination)
285
275
  return line # multiline
286
276
  end
287
277
  code = @line + (line.nil? ? '' : line)
288
278
  code.gsub!(/\s*\z/, '').concat("\n")
289
- @tokens = self.class.ripper_lex_without_warning(code, context: context)
290
- @ltype, @indent, @continue, @code_block_open = check_state(code, @tokens, context: context)
279
+ @tokens = self.class.ripper_lex_without_warning(code, context: @context)
280
+ @ltype, @indent, @continue, @code_block_open = check_state(code, @tokens)
291
281
  line
292
282
  end
293
283
 
294
- def process_continue(tokens = @tokens)
284
+ def process_continue(tokens)
295
285
  # last token is always newline
296
286
  if tokens.size >= 2 and tokens[-2].event == :on_regexp_end
297
287
  # end of regexp literal
@@ -312,7 +302,7 @@ class RubyLex
312
302
  false
313
303
  end
314
304
 
315
- def check_code_block(code, tokens = @tokens)
305
+ def check_code_block(code, tokens)
316
306
  return true if tokens.empty?
317
307
  if tokens.last.event == :on_heredoc_beg
318
308
  return true
@@ -404,7 +394,7 @@ class RubyLex
404
394
  false
405
395
  end
406
396
 
407
- def process_nesting_level(tokens = @tokens)
397
+ def process_nesting_level(tokens)
408
398
  indent = 0
409
399
  in_oneliner_def = nil
410
400
  tokens.each_with_index { |t, index|
@@ -642,7 +632,7 @@ class RubyLex
642
632
  end
643
633
 
644
634
  case t.event
645
- when :on_ignored_nl, :on_nl, :on_comment
635
+ when :on_ignored_nl, :on_nl, :on_comment, :on_heredoc_end, :on_embdoc_end
646
636
  if in_oneliner_def != :BODY
647
637
  corresponding_token_depth = nil
648
638
  spaces_at_line_head = 0
@@ -760,7 +750,7 @@ class RubyLex
760
750
  pending_heredocs.first || start_token.last
761
751
  end
762
752
 
763
- def process_literal_type(tokens = @tokens)
753
+ def process_literal_type(tokens)
764
754
  start_token = check_string_literal(tokens)
765
755
  return nil if start_token == ""
766
756
 
@@ -781,20 +771,15 @@ class RubyLex
781
771
  when :on_qsymbols_beg then ?]
782
772
  when :on_symbols_beg then ?]
783
773
  when :on_heredoc_beg
784
- start_token&.tok =~ /<<[-~]?(['"`])[_a-zA-Z0-9]+\1/
785
- case $1
786
- when ?" then ?"
787
- when ?' then ?'
788
- when ?` then ?`
789
- else ?"
790
- end
774
+ start_token&.tok =~ /<<[-~]?(['"`])\w+\1/
775
+ $1 || ?"
791
776
  else
792
777
  nil
793
778
  end
794
779
  end
795
780
 
796
- def check_termination_in_prev_line(code, context: nil)
797
- tokens = self.class.ripper_lex_without_warning(code, context: context)
781
+ def check_termination_in_prev_line(code)
782
+ tokens = self.class.ripper_lex_without_warning(code, context: @context)
798
783
  past_first_newline = false
799
784
  index = tokens.rindex do |t|
800
785
  # traverse first token before last line
data/lib/irb/version.rb CHANGED
@@ -1,17 +1,11 @@
1
1
  # frozen_string_literal: false
2
2
  #
3
3
  # irb/version.rb - irb version definition file
4
- # $Release Version: 0.9.6$
5
- # $Revision$
6
4
  # by Keiju ISHITSUKA(keiju@ishitsuka.com)
7
5
  #
8
- # --
9
- #
10
- #
11
- #
12
6
 
13
7
  module IRB # :nodoc:
14
- VERSION = "1.6.2"
8
+ VERSION = "1.6.3"
15
9
  @RELEASE_VERSION = VERSION
16
- @LAST_UPDATE_DATE = "2022-12-13"
10
+ @LAST_UPDATE_DATE = "2023-03-06"
17
11
  end
data/lib/irb/workspace.rb CHANGED
@@ -1,14 +1,8 @@
1
1
  # frozen_string_literal: false
2
2
  #
3
3
  # irb/workspace-binding.rb -
4
- # $Release Version: 0.9.6$
5
- # $Revision$
6
4
  # by Keiju ISHITSUKA(keiju@ruby-lang.org)
7
5
  #
8
- # --
9
- #
10
- #
11
- #
12
6
 
13
7
  require "delegate"
14
8
 
@@ -115,7 +109,7 @@ EOF
115
109
  attr_reader :main
116
110
 
117
111
  # Evaluate the given +statements+ within the context of this workspace.
118
- def evaluate(context, statements, file = __FILE__, line = __LINE__)
112
+ def evaluate(statements, file = __FILE__, line = __LINE__)
119
113
  eval(statements, @binding, file, line)
120
114
  end
121
115
 
@@ -128,6 +122,8 @@ EOF
128
122
  end
129
123
 
130
124
  # error message manipulator
125
+ # WARN: Rails patches this method to filter its own backtrace. Be cautious when changing it.
126
+ # See: https://github.com/rails/rails/blob/main/railties/lib/rails/commands/console/console_command.rb#L8:~:text=def,filter_backtrace
131
127
  def filter_backtrace(bt)
132
128
  return nil if bt =~ /\/irb\/.*\.rb/
133
129
  return nil if bt =~ /\/irb\.rb/
@@ -142,11 +138,7 @@ EOF
142
138
  end
143
139
 
144
140
  def code_around_binding
145
- if @binding.respond_to?(:source_location)
146
- file, pos = @binding.source_location
147
- else
148
- file, pos = @binding.eval('[__FILE__, __LINE__]')
149
- end
141
+ file, pos = @binding.source_location
150
142
 
151
143
  if defined?(::SCRIPT_LINES__[file]) && lines = ::SCRIPT_LINES__[file]
152
144
  code = ::SCRIPT_LINES__[file].join('')
@@ -173,8 +165,5 @@ EOF
173
165
 
174
166
  "\nFrom: #{file} @ line #{pos + 1} :\n\n#{body}#{Color.clear}\n"
175
167
  end
176
-
177
- def IRB.delete_caller
178
- end
179
168
  end
180
169
  end
@@ -1,14 +1,8 @@
1
1
  # frozen_string_literal: false
2
2
  #
3
3
  # irb/ws-for-case-2.rb -
4
- # $Release Version: 0.9.6$
5
- # $Revision$
6
4
  # by Keiju ISHITSUKA(keiju@ruby-lang.org)
7
5
  #
8
- # --
9
- #
10
- #
11
- #
12
6
 
13
7
  while true
14
8
  IRB::BINDING_QUEUE.push _ = binding
data/lib/irb/xmp.rb CHANGED
@@ -1,14 +1,8 @@
1
1
  # frozen_string_literal: false
2
2
  #
3
3
  # xmp.rb - irb version of gotoken xmp
4
- # $Release Version: 0.9$
5
- # $Revision$
6
4
  # by Keiju ISHITSUKA(Nippon Rational Inc.)
7
5
  #
8
- # --
9
- #
10
- #
11
- #
12
6
 
13
7
  require_relative "../irb"
14
8
  require_relative "frame"
data/lib/irb.rb CHANGED
@@ -1,14 +1,9 @@
1
1
  # frozen_string_literal: false
2
2
  #
3
3
  # irb.rb - irb main module
4
- # $Release Version: 0.9.6 $
5
- # $Revision$
6
4
  # by Keiju ISHITSUKA(keiju@ruby-lang.org)
7
5
  #
8
- # --
9
- #
10
- #
11
- #
6
+
12
7
  require "ripper"
13
8
  require "reline"
14
9
 
@@ -468,12 +463,16 @@ module IRB
468
463
  # be parsed as :assign and echo will be suppressed, but the latter is
469
464
  # parsed as a :method_add_arg and the output won't be suppressed
470
465
 
466
+ PROMPT_MAIN_TRUNCATE_LENGTH = 32
467
+ PROMPT_MAIN_TRUNCATE_OMISSION = '...'.freeze
468
+ CONTROL_CHARACTERS_PATTERN = "\x00-\x1F".freeze
469
+
471
470
  # Creates a new irb session
472
471
  def initialize(workspace = nil, input_method = nil)
473
472
  @context = Context.new(self, workspace, input_method)
474
473
  @context.main.extend ExtendCommandBundle
475
474
  @signal_status = :IN_IRB
476
- @scanner = RubyLex.new
475
+ @scanner = RubyLex.new(@context)
477
476
  end
478
477
 
479
478
  # A hook point for `debug` command's TracePoint after :IRB_EXIT as well as its clean-up
@@ -543,7 +542,7 @@ module IRB
543
542
  @context.io.prompt
544
543
  end
545
544
 
546
- @scanner.set_input(@context.io, context: @context) do
545
+ @scanner.set_input(@context.io) do
547
546
  signal_status(:IN_INPUT) do
548
547
  if l = @context.io.gets
549
548
  print l if @context.verbose?
@@ -561,9 +560,9 @@ module IRB
561
560
  end
562
561
  end
563
562
 
564
- @scanner.set_auto_indent(@context) if @context.auto_indent_mode
563
+ @scanner.set_auto_indent
565
564
 
566
- @scanner.each_top_level_statement(@context) do |line, line_no|
565
+ @scanner.each_top_level_statement do |line, line_no|
567
566
  signal_status(:IN_EVAL) do
568
567
  begin
569
568
  line.untaint if RUBY_VERSION < '2.7'
@@ -780,6 +779,15 @@ module IRB
780
779
  end
781
780
  end
782
781
 
782
+ def truncate_prompt_main(str) # :nodoc:
783
+ str = str.tr(CONTROL_CHARACTERS_PATTERN, ' ')
784
+ if str.size <= PROMPT_MAIN_TRUNCATE_LENGTH
785
+ str
786
+ else
787
+ str[0, PROMPT_MAIN_TRUNCATE_LENGTH - PROMPT_MAIN_TRUNCATE_OMISSION.size] + PROMPT_MAIN_TRUNCATE_OMISSION
788
+ end
789
+ end
790
+
783
791
  def prompt(prompt, ltype, indent, line_no) # :nodoc:
784
792
  p = prompt.dup
785
793
  p.gsub!(/%([0-9]+)?([a-zA-Z])/) do
@@ -787,9 +795,9 @@ module IRB
787
795
  when "N"
788
796
  @context.irb_name
789
797
  when "m"
790
- @context.main.to_s
798
+ truncate_prompt_main(@context.main.to_s)
791
799
  when "M"
792
- @context.main.inspect
800
+ truncate_prompt_main(@context.main.inspect)
793
801
  when "l"
794
802
  ltype
795
803
  when "i"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: irb
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.2
4
+ version: 1.6.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - aycabta
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2022-12-20 00:00:00.000000000 Z
12
+ date: 2023-03-07 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: reline
@@ -110,7 +110,11 @@ homepage: https://github.com/ruby/irb
110
110
  licenses:
111
111
  - Ruby
112
112
  - BSD-2-Clause
113
- metadata: {}
113
+ metadata:
114
+ homepage_uri: https://github.com/ruby/irb
115
+ source_code_uri: https://github.com/ruby/irb
116
+ documentation_uri: https://github.com/ruby/irb
117
+ changelog_uri: https://github.com/ruby/irb/releases
114
118
  post_install_message:
115
119
  rdoc_options: []
116
120
  require_paths:
@@ -126,7 +130,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
126
130
  - !ruby/object:Gem::Version
127
131
  version: '0'
128
132
  requirements: []
129
- rubygems_version: 3.3.7
133
+ rubygems_version: 3.4.1
130
134
  signing_key:
131
135
  specification_version: 4
132
136
  summary: Interactive Ruby command-line tool for REPL (Read Eval Print Loop).