Sha256: 25068b92fc68b65e6197a18a9af8447ff86b9621222b0e038c2ab2a29a4f283b

Contents?: true

Size: 775 Bytes

Versions: 7

Compression:

Stored size: 775 Bytes

Contents

require 'dm-core'
require 'dm-types/support/dirty_minder'

if RUBY_VERSION >= '1.9.0'
  require 'csv'
else
  require 'fastercsv'  # must be ~>1.5
  CSV = FasterCSV unless defined?(CSV)
end

module DataMapper
  class Property
    class Csv < Text

      def primitive?(value)
        super || value.kind_of?(::Array)
      end

      def load(value)
        case value
        when ::String then CSV.parse(value)
        when ::Array  then value
        end
      end

      def dump(value)
        case value
          when ::Array
            CSV.generate { |csv| value.each { |row| csv << row } }
          when ::String then value
        end
      end

      include ::DataMapper::Property::DirtyMinder

    end # class Csv
  end # class Property
end # module DataMapper

Version data entries

7 entries across 7 versions & 2 rubygems

Version Path
ardm-types-1.2.3 lib/dm-types/csv.rb
ardm-types-1.2.2 lib/dm-types/csv.rb
dm-types-1.2.2 lib/dm-types/csv.rb
dm-types-1.2.1 lib/dm-types/csv.rb
dm-types-1.2.0 lib/dm-types/csv.rb
dm-types-1.2.0.rc2 lib/dm-types/csv.rb
dm-types-1.2.0.rc1 lib/dm-types/csv.rb