From: Scott Date: Thu, 13 Jan 2022 04:58:40 +0000 (-0800) Subject: Adds doctests. X-Git-Url: https://wannabe.guru.org/gitweb/?a=commitdiff_plain;h=a38d345b8b9348bab10c3e359997aadad814a6a1;p=python_utils.git Adds doctests. --- diff --git a/profanity_filter.py b/profanity_filter.py index fe54221..db014e1 100755 --- a/profanity_filter.py +++ b/profanity_filter.py @@ -470,6 +470,18 @@ class ProfanityFilter(object): self.stemmer = PorterStemmer() def _normalize(self, text: str) -> str: + """Normalize text. + + >>> _normalize('Tittie5') + 'titties' + + >>> _normalize('Suck a Dick!') + 'suck a dick' + + >>> _normalize('fucking a whore') + 'fuck a whore' + + """ result = text.lower() result = result.replace("_", " ") result = result.replace('0', 'o') @@ -485,6 +497,19 @@ class ProfanityFilter(object): return ' '.join(chunks) def contains_bad_word(self, text: str) -> bool: + """Returns True if text contains a bad word (or more than one) + and False if no bad words were detected. + + >>> contains_bad_word('fuck you') + True + + >>> contains_bad_word('FucK u') + True + + >>> contains_bad_word('FuK U') + False + + """ words = nltk.word_tokenize(text) for word in words: if self.is_bad_word(word): @@ -513,7 +538,10 @@ class ProfanityFilter(object): ) def obscure_bad_words(self, text: str) -> str: + """Obscure bad words that are detected by inserting random punctuation + characters. + """ def obscure(word: str): out = '' last = '' @@ -556,6 +584,8 @@ class ProfanityFilter(object): def main() -> None: + import doctest + doctest.testmod() pf = ProfanityFilter() phrase = ' '.join(sys.argv[1:]) print(pf.contains_bad_word(phrase))