class SocialSecurityNumber::Country
Constants
- DATE_REGEXP
- SHORT_DATE2_REGEXP
- SHORT_DATE_REGEXP
Attributes
birth_date[RW]
civil_number[RW]
control_number[RW]
error[RW]
individual[RW]
Public Class Methods
new(civil_number)
click to toggle source
# File lib/social_security_number/country.rb, line 13 def initialize(civil_number) @civil_number = civil_number.to_s.upcase values_from_number if self.class.const_defined?('REGEXP') end
Public Instance Methods
digit_number()
click to toggle source
# File lib/social_security_number/country.rb, line 28 def digit_number @civil_number.gsub(/[^\d]/, '') end
gender()
click to toggle source
# File lib/social_security_number/country.rb, line 32 def gender return unless @parsed_civil_number.names.include?('gnd') @gender ||= @parsed_civil_number[:gnd].to_i.odd? ? :male : :female end
parsed_civil_number()
click to toggle source
# File lib/social_security_number/country.rb, line 24 def parsed_civil_number @parsed_civil_number ||= @civil_number.match(self.class::REGEXP) end
valid?()
click to toggle source
# File lib/social_security_number/country.rb, line 18 def valid? @error = nil validate @error.nil? end
Private Instance Methods
calc_sum(number, ciphers)
click to toggle source
# File lib/social_security_number/country.rb, line 39 def calc_sum(number, ciphers) digits = number.split(//) sum = 0 digits.each_with_index do |digit, i| sum += digit.to_i * ciphers[i].to_i end sum end
check_by_regexp(regexp)
click to toggle source
# File lib/social_security_number/country.rb, line 54 def check_by_regexp(regexp) return false unless @civil_number =~ regexp true end
check_digits()
click to toggle source
# File lib/social_security_number/country.rb, line 49 def check_digits return false unless @civil_number =~ /\A\d+\z/ true end
check_length(size)
click to toggle source
# File lib/social_security_number/country.rb, line 59 def check_length(size) return false unless @civil_number.length == size true end
date()
click to toggle source
# File lib/social_security_number/country.rb, line 80 def date year month day return unless @year && @month && @day && Date.valid_date?(@year, @month, @day) @birth_date = Date.new(@year, @month, @day) end
day()
click to toggle source
# File lib/social_security_number/country.rb, line 76 def day @day ||= value_from_parsed_civil_number('day').to_i end
month()
click to toggle source
# File lib/social_security_number/country.rb, line 72 def month @month ||= value_from_parsed_civil_number('month').to_i end
value_from_parsed_civil_number(key)
click to toggle source
# File lib/social_security_number/country.rb, line 89 def value_from_parsed_civil_number(key) return unless @parsed_civil_number.names.include?(key) @parsed_civil_number[key.to_sym].to_s end
values_from_number()
click to toggle source
# File lib/social_security_number/country.rb, line 94 def values_from_number parsed_civil_number return unless @parsed_civil_number @individual = value_from_parsed_civil_number('indv') @control_number = value_from_parsed_civil_number('ctrl') gender date end
year()
click to toggle source
# File lib/social_security_number/country.rb, line 64 def year return unless @parsed_civil_number.names.include?('year') current_year = Time.now.year % 100 offset_year = @parsed_civil_number[:year].to_i offset_year += 100 if offset_year && offset_year < current_year @year ||= 1900 + offset_year.to_i end