class DataMaker::Validators::ChineseNINValidator
Attributes
nin[RW]
Public Class Methods
new(nin)
click to toggle source
# File lib/data_maker/validators/chinese_nin_validator.rb, line 6 def initialize(nin) self.nin = nin end
valid?(*args)
click to toggle source
# File lib/data_maker/validators/chinese_nin_validator.rb, line 10 def self.valid?(*args) new(*args).valid? end
Public Instance Methods
valid?()
click to toggle source
# File lib/data_maker/validators/chinese_nin_validator.rb, line 14 def valid? raise ArgumentError, "Please pass a NIN to validate!" if nin.nil? valid_length? && valid_nin? end
valid_length?()
click to toggle source
# File lib/data_maker/validators/chinese_nin_validator.rb, line 19 def valid_length? nin.length == 18 end
valid_nin?()
click to toggle source
# File lib/data_maker/validators/chinese_nin_validator.rb, line 23 def valid_nin? checksum = 0 weights = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2] summod = [1, 0, "X", 9, 8, 7, 6, 5, 4, 3, 2] weights.each_with_index do |weight, i| checksum += (weight * nin[i].to_i) end nin[17] == summod[(checksum % 11)].to_s end