Sha256: 273d32d31a363595659fd874750dc64d926fcba501563b3a972d19b50443b7d3

Contents?: true

Size: 780 Bytes

Versions: 9

Compression:

Stored size: 780 Bytes

Contents

require 'addressable/uri'
require 'dm-core'

module DataMapper
  class Property
    class URI < String

      # Maximum length chosen based on recommendation:
      # http://stackoverflow.com/questions/417142/what-is-the-maximum-length-of-an-url
      length 2000

      def custom?
        true
      end

      def primitive?(value)
        value.kind_of?(Addressable::URI)
      end

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

      def load(value)
        Addressable::URI.parse(value)
      end

      def dump(value)
        value.to_s unless value.nil?
      end

      def typecast_to_primitive(value)
        load(value)
      end

    end # class URI
  end # class Property
end # module DataMapper

Version data entries

9 entries across 9 versions & 2 rubygems

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