-
-
Notifications
You must be signed in to change notification settings - Fork 107
Description
Seu pedido de recurso está relacionado a um problema? Por favor, descreva.
Queremos uma função que formate o Registro Geral (RG) brasileiro de acordo com o estado (UF) correspondente. Cada estado pode ter um formato diferente, e a formatação correta é crucial para a padronização e validação de documentos.
Descreva a solução que você gostaria
- Uma função
format_rg, que recebe como entrada o RG (string) e a Unidade Federativa (UF) (string) e retorna o RG formatado (string). - Caso a entrada seja inválida, a função deve retornar
None. - A função deve considerar os formatos de RG de todos os estados brasileiros e lidar com possíveis edge cases, como:
- RGs com espaços extras.
- RGs com caracteres especiais ou inválidos.
- RGs que já estão parcialmente formatados.
- RGs com tamanhos fora do padrão.
- A função deve garantir que o RG esteja no formato correto antes de ser retornado.
Descreva alternativas que você considerou
-
Seguir até o passo 8 do guia de contribuição.
-
Como parte do passo 8, criar o arquivo:
brutils-python/brutils/rg.py.def format_rg(rg, uf): # type: (str, str) -> str | None """ Formats a Brazilian RG (Registro Geral) based on the state (UF). This function takes a Brazilian RG and formats it according to the specific requirements of the given UF. It should handle various input formats and ensure the output is standardized. Args: rg (str): The RG to be formatted. uf (str): The state (UF) for which the RG should be formatted. Returns: str or None: The formatted RG if valid, or None if the input is invalid. Example: >>> format_rg('12.345.678-9', 'SP') "12.345.678-9" >>> format_rg('MG-12.345.678', 'MG') "MG-12.345.678" >>> format_rg('123456789', 'RJ') "12.345.678-9" >>> format_rg('A12345678', 'SP') None >>> format_rg('12.345.678', 'SP') None """ # implementar a lógica da função aqui
Importar a nova função no arquivo
brutils-python/brutils/__init__.py:# RG Imports from brutils.rg import ( format_rg, )
E adicionar o nome da nova função na lista
__all__do mesmo arquivobrutils-python/brutils/__init__.py:__all__ = [ ... # RG 'format_rg', ]
-
Como parte do passo 9, criar o arquivo de teste:
brutils-python/tests/test_rg.py.from unittest import TestCase from brutils.rg import format_rg class TestRG(TestCase): def test_format_rg(self): # Testes para RGs válidos self.assertEqual(format_rg('12.345.678-9', 'SP'), "12.345.678-9") self.assertEqual(format_rg('MG-12.345.678', 'MG'), "MG-12.345.678") self.assertEqual(format_rg('123456789', 'RJ'), "12.345.678-9") # Testes para RGs inválidos self.assertIsNone(format_rg('A12345678', 'SP')) # Letras não permitidas self.assertIsNone(format_rg('1234567890', 'SP')) # RG longo demais self.assertIsNone(format_rg('12.345.678-10', 'SP')) # Dígito verificador incorreto # Testes para entradas malformadas self.assertIsNone(format_rg('', 'SP')) # Entrada vazia self.assertIsNone(format_rg('12.345.678', 'SP')) # Formato incorreto sem dígito verificador self.assertIsNone(format_rg('12.345.678-9', 'XX')) # UF inválida self.assertIsNone(format_rg('12 345 678-9', 'SP')) # RG com espaços extras self.assertIsNone(format_rg('12.34.5678', 'SP')) # RG com formato incorreto # Adicionar mais casos de teste se necessário
-
Seguir os passos seguintes do guia de contribuição.
Contexto adicional
- A formatação de RG é importante para garantir a padronização dos documentos e facilitar a validação em sistemas que dependem de informações precisas.
- A função deve lidar com a normalização de texto, garantindo que o RG seja processado de maneira consistente antes da formatação final.
Metadata
Metadata
Assignees
Labels
Type
Projects
Status