use crate::pattern::regex;
use crate::types::{Rule, TokenData};
use super::Grain;
pub fn rules() -> Vec<Rule> {
vec![
Rule {
name: "second (grain)".to_string(),
pattern: vec![regex(r"δε[υύ]τερ([οό]λ[εέ]πτ)?(ου?|α|ων)")],
production: Box::new(|_| Some(TokenData::TimeGrain(Grain::Second))),
},
Rule {
name: "minute (grain)".to_string(),
pattern: vec![regex(r"λεπτ(o|όν?|ού|ά|ών)")],
production: Box::new(|_| Some(TokenData::TimeGrain(Grain::Minute))),
},
Rule {
name: "hour (grain)".to_string(),
pattern: vec)?")],
production: Box::new(|_| Some(TokenData::TimeGrain(Grain::Hour))),
},
Rule {
name: "day (grain)".to_string(),
pattern: vec![regex(r"η?μέρ(ας?|ες|ών)")],
production: Box::new(|_| Some(TokenData::TimeGrain(Grain::Day))),
},
Rule {
name: "week (grain)".to_string(),
pattern: vec![regex(r"ε?βδομάδ(ας?ν?|ες|ων)")],
production: Box::new(|_| Some(TokenData::TimeGrain(Grain::Week))),
},
Rule {
name: "month (grain)".to_string(),
pattern: vec![regex(r"μήν(ας?|ες|ών)")],
production: Box::new(|_| Some(TokenData::TimeGrain(Grain::Month))),
},
Rule {
name: "quarter (grain)".to_string(),
pattern: vec![regex(r"τρ[ιί]μ[ηή]ν(ου?|α|ων)")],
production: Box::new(|_| Some(TokenData::TimeGrain(Grain::Quarter))),
},
Rule {
name: "year (grain)".to_string(),
pattern: vec![regex(r"έτ(ου?ς|η|ών)|χρ[οό]ν(ο[ιςυ]?|ι([αά]|ές)|ι?ών)")],
production: Box::new(|_| Some(TokenData::TimeGrain(Grain::Year))),
},
]
}