Sha256: 744ec5b19599d083be0d9c2f8b94b132056e0c47d5cd5bd544d9e2c3ce295ceb

Contents?: true

Size: 750 Bytes

Versions: 3

Compression:

Stored size: 750 Bytes

Contents

module Vedeu
  class Composition
    def initialize(attributes = {})
      @attributes = attributes
    end

    def attributes
      @_attributes ||= defaults.merge!(@attributes)
    end

    def interfaces
      @interfaces ||= if attributes[:interfaces].nil? || attributes[:interfaces].empty?
        []

      else
        [ attributes[:interfaces] ].flatten.map do |attrs|
          stored = Store.query(attrs[:name])

          combined = stored.merge(attrs) do |key, s, a|
            key == :lines && s.empty? ? a : s
          end

          Interface.new(combined)
        end

      end
    end

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

    private

    def defaults
      {
        interfaces: []
      }
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
vedeu-0.1.15 lib/vedeu/models/composition.rb
vedeu-0.1.14 lib/vedeu/models/composition.rb
vedeu-0.1.13 lib/vedeu/models/composition.rb