module EdaCPFbr

Constants

VERSION

Public Class Methods

dig1() click to toggle source
# File lib/edacpfbr.rb, line 21
def self.dig1
  @cpf[9]
end
dig2() click to toggle source
# File lib/edacpfbr.rb, line 25
def self.dig2
  @cpf[10]
end
digito(bloco) click to toggle source
# File lib/edacpfbr.rb, line 39
def self.digito(bloco)
      total = 0
      (1..9).each do |i|
        ind = i - 1
        d = bloco[ind].to_i
        total += d*i
      end
      r = total % 11
      (r>9) ? 0 : r        
end
digito_contextual(bloco) click to toggle source
# File lib/edacpfbr.rb, line 50
def self.digito_contextual(bloco)
  dig = digito(bloco)
  return dig if valids
  dig = dig + 1
  dig > 9 ? 0 : dig
end
digito_correto(bloco,dig) click to toggle source
# File lib/edacpfbr.rb, line 35
def self.digito_correto(bloco,dig)
      digito(bloco) == dig.to_i
end
gerar_lote(qnt) click to toggle source
# File lib/edacpfbr.rb, line 67
def self.gerar_lote(qnt)
  lote = Array.new
  lote_blocos(qnt).each do |bloco1|
    dig1 = digito_contextual(bloco1)
    bloco2 = "#{bloco1}#{dig1}"[1..9]
    dig2 = digito(bloco2)
    @cpf = "#{bloco1}#{dig1}#{dig2}"
    lote.push(@cpf)
  end
  lote
end
gerar_lote_invalido(qnt) click to toggle source
# File lib/edacpfbr.rb, line 62
def self.gerar_lote_invalido(qnt)
  set_valids(false)
  gerar_lote(qnt)
end
gerar_lote_valido(qnt) click to toggle source
# File lib/edacpfbr.rb, line 57
def self.gerar_lote_valido(qnt)
  set_valids(true)
  gerar_lote(qnt)
end
lote_blocos(qnt) click to toggle source
# File lib/edacpfbr.rb, line 79
def self.lote_blocos(qnt)
  blocos = Array.new
  while (blocos.length < qnt) do
    @cpf = ""
    (1..9).each do |n|
      @cpf = "#{@cpf}#{rand(10)}"
    end
    blocos.push(@cpf) if not blocos.include?(@cpf)
  end
  blocos
end
primeiro_bloco() click to toggle source
# File lib/edacpfbr.rb, line 13
def self.primeiro_bloco
  @cpf[0..8]
end
segundo_bloco() click to toggle source
# File lib/edacpfbr.rb, line 17
def self.segundo_bloco
  @cpf[1..9]
end
set_valids(v) click to toggle source
# File lib/edacpfbr.rb, line 95
def self.set_valids(v)
  @valids = v
end
validar(cpf) click to toggle source
# File lib/edacpfbr.rb, line 5
def self.validar(cpf)
      return false if cpf.length < 11
      @cpf = cpf
      return false if not digito_correto(primeiro_bloco,dig1)
      return false if not digito_correto(segundo_bloco,dig2)
      true
end
validar_lote(lote) click to toggle source
# File lib/edacpfbr.rb, line 29
def self.validar_lote(lote)
      retorno_lote = Hash.new 
      lote.each{ |cpf| retorno_lote[cpf] = validar(cpf) }
      retorno_lote
end
valids() click to toggle source
# File lib/edacpfbr.rb, line 91
def self.valids
  @valids
end