39 lines
1.1 KiB
Python
39 lines
1.1 KiB
Python
import logging
|
|
import pathlib
|
|
import typing
|
|
|
|
import unidecode
|
|
|
|
|
|
class WordList:
|
|
__slots__ = ["__filepath", "__name", "logger", "words"]
|
|
|
|
def __init__(self, name: str, path: str, filename: str) -> None:
|
|
self.logger: logging.Logger = logging.getLogger(self.__class__.__name__)
|
|
self.__name = name
|
|
self.__filepath = pathlib.Path(__file__).parent / ".." / path / filename
|
|
self.words: list[str] = []
|
|
|
|
def open(self) -> None:
|
|
with self.__filepath.open(encoding="utf-8") as file:
|
|
self.words = list(
|
|
filter(lambda v: len(v) > 0, map(self.__escape_word, file.readlines()))
|
|
)
|
|
self.logger.info("[%s] Loaded %d words", self.__name, len(self.words))
|
|
|
|
def __escape_word(self, word: str) -> str:
|
|
word = unidecode.unidecode(word.strip()).lower()
|
|
if " " in word:
|
|
return ""
|
|
return word
|
|
|
|
def close(self) -> None:
|
|
pass
|
|
|
|
def __enter__(self) -> typing.Self:
|
|
self.open()
|
|
return self
|
|
|
|
def __exit__(self, *_: object) -> None:
|
|
self.close()
|