class SocialSecurityNumber::Cn

SocialSecurityNumber::Cn validates Chinese Resident Identity Card Number en.wikipedia.org/wiki/Resident_Identity_Card#Identity_card_number

Constants

CONTROLCIPHERS
DATE_REGEXP
MODULUS
REGEXP

Public Instance Methods

gender() click to toggle source
# File lib/social_security_number/country/cn.rb, line 21
def gender
  @gender = @individual.to_i.odd? ? :male : :female
end
validate() click to toggle source
# File lib/social_security_number/country/cn.rb, line 5
def validate
  @error = if !check_digits
             'it is not number'
           elsif !check_by_regexp(REGEXP)
             'bad number format'
           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/cn.rb, line 17
def year
  @year = @parsed_civil_number[:year].to_i
end

Private Instance Methods

check_control_sum() click to toggle source
# File lib/social_security_number/country/cn.rb, line 34
def check_control_sum
  count_last_number.to_i == @control_number.to_i
end
count_last_number() click to toggle source
# File lib/social_security_number/country/cn.rb, line 38
def count_last_number
  (12 - (calc_sum(@civil_number[0..16], CONTROLCIPHERS) % MODULUS)) % MODULUS
end