feat(predlozhnik): add rare exceptions for о/между

Change-Id: I17920dd9cd6e881ac0e3613a268e48fb05862c3c
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5997
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
This commit is contained in:
Vincent Ambo 2022-07-28 22:25:40 +03:00 committed by tazjin
parent 15c9ff4902
commit 4a4f8f9358

View file

@ -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>
}
}