summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMathieu Le Marec - Pasquet <kiorky@cryptelium.net>2014-01-29 13:01:45 +0100
committerMathieu Le Marec - Pasquet <kiorky@cryptelium.net>2014-01-29 13:01:45 +0100
commit2dd3c1f9915d80442848a1383a0392a35a34775c (patch)
tree2a7fa6fb6c0b0c5ad475fb1eeb5c73a22012b8ad
parent9632af58c0dd1fcc504ede3fbea9932e640a5750 (diff)
parent737b639156c49ad2dceb426aa027872edbfcaac0 (diff)
downloadcroniter-2dd3c1f9915d80442848a1383a0392a35a34775c.tar.gz
Merge remote-tracking branch 'gh3/patch-1'
-rw-r--r--src/croniter/croniter.py16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/croniter/croniter.py b/src/croniter/croniter.py
index 8b55b6e..bd7c4ef 100644
--- a/src/croniter/croniter.py
+++ b/src/croniter/croniter.py
@@ -141,6 +141,22 @@ class croniter(object):
return datetime.datetime.fromtimestamp(self.cur)
return self.cur
+ # iterator protocol, to enable direct use of croniter objects in a loop, like "for dt in croniter('5 0 * * *'): ..."
+ # or for combining multiple croniters into single dates feed using 'itertools' module
+ def __iter__(self): return self
+ __next__ = next = get_next
+
+ def all_next(self, ret_type=float):
+ "Generator of all consecutive dates. Can be used instead of implicit call to __iter__, whenever non-default 'ret_type' has to be specified."
+ while True: yield self._get_next(ret_type, is_prev=False)
+
+ def all_prev(self, ret_type=float):
+ "Generator of all previous dates."
+ while True: yield self._get_next(ret_type, is_prev=True)
+
+ iter = all_next # alias, you can call .iter() instead of .all_next()
+
+
def _get_next(self, ret_type=float, is_prev=False):
expanded = self.expanded[:]