Sha256: bcfce6e0a4cf1b59ed72753c5d973686311be0085a89c3c99aa0b5ce37767cec

Contents?: true

Size: 580 Bytes

Versions: 13

Compression:

Stored size: 580 Bytes

Contents

# frozen_string_literal: true

class MiniDefender::Rules::Digits < MiniDefender::Rule
  def initialize(size)
    raise ArgumentError, 'Size must be a positive integer' unless size.is_a?(Integer) && size > 0

    @size = size
  end

  def self.signature
    'digits'
  end

  def self.make(args)
    self.new(args[0].to_i)
  end

  def passes?(attribute, value, validator)
    value = value&.to_s
    value.is_a?(String) && /\A[0-9]+\z/.match?(value) && value.length == @size
  end

  def message(attribute, value, validator)
    "The field must contain #{size} digits."
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
mini_defender-0.3.5 lib/mini_defender/rules/digits.rb
mini_defender-0.3.2 lib/mini_defender/rules/digits.rb
mini_defender-0.3.0 lib/mini_defender/rules/digits.rb
mini_defender-0.2.0 lib/mini_defender/rules/digits.rb
mini_defender-0.1.10 lib/mini_defender/rules/digits.rb
mini_defender-0.1.9 lib/mini_defender/rules/digits.rb
mini_defender-0.1.8 lib/mini_defender/rules/digits.rb
mini_defender-0.1.6 lib/mini_defender/rules/digits.rb
mini_defender-0.1.4 lib/mini_defender/rules/digits.rb
mini_defender-0.1.3 lib/mini_defender/rules/digits.rb
mini_defender-0.1.2 lib/mini_defender/rules/digits.rb
mini_defender-0.1.1 lib/mini_defender/rules/digits.rb
mini_defender-0.1.0 lib/mini_defender/rules/digits.rb