In Files

  • irb/ext/use-loader.rb
  • irb/extend-command.rb

IRB::ExtendCommandBundle

Installs the default irb extensions command bundle.

Public Class Methods

def_extend_command(cmd_name, cmd_class, load_file = nil, *aliases) click to toggle source

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
            
extend_object(obj) click to toggle source

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
            
install_extend_commands() click to toggle source

Installs the default irb commands:

irb_current_working_workspace

IRB::Context#main

irb_change_workspace

IRB::Context#change_workspace

irb_workspaces

IRB::Context#workspaces

irb_push_workspace

IRB::Context#push_workspace

irb_pop_workspace

IRB::Context#pop_workspace

irb_load

irb_load

irb_require

irb_require

irb_source

IRB::IrbLoader#source_file

irb

IRB.irb

irb_jobs

JobManager

irb_fg

IRB::JobManager#switch

irb_kill

IRB::JobManager#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
            

Public Instance Methods

install_alias_method(to, from, override = NO_OVERRIDE) click to toggle source

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
            
irb_context() click to toggle source

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
            
irb_exit(ret = 0) click to toggle source

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
            
irb_load(*opts, &b) click to toggle source

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
            
irb_require(*opts, &b) click to toggle source

Loads the given file similarly to Kernel#require

 
               # File irb/ext/use-loader.rb, line 27
def irb_require(*opts, &b)
  ExtendCommand::Require.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 visit Documenting-ruby.org.

blog comments powered by Disqus