module RomanianValidators::Iban

Constants

USE_ORD

use ord for ruby >= 1.9

Public Instance Methods

transpose(iban) click to toggle source

replace letters according to algorithm algorithm conversion maps chars to ASCII value - 55

# File lib/romanianvalidators/iban.rb, line 19
def transpose(iban)
  iban.upcase.gsub(/[A-Z]/) do |s|
    USE_ORD ? (s[0].ord - 55).to_s : (s[0].to_i - 55).to_s
  end
end
valid?(iban) click to toggle source

Descrierea algoritmului: www.bnr.ro/files/d/Legislatie/EN/Reg_IBAN.pdf

# File lib/romanianvalidators/iban.rb, line 10
def valid?(iban)
  return false if iban.size < 3
  transpose((iban.slice(4, iban.size) + iban[0..3])).to_i % 97 == 1
rescue
  false
end