class Orgnummer

encoding: utf-8

Attributes

number[R]

Public Class Methods

new(number) click to toggle source
# 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

Public Instance Methods

==(orgnummer)
Alias for: eql?
eql?(orgnummer) click to toggle source
# File lib/orgnummer.rb, line 47
def eql?(orgnummer)
  self.class.equal?(orgnummer.class) &&
      number == orgnummer.number
end
Also aliased as: ==
hash() click to toggle source
# File lib/orgnummer.rb, line 54
def hash
  number.hash
end
to_s() click to toggle source
# 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() click to toggle source
# File lib/orgnummer.rb, line 43
def type_of_organization
  valid? ? get_type_from_first_char : :odefinierat
end
valid?() click to toggle source
# 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

Private Instance Methods

get_type_from_first_char() click to toggle source
# File lib/orgnummer.rb, line 60
def get_type_from_first_char
  case @number[0, 1]
    when '1'
      :dodsbo
    when '2'
      :stat_landsting_kommun_forsamling
    when '3'
      :utlandskt_foretag
    when '5'
      :aktiebolag
    when '6'
      :enkelt_bolag
    when '7'
      :ekonomisk_forening
    when '8'
      :ideell_forening_stiftelse
    when '9'
      :handels_kommanditbolag
    else
      :odefinierat
  end
end