class BrDocuments::Gtin
Public Class Methods
new(code)
click to toggle source
# File lib/br_documents/gtin.rb, line 3 def initialize(code) @code = code end
Public Instance Methods
valid?()
click to toggle source
# File lib/br_documents/gtin.rb, line 7 def valid? valid_length? && valid_checksum? end
Private Instance Methods
valid_checksum?()
click to toggle source
# File lib/br_documents/gtin.rb, line 17 def valid_checksum? numbers = @code[0, @code.length - 1].chars.reverse odd = even = 0 numbers.each_with_index do |number, i| (i + 1).even? ? (even += number.to_i) : (odd += number.to_i * 3) end @code[-1].to_i == ((10 - (odd + even)) % 10) end
valid_length?()
click to toggle source
# File lib/br_documents/gtin.rb, line 13 def valid_length? [8, 12, 13, 14].include?(@code.length) end