method
def_extend_command
v1_9_1_378 -
Show latest stable
- Class:
IRB::ExtendCommandBundle
def_extend_command(cmd_name, cmd_class, load_file = nil, *aliases)public
aliases = [commands_alias, flag], …
# File lib/irb/extend-command.rb, line 115
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
eval def #{cmd_name}(*opts, &b) require "#{load_file}" arity = ExtendCommand::#{cmd_class}.instance_method(:execute).arity args = [] if arity < 0 args << "*opts" arity = -arity - 1 end args.unshift *(1..arity).map {|i| "arg" + i.to_s } args << "&block" args = args.join(", ") eval <<-"EOS2", binding, __FILE__, __LINE__+1 def #{cmd_name}(\#{args}) ExtendCommand::#{cmd_class}.execute(irb_context, \#{args}) end EOS2 send :#{cmd_name}, *opts, &b end, binding, __FILE__, __LINE__+1
else
eval def #{cmd_name}(*opts, &b) ExtendCommand::#{cmd_class}.execute(irb_context, *opts, &b) end, binding, __FILE__, __LINE__+1
end
for ali, flag in aliases
@ALIASES.push [ali, cmd_name, flag]
end
end Related methods
- Instance methods
- install_alias_method
- irb_context
- irb_exit
- irb_load
- irb_require
- Class methods
- def_extend_command
- extend_object
- install_extend_commands
- irb_original_method_name