In Files

  • irb/inspector.rb

IRB::Inspector

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?

Constants

INSPECTORS

Default inspectors available to irb, this includes:

:pp

Using Kernel#pretty_inspect

:yaml

Using YAML.dump

:marshal

Using Marshal.dump

Public Class Methods

def_inspector(key, arg=nil, &block) click to toggle source

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 63
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
            
keys_with_inspector(inspector) click to toggle source

Determines the inspector to use where inspector is one of the keys passed during inspector definition.

 
               # File irb/inspector.rb, line 53
def self.keys_with_inspector(inspector)
  INSPECTORS.select{|k,v| v == inspector}.collect{|k, v| k}
end
            
new(inspect_proc, init_proc = nil) click to toggle source

Creates a new inspector object, using the given inspect_proc when output return values in irb.

 
               # File irb/inspector.rb, line 88
def initialize(inspect_proc, init_proc = nil)
  @init = init_proc
  @inspect = inspect_proc
end
            

Public Instance Methods

init() click to toggle source

Proc to call when the inspector is activated, good for requiring dependent libraries.

 
               # File irb/inspector.rb, line 95
def init
  @init.call if @init
end
            
inspect_value(v) click to toggle source

Proc to call when the input is evaluated and output in irb.

 
               # File irb/inspector.rb, line 100
def inspect_value(v)
  @inspect.call(v)
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 visit Documenting-ruby.org.