<commit_before>package models

import (
	"regexp"
	"strings"
)

// Document nó com o tipo de documento e número do documento
type Document struct {
	Type   DocumentType
	Number DocumentNumber
}

// DocumentType o tipo de documento pode ser CPF ou CNPJ
type DocumentType string

// IsCpf diz se o DocumentType é um CPF
func (d DocumentType) IsCpf() bool {
	return strings.ToUpper(string(d)) == "CPF"
}

// IsCnpj diz se o DocumentType é um CNPJ
func (d DocumentType) IsCnpj() bool {
	return strings.ToUpper(string(d)) == "CNPJ"
}

// DocumentNumber o número do documento, poder ser um CPF ou CNPJ
type DocumentNumber string

// ValidateCPF verifica se é um CPF válido
func (d *Document) ValidateCPF() error {
	re := regexp.MustCompile("(\\D+)")
	cpf := re.ReplaceAllString(string(d.Number), "")
	if len(cpf) == 11 {
		d.Number = DocumentNumber(cpf)
		return nil
	}
	return NewErrorResponse("MPDocumentNumber", "CPF inválido")
}

// IsCnpj verifica se é um Cnpj válido
func (d DocumentNumber) IsCnpj() bool {
	return len(d) == 14
}<commit_msg>:art: Muda validação do CNPJ pro novo padrão<commit_after>package models

import (
	"regexp"
	"strings"
)

// Document nó com o tipo de documento e número do documento
type Document struct {
	Type   DocumentType
	Number DocumentNumber
}

// DocumentType o tipo de documento pode ser CPF ou CNPJ
type DocumentType string

// IsCpf diz se o DocumentType é um CPF
func (d DocumentType) IsCpf() bool {
	return strings.ToUpper(string(d)) == "CPF"
}

// IsCnpj diz se o DocumentType é um CNPJ
func (d DocumentType) IsCnpj() bool {
	return strings.ToUpper(string(d)) == "CNPJ"
}

// DocumentNumber o número do documento, poder ser um CPF ou CNPJ
type DocumentNumber string

// ValidateCPF verifica se é um CPF válido
func (d *Document) ValidateCPF() error {
	re := regexp.MustCompile("(\\D+)")
	cpf := re.ReplaceAllString(string(d.Number), "")
	if len(cpf) == 11 {
		d.Number = DocumentNumber(cpf)
		return nil
	}
	return NewErrorResponse("MPDocumentNumber", "CPF inválido")
}

// ValidateCNPJ verifica se é um CNPJ válido
func (d *Document) ValidateCNPJ() error {
	re := regexp.MustCompile("(\\D+)")
	cnpj := re.ReplaceAllString(string(d.Number), "")
	if len(cnpj) == 14 {
		d.Number = DocumentNumber(cnpj)
		return nil
	}
	return NewErrorResponse("MPDocumentNumber", "CNPJ inválido")
}
{'fraction_non_alphanumeric': 0.11417492460146489, 'fraction_numerical': 0.0034467901766479965, 'mean_word_length': 4.277272727272727, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '7204404', 'n_tokens_mistral': 835, 'n_tokens_neox': 829, 'n_words': 267}