7 releases (2 stable)

1.1.0 Jul 30, 2024
1.0.0 Jun 28, 2024
0.4.0 Apr 7, 2024
0.3.1 Mar 16, 2024
0.1.0 Dec 14, 2023

#569 in Development tools

MIT license

65KB
840 lines

brado

latest release latest release latest release

Brado é um pacote Rust para validação de documentos brasileiros. Este projeto é inspirado na biblioteca Python validate-docbr.

Brado fornece funções para identificação, validação e geração de documentos brasileiros. O nome desta biblioteca (Brado) é um acrônimo de BRAzilian DOcs validator (validador de DOcumentos BRAsileiros).

⚠️ Esta biblioteca tem suporte ao CNPJ alfanumérico. ⚠️ A documentação desta biblioteca pode ser acessada aqui.

Guia Rápido

Para adicionar o pacote ao projeto, basta rodar o seguinte comando:

cargo add brado

Ou adicionar a linha a seguir no arquivo Cargo.toml:

brado = "1.1.0"

Documentos

  • CPF: Cadastro de Pessoa Física;
  • CNH: Carteira Nacional de Habilitação;
  • CNPJ: Cadastro Nacional da Pessoa Jurídica;
  • CNS: Cartão Nacional de Saúde;
  • NIS: NIS/NIT/PIS/PASEP;
  • Título eleitoral: Cadastro que permite cidadãos brasileiros votar;
  • RENAVAM: Registro Nacional de Veículos Automotores;
  • Certidões de Nascimento, Casamento e Óbito.

Funções

Todos os documentos possuem as mesmas funções e funcionam da mesma forma.

validate

Valida o documento passado como parâmetro (&str). Retorna um valor booleano (bool), true caso o documento seja válido, ou false caso contrário.

use brado::cpf;

cpf::validate("63929247011"); // true
cpf::validate("639.292.470-11"); // true

cpf::validate("63929247010"); // false
cpf::validate("639.292.470-10"); // false

mask

Mascara o documento passado como parâmetro (&str), apenas se não possuir símbolos e tiver o número de caracteres do documento sem símbolos. Retorna uma string (Result<String, &'static str>) correspondente ao documento mascarado ou um erro.

use brado::cpf;

cpf::mask("63929247011"); // Ok("639.292.470-11")

cpf::mask("639.292.470-11"); // Err("The given string cannot be masked as CPF!")
cpf::mask("639292470"); // Err("The given string cannot be masked as CPF!")

is_bare

Verifica se o documento passado como parâmetro (&str) não possui símbolos. Retorna um valor booleano (bool), true caso o documento não possua símbolos, ou false caso contrário.

use brado::cpf;

cpf::is_bare("63929247011"); // true (CPF válido sem máscara)
cpf::is_bare("63929247010"); // true (CPF inválido sem máscara)

cpf::is_bare("639.292.470-11"); // false (CPF válido com máscara)
cpf::is_bare("639.29247011"); // false (CPF válido mascarado errado)
cpf::is_bare("639292470110"); // false (CPF inválido sem máscara)

OBS: se for utilizada a função cpf::is_bare para verificar se um CNPJ não possui símbolos, o resultado será false! Isso acontece pois esta função considera que a string é um CPF, ou seja, possui 11 dígitos.

is_masked

Verifica se o documento passado como parâmetro (&str) está mascarado de acordo com o documento correspondente. Retorna um valor booleano (bool), true caso o documento esteja mascarado, ou false caso contrário.

use brado::cpf;

cpf::is_masked("639.292.470-11"); // true (CPF válido com máscara)
cpf::is_masked("639.292.470-10"); // true (CPF inválido com máscara)

cpf::is_masked("63929247011"); // false (CPF válido sem máscara)
cpf::is_masked("6392.92.470-11"); // false (CPF válido mascarado errado)
cpf::is_masked("639.292.470-110"); // false (CPF inválido com máscara)

OBS: cpf::is_masked verifica se a string passada está mascarada como um CPF. cnpj::is_masked verifica se a string passada está mascarada como um CNPJ.

generate

Gera um novo documento sem símbolos (String).

use brado::cpf;

cpf::generate(); // "63929247011"

generate_masked

Gera um novo documento mascarado (String).

use brado::cpf;

cpf::generate_masked(); // "639.292.470-11"

docs::is_cpf, docs::is_cnpj, docs::is_cnh, docs::is_cns

São funções que verificam se o documento passado como parâmetro (&str) são, respectivamente, CPF, CNPJ, CNH e CNS válidos. Essas funções são atalhos (apelidos) para as funções de validação de cada documento. São indicadas para o contexto de identificação do tipo do documento.

use brado::docs;

docs::is_cpf("639.292.470-11"); // true
docs::is_cnpj("639.292.470-11"); // false

Como Contribuir

  1. Fazer um fork do projeto;
  2. Criar um Pull Request com as sugestões de alteração.

(Opcional) Configuração do Projeto via Nix

  1. Instalar nix (com flakes, ou seja, >2.4);
  2. Fazer um fork do projeto;
  3. Clonando o repositório, e considerando que se está usando direnv:
nix flake clone github:your-github-user/brado --dest ./brado \
&& cd brado 1>/dev/null 2>/dev/null \
&& direnv allow

Testes

Para rodar os testes, basta executar o comando a seguir:

make test

Dependencies

~310KB