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;
        }
Exemplo n.º 3
0
 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);
     }
 }
Exemplo n.º 6
0
 /// <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;
        }