Class: Viitenumero::RFViite
- Inherits:
-
Object
- Object
- Viitenumero::RFViite
- Includes:
- ActiveModel::Validations
- Defined in:
- lib/viitenumero/rf_viite.rb
Overview
Note: Supports only ISO 11649 creditor references that are based on Finnish national reference numbers (see fi_viite). Does not support other SEPA countries.
Instance Attribute Summary collapse
-
#number ⇒ Object
readonly
Returns the value of attribute number.
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(s) ⇒ RFViite
constructor
A new instance of RFViite.
- #machine_format ⇒ Object
- #national_part ⇒ Object
- #paper_format ⇒ Object
- #to_fi ⇒ Object
- #to_s ⇒ Object
- #valid? ⇒ Boolean
Constructor Details
#initialize(s) ⇒ RFViite
Returns a new instance of RFViite.
12 13 14 |
# File 'lib/viitenumero/rf_viite.rb', line 12 def initialize(s) @number = format(s) end |
Instance Attribute Details
#number ⇒ Object (readonly)
Returns the value of attribute number.
10 11 12 |
# File 'lib/viitenumero/rf_viite.rb', line 10 def number @number end |
Class Method Details
.generate(base, add_fi_checksum: true) ⇒ Object
28 29 30 31 32 33 34 35 |
# File 'lib/viitenumero/rf_viite.rb', line 28 def self.generate(base, add_fi_checksum: true) base = (base || '').to_s.gsub(/\s+/, '') raise ArgumentError.new('must be a number') if base.match(/\A\d+\z/).nil? raise ArgumentError.new('must be between 3-19 chars long') if base.length < 3 || base.length > 19 base = base + FIViite.checksum(base) if add_fi_checksum RFViite.new('RF' + checksum(base) + base) end |
Instance Method Details
#machine_format ⇒ Object
20 21 22 |
# File 'lib/viitenumero/rf_viite.rb', line 20 def machine_format number end |
#national_part ⇒ Object
55 56 57 |
# File 'lib/viitenumero/rf_viite.rb', line 55 def national_part number[4..-1] end |
#paper_format ⇒ Object
16 17 18 |
# File 'lib/viitenumero/rf_viite.rb', line 16 def paper_format number.gsub(/.{4}(?=.)/, '\0 ') end |
#to_fi ⇒ Object
51 52 53 |
# File 'lib/viitenumero/rf_viite.rb', line 51 def to_fi FIViite.new(national_part) end |
#to_s ⇒ Object
47 48 49 |
# File 'lib/viitenumero/rf_viite.rb', line 47 def to_s machine_format end |
#valid? ⇒ Boolean
24 25 26 |
# File 'lib/viitenumero/rf_viite.rb', line 24 def valid? valid_format? and valid_length? and valid_checksum? and valid_national_checksum? end |