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.
|