Sha256: 8320c5ebb72f8514759610de77764c9128a14d738e0927e65af85fc6f81b09cf

Contents?: true

Size: 1.49 KB

Versions: 125

Compression:

Stored size: 1.49 KB

Contents

# frozen_string_literal: true

class ReeValidator::ValidateLength
  include Ree::FnDSL

  fn :validate_length do
    link :t, from: :ree_i18n
  end

  LenthErr = Class.new(StandardError)

  contract(
    -> { _1.respond_to?(:length) },
    Nilor[StandardError],
    Ksplat[
      min?: Integer,
      max?: Integer,
      equal_to?: Integer,
      not_equal_to?: Integer,
    ] => Bool
    ).throws(LenthErr)
  def call(object, error = nil, **opts)
    min, max, equal_to, not_equal_to = opts.values_at(:min, :max, :equal_to, :not_equal_to)

    if min && object.length < min
      error ||= LenthErr.new(
        t(
          'validator.length.can_not_be_less_than',
          {length: min},
          default_by_locale: :en
        )
      )

      raise error
    end

    if max && object.length > max
      error ||= LenthErr.new(
        t(
          'validator.length.can_not_be_more_than',
          {length: max},
          default_by_locale: :en
        )
      )

      raise error
    end

    if equal_to && object.length != equal_to
      error ||= LenthErr.new(
        t(
          'validator.length.should_be_equal_to',
          {length: equal_to},
          default_by_locale: :en
        )
      )

      raise error
    end

    if not_equal_to && object.length == not_equal_to
      error ||= LenthErr.new(
        t(
          'validator.length.should_not_be_equal_to',
          {length: not_equal_to},
          default_by_locale: :en
        )
      )

      raise error
    end

    true
  end
end

Version data entries

125 entries across 125 versions & 1 rubygems

Version Path
ree_lib-1.0.105 lib/ree_lib/packages/ree_validator/package/ree_validator/functions/validate_length.rb
ree_lib-1.0.104 lib/ree_lib/packages/ree_validator/package/ree_validator/functions/validate_length.rb
ree_lib-1.0.103 lib/ree_lib/packages/ree_validator/package/ree_validator/functions/validate_length.rb
ree_lib-1.0.102 lib/ree_lib/packages/ree_validator/package/ree_validator/functions/validate_length.rb
ree_lib-1.0.101 lib/ree_lib/packages/ree_validator/package/ree_validator/functions/validate_length.rb
ree_lib-1.0.100 lib/ree_lib/packages/ree_validator/package/ree_validator/functions/validate_length.rb
ree_lib-1.0.99 lib/ree_lib/packages/ree_validator/package/ree_validator/functions/validate_length.rb
ree_lib-1.0.98 lib/ree_lib/packages/ree_validator/package/ree_validator/functions/validate_length.rb
ree_lib-1.0.97 lib/ree_lib/packages/ree_validator/package/ree_validator/functions/validate_length.rb
ree_lib-1.0.96 lib/ree_lib/packages/ree_validator/package/ree_validator/functions/validate_length.rb
ree_lib-1.0.95 lib/ree_lib/packages/ree_validator/package/ree_validator/functions/validate_length.rb
ree_lib-1.0.94 lib/ree_lib/packages/ree_validator/package/ree_validator/functions/validate_length.rb
ree_lib-1.0.93 lib/ree_lib/packages/ree_validator/package/ree_validator/functions/validate_length.rb
ree_lib-1.0.92 lib/ree_lib/packages/ree_validator/package/ree_validator/functions/validate_length.rb
ree_lib-1.0.91 lib/ree_lib/packages/ree_validator/package/ree_validator/functions/validate_length.rb
ree_lib-1.0.90 lib/ree_lib/packages/ree_validator/package/ree_validator/functions/validate_length.rb
ree_lib-1.0.89 lib/ree_lib/packages/ree_validator/package/ree_validator/functions/validate_length.rb
ree_lib-1.0.88 lib/ree_lib/packages/ree_validator/package/ree_validator/functions/validate_length.rb
ree_lib-1.0.87 lib/ree_lib/packages/ree_validator/package/ree_validator/functions/validate_length.rb
ree_lib-1.0.86 lib/ree_lib/packages/ree_validator/package/ree_validator/functions/validate_length.rb