class BankValidator::RoutingNumber

Attributes

value[RW]

Public Class Methods

new(routing_number) click to toggle source
# File lib/bank_validator/routing_number.rb, line 5
def initialize(routing_number)
  @value = routing_number
end
valid_format?(routing_number) click to toggle source
# File lib/bank_validator/routing_number.rb, line 20
def valid_format?(routing_number)
  routing_number =~ /^[0-9]{9}$/ ? true : false
end
valid_routing_number?(routing_number) click to toggle source
# File lib/bank_validator/routing_number.rb, line 14
def valid_routing_number?(routing_number)
  d = routing_number.each_char.to_a

  (BankValidator::RoutingNumber.weighted_value(1, d, [2, 5, 8]) + BankValidator::RoutingNumber.weighted_value(3, d, [0, 3, 6]) + BankValidator::RoutingNumber.weighted_value(7, d, [1, 4, 7])) % 10 == 0
end
weighted_value(weight, array, indexes) click to toggle source
# File lib/bank_validator/routing_number.rb, line 24
def weighted_value(weight, array, indexes)
  weight * array.values_at(*indexes).collect! {|v| v.to_i}.inject(:+)
end

Public Instance Methods

valid?() click to toggle source
# File lib/bank_validator/routing_number.rb, line 9
def valid?
  BankValidator::RoutingNumber.valid_format?(value) && BankValidator::RoutingNumber.valid_routing_number?(value)
end