irb 1.6.4 → 1.7.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/irb/cmd/help.rb +12 -46
- data/lib/irb/cmd/irb_info.rb +14 -18
- data/lib/irb/cmd/ls.rb +5 -2
- data/lib/irb/cmd/nop.rb +4 -8
- data/lib/irb/cmd/show_doc.rb +48 -0
- data/lib/irb/cmd/show_source.rb +7 -6
- data/lib/irb/completion.rb +2 -2
- data/lib/irb/context.rb +19 -16
- data/lib/irb/ext/loader.rb +2 -0
- data/lib/irb/ext/tracer.rb +1 -1
- data/lib/irb/extend-command.rb +6 -2
- data/lib/irb/help.rb +1 -3
- data/lib/irb/input-method.rb +4 -3
- data/lib/irb/locale.rb +10 -43
- data/lib/irb/nesting_parser.rb +227 -0
- data/lib/irb/ruby-lex.rb +266 -559
- data/lib/irb/version.rb +2 -2
- data/lib/irb.rb +25 -31
- metadata +5 -6
- data/lib/irb/cmd/fork.rb +0 -34
- data/lib/irb/lc/ja/encoding_aliases.rb +0 -13
- data/lib/irb/magic-file.rb +0 -38
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d8dc3e14a57010a1ece61f5ca0111e98742f29daea5ab1ad1bdc48e0de6e55b2
|
4
|
+
data.tar.gz: 7da9b8c9e3e3c68384c0f65eb030d7874c8f0d07c20ce651ab7b54f5bfdfb9bd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 73173c7af8ffa50bfa26a49ad1c2b7a2db12a89b006980b2b0d649bc6a03b776359ce03d20a9a7dde493c3c64e70e85864809436b546b571f23e77774748f35e
|
7
|
+
data.tar.gz: 371777b42d560af3196092e98555a46d9c93c4efa592e8f38365dd0f5be6863ea4a50d6160baedf7d7d7c6914087394cde33e0fd57e17bec68a63f64f8265a89
|
data/lib/irb/cmd/help.rb
CHANGED
@@ -1,57 +1,23 @@
|
|
1
|
-
# frozen_string_literal:
|
2
|
-
#
|
3
|
-
# help.rb - helper using ri
|
4
|
-
#
|
1
|
+
# frozen_string_literal: true
|
5
2
|
|
6
|
-
require_relative "
|
3
|
+
require_relative "show_doc"
|
7
4
|
|
8
5
|
module IRB
|
9
|
-
# :stopdoc:
|
10
|
-
|
11
6
|
module ExtendCommand
|
12
|
-
class Help <
|
13
|
-
class << self
|
14
|
-
def transform_args(args)
|
15
|
-
# Return a string literal as is for backward compatibility
|
16
|
-
if args.empty? || string_literal?(args)
|
17
|
-
args
|
18
|
-
else # Otherwise, consider the input as a String for convenience
|
19
|
-
args.strip.dump
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
7
|
+
class Help < ShowDoc
|
24
8
|
category "Context"
|
25
|
-
description "Enter the mode to look up RI documents."
|
9
|
+
description "[DEPRECATED] Enter the mode to look up RI documents."
|
10
|
+
|
11
|
+
DEPRECATION_MESSAGE = <<~MSG
|
12
|
+
[Deprecation] The `help` command will be repurposed to display command help in the future.
|
13
|
+
For RI document lookup, please use the `show_doc` command instead.
|
14
|
+
For command help, please use `show_cmds` for now.
|
15
|
+
MSG
|
26
16
|
|
27
17
|
def execute(*names)
|
28
|
-
|
29
|
-
|
30
|
-
IRB::ExtendCommand::Help.const_set(:Ri, RDoc::RI::Driver.new(opts))
|
31
|
-
rescue LoadError, SystemExit
|
32
|
-
IRB::ExtendCommand::Help.remove_method(:execute)
|
33
|
-
# raise NoMethodError in ensure
|
34
|
-
else
|
35
|
-
def execute(*names)
|
36
|
-
if names.empty?
|
37
|
-
Ri.interactive
|
38
|
-
return
|
39
|
-
end
|
40
|
-
names.each do |name|
|
41
|
-
begin
|
42
|
-
Ri.display_name(name.to_s)
|
43
|
-
rescue RDoc::RI::Error
|
44
|
-
puts $!.message
|
45
|
-
end
|
46
|
-
end
|
47
|
-
nil
|
48
|
-
end
|
49
|
-
nil
|
50
|
-
ensure
|
51
|
-
execute(*names)
|
18
|
+
warn DEPRECATION_MESSAGE
|
19
|
+
super
|
52
20
|
end
|
53
21
|
end
|
54
22
|
end
|
55
|
-
|
56
|
-
# :startdoc:
|
57
23
|
end
|
data/lib/irb/cmd/irb_info.rb
CHANGED
@@ -11,24 +11,20 @@ module IRB
|
|
11
11
|
description "Show information about IRB."
|
12
12
|
|
13
13
|
def execute
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
str
|
29
|
-
end
|
30
|
-
alias_method :to_s, :inspect
|
31
|
-
}.new
|
14
|
+
str = "Ruby version: #{RUBY_VERSION}\n"
|
15
|
+
str += "IRB version: #{IRB.version}\n"
|
16
|
+
str += "InputMethod: #{IRB.CurrentContext.io.inspect}\n"
|
17
|
+
str += ".irbrc path: #{IRB.rc_file}\n" if File.exist?(IRB.rc_file)
|
18
|
+
str += "RUBY_PLATFORM: #{RUBY_PLATFORM}\n"
|
19
|
+
str += "LANG env: #{ENV["LANG"]}\n" if ENV["LANG"] && !ENV["LANG"].empty?
|
20
|
+
str += "LC_ALL env: #{ENV["LC_ALL"]}\n" if ENV["LC_ALL"] && !ENV["LC_ALL"].empty?
|
21
|
+
str += "East Asian Ambiguous Width: #{Reline.ambiguous_width.inspect}\n"
|
22
|
+
if RbConfig::CONFIG['host_os'] =~ /mswin|msys|mingw|cygwin|bccwin|wince|emc/
|
23
|
+
codepage = `chcp`.b.sub(/.*: (\d+)\n/, '\1')
|
24
|
+
str += "Code page: #{codepage}\n"
|
25
|
+
end
|
26
|
+
puts str
|
27
|
+
nil
|
32
28
|
end
|
33
29
|
end
|
34
30
|
end
|
data/lib/irb/cmd/ls.rb
CHANGED
@@ -39,8 +39,12 @@ module IRB
|
|
39
39
|
def dump_methods(o, klass, obj)
|
40
40
|
singleton_class = begin obj.singleton_class; rescue TypeError; nil end
|
41
41
|
dumped_mods = Array.new
|
42
|
+
ancestors = klass.ancestors
|
43
|
+
ancestors = ancestors.reject { |c| c >= Object } if klass < Object
|
44
|
+
singleton_ancestors = (singleton_class&.ancestors || []).reject { |c| c >= Class }
|
45
|
+
|
42
46
|
# singleton_class' ancestors should be at the front
|
43
|
-
maps = class_method_map(
|
47
|
+
maps = class_method_map(singleton_ancestors, dumped_mods) + class_method_map(ancestors, dumped_mods)
|
44
48
|
maps.each do |mod, methods|
|
45
49
|
name = mod == singleton_class ? "#{klass}.methods" : "#{mod}#methods"
|
46
50
|
o.dump(name, methods)
|
@@ -49,7 +53,6 @@ module IRB
|
|
49
53
|
|
50
54
|
def class_method_map(classes, dumped_mods)
|
51
55
|
dumped_methods = Array.new
|
52
|
-
classes = classes.reject { |mod| mod >= Object }
|
53
56
|
classes.map do |mod|
|
54
57
|
next if dumped_mods.include? mod
|
55
58
|
|
data/lib/irb/cmd/nop.rb
CHANGED
@@ -30,23 +30,19 @@ module IRB
|
|
30
30
|
end
|
31
31
|
end
|
32
32
|
|
33
|
-
def self.execute(
|
34
|
-
command = new(
|
33
|
+
def self.execute(irb_context, *opts, **kwargs, &block)
|
34
|
+
command = new(irb_context)
|
35
35
|
command.execute(*opts, **kwargs, &block)
|
36
36
|
rescue CommandArgumentError => e
|
37
37
|
puts e.message
|
38
38
|
end
|
39
39
|
|
40
|
-
def initialize(
|
41
|
-
@irb_context =
|
40
|
+
def initialize(irb_context)
|
41
|
+
@irb_context = irb_context
|
42
42
|
end
|
43
43
|
|
44
44
|
attr_reader :irb_context
|
45
45
|
|
46
|
-
def irb
|
47
|
-
@irb_context.irb
|
48
|
-
end
|
49
|
-
|
50
46
|
def execute(*opts)
|
51
47
|
#nop
|
52
48
|
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "nop"
|
4
|
+
|
5
|
+
module IRB
|
6
|
+
module ExtendCommand
|
7
|
+
class ShowDoc < Nop
|
8
|
+
class << self
|
9
|
+
def transform_args(args)
|
10
|
+
# Return a string literal as is for backward compatibility
|
11
|
+
if args.empty? || string_literal?(args)
|
12
|
+
args
|
13
|
+
else # Otherwise, consider the input as a String for convenience
|
14
|
+
args.strip.dump
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
category "Context"
|
20
|
+
description "Enter the mode to look up RI documents."
|
21
|
+
|
22
|
+
def execute(*names)
|
23
|
+
require 'rdoc/ri/driver'
|
24
|
+
|
25
|
+
unless ShowDoc.const_defined?(:Ri)
|
26
|
+
opts = RDoc::RI::Driver.process_args([])
|
27
|
+
ShowDoc.const_set(:Ri, RDoc::RI::Driver.new(opts))
|
28
|
+
end
|
29
|
+
|
30
|
+
if names.empty?
|
31
|
+
Ri.interactive
|
32
|
+
else
|
33
|
+
names.each do |name|
|
34
|
+
begin
|
35
|
+
Ri.display_name(name.to_s)
|
36
|
+
rescue RDoc::RI::Error
|
37
|
+
puts $!.message
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
nil
|
43
|
+
rescue LoadError, SystemExit
|
44
|
+
warn "Can't display document because `rdoc` is not installed."
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
data/lib/irb/cmd/show_source.rb
CHANGED
@@ -31,13 +31,14 @@ module IRB
|
|
31
31
|
when /\A(?<owner>[A-Z]\w*(::[A-Z]\w*)*)#(?<method>[^ :.]+)\z/ # Class#method
|
32
32
|
owner = eval(Regexp.last_match[:owner], irb_context.workspace.binding)
|
33
33
|
method = Regexp.last_match[:method]
|
34
|
-
if owner.respond_to?(:instance_method)
|
35
|
-
|
34
|
+
if owner.respond_to?(:instance_method)
|
35
|
+
methods = owner.instance_methods + owner.private_instance_methods
|
36
|
+
file, line = owner.instance_method(method).source_location if methods.include?(method.to_sym)
|
36
37
|
end
|
37
38
|
when /\A((?<receiver>.+)(\.|::))?(?<method>[^ :.]+)\z/ # method, receiver.method, receiver::method
|
38
39
|
receiver = eval(Regexp.last_match[:receiver] || 'self', irb_context.workspace.binding)
|
39
40
|
method = Regexp.last_match[:method]
|
40
|
-
file, line = receiver.method(method).source_location if receiver.respond_to?(method)
|
41
|
+
file, line = receiver.method(method).source_location if receiver.respond_to?(method, true)
|
41
42
|
end
|
42
43
|
if file && line
|
43
44
|
Source.new(file: file, first_line: line, last_line: find_end(file, line, irb_context))
|
@@ -57,9 +58,9 @@ module IRB
|
|
57
58
|
tokens.chunk { |tok| tok.pos[0] }.each do |lnum, chunk|
|
58
59
|
code = lines[0..lnum].join
|
59
60
|
prev_tokens.concat chunk
|
60
|
-
continue = lex.
|
61
|
-
|
62
|
-
if !continue &&
|
61
|
+
continue = lex.should_continue?(prev_tokens)
|
62
|
+
syntax = lex.check_code_syntax(code)
|
63
|
+
if !continue && syntax == :valid
|
63
64
|
return first_line + lnum
|
64
65
|
end
|
65
66
|
end
|
data/lib/irb/completion.rb
CHANGED
@@ -218,7 +218,7 @@ module IRB
|
|
218
218
|
else
|
219
219
|
sym = $1
|
220
220
|
candidates = Symbol.all_symbols.collect do |s|
|
221
|
-
|
221
|
+
s.inspect
|
222
222
|
rescue EncodingError
|
223
223
|
# ignore
|
224
224
|
end
|
@@ -233,7 +233,7 @@ module IRB
|
|
233
233
|
if doc_namespace
|
234
234
|
candidates.find { |i| i == receiver }
|
235
235
|
else
|
236
|
-
candidates.grep(/^#{receiver}/).collect{|e| "::" + e}
|
236
|
+
candidates.grep(/^#{Regexp.quote(receiver)}/).collect{|e| "::" + e}
|
237
237
|
end
|
238
238
|
|
239
239
|
when /^([A-Z].*)::([^:.]*)$/
|
data/lib/irb/context.rb
CHANGED
@@ -473,28 +473,31 @@ module IRB
|
|
473
473
|
@inspect_mode
|
474
474
|
end
|
475
475
|
|
476
|
-
def evaluate(line, line_no
|
476
|
+
def evaluate(line, line_no) # :nodoc:
|
477
477
|
@line_no = line_no
|
478
|
-
|
479
|
-
line_no -= 1
|
480
|
-
line = "begin ::Kernel.raise _; rescue _.class\n#{line}\n""end"
|
481
|
-
@workspace.local_variable_set(:_, exception)
|
482
|
-
end
|
478
|
+
result = nil
|
483
479
|
|
484
|
-
|
485
|
-
|
486
|
-
if original = command_aliases[command.to_sym]
|
487
|
-
line = line.gsub(/\A#{Regexp.escape(command)}/, original.to_s)
|
488
|
-
command = original
|
480
|
+
if IRB.conf[:MEASURE] && IRB.conf[:MEASURE_CALLBACKS].empty?
|
481
|
+
IRB.set_measure_callback
|
489
482
|
end
|
490
483
|
|
491
|
-
|
492
|
-
|
493
|
-
|
494
|
-
|
484
|
+
if IRB.conf[:MEASURE] && !IRB.conf[:MEASURE_CALLBACKS].empty?
|
485
|
+
last_proc = proc do
|
486
|
+
result = @workspace.evaluate(line, irb_path, line_no)
|
487
|
+
end
|
488
|
+
IRB.conf[:MEASURE_CALLBACKS].inject(last_proc) do |chain, item|
|
489
|
+
_name, callback, arg = item
|
490
|
+
proc do
|
491
|
+
callback.(self, line, line_no, arg) do
|
492
|
+
chain.call
|
493
|
+
end
|
494
|
+
end
|
495
|
+
end.call
|
496
|
+
else
|
497
|
+
result = @workspace.evaluate(line, irb_path, line_no)
|
495
498
|
end
|
496
499
|
|
497
|
-
set_last_value(
|
500
|
+
set_last_value(result)
|
498
501
|
end
|
499
502
|
|
500
503
|
def inspect_last_value # :nodoc:
|
data/lib/irb/ext/loader.rb
CHANGED
@@ -42,6 +42,7 @@ module IRB # :nodoc:
|
|
42
42
|
#
|
43
43
|
# See Irb#suspend_input_method for more information.
|
44
44
|
def source_file(path)
|
45
|
+
irb = irb_context.irb
|
45
46
|
irb.suspend_name(path, File.basename(path)) do
|
46
47
|
FileInputMethod.open(path) do |io|
|
47
48
|
irb.suspend_input_method(io) do
|
@@ -66,6 +67,7 @@ module IRB # :nodoc:
|
|
66
67
|
#
|
67
68
|
# See Irb#suspend_input_method for more information.
|
68
69
|
def load_file(path, priv = nil)
|
70
|
+
irb = irb_context.irb
|
69
71
|
irb.suspend_name(path, File.basename(path)) do
|
70
72
|
|
71
73
|
if priv
|
data/lib/irb/ext/tracer.rb
CHANGED
@@ -7,7 +7,7 @@
|
|
7
7
|
begin
|
8
8
|
require "tracer"
|
9
9
|
rescue LoadError
|
10
|
-
$stderr.puts "Tracer extension of IRB is enabled but tracer gem
|
10
|
+
$stderr.puts "Tracer extension of IRB is enabled but tracer gem wasn't found."
|
11
11
|
module IRB
|
12
12
|
class Context
|
13
13
|
def use_tracer=(opt)
|
data/lib/irb/extend-command.rb
CHANGED
@@ -157,10 +157,14 @@ module IRB # :nodoc:
|
|
157
157
|
|
158
158
|
[
|
159
159
|
:irb_help, :Help, "cmd/help",
|
160
|
-
[:show_doc, NO_OVERRIDE],
|
161
160
|
[:help, NO_OVERRIDE],
|
162
161
|
],
|
163
162
|
|
163
|
+
[
|
164
|
+
:irb_show_doc, :ShowDoc, "cmd/show_doc",
|
165
|
+
[:show_doc, NO_OVERRIDE],
|
166
|
+
],
|
167
|
+
|
164
168
|
[
|
165
169
|
:irb_info, :IrbInfo, "cmd/irb_info"
|
166
170
|
],
|
@@ -285,7 +289,7 @@ module IRB # :nodoc:
|
|
285
289
|
alias_method to, from
|
286
290
|
}
|
287
291
|
else
|
288
|
-
Kernel.
|
292
|
+
Kernel.warn "irb: warn: can't alias #{to} from #{from}.\n"
|
289
293
|
end
|
290
294
|
end
|
291
295
|
|
data/lib/irb/help.rb
CHANGED
@@ -4,15 +4,13 @@
|
|
4
4
|
# by Keiju ISHITSUKA(keiju@ishitsuka.com)
|
5
5
|
#
|
6
6
|
|
7
|
-
require_relative 'magic-file'
|
8
|
-
|
9
7
|
module IRB
|
10
8
|
# Outputs the irb help message, see IRB@Command+line+options.
|
11
9
|
def IRB.print_usage
|
12
10
|
lc = IRB.conf[:LC_MESSAGES]
|
13
11
|
path = lc.find("irb/help-message")
|
14
12
|
space_line = false
|
15
|
-
|
13
|
+
File.open(path){|f|
|
16
14
|
f.each_line do |l|
|
17
15
|
if /^\s*$/ =~ l
|
18
16
|
lc.puts l unless space_line
|
data/lib/irb/input-method.rb
CHANGED
@@ -5,7 +5,6 @@
|
|
5
5
|
#
|
6
6
|
|
7
7
|
require_relative 'src_encoding'
|
8
|
-
require_relative 'magic-file'
|
9
8
|
require_relative 'completion'
|
10
9
|
require 'io/console'
|
11
10
|
require 'reline'
|
@@ -132,7 +131,7 @@ module IRB
|
|
132
131
|
# Creates a new input method object
|
133
132
|
def initialize(file)
|
134
133
|
super
|
135
|
-
@io = file.is_a?(IO) ? file :
|
134
|
+
@io = file.is_a?(IO) ? file : File.open(file)
|
136
135
|
@external_encoding = @io.external_encoding
|
137
136
|
end
|
138
137
|
# The file name of this input method, usually given during initialization.
|
@@ -399,8 +398,10 @@ module IRB
|
|
399
398
|
formatter = RDoc::Markup::ToAnsi.new
|
400
399
|
formatter.width = width
|
401
400
|
dialog.trap_key = alt_d
|
402
|
-
|
401
|
+
mod_key = RUBY_PLATFORM.match?(/darwin/) ? "Option" : "Alt"
|
402
|
+
message = "Press #{mod_key}+d to read the full document"
|
403
403
|
contents = [message] + doc.accept(formatter).split("\n")
|
404
|
+
contents = contents.take(preferred_dialog_height) if respond_to?(:preferred_dialog_height)
|
404
405
|
|
405
406
|
y = cursor_pos_to_render.y
|
406
407
|
DialogRenderInfo.new(pos: Reline::CursorPos.new(x, y), contents: contents, width: width, bg_color: '49')
|
data/lib/irb/locale.rb
CHANGED
@@ -15,7 +15,11 @@ module IRB # :nodoc:
|
|
15
15
|
]x
|
16
16
|
LOCALE_DIR = "/lc/"
|
17
17
|
|
18
|
-
|
18
|
+
LEGACY_ENCODING_ALIAS_MAP = {
|
19
|
+
'ujis' => Encoding::EUC_JP,
|
20
|
+
'euc' => Encoding::EUC_JP
|
21
|
+
}
|
22
|
+
|
19
23
|
@@loaded = []
|
20
24
|
|
21
25
|
def initialize(locale = nil)
|
@@ -26,11 +30,11 @@ module IRB # :nodoc:
|
|
26
30
|
@lang, @territory, @encoding_name, @modifier = m[:language], m[:territory], m[:codeset], m[:modifier]
|
27
31
|
|
28
32
|
if @encoding_name
|
29
|
-
|
30
|
-
if @encoding = @@legacy_encoding_alias_map[@encoding_name]
|
33
|
+
if @encoding = LEGACY_ENCODING_ALIAS_MAP[@encoding_name]
|
31
34
|
warn(("%s is obsolete. use %s" % ["#{@lang}_#{@territory}.#{@encoding_name}", "#{@lang}_#{@territory}.#{@encoding.name}"]), uplevel: 1)
|
35
|
+
else
|
36
|
+
@encoding = Encoding.find(@encoding_name) rescue nil
|
32
37
|
end
|
33
|
-
@encoding = Encoding.find(@encoding_name) rescue nil
|
34
38
|
end
|
35
39
|
end
|
36
40
|
@encoding ||= (Encoding.find('locale') rescue Encoding::ASCII_8BIT)
|
@@ -78,39 +82,12 @@ module IRB # :nodoc:
|
|
78
82
|
super(*ary)
|
79
83
|
end
|
80
84
|
|
81
|
-
def
|
82
|
-
rex = Regexp.new("lc/#{Regexp.quote(file)}\.(so|o|sl|rb)?")
|
83
|
-
return false if $".find{|f| f =~ rex}
|
84
|
-
|
85
|
-
case file
|
86
|
-
when /\.rb$/
|
87
|
-
begin
|
88
|
-
load(file, priv)
|
89
|
-
$".push file
|
90
|
-
return true
|
91
|
-
rescue LoadError
|
92
|
-
end
|
93
|
-
when /\.(so|o|sl)$/
|
94
|
-
return super
|
95
|
-
end
|
96
|
-
|
97
|
-
begin
|
98
|
-
load(f = file + ".rb")
|
99
|
-
$".push f #"
|
100
|
-
return true
|
101
|
-
rescue LoadError
|
102
|
-
return ruby_require(file)
|
103
|
-
end
|
104
|
-
end
|
105
|
-
|
106
|
-
alias toplevel_load load
|
107
|
-
|
108
|
-
def load(file, priv=nil)
|
85
|
+
def load(file)
|
109
86
|
found = find(file)
|
110
87
|
if found
|
111
88
|
unless @@loaded.include?(found)
|
112
89
|
@@loaded << found # cache
|
113
|
-
|
90
|
+
Kernel.load(found)
|
114
91
|
end
|
115
92
|
else
|
116
93
|
raise LoadError, "No such file to load -- #{file}"
|
@@ -129,16 +106,6 @@ module IRB # :nodoc:
|
|
129
106
|
end
|
130
107
|
end
|
131
108
|
|
132
|
-
private
|
133
|
-
def real_load(path, priv)
|
134
|
-
src = MagicFile.open(path){|f| f.read}
|
135
|
-
if priv
|
136
|
-
eval("self", TOPLEVEL_BINDING).extend(Module.new {eval(src, nil, path)})
|
137
|
-
else
|
138
|
-
eval(src, TOPLEVEL_BINDING, path)
|
139
|
-
end
|
140
|
-
end
|
141
|
-
|
142
109
|
# @param paths load paths in which IRB find a localized file.
|
143
110
|
# @param dir directory
|
144
111
|
# @param file basename to be localized
|