automata/rrule/validator
Types
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
-
UntilDate(ast.Date) -
UntilDateTime(ast.DateTime)
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) -
-
NumericWeekdayRequiresMonthlyOrYearly(frequency: Frequency) -
ImpossibleDate(by_month: String, by_month_day: String) -
pub type WeekdaySpecifier {
EveryWeekday(ast.Weekday)
NthWeekday(Int, ast.Weekday)
}
Constructors
-
EveryWeekday(ast.Weekday) -
NthWeekday(Int, ast.Weekday)
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)