class Tins::Deflect::DeflectorCollection
by emulating Ruby’s message dispatch.
This class implements a collection of deflectors, to make them available
def add(klass, id, deflector)
and return self.
Add a new deflector _deflector_ for class _klass_ and method name _id_,
def add(klass, id, deflector) k = @classes[klass] k = @classes[klass] = {} unless k k[id.to_s] = deflector self end
def delete(klass, id)
Delete the deflecotor class _klass_ and method name _id_. Returns the
def delete(klass, id) if k = @classes[klass] d = k.delete id.to_s @classes.delete klass if k.empty? d end end
def find(klass, id)
Try to find a deflector for class _klass_ and method _id_ and return
def find(klass, id) klass.ancestors.find do |k| if d = @classes[k] and d = d[id.to_s] return d end end end
def initialize
def initialize @classes = {} end
def member?(klass, id)
Return true if messages are deflected for class _klass_ and method name
def member?(klass, id) !!(k = @classes[klass] and k.key?(id.to_s)) end