コード例 #1
0
ファイル: TurkceEkler.cs プロジェクト: n3xpect/turkceekler
        /// <summary>Verilen Türkçe fiili istenen zamana ve kişiye göre çekimler.</summary>
        /// <param name="fiilKoku">Türkçe fiil</param>
        /// <param name="kip">Zaman kipi</param>
        /// <param name="kisi">Kişi</param>
        /// <returns>Çekimlenmiş ifade.</returns>
        public static string Uygula(string fiilKoku, FiilKipi kip, Kisiler kisi)
        {
            GovdeBilgisi  govdeBilgisi = new GovdeBilgisi(fiilKoku);
            var           harfler      = _kipler[kip];
            StringBuilder sb           = new StringBuilder(fiilKoku);
            StringBuilder ek           = new StringBuilder();

            // Bazı kipler için kişi ekleri değişik çekimlenecek (geliyor-sun, geldi-n gibi)
            if (kip == FiilKipi.GecmisZaman || kip == FiilKipi.GecmisZamanOlumsuz || kip == FiilKipi.DilekSart || kip == FiilKipi.DilekSartOlumsuz)
            {
                KisiEkiDegistir(KisiEkleri.GecmisZaman);
            }
            else if (kip == FiilKipi.Istek || kip == FiilKipi.IstekOlumsuz)
            {
                KisiEkiDegistir(KisiEkleri.Istek);
            }
            else if (kip == FiilKipi.Emir || kip == FiilKipi.EmirOlumsuz)
            {
                KisiEkiDegistir(KisiEkleri.Emir);
            }
            else
            {
                KisiEkiDegistir(KisiEkleri.Varsayilan);
            }

            foreach (var harf in harfler)
            {
                var c = harf.Bas(govdeBilgisi);
                if (c != char.MinValue)
                {
                    ek.Append(c);
                }
            }

            // Yumuşama kontrolü
            if (ek.ToString() != "")
            {
                if (Alfabe.InceSesliler.Contains(govdeBilgisi.SonSesli) && govdeBilgisi.SonHarf == Alfabe.T && Alfabe.Sesliler.Contains(ek[0]))
                {
                    sb[sb.Length - 1] = Alfabe.D;
                }
            }

            sb.Append(ek);

            // Olumsuzlardaki -mez ekini birinci tekil kişi için temizleme
            if ((kisi == Kisiler.BirinciTekil || kisi == Kisiler.BirinciCogul) && sb[sb.Length - 1] == Alfabe.Z)
            {
                sb.Remove(sb.Length - 1, 1);
            }

            sb = new StringBuilder(KisiyeGoreCekimle(sb.ToString(), kisi));

            return(sb.ToString());
        }
コード例 #2
0
ファイル: TurkceEkler.cs プロジェクト: n3xpect/turkceekler
 public char Bas(GovdeBilgisi govde)
 {
     if (Alfabe.KalinSesliler.Contains(govde.SonSesli))
     {
         return(Alfabe.A);
     }
     else
     {
         return(Alfabe.E);
     }
 }
コード例 #3
0
ファイル: TurkceEkler.cs プロジェクト: n3xpect/turkceekler
 public char Bas(GovdeBilgisi govde)
 {
     if (govde.SessizIleBitiyor)
     {
         return(char.MinValue);
     }
     else
     {
         return(_k);
     }
 }
コード例 #4
0
ファイル: turkcehaller.cs プロジェクト: n3xpect/turkcehaller
 public char Bas(GovdeBilgisi govde)
 {
     if (govde.SessizIleBitiyor && Alfabe.SertSessizler.Contains(govde.SonHarf))
     {
         return(Alfabe.T);
     }
     else
     {
         return(Alfabe.D);
     }
 }
コード例 #5
0
ファイル: turkcehaller.cs プロジェクト: n3xpect/turkcehaller
        /// <summary>
        /// Verilen Türkçe ifade sonuna, verilen ismin hâlini uyumlu biçime sokar, tek tırnak"la birlikte ilave eder ve döner.
        /// </summary>
        /// <param name="govde">Türkçe ifade</param>
        /// <param name="hal">İsmin hâli</param>
        /// <returns>Tek tırnak sonrası hâl eki eklenmiş ifade.</returns>
        public static string Uygula(string govde, IsminHali hal)
        {
            GovdeBilgisi  govdeBilgisi = new GovdeBilgisi(govde);
            var           harfler      = _haller[hal];
            StringBuilder sb           = new StringBuilder(govde);

            sb.Append("'");
            foreach (var harf in harfler)
            {
                var c = harf.Bas(govdeBilgisi);
                if (c != char.MinValue)
                {
                    sb.Append(c);
                }
            }
            return(sb.ToString());
        }
コード例 #6
0
ファイル: TurkceEkler.cs プロジェクト: n3xpect/turkceekler
            public char Bas(GovdeBilgisi govde)
            {
                switch (govde.SonSesli)
                {
                case Alfabe.E:
                    return(Alfabe.İ);

                case Alfabe.A:
                    return(Alfabe.I);

                case Alfabe.O:
                    return(Alfabe.U);

                case Alfabe.Ö:
                    return(Alfabe.Ü);

                default:
                    return(govde.SonSesli);
                }
            }
コード例 #7
0
ファイル: TurkceEkler.cs プロジェクト: n3xpect/turkceekler
            public char Bas(GovdeBilgisi govde)
            {
                if (Alfabe.SertSessizler.Contains(govde.SonHarf))
                {
                    switch (_b)
                    {
                    case Alfabe.B: _b = Alfabe.P; break;

                    case Alfabe.C: _b = Alfabe.Ç; break;

                    case Alfabe.D: _b = Alfabe.T; break;

                    case Alfabe.G: _b = Alfabe.K; break;

                    case Alfabe.Ğ: _b = Alfabe.K; break;

                    default: break;
                    }
                }

                return(_b);
            }
コード例 #8
0
ファイル: TurkceEkler.cs プロジェクト: n3xpect/turkceekler
            public char Bas(GovdeBilgisi govde)
            {
                if (govde.SessizIleBitiyor)
                {
                    switch (govde.SonSesli)
                    {
                    case Alfabe.E: return(Alfabe.İ);

                    case Alfabe.A: return(Alfabe.I);

                    case Alfabe.O: return(Alfabe.U);

                    case Alfabe.Ö: return(Alfabe.Ü);

                    default: return(govde.SonSesli);
                    }
                }
                else
                {
                    return(char.MinValue);
                }
            }
コード例 #9
0
ファイル: TurkceEkler.cs プロジェクト: n3xpect/turkceekler
        private static string KisiyeGoreCekimle(string fiilGovdesi, Kisiler kisi)
        {
            GovdeBilgisi govdeBilgisi = new GovdeBilgisi(fiilGovdesi);

            var harfler = _kisiler[kisi];

            StringBuilder sb = new StringBuilder(fiilGovdesi);
            StringBuilder ek = new StringBuilder();

            foreach (var harf in harfler)
            {
                var c = harf.Bas(govdeBilgisi);
                if (c != char.MinValue)
                {
                    ek.Append(c);
                }
            }

            // Yumuşama kontrolü
            if (ek.ToString() != "")
            {
                if (Alfabe.SertSessizler.Contains(govdeBilgisi.SonHarf) && Alfabe.Sesliler.Contains(ek[0]))
                {
                    switch (govdeBilgisi.SonHarf)
                    {
                    case Alfabe.P: sb[sb.Length - 1] = Alfabe.B; break;

                    case Alfabe.Ç: sb[sb.Length - 1] = Alfabe.C; break;

                    case Alfabe.T: sb[sb.Length - 1] = Alfabe.D; break;

                    case Alfabe.K: sb[sb.Length - 1] = Alfabe.Ğ; break;
                    }
                }
            }

            return(sb.Append(ek).ToString());
        }
コード例 #10
0
ファイル: TurkceEkler.cs プロジェクト: n3xpect/turkceekler
        /// <summary>Verilen Türkçe ismi istenen hale göre çekimler.</summary>
        /// <param name="govde">Türkçe isim</param>
        /// <param name="hal">İsmin hâli</param>
        /// <returns>Çekimlenmiş ifade.</returns>
        public static string Uygula(string govde, IsminHali hal)
        {
            GovdeBilgisi  govdeBilgisi = new GovdeBilgisi(govde);
            var           harfler      = _haller[hal];
            StringBuilder sb           = new StringBuilder(govde);
            StringBuilder ek           = new StringBuilder();

            foreach (var harf in harfler)
            {
                var c = harf.Bas(govdeBilgisi);
                if (c != char.MinValue)
                {
                    ek.Append(c);
                }
            }

            // Yumuşama kontrolü
            if (ek.ToString() != "")
            {
                if (govdeBilgisi.SertSessizIleBitiyor && Alfabe.Sesliler.Contains(ek[0]))
                {
                    switch (govdeBilgisi.SonHarf)
                    {
                    case Alfabe.P: sb[sb.Length - 1] = Alfabe.B; break;

                    case Alfabe.Ç: sb[sb.Length - 1] = Alfabe.C; break;

                    case Alfabe.T: sb[sb.Length - 1] = Alfabe.D; break;

                    case Alfabe.K: sb[sb.Length - 1] = Alfabe.Ğ; break;
                    }
                }
            }

            return(sb.Append(ek).ToString());
        }
コード例 #11
0
ファイル: TurkceEkler.cs プロジェクト: n3xpect/turkceekler
 public char Bas(GovdeBilgisi govde)
 {
     return(EsasHarf);
 }