Class: EAN8

Inherits:
Object
  • Object
show all
Defined in:
lib/ean8.rb

Defined Under Namespace

Classes: Version

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(str) ⇒ EAN8

Returns a new instance of EAN8.



12
13
14
# File 'lib/ean8.rb', line 12

def initialize(str)
  @number = str.to_s
end

Class Method Details

.complete(seven) ⇒ Object

Purely for generating new ean numbers



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/ean8.rb', line 26

def self.complete(seven)
  seven = seven.to_s
  return nil unless seven.length == 7 && seven.match(/\d{7}/)

  arr = (0..6).to_a.collect do |i|
    if (i+1) % 2 == 0
      seven[i,1].to_i
    else
      seven[i,1].to_i * 3
    end
  end
  sum = arr.inject { |sum, n| sum + n }
  remainder = sum % 10
  if remainder == 0
    check = 0
  else
    check = 10 - remainder
  end

  seven + check.to_s
end

.valid?(ean) ⇒ Boolean

Returns:

  • (Boolean)


20
21
22
23
# File 'lib/ean8.rb', line 20

def self.valid?(ean)
  ean = ean.to_s
  ean.length == 8 && ean == EAN8.complete(ean[0,7])
end

Instance Method Details

#to_eanObject



48
49
50
51
# File 'lib/ean8.rb', line 48

def to_ean
  return nil unless self.valid?
  "00000#{@number}"
end

#to_gtinObject



53
54
55
56
# File 'lib/ean8.rb', line 53

def to_gtin
  return nil unless self.valid?
  "000000#{@number}"
end

#valid?Boolean

Returns:

  • (Boolean)


16
17
18
# File 'lib/ean8.rb', line 16

def valid?
  EAN8.valid? @number
end