until: (DateTime(dtstart?.ifNonNull((it) -> it is DateTime) ?? true, dtstart?.ifNonNull((it) -> utc == (it as DateTime).utc) ?? true, utc.implies(tzid == null))|Date(dtstart?.ifNonNull((it) -> it is Date) ?? true, tzid == null))?Source
The UNTIL rule part defines a DATE or DATE-TIME value that bounds the recurrence rule in an inclusive manner.
If the value specified by UNTIL is synchronized with the specified recurrence, this DATE or DATE-TIME becomes the last instance of the recurrence.
If the "DTSTART" property is specified as a date with local time, then the UNTIL rule part MUST also be specified as a date with local time.
If the "DTSTART" property is specified as a date with UTC time or a date with local time and time zone reference, then the UNTIL rule part MUST be specified as a date with UTC time.
If not present, and the COUNT rule part is also not present, the "RRULE" is considered to repeat forever.
The BYDAY rule part specifies one or more days of the week.
Each BYDAY value can also be preceded by a positive (+n) or negative (-n) integer.
If present, this indicates the nth occurrence of a specific day within the MONTHLY or YEARLY "RRULE".
For example, within a MONTHLY rule, +1MO (or simply 1MO) represents the first Monday within the month, whereas -1MO represents the last Monday of the month.
The numeric value in a BYDAY rule part with the FREQ rule part set to YEARLY corresponds to an offset within the month when the BYMONTH rule part is present, and corresponds to an offset within the year when the BYWEEKNO or BYMONTH rule parts are present.
If an integer modifier is not present, it means all days of this type within the specified frequency.
For example, within a MONTHLY rule, MO represents all Mondays within the month.
The BYYEARDAY rule part specifies one or more days of the year.
Negative values represent days counting back from the end of a year.
For example, -1 represents the last day of the year (December 31st) and -306 represents the 306th to the last day of the year (March 1st).
byweekno: Listing<Int(isBetween(-53, 53), this != 0)>(!isEmpty, freq == "YEARLY")?Source
The BYWEEKNO rule part specifies one or more ordinals specifying weeks of the year.
This corresponds to weeks according to week numbering as defined in ISO.8601.2004.
A week is defined as a seven day period, starting on the day of the week defined to be the week start (see wkst).
Week number one of the calendar year is the first week that contains at least four (4) days in that calendar year.
Note: Assuming a Monday week start, week 53 can only occur when Thursday is January 1 or if it is a leap year and Wednesday is January 1.
The WKST rule part specifies the day on which the workweek starts.
This is significant when a WEEKLY "RRULE" has an interval greater than 1, and a BYDAY rule part is specified.
This is also significant when in a YEARLY "RRULE" when a BYWEEKNO rule part is specified.
Defaults to "MO" if not specified.
The BYSETPOS rule part specifies one or more values that corresponds to the nth occurrence within the set of recurrence instances specified by the rule.
BYSETPOS operates on a set of recurrence instances in one interval of the recurrence rule.
For example, in a WEEKLY rule, the interval would be one week A set of recurrence instances starts at the beginning of the interval defined by the FREQ rule part.
Note: this departs from the RFC around line lengths.
The 75-character line limit and folding behavior are not enforced.
Lines are separated by "\n" (LF) and not "\r\n" (CRLF).
Ref: https://datatracker.ietf.org/doc/html/rfc5545#section-3.1
Returns the relative, descendent directory path between this module and other.
Throws if no such path exists.
For example, if module mod1 has path /dir1/mod1.pkl, and module mod2 has path /dir1/dir2/dir3/mod2.pkl,
then mod1.relativePathTo(mod2) will return List("dir2", "dir3").
A common use case is to compute the directory path between a template located at the root of a hierarchy
(say rootModule.pkl) and the currently evaluated module (accessible via the module keyword):
A recurrence rule.