class SocialSecurityNumber::Ee

SocialSecurityNumber::Ee validates Estonian Personal ID numbers (isikukood (IK)) en.wikipedia.org/wiki/National_identification_number#Estonia et.wikipedia.org/wiki/Isikukood

Constants

CONTROLCIPHERS
CONTROLCIPHERS2
MODULUS
REGEXP

Public Instance Methods

validate() click to toggle source
# File lib/social_security_number/country/ee.rb, line 6
def validate
  @error = if !check_digits
             'it is not number'
           elsif !check_length(11)
             'number should be length of 11'
           elsif @parsed_civil_number[:gnd].to_i > 8
             'gender number is not recognized'
           elsif !birth_date
             'number birth date is invalid'
           elsif !check_control_sum
             'number control sum invalid'
           end
end
year() click to toggle source
# File lib/social_security_number/country/ee.rb, line 20
def year
  if @parsed_civil_number
    base = case @parsed_civil_number[:gnd].to_i
           when 1..2 then 1800
           when 3..4 then 1900
           when 5..6 then 2000
           when 7..8 then 2100
           else
             0
           end
    @year = base + @parsed_civil_number[:year].to_i
  else
    0
  end
end

Private Instance Methods

check_control_sum() click to toggle source
# File lib/social_security_number/country/ee.rb, line 45
def check_control_sum
  count_last_number == @control_number.to_i
end
count_last_number() click to toggle source
# File lib/social_security_number/country/ee.rb, line 49
def count_last_number
  sum = calc_sum(@civil_number[0..9], CONTROLCIPHERS)
  last_number = sum % MODULUS
  return last_number unless last_number == 10
  sum = calc_sum(@civil_number[0..9], CONTROLCIPHERS2)
  last_number = sum % MODULUS
  last_number == 10 ? 0 : last_number
end