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

rubocop:todo Metrics/MethodLength



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/sequencescape-api/composition.rb', line 26

def composed_of(name, options = {}) # rubocop:todo Metrics/MethodLength
  composed_class_name = options[:class_name] || name

  line = __LINE__ + 1
  class_eval(%{
    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