Sha256: 7de80aa3464de4d74a32df16a2436b7280a86aa56fa99a9e5bdc3d89bf96854f

Contents?: true

Size: 625 Bytes

Versions: 3

Compression:

Stored size: 625 Bytes

Contents

require 'oj'
require 'virtus'

require_relative 'interface_collection'

module Vedeu
  class Composition
    include Virtus.model

    attribute :interfaces, InterfaceCollection

    def self.enqueue(composition)
      new(composition).enqueue
    end

    def enqueue
      interfaces.map do |interface|
        interface.enqueue(interface.to_s)
        interface
      end

      self
    end

    def to_json
      Oj.dump(json_attributes, mode: :compat)
    end

    def to_s
      interfaces.map(&:to_s).join
    end

    private

    def json_attributes
      {
        interfaces: interfaces
      }
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
vedeu-0.0.32 lib/vedeu/models/composition.rb
vedeu-0.0.31 lib/vedeu/models/composition.rb
vedeu-0.0.30 lib/vedeu/models/composition.rb