class SocialSecurityNumber::Ie

SocialSecurityNumber::Ie validates Ireland Personal Public Service Number (PPS No) en.wikipedia.org/wiki/Personal_Public_Service_Number www.welfare.ie/en/Pages/Extension-of-the-Personal-Public-Service-Number-Range.aspx

Constants

CONTROLCIPHERS
MODULUS
REGEXP

Public Instance Methods

validate() click to toggle source
# File lib/social_security_number/country/ie.rb, line 6
def validate
  @error = if !check_by_regexp(REGEXP)
             'bad number format'
           elsif !check_control_simbol
             'number control sum invalid'
           end
end

Private Instance Methods

check_control_simbol() click to toggle source
# File lib/social_security_number/country/ie.rb, line 22
def check_control_simbol
  count_last_simbol.to_s == @control_number.to_s
end
count_last_simbol() click to toggle source
# File lib/social_security_number/country/ie.rb, line 26
def count_last_simbol
  sum = calc_sum(@individual, CONTROLCIPHERS)
  alfabet = %w[W A B C D E F G H I J K L M N O P Q R S U V]
  value = if @civil_number[-1] != @control_number.to_s
            alfabet.index(@civil_number[-1]).to_i
          else
            0
          end
  last_simbol = (sum + (value * 9)) % MODULUS
  'WABCDEFGHIJKLMNOPQRSTUV'[last_simbol]
end