From 4a4f8f93583df81344dd1c91f033d8644028dc85 Mon Sep 17 00:00:00 2001 From: Vincent Ambo Date: Thu, 28 Jul 2022 22:25:40 +0300 Subject: feat(predlozhnik): add rare exceptions for о/между MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I17920dd9cd6e881ac0e3613a268e48fb05862c3c Reviewed-on: https://cl.tvl.fyi/c/depot/+/5997 Tested-by: BuildkiteCI Reviewed-by: tazjin --- users/tazjin/predlozhnik/src/main.rs | 41 ++++++++++++++++++++++++++++-------- 1 file changed, 32 insertions(+), 9 deletions(-) (limited to 'users/tazjin/predlozhnik/src') diff --git a/users/tazjin/predlozhnik/src/main.rs b/users/tazjin/predlozhnik/src/main.rs index 74677129e7..8ced9b55f5 100644 --- a/users/tazjin/predlozhnik/src/main.rs +++ b/users/tazjin/predlozhnik/src/main.rs @@ -106,15 +106,38 @@ lazy_static! { s }; - static ref EXCEPTIONS: HashMap<(&'static str, Падеж), &'static str> = { - use Падеж::*; +} - hashmap! { - ("в", Винительный) => "Во что? В кого?", - ("о", Винительный) => "О кого? Обо что? (редко используется)" +fn исключение(предлог: &str, падеж: Падеж) -> Option { + use Падеж::*; - } - }; + match (предлог, падеж) { + ("в", Винительный) => Some(html! {"Во что? В кого?"}), + + ("о", Винительный) => Some(html! { + <> +

{"О кого? Обо что?"}

+

{"Редко используется. Например:"}

+ + + }), + + ("между", Родительный) => Some(html! { + <> +

{"Между чего? Между кого?"}

+

{"Редко используется. Например:"}

+ + + }), + + _ => None, + } } enum Сообщение { @@ -135,7 +158,7 @@ struct Вывод { } fn объясни(падеж: Падеж, предлог: &str) -> Html { - let exp = match EXCEPTIONS.get(&(предлог, падеж)) { + let иск = match исключение(предлог, падеж) { Some(exp) => html! { exp }, None => html! { format!("{} {}", предлог, падеж.вопрос()) }, }; @@ -144,7 +167,7 @@ fn объясни(падеж: Падеж, предлог: &str) -> Html {

{"Пример:"}

- {exp} + {иск}
} } -- cgit 1.4.1