Sha256: 8af957fe16591ebef620587cce635ad1daf831b073009ec998a431e94babce9b

Contents?: true

Size: 800 Bytes

Versions: 2

Compression:

Stored size: 800 Bytes

Contents

require 'dm-core'
require 'json'

module DataMapper
  class Property
    class Json < Text
      def custom?
        true
      end

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

      def load(value)
        if value.nil?
          nil
        elsif value.is_a?(::String)
          ::JSON.load(value)
        else
          raise ArgumentError.new("+value+ of a property of JSON type must be nil or a String")
        end
      end

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

      def typecast_to_primitive(value)
        ::JSON.load(value.to_s)
      end
    end # class Json
    JSON = Json
  end # class Property
end # module DataMapper

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
dm-types-1.0.0.rc2 lib/dm-types/json.rb
dm-types-1.0.0.rc1 lib/dm-types/json.rb