# HG changeset patch # User Paul Boddie # Date 1512260943 -3600 # Node ID fbaf500f40648862ef37d83793af1e7e60ed6598 # Parent 11bf85dcefd0670904584522c0f62546f22667aa Give the LimitSelector and StartSelector special level identifiers, simplifying the selector sorting activity. diff -r 11bf85dcefd0 -r fbaf500f4064 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)