1.1 --- a/vRecurrence.py Sat Oct 04 19:50:55 2014 +0200
1.2 +++ b/vRecurrence.py Sat Oct 04 19:52:31 2014 +0200
1.3 @@ -390,6 +390,22 @@
1.4 results += self.materialise_item(current, max(current, start), min(next, end), counter)
1.5 return results
1.6
1.7 +class YearDayFilter(Enum):
1.8 + def materialise_items(self, context, start, end, counter):
1.9 + first_day = date(context[0], 1, 1)
1.10 + next_first_day = date(context[0] + 1, 1, 1)
1.11 + year_length = (next_first_day - first_day).days
1.12 + step = scale(1, self.pos)
1.13 + results = []
1.14 + for value in self.args["values"]:
1.15 + if value < 0:
1.16 + value = year_length + 1 + value
1.17 + current = (first_day + timedelta(value - 1)).timetuple()[:3]
1.18 + if current < end and (counter is None or counter[0] < counter[1]):
1.19 + next = update(current, step)
1.20 + results += self.materialise_item(current, max(current, start), min(next, end), counter)
1.21 + return results
1.22 +
1.23 def process(selectors):
1.24 current = selectors[0]
1.25 for selector in selectors[1:]:
1.26 @@ -400,7 +416,7 @@
1.27 special_enum_levels = {
1.28 "BYDAY" : WeekDayFilter,
1.29 "BYMONTHDAY" : MonthDayFilter,
1.30 - #"BYYEARDAY" : YearDayFilter,
1.31 + "BYYEARDAY" : YearDayFilter,
1.32 }
1.33
1.34 # vim: tabstop=4 expandtab shiftwidth=4