String.class_eval do # This thing calculates IBAN for Czech/Slovak accounts. # Please note that garbage in means garbage out. # # Author:: Jirka Pech # Copyright:: 1core, s.r.o. def iban(i_country = 'CZ') # Garbage in means garbage out, so you should check what you are doing. country = i_country.upcase bankaccount, bankcode = self.tr(' ', '').tr('-', '').split('/') x_account = bankcode.rjust(4, '0') + bankaccount.rjust(16, '0') \ + (country[0].to_i - 55).to_s + (country[1].to_i - 55).to_s + '00' country + (98 - x_account.to_i % 97).to_s.rjust(2, '0') + x_account[0..19] end end