automata/rrule/validator

Types

pub type EndCondition {
  Forever
  Count(Int)
  Until(Until)
}

Constructors

  • Forever
  • Count(Int)
  • Until(Until)
pub type Frequency {
  Daily
  Weekly
  Monthly
  Yearly
}

Constructors

  • Daily
  • Weekly
  • Monthly
  • Yearly
pub type RulePart {
  FreqPart
  IntervalPart
  CountPart
  UntilPart
  ByDayPart
  ByMonthPart
  ByMonthDayPart
  ByHourPart
  ByMinutePart
}

Constructors

  • FreqPart
  • IntervalPart
  • CountPart
  • UntilPart
  • ByDayPart
  • ByMonthPart
  • ByMonthDayPart
  • ByHourPart
  • ByMinutePart
pub type Until {
  UntilDate(ast.Date)
  UntilDateTime(ast.DateTime)
}

Constructors

An RRULE that has passed validate/1. opaque so the only way to obtain a value is through validation, preventing callers from forging “validated” inputs.

pub opaque type ValidRRule
pub type ValidationError {
  MissingPart(part: RulePart)
  DuplicatePart(part: RulePart)
  UnknownPart(name: String)
  UnsupportedPart(name: String)
  InvalidNumber(part: RulePart, value: String)
  InvalidPartValue(part: RulePart, value: String)
  InvalidList(part: RulePart, value: String)
  OutOfRange(part: RulePart, min: Int, max: Int, actual: Int)
  MustBePositive(part: RulePart, actual: Int)
  MutuallyExclusiveParts(left: RulePart, right: RulePart)
  NumericWeekdayRequiresMonthlyOrYearly(frequency: Frequency)
  ImpossibleDate(by_month: String, by_month_day: String)
  IncompatibleFrequencyAndPart(
    frequency: Frequency,
    part: RulePart,
  )
}

Constructors

  • MissingPart(part: RulePart)
  • DuplicatePart(part: RulePart)
  • UnknownPart(name: String)
  • UnsupportedPart(name: String)
  • InvalidNumber(part: RulePart, value: String)
  • InvalidPartValue(part: RulePart, value: String)
  • InvalidList(part: RulePart, value: String)
  • OutOfRange(part: RulePart, min: Int, max: Int, actual: Int)
  • MustBePositive(part: RulePart, actual: Int)
  • MutuallyExclusiveParts(left: RulePart, right: RulePart)
  • NumericWeekdayRequiresMonthlyOrYearly(frequency: Frequency)
  • ImpossibleDate(by_month: String, by_month_day: String)
  • IncompatibleFrequencyAndPart(
      frequency: Frequency,
      part: RulePart,
    )
pub type WeekdaySpecifier {
  EveryWeekday(ast.Weekday)
  NthWeekday(Int, ast.Weekday)
}

Constructors

Values

pub fn by_day(
  spec: ValidRRule,
) -> option.Option(List(WeekdaySpecifier))
pub fn by_hour(spec: ValidRRule) -> option.Option(List(Int))
pub fn by_minute(spec: ValidRRule) -> option.Option(List(Int))
pub fn by_month(spec: ValidRRule) -> option.Option(List(Int))
pub fn by_month_day(spec: ValidRRule) -> option.Option(List(Int))
pub fn end_condition(spec: ValidRRule) -> EndCondition
pub fn frequency(spec: ValidRRule) -> Frequency
pub fn interval(spec: ValidRRule) -> Int
pub fn to_string(spec: ValidRRule) -> String
pub fn validate(
  raw raw: ast.RawRRule,
) -> Result(ValidRRule, ValidationError)
Search Document