cpf v1.0.0
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.
Installation
-
Add the dependency to your
shard.yml
:dependencies: cpf: github: stephannv/cpf
-
Run
shards install
Usage
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
shards install
to install dependenciescrystal spec
to run tests
Contributing
- Fork it (https://github.com/stephannv/cpf/fork)
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create a new Pull Request
Contributors
- stephann - creator and maintainer
cpf
- 1
- 0
- 0
- 0
- 1
- 2 days ago
- January 28, 2025
MIT License
Thu, 30 Jan 2025 08:53:35 GMT