Sha256: 0c1017facb1350cf4e6c95ef321cb148b50a99c0a3a57cf4b47e66c87fabb581

Contents?: true

Size: 1.26 KB

Versions: 45

Compression:

Stored size: 1.26 KB

Contents

require "csv"

module PactBroker
  module Api
    module Decorators
      class RelationshipsCsvDecorator
        def initialize pacts
          @pacts = pacts
          @index_items = pacts.collect{|pact| PactBroker::Domain::IndexItem.new(pact.consumer, pact.provider)}
        end

        # rubocop: disable Metrics/CyclomaticComplexity
        def to_csv
          hash = {}

          @index_items.each do | index_item |
            hash[index_item.consumer.id] ||= pacticipant_array(index_item.consumer, hash.size + 1)
            hash[index_item.provider.id] ||= pacticipant_array(index_item.provider, hash.size + 1)
            hash[index_item.consumer.id] << index_item.provider.id
          end

          max_length = hash.values.collect(&:size).max

          hash.values.each do | array |
            while array.size < max_length
              array << 0
            end
          end

          CSV.generate do |csv|
            hash.values.each do | array |
              csv << array
            end
          end
        end
        # rubocop: enable Metrics/CyclomaticComplexity

        def pacticipant_array pacticipant, order
          [pacticipant.id, pacticipant.name, 1, 1, 0, order]
        end

        private

        attr_reader :pacts
      end
    end
  end
end

Version data entries

45 entries across 45 versions & 1 rubygems

Version Path
pact_broker-2.113.0 lib/pact_broker/api/decorators/relationships_csv_decorator.rb
pact_broker-2.112.0 lib/pact_broker/api/decorators/relationships_csv_decorator.rb
pact_broker-2.111.0 lib/pact_broker/api/decorators/relationships_csv_decorator.rb
pact_broker-2.109.1 lib/pact_broker/api/decorators/relationships_csv_decorator.rb
pact_broker-2.109.0 lib/pact_broker/api/decorators/relationships_csv_decorator.rb
pact_broker-2.108.0 lib/pact_broker/api/decorators/relationships_csv_decorator.rb
pact_broker-2.107.1 lib/pact_broker/api/decorators/relationships_csv_decorator.rb
pact_broker-2.107.0 lib/pact_broker/api/decorators/relationships_csv_decorator.rb
pact_broker-2.107.0.beta.1 lib/pact_broker/api/decorators/relationships_csv_decorator.rb
pact_broker-2.106.0 lib/pact_broker/api/decorators/relationships_csv_decorator.rb
pact_broker-2.105.0 lib/pact_broker/api/decorators/relationships_csv_decorator.rb
pact_broker-2.104.0 lib/pact_broker/api/decorators/relationships_csv_decorator.rb
pact_broker-2.103.0 lib/pact_broker/api/decorators/relationships_csv_decorator.rb
pact_broker-2.102.2 lib/pact_broker/api/decorators/relationships_csv_decorator.rb
pact_broker-2.102.1 lib/pact_broker/api/decorators/relationships_csv_decorator.rb
pact_broker-2.102.0 lib/pact_broker/api/decorators/relationships_csv_decorator.rb
pact_broker-2.101.0 lib/pact_broker/api/decorators/relationships_csv_decorator.rb
pact_broker-2.100.0 lib/pact_broker/api/decorators/relationships_csv_decorator.rb
pact_broker-2.99.0 lib/pact_broker/api/decorators/relationships_csv_decorator.rb
pact_broker-2.98.0 lib/pact_broker/api/decorators/relationships_csv_decorator.rb