class IRB::Notifier::CompositeNotifier

A class that can be used to create a group of notifier objects with the intent of representing a leveled notification system for irb.

This class will allow you to generate other notifiers, and assign them the appropriate level for output.

The Notifier class provides a class-method Notifier.def_notifier to create a new composite notifier. Using the first composite notifier object you create, sibling notifiers can be initialized with def_notifier.

Attributes

level[R]

Returns the leveled notifier for this object

level_notifier[R]

Returns the leveled notifier for this object

notifiers[R]

List of notifiers in the group

Public Class Methods

new(prefix, base_notifier) click to toggle source

Create a new composite notifier object with the given prefix, and base_notifier to use for output.

Calls superclass method IRB::Notifier::AbstractNotifier::new
# File lib/irb/notifier.rb, line 117
def initialize(prefix, base_notifier)
  super

  @notifiers = [D_NOMSG]
  @level_notifier = D_NOMSG
end

Public Instance Methods

def_notifier(level, prefix = "") click to toggle source

Creates a new LeveledNotifier in the composite notifiers group.

The given prefix will be assigned to the notifier, and level will be used as the index of the notifiers Array.

This method returns the newly created instance.

# File lib/irb/notifier.rb, line 133
def def_notifier(level, prefix = "")
  notifier = LeveledNotifier.new(self, level, prefix)
  @notifiers[level] = notifier
  notifier
end
level=(value)
Alias for: level_notifier=
level_notifier=(value) click to toggle source

Sets the leveled notifier for this object.

When the given value is an instance of AbstractNotifier, level_notifier is set to the given object.

When an Integer is given, level_notifier is set to the notifier at the index value in the notifiers Array.

If no notifier exists at the index value in the notifiers Array, an ErrUndefinedNotifier exception is raised.

An ErrUnrecognizedLevel exception is raised if the given value is not found in the existing notifiers Array, or an instance of AbstractNotifier

# File lib/irb/notifier.rb, line 157
def level_notifier=(value)
  case value
  when AbstractNotifier
    @level_notifier = value
  when Integer
    l = @notifiers[value]
    raise ErrUndefinedNotifier, value unless l
    @level_notifier = l
  else
    raise ErrUnrecognizedLevel, value unless l
  end
end
Also aliased as: level=