Skip to main content

Crate timewarp

Crate timewarp 

Source
Expand description

§timewarp

NLP library for parsing English and German natural language into dates and times. Leverages pest for parsing human readable-dates and times.

Should parse

use timewarp::Direction::*;
use timewarp::{date_matcher, Doy, Tempus};

// Fri 2023-03-17
let today = Doy::from_ymd(2023, 3, 17);
// Date as used in German (d.m.y)
assert_eq!(
    date_matcher(today, From, "22.1.23").unwrap(),
    Tempus::Moment(Doy::from_ymd(2023, 1, 22))
);
assert_eq!(
    date_matcher(today, From, "22.1.").unwrap(),
    Tempus::Moment(Doy::from_ymd(2023, 1, 22))
);
// Date as common for english-speaker m/d/y
assert_eq!(
    date_matcher(today, From, "3/16/2023").unwrap(),
    Tempus::Moment(Doy::from_ymd(2023, 3, 16))
);
// Date written in ISO
assert_eq!(
    date_matcher(today, From, "2023-03-16").unwrap(),
    Tempus::Moment(Doy::from_ymd(2023, 3, 16))
);

assert_eq!(
    date_matcher(today, To, "last monday").unwrap(),
    Tempus::Moment(Doy::from_ymd(2023, 3, 13))
);
assert_eq!(
    date_matcher(today, From, "tuesday").unwrap(),
    Tempus::Moment(Doy::from_ymd(2023, 3, 14))
);
assert_eq!(
    date_matcher(today, To, "tuesday").unwrap(),
    Tempus::Moment(Doy::from_ymd(2023, 3, 21))
);
assert_eq!(
    date_matcher(today, From, "letzten donnerstag").unwrap(),
    Tempus::Moment(Doy::from_ymd(2023, 3, 16))
);
assert_eq!(
    date_matcher(today, To, "last friday").unwrap(),
    Tempus::Moment(Doy::from_ymd(2023, 3, 10))
);
assert_eq!(
    date_matcher(today, To, "nächsten Fr").unwrap(),
    Tempus::Moment(Doy::from_ymd(2023, 3, 24))
);
assert_eq!(
    date_matcher(today, To, "coming Thu").unwrap(),
    Tempus::Moment(Doy::from_ymd(2023, 3, 23))
);
assert_eq!(
    date_matcher(today, To, "übernächsten Donnerstag").unwrap(),
    Tempus::Moment(Doy::from_ymd(2023, 3, 30))
);
assert_eq!(
    date_matcher(today, To, "nächster Mo").unwrap(),
    Tempus::Moment(Doy::from_ymd(2023, 3, 20))
);
assert_eq!(
    date_matcher(today, To, "vorletzter mo").unwrap(),
    Tempus::Moment(Doy::from_ymd(2023, 3, 6))
);

Structs§

Doy
Day Of Year. Helper-class to easily calculate dates.

Enums§

DayOfWeek
Days of the week - as known by every english speaking child.
Direction
Designated use of the date.
Month
Names of months - shorted to 3-letter-identifier.
Tempus
A timespan in whole days.
TimeWarpError

Functions§

date_matcher