class Ibandit::GermanDetailsConverter::Rule000503::Check76
Public Class Methods
Source
# File lib/ibandit/german_details_converter.rb, line 291 def initialize(account_number) @account_number = account_number.rjust(10, "0") end
Public Instance Methods
Source
# File lib/ibandit/german_details_converter.rb, line 295 def valid? return false unless valid_length? && valid_account_type? [master_number[-1].to_i, 10].include?(remainder) end
Private Instance Methods
Source
# File lib/ibandit/german_details_converter.rb, line 303 def master_number @account_number.slice(1, 7).gsub(/\A0+/, "") end
Source
# File lib/ibandit/german_details_converter.rb, line 307 def remainder sum_of_weighted_values % 11 end
Source
# File lib/ibandit/german_details_converter.rb, line 311 def sum_of_weighted_values weighted_values.sum end
Source
# File lib/ibandit/german_details_converter.rb, line 323 def valid_account_type? [0, 4, 6, 7, 8, 9].include? @account_number[0].to_i end
Source
# File lib/ibandit/german_details_converter.rb, line 327 def valid_length? [5, 6, 7].include? master_number.size end
Source
# File lib/ibandit/german_details_converter.rb, line 315 def weighted_values weights = [2, 3, 4, 5, 6, 7, 8] master_number[0..-2].reverse.chars.map.with_index do |digit, i| digit.to_i * weights[i] end end