1.1 --- a/imiptools/data.py Wed May 13 17:52:31 2015 +0200
1.2 +++ b/imiptools/data.py Wed May 13 18:31:12 2015 +0200
1.3 @@ -433,6 +433,11 @@
1.4 parameters = get_parameters(rrule)
1.5 periods = []
1.6
1.7 + until = parameters.get("UNTIL")
1.8 + if until:
1.9 + window_end = min(to_timezone(get_datetime(until, dtstart_attr), tzid), window_end)
1.10 + inclusive = True
1.11 +
1.12 for start in selector.materialise(dtstart, window_end, parameters.get("COUNT"), parameters.get("BYSETPOS"), inclusive):
1.13 start = to_timezone(datetime(*start), tzid)
1.14 end = start + duration
2.1 --- a/vRecurrence.py Wed May 13 17:52:31 2015 +0200
2.2 +++ b/vRecurrence.py Wed May 13 18:31:12 2015 +0200
2.3 @@ -31,7 +31,8 @@
2.4 FREQ defines the selection resolution.
2.5 DTSTART defines the start of the selection.
2.6 INTERVAL defines the step of the selection.
2.7 -COUNT defines a number of instances; UNTIL defines a limit to the selection.
2.8 +COUNT defines a number of instances
2.9 +UNTIL defines a limit to the selection.
2.10
2.11 BY... qualifiers select instances within each outer selection instance according
2.12 to the recurrence of instances of the next highest resolution. For example,
2.13 @@ -118,6 +119,8 @@
2.14 key, value = parts
2.15 if key in ("COUNT", "BYSETPOS"):
2.16 d[key] = int(value)
2.17 + else:
2.18 + d[key] = value
2.19 return d
2.20
2.21 def get_qualifiers(values):