Sha256: 2c14b746061a62d40e34fe8d6892edee88caee4a34e2c34dafea54bde3878449

Contents?: true

Size: 1.29 KB

Versions: 8

Compression:

Stored size: 1.29 KB

Contents

require 'dm-serializer/common'

if RUBY_VERSION >= '1.9.0'
 require 'csv'
else
  begin
    gem 'fastercsv', '~>1.5.0'
    require 'fastercsv'
    CSV = FasterCSV
  rescue LoadError
    # do nothing
  end
end

module DataMapper
  module Serialize
    # Serialize a Resource to comma-separated values (CSV).
    #
    # @return <String> a CSV representation of the Resource
    def to_csv(writer = '')
      CSV.generate(writer) do |csv|
        row = model.properties(repository.name).map do |property|
          __send__(property.name).to_s
        end
        csv << row
      end
    end

    module ValidationErrors
      module ToCsv
        def to_csv(writer = '')
          CSV.generate(writer) do |csv|
            errors.each do |key, value|
              value.each do |error|
                row = []
                row << key.to_s
                row << error.to_s
                csv << row
              end
            end
          end
        end
      end
    end
  end

  class Collection
    def to_csv
      result = ''
      each do |item|
        result << item.to_csv + "\n"
      end
      result
    end
  end

  if Serialize.dm_validations_loaded?

    module Validations
      class ValidationErrors
        include DataMapper::Serialize::ValidationErrors::ToCsv
      end
    end

  end

end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
dm-serializer-1.1.0.rc2 lib/dm-serializer/to_csv.rb
dm-serializer-1.1.0.rc1 lib/dm-serializer/to_csv.rb
dm-serializer-1.0.2 lib/dm-serializer/to_csv.rb
dm-serializer-1.0.1 lib/dm-serializer/to_csv.rb
dm-serializer-1.0.0 lib/dm-serializer/to_csv.rb
dm-serializer-1.0.0.rc3 lib/dm-serializer/to_csv.rb
dm-serializer-1.0.0.rc2 lib/dm-serializer/to_csv.rb
dm-serializer-1.0.0.rc1 lib/dm-serializer/to_csv.rb