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.1.0 lib/ree_lib/packages/ree_validator/package/ree_validator/functions/validate_length.rb
ree_lib-1.0.124 lib/ree_lib/packages/ree_validator/package/ree_validator/functions/validate_length.rb
ree_lib-1.0.123 lib/ree_lib/packages/ree_validator/package/ree_validator/functions/validate_length.rb
ree_lib-1.0.122 lib/ree_lib/packages/ree_validator/package/ree_validator/functions/validate_length.rb
ree_lib-1.0.121 lib/ree_lib/packages/ree_validator/package/ree_validator/functions/validate_length.rb
ree_lib-1.0.120 lib/ree_lib/packages/ree_validator/package/ree_validator/functions/validate_length.rb
ree_lib-1.0.119 lib/ree_lib/packages/ree_validator/package/ree_validator/functions/validate_length.rb
ree_lib-1.0.118 lib/ree_lib/packages/ree_validator/package/ree_validator/functions/validate_length.rb
ree_lib-1.0.117 lib/ree_lib/packages/ree_validator/package/ree_validator/functions/validate_length.rb
ree_lib-1.0.116 lib/ree_lib/packages/ree_validator/package/ree_validator/functions/validate_length.rb
ree_lib-1.0.115 lib/ree_lib/packages/ree_validator/package/ree_validator/functions/validate_length.rb
ree_lib-1.0.114 lib/ree_lib/packages/ree_validator/package/ree_validator/functions/validate_length.rb
ree_lib-1.0.113 lib/ree_lib/packages/ree_validator/package/ree_validator/functions/validate_length.rb
ree_lib-1.0.112 lib/ree_lib/packages/ree_validator/package/ree_validator/functions/validate_length.rb
ree_lib-1.0.111 lib/ree_lib/packages/ree_validator/package/ree_validator/functions/validate_length.rb
ree_lib-1.0.110 lib/ree_lib/packages/ree_validator/package/ree_validator/functions/validate_length.rb
ree_lib-1.0.109 lib/ree_lib/packages/ree_validator/package/ree_validator/functions/validate_length.rb
ree_lib-1.0.108 lib/ree_lib/packages/ree_validator/package/ree_validator/functions/validate_length.rb
ree_lib-1.0.107 lib/ree_lib/packages/ree_validator/package/ree_validator/functions/validate_length.rb
ree_lib-1.0.106 lib/ree_lib/packages/ree_validator/package/ree_validator/functions/validate_length.rb