Biblioteca Erlang

O que a biblioteca Erlang implementa do contrato compartilhado, o que falha e o que fazer agora.

Repositório
github.com/brazilian-utils/erlang48dd38d
Pacote
brutils

Instalação

{deps, [brutils]}.  % rebar.config

Erlang implementa 29 das 182 funções do contrato e 12.5% das funções principais. 340 casos compartilhados passam e 352 falham.

Comparação com as outras bibliotecas

BibliotecaFunções principaisImplementadasCasos que passam
JavaScript, biblioteca100%180/1825033
Rust, biblioteca37.5%132/1821732
Go, biblioteca35%136/1822081
.NET, biblioteca32.5%133/1822194
Ruby, biblioteca27.5%133/1822589
Python, biblioteca17.5%40/182500
Erlang12.5%29/182340

O que fazer agora

A lista começa pelas funções que falham, depois assinaturas erradas, depois funções principais que faltam, depois o resto. Em cada grupo, vêm primeiro as funções implementadas por mais bibliotecas, porque há mais código de onde portar. Cada item também é uma issue no repositório da biblioteca.

23 funções falham

Ver as 23 funções que falham
FunçãoSituaçãoDetalhesImplementada por
CEP: Formatar
cep.format (principal)
falha13 casos falham6: JavaScript, Python, Go, Ruby, Rust, .NET
CEP: Validar
cep.isValid (principal)
falha10 casos falham6: JavaScript, Python, Go, Ruby, Rust, .NET
CNH: Validar
cnh.isValid (principal)
falha5 casos falham6: JavaScript, Python, Go, Ruby, Rust, .NET
CNPJ: Formatar
cnpj.format (principal)
falha36 casos falham6: JavaScript, Python, Go, Ruby, Rust, .NET
CNPJ: Validar
cnpj.isValid (principal)
falha4 casos falham6: JavaScript, Python, Go, Ruby, Rust, .NET
CPF: Formatar
cpf.format (principal)
falha28 casos falham6: JavaScript, Python, Go, Ruby, Rust, .NET
CPF: Validar
cpf.isValid (principal)
falha5 casos falham6: JavaScript, Python, Go, Ruby, Rust, .NET
Placa de veículo: Convert to mercosul
licensePlate.convertToMercosul (principal)
falha8 casos falham6: JavaScript, Python, Go, Ruby, Rust, .NET
Placa de veículo: Formatar
licensePlate.format (principal)
falha17 casos falham6: JavaScript, Python, Go, Ruby, Rust, .NET
Placa de veículo: Gerar
licensePlate.generate (principal)
falha4 casos falham6: JavaScript, Python, Go, Ruby, Rust, .NET
Placa de veículo: Get format
licensePlate.getFormat (principal)
falha11 casos falham6: JavaScript, Python, Go, Ruby, Rust, .NET
Placa de veículo: Validar
licensePlate.isValid (principal)
falha17 casos falham6: JavaScript, Python, Go, Ruby, Rust, .NET
Passaporte: Formatar
passport.format
falha17 casos falham6: JavaScript, Python, Go, Ruby, Rust, .NET
Passaporte: Validar
passport.isValid
falha4 casos falham6: JavaScript, Python, Go, Ruby, Rust, .NET
Telefone: Formatar
phone.format (principal)
falha15 casos falham6: JavaScript, Python, Go, Ruby, Rust, .NET
Telefone: Gerar
phone.generate (principal)
falha3 casos falham6: JavaScript, Python, Go, Ruby, Rust, .NET
PIS/PASEP: Formatar
pis.format (principal)
falha54 casos falham6: JavaScript, Python, Go, Ruby, Rust, .NET
PIS/PASEP: Validar
pis.isValid (principal)
falha6 casos falham6: JavaScript, Python, Go, Ruby, Rust, .NET
RENAVAM: Validar
renavam.isValid (principal)
falha7 casos falham6: JavaScript, Python, Go, Ruby, Rust, .NET
Título de eleitor: Formatar
voterId.format (principal)
falha26 casos falham6: JavaScript, Python, Go, Ruby, Rust, .NET
Título de eleitor: Validar
voterId.isValid (principal)
falha18 casos falham6: JavaScript, Python, Go, Ruby, Rust, .NET
CNPJ: Gerar
cnpj.generate (principal)
falha5 casos falham5: JavaScript, Python, Go, Ruby, .NET
Telefone: Validar
phone.isValid (principal)
falha39 casos falham5: JavaScript, Go, Ruby, Rust, .NET

153 funções estão faltando

Ver as 153 funções que faltam
FunçãoSituaçãoImplementada por
Moeda (real): Escrever por extenso
currency.convertToWords (principal)
ausente6: JavaScript, Python, Go, Ruby, Rust, .NET
Moeda (real): Formatar
currency.format (principal)
ausente6: JavaScript, Python, Go, Ruby, Rust, .NET
E-mail: Validar
email.isValid (principal)
ausente6: JavaScript, Python, Go, Ruby, Rust, .NET
Natureza jurídica: Validar
legalNature.isValid (principal)
ausente6: JavaScript, Python, Go, Ruby, Rust, .NET
Natureza jurídica: Listar
legalNature.list (principal)
ausente6: JavaScript, Python, Go, Ruby, Rust, .NET
Processo judicial: Formatar
legalProcess.format (principal)
ausente6: JavaScript, Python, Go, Ruby, Rust, .NET
Processo judicial: Gerar
legalProcess.generate (principal)
ausente6: JavaScript, Python, Go, Ruby, Rust, .NET
Processo judicial: Validar
legalProcess.isValid (principal)
ausente6: JavaScript, Python, Go, Ruby, Rust, .NET
Boleto: Validar
boleto.isValid (principal)
ausente5: JavaScript, Go, Ruby, Rust, .NET
CEP: Get address info
cep.getAddressInfo (principal)
ausente5: JavaScript, Go, Ruby, Rust, .NET
Datas e feriados: Is holiday
date.isHoliday (principal)
ausente5: JavaScript, Go, Ruby, Rust, .NET
Natureza jurídica: Get description
legalNature.getDescription (principal)
ausente5: Python, Go, Ruby, Rust, .NET
CEP: Get info by address
cep.getInfoByAddress (principal)
ausente4: JavaScript, Go, Rust, .NET
Municípios: Get code by name
municipality.getCodeByName (principal)
ausente1: JavaScript
Datas e feriados: Escrever por extenso
date.convertToWords
ausente6: JavaScript, Python, Go, Ruby, Rust, .NET
Estados (UF): Get code by name
state.getCodeByName
ausente6: JavaScript, Python, Go, Ruby, Rust, .NET
Estados (UF): Get name by code
state.getNameByCode
ausente6: JavaScript, Python, Go, Ruby, Rust, .NET
DDD: List by state
areaCode.listByState
ausente5: JavaScript, Go, Ruby, Rust, .NET
Bancos: Get by code
bank.getByCode
ausente5: JavaScript, Go, Ruby, Rust, .NET
Bancos: Get by ispb
bank.getByIspb
ausente5: JavaScript, Go, Ruby, Rust, .NET
Bancos: Listar
bank.list
ausente5: JavaScript, Go, Ruby, Rust, .NET
Conta bancária: Validar
bankAccount.isValid
ausente5: JavaScript, Go, Ruby, Rust, .NET
Boleto: Formatar
boleto.format
ausente5: JavaScript, Go, Ruby, Rust, .NET
Boleto: Gerar
boleto.generate
ausente5: JavaScript, Go, Ruby, Rust, .NET
Boleto: Interpretar
boleto.parse
ausente5: JavaScript, Go, Ruby, Rust, .NET
CAEPF: Formatar
caepf.format
ausente5: JavaScript, Go, Ruby, Rust, .NET
CAEPF: Validar
caepf.isValid
ausente5: JavaScript, Go, Ruby, Rust, .NET
CAEPF: Interpretar
caepf.parse
ausente5: JavaScript, Go, Ruby, Rust, .NET
CBO: Consultar
cbo.get
ausente5: JavaScript, Go, Ruby, Rust, .NET
CBO: Validar
cbo.isValid
ausente5: JavaScript, Go, Ruby, Rust, .NET
CBO: Interpretar
cbo.parse
ausente5: JavaScript, Go, Ruby, Rust, .NET
CEI: Formatar
cei.format
ausente5: JavaScript, Go, Ruby, Rust, .NET
CEI: Validar
cei.isValid
ausente5: JavaScript, Go, Ruby, Rust, .NET
CEI: Interpretar
cei.parse
ausente5: JavaScript, Go, Ruby, Rust, .NET
CEP: Interpretar
cep.parse
ausente5: JavaScript, Go, Ruby, Rust, .NET
Certidão: Formatar
certidao.format
ausente5: JavaScript, Go, Ruby, Rust, .NET
Certidão: Decodificar
certidao.getInfo
ausente5: JavaScript, Go, Ruby, Rust, .NET
Certidão: Interpretar
certidao.parse
ausente5: JavaScript, Go, Ruby, Rust, .NET
CFOP: Consultar
cfop.get
ausente5: JavaScript, Go, Ruby, Rust, .NET
CFOP: Validar
cfop.isValid
ausente5: JavaScript, Go, Ruby, Rust, .NET
CFOP: Interpretar
cfop.parse
ausente5: JavaScript, Go, Ruby, Rust, .NET
CNAE: Formatar
cnae.format
ausente5: JavaScript, Go, Ruby, Rust, .NET
CNAE: Consultar
cnae.get
ausente5: JavaScript, Go, Ruby, Rust, .NET
CNAE: Validar
cnae.isValid
ausente5: JavaScript, Go, Ruby, Rust, .NET
CNAE: Interpretar
cnae.parse
ausente5: JavaScript, Go, Ruby, Rust, .NET
CNH: Formatar
cnh.format
ausente5: JavaScript, Go, Ruby, Rust, .NET
CNH: Gerar
cnh.generate
ausente5: JavaScript, Go, Ruby, Rust, .NET
CNH: Interpretar
cnh.parse
ausente5: JavaScript, Go, Ruby, Rust, .NET
CNO: Formatar
cno.format
ausente5: JavaScript, Go, Ruby, Rust, .NET
CNO: Validar
cno.isValid
ausente5: JavaScript, Go, Ruby, Rust, .NET
CNO: Interpretar
cno.parse
ausente5: JavaScript, Go, Ruby, Rust, .NET
CNPJ: Interpretar
cnpj.parse
ausente5: JavaScript, Go, Ruby, Rust, .NET
CNS (Cartão SUS): Formatar
cns.format
ausente5: JavaScript, Go, Ruby, Rust, .NET
CNS (Cartão SUS): Validar
cns.isValid
ausente5: JavaScript, Go, Ruby, Rust, .NET
CNS (Cartão SUS): Interpretar
cns.parse
ausente5: JavaScript, Go, Ruby, Rust, .NET
CPF: Interpretar
cpf.parse
ausente5: JavaScript, Go, Ruby, Rust, .NET
Cartão de pagamento: Validar
creditCard.isValid
ausente5: JavaScript, Go, Ruby, Rust, .NET
CSOSN: Validar
csosn.isValid
ausente5: JavaScript, Go, Ruby, Rust, .NET
CST: Validar
cst.isValid
ausente5: JavaScript, Go, Ruby, Rust, .NET
Moeda (real): Interpretar
currency.parse
ausente5: JavaScript, Go, Ruby, Rust, .NET
Datas e feriados: Difference in business days
date.differenceInBusinessDays
ausente5: JavaScript, Go, Ruby, Rust, .NET
Datas e feriados: Is business day
date.isBusinessDay
ausente5: JavaScript, Go, Ruby, Rust, .NET
IBAN: Formatar
iban.format
ausente5: JavaScript, Go, Ruby, Rust, .NET
IBAN: Decodificar
iban.getInfo
ausente5: JavaScript, Go, Ruby, Rust, .NET
IBAN: Validar
iban.isValid
ausente5: JavaScript, Go, Ruby, Rust, .NET
IBAN: Interpretar
iban.parse
ausente5: JavaScript, Go, Ruby, Rust, .NET
Natureza jurídica: Formatar
legalNature.format
ausente5: JavaScript, Go, Ruby, Rust, .NET
Natureza jurídica: Gerar
legalNature.generate
ausente5: JavaScript, Go, Ruby, Rust, .NET
Natureza jurídica: Consultar
legalNature.get
ausente5: JavaScript, Go, Ruby, Rust, .NET
Natureza jurídica: List by category
legalNature.listByCategory
ausente5: JavaScript, Go, Ruby, Rust, .NET
Natureza jurídica: Interpretar
legalNature.parse
ausente5: JavaScript, Go, Ruby, Rust, .NET
Processo judicial: Interpretar
legalProcess.parse
ausente5: JavaScript, Go, Ruby, Rust, .NET
Placa de veículo: Interpretar
licensePlate.parse
ausente5: JavaScript, Go, Ruby, Rust, .NET
Municípios: Get by code
municipality.getByCode
ausente5: JavaScript, Go, Ruby, Rust, .NET
Municípios: Listar
municipality.list
ausente5: JavaScript, Go, Ruby, Rust, .NET
NCM: Formatar
ncm.format
ausente5: JavaScript, Go, Ruby, Rust, .NET
NCM: Validar
ncm.isValid
ausente5: JavaScript, Go, Ruby, Rust, .NET
NCM: Interpretar
ncm.parse
ausente5: JavaScript, Go, Ruby, Rust, .NET
Chave de acesso NF-e: Formatar
nfeKey.format
ausente5: JavaScript, Go, Ruby, Rust, .NET
Chave de acesso NF-e: Decodificar
nfeKey.getInfo
ausente5: JavaScript, Go, Ruby, Rust, .NET
Chave de acesso NF-e: Validar
nfeKey.isValid
ausente5: JavaScript, Go, Ruby, Rust, .NET
Chave de acesso NF-e: Interpretar
nfeKey.parse
ausente5: JavaScript, Go, Ruby, Rust, .NET
Números por extenso: Escrever por extenso
number.convertToWords
ausente5: JavaScript, Go, Ruby, Rust, .NET
Passaporte: Interpretar
passport.parse
ausente5: JavaScript, Go, Ruby, Rust, .NET
Telefone: Is valid landline
phone.isValidLandline
ausente5: JavaScript, Go, Ruby, Rust, .NET
Telefone: Is valid mobile
phone.isValidMobile
ausente5: JavaScript, Go, Ruby, Rust, .NET
Telefone: Is valid service
phone.isValidService
ausente5: JavaScript, Go, Ruby, Rust, .NET
Telefone: Interpretar
phone.parse
ausente5: JavaScript, Go, Ruby, Rust, .NET
PIS/PASEP: Interpretar
pis.parse
ausente5: JavaScript, Go, Ruby, Rust, .NET
Chave Pix: Decodificar
pixKey.getInfo
ausente5: JavaScript, Go, Ruby, Rust, .NET
Chave Pix: Validar
pixKey.isValid
ausente5: JavaScript, Go, Ruby, Rust, .NET
Pix copia e cola (BR Code): Decodificar
pixPayload.getInfo
ausente5: JavaScript, Go, Ruby, Rust, .NET
Pix copia e cola (BR Code): Validar
pixPayload.isValid
ausente5: JavaScript, Go, Ruby, Rust, .NET
Registro profissional: Validar
registroProfissional.isValid
ausente5: JavaScript, Go, Ruby, Rust, .NET
RENAVAM: Gerar
renavam.generate
ausente5: JavaScript, Go, Ruby, Rust, .NET
Estados (UF): Get timezone
state.getTimezone
ausente5: JavaScript, Go, Ruby, Rust, .NET
Estados (UF): Listar
state.list
ausente5: JavaScript, Go, Ruby, Rust, .NET
Texto: Capitalize
text.capitalize
ausente5: JavaScript, Go, Ruby, Rust, .NET
Texto: Remove accents
text.removeAccents
ausente5: JavaScript, Go, Ruby, Rust, .NET
Chassi (VIN): Validar
vin.isValid
ausente5: JavaScript, Go, Ruby, Rust, .NET
Título de eleitor: Interpretar
voterId.parse
ausente5: JavaScript, Go, Ruby, Rust, .NET
DDD: Decodificar
areaCode.getInfo
ausente4: JavaScript, Go, Ruby, .NET
Certidão: Validar
certidao.isValid
ausente4: JavaScript, Go, Ruby, Rust
Datas e feriados: Get holidays
date.getHolidays
ausente4: JavaScript, Go, Rust, .NET
Inscrição estadual: Validar
ie.isValid
ausente4: JavaScript, Go, Rust, .NET
Pix copia e cola (BR Code): Gerar
pixPayload.generate
ausente4: JavaScript, Go, Ruby, Rust
Estados (UF): Get by ibge code
state.getByIbgeCode
ausente4: JavaScript, Go, Ruby, .NET
Boleto: Decodificar
boleto.getInfo
ausente3: JavaScript, Go, Ruby
DDD: Get by municipality code
areaCode.getByMunicipalityCode
ausente1: JavaScript
CBO: Formatar
cbo.format
ausente1: JavaScript
CEP: Get state
cep.getState
ausente1: JavaScript
CEST: Formatar
cest.format
ausente1: JavaScript
CEST: Consultar
cest.get
ausente1: JavaScript
CEST: Validar
cest.isValid
ausente1: JavaScript
CEST: Interpretar
cest.parse
ausente1: JavaScript
CFOP: Formatar
cfop.format
ausente1: JavaScript
CID-10: Formatar
cid10.format
ausente1: JavaScript
CID-10: Consultar
cid10.get
ausente1: JavaScript
CID-10: Validar
cid10.isValid
ausente1: JavaScript
CID-10: Interpretar
cid10.parse
ausente1: JavaScript
cClassTrib: Consultar
classTrib.get
ausente1: JavaScript
cClassTrib: Validar
classTrib.isValid
ausente1: JavaScript
CNPJ: Decodificar
cnpj.getInfo
ausente1: JavaScript
CPF: Decodificar
cpf.getInfo
ausente1: JavaScript
CST IBS/CBS: Consultar
cstIbsCbs.get
ausente1: JavaScript
CST IBS/CBS: Validar
cstIbsCbs.isValid
ausente1: JavaScript
Datas e feriados: Add business days
date.addBusinessDays
ausente1: JavaScript
Datas e feriados: Sub business days
date.subBusinessDays
ausente1: JavaScript
GTIN (EAN/UPC): Decodificar
gtin.getInfo
ausente1: JavaScript
GTIN (EAN/UPC): Validar
gtin.isValid
ausente1: JavaScript
ISBN: Formatar
isbn.format
ausente1: JavaScript
ISBN: Decodificar
isbn.getInfo
ausente1: JavaScript
ISBN: Validar
isbn.isValid
ausente1: JavaScript
ISBN: Interpretar
isbn.parse
ausente1: JavaScript
Processo judicial: Decodificar
legalProcess.getInfo
ausente1: JavaScript
Municípios: List by area code
municipality.listByAreaCode
ausente1: JavaScript
NBS: Formatar
nbs.format
ausente1: JavaScript
NBS: Consultar
nbs.get
ausente1: JavaScript
NBS: Validar
nbs.isValid
ausente1: JavaScript
NBS: Interpretar
nbs.parse
ausente1: JavaScript
Chave de acesso NFS-e: Decodificar
nfseKey.getInfo
ausente1: JavaScript
Chave de acesso NFS-e: Validar
nfseKey.isValid
ausente1: JavaScript
Chave de acesso NFS-e: Interpretar
nfseKey.parse
ausente1: JavaScript
Lista de serviços (LC 116): Consultar
serviceItem.get
ausente1: JavaScript
Lista de serviços (LC 116): Validar
serviceItem.isValid
ausente1: JavaScript
Estados (UF): Get capital
state.getCapital
ausente1: JavaScript
Estados (UF): Get regions
state.getRegions
ausente1: JavaScript
Estados (UF): List by region
state.listByRegion
ausente1: JavaScript
Inscrição SUFRAMA: Formatar
suframa.format
ausente1: JavaScript
Inscrição SUFRAMA: Gerar
suframa.generate
ausente1: JavaScript
Inscrição SUFRAMA: Validar
suframa.isValid
ausente1: JavaScript
Inscrição SUFRAMA: Interpretar
suframa.parse
ausente1: JavaScript
Título de eleitor: Decodificar
voterId.getInfo
ausente1: JavaScript

Casos que falham

Ver os 352 casos que falham
CasoEsperadoObtido
cep.format#[""]""expected "", threw: {error, invalid}
cep.format#["0"]"0"expected "0", threw: {error, invalid}
cep.format#["01"]"01"expected "01", threw: {error, invalid}
cep.format#["010"]"010"expected "010", threw: {error, invalid}
cep.format#["0100"]"0100"expected "0100", threw: {error, invalid}
cep.format#["01001"]"01001"expected "01001", threw: {error, invalid}
cep.format#["010010"]"01001-0"expected "01001-0", threw: {error, invalid}
cep.format#["0100100"]"01001-00"expected "01001-00", threw: {error, invalid}
cep.format#["01001000000000"]"01001-000"expected "01001-000", threw: {error, invalid}
cep.format#["a0.10cr01?00#ab0"]"01001-000"expected "01001-000", threw: {error, invalid}
cep.format#negative-number""expected "", threw: error:function_clause
cep.format#fractional-number""expected "", threw: error:function_clause
cep.format#unsafe-number""expected "", threw: error:function_clause
cep.isValid#["01310-100"]truefalse
cep.isValid#[20040020]truefalse
cep.isValid#[" 01310-100 "]truefalse
cep.isValid#["92.500-000"]truefalse
cep.isValid#["013 10 100"]truefalse
cep.isValid#["01310.100"]truefalse
cep.isValid#["01310/100"]truefalse
cep.isValid#["0131/0100"]truefalse
cep.isValid#["--0131 0100"]truefalse
cep.isValid#["01310/100/"]truefalse
cnh.isValid#valid-sampletruefalse
cnh.isValid#["00000009309"]truefalse
cnh.isValid#["ab00000000119"]falsetrue
cnh.isValid#["00000000119ab"]falsetrue
cnh.isValid#["000000001_19"]falsetrue
cnpj.format#[""]""expected "", threw: {error, invalid}
cnpj.format#["4"]"4"expected "4", threw: {error, invalid}
cnpj.format#["46"]"46"expected "46", threw: {error, invalid}
cnpj.format#["468"]"46.8"expected "46.8", threw: {error, invalid}
cnpj.format#["4684"]"46.84"expected "46.84", threw: {error, invalid}
cnpj.format#["46843"]"46.843"expected "46.843", threw: {error, invalid}
cnpj.format#["468434"]"46.843.4"expected "46.843.4", threw: {error, invalid}
cnpj.format#["4684348"]"46.843.48"expected "46.843.48", threw: {error, invalid}
cnpj.format#["46843485"]"46.843.485"expected "46.843.485", threw: {error, invalid}
cnpj.format#["468434850"]"46.843.485/0"expected "46.843.485/0", threw: {error, invalid}
cnpj.format#["4684348500"]"46.843.485/00"expected "46.843.485/00", threw: {error, invalid}
cnpj.format#["46843485000"]"46.843.485/000"expected "46.843.485/000", threw: {error, invalid}
cnpj.format#["468434850001"]"46.843.485/0001"expected "46.843.485/0001", threw: {error, invalid}
cnpj.format#["4684348500018"]"46.843.485/0001-8"expected "46.843.485/0001-8", threw: {error, invalid}
cnpj.format#[4]"4"expected "4", threw: error:function_clause
cnpj.format#[46]"46"expected "46", threw: error:function_clause
cnpj.format#[468]"46.8"expected "46.8", threw: error:function_clause
cnpj.format#[4684]"46.84"expected "46.84", threw: error:function_clause
cnpj.format#[46843]"46.843"expected "46.843", threw: error:function_clause
cnpj.format#[468434]"46.843.4"expected "46.843.4", threw: error:function_clause
cnpj.format#[4684348]"46.843.48"expected "46.843.48", threw: error:function_clause
cnpj.format#[46843485]"46.843.485"expected "46.843.485", threw: error:function_clause
cnpj.format#[468434850]"46.843.485/0"expected "46.843.485/0", threw: error:function_clause
cnpj.format#[4684348500]"46.843.485/00"expected "46.843.485/00", threw: error:function_clause
cnpj.format#[46843485000]"46.843.485/000"expected "46.843.485/000", threw: error:function_clause
cnpj.format#[468434850001]"46.843.485/0001"expected "46.843.485/0001", threw: error:function_clause
cnpj.format#[4684348500018]"46.843.485/0001-8"expected "46.843.485/0001-8", threw: error:function_clause
cnpj.format#[46843485000186]"46.843.485/0001-86"expected "46.843.485/0001-86", threw: error:function_clause
cnpj.format#["468434850001860000000000"]"46.843.485/0001-86"expected "46.843.485/0001-86", threw: {error, invalid}
cnpj.format#["46.?ABC843.485/0001-86abc"]"46.843.485/0001-86"expected "46.843.485/0001-86", threw: {error, invalid}
cnpj.format#[-11222333000181]""expected "", threw: error:function_clause
cnpj.format#[-1]""expected "", threw: error:function_clause
cnpj.format#[1.5]""expected "", threw: error:function_clause
cnpj.format#[9007199254740992]""expected "", threw: error:function_clause
cnpj.format#["24522200000174"]"24.522.200/0001-74"expected "24.522.200/0001-74", threw: {error, invalid}
cnpj.format#["12OUT345000199"]"12.345.000/199"expected "12.345.000/199", threw: {error, invalid}
cnpj.generate#given-branchnullexpected /^[0-9]{8}0003[0-9]{2}$/, threw: error:function_clause
cnpj.generate#[{"version":2,"branch":1}]nullexpected /^[0-9A-Z]{8}0001[0-9]{2}$/, threw: error:function_clause
cnpj.generate#[{"branch":0}]nullexpected /^[0-9]{14}$/, threw: error:function_clause
cnpj.generate#[{"branch":9999}]nullexpected /^[0-9]{8}9999[0-9]{2}$/, threw: error:function_clause
cnpj.generate#[{"branch":42}]nullexpected /^[0-9]{8}0042[0-9]{2}$/, threw: error:function_clause
cnpj.isValid#["Q0SLFMBD7VX439"]falsetrue
cnpj.isValid#["60.391.947/0001-00"]truefalse
cnpj.isValid#["11 222 333 0001 81"]truefalse
cnpj.isValid#[" 13723705000189 "]truefalse
cpf.format#[""]""expected "", threw: {error, invalid}
cpf.format#["9"]"9"expected "9", threw: {error, invalid}
cpf.format#["94"]"94"expected "94", threw: {error, invalid}
cpf.format#["943"]"943"expected "943", threw: {error, invalid}
cpf.format#["9438"]"943.8"expected "943.8", threw: {error, invalid}
cpf.format#["94389"]"943.89"expected "943.89", threw: {error, invalid}
cpf.format#["943895"]"943.895"expected "943.895", threw: {error, invalid}
cpf.format#["9438957"]"943.895.7"expected "943.895.7", threw: {error, invalid}
cpf.format#["94389575"]"943.895.75"expected "943.895.75", threw: {error, invalid}
cpf.format#["943895751"]"943.895.751"expected "943.895.751", threw: {error, invalid}
cpf.format#["9438957510"]"943.895.751-0"expected "943.895.751-0", threw: {error, invalid}
cpf.format#[9]"9"expected "9", threw: error:function_clause
cpf.format#[94]"94"expected "94", threw: error:function_clause
cpf.format#[943]"943"expected "943", threw: error:function_clause
cpf.format#[9438]"943.8"expected "943.8", threw: error:function_clause
cpf.format#[94389]"943.89"expected "943.89", threw: error:function_clause
cpf.format#[943895]"943.895"expected "943.895", threw: error:function_clause
cpf.format#[9438957]"943.895.7"expected "943.895.7", threw: error:function_clause
cpf.format#[94389575]"943.895.75"expected "943.895.75", threw: error:function_clause
cpf.format#[943895751]"943.895.751"expected "943.895.751", threw: error:function_clause
cpf.format#[9438957510]"943.895.751-0"expected "943.895.751-0", threw: error:function_clause
cpf.format#[94389575104]"943.895.751-04"expected "943.895.751-04", threw: error:function_clause
cpf.format#["94389575104000000"]"943.895.751-04"expected "943.895.751-04", threw: {error, invalid}
cpf.format#["943.?ABC895.751-04abc"]"943.895.751-04"expected "943.895.751-04", threw: {error, invalid}
cpf.format#[123456789.09]""expected "", threw: error:function_clause
cpf.format#[-1]""expected "", threw: error:function_clause
cpf.format#[1.5]""expected "", threw: error:function_clause
cpf.format#[9007199254740992]""expected "", threw: error:function_clause
cpf.isValid#["962.718.458-60"]truefalse
cpf.isValid#["123 456 789 09"]truefalse
cpf.isValid#[" 12345678909"]truefalse
cpf.isValid#["12345678909 "]truefalse
cpf.isValid#["280.012.389-38"]truefalse
licensePlate.convertToMercosul#hyphen-mask"ABC1C34"expected "ABC1C34", threw: {error, invalid}
licensePlate.convertToMercosul#already-mercosul""expected "", threw: {error, invalid}
licensePlate.convertToMercosul#invalid""expected "", threw: {error, invalid}
licensePlate.convertToMercosul#empty""expected "", threw: {error, invalid}
licensePlate.convertToMercosul#["ABC12D3"]""expected "", threw: {error, invalid}
licensePlate.convertToMercosul#["ABC1234EXTRA"]""expected "", threw: {error, invalid}
licensePlate.convertToMercosul#["ABC12345"]""expected "", threw: {error, invalid}
licensePlate.convertToMercosul#["ABC123"]""expected "", threw: {error, invalid}
licensePlate.format#[""]""expected "", threw: {error, invalid}
licensePlate.format#["a"]"A"expected "A", threw: {error, invalid}
licensePlate.format#["ab"]"AB"expected "AB", threw: {error, invalid}
licensePlate.format#["abc"]"ABC"expected "ABC", threw: {error, invalid}
licensePlate.format#["abc1"]"ABC-1"expected "ABC-1", threw: {error, invalid}
licensePlate.format#["abc12"]"ABC-12"expected "ABC-12", threw: {error, invalid}
licensePlate.format#["abc123"]"ABC-123"expected "ABC-123", threw: {error, invalid}
licensePlate.format#["abc1d"]"ABC1D"expected "ABC1D", threw: {error, invalid}
licensePlate.format#["abc1d2"]"ABC1D2"expected "ABC1D2", threw: {error, invalid}
licensePlate.format#["abc-1234"]"ABC-1234"expected "ABC-1234", threw: {error, invalid}
licensePlate.format#["abc1-d23"]"ABC1D23"expected "ABC1D23", threw: {error, invalid}
licensePlate.format#["abc1da2"]""expected "", threw: {error, invalid}
licensePlate.format#["abc12d"]""expected "", threw: {error, invalid}
licensePlate.format#["abc12d3"]""expected "", threw: {error, invalid}
licensePlate.format#["1"]""expected "", threw: {error, invalid}
licensePlate.format#["1ab4"]""expected "", threw: {error, invalid}
licensePlate.format#["ab14"]""expected "", threw: {error, invalid}
licensePlate.generate#mercosul-fifth-char-k-to-znull"YBE0G53"
licensePlate.generate#explicit-mercosulnull"SJN6F83"
licensePlate.generate#unknown-format-falls-backnullexpected /^[A-Z]{3}[0-9][K-Z][0-9]{2}$/, threw: {error, invalid}
licensePlate.generate#bogus-format-falls-backnullthrew: {error, invalid}
licensePlate.getFormat#["WDG1S21"]"LLLNLNN""mercosul"
licensePlate.getFormat#["WDG1S22"]"LLLNLNN""mercosul"
licensePlate.getFormat#["wdg1s21"]"LLLNLNN""mercosul"
licensePlate.getFormat#["GJG8U81"]"LLLNLNN""mercosul"
licensePlate.getFormat#["GJG8U82"]"LLLNLNN""mercosul"
licensePlate.getFormat#["gjg8u81"]"LLLNLNN""mercosul"
licensePlate.getFormat#["KDS4W15"]"LLLNLNN""mercosul"
licensePlate.getFormat#["KDS4W16"]"LLLNLNN""mercosul"
licensePlate.getFormat#["kds4w15"]"LLLNLNN""mercosul"
licensePlate.getFormat#["ABC1234"]"LLLNNNN""old_format"
licensePlate.getFormat#["ABC1D23"]"LLLNLNN""mercosul"
licensePlate.isValid#["abc-1234"]truefalse
licensePlate.isValid#["ABC-1234"]truefalse
licensePlate.isValid#["ABC 1234"]truefalse
licensePlate.isValid#["ABC-1D23"]truefalse
licensePlate.isValid#["ABC1D23",{"format":"LLLNLNN"}]trueexpected true, threw: error:function_clause
licensePlate.isValid#["ABC1D23",{"format":"LLLNNNN"}]falseexpected false, threw: error:function_clause
licensePlate.isValid#["ABC1234",{"format":"LLLNNNN"}]trueexpected true, threw: error:function_clause
licensePlate.isValid#["ABC1234",{"format":"LLLNLNN"}]falseexpected false, threw: error:function_clause
licensePlate.isValid#["abc1d23",{"format":"LLLNLNN"}]trueexpected true, threw: error:function_clause
licensePlate.isValid#["ABC12D3",{"format":"LLLNLNN"}]falseexpected false, threw: error:function_clause
licensePlate.isValid#["abc",{"format":"LLLNNNN"}]falseexpected false, threw: error:function_clause
licensePlate.isValid#["ABC1D23",{"format":"mercosul"}]trueexpected true, threw: error:function_clause
licensePlate.isValid#["ABC1234",{}]trueexpected true, threw: error:function_clause
licensePlate.isValid#["ABC.1234"]truefalse
licensePlate.isValid#["ABC/1234"]truefalse
licensePlate.isValid#["ABC - 1234"]truefalse
licensePlate.isValid#["ABC-1234",{"format":"LLLNNNN"}]trueexpected true, threw: error:function_clause
passport.format#lowercase"ACD12736"expected "ACD12736", threw: {error, invalid}
passport.format#partial"AB12"expected "AB12", threw: {error, invalid}
passport.format#empty""expected "", threw: {error, invalid}
passport.format#caps-length"AB123456"expected "AB123456", threw: {error, invalid}
passport.format#["A"]"A"expected "A", threw: {error, invalid}
passport.format#["AB"]"AB"expected "AB", threw: {error, invalid}
passport.format#["AB1"]"AB1"expected "AB1", threw: {error, invalid}
passport.format#["AB123"]"AB123"expected "AB123", threw: {error, invalid}
passport.format#["AB1234"]"AB1234"expected "AB1234", threw: {error, invalid}
passport.format#["AB12345"]"AB12345"expected "AB12345", threw: {error, invalid}
passport.format#["a"]"A"expected "A", threw: {error, invalid}
passport.format#["ac"]"AC"expected "AC", threw: {error, invalid}
passport.format#["acd"]"ACD"expected "ACD", threw: {error, invalid}
passport.format#["acd1"]"ACD1"expected "ACD1", threw: {error, invalid}
passport.format#["acd12"]"ACD12"expected "ACD12", threw: {error, invalid}
passport.format#["acd127"]"ACD127"expected "ACD127", threw: {error, invalid}
passport.format#["acd1273"]"ACD1273"expected "ACD1273", threw: {error, invalid}
passport.isValid#lowercasetruefalse
passport.isValid#maskedtruefalse
passport.isValid#dottedtruefalse
passport.isValid#["AB-123.456"]truefalse
phone.format#subscriber-number"98888-7777"expected "98888-7777", threw: {error, invalid}
phone.format#partial"98888-777"expected "98888-777", threw: {error, invalid}
phone.format#empty""expected "", threw: {error, invalid}
phone.format#ddd-under-default-mask"11300-0000""(11)3000-0000"
phone.format#["9"]"9"expected "9", threw: {error, invalid}
phone.format#["98"]"98"expected "98", threw: {error, invalid}
phone.format#["988"]"988"expected "988", threw: {error, invalid}
phone.format#["9888"]"9888"expected "9888", threw: {error, invalid}
phone.format#["98888"]"98888"expected "98888", threw: {error, invalid}
phone.format#["988887"]"98888-7"expected "98888-7", threw: {error, invalid}
phone.format#["9888877"]"98888-77"expected "98888-77", threw: {error, invalid}
phone.format#[9007199254740992]""expected "", threw: error:function_clause
phone.format#["+5511988887777"]"11988-8877"expected "11988-8877", threw: {error, invalid}
phone.format#["+55 55 98888-7777"]"55988-8877"expected "55988-8877", threw: {error, invalid}
phone.format#["11900000000"]"11900-0000""(11)90000-0000"
phone.generate#["mobile"]nullexpected /^\d{2}9\d{8}$/, threw: error:function_clause
phone.generate#["landline"]nullexpected /^\d{2}[2-5]\d{7}$/, threw: error:function_clause
phone.generate#["service"]nullexpected /^(0(300|303|500|800|900)\d{7}|[34]00\d{5})$/, threw: error:function_clause
phone.isValid#["+55 0800 123 4567",{"accept":["service"]}]trueexpected true, threw: error:function_clause
phone.isValid#["0055 4004-1234",{"accept":["service"]}]trueexpected true, threw: error:function_clause
phone.isValid#["5508001234567",{"accept":["service"]}]trueexpected true, threw: error:function_clause
phone.isValid#["55 0300 123 4567",{"accept":["service"]}]trueexpected true, threw: error:function_clause
phone.isValid#["(11) 98765-4321",{"accept":[]}]falseexpected false, threw: error:function_clause
phone.isValid#["1130000000",{"accept":[]}]falseexpected false, threw: error:function_clause
phone.isValid#["08001234567",{"accept":[]}]falseexpected false, threw: error:function_clause
phone.isValid#["11612345678",{"version":2}]falseexpected false, threw: error:function_clause
phone.isValid#["11700123456",{"version":2}]falseexpected false, threw: error:function_clause
phone.isValid#["11987654321",{"accept":["landline"]}]falseexpected false, threw: error:function_clause
phone.isValid#["1130000000",{"accept":["mobile"]}]falseexpected false, threw: error:function_clause
phone.isValid#["11987654321",{"accept":["service"]}]falseexpected false, threw: error:function_clause
phone.isValid#["08001234567",{"accept":["mobile","landline"]}]falseexpected false, threw: error:function_clause
phone.isValid#["(11) 98765-4321"]truefalse
phone.isValid#["11987654321",{"version":2}]trueexpected true, threw: error:function_clause
phone.isValid#["11712345678",{"version":2}]trueexpected true, threw: error:function_clause
phone.isValid#["11812345678",{"version":2}]trueexpected true, threw: error:function_clause
phone.isValid#["(11) 3000-0000"]truefalse
phone.isValid#["11712345678",{"version":1}]trueexpected true, threw: error:function_clause
phone.isValid#["+5511987654321"]truefalse
phone.isValid#["+55 11 98765-4321"]truefalse
phone.isValid#["+55 (11) 98765-4321"]truefalse
phone.isValid#["0055 11 98765-4321"]truefalse
phone.isValid#["5511987654321"]truefalse
phone.isValid#["+55 (11) 3000-0000"]truefalse
phone.isValid#["+55 11 98765-4321",{"version":2}]trueexpected true, threw: error:function_clause
phone.isValid#["11987654321",{"accept":["mobile"]}]trueexpected true, threw: error:function_clause
phone.isValid#["1130000000",{"accept":["landline"]}]trueexpected true, threw: error:function_clause
phone.isValid#["08001234567",{"accept":["service"]}]trueexpected true, threw: error:function_clause
phone.isValid#["40041234",{"accept":["service"]}]trueexpected true, threw: error:function_clause
phone.isValid#["190",{"accept":["service"]}]trueexpected true, threw: error:function_clause
phone.isValid#["0800 123 4567",{"accept":["service"]}]trueexpected true, threw: error:function_clause
phone.isValid#["11987654321",{"accept":["mobile","landline","service"]}]trueexpected true, threw: error:function_clause
phone.isValid#["08001234567",{"accept":["mobile","landline","service"]}]trueexpected true, threw: error:function_clause
phone.isValid#["112",{"accept":["service"]}]trueexpected true, threw: error:function_clause
phone.isValid#["abc190",{"accept":["service"]}]falseexpected false, threw: error:function_clause
phone.isValid#["0800 123 4567 ramal 1",{"accept":["service"]}]falseexpected false, threw: error:function_clause
phone.isValid#["11.98765/4321"]truefalse
phone.isValid#["11900000000",{"accept":[]}]falseexpected false, threw: error:function_clause
pis.format#[""]""expected "", threw: {error, invalid}
pis.format#["0"]"0"expected "0", threw: {error, invalid}
pis.format#["00"]"00"expected "00", threw: {error, invalid}
pis.format#["000"]"000"expected "000", threw: {error, invalid}
pis.format#["0000"]"000.0"expected "000.0", threw: {error, invalid}
pis.format#["00000"]"000.00"expected "000.00", threw: {error, invalid}
pis.format#["000000"]"000.000"expected "000.000", threw: {error, invalid}
pis.format#["0000000"]"000.0000"expected "000.0000", threw: {error, invalid}
pis.format#["00000000"]"000.00000"expected "000.00000", threw: {error, invalid}
pis.format#["000000000"]"000.00000.0"expected "000.00000.0", threw: {error, invalid}
pis.format#["0000000000"]"000.00000.00"expected "000.00000.00", threw: {error, invalid}
pis.format#["000000000000"]"000.00000.00-0"expected "000.00000.00-0", threw: {error, invalid}
pis.format#["000.0"]"000.0"expected "000.0", threw: {error, invalid}
pis.format#["000.00"]"000.00"expected "000.00", threw: {error, invalid}
pis.format#["000.000"]"000.000"expected "000.000", threw: {error, invalid}
pis.format#["000.0000"]"000.0000"expected "000.0000", threw: {error, invalid}
pis.format#["000.00000"]"000.00000"expected "000.00000", threw: {error, invalid}
pis.format#["000.000000"]"000.00000.0"expected "000.00000.0", threw: {error, invalid}
pis.format#["000.00000.0"]"000.00000.0"expected "000.00000.0", threw: {error, invalid}
pis.format#["000.00000.00"]"000.00000.00"expected "000.00000.00", threw: {error, invalid}
pis.format#["000.00000.000"]"000.00000.00-0"expected "000.00000.00-0", threw: {error, invalid}
pis.format#["000.00000.00-0"]"000.00000.00-0"expected "000.00000.00-0", threw: {error, invalid}
pis.format#["000.00000.00-00"]"000.00000.00-0"expected "000.00000.00-0", threw: {error, invalid}
pis.format#["000#Error*&@#0000#Char!00000"]"000.00000.00-0"expected "000.00000.00-0", threw: {error, invalid}
pis.format#["#-+Error#000000000000#Char!"]"000.00000.00-0"expected "000.00000.00-0", threw: {error, invalid}
pis.format#["000000#+_Error#Char!$#000000"]"000.00000.00-0"expected "000.00000.00-0", threw: {error, invalid}
pis.format#[1]"1"expected "1", threw: error:function_clause
pis.format#[10]"10"expected "10", threw: error:function_clause
pis.format#[100]"100"expected "100", threw: error:function_clause
pis.format#[1000]"100.0"expected "100.0", threw: error:function_clause
pis.format#[10000]"100.00"expected "100.00", threw: error:function_clause
pis.format#[100000]"100.000"expected "100.000", threw: error:function_clause
pis.format#[1000000]"100.0000"expected "100.0000", threw: error:function_clause
pis.format#[10000000]"100.00000"expected "100.00000", threw: error:function_clause
pis.format#[100000000]"100.00000.0"expected "100.00000.0", threw: error:function_clause
pis.format#[1000000000]"100.00000.00"expected "100.00000.00", threw: error:function_clause
pis.format#[10000000000]"100.00000.00-0"expected "100.00000.00-0", threw: error:function_clause
pis.format#[100000000000]"100.00000.00-0"expected "100.00000.00-0", threw: error:function_clause
pis.format#[1000000000000]"100.00000.00-0"expected "100.00000.00-0", threw: error:function_clause
pis.format#[100.1]""expected "", threw: error:function_clause
pis.format#[100.11]""expected "", threw: error:function_clause
pis.format#[100.101]""expected "", threw: error:function_clause
pis.format#[100.1001]""expected "", threw: error:function_clause
pis.format#[100.10001]""expected "", threw: error:function_clause
pis.format#[100.100001]""expected "", threw: error:function_clause
pis.format#[100.1000001]""expected "", threw: error:function_clause
pis.format#[100.10000001]""expected "", threw: error:function_clause
pis.format#[100.100000001]""expected "", threw: error:function_clause
pis.format#["0000000000000"]"000.00000.00-0"expected "000.00000.00-0", threw: {error, invalid}
pis.format#["00000000000000"]"000.00000.00-0"expected "000.00000.00-0", threw: {error, invalid}
pis.format#["000000000000000"]"000.00000.00-0"expected "000.00000.00-0", threw: {error, invalid}
pis.format#[-12345678901]""expected "", threw: error:function_clause
pis.format#[9007199254740992]""expected "", threw: error:function_clause
pis.format#["12345678901"]"123.45678.90-1"expected "123.45678.90-1", threw: {error, invalid}
pis.isValid#repeated-digitsfalsetrue
pis.isValid#["120.5641.284-7"]truefalse
pis.isValid#["120/56874/10-7"]truefalse
pis.isValid#["120 56874 10 7"]truefalse
pis.isValid#["120.1213.266-0"]truefalse
pis.isValid#["120.7041.469-0"]truefalse
renavam.isValid#["0063988/4962"]truefalse
renavam.isValid#["639884962"]truefalse
renavam.isValid#[639884962]truefalse
renavam.isValid#["0063988.4962"]truefalse
renavam.isValid#["00639884-962"]truefalse
renavam.isValid#[" 00639884962 "]truefalse
renavam.isValid#[12345678900]truefalse
voterId.format#[""]""expected "", threw: {error, invalid}
voterId.format#["1"]"1"expected "1", threw: {error, invalid}
voterId.format#["12"]"12"expected "12", threw: {error, invalid}
voterId.format#["123"]"123"expected "123", threw: {error, invalid}
voterId.format#["1234"]"1234"expected "1234", threw: {error, invalid}
voterId.format#["12345"]"1234 5"expected "1234 5", threw: {error, invalid}
voterId.format#["123456"]"1234 56"expected "1234 56", threw: {error, invalid}
voterId.format#["1234567"]"1234 567"expected "1234 567", threw: {error, invalid}
voterId.format#["12345678"]"1234 5678"expected "1234 5678", threw: {error, invalid}
voterId.format#["123456780"]"1234 5678 0"expected "1234 5678 0", threw: {error, invalid}
voterId.format#["1234567801"]"1234 5678 01"expected "1234 5678 01", threw: {error, invalid}
voterId.format#["12345678012"]"1234 5678 01 2"expected "1234 5678 01 2", threw: {error, invalid}
voterId.format#["123456780124"]"1234 5678 01 24"expected "1234 5678 01 24", threw: {error, invalid}
voterId.format#["1234567880191"]"1234 5678 80 19"expected "1234 5678 80 19", threw: {error, invalid}
voterId.format#["1234567880299"]"1234 5678 80 29"expected "1234 5678 80 29", threw: {error, invalid}
voterId.format#["12345678801912"]"1234 5678 80 19"expected "1234 5678 80 19", threw: {error, invalid}
voterId.format#["123456788019123"]"1234 5678 80 19"expected "1234 5678 80 19", threw: {error, invalid}
voterId.format#["12345678803991"]"1234 5678 80 39"expected "1234 5678 80 39", threw: {error, invalid}
voterId.format#["1234567880399"]"1234 5678 80 39"expected "1234 5678 80 39", threw: {error, invalid}
voterId.format#["123456788"]"1234 5678 8"expected "1234 5678 8", threw: {error, invalid}
voterId.format#["123456788019"]"1234 5678 80 19"expected "1234 5678 80 19", threw: {error, invalid}
voterId.format#["123450159"]"1234 5015 9"expected "1234 5015 9", threw: {error, invalid}
voterId.format#[-123456780124]""expected "", threw: error:function_clause
voterId.format#[1.5]""expected "", threw: error:function_clause
voterId.format#[9007199254740992]""expected "", threw: error:function_clause
voterId.format#["123456780175"]"1234 5678 01 75"expected "1234 5678 01 75", threw: {error, invalid}
voterId.isValid#["1234567880191"]falsetrue
voterId.isValid#["1023-8501-06-71"]truefalse
voterId.isValid#["1023 8501 06 71"]truefalse
voterId.isValid#["1023.8501.06.71"]truefalse
voterId.isValid#["000010191"]truefalse
voterId.isValid#["123450159"]truefalse
voterId.isValid#["00123450159"]truefalse
voterId.isValid#["1 2345 01 59"]truefalse
voterId.isValid#["12345 01 59"]truefalse
voterId.isValid#["122844"]truefalse
voterId.isValid#["12340639"]truefalse
voterId.isValid#["1234 06 39"]truefalse
voterId.isValid#["10191"]truefalse
voterId.isValid#["0123456780191"]falsetrue
voterId.isValid#["0001.2345.01.59"]truefalse
voterId.isValid#["123 4567 01 91"]truefalse
voterId.isValid#["1023-8501/06-71"]truefalse
voterId.isValid#[" 1023 8501 06 71 "]truefalse

Funções sem exemplo de uso

Estas funções funcionam, mas os arquivos de uso da biblioteca não têm exemplo delas. A aba dessas funções neste site fica vazia.

Badge para o seu README

O badge mostra a parcela de funções principais e os casos que passam, e muda a cada execução. Cole este Markdown no README da biblioteca:

Contrato da API: 12.5% das funções principais, 340 casos compartilhados passam

[![Contrato da API](https://brazilian-utils.com.br/badges/erlang.svg)](https://brazilian-utils.com.br/libs/erlang/)

Nesta página