class IRB::Inspector - RDoc Documentation

# class 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 lib/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

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 lib/irb/inspector.rb, line 54
    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 lib/irb/inspector.rb, line 89
    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 lib/irb/inspector.rb, line 96
    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 lib/irb/inspector.rb, line 101
    def inspect_value(v)
      @inspect.call(v)
    rescue
      puts "(Object doesn't support #inspect)"
      ''
    end