Sha256: 3d1f839f8a67058982c7296a4595b19624de18da76a9cce45a85f85f4b849444
Contents?: true
Size: 1.09 KB
Versions: 1
Compression:
Stored size: 1.09 KB
Contents
require "cpf_generator/version" module CpfGenerator class Cpf attr_accessor :numbers def initialize @numbers = [*0..9].sample(9) end def first_dv value = 0 down = [10,9,8,7,6,5,4,3,2] up = [0,1,2,3,4,5,6,7,8] 9.times do |n| value += @numbers[up[n]].to_i * down[n] end remainder = (value % 11) if remainder < 2 @numbers << 0 0 else @numbers << (11 - remainder) (11 - remainder) end end def second_dv value = 0 down = [11,10,9,8,7,6,5,4,3,2] up = [0,1,2,3,4,5,6,7,8,9] 10.times do |n| value += @numbers[up[n]].to_i * down[n] end remainder = (value % 11) if remainder < 2 @numbers << 0 0 else @numbers << (11 - remainder) (11 - remainder) end end def formatted first_dv second_dv cpf = @numbers.join("") "#{cpf[0..2]}.#{cpf[3..5]}.#{cpf[6..8]}-#{cpf[9..11]}" end def unformatted first_dv second_dv @numbers.join("") end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
cpf_generator-0.0.1 | lib/cpf_generator.rb |