class UPC
Public Class Methods
complete(eleven)
click to toggle source
Purely for generating new UPC
numbers
# File lib/upc.rb 27 def self.complete(eleven) 28 eleven = eleven.to_s 29 return nil unless eleven.length == 11 && eleven.match(/\d{11}/) 30 31 arr = (0..10).to_a.collect do |i| 32 if (i+1).odd? 33 eleven[i,1].to_i * 3 34 else 35 eleven[i,1].to_i 36 end 37 end 38 sum = arr.inject { |sum, n| sum + n } 39 remainder = sum % 10 40 (remainder == 0) ? check = 0 : check = 10 - remainder 41 42 eleven + check.to_s 43 end
new(str)
click to toggle source
# File lib/upc.rb 13 def initialize(str) 14 @number = str.to_s 15 end
valid?(upc)
click to toggle source
# File lib/upc.rb 21 def self.valid?(upc) 22 upc = upc.to_s 23 upc.length == 12 && upc == UPC.complete(upc[0, 11]) 24 end
Public Instance Methods
to_ean()
click to toggle source
# File lib/upc.rb 45 def to_ean 46 return nil unless valid? 47 "0#{@number}" 48 end
valid?()
click to toggle source
# File lib/upc.rb 17 def valid? 18 UPC.valid? @number 19 end