1mod casual_date_time;
2mod deadline;
3mod exact_month_date;
4mod past_time;
5mod time;
6mod weekdays;
7
8use crate::rules::combinators;
9use crate::rules::common;
10use crate::rules::common_matchers;
11use crate::rules::consts;
12use crate::rules::errors;
13use crate::rules::rules;
14use crate::rules::tokens;
15use chrono::{offset::TimeZone, DateTime};
16
17pub fn parse<'a, Tz: TimeZone + 'a>(
18 tz_aware: DateTime<Tz>,
19 input: &'a str,
20 exact_match: bool,
21) -> Vec<Result<rules::MatchResult, errors::DateTimeError>> {
22 let input_lowered = input.to_lowercase();
23 combinators::apply_generic(
24 tz_aware,
25 &input_lowered,
26 &[
27 weekdays::interpret::<Tz>,
28 time::interpret::<Tz>,
29 past_time::interpret::<Tz>,
30 exact_month_date::interpret::<Tz>,
31 deadline::interpret::<Tz>,
32 casual_date_time::interpret::<Tz>,
33 common::slash_dmy::interpret::<Tz>,
34 ],
35 exact_match,
36 )
37}