2015-12-16 00:07:31 -05:00
|
|
|
# frozen_string_literal: false
|
2002-07-09 07:17:17 -04:00
|
|
|
#
|
2009-03-05 22:56:38 -05:00
|
|
|
# use-loader.rb -
|
2009-07-07 07:36:20 -04:00
|
|
|
# $Release Version: 0.9.6$
|
2002-07-09 07:17:17 -04:00
|
|
|
# $Revision$
|
2005-04-13 11:27:09 -04:00
|
|
|
# by Keiju ISHITSUKA(keiju@ruby-lang.org)
|
2002-07-09 07:17:17 -04:00
|
|
|
#
|
|
|
|
# --
|
|
|
|
#
|
2009-03-05 22:56:38 -05:00
|
|
|
#
|
2002-07-09 07:17:17 -04:00
|
|
|
#
|
|
|
|
|
2018-11-02 13:52:33 -04:00
|
|
|
require_relative "../cmd/load"
|
|
|
|
require_relative "loader"
|
2002-07-09 07:17:17 -04:00
|
|
|
|
|
|
|
class Object
|
|
|
|
alias __original__load__IRB_use_loader__ load
|
|
|
|
alias __original__require__IRB_use_loader__ require
|
|
|
|
end
|
|
|
|
|
|
|
|
module IRB
|
|
|
|
module ExtendCommandBundle
|
2019-06-13 03:09:02 -04:00
|
|
|
remove_method :irb_load if method_defined?(:irb_load)
|
2012-12-21 00:45:50 -05:00
|
|
|
# Loads the given file similarly to Kernel#load, see IrbLoader#irb_load
|
2002-07-09 07:17:17 -04:00
|
|
|
def irb_load(*opts, &b)
|
|
|
|
ExtendCommand::Load.execute(irb_context, *opts, &b)
|
|
|
|
end
|
2019-06-13 03:09:02 -04:00
|
|
|
remove_method :irb_require if method_defined?(:irb_require)
|
2012-12-21 00:45:50 -05:00
|
|
|
# Loads the given file similarly to Kernel#require
|
2002-07-09 07:17:17 -04:00
|
|
|
def irb_require(*opts, &b)
|
|
|
|
ExtendCommand::Require.execute(irb_context, *opts, &b)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
class Context
|
|
|
|
|
|
|
|
IRB.conf[:USE_LOADER] = false
|
2009-03-05 22:56:38 -05:00
|
|
|
|
2012-12-13 00:22:30 -05:00
|
|
|
# Returns whether +irb+'s own file reader method is used by
|
|
|
|
# +load+/+require+ or not.
|
|
|
|
#
|
|
|
|
# This mode is globally affected (irb-wide).
|
2002-07-09 07:17:17 -04:00
|
|
|
def use_loader
|
|
|
|
IRB.conf[:USE_LOADER]
|
|
|
|
end
|
|
|
|
|
|
|
|
alias use_loader? use_loader
|
|
|
|
|
2019-06-13 03:09:02 -04:00
|
|
|
remove_method :use_loader= if method_defined?(:use_loader=)
|
2020-04-07 00:59:38 -04:00
|
|
|
# Sets <code>IRB.conf[:USE_LOADER]</code>
|
2012-12-13 00:22:30 -05:00
|
|
|
#
|
|
|
|
# See #use_loader for more information.
|
2002-07-09 07:17:17 -04:00
|
|
|
def use_loader=(opt)
|
|
|
|
|
|
|
|
if IRB.conf[:USE_LOADER] != opt
|
2014-08-08 21:36:49 -04:00
|
|
|
IRB.conf[:USE_LOADER] = opt
|
|
|
|
if opt
|
|
|
|
if !$".include?("irb/cmd/load")
|
|
|
|
end
|
|
|
|
(class<<@workspace.main;self;end).instance_eval {
|
|
|
|
alias_method :load, :irb_load
|
|
|
|
alias_method :require, :irb_require
|
|
|
|
}
|
|
|
|
else
|
|
|
|
(class<<@workspace.main;self;end).instance_eval {
|
|
|
|
alias_method :load, :__original__load__IRB_use_loader__
|
|
|
|
alias_method :require, :__original__require__IRB_use_loader__
|
|
|
|
}
|
|
|
|
end
|
2002-07-09 07:17:17 -04:00
|
|
|
end
|
|
|
|
print "Switch to load/require#{unless use_loader; ' non';end} trace mode.\n" if verbose?
|
|
|
|
opt
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|