From 5aa52d1b5e531c6588d66581c2de3b008a43071c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lvaro=20Ferreira=20Pires=20de=20Paiva?= Date: Wed, 27 Mar 2019 15:38:53 -0300 Subject: [PATCH] =?UTF-8?q?M=C3=A9todo=20generate=5Flist?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- validate_docbr/BaseDoc.py | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/validate_docbr/BaseDoc.py b/validate_docbr/BaseDoc.py index 2559fce..9ef76c8 100644 --- a/validate_docbr/BaseDoc.py +++ b/validate_docbr/BaseDoc.py @@ -4,7 +4,7 @@ class BaseDoc(ABC): """Classe base para todas as classes referentes a documentos.""" - def validate(self, doc: str) -> bool: + def validate(self, doc: str = '') -> bool: """Método para validar o documento desejado.""" pass @@ -12,10 +12,31 @@ def generate(self, mask: bool = False) -> str: """Método para gerar um documento válido.""" pass - def mask(self, doc: str) -> str: + def generate_list(self, n: int = 1, mask: bool = False, repeat: bool = False) -> list: + """Gerar uma lista do mesmo documento.""" + doc_list = [] + + if n <= 0: + return doc_list + + for i in range(n): + doc_list.append(self.generate(mask)) + + while not repeat: + doc_set = set(doc_list) + unique_values = len(doc_set) + + if unique_values < n: + doc_list = list(doc_set) + self.generate_list((n-unique_values), mask, repeat) + else: + repeat = True + + return doc_list + + def mask(self, doc: str = '') -> str: """Mascara o documento enviado""" pass - def _only_digits(self, doc: str) -> str: + def _only_digits(self, doc: str = '') -> str: """Remove os outros caracteres que não sejam dígitos.""" return "".join([x for x in doc if x.isdigit()])