Sha256: cab7b57278ba1ceb30479e7c3d7ccabf1b29b2f2337a30478871c5b102a08b40

Contents?: true

Size: 879 Bytes

Versions: 2

Compression:

Stored size: 879 Bytes

Contents

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

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

      def valid?(value, negated = false)
        super || dump(value).kind_of?(::String)
      end

      def load(value)
        if value.nil?
          nil
        elsif value.is_a?(::Array)
          klass = value.shift.capitalize
          theklass = Kernel.const_get(klass).new
          theklass.send('properties').map(&:name).each_with_index() do |k,i|
            theklass.send("#{k}=",value[i])
          end
          theklass
       else
          raise ArgumentError.new("not sure what type #{value.class}")
        end
      end


      def dump(value)
        value
      end

      def typecast_to_primitive(value)
        value.to_s
      end
    end 
  end 
end 

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
dm-mnesia-0.2.9 lib/types/record.rb
dm-mnesia-0.2.8 lib/types/record.rb