vidyut
vidyut copied to clipboard
prakriyA-generation example
trafficstars
Would be nice to add a file named print_prakriyaa.rs with the following content to the vidyut-prakriya/examples folder
use vidyut_prakriya::{Prakriya, Vyakarana};
use vidyut_prakriya::args::*;
fn build_dhaatu(upadesha: &str, gana: Gana, sanadi: Sanadi) -> Dhatu {
let v = Vyakarana::new();
let dhatu = Dhatu::builder()
.upadesha(upadesha)
.gana(gana)
.sanadi(&[sanadi])
.build()
.unwrap();
let prakriyas = v.derive_dhatus(&dhatu);
print_prakriyaa(prakriyas);
dhatu
}
fn lat_kartari_1_1(dhatu: Dhatu) {
let v: Vyakarana = Vyakarana::new();
let args: Tinanta = Tinanta::builder()
.dhatu(dhatu)
.lakara(Lakara::Lat)
.prayoga(Prayoga::Kartari)
.purusha(Purusha::Prathama)
.vacana(Vacana::Eka)
.build().unwrap();
let prakriyas = v.derive_tinantas(&args);
print_prakriyaa(prakriyas);
}
fn print_prakriyaa(prakriyas: Vec<Prakriya>) {
for p in prakriyas {
println!("{}", p.text());
println!("---------------------------");
for step in p.history() {
// let terms: Vec<_> = step.result().iter().map(|x| x.text()).filter(|x| !x.is_empty()).collect();
let terms: Vec<_> = step.result().iter().map(|x| x.to_string()).filter(|x| !x.is_empty()).collect();
let result = terms.join(" + ");
println!("{:<10} | {}", step.rule().code(), result);
}
println!("---------------------------");
println!("\n");
}
}
fn main() {
let dhatu: Dhatu = Dhatu::mula("BU", Gana::Bhvadi);
lat_kartari_1_1(dhatu);
let sannanta = build_dhaatu("jYA", Gana::Kryadi, Sanadi::san);
lat_kartari_1_1(sannanta);
}
Adding now.
Done, will push as part of the next update.
Pushing within the next 30 minutes or so.