class Faker::Code

def generate_base13_ean

def generate_base13_ean
  generate(:string) do |g|
    g.int(name: :values, length: 12)
    g.computed(name: :checksum, deps: [:values]) do |values|
      check_digit = 10 - values.to_s.chars.each_with_index.inject(0) { |s, (v, i)| s + v.to_i * EAN_CHECK_DIGIT13[i] } % 10
      if check_digit == 10
        0
      else
        check_digit
      end
    end
  end
end