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 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
Search Document