Class: IRB::Inspector (Ruby 2.2.2)
Description: Class : IRB::Inspector - Ruby 2.2.2

- Home
- Core 2.2.2
- Std-lib 2.2.2
- Downloads

Support for the Ruby 2.2 series has ended. See here for reference.

### Home Classes Methods

### In Files

- irb/inspector.rb

### Parent

Object

### Methods

- ::def_inspector
- ::keys_with_inspector
- ::new
- #init
- #inspect_value

### Class/Module Index

Quicksearch

- IRB::Abort
- IRB::Context
- IRB::ContextExtender
- IRB::ExtendCommandBundle
- IRB::FileInputMethod
- IRB::Frame
- IRB::InputMethod
- IRB::Inspector
- IRB::Irb
- IRB::IrbLoader
- IRB::JobManager
- IRB::LoadAbort
- IRB::MethodExtender
- IRB::Notifier
- IRB::Notifier::AbstractNotifier
- IRB::Notifier::CompositeNotifier
- IRB::Notifier::LeveledNotifier
- IRB::Notifier::NoMsgNotifier
- IRB::OutputMethod
- IRB::ReadlineInputMethod
- IRB::StdioInputMethod
- IRB::StdioOutputMethod
- IRB::WorkSpace
- Object
- XMP
- XMP::StringInputMethod

No matching classes.

# 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