Sha256: 79d3dbbe91c92cc1a5b5af14c9f12276063655592a97194d49085f87bb00aabd

Contents?: true

Size: 1.64 KB

Versions: 10

Compression:

Stored size: 1.64 KB

Contents

module ChurchCommunityBuilder

  class MergeableTransactionList

    include Enumerable

    attr_reader :transaction_array #for debugging
                

    def initialize(transaction_list = nil)

      if transaction_list.nil?
        @transaction_array = []

      else
        @transaction_array = transaction_list.transaction_array

      end
      
    end

    def all_names
      return [] unless @transaction_array
      @transaction_array.collect { |transaction| transaction['individual']['content'] }
    end

    def [](index)
      Transaction.new( @transaction_array[index] ) if @transaction_array and @transaction_array[index]
    end


    # This method is needed for Enumerable.
    def each &block
      @transaction_array.each{ |transaction| yield( Transaction.new(transaction) )}
    end

    # Get all the Transaction ids in the list.
    #
    # @return An array of Transaction ids.
    def ids
      (@transaction_array.collect { |transaction| transaction['id'] }).uniq
    end

    # Adds an TransactionList, MergeableTransactionList, or Transaction to this list.
    #
    def add(transaction_type)
      
      if transaction_type.is_a?(TransactionList)
        @transaction_array += transaction_type.transaction_array

      elsif transaction_type.is_a?(MergeableTransactionList)
        @transaction_array += transaction_type.transaction_array
      
      elsif transaction_type.is_a?(Transaction)
        @transaction_array << JSON.parse( transaction_type.to_json )

      end

    end   

    alias_method :merge, :add

    def count
      @transaction_array.size
    end


    def empty?
      self.count == 0 ? true : false
    end

  end

end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
church-community-builder-0.2.2 lib/api/mergeable_transaction_list.rb
church-community-builder-0.2.1 lib/api/mergeable_transaction_list.rb
church-community-builder-0.2.0 lib/api/mergeable_transaction_list.rb
church-community-builder-0.1.6 lib/api/mergeable_transaction_list.rb
church-community-builder-0.1.5 lib/api/mergeable_transaction_list.rb
church-community-builder-0.1.4 lib/api/mergeable_transaction_list.rb
church-community-builder-0.1.3 lib/api/mergeable_transaction_list.rb
church-community-builder-0.1.2 lib/api/mergeable_transaction_list.rb
church-community-builder-0.1.1 lib/api/mergeable_transaction_list.rb
church-community-builder-0.1.0 lib/api/mergeable_transaction_list.rb