Class: XMP
| Relationships & Source Files | |
| Namespace Children | |
| Classes: | |
| Inherits: | Object | 
| Defined in: | lib/irb/xmp.rb | 
Overview
An example printer for irb.
It’s much like the standard library PrettyPrint, that shows the value of each expression as it runs.
In order to use this library, you must first require it:
require 'irb/xmp'Now, you can take advantage of the Object#xmp convenience method.
xmp <<END
  foo = "bar"
  baz = 42
END
#=> foo = "bar"
  #==>"bar"
#=> baz = 42
  #==>42You can also create an XMP object, with an optional binding to print expressions in the given binding:
ctx = binding
x = XMP.new ctx
x.puts
#=> today = "a good day"
  #==>"a good day"
ctx.eval 'today # is what?'
#=> "a good day"Class Method Summary
- 
    
      .new(bind = nil)  ⇒ XMP 
    
    constructor
    Creates a new XMPobject.
Instance Method Summary
- 
    
      #puts(exps)  
    
    Evaluates the given exps, for example:
Constructor Details
    .new(bind = nil)  ⇒ XMP 
  
Creates a new XMP object.
The top-level binding or, optional bind parameter will be used when creating the workspace. See WorkSpace.new for more information.
This uses the :XMP prompt mode, see IRB@Customizing+the+IRB+Prompt for full detail.
# File 'lib/irb/xmp.rb', line 55
def initialize(bind = nil) IRB.init_config(nil) IRB.conf[:PROMPT_MODE] = :XMP bind = IRB::Frame.top(1) unless bind ws = IRB::WorkSpace.new(bind) @io = StringInputMethod.new @irb = IRB::Irb.new(ws, @io) @irb.context.ignore_sigint = false IRB.conf[:MAIN_CONTEXT] = @irb.context end
Instance Method Details
#puts(exps)
Evaluates the given exps, for example:
require 'irb/xmp'
x = XMP.new
x.puts '{:a => 1, :b => 2, :c => 3}'
#=> {:a => 1, :b => 2, :c => 3}
  # ==>{:a=>1, :b=>2, :c=>3}
x.puts 'foo = "bar"'
# => foo = "bar"
  # ==>"bar"# File 'lib/irb/xmp.rb', line 80
def puts(exps) @io.puts exps if @irb.context.ignore_sigint begin trap_proc_b = trap("SIGINT"){@irb.signal_handle} catch(:IRB_EXIT) do @irb.eval_input end ensure trap("SIGINT", trap_proc_b) end else catch(:IRB_EXIT) do @irb.eval_input end end end