1.1 --- a/vRecurrence.py Sat Oct 04 19:52:31 2014 +0200
1.2 +++ b/vRecurrence.py Sat Oct 04 20:05:17 2014 +0200
1.3 @@ -167,10 +167,7 @@
1.4 # Datetime value at wider resolution.
1.5
1.6 if _pos < pos:
1.7 - if have_q:
1.8 - l.append(from_dt)
1.9 - else:
1.10 - context.append(from_dt.args["values"][0])
1.11 + context.append(from_dt.args["values"][0])
1.12 from_dt = get_next(iter_dt)
1.13
1.14 # Qualifier at wider or same resolution as datetime value.
1.15 @@ -178,8 +175,8 @@
1.16 else:
1.17 if not have_q:
1.18 if isinstance(from_q, Enum) and pos > 0:
1.19 - repeat = Pattern(pos - 1, {"interval" : 1, "values" : [context[-1]]}, "REPEAT")
1.20 - repeat.context = tuple(context[:-1])
1.21 + repeat = Pattern(pos - 1, {"interval" : 1}, "REPEAT")
1.22 + repeat.context = tuple(context)
1.23 l.append(repeat)
1.24 else:
1.25 from_q.context = tuple(context)
1.26 @@ -193,7 +190,8 @@
1.27 # Or combine the qualifier and value details.
1.28
1.29 else:
1.30 - l.append(combine_value_with_qualifier(from_dt, from_q))
1.31 + context.append(from_dt.args["values"][0])
1.32 + l.append(combine_context_with_qualifier(context, from_q))
1.33 from_dt = get_next(iter_dt)
1.34
1.35 from_q = get_next(iter_q)
1.36 @@ -207,8 +205,8 @@
1.37 while from_q:
1.38 if not have_q:
1.39 if isinstance(from_q, Enum) and pos > 0:
1.40 - repeat = Pattern(pos - 1, {"interval" : 1, "values" : [context[-1]]}, "REPEAT")
1.41 - repeat.context = tuple(context[:-1])
1.42 + repeat = Pattern(pos - 1, {"interval" : 1}, "REPEAT")
1.43 + repeat.context = tuple(context)
1.44 l.append(repeat)
1.45 else:
1.46 from_q.context = tuple(context)
1.47 @@ -218,15 +216,15 @@
1.48
1.49 return l
1.50
1.51 -def combine_value_with_qualifier(from_dt, from_q):
1.52 +def combine_context_with_qualifier(context, from_q):
1.53
1.54 """
1.55 - Combine value information supplied by 'from_dt' (a datetime) and 'from_q'
1.56 - (a qualifier), imposing the datetime value information on any qualifiers.
1.57 + Combine 'context' information (a datetime) and 'from_q' (a qualifier),
1.58 + imposing the datetime value information on any qualifiers.
1.59 """
1.60
1.61 - if not from_q.args.has_key("values") and from_dt.args.has_key("values"):
1.62 - from_q.args["values"] = from_dt.args["values"]
1.63 + if not from_q.args.has_key("values"):
1.64 + from_q.context = tuple(context)
1.65 return from_q
1.66
1.67 # Datetime arithmetic.
1.68 @@ -309,7 +307,7 @@
1.69
1.70 class Pattern(Selector):
1.71 def materialise_items(self, context, start, end, counter):
1.72 - first = scale(self.args["values"][0], self.pos)
1.73 + first = scale(self.context[self.pos], self.pos)
1.74
1.75 # Define the step between items.
1.76