Coverage for src/typoglycemia/main.py: 62%
24 statements
« prev ^ index » next coverage.py v7.6.1, created at 2024-09-22 16:36 +0900
« prev ^ index » next coverage.py v7.6.1, created at 2024-09-22 16:36 +0900
1import random
2import argparse
3import re
5__version__ = "0.1.0"
8def shuffle(word):
9 if len(word) <= 3:
10 return word
12 parts = re.split(r'([_\W]+)', word)
13 shuffled_parts = [
14 part if len(part) <= 3 or not part.isalnum() else part[0] + ''.join(random.sample(part[1:-1], len(part[1:-1]))) + part[-1]
15 for part in parts
16 ]
18 return ''.join(shuffled_parts)
21def make_typoglycemia(sentence):
22 if not sentence:
23 return ""
25 return ' '.join(shuffle(word) for word in sentence.split())
28def cli() -> int:
29 parser = argparse.ArgumentParser(
30 prog="Typoglycemia",
31 description="CLI tool to display text with Typoglycemia effect.",
32 )
34 parser.add_argument("-t", "--text", required=True, help="Text to process.")
35 parser.add_argument(
36 "-v",
37 "--version",
38 action="version",
39 version=__version__,
40 )
41 args = parser.parse_args()
43 typoglycemia = make_typoglycemia(args.text)
44 print(typoglycemia)
45 return 0
48if __name__ == "__main__":
49 cli()