Módulo para validação e geração de CPF (Cadastro de Pessoa Física), documento de identificação pessoal brasileiro.
O CPF é um número de 11 dígitos que identifica uma pessoa física no Brasil. Este módulo fornece funções para:
O CPF utiliza um algoritmo de validação com 2 dígitos verificadores calculados através do módulo 11:
Primeiro dígito verificador:
Segundo dígito verificador:
(cpf/is-valid? cpf-string)
Valida um CPF com ou sem formatação.
Argumentos:
cpf-string (string): CPF a validar, com ou sem formataçãoRetorna:
true se válido, false caso contrárioExemplos:
(cpf/is-valid? "123.456.789-09") ; => true/false
(cpf/is-valid? "12345678909") ; => true/false
(cpf/is-valid? "111.111.111-11") ; => false (sequência repetida)
Notas:
(cpf/format-cpf cpf-string)
Formata um CPF no padrão brasileiro XXX.XXX.XXX-XX.
Argumentos:
cpf-string (string): CPF a formatar (com ou sem formatação)Retorna:
Exemplos:
(cpf/format-cpf "12345678909") ; => "123.456.789-09"
(cpf/format-cpf "123.456.789-09") ; => "123.456.789-09"
(cpf/generate)
(cpf/generate {:uf-code :SP})
Gera um CPF válido aleatoriamente.
Argumentos:
:uf-code (opcional, keyword): Código do estado (UF) que define o 9º dígito
:AC, :AL, :AP, :AM, :BA, :CE, :DF, :ES, :GO, :MA, :MT, :MS, :MG, :PA, :PB, :PR, :PE, :PI, :RJ, :RN, :RS, :RO, :RR, :SC, :SP, :SE, :TORetorna:
Exemplos:
(cpf/generate) ; => "12345678909" (aleatório)
(cpf/generate {:uf-code :SP}) ; => CPF com código :SP (8)
(cpf/generate {:uf-code :RJ}) ; => CPF com código :RJ (5)
(cpf/generate {:uf-code :MG}) ; => CPF com código :MG (1)
Códigos UF:
(cpf/validation-errors cpf-string)
Retorna uma lista de erros de validação do CPF.
Argumentos:
cpf-string (string): CPF a validarRetorna:
Exemplos:
(cpf/validation-errors "123.456.789-09") ; => [] ou ["Invalid check digit"]
(cpf/validation-errors "123") ; => ["Invalid length"]
(cpf/validation-errors "111.111.111-11") ; => ["CPF with all equal digits"]
(cpf/validation-errors "123")
; => ["Invalid length"]
(cpf/validation-errors "123.456.789-00")
; => ["Invalid check digit"]
(cpf/validation-errors "111.111.111-11")
; => ["CPF with all equal digits"]
(defn validate-cpf-input [cpf-input]
(if (cpf/is-valid? cpf-input)
{:status :valid :cpf (cpf/format-cpf cpf-input)}
{:status :invalid :errors (cpf/validation-errors cpf-input)}))
(validate-cpf-input "123.456.789-09")
; => {:status :valid :cpf "123.456.789-09"} ou
; => {:status :invalid :errors ["Invalid check digit"]}
; Gerar 10 CPFs válidos para testes
(def test-cpfs
(repeatedly 10 #(cpf/format-cpf (cpf/generate))))
; Gerar CPFs de um estado específico
(def sp-cpfs
(repeatedly 5 #(cpf/generate {:uf-code :SP})))
(defn validate-cpf-batch [cpf-strings]
(reduce (fn [acc cpf]
(assoc acc cpf (cpf/is-valid? cpf)))
{}
cpf-strings))
(validate-cpf-batch ["123.456.789-09" "111.111.111-11" "12345678909"])
; => {"123.456.789-09" true
; "111.111.111-11" false
; "12345678909" true/false}
Can you improve this documentation?Edit on GitHub
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |