class SocialSecurityNumber::No
SocialSecurityNumber::No
validates Norway eleven-digit birth number (fødselsnummer) en.wikipedia.org/wiki/National_identification_number#Norway
Constants
- CONTROLCIPHERS_1
- CONTROLCIPHERS_2
- MODULUS
- REGEXP
Public Instance Methods
day()
click to toggle source
# File lib/social_security_number/country/no.rb, line 33 def day @day = @parsed_civil_number[:day].to_i % 40 end
validate()
click to toggle source
# File lib/social_security_number/country/no.rb, line 5 def validate @error = if !check_by_regexp(REGEXP) 'bad number format' elsif !birth_date 'number birth date is invalid' elsif !check_control_digit_1 'first control code invalid' elsif !check_control_digit_2 'second control code invalid' end end
year()
click to toggle source
# File lib/social_security_number/country/no.rb, line 17 def year if @parsed_civil_number year_value = (@parsed_civil_number[:indv].to_i * 10 + @parsed_civil_number[:gnd].to_i).to_i base = case year_value when 000..499 then 1900 when 500..899 then @parsed_civil_number[:year].to_i >= 54 ? 1800 : 2000 when 900..999 then @parsed_civil_number[:year].to_i >= 40 ? 1900 : 2000 else 0 end @year = base + @parsed_civil_number[:year].to_i else 0 end end
Private Instance Methods
check_control_digit_1()
click to toggle source
# File lib/social_security_number/country/no.rb, line 46 def check_control_digit_1 ctrl = 11 - calc_sum(digit_number[0, 9], CONTROLCIPHERS_1) % MODULUS (ctrl % MODULUS).to_s == @civil_number[-2] end
check_control_digit_2()
click to toggle source
# File lib/social_security_number/country/no.rb, line 51 def check_control_digit_2 ctrl = 11 - calc_sum(digit_number[0, 10], CONTROLCIPHERS_2) % MODULUS (ctrl % MODULUS).to_s == @civil_number[-1] end