Module: Sequencescape::Api::Composition

Included in:
Resource
Defined in:
lib/sequencescape-api/composition.rb

Defined Under Namespace

Modules: Target

Instance Method Summary collapse

Instance Method Details

#composed_of(name, options = {}) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/sequencescape-api/composition.rb', line 22

def composed_of(name, options = {})
  composed_class_name = options[:class_name] || name

  line = __LINE__ + 1
  class_eval(%Q{
    def #{name}
      return nil unless attributes_for?(#{name.to_s.inspect})
      api.model(#{composed_class_name.inspect}).new(self, attributes_for(#{name.to_s.inspect}))
    end

    def #{name}=(attributes)
      @attributes[#{name.to_s.inspect}] = attributes
    end
  }, __FILE__, line)
end