Sha256: 7176b9c3acfd7d960877ae8c786d5d80cf06d0df0ae0674ada0137592a7ad851

Contents?: true

Size: 1.15 KB

Versions: 35

Compression:

Stored size: 1.15 KB

Contents

module Acfs::Model::Attributes

  # @api public
  #
  # UUID attribute type. Use it in your model as an attribute type:
  #
  # @example
  #   class User
  #     include Acfs::Model
  #     attribute :id, :uuid
  #   end
  #
  class UUID < Base

    # @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] obj Object to cast.
    # @return [String] Casted object as UUID.
    #
    def cast_type(obj)
      obj = obj.to_s
      return nil if nil_allowed? and obj == ''
      raise ArgumentError.new "given String `#{obj}` does not look like a UUID" unless obj =~ /[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12}/i
      obj
    end
  end

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

Version data entries

35 entries across 35 versions & 1 rubygems

Version Path
acfs-0.42.0 lib/acfs/model/attributes/uuid.rb
acfs-0.41.1 lib/acfs/model/attributes/uuid.rb
acfs-0.41.1.beta1 lib/acfs/model/attributes/uuid.rb
acfs-0.41.0 lib/acfs/model/attributes/uuid.rb
acfs-0.40.1.rc1 lib/acfs/model/attributes/uuid.rb
acfs-0.40.0 lib/acfs/model/attributes/uuid.rb
acfs-0.39.1 lib/acfs/model/attributes/uuid.rb
acfs-0.39.0 lib/acfs/model/attributes/uuid.rb
acfs-0.38.0 lib/acfs/model/attributes/uuid.rb
acfs-0.37.0.1.b295 lib/acfs/model/attributes/uuid.rb
acfs-0.37.0 lib/acfs/model/attributes/uuid.rb
acfs-0.36.0.1.b293 lib/acfs/model/attributes/uuid.rb
acfs-0.36.0 lib/acfs/model/attributes/uuid.rb
acfs-0.35.0.1.b291 lib/acfs/model/attributes/uuid.rb
acfs-0.35.0 lib/acfs/model/attributes/uuid.rb
acfs-0.34.1.1.b289 lib/acfs/model/attributes/uuid.rb
acfs-0.34.1 lib/acfs/model/attributes/uuid.rb
acfs-0.34.0.1.b288 lib/acfs/model/attributes/uuid.rb
acfs-0.34.0.1.b287 lib/acfs/model/attributes/uuid.rb
acfs-0.34.0.1.b286 lib/acfs/model/attributes/uuid.rb