Class: BraDocuments::CPFGenerator
- Inherits:
-
NationalRegisterBase
- Object
- NationalRegisterBase
- BraDocuments::CPFGenerator
- Defined in:
- lib/bra_documents/cpf_generator.rb
Constant Summary collapse
- PERSON_NUMBER_SIZE =
9
Constants inherited from NationalRegisterBase
Class Method Summary collapse
-
.generate(person_number: nil, formatted: false) ⇒ Object
Generates a random CPF document number or add verifying digits to one if it's given.
-
.valid_verification_digit?(document:) ⇒ Boolean
Returns if a CPF has a valid verification digit.
Class Method Details
.generate(person_number: nil, formatted: false) ⇒ Object
Generates a random CPF document number or add verifying digits to one if it's given. It can return only numbers or formatted with mask
BraDocuments::CPFGenerator.generate
# => "86027265892"
BraDocuments::CPFGenerator.generate(formatted: true)
# => "038.857.544-10"
BraDocuments::CPFGenerator.generate(person_number: '123123123')
# => "12312312387"
BraDocuments::CPFGenerator.generate(person_number: '123123123', formatted: true)
# => "123.123.123-87"
25 26 27 28 29 30 |
# File 'lib/bra_documents/cpf_generator.rb', line 25 def generate(person_number: nil, formatted: false) numbers = number_for('Person', PERSON_NUMBER_SIZE, person_number) full_number = complete!(numbers) formatted ? Formatter.format(full_number, as: :cpf) : full_number end |
.valid_verification_digit?(document:) ⇒ Boolean
Returns if a CPF has a valid verification digit.
BraDocuments::CPFGenerator.valid_verification_digit?(document: '111.111.111-11')
# => false
BraDocuments::CPFGenerator.valid_verification_digit?(document: '123.456.700-88')
# => true
BraDocuments::CPFGenerator.valid_verification_digit?(document: '12345670088')
# => true
42 43 44 45 46 47 48 49 50 |
# File 'lib/bra_documents/cpf_generator.rb', line 42 def valid_verification_digit?(document:) raw_document = Formatter.raw(document) return false if black_listed?(raw_document) || !Matcher.match?(raw_document, kind: :cpf, mode: :raw) person_number = raw_document.slice(0..(PERSON_NUMBER_SIZE - 1)) verified_digit = raw_document.slice(PERSON_NUMBER_SIZE..(raw_document.size - 1)) generate(person_number: person_number).end_with?(verified_digit) end |