protected override string LīdzskaņuMija(Locījums locījums, Skaitlis skaitlis) { // VI deklinācijas lietvārdiem līdzskaņu mija raksturīga daudzskaitļa ģenitīvā. if (locījums == Locījums.Ģenitīvs && skaitlis == Skaitlis.Daudzskaitlis) { // "brokastis", "Cēsis" bool izņēmums = (Celms + "s").BeidzasAr( "acs", "akti", "ass", "auss", "balss", "dakts", "debess", "dzelzs", "kūts", "kūts", "maksts", "pirts", "šalts", "takts", "uts", "valsts", "vēsts", "zoss", "žults" ); if (!izņēmums) { string arMiju = Celms; arMiju = arMiju.LīdzskaņuMija("sn", "šņ") .LīdzskaņuMija("st", "š") .LīdzskaņuMija("v", "vj") .LīdzskaņuMija("t", "š") .LīdzskaņuMija("d", "ž") .LīdzskaņuMija("s", "š") .LīdzskaņuMija("z", "ž") .LīdzskaņuMija("n", "ņ") .LīdzskaņuMija("l", "ļ"); return arMiju; } } return Celms; }
protected override string LīdzskaņuMija(Locījums locījums, Skaitlis skaitlis) { // II deklinācijas lietvārdiem līdzskaņu mija raksturīga vienskaitļa ģenitīvā un visos daudzskaitļa locījumos. if (locījums == Locījums.Ģenitīvs || skaitlis == Skaitlis.Daudzskaitlis) { // Līdzskaņu mijas nav: bool bezMijas = (Celms + "is").BeidzasAr( "tētis", "viesis", "astis", "skatis", "jis", "ķis", "ģis", "ris"); bool suns = skaitlis == Skaitlis.Vienskaitlis && (Celms + "s").BeidzasAr("suns"); // Lietvārdiem līdzskaņu mija ir tikai daudzskaitlī. // (tātad nav vienskaitlī) bool izņēmumi = skaitlis == Skaitlis.Vienskaitlis && (Celms + "s").BeidzasAr( "akmens", "asmens", "rudens", "zibens", "ūdens", "mēness", "sāls"); // ehhh jāuzlabo if (suns || (!bezMijas && !izņēmumi)) { string arMiju = Celms; arMiju = arMiju.LīdzskaņuMija("sn", "šņ") .LīdzskaņuMija("zn", "žņ") .LīdzskaņuMija("sl", "šļ") .LīdzskaņuMija("zl", "žļ") .LīdzskaņuMija("ln", "ļņ") .LīdzskaņuMija("dz", "dž") .LīdzskaņuMija("nn", "ņņ") .LīdzskaņuMija("b", "bj") .LīdzskaņuMija("m", "mj") .LīdzskaņuMija("p", "pj") .LīdzskaņuMija("v", "vj") .LīdzskaņuMija("t", "š") .LīdzskaņuMija("d", "ž") .LīdzskaņuMija("c", "č") .LīdzskaņuMija("s", "š") .LīdzskaņuMija("z", "ž") .LīdzskaņuMija("n", "ņ") .LīdzskaņuMija("l", "ļ"); return arMiju; } } return Celms; }
public string Locīt(Locījums locījums = Locījums.Nominatīvs, Skaitlis skaitlis = Skaitlis.Vienskaitlis) { switch (locījums) { default: case Locījums.Nominatīvs: return Nominatīvs(skaitlis); case Locījums.Ģenitīvs: return Ģenitīvs(skaitlis); case Locījums.Datīvs: return Datīvs(skaitlis); case Locījums.Akuzatīvs: return Akuzatīvs(skaitlis); case Locījums.Lokatīvs: return Lokatīvs(skaitlis); case Locījums.Vokatīvs: return Vokatīvs(skaitlis); } }
protected override string LīdzskaņuMija(Locījums locījums, Skaitlis skaitlis) { // V deklinācijas lietvārdiem līdzskaņu mija raksturīga daudzskaitļa ģenitīvā. if (locījums == Locījums.Ģenitīvs && skaitlis == Skaitlis.Daudzskaitlis) { // Līdzskaņu mijas nav: bool izņēmums = (Celms + Galotne).BeidzasAr( "aste", "mate", "pēde", "apšaude", "piešaude", "balle", "bāze", "bise", "bote", "brīze", "flote", "fronte", "gāze", "gide", "kase", "kušete", "mise", "mute", "pase", "rase", "sarakste", "šprote", "takse", "tirāde" ); // līdzskaņu mijas nav -ste, ja pirms s nav k bool izņēmums2 = Celms.BeidzasAr("st") && !Celms.BeidzasAr("kst"); if (!izņēmums && !izņēmums2) { string arMiju = Celms; arMiju = arMiju.LīdzskaņuMija("kst", "kš") .LīdzskaņuMija("sn", "šņ") .LīdzskaņuMija("zn", "žņ") .LīdzskaņuMija("dz", "dž") .LīdzskaņuMija("b", "bj") .LīdzskaņuMija("m", "mj") .LīdzskaņuMija("p", "pj") .LīdzskaņuMija("v", "vj") .LīdzskaņuMija("t", "š") .LīdzskaņuMija("d", "ž") .LīdzskaņuMija("c", "č") .LīdzskaņuMija("s", "š") .LīdzskaņuMija("z", "ž") .LīdzskaņuMija("n", "ņ") .LīdzskaņuMija("l", "ļ"); return arMiju; } } return Celms; }
public string Locīt(Locījums locījums = Locījums.Nominatīvs, Dzimte dzimte = Dzimte.Vīriešu, Skaitlis skaitlis = Skaitlis.Vienskaitlis, Galotne galotne = ĪpašībasVārdi.Galotne.Nenoteiktā) { switch (locījums) { default: case Locījums.Nominatīvs: return Nominatīvs(dzimte, skaitlis, galotne); case Locījums.Ģenitīvs: return Ģenitīvs(dzimte, skaitlis, galotne); case Locījums.Datīvs: return Datīvs(dzimte, skaitlis, galotne); case Locījums.Akuzatīvs: return Akuzatīvs(dzimte, skaitlis, galotne); case Locījums.Lokatīvs: return Lokatīvs(dzimte, skaitlis, galotne); } }
/// <summary> /// II, V un VI deklinācijas lietvārdiem dažos locījumos raksturīga līdzskaņu mija. /// <see>http://www.liis.lv/latval/morfol/lietv-mija.htm</see> /// </summary> protected virtual string LīdzskaņuMija(Locījums locījums, Skaitlis skaitlis) { return Celms; }
protected override string LīdzskaņuMija(Locījums locījums, Skaitlis skaitlis) { // Līdzskaņu mijas nav divzilbju personvārdiem ar -tis, -dis // vēl - nav mijas uzvārdos, kas beidzas ar -skis un -ckis, bet, neņemot tos vērā, darbojas tāpat bool beidzas = Galotne == "is" && (Celms.BeidzasAr("t", "d")); bool divzilbju = (Celms.Length - 1) <= 3; // ja vairāk par 3 burtiem pirms -tis vai -dis, tad nav divzilbju bool uzvārdi = Galotne == "is" && Celms.BeidzasAr("sk", "ck"); bool navMijas = (beidzas && divzilbju) || uzvārdi; if (!navMijas) { return base.LīdzskaņuMija(locījums, skaitlis); } return Celms; }
protected override string LīdzskaņuMija(Locījums locījums, Skaitlis skaitlis) { switch (locījums) { case Locījums.Ģenitīvs: if (ĢenitīvaGalotne(skaitlis) == null) return null; break; case Locījums.Datīvs: case Locījums.Lokatīvs: return null;; } return Celms; }