Class: BankTools::SE::Account
- Inherits:
-
Object
- Object
- BankTools::SE::Account
- Defined in:
- lib/banktools-se/account.rb,
lib/banktools-se/account/clearing_number.rb
Defined Under Namespace
Modules: ClearingNumber
Constant Summary collapse
- DEFAULT_SERIAL_NUMBER_LENGTH =
7
- CLEARING_NUMBER_MAP =
ClearingNumber::MAP
Instance Attribute Summary collapse
-
#number ⇒ Object
readonly
Returns the value of attribute number.
Instance Method Summary collapse
- #bank ⇒ Object
- #clearing_number ⇒ Object
- #errors ⇒ Object
-
#initialize(number) ⇒ Account
constructor
A new instance of Account.
- #normalize ⇒ Object
- #serial_number ⇒ Object
- #valid? ⇒ Boolean
Constructor Details
#initialize(number) ⇒ Account
Returns a new instance of Account.
15 16 17 |
# File 'lib/banktools-se/account.rb', line 15 def initialize(number) @number = number end |
Instance Attribute Details
#number ⇒ Object (readonly)
Returns the value of attribute number.
13 14 15 |
# File 'lib/banktools-se/account.rb', line 13 def number @number end |
Instance Method Details
#bank ⇒ Object
47 48 49 |
# File 'lib/banktools-se/account.rb', line 47 def bank bank_data[:name] end |
#clearing_number ⇒ Object
51 52 53 54 55 56 |
# File 'lib/banktools-se/account.rb', line 51 def clearing_number [ digits[0,4], checksum_for_clearing? ? digits[4,1] : nil ].compact.join("-") end |
#errors ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/banktools-se/account.rb', line 23 def errors errors = [] errors << Errors::TOO_SHORT if serial_number.length < min_length errors << Errors::TOO_LONG if serial_number.length > max_length errors << Errors::INVALID_CHARACTERS if number.to_s.match(/[^\d -]/) if luhn_for_serial? errors << Errors::BAD_CHECKSUM unless Utils.valid_luhn?(serial_number) end errors << Errors::UNKNOWN_CLEARING_NUMBER unless bank errors end |
#normalize ⇒ Object
39 40 41 42 43 44 45 |
# File 'lib/banktools-se/account.rb', line 39 def normalize if valid? [ clearing_number, serial_number ].join("-") else number end end |
#serial_number ⇒ Object
58 59 60 61 62 63 64 65 66 |
# File 'lib/banktools-se/account.rb', line 58 def serial_number number = digits.slice(clearing_number_length..-1) || "" if zerofill? number.rjust(serial_number_length, "0") else number end end |
#valid? ⇒ Boolean
19 20 21 |
# File 'lib/banktools-se/account.rb', line 19 def valid? errors.empty? end |