1.1 --- a/tests/qualifiers.py Sat Oct 04 19:50:55 2014 +0200
1.2 +++ b/tests/qualifiers.py Sat Oct 04 19:52:31 2014 +0200
1.3 @@ -542,4 +542,24 @@
1.4 print l[-1] == (2003, 3, 10, 9, 0, 0), l[-1]
1.5 print
1.6
1.7 +qualifiers = [
1.8 + ("YEARLY", {"interval" : 3}),
1.9 + ("BYYEARDAY", {"values" : [1, 100, 200]})
1.10 + ]
1.11 +
1.12 +l = order_qualifiers(qualifiers)
1.13 +show(l)
1.14 +dt = (1997, 1, 1, 9, 0, 0)
1.15 +l = get_datetime_structure(dt)
1.16 +show(l)
1.17 +l = combine_datetime_with_qualifiers(dt, qualifiers)
1.18 +show(l)
1.19 +
1.20 +s = process(l)
1.21 +l = s.materialise(dt, (2006, 2, 1, 0, 0, 0), 10)
1.22 +print len(l) == 10, len(l)
1.23 +print l[0] == (1997, 1, 1, 9, 0, 0), l[0]
1.24 +print l[-1] == (2006, 1, 1, 9, 0, 0), l[-1]
1.25 +print
1.26 +
1.27 # vim: tabstop=4 expandtab shiftwidth=4
2.1 --- a/vRecurrence.py Sat Oct 04 19:50:55 2014 +0200
2.2 +++ b/vRecurrence.py Sat Oct 04 19:52:31 2014 +0200
2.3 @@ -390,6 +390,22 @@
2.4 results += self.materialise_item(current, max(current, start), min(next, end), counter)
2.5 return results
2.6
2.7 +class YearDayFilter(Enum):
2.8 + def materialise_items(self, context, start, end, counter):
2.9 + first_day = date(context[0], 1, 1)
2.10 + next_first_day = date(context[0] + 1, 1, 1)
2.11 + year_length = (next_first_day - first_day).days
2.12 + step = scale(1, self.pos)
2.13 + results = []
2.14 + for value in self.args["values"]:
2.15 + if value < 0:
2.16 + value = year_length + 1 + value
2.17 + current = (first_day + timedelta(value - 1)).timetuple()[:3]
2.18 + if current < end and (counter is None or counter[0] < counter[1]):
2.19 + next = update(current, step)
2.20 + results += self.materialise_item(current, max(current, start), min(next, end), counter)
2.21 + return results
2.22 +
2.23 def process(selectors):
2.24 current = selectors[0]
2.25 for selector in selectors[1:]:
2.26 @@ -400,7 +416,7 @@
2.27 special_enum_levels = {
2.28 "BYDAY" : WeekDayFilter,
2.29 "BYMONTHDAY" : MonthDayFilter,
2.30 - #"BYYEARDAY" : YearDayFilter,
2.31 + "BYYEARDAY" : YearDayFilter,
2.32 }
2.33
2.34 # vim: tabstop=4 expandtab shiftwidth=4