irb 1.2.3 → 1.2.4
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.
- checksums.yaml +4 -4
- data/lib/irb.rb +5 -4
- data/lib/irb/completion.rb +6 -2
- data/lib/irb/context.rb +3 -3
- data/lib/irb/ext/use-loader.rb +1 -1
- data/lib/irb/extend-command.rb +10 -3
- data/lib/irb/init.rb +9 -0
- data/lib/irb/input-method.rb +37 -0
- data/lib/irb/ruby-lex.rb +3 -0
- data/lib/irb/version.rb +2 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0b760eaf9b7cc0f0029395a3a6de59420595d82f9610442b6b382576e030b86b
|
4
|
+
data.tar.gz: 0e50bdf359e3ccb0e9ae5ec351e47d34601e68a0073a65d9bf310df3fbe95360
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e82e4dac7bf886a261f2f2008c5e12eab54adfe75c5a42c6b870eb0c30c8dc87a18f48275857054ba19091737903e96a120ca69a2ccdb9cdcf3b494129997972
|
7
|
+
data.tar.gz: 40b3e75fb3de5422b6cafaebd94ad0f4283999e957c719b86ef4ade5aca96e9eb47bb94794342985a557061326c93bff333e4b8950cbafe4239879301208e79c
|
data/lib/irb.rb
CHANGED
@@ -271,7 +271,7 @@ require "irb/easter-egg"
|
|
271
271
|
# On the other hand, each conf in IRB@Command+line+options is used to
|
272
272
|
# individually configure IRB.irb.
|
273
273
|
#
|
274
|
-
# If a proc is set for IRB.conf[:IRB_RC]
|
274
|
+
# If a proc is set for <code>IRB.conf[:IRB_RC]</code>, its will be invoked after execution
|
275
275
|
# of that proc with the context of the current session as its argument. Each
|
276
276
|
# session can be configured using this mechanism.
|
277
277
|
#
|
@@ -399,7 +399,7 @@ module IRB
|
|
399
399
|
irb.run(@CONF)
|
400
400
|
end
|
401
401
|
|
402
|
-
# Calls each event hook of IRB.conf[:
|
402
|
+
# Calls each event hook of <code>IRB.conf[:TA_EXIT]</code> when the current session quits.
|
403
403
|
def IRB.irb_at_exit
|
404
404
|
@CONF[:AT_EXIT].each{|hook| hook.call}
|
405
405
|
end
|
@@ -554,7 +554,8 @@ module IRB
|
|
554
554
|
|
555
555
|
def handle_exception(exc)
|
556
556
|
if exc.backtrace && exc.backtrace[0] =~ /\/irb(2)?(\/.*|-.*|\.rb)?:/ && exc.class.to_s !~ /^IRB/ &&
|
557
|
-
!(SyntaxError === exc)
|
557
|
+
!(SyntaxError === exc) && !(EncodingError === exc)
|
558
|
+
# The backtrace of invalid encoding hash (ex. {"\xAE": 1}) raises EncodingError without lineno.
|
558
559
|
irb_bug = true
|
559
560
|
else
|
560
561
|
irb_bug = false
|
@@ -738,7 +739,7 @@ module IRB
|
|
738
739
|
|
739
740
|
def output_value # :nodoc:
|
740
741
|
str = @context.inspect_last_value
|
741
|
-
multiline_p =
|
742
|
+
multiline_p = str.include?("\n")
|
742
743
|
if multiline_p && @context.newline_before_multiline_output?
|
743
744
|
printf @context.return_format, "\n#{str}"
|
744
745
|
else
|
data/lib/irb/completion.rb
CHANGED
@@ -99,7 +99,11 @@ module IRB
|
|
99
99
|
return nil if doc_namespace
|
100
100
|
if Symbol.respond_to?(:all_symbols)
|
101
101
|
sym = $1
|
102
|
-
candidates = Symbol.all_symbols.collect
|
102
|
+
candidates = Symbol.all_symbols.collect do |s|
|
103
|
+
":" + s.id2name.encode(Encoding.default_external)
|
104
|
+
rescue Encoding::UndefinedConversionError
|
105
|
+
# ignore
|
106
|
+
end
|
103
107
|
candidates.grep(/^#{Regexp.quote(sym)}/)
|
104
108
|
else
|
105
109
|
[]
|
@@ -144,7 +148,7 @@ module IRB
|
|
144
148
|
select_message(receiver, message, candidates, sep)
|
145
149
|
end
|
146
150
|
|
147
|
-
when /^(?<num>-?(0[dbo])?[0-9_]+(
|
151
|
+
when /^(?<num>-?(?:0[dbo])?[0-9_]+(?:\.[0-9_]+)?(?:(?:[eE][+-]?[0-9]+)?i?|r)?)(?<sep>\.|::)(?<mes>[^.]*)$/
|
148
152
|
# Numeric
|
149
153
|
receiver = $~[:num]
|
150
154
|
sep = $~[:sep]
|
data/lib/irb/context.rb
CHANGED
@@ -240,7 +240,7 @@ module IRB
|
|
240
240
|
attr_accessor :ignore_eof
|
241
241
|
# Whether to echo the return value to output or not.
|
242
242
|
#
|
243
|
-
# Uses IRB.conf[:ECHO] if available, or defaults to +true+.
|
243
|
+
# Uses <code>IRB.conf[:ECHO]</code> if available, or defaults to +true+.
|
244
244
|
#
|
245
245
|
# puts "hello"
|
246
246
|
# # hello
|
@@ -251,7 +251,7 @@ module IRB
|
|
251
251
|
attr_accessor :echo
|
252
252
|
# Whether to echo for assignment expressions
|
253
253
|
#
|
254
|
-
# Uses IRB.conf[:ECHO_ON_ASSIGNMENT] if available, or defaults to +false+.
|
254
|
+
# Uses <code>IRB.conf[:ECHO_ON_ASSIGNMENT]</code> if available, or defaults to +false+.
|
255
255
|
#
|
256
256
|
# a = "omg"
|
257
257
|
# IRB.CurrentContext.echo_on_assignment = true
|
@@ -260,7 +260,7 @@ module IRB
|
|
260
260
|
attr_accessor :echo_on_assignment
|
261
261
|
# Whether a newline is put before multiline output.
|
262
262
|
#
|
263
|
-
# Uses IRB.conf[:NEWLINE_BEFORE_MULTILINE_OUTPUT] if available,
|
263
|
+
# Uses <code>IRB.conf[:NEWLINE_BEFORE_MULTILINE_OUTPUT]</code> if available,
|
264
264
|
# or defaults to +true+.
|
265
265
|
#
|
266
266
|
# "abc\ndef"
|
data/lib/irb/ext/use-loader.rb
CHANGED
data/lib/irb/extend-command.rb
CHANGED
@@ -121,6 +121,10 @@ module IRB # :nodoc:
|
|
121
121
|
[:help, NO_OVERRIDE],
|
122
122
|
],
|
123
123
|
|
124
|
+
[
|
125
|
+
:irb_info, :Info, "irb/cmd/info"
|
126
|
+
],
|
127
|
+
|
124
128
|
]
|
125
129
|
|
126
130
|
# Installs the default irb commands:
|
@@ -169,11 +173,14 @@ module IRB # :nodoc:
|
|
169
173
|
args << "&block"
|
170
174
|
args = args.join(", ")
|
171
175
|
line = __LINE__; eval %[
|
172
|
-
|
173
|
-
|
176
|
+
unless self.class.class_variable_defined?(:@@#{cmd_name}_)
|
177
|
+
self.class.class_variable_set(:@@#{cmd_name}_, true)
|
178
|
+
def #{cmd_name}_(\#{args})
|
179
|
+
ExtendCommand::#{cmd_class}.execute(irb_context, \#{args})
|
180
|
+
end
|
174
181
|
end
|
175
182
|
], nil, __FILE__, line
|
176
|
-
send :#{cmd_name}, *opts, &b
|
183
|
+
send :#{cmd_name}_, *opts, &b
|
177
184
|
end
|
178
185
|
], nil, __FILE__, line
|
179
186
|
else
|
data/lib/irb/init.rb
CHANGED
@@ -271,10 +271,19 @@ module IRB # :nodoc:
|
|
271
271
|
if irbrc = ENV["IRBRC"]
|
272
272
|
yield proc{|rc| rc == "rc" ? irbrc : irbrc+rc}
|
273
273
|
end
|
274
|
+
if xdg_config_home = ENV["XDG_CONFIG_HOME"]
|
275
|
+
irb_home = File.join(xdg_config_home, "irb")
|
276
|
+
unless File.exist? irb_home
|
277
|
+
require 'fileutils'
|
278
|
+
FileUtils.mkdir_p irb_home
|
279
|
+
end
|
280
|
+
yield proc{|rc| irb_home + "/irb#{rc}"}
|
281
|
+
end
|
274
282
|
if home = ENV["HOME"]
|
275
283
|
yield proc{|rc| home+"/.irb#{rc}"}
|
276
284
|
end
|
277
285
|
current_dir = Dir.pwd
|
286
|
+
yield proc{|rc| current_dir+"/.config/irb/irb#{rc}"}
|
278
287
|
yield proc{|rc| current_dir+"/.irb#{rc}"}
|
279
288
|
yield proc{|rc| current_dir+"/irb#{rc.sub(/\A_?/, '.')}"}
|
280
289
|
yield proc{|rc| current_dir+"/_irb#{rc}"}
|
data/lib/irb/input-method.rb
CHANGED
@@ -43,6 +43,11 @@ module IRB
|
|
43
43
|
def readable_after_eof?
|
44
44
|
false
|
45
45
|
end
|
46
|
+
|
47
|
+
# For debug message
|
48
|
+
def inspect
|
49
|
+
'Abstract InputMethod'
|
50
|
+
end
|
46
51
|
end
|
47
52
|
|
48
53
|
class StdioInputMethod < InputMethod
|
@@ -93,6 +98,11 @@ module IRB
|
|
93
98
|
def encoding
|
94
99
|
@stdin.external_encoding
|
95
100
|
end
|
101
|
+
|
102
|
+
# For debug message
|
103
|
+
def inspect
|
104
|
+
'StdioInputMethod'
|
105
|
+
end
|
96
106
|
end
|
97
107
|
|
98
108
|
# Use a File for IO with irb, see InputMethod
|
@@ -125,6 +135,11 @@ module IRB
|
|
125
135
|
def encoding
|
126
136
|
@io.external_encoding
|
127
137
|
end
|
138
|
+
|
139
|
+
# For debug message
|
140
|
+
def inspect
|
141
|
+
'FileInputMethod'
|
142
|
+
end
|
128
143
|
end
|
129
144
|
|
130
145
|
begin
|
@@ -202,6 +217,15 @@ module IRB
|
|
202
217
|
end
|
203
218
|
Readline.completion_append_character = nil
|
204
219
|
Readline.completion_proc = IRB::InputCompletor::CompletionProc
|
220
|
+
|
221
|
+
# For debug message
|
222
|
+
def inspect
|
223
|
+
readline_impl = (defined?(Reline) && Readline == Reline) ? 'Reline' : 'ext/readline'
|
224
|
+
str = "ReadlineInputMethod with #{readline_impl} #{Readline::VERSION}"
|
225
|
+
inputrc_path = File.expand_path(ENV['INPUTRC'] || '~/.inputrc')
|
226
|
+
str += " and #{inputrc_path}" if File.exist?(inputrc_path)
|
227
|
+
str
|
228
|
+
end
|
205
229
|
end
|
206
230
|
rescue LoadError
|
207
231
|
end
|
@@ -297,5 +321,18 @@ module IRB
|
|
297
321
|
def encoding
|
298
322
|
@stdin.external_encoding
|
299
323
|
end
|
324
|
+
|
325
|
+
# For debug message
|
326
|
+
def inspect
|
327
|
+
config = Reline::Config.new
|
328
|
+
str = "ReidlineInputMethod with Reline #{Reline::VERSION}"
|
329
|
+
if config.respond_to?(:inputrc_path)
|
330
|
+
inputrc_path = config.inputrc_path
|
331
|
+
else
|
332
|
+
inputrc_path = File.expand_path(ENV['INPUTRC'] || '~/.inputrc')
|
333
|
+
end
|
334
|
+
str += " and #{inputrc_path}" if File.exist?(inputrc_path)
|
335
|
+
str
|
336
|
+
end
|
300
337
|
end
|
301
338
|
end
|
data/lib/irb/ruby-lex.rb
CHANGED
@@ -11,6 +11,7 @@
|
|
11
11
|
#
|
12
12
|
|
13
13
|
require "ripper"
|
14
|
+
require "jruby" if RUBY_ENGINE == "jruby"
|
14
15
|
|
15
16
|
# :stopdoc:
|
16
17
|
class RubyLex
|
@@ -211,6 +212,8 @@ class RubyLex
|
|
211
212
|
else
|
212
213
|
RubyVM::InstructionSequence.compile(code)
|
213
214
|
end
|
215
|
+
rescue EncodingError
|
216
|
+
# This is for a hash with invalid encoding symbol, {"\xAE": 1}
|
214
217
|
rescue SyntaxError => e
|
215
218
|
case e.message
|
216
219
|
when /unterminated (?:string|regexp) meets end of file/
|
data/lib/irb/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: irb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Keiju ISHITSUKA
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-02
|
11
|
+
date: 2020-05-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: reline
|