Exemplo n.º 1
0
        /// <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());
        }
Exemplo n.º 2
0
        /// <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());
        }