diff --git a/diceware/wordlist.py b/diceware/wordlist.py index b3fa1749065b4de3eb9c93ed928fa62bf2c840f9..e2308bb250a30abc6b2bd060deb3b9125da09f95 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 678c7be4a5d29842db924f3e7d049570c66fd391..29ccb3a742bb61025a82cad1dce1e99694cf1488 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"]