In Files

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

IRB::ExtendCommandBundle::EXCB

IRB extended command

Public Class Methods

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

aliases = [commans_alias, flag], …

 
               # File irb/extend-command.rb, line 116
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 %Q[
      def #{cmd_name}(*opts, &b)
        require "#{load_file}"
        arity = ExtendCommand::#{cmd_class}.instance_method(:execute).arity
        args = (1..arity.abs).map {|i| "arg" + i.to_s }
        args << "*opts" if arity < 0
        args << "&block"
        args = args.join(", ")
        eval %[
          def #{cmd_name}(\#{args})
            ExtendCommand::#{cmd_class}.execute(irb_context, \#{args})

          end
        ]
        send :#{cmd_name}, *opts, &b
      end
    ]
  else
    eval %Q[
      def #{cmd_name}(*opts, &b)
        ExtendCommand::#{cmd_class}.execute(irb_context, *opts, &b)
      end
    ]
  end

  for ali, flag in aliases
    @ALIASES.push [ali, cmd_name, flag]
  end
end
            
extend_object(obj) click to toggle source
 
               # File irb/extend-command.rb, line 181
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
 
               # File irb/extend-command.rb, line 109
def self.install_extend_commands
  for args in @EXTEND_COMMANDS
    def_extend_command(*args)
  end
end
            
irb_original_method_name(method_name) click to toggle source
 
               # File irb/extend-command.rb, line 177
def self.irb_original_method_name(method_name)
  "irb_" + method_name + "_org"
end
            

Public Instance Methods

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

override = {NO_OVERRIDE, OVERRIDE_PRIVATE_ONLY, OVERRIDE_ALL}

 
               # File irb/extend-command.rb, line 157
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
 
               # File irb/extend-command.rb, line 27
def irb_context
  IRB.CurrentContext
end
            
irb_exit(ret = 0) click to toggle source
 
               # File irb/extend-command.rb, line 23
def irb_exit(ret = 0)
  irb_context.exit(ret)
end
            
irb_load(*opts, &b) click to toggle source
 
               # 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
 
               # File irb/ext/use-loader.rb, line 26
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