Support for the Ruby 2.4 series has ended. See here for reference.
An irb inspector
In order to create your own custom inspector there are two things you should be aware of:
Inspector
uses inspect_value
, or inspect_proc
, for output of return values.
This also allows for an optional init
+, or init_proc
, which is called when the inspector is activated.
Knowing this, you can create a rudimentary inspector as follows:
irb(main):001:0> ins = IRB::Inspector.new(proc{ |v| "omg! #{v}" }) irb(main):001:0> IRB.CurrentContext.inspect_mode = ins # => omg! #<IRB::Inspector:0x007f46f7ba7d28> irb(main):001:0> "what?" #=> omg! what?
Default inspectors available to irb, this includes:
:pp
Using Kernel#pretty_inspect
:yaml
Using YAML.dump
:marshal
Using Marshal.dump
Example
Inspector.def_inspector(key, init_p=nil){|v| v.inspect} Inspector.def_inspector([key1,..], init_p=nil){|v| v.inspect} Inspector.def_inspector(key, inspector) Inspector.def_inspector([key1,...], inspector)
# File irb/inspector.rb, line 64 def self.def_inspector(key, arg=nil, &block) if block_given? inspector = IRB::Inspector(block, arg) else inspector = arg end case key when Array for k in key def_inspector(k, inspector) end when Symbol INSPECTORS[key] = inspector INSPECTORS[key.to_s] = inspector when String INSPECTORS[key] = inspector INSPECTORS[key.intern] = inspector else INSPECTORS[key] = inspector end end