Sha256: 47cdf5029e48ebb5095164ad208b2b2196f7ed400c3b90edc600a9d1c1690795

Contents?: true

Size: 734 Bytes

Versions: 2

Compression:

Stored size: 734 Bytes

Contents

module Faker
  module CreditCard
    module Generator
      def generate_number(prefix, max_length)
        ccnum = prefix.to_s

        while ccnum.size < (max_length - 1)
          ccnum += Random.rand(10).to_s
        end

        sum = 0
        reversed_ccnum = ccnum.reverse

        reversed_ccnum.size.times.each do |index|
          if index.odd?
            sum += reversed_ccnum[index].to_i
          else
            double = reversed_ccnum[index].to_i * 2

            double.fdiv(10).to_s.split(".").each do |n|
              sum += n.to_i
            end
          end
        end

        mod = sum % 10
        check_digit = mod.zero? ? mod : (10 - mod)

        ccnum += check_digit.to_s
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
faker_credit_card-0.0.2 lib/faker_credit_card/generator.rb
faker_credit_card-0.0.1 lib/faker_credit_card/generator.rb