class EAN8
Public Class Methods
complete(seven)
click to toggle source
Purely for generating new ean numbers
# File lib/ean8.rb 27 def self.complete(seven) 28 seven = seven.to_s 29 return nil unless seven.length == 7 && seven.match(/\d{7}/) 30 31 arr = (0..6).to_a.collect do |i| 32 if (i+1) % 2 == 0 33 seven[i,1].to_i 34 else 35 seven[i,1].to_i * 3 36 end 37 end 38 sum = arr.inject { |sum, n| sum + n } 39 remainder = sum % 10 40 if remainder == 0 41 check = 0 42 else 43 check = 10 - remainder 44 end 45 46 seven + check.to_s 47 end
new(str)
click to toggle source
# File lib/ean8.rb 13 def initialize(str) 14 @number = str.to_s 15 end
valid?(ean)
click to toggle source
# File lib/ean8.rb 21 def self.valid?(ean) 22 ean = ean.to_s 23 ean.length == 8 && ean == EAN8.complete(ean[0,7]) 24 end
Public Instance Methods
to_ean()
click to toggle source
# File lib/ean8.rb 49 def to_ean 50 return nil unless self.valid? 51 "00000#{@number}" 52 end
to_gtin()
click to toggle source
# File lib/ean8.rb 54 def to_gtin 55 return nil unless self.valid? 56 "000000#{@number}" 57 end
valid?()
click to toggle source
# File lib/ean8.rb 17 def valid? 18 EAN8.valid? @number 19 end