Parent

Files

Class/Module Index [+]

Quicksearch

Dragonfly::FunctionManager

Attributes

functions[R]
objects[R]

Public Class Methods

new() click to toggle source
# File lib/dragonfly/function_manager.rb, line 11
def initialize
  @functions = {}
  @objects = []
end

Public Instance Methods

add(name, callable_obj=nil, &block) click to toggle source
# File lib/dragonfly/function_manager.rb, line 16
def add(name, callable_obj=nil, &block)
  functions[name] ||= []
  functions[name] << (callable_obj || block)
end
call_last(meth, *args) click to toggle source
# File lib/dragonfly/function_manager.rb, line 35
def call_last(meth, *args)
  if functions[meth.to_sym]
    functions[meth.to_sym].reverse.each do |function|
      catch :unable_to_handle do
        return function.call(*args)
      end
    end
    # If the code gets here, then none of the registered functions were able to handle the method call
    raise UnableToHandle, "None of the functions registered with #{self} were able to deal with the method call " +
      "#{meth}(#{args.map{|a| a.inspect[0..100]}.join(',')}). You may need to register one that can."
  else
    raise NotDefined, "function #{meth} not registered with #{self}"
  end
end
get_registered(klass) click to toggle source
# File lib/dragonfly/function_manager.rb, line 50
def get_registered(klass)
  objects.reverse.detect{|o| o.instance_of?(klass) }
end
inspect() click to toggle source
# File lib/dragonfly/function_manager.rb, line 54
def inspect
  "<#{self.class.name} with functions: #{functions.keys.map{|k| k.to_s }.sort.join(', ')} >"
end
register(klass, *args, &block) click to toggle source
# File lib/dragonfly/function_manager.rb, line 23
def register(klass, *args, &block)
  obj = klass.new(*args)
  obj.configure(&block) if block
  obj.use_same_log_as(self) if obj.is_a?(Loggable)
  obj.use_as_fallback_config(self) if obj.is_a?(Configurable)
  methods_to_add(obj).each do |meth|
    add meth, obj.method(meth)
  end
  objects << obj
  obj
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.