class Faker::Code

def generate_base10_isbn

def generate_base10_isbn
  generate(:string) do |g|
    g.int(name: :values, length: 9)
    g.lit('-')
    g.computed(name: :checksum, deps: [:values]) do |values|
      remainder = sum(values.to_s) { |value, offset| (offset + 1) * value.to_i } % 11
      if remainder == 10
        'X'
      else
        remainder.to_s
      end
    end
  end
end