class SocialSecurityNumber::Dk

SocialSecurityNumber::Dk validates Denmark Personal Identification Number (Det Centrale Personregister (CPR)) en.wikipedia.org/wiki/National_identification_number#Denmark

Constants

CONTROLCIPHERS
FEMALE_SEEDS
MALE_SEEDS
MODULUS_1968
MODULUS_2007
REGEXP

Public Instance Methods

validate() click to toggle source
# File lib/social_security_number/country/dk.rb, line 5
def validate
  @error = if !check_by_regexp(REGEXP)
             'bad number format'
           elsif !birth_date
             'number birth date is invalid'
           elsif !valid_1968 && !valid_2007
             'control code invalid'
           end
end

Private Instance Methods

valid_1968() click to toggle source
# File lib/social_security_number/country/dk.rb, line 36
def valid_1968
  sum = calc_sum(digit_number, CONTROLCIPHERS)
  (sum % MODULUS_1968).zero?
end
valid_2007() click to toggle source
# File lib/social_security_number/country/dk.rb, line 41
def valid_2007
  control = digit_number[6, 4].to_i
  rem2007 = control % MODULUS_2007
  series = FEMALE_SEEDS[rem2007] || MALE_SEEDS[rem2007]
  series.include?(control)
end