Sha256: 11ff8687a8cd6ef7ba7ce4dde8a4fe9b384c1b305548377dfd8a2972184c6d24

Contents?: true

Size: 864 Bytes

Versions: 12

Compression:

Stored size: 864 Bytes

Contents

# frozen_string_literal: true

class UuidValidator < BaseValidator

  VERSIONS = {
    any: /^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i,
    3 => /^[0-9A-F]{8}-[0-9A-F]{4}-3[0-9A-F]{3}-[0-9A-F]{4}-[0-9A-F]{12}$/i,
    4 => /^[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,
    5 => /^[0-9A-F]{8}-[0-9A-F]{4}-5[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i
  }.freeze

  def validate_each(record, attribute, value)
    assert_valid_version!
    super
  end

  private

  def assert_valid_version!
    return unless options.key?(:version)

    assert_valid_option!(:version, VERSIONS.keys)
  end

  def version
    options[:version] || :any
  end

  def valid_regexp?
    if options.key?(:version)
      value.to_s =~ VERSIONS[version]
    else
      VERSIONS.any? { |_, regexp| value.to_s =~ regexp }
    end
  end

end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
lite-validators-1.8.0 lib/lite/validators/uuid_validator.rb
lite-validators-1.7.2 lib/lite/validators/uuid_validator.rb
lite-validators-1.7.1 lib/lite/validators/uuid_validator.rb
lite-validators-1.7.0 lib/lite/validators/uuid_validator.rb
lite-validators-1.6.0 lib/lite/validators/uuid_validator.rb
lite-validators-1.5.0 lib/lite/validators/uuid_validator.rb
lite-validators-1.4.0 lib/lite/validators/uuid_validator.rb
lite-validators-1.3.2 lib/lite/validators/uuid_validator.rb
lite-validators-1.3.1 lib/lite/validators/uuid_validator.rb
lite-validators-1.3.0 lib/lite/validators/uuid_validator.rb
lite-validators-1.2.0 lib/lite/validators/uuid_validator.rb
lite-validators-1.1.2 lib/lite/validators/uuid_validator.rb