class BankValidator::Iban
Attributes
value[RW]
Public Class Methods
new(iban)
click to toggle source
# File lib/bank_validator/iban.rb, line 5 def initialize(iban) @value = iban end
valid_checksum?(iban)
click to toggle source
# File lib/bank_validator/iban.rb, line 18 def valid_checksum?(iban) # Move first four characters to end of string dummy_iban = iban[4..-1] + iban[0..3] # Substitute all letters with integers checksum = dummy_iban.chars.map { |char| ((char =~ /[a-zA-Z]/).present?) ? (char.downcase.ord - 87).to_s : char }.join # Check if division by 97 yields a remainder of 1, in which case it could be a valid IBAN (checksum.to_i % 97) == 1 end
valid_format?(iban)
click to toggle source
# File lib/bank_validator/iban.rb, line 14 def valid_format?(iban) iban =~ /[A-Z]{2}[a-zA-Z0-9]{14,}/ ? true : false end
Public Instance Methods
valid?()
click to toggle source
# File lib/bank_validator/iban.rb, line 9 def valid? BankValidator::Iban.valid_format?(value) && BankValidator::Iban.valid_checksum?(value) end