From a2b36100cc7e88e49f370d8649cc394e6da51e0c Mon Sep 17 00:00:00 2001 From: Miquel Sabaté Solà Date: Wed, 14 Jan 2026 15:11:28 +0100 Subject: Add the ability to sort cases via configuration MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This means that it's no longer a matter of configuring it via the database, but much simpler. This should be more than enough. That being said, this is to be configured by hand so to not further complicate things. This is left to be done for the future, even if the default is basically what I use. Signed-off-by: Miquel Sabaté Solà --- crates/cli/src/inflection.rs | 133 ++++++++++++++++++++++++------------------- 1 file changed, 75 insertions(+), 58 deletions(-) (limited to 'crates/cli') diff --git a/crates/cli/src/inflection.rs b/crates/cli/src/inflection.rs index 05c4c70..c8b8574 100644 --- a/crates/cli/src/inflection.rs +++ b/crates/cli/src/inflection.rs @@ -1,4 +1,7 @@ -use mihi::{group_declension_inflections, Category, DeclensionInfo, DeclensionTable, Gender, Word}; +use mihi::{ + configuration, group_declension_inflections, Category, DeclensionInfo, DeclensionTable, Gender, + Word, +}; fn get_inflected_from(word: &Word, row: &[DeclensionInfo; 2]) -> String { if word.is_flag_set("onlysingular") { @@ -27,20 +30,27 @@ fn print_noun_inflection(word: &Word) -> Result<(), String> { println!("\n== Inflection ==\n"); - println!( - "Nominative:\t{}", - get_inflected_from(word, &table.nominative) - ); - println!("Vocative:\t{}", get_inflected_from(word, &table.vocative)); - println!( - "Accusative:\t{}", - get_inflected_from(word, &table.accusative) - ); - println!("Genitive:\t{}", get_inflected_from(word, &table.genitive)); - println!("Dative:\t\t{}", get_inflected_from(word, &table.dative)); - println!("Ablative:\t{}", get_inflected_from(word, &table.ablative)); - if word.locative { - println!("Locative:\t{}", get_inflected_from(word, &table.locative)); + for idx in configuration().case_order.to_usizes() { + match idx { + 0 => println!( + "Nominative:\t{}", + get_inflected_from(word, &table.nominative) + ), + 1 => println!("Vocative:\t{}", get_inflected_from(word, &table.vocative)), + 2 => println!( + "Accusative:\t{}", + get_inflected_from(word, &table.accusative) + ), + 3 => println!("Genitive:\t{}", get_inflected_from(word, &table.genitive)), + 4 => println!("Dative:\t\t{}", get_inflected_from(word, &table.dative)), + 5 => println!("Ablative:\t{}", get_inflected_from(word, &table.ablative)), + 6 => { + if word.locative { + println!("Locative:\t{}", get_inflected_from(word, &table.locative)); + } + } + _ => {} + } } Ok(()) @@ -76,49 +86,56 @@ fn print_adjective_inflection(word: &Word) -> Result<(), String> { println!("\n== Inflection ==\n"); - println!( - "Nominative:\t{} | {} | {}", - get_inflected_from(word, &tables[0].nominative), - get_inflected_from(word, &tables[1].nominative), - get_inflected_from(word, &tables[2].nominative) - ); - println!( - "Vocative:\t{} | {} | {}", - get_inflected_from(word, &tables[0].vocative), - get_inflected_from(word, &tables[1].vocative), - get_inflected_from(word, &tables[2].vocative) - ); - println!( - "Accusative:\t{} | {} | {}", - get_inflected_from(word, &tables[0].accusative), - get_inflected_from(word, &tables[1].accusative), - get_inflected_from(word, &tables[2].accusative) - ); - println!( - "Genitive:\t{} | {} | {}", - get_inflected_from(word, &tables[0].genitive), - get_inflected_from(word, &tables[1].genitive), - get_inflected_from(word, &tables[2].genitive) - ); - println!( - "Dative:\t\t{} | {} | {}", - get_inflected_from(word, &tables[0].dative), - get_inflected_from(word, &tables[1].dative), - get_inflected_from(word, &tables[2].dative) - ); - println!( - "Ablative:\t{} | {} | {}", - get_inflected_from(word, &tables[0].ablative), - get_inflected_from(word, &tables[1].ablative), - get_inflected_from(word, &tables[2].ablative) - ); - if word.locative { - println!( - "Locative:\t{} | {} | {}", - get_inflected_from(word, &tables[0].locative), - get_inflected_from(word, &tables[1].locative), - get_inflected_from(word, &tables[2].locative) - ); + for idx in configuration().case_order.to_usizes() { + match idx { + 0 => println!( + "Nominative:\t{} | {} | {}", + get_inflected_from(word, &tables[0].nominative), + get_inflected_from(word, &tables[1].nominative), + get_inflected_from(word, &tables[2].nominative) + ), + 1 => println!( + "Vocative:\t{} | {} | {}", + get_inflected_from(word, &tables[0].vocative), + get_inflected_from(word, &tables[1].vocative), + get_inflected_from(word, &tables[2].vocative) + ), + 2 => println!( + "Accusative:\t{} | {} | {}", + get_inflected_from(word, &tables[0].accusative), + get_inflected_from(word, &tables[1].accusative), + get_inflected_from(word, &tables[2].accusative) + ), + 3 => println!( + "Genitive:\t{} | {} | {}", + get_inflected_from(word, &tables[0].genitive), + get_inflected_from(word, &tables[1].genitive), + get_inflected_from(word, &tables[2].genitive) + ), + 4 => println!( + "Dative:\t\t{} | {} | {}", + get_inflected_from(word, &tables[0].dative), + get_inflected_from(word, &tables[1].dative), + get_inflected_from(word, &tables[2].dative) + ), + 5 => println!( + "Ablative:\t{} | {} | {}", + get_inflected_from(word, &tables[0].ablative), + get_inflected_from(word, &tables[1].ablative), + get_inflected_from(word, &tables[2].ablative) + ), + 6 => { + if word.locative { + println!( + "Locative:\t{} | {} | {}", + get_inflected_from(word, &tables[0].locative), + get_inflected_from(word, &tables[1].locative), + get_inflected_from(word, &tables[2].locative) + ); + } + } + _ => {} + } } Ok(()) -- cgit v1.2.3