# HG changeset patch # User Paul Boddie # Date 1512260943 -3600 # Node ID 6ec0ae1d58ee328c3599148e7fab0c2621007684 # Parent 059ba87daf9f42537fad084440f65fc23bc5f92c Give the LimitSelector and StartSelector special level identifiers, simplifying the selector sorting activity. diff -r 059ba87daf9f -r 6ec0ae1d58ee vRecurrence.py --- a/vRecurrence.py Sun Dec 03 01:16:48 2017 +0100 +++ b/vRecurrence.py Sun Dec 03 01:29:03 2017 +0100 @@ -292,7 +292,7 @@ return PositionSelector(None, args, "BYSETPOS") elif qualifier == "COUNT": - return LimitSelector(0, args, "COUNT") + return LimitSelector(-2, args, "COUNT") else: return Pattern(freq[qualifier], args, qualifier) @@ -301,7 +301,7 @@ "Return a copy of 'selectors' incorporating 'dt'." - selectors = selectors + [StartSelector(0, {"start" : dt}, "DTSTART")] + selectors = selectors + [StartSelector(-1, {"start" : dt}, "DTSTART")] selectors.sort(key=selector_sort_key) return selectors @@ -327,25 +327,18 @@ "Produce a sort key for 'selector'." - # Make DTSTART sort later than COUNT. - - if selector.qualifier == "COUNT": - sublevel = 0 - elif selector.qualifier == "DTSTART": - sublevel = 1 - # Make BYSETPOS sort earlier than the enumeration it modifies. - elif selector.qualifier == "BYSETPOS": - sublevel = 2 + if selector.qualifier == "BYSETPOS": + sublevel = 0 # Other BY... qualifiers sort earlier than selectors at the same resolution # even though such things as "FREQ=HOURLY;BYHOUR=10" do not make much sense. elif selector.qualifier.startswith("BY"): - sublevel = 3 + sublevel = 1 else: - sublevel = 4 + sublevel = 2 return (selector.level, sublevel)