class SocialSecurityNumber::Lt

SocialSecurityNumber::Lt validates Lithuania Personal Code (Asmens kodas) en.wikipedia.org/wiki/National_identification_number#Lithuania

Constants

CONTROLCIPHERS_1
CONTROLCIPHERS_2
MODULUS
REGEXP

Public Instance Methods

validate() click to toggle source
# File lib/social_security_number/country/lt.rb, line 5
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 > 6
             '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/lt.rb, line 19
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
           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/lt.rb, line 43
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/lt.rb, line 47
def count_last_number
  sum = calc_sum(@civil_number[0..9], CONTROLCIPHERS_1)
  last_number = sum % MODULUS
  return last_number if last_number < 10
  sum = calc_sum(@civil_number[0..9], CONTROLCIPHERS_2)
  last_number = sum % MODULUS
  return last_number if last_number < 10
  0
end