123456789_123456789_123456789_123456789_123456789_

Class: IRB::IRB

Relationships & Source Files
Inherits: Object
Defined in: lib/irb/init.rb

Class Method Summary

Class Method Details

CurrentContext

This method is for internal use only.

The current Context of the session, see .conf

irb
irb(main):001:0> IRB.CurrentContext.irb_name = "foo"
foo(main):002:0> IRB.conf[:MAIN_CONTEXT].irb_name #=> "foo"

See additional method definition at file lib/irb/ext/multi-irb.rb line 174.

[ GitHub ]

  
# File 'lib/irb.rb', line 888

def IRB.CurrentContext # :nodoc:
  IRB.JobManager.irb(Thread.current).context
end

.generate_current_dir_irbrc_files (private)

possible irbrc files in current directory

[ GitHub ]

  
# File 'lib/irb/init.rb', line 482

def generate_current_dir_irbrc_files
  current_dir = Dir.pwd
  %w[.irbrc irbrc _irbrc $irbrc].map { |file| "#{current_dir}/#{file}" }
end

.irb_abort(irb, exception = Abort)

This method is for internal use only.

Aborts then interrupts irb.

Will raise an Abort exception, or the given exception.

[ GitHub ]

  
# File 'lib/irb.rb', line 915

def IRB.irb_abort(irb, exception = Abort) # :nodoc:
  irb.context.thread.raise exception, "abort then interrupt!"
end

.irb_exit

This method is for internal use only.

Quits irb

[ GitHub ]

  
# File 'lib/irb.rb', line 908

def IRB.irb_exit(*) # :nodoc:
  throw :IRB_EXIT, false
end

.prepare_irbrc_name_generators (private)

[ GitHub ]

  
# File 'lib/irb/init.rb', line 444

def prepare_irbrc_name_generators
  return if @existing_rc_name_generators

  @existing_rc_name_generators = []
  @irbrc_files = []
  rc_file_generators do |rcgen|
    irbrc = rcgen.call(IRBRC_EXT)
    if File.exist?(irbrc)
      @irbrc_files << irbrc
      @existing_rc_name_generators << rcgen
    end
  end
  generate_current_dir_irbrc_files.each do |irbrc|
    @irbrc_files << irbrc if File.exist?(irbrc)
  end
  @irbrc_files.uniq!
end

.rc_file_generators (private)

enumerate possible rc-file base name generators

[ GitHub ]

  
# File 'lib/irb/init.rb', line 463

def rc_file_generators
  if irbrc = ENV["IRBRC"]
    yield proc{|rc| rc == "rc" ? irbrc : irbrc+rc}
  end
  if xdg_config_home = ENV["XDG_CONFIG_HOME"]
    irb_home = File.join(xdg_config_home, "irb")
    if File.directory?(irb_home)
      yield proc{|rc| irb_home + "/irb#{rc}"}
    end
  end
  if home = ENV["HOME"]
    yield proc{|rc| home+"/.irb#{rc}"}
    if xdg_config_home.nil? || xdg_config_home.empty?
      yield proc{|rc| home+"/.config/irb/irb#{rc}"}
    end
  end
end

.set_encoding(extern, intern = nil, override: true) (private)

[ GitHub ]

  
# File 'lib/irb/init.rb', line 487

def set_encoding(extern, intern = nil, override: true)
  verbose, $VERBOSE = $VERBOSE, nil
  Encoding.default_external = extern unless extern.nil? || extern.empty?
  Encoding.default_internal = intern unless intern.nil? || intern.empty?
  [$stdin, $stdout, $stderr].each do |io|
    io.set_encoding(extern, intern)
  end
  if override
    @CONF[:LC_MESSAGES].instance_variable_set(:@override_encoding, extern)
  else
    @CONF[:LC_MESSAGES].instance_variable_set(:@encoding, extern)
  end
ensure
  $VERBOSE = verbose
end

.start(ap_path = nil)

Initializes IRB and creates a new Irb.irb object at the TOPLEVEL_BINDING

[ GitHub ]

  
# File 'lib/irb.rb', line 893

def IRB.start(ap_path = nil)
  STDOUT.sync = true
  $0 = File::basename(ap_path, ".rb") if ap_path

  IRB.setup(ap_path)

  if @CONF[:SCRIPT]
    irb = Irb.new(nil, @CONF[:SCRIPT])
  else
    irb = Irb.new
  end
  irb.run(@CONF)
end