class Ibanvalidator::IBAN
Attributes
errors[RW]
Public Class Methods
canonicalize_code( code )
click to toggle source
# File lib/ibanvalidator/iban.rb, line 50 def self.canonicalize_code( code ) code.to_s.strip.gsub(/\s+/, '').upcase end
default_rules()
click to toggle source
Load and cache the default rules from rules.yml
# File lib/ibanvalidator/iban.rb, line 55 def self.default_rules Ibanvalidator.default_rules end
from_local(country_code, data)
click to toggle source
# File lib/ibanvalidator/iban.rb, line 59 def self.from_local(country_code, data) Conversion.local2iban country_code, data end
new( code )
click to toggle source
# File lib/ibanvalidator/iban.rb, line 12 def initialize( code ) @code = IBAN.canonicalize_code(code) end
valid?( code, rules = nil )
click to toggle source
quick_check Ibanvalidator::IBAN.valid?
(“DE89370400440532013000”)
# File lib/ibanvalidator/iban.rb, line 8 def self.valid?( code, rules = nil ) new(code).valid?(rules) end
Public Instance Methods
bban()
click to toggle source
# File lib/ibanvalidator/iban.rb, line 40 def bban @code[4..-1] end
check_digits()
click to toggle source
# File lib/ibanvalidator/iban.rb, line 36 def check_digits @code[2..3] end
code()
click to toggle source
The code in canonical form, suitable for storing in a database or sending over the wire
# File lib/ibanvalidator/iban.rb, line 28 def code @code end
country_code()
click to toggle source
# File lib/ibanvalidator/iban.rb, line 32 def country_code @code[0..1] end
numerify()
click to toggle source
# File lib/ibanvalidator/iban.rb, line 103 def numerify #Diese setzt sich aus #BBAN (in Deutschland z. B. 18 Stellen) + Länderkürzel kodiert + Prüfsumme zusammen. #Dabei werden die beiden Buchstaben des Länderkürzels sowie weitere etwa in der Kontonummer enthaltene Buchstaben durch ihre Position im lateinischen Alphabet + 9 ersetzt #(A = 10, B = 11, …, Z = 35). numerified = "" (@code[4..-1] + @code[0..3]).each_byte do |byte| numerified += case byte # 0..9 when 48..57 then byte.chr # 'A'..'Z' when 65..90 then (byte - 55).to_s # 55 = 'A'.ord + 10 else raise RuntimeError.new("Unexpected byte '#{byte}' in IBAN code '#{prettify}'") end end numerified end
prettify()
click to toggle source
The IBAN
code in a human-readable format
# File lib/ibanvalidator/iban.rb, line 73 def prettify @code.gsub(/(.{4})/, '\1 ').strip end
sepa_scheme?()
click to toggle source
# File lib/ibanvalidator/iban.rb, line 45 def sepa_scheme? Ibanvalidator.sepa_countries.include? country_code end
to_local(leading_zero=false)
click to toggle source
mit ignore_zero fasle werdnen die führenden nullen mit ausgegeben
# File lib/ibanvalidator/iban.rb, line 64 def to_local(leading_zero=false) Conversion.iban2local country_code, bban, leading_zero end
to_s()
click to toggle source
# File lib/ibanvalidator/iban.rb, line 68 def to_s "#<#{self.class}: #{prettify}>" end
valid?(rules = nil)
click to toggle source
instanz
# File lib/ibanvalidator/iban.rb, line 21 def valid?(rules = nil) errors(rules).empty? end
valid_check_digits?()
click to toggle source
Pruefdsummen siehe https://de.wikipedia.org/wiki/IBAN#Validierung_der_Pr.C3.BCfsum
Nun wird der Rest berechnet, der sich beim ganzzahligen Teilen der Zahl durch 97 ergibt (Modulo 97).
# File lib/ibanvalidator/iban.rb, line 98 def valid_check_digits? ##Das Ergebnis muss 1 sein, ansonsten ist die IBAN falsch. numerify.to_i % 97 == 1 end
validation_errors( rules = nil )
click to toggle source
# File lib/ibanvalidator/iban.rb, line 77 def validation_errors( rules = nil ) errors = [] return [:iban_too_short] if @code.size < 5 return [:iban_too_long] if @code.size > 34 return [:iban_bad_chars] unless @code =~ /^[A-Z0-9]+$/ errors += validation_errors_against_rules( rules || Ibanvalidator.default_rules ) errors << :iban_bad_check_digits unless valid_check_digits? errors end
validation_errors_against_rules( rules )
click to toggle source
# File lib/ibanvalidator/iban.rb, line 88 def validation_errors_against_rules( rules ) errors = [] return [:iban_unknown_country_code] if rules[country_code].nil? errors << :iban_bad_length if rules[country_code]["length"] != @code.size errors << :iban_bad_format unless bban =~ rules[country_code]["bban_pattern"] errors end