automata/rrule
RFC 5545 RRULE stack for the supported subset (FREQ, INTERVAL,
COUNT, UNTIL, BYDAY, BYMONTH, BYMONTHDAY, BYHOUR, BYMINUTE).
Anchored at a ValidDateTime, an RRULE expands into a concrete
RRulePlan that the matcher and iterator consume. This module is
the user-facing facade; the typed phases live in the
automata/rrule/{ast,parser,validator,normalize,evaluator,iterator, next,builder} submodules.
Values
pub fn build(
builder builder: builder.Builder,
) -> Result(validator.ValidRRule, validator.ValidationError)
pub fn builder(
frequency frequency: validator.Frequency,
) -> builder.Builder
pub fn iterator_after(
spec spec: validator.ValidRRule,
anchor anchor: ast.ValidDateTime,
boundary boundary: ast.Boundary,
) -> Result(iterator.RRuleIterator, normalize.NormalizeError)
pub fn iterator_after_plan(
plan plan: normalize.RRulePlan,
boundary boundary: ast.Boundary,
) -> iterator.RRuleIterator
Plan-reuse counterpart to iterator_after/3.
pub fn matches(
spec spec: validator.ValidRRule,
anchor anchor: ast.ValidDateTime,
at at: ast.ValidDateTime,
) -> Result(Bool, normalize.NormalizeError)
pub fn matches_plan(
plan plan: normalize.RRulePlan,
at at: ast.ValidDateTime,
) -> Bool
Plan-reuse counterpart to matches/3. Takes an already-normalised
RRulePlan so callers that evaluate the same spec/anchor pair many
times can pay the normalisation cost once.
pub fn next_after(
spec spec: validator.ValidRRule,
anchor anchor: ast.ValidDateTime,
after after: ast.ValidDateTime,
) -> Result(
option.Option(ast.ValidDateTime),
normalize.NormalizeError,
)
pub fn next_after_plan(
plan plan: normalize.RRulePlan,
after after: ast.ValidDateTime,
) -> option.Option(ast.ValidDateTime)
Plan-reuse counterpart to next_after/3.
pub fn normalize(
spec spec: validator.ValidRRule,
anchor anchor: ast.ValidDateTime,
) -> Result(normalize.RRulePlan, normalize.NormalizeError)
Expand a ValidRRule against an anchor ValidDateTime, producing
an RRulePlan ready for matching/iteration. Reuse the plan across
calls if you evaluate the same spec/anchor pair many times — see
the *_plan variants.
pub fn nth_weekday(
ordinal ordinal: Int,
day day: ast.Weekday,
) -> validator.WeekdaySpecifier
pub fn parse(
input input: String,
) -> Result(ast.RawRRule, parser.ParseError)
Parse an RFC 5545 RRULE string into a RawRRule AST. Returns a
ParseError for syntactic mistakes; semantic validation (FREQ in
range, UNTIL/COUNT mutual exclusion, etc.) happens in validate/1.
pub fn to_string(spec spec: validator.ValidRRule) -> String
Render a ValidRRule back to its canonical RRULE string form.
pub fn validate(
raw raw: ast.RawRRule,
) -> Result(validator.ValidRRule, validator.ValidationError)
Validate a RawRRule and return a ValidRRule (opaque) covering
the supported subset. Anchorless: anchor-dependent expansion is
done by normalize/2.
pub fn weekday(
day day: ast.Weekday,
) -> validator.WeekdaySpecifier
pub fn with_by_day(
builder: builder.Builder,
values: List(validator.WeekdaySpecifier),
) -> builder.Builder
pub fn with_by_hour(
builder: builder.Builder,
values: List(Int),
) -> builder.Builder
pub fn with_by_minute(
builder: builder.Builder,
values: List(Int),
) -> builder.Builder
pub fn with_by_month(
builder: builder.Builder,
values: List(Int),
) -> builder.Builder
pub fn with_by_month_day(
builder: builder.Builder,
values: List(Int),
) -> builder.Builder
pub fn with_count(
builder: builder.Builder,
count: Int,
) -> builder.Builder
pub fn with_interval(
builder: builder.Builder,
interval: Int,
) -> builder.Builder
pub fn with_until_date(
builder: builder.Builder,
until: ast.Date,
) -> builder.Builder
pub fn with_until_datetime(
builder: builder.Builder,
until: ast.ValidDateTime,
) -> builder.Builder
pub fn without_end_condition(
builder: builder.Builder,
) -> builder.Builder