Class: Nacha::AbaNumber
- Inherits:
-
Object
- Object
- Nacha::AbaNumber
- Includes:
- HasErrors
- Defined in:
- lib/nacha/aba_number.rb
Instance Attribute Summary collapse
-
#aba_number ⇒ Object
readonly
Returns the value of attribute aba_number.
-
#routing_number ⇒ Object
Returns the value of attribute routing_number.
Attributes included from HasErrors
Instance Method Summary collapse
- #add_check_digit ⇒ Object
- #check_digit ⇒ Object
- #compute_check_digit ⇒ Object
-
#initialize(routing_number) ⇒ AbaNumber
constructor
A new instance of AbaNumber.
- #to_s(with_checkdigit = true) ⇒ Object
- #valid? ⇒ Boolean
- #valid_check_digit? ⇒ Boolean
- #valid_routing_number_length? ⇒ Boolean
Methods included from HasErrors
Constructor Details
#initialize(routing_number) ⇒ AbaNumber
Returns a new instance of AbaNumber.
10 11 12 13 |
# File 'lib/nacha/aba_number.rb', line 10 def initialize(routing_number) @errors = [] self.routing_number = routing_number end |
Instance Attribute Details
#aba_number ⇒ Object (readonly)
Returns the value of attribute aba_number.
6 7 8 |
# File 'lib/nacha/aba_number.rb', line 6 def aba_number @aba_number end |
#routing_number ⇒ Object
Returns the value of attribute routing_number.
6 7 8 |
# File 'lib/nacha/aba_number.rb', line 6 def routing_number @routing_number end |
Instance Method Details
#add_check_digit ⇒ Object
30 31 32 |
# File 'lib/nacha/aba_number.rb', line 30 def add_check_digit @routing_number = @routing_number[0..7] + compute_check_digit end |
#check_digit ⇒ Object
34 35 36 37 38 |
# File 'lib/nacha/aba_number.rb', line 34 def check_digit return unless @routing_number.length == 9 && compute_check_digit == @routing_number[8] @routing_number[8] end |
#compute_check_digit ⇒ Object
15 16 17 18 19 20 21 22 |
# File 'lib/nacha/aba_number.rb', line 15 def compute_check_digit n = @routing_number.to_s.strip.ljust(8, '0').chars.collect(&:to_i) sum = (3 * (n[0] + n[3] + n[6])) + (7 * (n[1] + n[4] + n[7])) + (n[2] + n[5]) intermediate = (sum % 10) intermediate.zero? ? '0' : (10 - intermediate).to_s end |
#to_s(with_checkdigit = true) ⇒ Object
74 75 76 77 78 79 80 |
# File 'lib/nacha/aba_number.rb', line 74 def to_s(with_checkdigit = true) if with_checkdigit @routing_number else @routing_number[0..7] end end |
#valid? ⇒ Boolean
40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/nacha/aba_number.rb', line 40 def valid? @valid ||= if valid_routing_number_length? if @routing_number.length == 9 valid_check_digit? else # 8 digits is valid true end else false end end |
#valid_check_digit? ⇒ Boolean
64 65 66 67 68 69 70 71 72 |
# File 'lib/nacha/aba_number.rb', line 64 def valid_check_digit? if compute_check_digit != @routing_number[8] add_error("Incorrect Check Digit \"#{@routing_number[8]}\" should be " \ "\"#{compute_check_digit}\"") false else true end end |
#valid_routing_number_length? ⇒ Boolean
52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/nacha/aba_number.rb', line 52 def valid_routing_number_length? actual_length = @routing_number.length if [9, 10].include?(actual_length) true else add_error("Routing number must be 8 or 9 digits long, but was " \ "#{actual_length} digits long.") false end end |