class SocialSecurityNumber::Gb
SocialSecurityNumber::Gb
validates United Kingdom National Insurance number (NINO) and National Health Service number, CHI (Community Health Index) number en.wikipedia.org/wiki/National_identification_number#United_Kingdom
Constants
- CHI_REGEXP
- NHS_REGEXP
- NINO_REGEXP
Public Instance Methods
validate()
click to toggle source
# File lib/social_security_number/country/gb.rb, line 6 def validate @error = if !validate_formats 'bad number format' elsif check_length(10) && !(nhs_validation || chi_validation) 'bad CHI, NHS number' end end
Private Instance Methods
base_year(year)
click to toggle source
# File lib/social_security_number/country/gb.rb, line 44 def base_year(year) current_year = Time.now.year % 100 offset_year = year.to_i offset_year += 100 if year and offset_year < current_year 1900 + offset_year end
check_control_sum()
click to toggle source
# File lib/social_security_number/country/gb.rb, line 51 def check_control_sum count_last_number == @civil_number[9].to_i end
check_date()
click to toggle source
# File lib/social_security_number/country/gb.rb, line 36 def check_date day = @civil_number[0..1] month = @civil_number[2..3] year = @civil_number[4..6] Date.valid_date?(base_year(year).to_i, month.to_i, day.to_i) end
check_nino_format()
click to toggle source
# File lib/social_security_number/country/gb.rb, line 24 def check_nino_format check_by_regexp(NINO_REGEXP) && !check_by_regexp(/^(GB|BG|NK|KN|TN|NT|ZZ)/) end
chi_validation()
click to toggle source
# File lib/social_security_number/country/gb.rb, line 32 def chi_validation check_date end
count_last_number()
click to toggle source
# File lib/social_security_number/country/gb.rb, line 55 def count_last_number result_array = [] 9.times do |i| result_array << ((11 - (i + 1)) * @civil_number[i].to_i) end if (11 - (result_array.inject(:+) % 11)) == 10 return false else return 0 if result_array.inject(:+) % 11 == 0 return 11 - (result_array.inject(:+) % 11) end end
nhs_validation()
click to toggle source
# File lib/social_security_number/country/gb.rb, line 28 def nhs_validation check_control_sum end
validate_formats()
click to toggle source
# File lib/social_security_number/country/gb.rb, line 20 def validate_formats check_nino_format || check_by_regexp(NHS_REGEXP) || check_by_regexp(CHI_REGEXP) end