class UkAccountValidator::Validators::StandardModulus

Perform validation for sort codes with MOD10

Public Instance Methods

modulus() click to toggle source
# File lib/uk_account_validator/validators/standard_modulus.rb, line 5
def modulus
  fail NotImplementedError
end
valid?() click to toggle source
# File lib/uk_account_validator/validators/standard_modulus.rb, line 9
def valid?
  test_string = sort_code + account_number

  test_digits = test_string.split(//).map(&:to_i)

  total = applying_exceptions(test_digits) do
    NUMBER_INDEX.each_pair.reduce(0) do |t, pair|
      weight, index = pair

      t + modulus_weight.send(weight) * test_digits[index]
    end
  end

  if exception.override_test?
    return exception.test(modulus, total, test_digits, :standard_modulus)
  end

  total % modulus == 0
end