Sha256: 9ce57c935e6ff07d4c32edaadaef5c442b57ce4efb379956a356f4a85e1af62b

Contents?: true

Size: 1.17 KB

Versions: 17

Compression:

Stored size: 1.17 KB

Contents

module Acfs::Resource::Attributes
  # @api public
  #
  # UUID attribute type. Use it in your model as an attribute type:
  #
  # @example
  #   class User < Acfs::Resource
  #     attribute :id, :uuid
  #   end
  #
  class UUID < Base
    #
    UUID_REGEXP = /[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12}/i

    # @api public
    #
    # Check if given object looks like a UUID, eg:
    #   `450b7a40-94ad-11e3-baa8-0800200c9a66`
    # Valid UUIDs are 16 byte numbers represented as
    #  a hexadecimal string in five sub-groups seperated
    #  by a dash. Each group has to consist of a fixed
    #  number of hexadecimal digits:
    #   | Group | Digits |
    #   | -----:|:------ |
    #   |     1 | 8      |
    #   |     2 | 4      |
    #   |     3 | 4      |
    #   |     4 | 4      |
    #   |     5 | 12     |
    #
    # @param [Object] value Object to cast.
    # @return [String] Casted object as UUID.
    #
    def cast_value(value)
      if value.blank?
        nil
      elsif value.to_s =~ UUID_REGEXP
        value
      else
        raise TypeError.new "Invalid UUID: `#{value.to_s}'"
      end
    end
  end

  # Lower-case alias for automatic type lookup
  Uuid = UUID
end

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
acfs-1.3.2 lib/acfs/resource/attributes/uuid.rb
acfs-1.3.1 lib/acfs/resource/attributes/uuid.rb
acfs-1.3.0 lib/acfs/resource/attributes/uuid.rb
acfs-1.2.1 lib/acfs/resource/attributes/uuid.rb
acfs-0.50.0 lib/acfs/resource/attributes/uuid.rb
acfs-1.2.0 lib/acfs/resource/attributes/uuid.rb
acfs-0.49.1 lib/acfs/resource/attributes/uuid.rb
acfs-1.1.1 lib/acfs/resource/attributes/uuid.rb
acfs-0.49.0 lib/acfs/resource/attributes/uuid.rb
acfs-1.1.0 lib/acfs/resource/attributes/uuid.rb
acfs-0.48.2 lib/acfs/resource/attributes/uuid.rb
acfs-1.0.1 lib/acfs/resource/attributes/uuid.rb
acfs-0.48.1 lib/acfs/resource/attributes/uuid.rb
acfs-1.0.0 lib/acfs/resource/attributes/uuid.rb
acfs-0.48.0 lib/acfs/resource/attributes/uuid.rb
acfs-0.47.0 lib/acfs/resource/attributes/uuid.rb
acfs-0.46.0 lib/acfs/resource/attributes/uuid.rb