about summary refs log tree commit diff
diff options
context:
space:
mode:
authorVincent Ambo <mail@tazj.in>2022-07-28T19·25+0300
committertazjin <tazjin@tvl.su>2022-07-29T09·24+0000
commit4a4f8f93583df81344dd1c91f033d8644028dc85 (patch)
tree19538ae8a29bddd4bc62f5063409f28250968dc3
parent15c9ff49026f9ddbb42f663dfbc2668faa74cab2 (diff)
feat(predlozhnik): add rare exceptions for о/между r/4343
Change-Id: I17920dd9cd6e881ac0e3613a268e48fb05862c3c
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5997
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
-rw-r--r--users/tazjin/predlozhnik/src/main.rs41
1 files changed, 32 insertions, 9 deletions
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<Html> {
+    use Падеж::*;
 
-        }
-    };
+    match (предлог, падеж) {
+        ("в", Винительный) => Some(html! {"Во что? В кого?"}),
+
+        ("о", Винительный) => Some(html! {
+            <>
+              <p>{"О кого? Обо что?"}</p>
+              <p>{"Редко используется. Например:"}</p>
+              <ul>
+                <li>{"Удариться о притолоку."}</li>
+                <li>{"точить о камень."}</li>
+              </ul>
+            </>
+        }),
+
+        ("между", Родительный) => Some(html! {
+            <>
+              <p>{"Между чего? Между кого?"}</p>
+              <p>{"Редко используется. Например:"}</p>
+              <ul>
+                <li>{"Читаю между строк."}</li>
+                <li>{"Между людей установился мир."}</li>
+              </ul>
+            </>
+        }),
+
+        _ => 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 {
         <div id="obyasnenie">
           <hr/>
           <h2>{"Пример:"}</h2>
-          {exp}
+          {иск}
         </div>
     }
 }