Class: Orgnummer
- Inherits:
-
Object
- Object
- Orgnummer
- Defined in:
- lib/orgnummer.rb
Instance Attribute Summary collapse
-
#number ⇒ Object
readonly
Returns the value of attribute number.
Instance Method Summary collapse
- #eql?(orgnummer) ⇒ Boolean (also: #==)
- #hash ⇒ Object
-
#initialize(number) ⇒ Orgnummer
constructor
A new instance of Orgnummer.
- #to_s ⇒ Object
- #type_of_organization ⇒ Object
- #valid? ⇒ Boolean
Constructor Details
#initialize(number) ⇒ Orgnummer
Returns a new instance of Orgnummer.
6 7 8 9 10 11 12 13 14 |
# File 'lib/orgnummer.rb', line 6 def initialize(number) @number = number.to_s if !@number.nil? && !@number.empty? # hyphen is ok, but remove it to pass validation algorithm @number = @number.gsub(/-/, '') # strip, we are kind and helpful @number = @number.strip end end |
Instance Attribute Details
#number ⇒ Object (readonly)
Returns the value of attribute number.
4 5 6 |
# File 'lib/orgnummer.rb', line 4 def number @number end |
Instance Method Details
#eql?(orgnummer) ⇒ Boolean Also known as: ==
47 48 49 50 |
# File 'lib/orgnummer.rb', line 47 def eql?(orgnummer) self.class.equal?(orgnummer.class) && number == orgnummer.number end |
#hash ⇒ Object
54 55 56 |
# File 'lib/orgnummer.rb', line 54 def hash number.hash end |
#to_s ⇒ Object
39 40 41 |
# File 'lib/orgnummer.rb', line 39 def to_s self.valid? ? @number[0..5] + '-' + @number[6..10] : "Not a valid number: #{@number}" end |
#type_of_organization ⇒ Object
43 44 45 |
# File 'lib/orgnummer.rb', line 43 def type_of_organization valid? ? get_type_from_first_char : :odefinierat end |
#valid? ⇒ Boolean
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/orgnummer.rb', line 16 def valid? valid = false if !@number.nil? && !@number.empty? if (@number =~/\A\d{10}\z/) == 0 multiplier = 2 sum = 0 @number[0...9].each_char do |n| part = (n.to_i * multiplier).to_s sum += part.length == 1 ? part.to_i : part[0].to_i + part[1].to_i multiplier = multiplier == 1 ? 2 : 1 end checksum = (10 - sum.modulo(10)).modulo(10) valid = checksum == @number[-1, 1].to_i end end valid end |