Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,8 @@ False

### What if my string has formatting symbols in it?
```
>>> cpf.sieve('000.111.222-33')
>>> from brutils import parse_cpf
>>> parse_cpf('000.111.222-33')
'00011122233'
>>> cnpj.sieve('00.111.222/0001-00')
'00111222000100'
Expand Down
3 changes: 2 additions & 1 deletion README_PT_BR.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,8 @@ False

### E se a minha string estiver formatada com simbolos?
```
>>> cpf.sieve('000.111.222-33')
>>> from brutils import parse_cpf
>>> parse_cpf('000.111.222-33')
'00011122233'
>>> cnpj.sieve('00.111.222/0001-00')
'00111222000100'
Expand Down
2 changes: 1 addition & 1 deletion brutils/__init__.py
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
from brutils.cpf import is_valid as is_valid_cpf, format_cpf
from brutils.cpf import is_valid as is_valid_cpf, format_cpf, parse as parse_cpf
from brutils.cnpj import is_valid as is_valid_cnpj, format_cnpj
11 changes: 11 additions & 0 deletions brutils/cpf.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,17 @@ def sieve(dirty): # type: (str) -> str
return "".join(filter(lambda char: char not in ".-", dirty))


def parse(dirty): # type: (str) -> str
"""
Filters out CPF formatting symbols. Symbols that are not used
in the CPF formatting are left unfiltered on purpose so that
if fails other tests, because their presence indicate that the
input was somehow corrupted.
"""

return sieve(dirty)


def display(cpf): # type: (str) -> str
"""
Will format an adequately formatted numbers-only CPF string,
Expand Down
9 changes: 9 additions & 0 deletions tests/test_cpf.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
generate,
is_valid,
format_cpf,
parse,
)
from unittest import TestCase, main

Expand All @@ -30,6 +31,14 @@ def test_sieve(self):
assert sieve("ab.c1.--.2-309.-1-.6-.*.-!*&#") == "abc1230916*!*&#"
assert sieve("...---...") == ""

def test_parse(self):
assert parse("00000000000") == "00000000000"
assert parse("123.456.789-10") == "12345678910"
assert parse("134..2435.-1892.-") == "13424351892"
assert parse("abc1230916*!*&#") == "abc1230916*!*&#"
assert parse("ab.c1.--.2-309.-1-.6-.*.-!*&#") == "abc1230916*!*&#"
assert parse("...---...") == ""

def test_display(self):
assert display("00000000011") == "000.000.000-11"
assert display("00000000000") is None
Expand Down