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 #==>42
You 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"
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 Customizing the IRB Prompt
at IRB for full detail.
# File irb/xmp.rb, line 55
def initialize(bind = nil)
IRB.init_config(nil)
#IRB.parse_opts
#IRB.load_modules
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[:IRB_RC].call(@irb.context) if IRB.conf[:IRB_RC]
IRB.conf[:MAIN_CONTEXT] = @irb.context
end
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 irb/xmp.rb, line 83
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
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.