Shane Liesegang wrote:
> Can anybody point me to some good documentation (either online or
> dead-tree) of the IRB module? The RDoc is pretty bare-bones, and the
> samples I've found online aren't terribly well-commented or
> self-explanatory.
> 
> As background: I'm trying to hook up the text-rendering of my OpenGL
> engine to act as a Ruby console. I've got it interpreting individual
> lines with eval(), but I'd like to set it up with IRB proper to make use
> of the history, prompting, output, etc.

This may not be quite what you're looking for, but whenever I want to 
add an irb-like shell to a command-line application, I start by mucking 
around with the snippet below (note the difference in the three ways of 
invoking irb). Setting the prompt is easier; look for IRB.conf[:PROMPT] 
in the irb source.

#!/usr/bin/env ruby

require 'irb'
require 'irb/completion'

module IRB
   def IRB.parse_opts
     # Don't touch ARGV, which belongs to the app which called this module.
   end

   def IRB.start_session(*args)
     unless $irb
       IRB.setup nil
       ## maybe set some opts here, as in parse_opts in irb/init.rb?
     end

     workspace = WorkSpace.new(*args)

     if @CONF[:SCRIPT] ## normally, set by parse_opts
       $irb = Irb.new(workspace, @CONF[:SCRIPT])
     else
       $irb = Irb.new(workspace)
     end

     @CONF[:IRB_RC].call($irb.context) if @CONF[:IRB_RC]
     @CONF[:MAIN_CONTEXT] = $irb.context

     trap 'INT' do
       $irb.signal_handle
     end

     custom_configuration if defined?(IRB.custom_configuration)

     catch :IRB_EXIT do
       $irb.eval_input
     end

     ## might want to reset your app's interrupt handler here
   end
end

class Object
   include IRB::ExtendCommandBundle # so that Marshal.dump works
end

if __FILE__ == $0
   x = Object.new
   puts "\nStarted irb shell for x"
   IRB.start_session(x)
   puts "\nStarted irb shell for x with current binding"
   IRB.start_session(binding, x)
   puts "\nRestarted irb shell for x with current binding"
   $irb.eval_input
   puts "\nExited irb shell"
   p x
end

-- 
       vjoel : Joel VanderWerf : path berkeley edu : 510 665 3407