Quatro bibliotecas de verdade
Os pacotes deste repositório, e a decisão de desenho que cada um demonstra.
packages/ tem quatro bibliotecas escritas em DataForge, publicadas no registro do site e somando 46 testes. Elas servem de referência — e de prova de que o gerenciador funciona ponta a ponta.
| Pacote | O quê | A decisão que ele demonstra |
|---|---|---|
validador | CPF, CNPJ, e-mail e esquema de formulário | a validação devolve o motivo, e não no |
tabela | saída para terminal | medir a largura do que é impresso, e não do que é guardado |
datas | datas em pt-BR, com feriados | o que a biblioteca não faz: fuso horário |
cofre | configuração em camadas | a ordem das fontes é o recurso |
O validador: o motivo, e não o booleano#
dataforge
action validar_cpf(texto):
digitos := "".join([c cycle c in texto given c.isdigit()])
given len(digitos) is 0:
yield {"ok": no, "motivo": "vazio"}
given len(digitos) is not 11:
yield {"ok": no, "motivo": $"tem {len(digitos)} digitos, e nao 11"}
given digitos is digitos[0] * 11:
yield {"ok": no, "motivo": "todos os digitos iguais"}
yield {"ok": yes, "motivo": ""}
assert validar_cpf("529.982.247-25")["ok"]
out validar_cpf("111.111.111-11")["motivo"]
out validar_cpf("123")["motivo"]O cofre: a ordem é o recurso#
dataforge
// A ordem e sempre a mesma, e e ela que faz um segredo de producao
// vencer o padrao do arquivo sem ninguem editar nada:
//
// padrao < arquivo < ambiente < argumento de linha
action resolver(padrao, arquivo, ambiente, argumento):
valor := padrao
cycle fonte in [arquivo, ambiente, argumento]:
given fonte is not void:
valor := fonte
yield valor
assert resolver(5432, 5433, void, void) is 5433
assert resolver(5432, 5433, 6000, void) is 6000
assert resolver(5432, 5433, 6000, 7000) is 7000bash
cd packages/validador
dataforge test .
dataforge pack
dataforge publish --registry=../../site/public/registry