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