Sha256: c3d9190924da4d6d4b89f283ac40d2249c95bf127a9edccc285a93c05daf438d

Contents?: true

Size: 803 Bytes

Versions: 3

Compression:

Stored size: 803 Bytes

Contents

require 'json'

module DataMapper
  module Types
    class Json < DataMapper::Type
      primitive String
      size 65535
      lazy true

      def self.load(value, property)
        if value.nil?
          nil
        elsif value.is_a?(String)
          ::JSON.load(value)
        else
          raise ArgumentError, '+value+ must be nil or a String'
        end
      end

      def self.dump(value, property)
        if value.nil? || value.is_a?(String)
          value
        else
          ::JSON.dump(value)
        end
      end

      def self.typecast(value, property)
        if value.nil? || value.kind_of?(Array) || value.kind_of?(Hash)
          value
        else
          ::JSON.load(value.to_s)
        end
      end
    end # class Json
  end # module Types
end # module DataMapper

Version data entries

3 entries across 3 versions & 2 rubygems

Version Path
dm-types-0.9.9 lib/dm-types/json.rb
mack-data_mapper-0.8.3 lib/gems/dm-types-0.9.9/lib/dm-types/json.rb
mack-data_mapper-0.8.3.1 lib/gems/dm-types-0.9.9/lib/dm-types/json.rb