Project

br-utils

0.0
No release in over 3 years
Brazilian Utils é uma biblioteca com foco na resolução de problemas que enfrentamos diariamente no desenvolvimento de aplicações para negócios no Brasil.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
 Dependencies

Development

~> 2.4
~> 13.0
~> 3.12
 Project Readme

🇧🇷 Brazilian Utils

Biblioteca de utilitários para dados específicos do Brasil / Utils library for Brazilian-specific data

Gem Version

🇧🇷 Português | 🇺🇸 English


Português

📋 Recursos

Utilitários para trabalhar com formatos de dados brasileiros:

  • CPF - Validação, formatação e geração
  • CNH - Validação de Carteira Nacional de Habilitação
  • CNPJ - Validação, formatação e geração
  • CEP - Validação, formatação e busca via API ViaCEP
  • Moeda - Formatação de Real (R$) e conversão para extenso
  • Data - Verificação de feriados e conversão para texto
  • Email - Validação (RFC 5322)
  • Natureza Jurídica - Validação de códigos oficiais
  • Processos Judiciais - Validação, formatação e geração
  • Placas de Veículos - Validação e conversão (antigo/Mercosul)
  • Telefone - Validação e formatação (móvel/fixo)
  • PIS - Validação, formatação e geração (PIS/PASEP)
  • RENAVAM - Validação de registro de veículos
  • Título de Eleitor - Validação, formatação e geração

💾 Instalação

gem 'br-utils'
bundle install

🚀 Uso Rápido

# CPF
require 'brazilian-utils/cpf-utils'
BrazilianUtils::CPFUtils.is_valid('11144477735')  # => true
BrazilianUtils::CPFUtils.format_cpf('11144477735')  # => "111.444.777-35"
BrazilianUtils::CPFUtils.generate  # => "12345678901"

# CNPJ
require 'brazilian-utils/cnpj-utils'
BrazilianUtils::CNPJUtils.is_valid('34665388000161')  # => true
BrazilianUtils::CNPJUtils.format_cnpj('34665388000161')  # => "34.665.388/0001-61"

# CEP
require 'brazilian-utils/cep-utils'
BrazilianUtils::CEPUtils.format_cep('01310100')  # => "01310-100"
BrazilianUtils::CEPUtils.get_address('01310100')  # => {...endereço completo...}

# Telefone
require 'brazilian-utils/phone-utils'
BrazilianUtils::PhoneUtils.is_valid('11987654321')  # => true
BrazilianUtils::PhoneUtils.format('11987654321')  # => "(11)98765-4321"

# Placa de Veículo
require 'brazilian-utils/license-plate-utils'
BrazilianUtils::LicensePlateUtils.is_valid('ABC1234')  # => true
BrazilianUtils::LicensePlateUtils.convert_to_mercosul('ABC1234')  # => "ABC1C34"

# Título de Eleitor
require 'brazilian-utils/voter-id-utils'
BrazilianUtils::VoterIdUtils.is_valid_voter_id('690847092828')  # => true
BrazilianUtils::VoterIdUtils.format('690847092828')  # => "6908 4709 28 28"
BrazilianUtils::VoterIdUtils.generate('SP')  # => "123456780140"

# Moeda
require 'brazilian-utils/currency-utils'
BrazilianUtils::CurrencyUtils.format_currency(1234.56)  # => "R$ 1.234,56"
BrazilianUtils::CurrencyUtils.number_to_text(1234.56)  # => "mil duzentos e trinta e quatro reais..."

📚 Documentação Detalhada

Para exemplos completos de cada utilitário, consulte a pasta examples/.

Principais Módulos:


English

📋 Features

Utilities for working with Brazilian data formats:

  • CPF - Validation, formatting, and generation
  • CNH - Driver's license validation
  • CNPJ - Company tax ID validation, formatting, and generation
  • CEP - Postal code validation, formatting, and address lookup (ViaCEP API)
  • Currency - Brazilian Real (R$) formatting and text conversion
  • Date - Holiday checking and date-to-text conversion
  • Email - Email validation (RFC 5322)
  • Legal Nature - Official business entity code validation
  • Legal Process - Judicial process ID validation, formatting, and generation
  • License Plate - Vehicle plate validation and format conversion (old/Mercosul)
  • Phone - Mobile and landline validation and formatting
  • PIS - Social security number validation, formatting, and generation
  • RENAVAM - Vehicle registration validation
  • Voter ID - Voter registration validation, formatting, and generation

💾 Installation

gem 'br-utils'
bundle install

🚀 Quick Start

# CPF
require 'brazilian-utils/cpf-utils'
BrazilianUtils::CPFUtils.is_valid('11144477735')  # => true
BrazilianUtils::CPFUtils.format_cpf('11144477735')  # => "111.444.777-35"
BrazilianUtils::CPFUtils.generate  # => "12345678901"

# CNPJ
require 'brazilian-utils/cnpj-utils'
BrazilianUtils::CNPJUtils.is_valid('34665388000161')  # => true
BrazilianUtils::CNPJUtils.format_cnpj('34665388000161')  # => "34.665.388/0001-61"

# CEP (Postal Code)
require 'brazilian-utils/cep-utils'
BrazilianUtils::CEPUtils.format_cep('01310100')  # => "01310-100"
BrazilianUtils::CEPUtils.get_address('01310100')  # => {...complete address...}

# Phone
require 'brazilian-utils/phone-utils'
BrazilianUtils::PhoneUtils.is_valid('11987654321')  # => true
BrazilianUtils::PhoneUtils.format('11987654321')  # => "(11)98765-4321"

# License Plate
require 'brazilian-utils/license-plate-utils'
BrazilianUtils::LicensePlateUtils.is_valid('ABC1234')  # => true
BrazilianUtils::LicensePlateUtils.convert_to_mercosul('ABC1234')  # => "ABC1C34"

# Voter ID
require 'brazilian-utils/voter-id-utils'
BrazilianUtils::VoterIdUtils.is_valid_voter_id('690847092828')  # => true
BrazilianUtils::VoterIdUtils.format('690847092828')  # => "6908 4709 28 28"
BrazilianUtils::VoterIdUtils.generate('SP')  # => "123456780140"

# Currency
require 'brazilian-utils/currency-utils'
BrazilianUtils::CurrencyUtils.format_currency(1234.56)  # => "R$ 1.234,56"
BrazilianUtils::CurrencyUtils.number_to_text(1234.56)  # => "mil duzentos e trinta e quatro reais..."

📚 Full Documentation

For detailed examples of each utility, check the examples/ folder.

Main Modules:


🧪 Development

# Install dependencies
bundle install

# Run tests
bundle exec rspec

# Run specific test
bundle exec rspec spec/cpf_utils_spec.rb

📖 API Reference

Common Patterns

Most utilities follow these patterns:

Validation:

.is_valid(value)      # Main validation method
.valid?(value)        # Alias for is_valid

Formatting:

.format(value)        # Format with standard symbols
.remove_symbols(value) # Remove formatting symbols

Generation:

.generate             # Generate random valid value

Utility-Specific Methods

CEP:

  • get_address(cep) - Fetch address from CEP
  • get_cep_information_from_address(uf, city, street) - Find CEPs

Phone:

  • is_valid(phone, type:) - Validate with type (:mobile or :landline)
  • remove_international_dialing_code(phone) - Remove +55/55

License Plate:

  • convert_to_mercosul(plate) - Convert old format to Mercosul
  • get_format(plate) - Detect format ("LLLNNNN" or "LLLNLNN")

Voter ID:

  • generate(uf) - Generate for specific state

Currency:

  • format_currency(value) - Format as R$ X.XXX,XX
  • number_to_text(value) - Convert to Brazilian Portuguese text

Date:

  • is_holiday(date, uf) - Check if date is holiday
  • convert_date_to_text(date) - Convert to Portuguese text

Legal Nature:

  • get_description(code) - Get description for code
  • list_by_category(category) - List codes by category (1-5)

Legal Process:

  • generate(year, orgao) - Generate for specific year and judicial segment

📊 Examples by Use Case

Form Validation

# Validate user input
cpf = params[:cpf]
if BrazilianUtils::CPFUtils.valid?(cpf)
  # Process valid CPF
else
  errors.add(:cpf, "inválido")
end

Display Formatting

# Format for display
cpf = "11144477735"
formatted = BrazilianUtils::CPFUtils.format_cpf(cpf)
puts formatted  # => "111.444.777-35"

Test Data Generation

# Generate test data
10.times do
  cpf = BrazilianUtils::CPFUtils.generate
  puts BrazilianUtils::CPFUtils.format_cpf(cpf)
end

API Integration

# Lookup address from CEP
address = BrazilianUtils::CEPUtils.get_address('01310100')
if address
  puts "#{address.logradouro}, #{address.bairro}"
  puts "#{address.localidade} - #{address.uf}"
end

🤝 Contributing

Contributions are welcome! Please feel free to submit pull requests.

Como contribuir / How to contribute:

  1. Fork o projeto / Fork the project
  2. Crie seu branch (git checkout -b feature/AmazingFeature)
  3. Commit suas mudanças (git commit -m 'Add some AmazingFeature')
  4. Push para o branch (git push origin feature/AmazingFeature)
  5. Abra um Pull Request / Open a Pull Request

📄 License

Este projeto está licenciado sob a Licença MIT - veja o arquivo LICENSE.txt para detalhes.

This project is licensed under the MIT License - see the LICENSE.txt file for details.

🙏 Acknowledgments

Baseado na implementação Python: brazilian-utils/python

Based on the Python implementation: brazilian-utils/python

📞 Support


Made with ❤️ for the Brazilian Ruby community