module BarcodeValidation::Mixin::HasCheckDigit
Wraps last as a CheckDigit
Constants
- MODULUS
Public Instance Methods
check_digit()
click to toggle source
# File lib/barcodevalidation/mixin/has_check_digit.rb, line 9 def check_digit GTIN::CheckDigit.new(last, expected: expected_check_digit) end
Private Instance Methods
checkable_digits()
click to toggle source
# File lib/barcodevalidation/mixin/has_check_digit.rb, line 26 def checkable_digits take(length - 1).reverse.map(&:to_i) end
expected_check_digit()
click to toggle source
# File lib/barcodevalidation/mixin/has_check_digit.rb, line 15 def expected_check_digit (MODULUS - weighted_checkable_digit_sum) % MODULUS end
weighted_checkable_digit_sum()
click to toggle source
# File lib/barcodevalidation/mixin/has_check_digit.rb, line 19 def weighted_checkable_digit_sum checkable_digits .zip([3, 1].cycle) .map { |digit, factor| digit * factor } .reduce(&:+) end