Sha256: 9611ccd021205e1ac38a515a5ef433b464f825ff07570191342c96915863dff7

Contents?: true

Size: 990 Bytes

Versions: 12

Compression:

Stored size: 990 Bytes

Contents

require 'faker'
require 'faker/address'
require 'faker/company'
require 'faker/internet'
require 'faker/lorem'
require 'faker_extension_fr/name'
require 'faker_extension_fr/company'
require 'faker_extension_fr/phone_number'
require 'faker_extension_fr/address'
require 'faker_extension_fr/version'

module FakerExtensionFr
    class Luhn
    def self.checksum(number) 
      products = luhn_doubled(number)
      sum = products.inject { |t,p| t + sum_of(p) }
      checksum = 10 - (sum % 10)
      checksum == 10 ? 0 : checksum
    end
    def self.luhn_doubled(number)
      numbers = split_digits(number).reverse
      numbers.map.with_index do |n,i|
        i.even? ? n*2 : n*1
      end.reverse
    end
    def self.sum_of(number)
      split_digits(number).inject(:+)
    end
    def self.valid?(number)
      numbers = split_digits(number)
      numbers.pop == checksum(numbers.join)
    end
    def self.split_digits(number)
      number.to_s.split(//).map(&:to_i)
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
faker_extension_fr-0.0.16 lib/faker_extension_fr.rb
faker_extension_fr-0.0.15 lib/faker_extension_fr.rb
faker_extension_fr-0.0.14 lib/faker_extension_fr.rb
faker_extension_fr-0.0.12 lib/faker_extension_fr.rb
faker_extension_fr-0.0.11 lib/faker_extension_fr.rb
faker_extension_fr-0.0.10 lib/faker_extension_fr.rb
faker_extension_fr-0.0.9 lib/faker_extension_fr.rb
faker_extension_fr-0.0.8 lib/faker_extension_fr.rb
faker_extension_fr-0.0.7 lib/faker_extension_fr.rb
faker_extension_fr-0.0.6 lib/faker_extension_fr.rb
faker_extension_fr-0.0.5 lib/faker_extension_fr.rb
faker_extension_fr-0.0.4 lib/faker_extension_fr.rb