class RedPack::DottedInstanceDispatcher

Public Class Methods

new(named_obj_dict, responder, sep=/\./, dispatch_delegate_klass=RedPack::SimpleInstanceDispatcher) click to toggle source
# File lib/redpack-ruby/method-dispatchers/dotted.rb, line 7
def initialize(named_obj_dict, responder, 
               sep=/\./,
               dispatch_delegate_klass=RedPack::SimpleInstanceDispatcher)
  #
  @responder = responder
  @targets = {}
  @sep = sep
  named_obj_dict.each do |name, obj|
    @targets[name] = dispatch_delegate_klass.new(obj, @responder)
  end
end

Public Instance Methods

dispatch(ctx, method, params) click to toggle source
# File lib/redpack-ruby/method-dispatchers/dotted.rb, line 23
def dispatch(ctx, method, params)
  a = self.parse_dotted(method)
  obj_name, method_name = a[0], a[1]
  if @targets.key? obj_name then
    @targets[obj_name].dispatch(ctx, method_name, params)
  else
    @responder.fail(ctx, "no-such-object-named: #{obj_name} / #{method}")
  end
end
parse_dotted(method) click to toggle source
# File lib/redpack-ruby/method-dispatchers/dotted.rb, line 19
def parse_dotted(method)
  return method.split(@sep)
end