[Pymoul-svn] SF.net SVN: pymoul: [244] pymoul/trunk/src/moul/time/edergira.py
Status: Alpha
Brought to you by:
tiran
From: <ti...@us...> - 2007-03-08 20:03:03
|
Revision: 244 http://pymoul.svn.sourceforge.net/pymoul/?rev=244&view=rev Author: tiran Date: 2007-03-08 12:02:56 -0800 (Thu, 08 Mar 2007) Log Message: ----------- Added iterator to edergira.py Modified Paths: -------------- pymoul/trunk/src/moul/time/edergira.py Modified: pymoul/trunk/src/moul/time/edergira.py =================================================================== --- pymoul/trunk/src/moul/time/edergira.py 2007-03-08 12:57:43 UTC (rev 243) +++ pymoul/trunk/src/moul/time/edergira.py 2007-03-08 20:02:56 UTC (rev 244) @@ -26,6 +26,18 @@ >>> eg = egdc.getDayInfo(sunset) >>> eg.state, eg.light, eg.hour (<dusk>, 0.75, 7.25) + +>>> egdc.getLastMidnight(sunset) +datetime.datetime(2007, 3, 8, 4, 15, tzinfo=<UTC>) + +>>> gen = egdc.iterDates(sunset) +>>> type(gen) +<type 'generator'> + +>>> gen.next() +(1, datetime.datetime(2007, 3, 8, 14, 15, tzinfo=<UTC>), datetime.datetime(2007, 3, 8, 16, 30, tzinfo=<UTC>), datetime.datetime(2007, 3, 8, 21, 30, tzinfo=<UTC>)) +>>> gen.next() +(2, datetime.datetime(2007, 3, 9, 0, 15, tzinfo=<UTC>), datetime.datetime(2007, 3, 9, 2, 30, tzinfo=<UTC>), datetime.datetime(2007, 3, 9, 7, 30, tzinfo=<UTC>)) """ __author__ = "Christian Heimes" __version__ = "$Id" @@ -65,11 +77,15 @@ class EderGiraDayCalculator(object): """Eder Gira day cycle calculator """ + _basedt = datetime(2007, 3, 8, 4, 15, 0, tzinfo=UTC) # midnight + _hours = 10 # hours per day cycle + _delta = timedelta(days=0, hours=_hours) + _deltasec = _hours * 3600 + _dawn = timedelta(days=0, hours=2, minutes=15) + _dusk = timedelta(days=0, hours=7, minutes=15) + def __init__(self): - self._basedt = datetime(2007, 3, 8, 4, 15, 0, tzinfo=UTC) # midnight - self._hours = 10 - self._delta = timedelta(days=0, hours=self._hours) - self._deltasec = self._hours * 3600 + pass def getLastMidnight(self, dt=None): """Get last midnight in relation to dt (or now) @@ -87,6 +103,21 @@ sec = td2sec(dt - self._basedt) return EderGiraDay(round(sec / 3600.0, 2) % self._hours) + def iterDates(self, dt=None): + """Iter over dates + + @return: n, midnight, dawn, dusk + """ + base = self.getLastMidnight(dt) + self._delta + n = 1 + while True: + yield (n, base, base+self._dawn, base+self._dusk) + base += self._delta + n +=1 + + def __iter__(self): + return self.iterDates() + class EderGiraDay(object): """An Eder Gira day representation This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |