1pub mod lang;
2pub mod resolve;
3pub mod scanner;
4pub mod types;
5
6pub use chrono_tz::Tz;
7pub use scanner::TimeExpressionScanner;
8pub use types::*;
9
10pub fn default_scanner() -> TimeExpressionScanner {
12 scanner_for_languages(&["en", "de", "fr", "es"])
13}
14
15pub fn scanner_for_languages(lang_ids: &[&str]) -> TimeExpressionScanner {
21 let languages: Vec<Box<dyn lang::LanguageParser>> = lang_ids
22 .iter()
23 .filter_map(|id| match *id {
24 "en" => Some(Box::new(lang::en::English::new()) as Box<dyn lang::LanguageParser>),
25 "de" => Some(Box::new(lang::de::German::new()) as Box<dyn lang::LanguageParser>),
26 "fr" => Some(Box::new(lang::fr::French::new()) as Box<dyn lang::LanguageParser>),
27 "es" => Some(Box::new(lang::es::Spanish::new()) as Box<dyn lang::LanguageParser>),
28 _ => None,
29 })
30 .collect();
31
32 TimeExpressionScanner::new(languages, ParserConfig::default())
33}
34
35