Class: Datacraft::Registry

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Defined in:
lib/datacraft/registry.rb

Overview

common registry

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeRegistry

Returns a new instance of Registry.



15
16
17
# File 'lib/datacraft/registry.rb', line 15

def initialize
  @items = []
end

Instance Attribute Details

#mandatory_methodsObject

Returns the value of attribute mandatory_methods.



19
20
21
# File 'lib/datacraft/registry.rb', line 19

def mandatory_methods
  @mandatory_methods
end

Instance Method Details

#<<(val) ⇒ Object



31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/datacraft/registry.rb', line 31

def <<(val)
  klass = val[:klass]
  block = val[:block]
  if klass
    fail InvalidInstruction, "#{klass.name} needs to implement methods: "\
      "#{mandatory_methods}" unless valid? klass
  elsif block
  else
    fail 'registry error'
  end
  @items << val
end

#instancesObject



21
22
23
24
25
26
27
28
29
# File 'lib/datacraft/registry.rb', line 21

def instances
  @instances ||= @items.map do |i|
    if i[:klass]
      i[:klass].new(*i[:args])
    elsif i[:block]
      CompatiableProc.new(&i[:block])
    end
  end
end

#valid?(klass) ⇒ Boolean

Returns:

  • (Boolean)


44
45
46
47
48
# File 'lib/datacraft/registry.rb', line 44

def valid?(klass)
  mandatory_methods.all? do |m|
    klass.method_defined? m
  end
end