MCPcopy Create free account
hub / github.com/cloudflare/saffron / dom_expr

Function dom_expr

saffron/src/parse.rs:838–920  ·  view source on GitHub ↗
(input: &str)

Source from the content-addressed store, hash-verified

836}
837
838fn dom_expr(input: &str) -> IResult<&str, DayOfMonthExpr> {
839 let dom = map_digit1::<DayOfMonth>();
840
841 let (input, start) = opt(alt((char('*'), char('L'))))(input)?;
842 match start {
843 Some('*') => {
844 let (input, maybe_step) = opt(tuple((char('/'), step_digit::<DayOfMonth>())))(input)?;
845
846 if let Some((_, step)) = maybe_step {
847 let exprs = Exprs::new(OrsExpr::Step {
848 start: DayOfMonth(1),
849 end: ExprValue::max(),
850 step,
851 });
852
853 let (input, exprs) = tail_ors_exprs(input, dom, exprs)?;
854 Ok((input, DayOfMonthExpr::Many(exprs)))
855 } else {
856 Ok((input, DayOfMonthExpr::All))
857 }
858 }
859 Some('L') => {
860 let (input, modifier) = opt(alt((char('-'), char('W'))))(input)?;
861 match modifier {
862 Some('-') => {
863 let offset = map_digit1::<DayOfMonthOffset>();
864 let (input, (offset, weekday)) = tuple((offset, opt(char('W'))))(input)?;
865
866 if weekday.is_some() {
867 Ok((input, DayOfMonthExpr::Last(Last::OffsetWeekday(offset))))
868 } else {
869 Ok((input, DayOfMonthExpr::Last(Last::Offset(offset))))
870 }
871 }
872 Some('W') => Ok((input, DayOfMonthExpr::Last(Last::Weekday))),
873 _ => Ok((input, DayOfMonthExpr::Last(Last::Day))),
874 }
875 }
876 _ => {
877 let (input, day) = dom(input)?;
878
879 let (input, maybe_char) = opt(alt((char('W'), char('-'), char('/'))))(input)?;
880 match maybe_char {
881 Some('W') => Ok((input, DayOfMonthExpr::ClosestWeekday(day))),
882 Some('-') => {
883 let (input, (end, slash)) = tuple((&dom, opt(char('/'))))(input)?;
884
885 let (input, exprs) = if slash.is_none() {
886 (input, Exprs::new(OrsExpr::Range(day, end)))
887 } else {
888 let (input, step) = step_digit::<DayOfMonth>()(input)?;
889 (
890 input,
891 Exprs::new(OrsExpr::Step {
892 start: day,
893 end,
894 step,
895 }),

Callers

nothing calls this directly

Calls 3

DayOfMonthClass · 0.85
tail_ors_exprsFunction · 0.85
LastEnum · 0.85

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…