class Tins::Deflect::DeflectorCollection
This class implements a collection of deflectors, to make them available by emulating Ruby's message dispatch.
Public Class Methods
new()
click to toggle source
# File lib/tins/dslkit.rb, line 335 def initialize @classes = {} end
Public Instance Methods
add(klass, id, deflector)
click to toggle source
Add a new deflector deflector for class klass and method name id, and return self.
# File lib/tins/dslkit.rb, line 342 def add(klass, id, deflector) k = @classes[klass] k = @classes[klass] = {} unless k k[id.to_s] = deflector self end
delete(klass, id)
click to toggle source
Delete the deflecotor class klass and method name id. Returns the deflector if any was found, otherwise returns true.
# File lib/tins/dslkit.rb, line 357 def delete(klass, id) if k = @classes[klass] d = k.delete id.to_s @classes.delete klass if k.empty? d end end
find(klass, id)
click to toggle source
Try to find a deflector for class klass and method id and return it. If none was found, return nil instead.
# File lib/tins/dslkit.rb, line 367 def find(klass, id) klass.ancestors.find do |k| if d = @classes[k] and d = d[id.to_s] return d end end end
member?(klass, id)
click to toggle source
Return true if messages are deflected for class klass and method name id, otherwise return false.
# File lib/tins/dslkit.rb, line 351 def member?(klass, id) !!(k = @classes[klass] and k.key?(id.to_s)) end