module BankAccounts::Mexico
Constants
- VERSION
Public Instance Methods
account_number_of(account_number)
click to toggle source
# File lib/bank_accounts/mexico.rb, line 53 def account_number_of(account_number) account_number[6...16] end
bank_code_of(account_number)
click to toggle source
# File lib/bank_accounts/mexico.rb, line 45 def bank_code_of(account_number) account_number[0..2] end
bank_data()
click to toggle source
# File lib/bank_accounts/mexico.rb, line 13 def bank_data ::YAML.load(File.open(File.join(root_dir, "data", "banks.yml"))) end
city_code_of(account_number)
click to toggle source
# File lib/bank_accounts/mexico.rb, line 49 def city_code_of(account_number) account_number[3..5] end
control_digit_of(account_number)
click to toggle source
# File lib/bank_accounts/mexico.rb, line 57 def control_digit_of(account_number) account_number[-1] end
find_bank_by_account_number(account_number)
click to toggle source
# File lib/bank_accounts/mexico.rb, line 23 def find_bank_by_account_number(account_number) find_bank_by_bank_code(bank_code_of(account_number)) end
find_bank_by_bank_code(bank_code)
click to toggle source
# File lib/bank_accounts/mexico.rb, line 17 def find_bank_by_bank_code(bank_code) bank_data.find do |bank| bank["abm_number"] == bank_code end end
find_bank_by_pattern_full_name(pattern)
click to toggle source
# File lib/bank_accounts/mexico.rb, line 39 def find_bank_by_pattern_full_name(pattern) bank_data.find do |bank| pattern.match(bank["full_name"]) end end
find_bank_by_pattern_fuzzy(pattern)
click to toggle source
# File lib/bank_accounts/mexico.rb, line 27 def find_bank_by_pattern_fuzzy(pattern) bank_data.find do |bank| pattern.match(bank["short_name"]) or pattern.match(bank["full_name"]) end end
find_bank_by_pattern_short_name(pattern)
click to toggle source
# File lib/bank_accounts/mexico.rb, line 33 def find_bank_by_pattern_short_name(pattern) bank_data.find do |bank| pattern.match(bank["short_name"]) end end
root_dir()
click to toggle source
# File lib/bank_accounts/mexico.rb, line 8 def root_dir spec = Gem::Specification.find_by_name("bank_accounts-mexico") spec.gem_dir end
valid_account_number?(account_number)
click to toggle source
# File lib/bank_accounts/mexico.rb, line 61 def valid_account_number?(account_number) def weight(position) case position % 3 when 0 3 when 1 7 when 2 1 end end return false unless find_bank_by_account_number(account_number) checksum = 0 account_number[0..16].chars.map(&:to_i).each_with_index do |number, i| checksum += (number * weight(i)) % 10 end return (10 - (checksum % 10)) % 10 == control_digit_of(account_number).to_i end
weight(position)
click to toggle source
# File lib/bank_accounts/mexico.rb, line 62 def weight(position) case position % 3 when 0 3 when 1 7 when 2 1 end end