From a02bf88c6e4443814c9fc9db9afe88696693ece6 Mon Sep 17 00:00:00 2001 From: ulif <uli@gnufix.de> Date: Wed, 29 Jul 2015 17:19:18 +0200 Subject: [PATCH] Make WordList a generator. --- diceware/wordlist.py | 5 +++++ tests/test_wordlist.py | 7 +++++++ 2 files changed, 12 insertions(+) diff --git a/diceware/wordlist.py b/diceware/wordlist.py index b3fa174..e2308bb 100644 --- a/diceware/wordlist.py +++ b/diceware/wordlist.py @@ -154,3 +154,8 @@ class WordList(object): else: self.fd = path_or_filelike self.signed = is_signed_wordlist(self.fd) + + def __iter__(self): + self.fd.seek(0) + for line in self.fd: + yield refine_wordlist_entry(line, signed=self.signed) diff --git a/tests/test_wordlist.py b/tests/test_wordlist.py index 678c7be..29ccb3a 100644 --- a/tests/test_wordlist.py +++ b/tests/test_wordlist.py @@ -232,3 +232,10 @@ class TestWordList(object): os.path.dirname(__file__), "sample_signed_wordlist.asc") w_list = WordList(in_path) assert w_list.signed is True + + def test_wordlists_are_generators(self, tmpdir): + # WordList instances act like generators. + in_file = tmpdir.mkdir("work").join("mywordlist") + in_file.write("foo\nbar\n") + w_list = WordList(str(in_file)) + assert list(w_list) == ["foo", "bar"] -- GitLab