module TaiwaneseUbnValidator
Constants
- MULTIPLIER
- VERSION
Public Class Methods
calculate_special_sum(digits)
click to toggle source
@digits - Array of Integers
# File lib/taiwanese_ubn_validator.rb, line 29 def self.calculate_special_sum(digits) sum = 0 8.times do |i| m = digits[i] * MULTIPLIER[i] sum += m.divmod(10).inject(0, &:+) end sum end
valid?(ubn)
click to toggle source
@ubn - 8 digits string
# File lib/taiwanese_ubn_validator.rb, line 7 def self.valid?(ubn) ubn = ubn.to_s return false if ubn.length != 8 return false if !( ubn =~ /^\d+$/ ) digits = ubn.chars.map(&:to_i) special_sum = calculate_special_sum(digits) if special_sum % 10 == 0 return true else if digits[6] == 7 && special_sum % 10 == 9 return true else return false end end end