Sha256: b674e8d30a19737896e0bff989e124e14746ae9f759608d6896d55ae525462db
Contents?: true
Size: 816 Bytes
Versions: 3
Compression:
Stored size: 816 Bytes
Contents
module BankValidator class Iban attr_accessor :value def initialize(iban) @value = iban end def valid? BankValidator::Iban.valid_format?(value) && BankValidator::Iban.valid_checksum?(value) end class << self def valid_format?(iban) iban =~ /[A-Z]{2}[a-zA-Z0-9]{14,}/ ? true : false end 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 end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
bank-validator-0.3.2 | lib/bank_validator/iban.rb |
bank-validator-0.3.1 | lib/bank_validator/iban.rb |
bank-validator-0.3.0 | lib/bank_validator/iban.rb |