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
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 |