fix: Arabic duration parsing

This commit is contained in:
ThetaDev 2023-11-15 01:42:04 +01:00
parent a13262a273
commit 48ccfc5c06
3 changed files with 40 additions and 31 deletions

View file

@ -253,46 +253,50 @@ pub(crate) fn entry(lang: Language) -> Entry {
}, },
Language::Ar => Entry { Language::Ar => Entry {
timeago_tokens: ::phf::Map { timeago_tokens: ::phf::Map {
key: 2980949210194914378, key: 14108922650502679131,
disps: &[ disps: &[
(1, 0), (3, 13),
(0, 3), (11, 32),
(2, 26), (0, 0),
(1, 11), (0, 0),
(25, 3), (4, 28),
(9, 5), (0, 1),
(5, 12),
], ],
entries: &[ entries: &[
("يوم\u{64b}ا", TaToken { n: 1, unit: Some(TimeUnit::Day) }),
("ثوان\u{650}", TaToken { n: 1, unit: Some(TimeUnit::Second) }),
("ساعات", TaToken { n: 1, unit: Some(TimeUnit::Hour) }),
("دقائق", TaToken { n: 1, unit: Some(TimeUnit::Minute) }),
("شهرين", TaToken { n: 2, unit: Some(TimeUnit::Month) }),
("أشهر", TaToken { n: 1, unit: Some(TimeUnit::Month) }),
("ثانية", TaToken { n: 1, unit: Some(TimeUnit::Second) }),
("ساعة", TaToken { n: 1, unit: Some(TimeUnit::Hour) }),
("يوم", TaToken { n: 1, unit: Some(TimeUnit::Day) }),
("ثوان", TaToken { n: 1, unit: Some(TimeUnit::Second) }),
("دقيقة", TaToken { n: 1, unit: Some(TimeUnit::Minute) }),
("يومين", TaToken { n: 2, unit: Some(TimeUnit::Day) }),
("ثانيتين", TaToken { n: 2, unit: Some(TimeUnit::Second) }),
("أسبوعين", TaToken { n: 2, unit: Some(TimeUnit::Week) }),
("دقيقتين", TaToken { n: 2, unit: Some(TimeUnit::Minute) }),
("سنوات", TaToken { n: 1, unit: Some(TimeUnit::Year) }),
("دقيقتان", TaToken { n: 2, unit: Some(TimeUnit::Minute) }),
("سنة", TaToken { n: 1, unit: Some(TimeUnit::Year) }),
("أسابيع", TaToken { n: 1, unit: Some(TimeUnit::Week) }),
("خلال", TaToken { n: 1, unit: Some(TimeUnit::Month) }),
("شهر\u{64b}ا", TaToken { n: 1, unit: Some(TimeUnit::Month) }),
("شهر", TaToken { n: 1, unit: Some(TimeUnit::Month) }), ("شهر", TaToken { n: 1, unit: Some(TimeUnit::Month) }),
("وثانية", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ("وثانية", TaToken { n: 1, unit: Some(TimeUnit::Second) }),
("سنتين", TaToken { n: 2, unit: Some(TimeUnit::Year) }), ("دقيقتان", TaToken { n: 2, unit: Some(TimeUnit::Minute) }),
("ثوان\u{64d}", TaToken { n: 1, unit: Some(TimeUnit::Second) }),
("يوم", TaToken { n: 1, unit: Some(TimeUnit::Day) }),
("شهر\u{64b}ا", TaToken { n: 1, unit: Some(TimeUnit::Month) }),
("سنة", TaToken { n: 1, unit: Some(TimeUnit::Year) }),
("يوم\u{64b}ا", TaToken { n: 1, unit: Some(TimeUnit::Day) }),
("دقيقة", TaToken { n: 1, unit: Some(TimeUnit::Minute) }),
("ثوان", TaToken { n: 1, unit: Some(TimeUnit::Second) }),
("ثانية", TaToken { n: 1, unit: Some(TimeUnit::Second) }),
("ساعات", TaToken { n: 1, unit: Some(TimeUnit::Hour) }),
("أيام", TaToken { n: 1, unit: Some(TimeUnit::Day) }),
("ساعتين", TaToken { n: 2, unit: Some(TimeUnit::Hour) }), ("ساعتين", TaToken { n: 2, unit: Some(TimeUnit::Hour) }),
("أسبوع\u{64b}ا", TaToken { n: 1, unit: Some(TimeUnit::Week) }), ("أسبوع\u{64b}ا", TaToken { n: 1, unit: Some(TimeUnit::Week) }),
("أيام", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ("سنوات", TaToken { n: 1, unit: Some(TimeUnit::Year) }),
("ساعة", TaToken { n: 1, unit: Some(TimeUnit::Hour) }),
("ثانيتين", TaToken { n: 2, unit: Some(TimeUnit::Second) }),
("أسابيع", TaToken { n: 1, unit: Some(TimeUnit::Week) }),
("أشهر", TaToken { n: 1, unit: Some(TimeUnit::Month) }),
("أسبوع", TaToken { n: 1, unit: Some(TimeUnit::Week) }), ("أسبوع", TaToken { n: 1, unit: Some(TimeUnit::Week) }),
("ثوان\u{64d}", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ("شهرين", TaToken { n: 2, unit: Some(TimeUnit::Month) }),
("وثانيتان", TaToken { n: 2, unit: Some(TimeUnit::Second) }), ("وثانيتان", TaToken { n: 2, unit: Some(TimeUnit::Second) }),
("يومين", TaToken { n: 2, unit: Some(TimeUnit::Day) }),
("س", TaToken { n: 1, unit: Some(TimeUnit::Hour) }),
("ث", TaToken { n: 1, unit: Some(TimeUnit::Second) }),
("دقيقتين", TaToken { n: 2, unit: Some(TimeUnit::Minute) }),
("خلال", TaToken { n: 1, unit: Some(TimeUnit::Month) }),
("ثوان\u{650}", TaToken { n: 1, unit: Some(TimeUnit::Second) }),
("د", TaToken { n: 1, unit: Some(TimeUnit::Minute) }),
("سنتين", TaToken { n: 2, unit: Some(TimeUnit::Year) }),
("أسبوعين", TaToken { n: 2, unit: Some(TimeUnit::Week) }),
("دقائق", TaToken { n: 1, unit: Some(TimeUnit::Minute) }),
], ],
}, },
date_order: &[DateCmp::D, DateCmp::M, DateCmp::Y], date_order: &[DateCmp::D, DateCmp::M, DateCmp::Y],

View file

@ -967,6 +967,8 @@ mod tests {
#[case(Language::Ar, "19 دقيقة وثانيتان", 1142)] #[case(Language::Ar, "19 دقيقة وثانيتان", 1142)]
#[case(Language::Ar, "دقيقة و13 ثانية", 73)] #[case(Language::Ar, "دقيقة و13 ثانية", 73)]
#[case(Language::Sw, "dakika 1 na sekunde 13", 73)] #[case(Language::Sw, "dakika 1 na sekunde 13", 73)]
#[case(Language::Ar, "1 س و41 د", 6060)]
#[case(Language::Ar, "4 د و33 ث", 273)]
fn t_parse_video_duration2( fn t_parse_video_duration2(
#[case] lang: Language, #[case] lang: Language,
#[case] video_duration: &str, #[case] video_duration: &str,

View file

@ -121,6 +121,7 @@
"equivalent": [], "equivalent": [],
"by_char": false, "by_char": false,
"timeago_tokens": { "timeago_tokens": {
"ث": "s",
"ثانية": "s", "ثانية": "s",
"ثوان": "s", "ثوان": "s",
"ثوانٍ": "s", "ثوانٍ": "s",
@ -128,10 +129,12 @@
"وثانية": "s", "وثانية": "s",
"ثانيتين": "2s", "ثانيتين": "2s",
"وثانيتان": "2s", "وثانيتان": "2s",
"د": "m",
"دقائق": "m", "دقائق": "m",
"دقيقة": "m", "دقيقة": "m",
"دقيقتان": "2m", "دقيقتان": "2m",
"دقيقتين": "2m", "دقيقتين": "2m",
"س": "h",
"ساعات": "h", "ساعات": "h",
"ساعة": "h", "ساعة": "h",
"ساعتين": "2h", "ساعتين": "2h",