Class: BankValidator::RoutingNumber

Inherits:
Object
  • Object
show all
Defined in:
lib/bank_validator/routing_number.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(routing_number) ⇒ RoutingNumber

Returns a new instance of RoutingNumber.



5
6
7
# File 'lib/bank_validator/routing_number.rb', line 5

def initialize(routing_number)
  @value = routing_number
end

Instance Attribute Details

#valueObject

Returns the value of attribute value.



3
4
5
# File 'lib/bank_validator/routing_number.rb', line 3

def value
  @value
end

Class Method Details

.valid_format?(routing_number) ⇒ Boolean

Returns:

  • (Boolean)


20
21
22
# 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) ⇒ Boolean

Returns:

  • (Boolean)


14
15
16
17
18
# 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) ⇒ Object



24
25
26
# 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

Instance Method Details

#valid?Boolean

Returns:

  • (Boolean)


9
10
11
# File 'lib/bank_validator/routing_number.rb', line 9

def valid?
  BankValidator::RoutingNumber.valid_format?(value) && BankValidator::RoutingNumber.valid_routing_number?(value)
end