Installs the default irb extensions command bundle.
Evaluate the given cmd_name on the given
cmd_class Class.
Will also define any given aliases for the method.
The optional load_file parameter will be required within the
method definition.
# File irb/extend-command.rb, line 144
def self.def_extend_command(cmd_name, cmd_class, load_file = nil, *aliases)
case cmd_class
when Symbol
cmd_class = cmd_class.id2name
when String
when Class
cmd_class = cmd_class.name
end
if load_file
line = __LINE__; eval %Q[
def #{cmd_name}(*opts, &b)
require "#{load_file}"
arity = ExtendCommand::#{cmd_class}.instance_method(:execute).arity
args = (1..(arity < 0 ? ~arity : arity)).map {|i| "arg" + i.to_s }
args << "*opts" if arity < 0
args << "&block"
args = args.join(", ")
line = __LINE__; eval %[
def #{cmd_name}(\#{args})
ExtendCommand::#{cmd_class}.execute(irb_context, \#{args})
end
], nil, __FILE__, line
send :#{cmd_name}, *opts, &b
end
], nil, __FILE__, line
else
line = __LINE__; eval %Q[
def #{cmd_name}(*opts, &b)
ExtendCommand::#{cmd_class}.execute(irb_context, *opts, &b)
end
], nil, __FILE__, line
end
for ali, flag in aliases
@ALIASES.push [ali, cmd_name, flag]
end
end
Installs alias methods for the default irb commands on the given object using install_alias_method.
# File irb/extend-command.rb, line 211
def self.extend_object(obj)
unless (class << obj; ancestors; end).include?(EXCB)
super
for ali, com, flg in @ALIASES
obj.install_alias_method(ali, com, flg)
end
end
end
Installs the default irb commands:
irb_current_working_workspace
irb_change_workspace
irb_workspaces
irb_push_workspace
irb_pop_workspace
irb_load
irb_require
irb_source
irb
irb_jobs
irb_fg
irb_kill
irb_help
Command line options at IRB
# File irb/extend-command.rb, line 132
def self.install_extend_commands
for args in @EXTEND_COMMANDS
def_extend_command(*args)
end
end
Installs alias methods for the default irb commands, see ::install_extend_commands.
# File irb/extend-command.rb, line 185
def install_alias_method(to, from, override = NO_OVERRIDE)
to = to.id2name unless to.kind_of?(String)
from = from.id2name unless from.kind_of?(String)
if override == OVERRIDE_ALL or
(override == OVERRIDE_PRIVATE_ONLY) && !respond_to?(to) or
(override == NO_OVERRIDE) && !respond_to?(to, true)
target = self
(class << self; self; end).instance_eval{
if target.respond_to?(to, true) &&
!target.respond_to?(EXCB.irb_original_method_name(to), true)
alias_method(EXCB.irb_original_method_name(to), to)
end
alias_method to, from
}
else
print "irb: warn: can't alias #{to} from #{from}.\n"
end
end
Displays current configuration.
Modifing the configuration is achieved by sending a message to IRB.conf.
# File irb/extend-command.rb, line 35
def irb_context
IRB.CurrentContext
end
Quits the current irb context
ret is the optional signal or message to send to IRB::Context#exit
Same as IRB.CurrentContext.exit.
# File irb/extend-command.rb, line 28
def irb_exit(ret = 0)
irb_context.exit(ret)
end
Loads the given file similarly to Kernel#load, see IRB::IrbLoader#irb_load
# File irb/ext/use-loader.rb, line 23
def irb_load(*opts, &b)
ExtendCommand::Load.execute(irb_context, *opts, &b)
end
Commenting is here to help enhance the documentation. For example, code samples, or clarification of the documentation.
If you have questions about Ruby or the documentation, please post to one of the Ruby mailing lists. You will get better, faster, help that way.
If you wish to post a correction of the docs, please do so, but also file bug report so that it can be corrected for the next release. Thank you.
If you want to help improve the Ruby documentation, please see Improve the docs, or visit Documenting-ruby.org.