when 0.1.4

'When' parses natural language date/time and produces computer friendly output structures
Documentation
mod casual_date_time;
mod deadline;
mod exact_month_date;
mod past_time;
mod time;
mod weekdays;

use crate::rules::combinators;
use crate::rules::common;
use crate::rules::common_matchers;
use crate::rules::consts;
use crate::rules::errors;
use crate::rules::rules;
use crate::rules::tokens;
use chrono::{offset::TimeZone, DateTime};

pub fn parse<'a, Tz: TimeZone + 'a>(
    tz_aware: DateTime<Tz>,
    input: &'a str,
    exact_match: bool,
) -> Vec<Result<rules::MatchResult, errors::DateTimeError>> {
    let input_lowered = input.to_lowercase();
    combinators::apply_generic(
        tz_aware,
        &input_lowered,
        &[
            weekdays::interpret::<Tz>,
            time::interpret::<Tz>,
            past_time::interpret::<Tz>,
            exact_month_date::interpret::<Tz>,
            deadline::interpret::<Tz>,
            casual_date_time::interpret::<Tz>,
            common::slash_dmy::interpret::<Tz>,
        ],
        exact_match,
    )
}