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