Module: AdapterRegistry::Implementation::ClassMethods

Defined in:
lib/adapter-registry/implementation.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#traitsObject

Returns the value of attribute traits.



10
11
12
# File 'lib/adapter-registry/implementation.rb', line 10

def traits
  @traits
end

Instance Method Details

#adapts(&block) ⇒ Object



27
28
29
30
31
# File 'lib/adapter-registry/implementation.rb', line 27

def adapts(&block)
  self.traits.each do |trait|
    AdapterRegistry.register(trait, self, &block)
  end if (self.traits && block)
end

#adapts_class(*klasses) ⇒ Object



21
22
23
24
25
# File 'lib/adapter-registry/implementation.rb', line 21

def adapts_class(*klasses)
  adapts do |context|
    context.is_a?(Class) && klass_is_a?(context, *klasses)
  end
end

#adapts_instance(*klasses) ⇒ Object



15
16
17
18
19
# File 'lib/adapter-registry/implementation.rb', line 15

def adapts_instance(*klasses)
  adapts do |context|
    klasses.any? { |klass| context.is_a?(klass) }
  end
end

#implements(*traits) ⇒ Object



11
12
13
# File 'lib/adapter-registry/implementation.rb', line 11

def implements(*traits)
  self.traits = traits
end

#instance_for(context) ⇒ Object



33
34
35
# File 'lib/adapter-registry/implementation.rb', line 33

def instance_for(context)
  self.new(context)
end

#klass_is_a?(klass, *klasses) ⇒ Boolean

Returns:

  • (Boolean)


37
38
39
# File 'lib/adapter-registry/implementation.rb', line 37

def klass_is_a?(klass, *klasses)
  (klasses.map(&:to_s) & klass.ancestors.map(&:name)).any?
end