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