Sha256: 7151f09e7223efd6d234a4cf6d68833dc579e1c9001bb04f6ff34ed1c40af3c8
Contents?: true
Size: 1.02 KB
Versions: 1
Compression:
Stored size: 1.02 KB
Contents
module Faker class Finance < Base CREDIT_CARD_TYPES = %i[visa mastercard discover american_express diners_club jcb switch solo dankort maestro forbrugsforeningen laser].freeze class << self def credit_card(*types) types = CREDIT_CARD_TYPES if types.empty? type = sample(types) template = numerify(fetch("finance.credit_card.#{type}")) # calculate the luhn checksum digit multiplier = 1 luhn_sum = template.gsub(/[^0-9]/, '').split('').reverse.map(&:to_i).inject(0) do |sum, digit| multiplier = (multiplier == 2 ? 1 : 2) sum + (digit * multiplier).to_s.split('').map(&:to_i).inject(0) { |digit_sum, cur| digit_sum + cur } end # the sum plus whatever the last digit is must be a multiple of 10. So, the # last digit must be 10 - the last digit of the sum. luhn_digit = (10 - (luhn_sum % 10)) % 10 template.gsub('L', luhn_digit.to_s) end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
faker-1.9.1 | lib/faker/finance.rb |