diff options
author | Mathieu Le Marec - Pasquet <kiorky@cryptelium.net> | 2014-01-29 13:01:45 +0100 |
---|---|---|
committer | Mathieu Le Marec - Pasquet <kiorky@cryptelium.net> | 2014-01-29 13:01:45 +0100 |
commit | 2dd3c1f9915d80442848a1383a0392a35a34775c (patch) | |
tree | 2a7fa6fb6c0b0c5ad475fb1eeb5c73a22012b8ad | |
parent | 9632af58c0dd1fcc504ede3fbea9932e640a5750 (diff) | |
parent | 737b639156c49ad2dceb426aa027872edbfcaac0 (diff) | |
download | croniter-2dd3c1f9915d80442848a1383a0392a35a34775c.tar.gz |
Merge remote-tracking branch 'gh3/patch-1'
-rw-r--r-- | src/croniter/croniter.py | 16 |
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[:] |