Module: TaiwaneseUbnValidator

Defined in:
lib/taiwanese_ubn_validator.rb,
lib/taiwanese_ubn_validator/version.rb,
lib/taiwanese_ubn_validator/rails_validator.rb

Defined Under Namespace

Classes: RailsValidator

Constant Summary collapse

MULTIPLIER =
[1,2,1,2,1,2,4,1].freeze
VERSION =
'0.0.1'

Class Method Summary collapse

Class Method Details

.calculate_special_sum(digits) ⇒ Object



29
30
31
32
33
34
35
36
# 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) ⇒ Boolean

Returns:

  • (Boolean)


7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 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