Class: CpfCnpjPlus::Validator::Cpf
- Inherits:
-
Object
- Object
- CpfCnpjPlus::Validator::Cpf
- Defined in:
- lib/cpf_cnpj_plus/validator/cpf.rb
Overview
Responsável por validar, formatar e manipular números de CPF. Inclui métodos para checagem de validade, geração e formatação.
Class Method Summary collapse
- .cpf_not_valid?(cpf) ⇒ Boolean
- .first_digit(cpf) ⇒ Object
- .second_digit(cpf) ⇒ Object
- .valid?(cpf) ⇒ Boolean
Class Method Details
.cpf_not_valid?(cpf) ⇒ Boolean
39 40 41 42 43 44 |
# File 'lib/cpf_cnpj_plus/validator/cpf.rb', line 39 def self.cpf_not_valid?(cpf) cpf = cpf.to_s.gsub(/[^0-9]/, "") %w[00000000000 11111111111 22222222222 33333333333 44444444444 55555555555 66666666666 77777777777 88888888888 99999999999].include?(cpf) end |
.first_digit(cpf) ⇒ Object
16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/cpf_cnpj_plus/validator/cpf.rb', line 16 def self.first_digit(cpf) base_digits = cpf[0..8] soma = 0 ponteiro = 10 base_digits.chars.each do |char| soma += char.to_i * ponteiro ponteiro -= 1 end result = soma * 10 % 11 result == cpf[9].to_i || (result == 10 && cpf[9].to_i.zero?) end |
.second_digit(cpf) ⇒ Object
28 29 30 31 32 33 34 35 36 37 |
# File 'lib/cpf_cnpj_plus/validator/cpf.rb', line 28 def self.second_digit(cpf) base_digits = cpf[0..9] soma = 0 ponteiro = 11 base_digits.chars.each do |char| soma += char.to_i * ponteiro ponteiro -= 1 end soma * 10 % 11 == cpf[10].to_i || (soma * 10 % 11 == 10 && cpf[10].to_i.zero?) end |
.valid?(cpf) ⇒ Boolean
8 9 10 11 12 13 14 |
# File 'lib/cpf_cnpj_plus/validator/cpf.rb', line 8 def self.valid?(cpf) cpf = cpf.to_s.gsub(/[^0-9]/, "") return false unless cpf.length == 11 && cpf =~ /^\d{11}$/ return false if cpf_not_valid?(cpf) first_digit(cpf) && second_digit(cpf) end |