class Faker::Barcode

Public Class Methods

ean(length = 8) click to toggle source

Returns a EAN 8 or 13 digit format barcode number with check digit

@return [String]

@example
   Faker::Barcode.ean      => "85657526"
   Faker::Barcode.ean(8)   => "30152700"
   Faker::Barcode.ean(13)  => "2115190480285"

@faker.version 2.14.0

# File lib/faker/default/barcode.rb, line 16
def ean(length = 8)
  generate_barcode("barcode.ean_#{Integer(length)}")
end
ean_with_composite_symbology(length = 8) click to toggle source

Returns a EAN 8 or 13 digit format barcode number with composite string attached with check digit

@return [String]

@example
   Faker::Barcode.ean_with_composite_sumbology      => "41007624|JHOC6649"
   Faker::Barcode.ean_with_composite_sumbology(8)   => "38357961|XUYJ3266"
   Faker::Barcode.ean_with_composite_sumbology(13)  => "9530722443911|CKHWQHID"

@faker.version 2.14.0

# File lib/faker/default/barcode.rb, line 30
def ean_with_composite_symbology(length = 8)
  "#{ean(length)}|#{bothify(parse('barcode.composite_symbol'))}"
end
isbn() click to toggle source

Returns a ISBN format barcode number with check digit

@return [String]

@example
   Faker::Barcode.isbn      => "9798363807732"

@faker.version 2.14.0

# File lib/faker/default/barcode.rb, line 90
def isbn
  generate_barcode('barcode.isbn')
end
ismn() click to toggle source

Returns a ISMN format barcode number with check digit

@return [String]

@example
   Faker::Barcode.ismn      => "9790527672897"

@faker.version 2.14.0

# File lib/faker/default/barcode.rb, line 102
def ismn
  generate_barcode('barcode.ismn')
end
issn() click to toggle source

Returns a ISSN format barcode number with check digit

@return [String]

@example
   Faker::Barcode.issn      => "9775541703338"

@faker.version 2.14.0

# File lib/faker/default/barcode.rb, line 114
def issn
  generate_barcode('barcode.issn')
end
upc_a() click to toggle source

Returns a UPC_A format barcode number with check digit

@return [String]

@example
   Faker::Barcode.upc_a      => "766807541831"

@faker.version 2.14.0

# File lib/faker/default/barcode.rb, line 42
def upc_a
  generate_barcode('barcode.upc_a')
end
upc_a_with_composite_symbology() click to toggle source

Returns a UPC_A format barcode number with composite string attached with check digit

@return [String]

@example
   Faker::Barcode.upc_a_with_composite_symbology      => "790670155765|JOVG6208"

@faker.version 2.14.0

# File lib/faker/default/barcode.rb, line 66
def upc_a_with_composite_symbology
  "#{upc_a}|#{bothify(parse('barcode.composite_symbol'))}"
end
upc_e() click to toggle source

Returns a UPC_E format barcode number with check digit

@return [String]

@example
   Faker::Barcode.upc_e      => "03746820"

@faker.version 2.14.0

# File lib/faker/default/barcode.rb, line 54
def upc_e
  generate_barcode('barcode.upc_e')
end
upc_e_with_composite_symbology() click to toggle source

Returns a UPC_E format barcode number with composite string attached with check digit

@return [String]

@example
   Faker::Barcode.upc_e_with_composite_symbology      => "05149247|BKZX9722"

@faker.version 2.14.0

# File lib/faker/default/barcode.rb, line 78
def upc_e_with_composite_symbology
  "#{upc_e}|#{bothify(parse('barcode.composite_symbol'))}"
end

Private Class Methods

generate_barcode(key) click to toggle source
# File lib/faker/default/barcode.rb, line 120
def generate_barcode(key)
  barcode = parse(key)
  check_digit = generate_check_digit(*sum_even_odd(barcode))
  "#{barcode}#{check_digit}"
end
generate_check_digit(odd_sum, even_sum) click to toggle source

Generates the check digits from sum passed

@return [Integer]

@example

Faker::Barcode.send(:generate_check_digit, 12, 4)   => 0
Faker::Barcode.send(:generate_check_digit, 23, 5)   => 6

@faker.version 2.14.0

# File lib/faker/default/barcode.rb, line 160
def generate_check_digit(odd_sum, even_sum)
  (10 - (odd_sum * 3 + even_sum) % 10) % 10
end
sum_even_odd(fake_num) click to toggle source

Returns the sum of even and odd numbers from value passed

@return [Array]

@example

Faker::Barcode.send(:sum_even_odd, 12345)   => [9, 5]
Faker::Barcode.send(:sum_even_odd, 87465)   => [17, 13]

@faker.version 2.14.0

# File lib/faker/default/barcode.rb, line 136
def sum_even_odd(fake_num)
  number = fake_num.to_i
  sum_even, sum_odd = 0, 0, index = 1

  while number != 0
    index.even? ? sum_even += number % 10 : sum_odd += number % 10

    number /= 10
    index += 1
  end

  [sum_odd, sum_even]
end