Module: IRB::ExtendCommandBundle
- Defined in:
- lib/irb/extend-command.rb,
 lib/irb/ext/use-loader.rb
Overview
Installs the default irb extensions command bundle.
Constant Summary collapse
- EXCB =
          :nodoc: 
- ExtendCommandBundle
- NO_OVERRIDE =
          See #install_alias_method. 
- 0
- OVERRIDE_PRIVATE_ONLY =
          See #install_alias_method. 
- 0x01
- OVERRIDE_ALL =
          See #install_alias_method. 
- 0x02
- @@commands =
- [] 
Class Method Summary collapse
- .all_commands_info ⇒ Object
- 
  
    
      .def_extend_command(cmd_name, cmd_class, load_file, *aliases)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Evaluate the given cmd_nameon the givencmd_classClass.
- 
  
    
      .extend_object(obj)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Installs alias methods for the default irb commands on the given object using #install_alias_method. 
- 
  
    
      .install_extend_commands  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Installs the default irb commands. 
- 
  
    
      .irb_original_method_name(method_name)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    :nodoc:. 
- 
  
    
      .load_command(command)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Convert a command name to its implementation class if such command exists. 
Instance Method Summary collapse
- 
  
    
      #install_alias_method(to, from, override = NO_OVERRIDE)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Installs alias methods for the default irb commands, see ::install_extend_commands. 
- 
  
    
      #irb_context  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Displays current configuration. 
- 
  
    
      #irb_load(*opts, &b)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Loads the given file similarly to Kernel#load, see IrbLoader#irb_load. 
- 
  
    
      #irb_require(*opts, &b)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Loads the given file similarly to Kernel#require. 
Class Method Details
.all_commands_info ⇒ Object
| 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 | # File 'lib/irb/extend-command.rb', line 200 def self.all_commands_info return @@commands unless @@commands.empty? user_aliases = IRB.CurrentContext.command_aliases.each_with_object({}) do |(alias_name, target), result| result[target] ||= [] result[target] << alias_name end @EXTEND_COMMANDS.each do |cmd_name, cmd_class, load_file, *aliases| if !defined?(ExtendCommand) || !ExtendCommand.const_defined?(cmd_class, false) require_relative load_file end klass = ExtendCommand.const_get(cmd_class, false) aliases = aliases.map { |a| a.first } if additional_aliases = user_aliases[cmd_name] aliases += additional_aliases end display_name = aliases.shift || cmd_name @@commands << { display_name: display_name, description: klass.description, category: klass.category } end @@commands end | 
.def_extend_command(cmd_name, cmd_class, load_file, *aliases) ⇒ Object
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.
| 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 | # File 'lib/irb/extend-command.rb', line 253 def self.def_extend_command(cmd_name, cmd_class, load_file, *aliases) case cmd_class when Symbol cmd_class = cmd_class.id2name when String when Class cmd_class = cmd_class.name end line = __LINE__; eval %[ def #{cmd_name}(*opts, **kwargs, &b) Kernel.require_relative "#{load_file}" ::IRB::ExtendCommand::#{cmd_class}.execute(irb_context, *opts, **kwargs, &b) end ], nil, __FILE__, line for ali, flag in aliases @ALIASES.push [ali, cmd_name, flag] end end | 
.extend_object(obj) ⇒ Object
Installs alias methods for the default irb commands on the given object using #install_alias_method.
| 302 303 304 305 306 307 308 309 | # File 'lib/irb/extend-command.rb', line 302 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 ⇒ Object
Installs the default irb commands.
| 241 242 243 244 245 | # File 'lib/irb/extend-command.rb', line 241 def self.install_extend_commands for args in @EXTEND_COMMANDS def_extend_command(*args) end end | 
.irb_original_method_name(method_name) ⇒ Object
:nodoc:
| 296 297 298 | # File 'lib/irb/extend-command.rb', line 296 def self.irb_original_method_name(method_name) # :nodoc: "irb_" + method_name + "_org" end | 
.load_command(command) ⇒ Object
Convert a command name to its implementation class if such command exists
| 227 228 229 230 231 232 233 234 235 236 237 238 | # File 'lib/irb/extend-command.rb', line 227 def self.load_command(command) command = command.to_sym @EXTEND_COMMANDS.each do |cmd_name, cmd_class, load_file, *aliases| next if cmd_name != command && aliases.all? { |alias_name, _| alias_name != command } if !defined?(ExtendCommand) || !ExtendCommand.const_defined?(cmd_class, false) require_relative load_file end return ExtendCommand.const_get(cmd_class, false) end nil end | 
Instance Method Details
#install_alias_method(to, from, override = NO_OVERRIDE) ⇒ Object
Installs alias methods for the default irb commands, see ::install_extend_commands.
| 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 | # File 'lib/irb/extend-command.rb', line 276 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 Kernel.warn "irb: warn: can't alias #{to} from #{from}.\n" end end | 
#irb_context ⇒ Object
Displays current configuration.
Modifying the configuration is achieved by sending a message to IRB.conf.
| 22 23 24 | # File 'lib/irb/extend-command.rb', line 22 def irb_context IRB.CurrentContext end | 
#irb_load(*opts, &b) ⇒ Object
Loads the given file similarly to Kernel#load, see IrbLoader#irb_load
| 19 20 21 | # File 'lib/irb/ext/use-loader.rb', line 19 def irb_load(*opts, &b) ExtendCommand::Load.execute(irb_context, *opts, &b) end | 
#irb_require(*opts, &b) ⇒ Object
Loads the given file similarly to Kernel#require
| 24 25 26 | # File 'lib/irb/ext/use-loader.rb', line 24 def irb_require(*opts, &b) ExtendCommand::Require.execute(irb_context, *opts, &b) end |