nop.rb -
$Release Version: 0.9.5$
$Revision: 11708 $
$Date: 2007-02-12 16:01:19 -0700 (Mon, 12 Feb 2007) $
by Keiju ISHITSUKA(keiju@ruby-lang.org)
–
irb/ext/cb.rb -
$Release Version: 0.9.5$
$Revision: 11708 $
$Date: 2007-02-12 16:01:19 -0700 (Mon, 12 Feb 2007) $
by Keiju ISHITSUKA(keiju@ruby-lang.org)
–
history.rb -
$Release Version: 0.9.5$
$Revision: 11708 $
$Date: 2007-02-12 16:01:19 -0700 (Mon, 12 Feb 2007) $
by Keiju ISHITSUKA(keiju@ruby-lang.org)
–
loader.rb -
$Release Version: 0.9.5$
$Revision: 11708 $
$Date: 2007-02-12 16:01:19 -0700 (Mon, 12 Feb 2007) $
by Keiju ISHITSUKA(keiju@ruby-lang.org)
–
push-ws.rb -
$Release Version: 0.9.5$
$Revision: 11708 $
$Date: 2007-02-12 16:01:19 -0700 (Mon, 12 Feb 2007) $
by Keiju ISHITSUKA(keiju@ruby-lang.org)
–
irb/extend-command.rb - irb extend command
$Release Version: 0.9.5$
$Revision: 27934 $
$Date: 2010-05-20 12:36:52 -0700 (Thu, 20 May 2010) $
by Keiju ISHITSUKA(keiju@ruby-lang.org)
–
irb/help.rb - print usase module
$Release Version: 0.9.5$
$Revision: 11708 $
$Date: 2007-02-12 16:01:19 -0700 (Mon, 12 Feb 2007) $
by Keiju ISHITSUKA(keiju@ishitsuka.com)
–
irb/init.rb - irb initialize module
$Release Version: 0.9.5$
$Revision: 11708 $
$Date: 2007-02-12 16:01:19 -0700 (Mon, 12 Feb 2007) $
by Keiju ISHITSUKA(keiju@ruby-lang.org)
–
irb/input-method.rb - input methods used irb
$Release Version: 0.9.5$
$Revision: 11708 $
$Date: 2007-02-12 16:01:19 -0700 (Mon, 12 Feb 2007) $
by Keiju ISHITSUKA(keiju@ruby-lang.org)
–
irb/version.rb - irb version definition file
$Release Version: 0.9.5$
$Revision: 11708 $
$Date: 2007-02-12 16:01:19 -0700 (Mon, 12 Feb 2007) $
by Keiju ISHITSUKA(keiju@ishitsuka.com)
–
irb/workspace-binding.rb -
$Release Version: 0.9.5$
$Revision: 11708 $
$Date: 2007-02-12 16:01:19 -0700 (Mon, 12 Feb 2007) $
by Keiju ISHITSUKA(keiju@ruby-lang.org)
–
StdioInputMethod FileInputMethod (ReadlineInputMethod)
# File irb.rb, line 46
def IRB.CurrentContext
IRB.conf[:MAIN_CONTEXT]
end
# File irb/ext/multi-irb.rb, line 139
def IRB.JobManager
@JobManager
end
@CONF default setting
# File irb/init.rb, line 29
def IRB.init_config(ap_path)
# class instance variables
@TRACER_INITIALIZED = false
# default configurations
unless ap_path and @CONF[:AP_NAME]
ap_path = File.join(File.dirname(File.dirname(__FILE__)), "irb.rb")
end
@CONF[:AP_NAME] = File::basename(ap_path, ".rb")
@CONF[:IRB_NAME] = "irb"
@CONF[:IRB_LIB_PATH] = File.dirname(__FILE__)
@CONF[:RC] = true
@CONF[:LOAD_MODULES] = []
@CONF[:IRB_RC] = nil
@CONF[:MATH_MODE] = false
@CONF[:USE_READLINE] = false unless defined?(ReadlineInputMethod)
@CONF[:INSPECT_MODE] = nil
@CONF[:USE_TRACER] = false
@CONF[:USE_LOADER] = false
@CONF[:IGNORE_SIGINT] = true
@CONF[:IGNORE_EOF] = false
@CONF[:ECHO] = nil
@CONF[:VERBOSE] = nil
@CONF[:EVAL_HISTORY] = nil
@CONF[:SAVE_HISTORY] = nil
@CONF[:BACK_TRACE_LIMIT] = 16
@CONF[:PROMPT] = {
:NULL => {
:PROMPT_I => nil,
:PROMPT_N => nil,
:PROMPT_S => nil,
:PROMPT_C => nil,
:RETURN => "%s\n"
},
:DEFAULT => {
:PROMPT_I => "%N(%m):%03n:%i> ",
:PROMPT_N => "%N(%m):%03n:%i> ",
:PROMPT_S => "%N(%m):%03n:%i%l ",
:PROMPT_C => "%N(%m):%03n:%i* ",
:RETURN => "=> %s\n"
},
:CLASSIC => {
:PROMPT_I => "%N(%m):%03n:%i> ",
:PROMPT_N => "%N(%m):%03n:%i> ",
:PROMPT_S => "%N(%m):%03n:%i%l ",
:PROMPT_C => "%N(%m):%03n:%i* ",
:RETURN => "%s\n"
},
:SIMPLE => {
:PROMPT_I => ">> ",
:PROMPT_N => ">> ",
:PROMPT_S => nil,
:PROMPT_C => "?> ",
:RETURN => "=> %s\n"
},
:INF_RUBY => {
:PROMPT_I => "%N(%m):%03n:%i> ",
# :PROMPT_N => "%N(%m):%03n:%i> ",
:PROMPT_N => nil,
:PROMPT_S => nil,
:PROMPT_C => nil,
:RETURN => "%s\n",
:AUTO_INDENT => true
},
:XMP => {
:PROMPT_I => nil,
:PROMPT_N => nil,
:PROMPT_S => nil,
:PROMPT_C => nil,
:RETURN => " ==>%s\n"
}
}
@CONF[:PROMPT_MODE] = (STDIN.tty? ? :DEFAULT : :NULL)
@CONF[:AUTO_INDENT] = false
@CONF[:CONTEXT_MODE] = 3 # use binding in function on TOPLEVEL_BINDING
@CONF[:SINGLE_IRB] = false
# @CONF[:LC_MESSAGES] = "en"
@CONF[:LC_MESSAGES] = Locale.new
@CONF[:DEBUG_LEVEL] = 1
end
# File irb/init.rb, line 120
def IRB.init_error
@CONF[:LC_MESSAGES].load("irb/error.rb")
end
initialize tracing function
# File irb/ext/tracer.rb, line 17
def IRB.initialize_tracer
Tracer.verbose = false
Tracer.add_filter {
|event, file, line, id, binding, *rests|
/^#{Regexp.quote(@CONF[:IRB_LIB_PATH])}/ !~ file and
File::basename(file) != "irb.rb"
}
end
invoke multi-irb
# File irb/ext/multi-irb.rb, line 148
def IRB.irb(file = nil, *main)
workspace = WorkSpace.new(*main)
parent_thread = Thread.current
Thread.start do
begin
irb = Irb.new(workspace, file)
rescue
print "Subirb can't start with context(self): ", workspace.main.inspect, "\n"
print "return to main irb\n"
Thread.pass
Thread.main.wakeup
Thread.exit
end
@CONF[:IRB_RC].call(irb.context) if @CONF[:IRB_RC]
@JobManager.insert(irb)
@JobManager.current_job = irb
begin
system_exit = false
catch(:IRB_EXIT) do
irb.eval_input
end
rescue SystemExit
system_exit = true
raise
#fail
ensure
unless system_exit
@JobManager.delete(irb)
if parent_thread.alive?
@JobManager.current_job = @JobManager.irb(parent_thread)
parent_thread.run
else
@JobManager.current_job = @JobManager.main_irb
@JobManager.main_thread.run
end
end
end
end
Thread.stop
@JobManager.current_job = @JobManager.irb(Thread.current)
end
# File irb.rb, line 79
def IRB.irb_abort(irb, exception = Abort)
if defined? Thread
irb.context.thread.raise exception, "abort then interrupt!!"
else
raise exception, "abort then interrupt!!"
end
end
# File irb.rb, line 75
def IRB.irb_exit(irb, ret)
throw :IRB_EXIT, ret
end
loading modules
# File irb/init.rb, line 249
def IRB.load_modules
for m in @CONF[:LOAD_MODULES]
begin
require m
rescue
print $@[0], ":", $!.class, ": ", $!, "\n"
end
end
end
option analyzing
# File irb/init.rb, line 127
def IRB.parse_opts
load_path = []
while opt = ARGV.shift
case opt
when "-f"
@CONF[:RC] = false
when "-m"
@CONF[:MATH_MODE] = true
when "-d"
$DEBUG = true
when /^-r(.+)?/
opt = $1 || ARGV.shift
@CONF[:LOAD_MODULES].push opt if opt
when /^-I(.+)?/
opt = $1 || ARGV.shift
load_path.concat(opt.split(File::PATH_SEPARATOR)) if opt
when /^-K(.)/
$KCODE = $1
when "--inspect"
@CONF[:INSPECT_MODE] = true
when "--noinspect"
@CONF[:INSPECT_MODE] = false
when "--readline"
@CONF[:USE_READLINE] = true
when "--noreadline"
@CONF[:USE_READLINE] = false
when "--echo"
@CONF[:ECHO] = true
when "--noecho"
@CONF[:ECHO] = false
when "--verbose"
@CONF[:VERBOSE] = true
when "--noverbose"
@CONF[:VERBOSE] = false
when "--prompt-mode", "--prompt"
prompt_mode = ARGV.shift.upcase.tr("-", "_").intern
@CONF[:PROMPT_MODE] = prompt_mode
when "--noprompt"
@CONF[:PROMPT_MODE] = :NULL
when "--inf-ruby-mode"
@CONF[:PROMPT_MODE] = :INF_RUBY
when "--sample-book-mode", "--simple-prompt"
@CONF[:PROMPT_MODE] = :SIMPLE
when "--tracer"
@CONF[:USE_TRACER] = true
when "--back-trace-limit"
@CONF[:BACK_TRACE_LIMIT] = ARGV.shift.to_i
when "--context-mode"
@CONF[:CONTEXT_MODE] = ARGV.shift.to_i
when "--single-irb"
@CONF[:SINGLE_IRB] = true
when "--irb_debug"
@CONF[:DEBUG_LEVEL] = ARGV.shift.to_i
when "-v", "--version"
print IRB.version, "\n"
exit 0
when "-h", "--help"
require "irb/help"
IRB.print_usage
exit 0
when /^-/
IRB.fail UnrecognizedSwitch, opt
else
@CONF[:SCRIPT] = opt
$0 = opt
break
end
end
if RUBY_VERSION >= FEATURE_IOPT_CHANGE_VERSION
load_path.collect! do |path|
/\A\.\// =~ path ? path : File.expand_path(path)
end
end
$LOAD_PATH.unshift(*load_path)
end
# File irb/help.rb, line 14
def IRB.print_usage
lc = IRB.conf[:LC_MESSAGES]
path = lc.find("irb/help-message")
space_line = false
File.foreach(path) do
|l|
if /^\s*$/ =~ l
lc.puts l unless space_line
space_line = true
next
end
space_line = false
l.sub!(/#.*$/, "")
next if /^\s*$/ =~ l
lc.puts l
end
end
# File irb/init.rb, line 220
def IRB.rc_file(ext = IRBRC_EXT)
if !@CONF[:RC_NAME_GENERATOR]
rc_file_generators do |rcgen|
@CONF[:RC_NAME_GENERATOR] ||= rcgen
if File.exist?(rcgen.call(IRBRC_EXT))
@CONF[:RC_NAME_GENERATOR] = rcgen
break
end
end
end
@CONF[:RC_NAME_GENERATOR].call ext
end
enumerate possible rc-file base name generators
# File irb/init.rb, line 234
def IRB.rc_file_generators
if irbrc = ENV["IRBRC"]
yield proc{|rc| rc == "rc" ? irbrc : irbrc+rc}
end
if home = ENV["HOME"]
yield proc{|rc| home+"/.irb#{rc}"}
end
home = Dir.pwd
yield proc{|rc| home+"/.irb#{rc}"}
yield proc{|rc| home+"/irb#{rc.sub(/\A_?/, '.')}"}
yield proc{|rc| home+"/_irb#{rc}"}
yield proc{|rc| home+"/$irb#{rc}"}
end
running config
# File irb/init.rb, line 204
def IRB.run_config
if @CONF[:RC]
begin
load rc_file
rescue LoadError, Errno::ENOENT
rescue
print "load error: #{rc_file}\n"
print $!.class, ": ", $!, "\n"
for err in $@[0, $@.size - 2]
print "\t", err, "\n"
end
end
end
end
initialize config
# File irb/init.rb, line 16
def IRB.setup(ap_path)
IRB.init_config(ap_path)
IRB.init_error
IRB.parse_opts
IRB.run_config
IRB.load_modules
unless @CONF[:PROMPT][@CONF[:PROMPT_MODE]]
IRB.fail(UndefinedPromptMode, @CONF[:PROMPT_MODE])
end
end
initialize IRB and start TOP_LEVEL irb
# File irb.rb, line 51
def IRB.start(ap_path = nil)
$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
@CONF[:IRB_RC].call(irb.context) if @CONF[:IRB_RC]
@CONF[:MAIN_CONTEXT] = irb.context
trap("SIGINT") do
irb.signal_handle
end
catch(:IRB_EXIT) do
irb.eval_input
end
# print "\n"
end
IRB version method
# File irb.rb, line 38
def IRB.version
if v = @CONF[:VERSION] then return v end
require "irb/version"
rv = @RELEASE_VERSION.sub(/\.0/, "")
@CONF[:VERSION] = format("irb %s(%s)", rv, @LAST_UPDATE_DATE)
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 see Improve the docs, or visit Documenting-ruby.org.