Skip to content

Commit

Permalink
[prakriya] Fix nAmadhAtu Ric + kta
Browse files Browse the repository at this point in the history
The root cause was that we were too conservative when selecting
`i_dhatu`, which led to us mistakenly excluding nAmadhAtus.

This fixes GitHub issue #178.

In addition, fix some small breakages caused by our recent `ganapatha`
updates.
  • Loading branch information
akprasad committed Jan 16, 2025
1 parent 452572a commit ba26917
Show file tree
Hide file tree
Showing 5 changed files with 17 additions and 8 deletions.
4 changes: 2 additions & 2 deletions vidyut-data/src/bin/create_kosha.rs
Original file line number Diff line number Diff line change
Expand Up @@ -625,7 +625,7 @@ fn read_basic_avyayas(builder: &mut Builder, path: &Path) -> Result<Pratipadikas
}

fn create_sarvanamas(builder: &mut Builder) -> Entries {
let mut sarva_adi: Vec<&str> = vidyut_prakriya::ganapatha::SARVA_ADI
let mut sarva_adi: Vec<&str> = vidyut_prakriya::ganapatha::SARVADI
.items()
.iter()
.filter(|x| !matches!(**x, "qatara" | "qatama" | "Batavu~"))
Expand All @@ -640,7 +640,7 @@ fn create_sarvanamas(builder: &mut Builder) -> Entries {
let mut ret = Vec::new();
let v = create_vyakarana();
let lvv = sup_options();
for text in vidyut_prakriya::ganapatha::SARVA_ADI.items() {
for text in vidyut_prakriya::ganapatha::SARVADI.items() {
let phit = Pratipadika::basic(Slp1String::from(text).expect("ascii"));
let b = match phit {
Pratipadika::Basic(ref b) => b,
Expand Down
4 changes: 2 additions & 2 deletions vidyut-prakriya/src/angasya/asiddhavat.rs
Original file line number Diff line number Diff line change
Expand Up @@ -800,10 +800,10 @@ fn run_for_final_i_or_u(p: &mut Prakriya, i_anga: usize) -> Option<()> {

/// Runs asiddhavat rules that alter a Ri suffix.
pub fn run_for_ni_at_index(p: &mut Prakriya, i_ni: usize) -> Option<()> {
p.debug("asiddhavat::run_for_ni_at_index");
let _ = p.get_if(i_ni, |t| t.is_ni_pratyaya())?;

// Find the mula dhatu. Avoid checking for `pratyaya` so we keep nAmadhAtus.
let i_dhatu = p.find_prev_where(i_ni, |t| t.is_dhatu() && !t.is_empty())?;
let i_dhatu = p.find_prev_where(i_ni, |t| !t.is_empty() && !t.is_agama())?;
let dhatu = p.get(i_dhatu)?;
let n = p.pratyaya(i_ni + 1)?;
let i_p = n.end();
Expand Down
1 change: 1 addition & 0 deletions vidyut-prakriya/src/dhatupatha.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ pub struct Entry {
artha: String,
}

/// A quick code -> `Gana` parser for numeric codes in dhatupatha.tsv
fn numeric_to_gana(s: &str) -> Result<Gana> {
let ret = match s {
"1" => Gana::Bhvadi,
Expand Down
6 changes: 3 additions & 3 deletions vidyut-prakriya/src/ganapatha.rs
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ impl GanapathaEntry {
/// *sarvādi-gaṇa* (1), first used in the following *sūtra*:
///
/// > 1.1.27 *sarvādīni sarvanāmāni*
pub(crate) const SARVADI: GanapathaEntry = GanapathaEntry::basic(
pub const SARVADI: GanapathaEntry = GanapathaEntry::basic(
"sarvAdiH",
1,
"1.1.27",
Expand Down Expand Up @@ -1753,8 +1753,8 @@ pub(crate) const BHIDADI: GanapathaEntry = GanapathaEntry::basic(
// <<BidA vidAraRe>>
// <<CidA dveDIkaraRe>>
"vidA", "kzipA", // <<guhA giryozaDyoH>>
"SradDA", "meDA", "goDA", // <<ArA SastryAm>>
"hArA", // <<kArA banDane>>
"SradDA", "meDA", "goDA", // <<ArA SastryAm>>
"hArA", // <<kArA banDane>>
"kziyA", // <<tArA jyotizi>>
// <<DArA prapAtane>>
"reKA", "cUqA", "pIqA", "vapA", "vasA", "sfjA", // <<krapeH saMprasAraRaM ca>>
Expand Down
10 changes: 9 additions & 1 deletion vidyut-prakriya/tests/integration/regressions.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ use vidyut_prakriya::args::Gana::*;
use vidyut_prakriya::args::Krdanta;
use vidyut_prakriya::args::Lakara::*;
use vidyut_prakriya::args::Linga::*;
use vidyut_prakriya::args::{BaseKrt as Krt, Dhatu, Lakara, Prayoga, Taddhita};
use vidyut_prakriya::args::{BaseKrt as Krt, Dhatu, Lakara, Prayoga, Sanadi, Taddhita};
use vidyut_prakriya::Vyakarana;

#[test]
Expand Down Expand Up @@ -321,3 +321,11 @@ fn anancanas() {
fn prabhinnavish() {
assert_has_sup_1p("praBinnaviz", Pum, &["praBinnavizaH"]);
}

// Fixes bug with "nizWAyAM seti" for nAma-dhATus
#[test]
fn spastitah() {
let spastaya = Dhatu::nama(phit("spazwa"), Some(Sanadi::Ric));
let spastita = krdanta(&[], &spastaya, Krt::kta);
assert_has_sup_1s(spastita, Pum, &["spazwitaH"]);
}

0 comments on commit ba26917

Please sign in to comment.