module TwidValidator
Public Class Methods
valid?(twid, case_sensitive = true)
click to toggle source
# File lib/taiwanese_id_validator/twid_validator.rb, line 4 def self.valid?(twid, case_sensitive = true) twid = twid.upcase unless case_sensitive return false if twid.length != 10 return false if !( /[A-Z](1|2)\d{8}\z/ =~ twid ) characters = twid.chars digits = TwidMapping::TWID_LETTER[characters.shift] + characters.map(&:to_i) weighted_sum = calculate_weighted_sum(digits) return weighted_sum % 10 == 0 end
Private Class Methods
calculate_weighted_sum(digits)
click to toggle source
# File lib/taiwanese_id_validator/twid_validator.rb, line 20 def self.calculate_weighted_sum(digits) sum = 0 11.times do |i| m = digits[i] * TwidMapping::MULTIPLIER[i] sum += m end sum end