4 MINDS

4MINDS Gestão de Conhecimento

Validação de CPF com Coffee Script





isValidCpf = (cpf) ->

  if !cpf
    return false

  cpf = cpf.replace(/\D/g,'')

  if cpf.length != 11
    return false

  soma = 0
  resto = 0

  invalidos = [
    "00000000000",
    "11111111111",
    "22222222222",
    "33333333333",
    "44444444444",
    "55555555555",
    "66666666666",
    "77777777777",
    "88888888888",
    "99999999999",
  ]

  if cpf in invalidos
    return false
 
  for i in [1...10]  by 1
    soma = soma + parseInt(cpf.substring(i-1, i)) * (11 - i)

  resto = (soma * 10) % 11

  if resto == 10 || resto == 11
    resto = 0

  if resto != parseInt(cpf.substring(9, 10))
    return false

  soma = 0

  for i in [1...11]  by 1
    soma = soma + parseInt(cpf.substring(i-1, i)) * (12 - i);

  resto = (soma * 10) % 11

  if resto == 10 || resto == 11
    resto = 0

  if resto != parseInt(cpf.substring(10, 11))
    return false

  return true