irb 1.3.1 → 1.3.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +10 -0
- data/Rakefile +8 -1
- data/irb.gemspec +2 -48
- data/lib/irb.rb +30 -11
- data/lib/irb/cmd/info.rb +25 -0
- data/lib/irb/cmd/ls.rb +107 -0
- data/lib/irb/cmd/measure.rb +10 -4
- data/lib/irb/cmd/nop.rb +10 -4
- data/lib/irb/cmd/show_source.rb +86 -0
- data/lib/irb/cmd/whereami.rb +20 -0
- data/lib/irb/color.rb +14 -16
- data/lib/irb/color_printer.rb +24 -5
- data/lib/irb/completion.rb +73 -3
- data/lib/irb/ext/loader.rb +46 -19
- data/lib/irb/ext/save-history.rb +15 -5
- data/lib/irb/extend-command.rb +21 -4
- data/lib/irb/init.rb +27 -5
- data/lib/irb/input-method.rb +19 -2
- data/lib/irb/lc/help-message +6 -6
- data/lib/irb/ruby-lex.rb +131 -21
- data/lib/irb/version.rb +2 -2
- data/lib/irb/workspace.rb +2 -1
- metadata +13 -37
data/lib/irb/input-method.rb
CHANGED
@@ -124,10 +124,22 @@ module IRB
|
|
124
124
|
|
125
125
|
# Use a File for IO with irb, see InputMethod
|
126
126
|
class FileInputMethod < InputMethod
|
127
|
+
class << self
|
128
|
+
def open(file, &block)
|
129
|
+
begin
|
130
|
+
io = new(file)
|
131
|
+
block.call(io)
|
132
|
+
ensure
|
133
|
+
io&.close
|
134
|
+
end
|
135
|
+
end
|
136
|
+
end
|
137
|
+
|
127
138
|
# Creates a new input method object
|
128
139
|
def initialize(file)
|
129
140
|
super
|
130
141
|
@io = IRB::MagicFile.open(file)
|
142
|
+
@external_encoding = @io.external_encoding
|
131
143
|
end
|
132
144
|
# The file name of this input method, usually given during initialization.
|
133
145
|
attr_reader :file_name
|
@@ -137,7 +149,7 @@ module IRB
|
|
137
149
|
#
|
138
150
|
# See IO#eof? for more information.
|
139
151
|
def eof?
|
140
|
-
@io.eof?
|
152
|
+
@io.closed? || @io.eof?
|
141
153
|
end
|
142
154
|
|
143
155
|
# Reads the next line from this input method.
|
@@ -150,13 +162,17 @@ module IRB
|
|
150
162
|
|
151
163
|
# The external encoding for standard input.
|
152
164
|
def encoding
|
153
|
-
@
|
165
|
+
@external_encoding
|
154
166
|
end
|
155
167
|
|
156
168
|
# For debug message
|
157
169
|
def inspect
|
158
170
|
'FileInputMethod'
|
159
171
|
end
|
172
|
+
|
173
|
+
def close
|
174
|
+
@io.close
|
175
|
+
end
|
160
176
|
end
|
161
177
|
|
162
178
|
begin
|
@@ -264,6 +280,7 @@ module IRB
|
|
264
280
|
Reline.basic_word_break_characters = IRB::InputCompletor::BASIC_WORD_BREAK_CHARACTERS
|
265
281
|
end
|
266
282
|
Reline.completion_append_character = nil
|
283
|
+
Reline.completer_quote_characters = ''
|
267
284
|
Reline.completion_proc = IRB::InputCompletor::CompletionProc
|
268
285
|
Reline.output_modifier_proc =
|
269
286
|
if IRB.conf[:USE_COLORIZE]
|
data/lib/irb/lc/help-message
CHANGED
@@ -10,7 +10,7 @@
|
|
10
10
|
#
|
11
11
|
#
|
12
12
|
Usage: irb.rb [options] [programfile] [arguments]
|
13
|
-
-f
|
13
|
+
-f Suppress read of ~/.irbrc
|
14
14
|
-d Set $DEBUG to true (same as `ruby -d')
|
15
15
|
-r load-module Same as `ruby -r'
|
16
16
|
-I path Specify $LOAD_PATH directory
|
@@ -18,7 +18,7 @@ Usage: irb.rb [options] [programfile] [arguments]
|
|
18
18
|
-E enc Same as `ruby -E`
|
19
19
|
-w Same as `ruby -w`
|
20
20
|
-W[level=2] Same as `ruby -W`
|
21
|
-
--context-mode n Set n[0-
|
21
|
+
--context-mode n Set n[0-4] to method to create Binding Object,
|
22
22
|
when new workspace was created
|
23
23
|
--echo Show result(default)
|
24
24
|
--noecho Don't show result
|
@@ -31,8 +31,8 @@ Usage: irb.rb [options] [programfile] [arguments]
|
|
31
31
|
--colorize Use colorization
|
32
32
|
--nocolorize Don't use colorization
|
33
33
|
--prompt prompt-mode/--prompt-mode prompt-mode
|
34
|
-
|
35
|
-
|
34
|
+
Switch prompt mode. Pre-defined prompt modes are
|
35
|
+
`default', `simple', `xmp' and `inf-ruby'
|
36
36
|
--inf-ruby-mode Use prompt appropriate for inf-ruby-mode on emacs.
|
37
37
|
Suppresses --multiline and --singleline.
|
38
38
|
--sample-book-mode/--simple-prompt
|
@@ -41,8 +41,8 @@ Usage: irb.rb [options] [programfile] [arguments]
|
|
41
41
|
--single-irb Share self with sub-irb.
|
42
42
|
--tracer Display trace for each execution of commands.
|
43
43
|
--back-trace-limit n
|
44
|
-
|
45
|
-
|
44
|
+
Display backtrace top n and tail n. The default
|
45
|
+
value is 16.
|
46
46
|
--verbose Show details
|
47
47
|
--noverbose Don't show details
|
48
48
|
-v, --version Print the version of irb
|
data/lib/irb/ruby-lex.rb
CHANGED
@@ -47,12 +47,26 @@ class RubyLex
|
|
47
47
|
@io = io
|
48
48
|
if @io.respond_to?(:check_termination)
|
49
49
|
@io.check_termination do |code|
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
50
|
+
if Reline::IOGate.in_pasting?
|
51
|
+
lex = RubyLex.new
|
52
|
+
rest = lex.check_termination_in_prev_line(code)
|
53
|
+
if rest
|
54
|
+
Reline.delete_text
|
55
|
+
rest.bytes.reverse_each do |c|
|
56
|
+
Reline.ungetc(c)
|
57
|
+
end
|
58
|
+
true
|
59
|
+
else
|
60
|
+
false
|
61
|
+
end
|
54
62
|
else
|
55
|
-
|
63
|
+
code.gsub!(/\s*\z/, '').concat("\n")
|
64
|
+
ltype, indent, continue, code_block_open = check_state(code)
|
65
|
+
if ltype or indent > 0 or continue or code_block_open
|
66
|
+
false
|
67
|
+
else
|
68
|
+
true
|
69
|
+
end
|
56
70
|
end
|
57
71
|
end
|
58
72
|
end
|
@@ -60,7 +74,7 @@ class RubyLex
|
|
60
74
|
@io.dynamic_prompt do |lines|
|
61
75
|
lines << '' if lines.empty?
|
62
76
|
result = []
|
63
|
-
tokens = ripper_lex_without_warning(lines.map{ |l| l + "\n" }.join)
|
77
|
+
tokens = self.class.ripper_lex_without_warning(lines.map{ |l| l + "\n" }.join)
|
64
78
|
code = String.new
|
65
79
|
partial_tokens = []
|
66
80
|
unprocessed_tokens = []
|
@@ -115,10 +129,10 @@ class RubyLex
|
|
115
129
|
:on_param_error
|
116
130
|
]
|
117
131
|
|
118
|
-
def ripper_lex_without_warning(code)
|
132
|
+
def self.ripper_lex_without_warning(code)
|
119
133
|
verbose, $VERBOSE = $VERBOSE, nil
|
120
134
|
tokens = nil
|
121
|
-
|
135
|
+
compile_with_errors_suppressed(code) do |inner_code, line_no|
|
122
136
|
lexer = Ripper::Lexer.new(inner_code, '-', line_no)
|
123
137
|
if lexer.respond_to?(:scan) # Ruby 2.7+
|
124
138
|
tokens = []
|
@@ -168,7 +182,7 @@ class RubyLex
|
|
168
182
|
if @io.respond_to?(:auto_indent) and context.auto_indent_mode
|
169
183
|
@io.auto_indent do |lines, line_index, byte_pointer, is_newline|
|
170
184
|
if is_newline
|
171
|
-
@tokens = ripper_lex_without_warning(lines[0..line_index].join("\n"))
|
185
|
+
@tokens = self.class.ripper_lex_without_warning(lines[0..line_index].join("\n"))
|
172
186
|
prev_spaces = find_prev_spaces(line_index)
|
173
187
|
depth_difference = check_newline_depth_difference
|
174
188
|
depth_difference = 0 if depth_difference < 0
|
@@ -177,7 +191,7 @@ class RubyLex
|
|
177
191
|
code = line_index.zero? ? '' : lines[0..(line_index - 1)].map{ |l| l + "\n" }.join
|
178
192
|
last_line = lines[line_index]&.byteslice(0, byte_pointer)
|
179
193
|
code += last_line if last_line
|
180
|
-
@tokens = ripper_lex_without_warning(code)
|
194
|
+
@tokens = self.class.ripper_lex_without_warning(code)
|
181
195
|
corresponding_token_depth = check_corresponding_token_depth
|
182
196
|
if corresponding_token_depth
|
183
197
|
corresponding_token_depth
|
@@ -190,7 +204,7 @@ class RubyLex
|
|
190
204
|
end
|
191
205
|
|
192
206
|
def check_state(code, tokens = nil)
|
193
|
-
tokens = ripper_lex_without_warning(code) unless tokens
|
207
|
+
tokens = self.class.ripper_lex_without_warning(code) unless tokens
|
194
208
|
ltype = process_literal_type(tokens)
|
195
209
|
indent = process_nesting_level(tokens)
|
196
210
|
continue = process_continue(tokens)
|
@@ -223,7 +237,10 @@ class RubyLex
|
|
223
237
|
throw :TERM_INPUT if @line == ''
|
224
238
|
else
|
225
239
|
@line_no += l.count("\n")
|
226
|
-
|
240
|
+
if l == "\n"
|
241
|
+
@exp_line_no += 1
|
242
|
+
next
|
243
|
+
end
|
227
244
|
@line.concat l
|
228
245
|
if @code_block_open or @ltype or @continue or @indent > 0
|
229
246
|
next
|
@@ -233,7 +250,7 @@ class RubyLex
|
|
233
250
|
@line.force_encoding(@io.encoding)
|
234
251
|
yield @line, @exp_line_no
|
235
252
|
end
|
236
|
-
|
253
|
+
raise TerminateLineInput if @io.eof?
|
237
254
|
@line = ''
|
238
255
|
@exp_line_no = @line_no
|
239
256
|
|
@@ -253,7 +270,7 @@ class RubyLex
|
|
253
270
|
end
|
254
271
|
code = @line + (line.nil? ? '' : line)
|
255
272
|
code.gsub!(/\s*\z/, '').concat("\n")
|
256
|
-
@tokens = ripper_lex_without_warning(code)
|
273
|
+
@tokens = self.class.ripper_lex_without_warning(code)
|
257
274
|
@continue = process_continue
|
258
275
|
@code_block_open = check_code_block(code)
|
259
276
|
@indent = process_nesting_level
|
@@ -274,8 +291,9 @@ class RubyLex
|
|
274
291
|
return true
|
275
292
|
elsif tokens.size >= 1 and tokens[-1][1] == :on_heredoc_end # "EOH\n"
|
276
293
|
return false
|
277
|
-
elsif tokens.size >= 2 and defined?(Ripper::EXPR_BEG) and tokens[-2][3].anybits?(Ripper::EXPR_BEG | Ripper::EXPR_FNAME)
|
294
|
+
elsif tokens.size >= 2 and defined?(Ripper::EXPR_BEG) and tokens[-2][3].anybits?(Ripper::EXPR_BEG | Ripper::EXPR_FNAME) and tokens[-2][2] !~ /\A\.\.\.?\z/
|
278
295
|
# end of literal except for regexp
|
296
|
+
# endless range at end of line is not a continue
|
279
297
|
return true
|
280
298
|
end
|
281
299
|
false
|
@@ -321,7 +339,7 @@ class RubyLex
|
|
321
339
|
# "syntax error, unexpected end-of-input, expecting keyword_end"
|
322
340
|
#
|
323
341
|
# example:
|
324
|
-
# if
|
342
|
+
# if true
|
325
343
|
# hoge
|
326
344
|
# if false
|
327
345
|
# fuga
|
@@ -424,14 +442,30 @@ class RubyLex
|
|
424
442
|
indent
|
425
443
|
end
|
426
444
|
|
445
|
+
def is_method_calling?(tokens, index)
|
446
|
+
tk = tokens[index]
|
447
|
+
if tk[3].anybits?(Ripper::EXPR_CMDARG) and tk[1] == :on_ident
|
448
|
+
# The target method call to pass the block with "do".
|
449
|
+
return true
|
450
|
+
elsif tk[3].anybits?(Ripper::EXPR_ARG) and tk[1] == :on_ident
|
451
|
+
non_sp_index = tokens[0..(index - 1)].rindex{ |t| t[1] != :on_sp }
|
452
|
+
if non_sp_index
|
453
|
+
prev_tk = tokens[non_sp_index]
|
454
|
+
if prev_tk[3].anybits?(Ripper::EXPR_DOT) and prev_tk[1] == :on_period
|
455
|
+
# The target method call with receiver to pass the block with "do".
|
456
|
+
return true
|
457
|
+
end
|
458
|
+
end
|
459
|
+
end
|
460
|
+
false
|
461
|
+
end
|
462
|
+
|
427
463
|
def take_corresponding_syntax_to_kw_do(tokens, index)
|
428
464
|
syntax_of_do = nil
|
429
465
|
# Finding a syntax correnponding to "do".
|
430
466
|
index.downto(0) do |i|
|
431
467
|
tk = tokens[i]
|
432
468
|
# In "continue", the token isn't the corresponding syntax to "do".
|
433
|
-
#is_continue = process_continue(@tokens[0..(i - 1)])
|
434
|
-
# continue ではなく、直前に (:on_ignored_nl|:on_nl|:on_comment):on_sp* みたいなのがあるかどうかを調べる
|
435
469
|
non_sp_index = tokens[0..(i - 1)].rindex{ |t| t[1] != :on_sp }
|
436
470
|
first_in_fomula = false
|
437
471
|
if non_sp_index.nil?
|
@@ -439,8 +473,7 @@ class RubyLex
|
|
439
473
|
elsif [:on_ignored_nl, :on_nl, :on_comment].include?(tokens[non_sp_index][1])
|
440
474
|
first_in_fomula = true
|
441
475
|
end
|
442
|
-
if
|
443
|
-
# The target method call to pass the block with "do".
|
476
|
+
if is_method_calling?(tokens, i)
|
444
477
|
syntax_of_do = :method_calling
|
445
478
|
break if first_in_fomula
|
446
479
|
elsif tk[1] == :on_kw && %w{while until for}.include?(tk[2])
|
@@ -458,6 +491,34 @@ class RubyLex
|
|
458
491
|
syntax_of_do
|
459
492
|
end
|
460
493
|
|
494
|
+
def is_the_in_correspond_to_a_for(tokens, index)
|
495
|
+
syntax_of_in = nil
|
496
|
+
# Finding a syntax correnponding to "do".
|
497
|
+
index.downto(0) do |i|
|
498
|
+
tk = tokens[i]
|
499
|
+
# In "continue", the token isn't the corresponding syntax to "do".
|
500
|
+
non_sp_index = tokens[0..(i - 1)].rindex{ |t| t[1] != :on_sp }
|
501
|
+
first_in_fomula = false
|
502
|
+
if non_sp_index.nil?
|
503
|
+
first_in_fomula = true
|
504
|
+
elsif [:on_ignored_nl, :on_nl, :on_comment].include?(tokens[non_sp_index][1])
|
505
|
+
first_in_fomula = true
|
506
|
+
end
|
507
|
+
if tk[1] == :on_kw && tk[2] == 'for'
|
508
|
+
# A loop syntax in front of "do" found.
|
509
|
+
#
|
510
|
+
# while cond do # also "until" or "for"
|
511
|
+
# end
|
512
|
+
#
|
513
|
+
# This "do" doesn't increment indent because the loop syntax already
|
514
|
+
# incremented.
|
515
|
+
syntax_of_in = :for
|
516
|
+
end
|
517
|
+
break if first_in_fomula
|
518
|
+
end
|
519
|
+
syntax_of_in
|
520
|
+
end
|
521
|
+
|
461
522
|
def check_newline_depth_difference
|
462
523
|
depth_difference = 0
|
463
524
|
open_brace_on_line = 0
|
@@ -513,8 +574,12 @@ class RubyLex
|
|
513
574
|
unless t[3].allbits?(Ripper::EXPR_LABEL)
|
514
575
|
depth_difference += 1
|
515
576
|
end
|
516
|
-
when 'else', 'elsif', 'ensure', 'when'
|
577
|
+
when 'else', 'elsif', 'ensure', 'when'
|
517
578
|
depth_difference += 1
|
579
|
+
when 'in'
|
580
|
+
unless is_the_in_correspond_to_a_for(@tokens, index)
|
581
|
+
depth_difference += 1
|
582
|
+
end
|
518
583
|
when 'end'
|
519
584
|
depth_difference -= 1
|
520
585
|
end
|
@@ -688,5 +753,50 @@ class RubyLex
|
|
688
753
|
nil
|
689
754
|
end
|
690
755
|
end
|
756
|
+
|
757
|
+
def check_termination_in_prev_line(code)
|
758
|
+
tokens = self.class.ripper_lex_without_warning(code)
|
759
|
+
past_first_newline = false
|
760
|
+
index = tokens.rindex do |t|
|
761
|
+
# traverse first token before last line
|
762
|
+
if past_first_newline
|
763
|
+
if t.tok.include?("\n")
|
764
|
+
true
|
765
|
+
end
|
766
|
+
elsif t.tok.include?("\n")
|
767
|
+
past_first_newline = true
|
768
|
+
false
|
769
|
+
else
|
770
|
+
false
|
771
|
+
end
|
772
|
+
end
|
773
|
+
if index
|
774
|
+
first_token = nil
|
775
|
+
last_line_tokens = tokens[(index + 1)..(tokens.size - 1)]
|
776
|
+
last_line_tokens.each do |t|
|
777
|
+
unless [:on_sp, :on_ignored_sp, :on_comment].include?(t.event)
|
778
|
+
first_token = t
|
779
|
+
break
|
780
|
+
end
|
781
|
+
end
|
782
|
+
if first_token.nil?
|
783
|
+
return false
|
784
|
+
elsif first_token && first_token.state == Ripper::EXPR_DOT
|
785
|
+
return false
|
786
|
+
else
|
787
|
+
tokens_without_last_line = tokens[0..index]
|
788
|
+
ltype = process_literal_type(tokens_without_last_line)
|
789
|
+
indent = process_nesting_level(tokens_without_last_line)
|
790
|
+
continue = process_continue(tokens_without_last_line)
|
791
|
+
code_block_open = check_code_block(tokens_without_last_line.map(&:tok).join(''), tokens_without_last_line)
|
792
|
+
if ltype or indent > 0 or continue or code_block_open
|
793
|
+
return false
|
794
|
+
else
|
795
|
+
return last_line_tokens.map(&:tok).join('')
|
796
|
+
end
|
797
|
+
end
|
798
|
+
end
|
799
|
+
false
|
800
|
+
end
|
691
801
|
end
|
692
802
|
# :startdoc:
|
data/lib/irb/version.rb
CHANGED
data/lib/irb/workspace.rb
CHANGED
@@ -128,6 +128,7 @@ EOF
|
|
128
128
|
def filter_backtrace(bt)
|
129
129
|
return nil if bt =~ /\/irb\/.*\.rb/
|
130
130
|
return nil if bt =~ /\/irb\.rb/
|
131
|
+
return nil if bt =~ /tool\/lib\/.*\.rb|runner\.rb/ # for tests in Ruby repository
|
131
132
|
case IRB.conf[:CONTEXT_MODE]
|
132
133
|
when 1
|
133
134
|
return nil if bt =~ %r!/tmp/irb-binding!
|
@@ -174,7 +175,7 @@ EOF
|
|
174
175
|
body = (start_pos..end_pos).map do |current_pos|
|
175
176
|
sprintf(fmt, pos == current_pos ? '=>' : '', current_pos + 1, lines[current_pos])
|
176
177
|
end.join("")
|
177
|
-
"\nFrom: #{file} @ line #{pos + 1} :\n\n#{body}#{Color.clear}\n"
|
178
|
+
"\nFrom: #{file} @ line #{pos + 1} :\n\n#{body}#{Color.clear if use_colorize}\n"
|
178
179
|
end
|
179
180
|
|
180
181
|
def IRB.delete_caller
|
metadata
CHANGED
@@ -1,57 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: irb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Keiju ISHITSUKA
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-06-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: reline
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - ">="
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: 0.1.5
|
20
|
-
type: :runtime
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - ">="
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: 0.1.5
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: bundler
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - ">="
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '0'
|
34
|
-
type: :development
|
35
15
|
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - ">="
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '0'
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: rake
|
43
16
|
requirement: !ruby/object:Gem::Requirement
|
44
17
|
requirements:
|
45
18
|
- - ">="
|
46
19
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
48
|
-
type: :
|
49
|
-
prerelease: false
|
20
|
+
version: 0.2.5
|
21
|
+
type: :runtime
|
50
22
|
version_requirements: !ruby/object:Gem::Requirement
|
51
23
|
requirements:
|
52
24
|
- - ">="
|
53
25
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
26
|
+
version: 0.2.5
|
55
27
|
description: Interactive Ruby command-line tool for REPL (Read Eval Print Loop).
|
56
28
|
email:
|
57
29
|
- keiju@ruby-lang.org
|
@@ -75,11 +47,15 @@ files:
|
|
75
47
|
- lib/irb/cmd/chws.rb
|
76
48
|
- lib/irb/cmd/fork.rb
|
77
49
|
- lib/irb/cmd/help.rb
|
50
|
+
- lib/irb/cmd/info.rb
|
78
51
|
- lib/irb/cmd/load.rb
|
52
|
+
- lib/irb/cmd/ls.rb
|
79
53
|
- lib/irb/cmd/measure.rb
|
80
54
|
- lib/irb/cmd/nop.rb
|
81
55
|
- lib/irb/cmd/pushws.rb
|
56
|
+
- lib/irb/cmd/show_source.rb
|
82
57
|
- lib/irb/cmd/subirb.rb
|
58
|
+
- lib/irb/cmd/whereami.rb
|
83
59
|
- lib/irb/color.rb
|
84
60
|
- lib/irb/color_printer.rb
|
85
61
|
- lib/irb/completion.rb
|
@@ -121,7 +97,7 @@ licenses:
|
|
121
97
|
- Ruby
|
122
98
|
- BSD-2-Clause
|
123
99
|
metadata: {}
|
124
|
-
post_install_message:
|
100
|
+
post_install_message:
|
125
101
|
rdoc_options: []
|
126
102
|
require_paths:
|
127
103
|
- lib
|
@@ -136,8 +112,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
136
112
|
- !ruby/object:Gem::Version
|
137
113
|
version: '0'
|
138
114
|
requirements: []
|
139
|
-
rubygems_version: 3.
|
140
|
-
signing_key:
|
115
|
+
rubygems_version: 3.1.4
|
116
|
+
signing_key:
|
141
117
|
specification_version: 4
|
142
118
|
summary: Interactive Ruby command-line tool for REPL (Read Eval Print Loop).
|
143
119
|
test_files: []
|