cpf v1.0.0

CPF number validation and formatting for Crystal

CPF

CPF number validation and formatting for Crystal.

CPF (Cadastro de Pessoa Físical) is the Brazilian individual taxpayer registry. It's an 11-digit number in the format 000.000.000-00, where the last 2 numbers are check digits, generated through an arithmetic operation on the first nine digits.

API Reference

Installation

  1. Add the dependency to your shard.yml:

    dependencies:
      cpf:
        github: stephannv/cpf
    
  2. Run shards install

Usage

API Reference

require "cpf"

# With valid formatted value
cpf = CPF.new("640.061.830-97")
cpf.value # => "640.061.830-97"
cpf.formatted # => "640.061.830-97"
cpf.unformatted # => "64006183097"

# With valid unformatted value
cpf = CPF.new("64006183097")
cpf.value # => "64006183097"
cpf.formatted # => "640.061.830-97"
cpf.unformatted # => "64006183097"

A CPF object is designed to never hold an invalid value, so you can assume that a CPF object will always hold a valid value. If you try to initialize a CPF object with an invalid value, it will raise an exception:

CPF.new("11111111111") # => raises `ArgumentError`

CPF.new("111.111.111-11") # => raises `ArgumentError`

To safely initialize a CPF object, use the .parse method:

# With invalid value
CPF.parse("11111111111") # => nil

# With valid value
CPF.parse("640.061.830-97") # => #<CPF:0x104fe0ae0 @value="640.061.830-97">

You can use CPF::Validator module to validate a CPF number:

CPF::Validator.valid?("11111111111") # => false

CPF::Validator.valid?("640.061.830-97") # => true

Development

  1. shards install to install dependencies
  2. crystal spec to run tests

Contributing

  1. Fork it (https://github.com/stephannv/cpf/fork)
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request

Contributors

Repository

cpf

Owner
Statistic
  • 1
  • 0
  • 0
  • 0
  • 1
  • 2 days ago
  • January 28, 2025
License

MIT License

Links
Synced at

Thu, 30 Jan 2025 08:53:35 GMT

Languages