예제 #1
0
 public TurkceSesliUretici(Alfabe alfabe) {
     HARF_a = alfabe.harf('a');
     HARF_e = alfabe.harf('e');
     HARF_i = alfabe.harf('i');
     HARF_ii = alfabe.harf(Alfabe.CHAR_ii);
     HARF_u = alfabe.harf('u');
     HARF_uu = alfabe.harf(Alfabe.CHAR_uu);
 }
예제 #2
0
 /// <summary> istenen noktadaki harfi giris parametresi olan TurkceHarf ile degistirir.
 ///
 /// </summary>
 /// <param name="index">degistirilecek indeks.
 /// </param>
 /// <param name="harf">kullanilacak harf
 /// </param>
 /// <throws>  ArrayIndexOutOfBoundsException </throws>
 public void  harfDegistir(int index, TurkceHarf harf)
 {
     if (index < 0 || index >= boy)
     {
         throw new System.IndexOutOfRangeException("indeks degeri:" + index + " fakat harf dizi boyu:" + boy);
     }
     dizi[index] = harf;
 }
예제 #3
0
 public EkUreticiTr(Alfabe alfabe) {
      this.sesliUretici = new TurkceSesliUretici(alfabe);
      HARF_a = alfabe.harf('a');
      HARF_e = alfabe.harf('e');
      HARF_i = alfabe.harf('i');
      HARF_ii = alfabe.harf(Alfabe.CHAR_ii);
      HARF_u = alfabe.harf('u');
      HARF_uu = alfabe.harf(Alfabe.CHAR_uu);
 }
예제 #4
0
 /// <summary>
 /// kelimenin sonuna harf ekler.
 /// </summary>
 /// <param name="harf">eklenecek harf
 /// </param>
 /// <returns> this
 /// </returns>
 public virtual HarfDizisi ekle(TurkceHarf harf)
 {
     if (boy == dizi.Length)
     {
         kapasiteAyarla(3);
     }
     dizi[boy++] = harf;
     return(this);
 }
예제 #5
0
 public HarfDizisi subSequence(int start, int end)
 {
     if (end < start)
     {
         return(null);
     }
     TurkceHarf[] yeniHarfler = new TurkceHarf[end - start];
     Array.Copy(dizi, start, yeniHarfler, 0, end - start);
     return(new HarfDizisi(yeniHarfler));
 }
예제 #6
0
        public TurkceHarf buyukHarf(char c)
        {
            TurkceHarf buyuk = buyukHarflerDizi[harf(c).alfabetikSira() - 1];

            if (buyuk != null)
            {
                return(buyuk);
            }
            return(TANIMSIZ_HARF);
        }
예제 #7
0
        public virtual TurkceHarf kucukHarf(TurkceHarf harf)
        {
            TurkceHarf kucuk = kucukHarflerDizi[harf.alfabetikSira() - 1];

            if (kucuk != null)
            {
                return(kucuk);
            }
            return(TANIMSIZ_HARF);
        }
예제 #8
0
 public TurkceHarf sesliBelirleIU(TurkceHarf sonSesli) {
     if (sonSesli.inceSesliMi() && sonSesli.duzSesliMi())
         return HARF_i;
     if (!sonSesli.inceSesliMi() && sonSesli.duzSesliMi())
         return HARF_ii;
     if (!sonSesli.inceSesliMi() && sonSesli.yuvarlakSesliMi())
         return HARF_u;
     if (sonSesli.inceSesliMi() && sonSesli.yuvarlakSesliMi())
         return HARF_uu;
     return Alfabe.TANIMSIZ_HARF;
 }
예제 #9
0
 /**
  * istenilen kalin seslinin inceltilmis kopya halini dondurur. sadece ters sesli
  * ozel durumu isleminde kullanilmaslidir.
  *
  * @param kalinSesli
  * @return eger varsa karsilik dusen kalin sesli. yoksa seslinin kendisi.
  */
 public TurkceHarf kalinSesliIncelt(TurkceHarf kalinSesli)
 {
     if (ozelInceSesliler.ContainsKey(kalinSesli))
     {
         return(ozelInceSesliler[kalinSesli]);
     }
     else
     {
         return(kalinSesli);
     }
 }
예제 #10
0
        public bool asciiToleransliKiyasla(TurkceHarf ha)
        {

            //eger harf icerikleri ayni degilse turkce-ascii donusumleri kiyaslanir.
            if (_charDeger != ha.charDeger())
            {
                if (_asciiDonusum != null && _asciiDonusum.charDeger() == ha.charDeger())
                    return true;
                return _turkceDonusum != null && _turkceDonusum.charDeger() == ha.charDeger();
            }
            return true;
        }
예제 #11
0
        /// <summary> son harfi yumusatir. Eger harfin yumusamis formu yoksa harf degismez.</summary>
        public virtual void  sonHarfYumusat()
        {
            if (boy == 0)
            {
                return;
            }
            TurkceHarf yum = dizi[boy - 1].yumusama();

            if (yum != null)
            {
                dizi[boy - 1] = dizi[boy - 1].yumusama();
            }
        }
예제 #12
0
 public bool asciiToleransliKiyasla(TurkceHarf ha)
 {
     //eger harf icerikleri ayni degilse turkce-ascii donusumleri kiyaslanir.
     if (_charDeger != ha.charDeger())
     {
         if (_asciiDonusum != null && _asciiDonusum.charDeger() == ha.charDeger())
         {
             return(true);
         }
         return(_turkceDonusum != null && _turkceDonusum.charDeger() == ha.charDeger());
     }
     return(true);
 }
예제 #13
0
        public System.Object Clone()
        {
            TurkceHarf kopya = new TurkceHarf(_charDeger, _alfabetikSira);

            kopya.sert           = sert;
            kopya.sesli          = sesli;
            kopya.inceSesli      = inceSesli;
            kopya.buyukHarf      = buyukHarf;
            kopya.asciiDisi      = asciiDisi;
            kopya.duzSesli       = duzSesli;
            kopya.yuvarlakSesli  = yuvarlakSesli;
            kopya._yumusama      = _yumusama;
            kopya._sertDonusum   = _sertDonusum;
            kopya._turkceDonusum = _turkceDonusum;
            kopya._asciiDonusum  = _asciiDonusum;
            return(kopya);
        }
예제 #14
0
        /// <summary>
        /// girilen pozisyona herf ekler, bu noktadan sonraki harfler otelenir.
        /// "armut" icin (2, a) "aramut" uretir.
        /// </summary>
        /// <param name="index">eklenecek pozisyon
        /// </param>
        /// <param name="harf">eklenecek harf.
        /// </param>
        /// <throws>  ArrayIndexOutOfBoundsException </throws>
        public virtual void  ekle(int index, TurkceHarf harf)
        {
            if (index < 0 || index > boy)
            {
                throw new System.IndexOutOfRangeException("index degeri:" + index + " fakat harf dizi boyu:" + boy);
            }

            if (boy == dizi.Length)
            {
                kapasiteAyarla();
            }

            for (int i = boy - 1; i >= index; i--)
            {
                dizi[i + 1] = dizi[i];
            }
            dizi[index] = harf;
            boy++;
        }
예제 #15
0
 public void setSertDonusum(TurkceHarf sertDonusum)
 {
     this._sertDonusum = sertDonusum;
 }
예제 #16
0
 public void setYumusama(TurkceHarf yumusama)
 {
     this._yumusama = yumusama;
 }
예제 #17
0
        /**
         * harf dosyasindan harf bilgilerini okur ve TurkceHarf, ve alfabe sinifi icin gerekli
         * gerekli harf iliskili veri yapilarinin olusturur.
         */
        private void harfBilgisiOlustur(IDictionary <String, String> bilgi)
        {
            String tumKucukler = ozellik(bilgi, HARFLER);
            String tumBuyukler = tumKucukler.ToUpper(locale);

            char[] kucukler = harfAyristir(tumKucukler);
            char[] buyukler = harfAyristir(tumBuyukler);

            //TurkceHarfleri olustur.
            for (int i = 0; i < kucukler.Length; i++)
            {
                char       c    = kucukler[i];
                TurkceHarf harf = new TurkceHarf(c);
                harf.setAlfabetikSira(i + 1);
                harfler.Add(c, harf);
                turkceHarfDizisi[c] = harf;
                kucukHarflerDizi[i] = harf;
                temizlemeDizisi[c]  = c;
                turkceMap[c]        = true;
                asciifierDizisi[c]  = c;
            }

            for (int i = 0; i < buyukler.Length; i++)
            {
                char       c    = buyukler[i];
                TurkceHarf harf = new TurkceHarf(c);
                if (Char.IsLetter(c))
                {
                    harf.setBuyukHarf(true);
                }
                harf.setAlfabetikSira(i + 1);
                // TODO Bu if'i ekledim nokta karakteri sorun çıkarıyordu
                if (!harfler.ContainsKey(c))
                {
                    harfler.Add(c, harf);
                }
                buyukHarflerDizi[i] = harf;
                temizlemeDizisi[c]  = kucukHarflerDizi[i].charDeger();
                turkceHarfDizisi[c] = harf;
            }

            foreach (char c in harfAyristir(ozellik(bilgi, SESLI)))
            {
                harf(c).setSesli(true);
                buyukHarf(harfler[c]).setSesli(true);
            }

            foreach (char c in harfAyristir(ozellik(bilgi, INCE_SESLI)))
            {
                harf(c).setInceSesli(true);
                buyukHarf(c).setInceSesli(true);
            }

            foreach (char c in harfAyristir(ozellik(bilgi, DUZ_SESLI)))
            {
                harf(c).setDuzSesli(true);
                buyukHarf(c).setDuzSesli(true);
            }

            foreach (char c in harfAyristir(ozellik(bilgi, YUVARLAK_SESLI)))
            {
                harf(c).setYuvarlakSesli(true);
                buyukHarf(c).setYuvarlakSesli(true);
            }

            foreach (char c in harfAyristir(ozellik(bilgi, SERT)))
            {
                harf(c).setSert(true);
                buyukHarf(c).setSert(true);
            }

            asciiDisi = harfAyristir(ozellik(bilgi, ASCII_DISI));
            foreach (char c in asciiDisi)
            {
                harf(c).setAsciiDisi(true);
            }

            foreach (char c in harfAyristir(ozellik(bilgi, AYIKLAMA)))
            {
                temizlemeDizisi[c] = ALFABE_DISI_KARAKTER;
                temizlemeDizisi[buyukHarf(c).charDeger()] = ALFABE_DISI_KARAKTER;
            }

            foreach (HarfCifti cift in harfCiftiAyristir(ozellik(bilgi, AYIKLAMA_DONUSUM)))
            {
                temizlemeDizisi[cift.h1] = cift.h2;
                temizlemeDizisi[buyukHarf(cift.h1).charDeger()] = buyukHarf(cift.h2).charDeger();
            }

            List <HarfCifti> yumusamaDonusum = harfCiftiAyristir(ozellik(bilgi, YUMUSAMA_DONUSUM));

            foreach (HarfCifti cift in yumusamaDonusum)
            {
                harf(cift.h1).setYumusama(harf(cift.h2));
                buyukHarf(cift.h1).setYumusama(buyukHarf(cift.h2));
            }

            // eger sert donusum bilgisi harf ozelliklerinde yar almazsa
            // yumusama donusumun tersi olarak uygulanir.
            if (bilgi.ContainsKey(SERT_DONUSUM))
            {
                foreach (HarfCifti cift in harfCiftiAyristir(ozellik(bilgi, SERT_DONUSUM)))
                {
                    harf(cift.h1).setSertDonusum(harf(cift.h2));
                    buyukHarf(cift.h1).setSertDonusum(buyukHarf(cift.h2));
                }
            }
            else
            {
                foreach (HarfCifti cift in yumusamaDonusum)
                {
                    harf(cift.h2).setSertDonusum(harf(cift.h1));
                    buyukHarf(cift.h2).setSertDonusum(buyukHarf(cift.h1));
                }
            }

            List <HarfCifti> asciiDonusum = harfCiftiAyristir(ozellik(bilgi, TURKCE_ASCII));

            foreach (HarfCifti cift in asciiDonusum)
            {
                asciifierDizisi[cift.h1] = cift.h2;
                harfler[cift.h1].setAsciiDonusum(harfler[cift.h2]);
            }

            // eger ascii-turkce donusum ikilileri harf dosyasinda belirtilimisse okunur.
            // yoksa turkce-ascii ikililerinin tersi kullanilarak harflerin turkceDonusum ozellikleri belirlenir.
            if (bilgi.ContainsKey(ASCII_TURKCE))
            {
                foreach (HarfCifti cift in harfCiftiAyristir(ozellik(bilgi, ASCII_TURKCE)))
                {
                    harfler[cift.h1].setTurkceDonusum(harfler[cift.h2]);
                }
            }
            else
            {
                foreach (HarfCifti cift in asciiDonusum)
                {
                    harf(cift.h2).setTurkceDonusum(harf(cift.h1));
                }
            }

            // bazi turkcelerde yabanci dillerden gelen bazi kokler normal kalin-kalin sesli
            // uretimini bozar. Eger harf ozelliklerinde belirtilmisse burada ince ozelligine sahip kalin
            // sesli kopyalari uretilir. bu harfler normal sesli listesnde yer almaz. kiyaslama sirasinda
            // kalin hali ile ayni kabul edilir.
            if (bilgi.ContainsKey(OZEL_INCE_SESLI))
            {
                foreach (char c in harfAyristir(ozellik(bilgi, OZEL_INCE_SESLI)))
                {
                    TurkceHarf inceltilmisKalinSesli = (TurkceHarf)harf(c).Clone();
                    inceltilmisKalinSesli.setInceSesli(true);
                    ozelInceSesliler.Add(harf(c), inceltilmisKalinSesli);
                }
            }
        }
예제 #18
0
 public  TurkceHarf sesliBelirleAE(TurkceHarf sonSesli) {
     if (sonSesli.inceSesliMi())
         return HARF_e;
     else
         return HARF_a;
 }    
예제 #19
0
 /// <summary> otomatik kapasite ayarlama. dizi boyu iki katina cikarilir.</summary>
 private void  kapasiteAyarla()
 {
     TurkceHarf[] yeniDizi = new TurkceHarf[dizi.Length * 2];
     Array.Copy(dizi, 0, yeniDizi, 0, dizi.Length);
     dizi = yeniDizi;
 }
예제 #20
0
 /**
  * istenilen kalin seslinin inceltilmis kopya halini dondurur. sadece ters sesli
  * ozel durumu isleminde kullanilmaslidir.
  *
  * @param kalinSesli
  * @return eger varsa karsilik dusen kalin sesli. yoksa seslinin kendisi.
  */
 public TurkceHarf kalinSesliIncelt(TurkceHarf kalinSesli) {
     if (ozelInceSesliler.ContainsKey(kalinSesli))
         return ozelInceSesliler[kalinSesli];
     else return kalinSesli;
 }
예제 #21
0
 public void setTurkceDonusum(TurkceHarf turkceDonusum)
 {
     this._turkceDonusum = turkceDonusum;
 }
예제 #22
0
 public TurkceHarf buyukHarf(TurkceHarf harf) {
     TurkceHarf buyuk = buyukHarflerDizi[harf.alfabetikSira() - 1];
     if (buyuk != null) return buyuk;
     return TANIMSIZ_HARF;
 }
예제 #23
0
	public virtual TurkceHarf kucukHarf(TurkceHarf harf)
	{
		TurkceHarf kucuk = kucukHarflerDizi[harf.alfabetikSira() - 1];
		if (kucuk != null)
			return kucuk;
		return TANIMSIZ_HARF;
	}
예제 #24
0
 public EkUretimBileseni(UretimKurali kural, TurkceHarf harf) {
     this._kural = kural;
     this._harf = harf;
 }
예제 #25
0
 public void setYumusama(TurkceHarf yumusama)
 {
     this._yumusama = yumusama;
 }
예제 #26
0
 public void setSertDonusum(TurkceHarf sertDonusum)
 {
     this._sertDonusum = sertDonusum;
 }
예제 #27
0
 public void setTurkceDonusum(TurkceHarf turkceDonusum)
 {
     this._turkceDonusum = turkceDonusum;
 }
예제 #28
0
    /**
     * harf dosyasindan harf bilgilerini okur ve TurkceHarf, ve alfabe sinifi icin gerekli
     * gerekli harf iliskili veri yapilarinin olusturur.
     */
    private void harfBilgisiOlustur(IDictionary<String, String> bilgi) {

        String tumKucukler = ozellik(bilgi, HARFLER);
        String tumBuyukler = tumKucukler.ToUpper(locale);
        char[] kucukler = harfAyristir(tumKucukler);
        char[] buyukler = harfAyristir(tumBuyukler);

        //TurkceHarfleri olustur.
        for (int i = 0; i < kucukler.Length; i++) {
            char c = kucukler[i];
            TurkceHarf harf = new TurkceHarf(c);
            harf.setAlfabetikSira(i + 1);
            harfler.Add(c, harf);
            turkceHarfDizisi[c] = harf;
            kucukHarflerDizi[i] = harf;
            temizlemeDizisi[c] = c;
            turkceMap[c] = true;
            asciifierDizisi[c] = c;
        }

        for (int i = 0; i < buyukler.Length; i++) {
            char c = buyukler[i];
            TurkceHarf harf = new TurkceHarf(c);
            if (Char.IsLetter(c))
                harf.setBuyukHarf(true);
            harf.setAlfabetikSira(i + 1);
            // TODO Bu if'i ekledim nokta karakteri sorun çıkarıyordu
            if(!harfler.ContainsKey(c))
                harfler.Add(c, harf);
            buyukHarflerDizi[i] = harf;
            temizlemeDizisi[c] = kucukHarflerDizi[i].charDeger();
            turkceHarfDizisi[c] = harf;
        }

        foreach(char c in harfAyristir(ozellik(bilgi, SESLI))) {
            harf(c).setSesli(true);
            buyukHarf(harfler[c]).setSesli(true);
        }

        foreach(char c in harfAyristir(ozellik(bilgi, INCE_SESLI))) {
            harf(c).setInceSesli(true);
            buyukHarf(c).setInceSesli(true);
        }

        foreach(char c in harfAyristir(ozellik(bilgi, DUZ_SESLI))) {
            harf(c).setDuzSesli(true);
            buyukHarf(c).setDuzSesli(true);
        }

        foreach(char c in harfAyristir(ozellik(bilgi, YUVARLAK_SESLI))) {
            harf(c).setYuvarlakSesli(true);
            buyukHarf(c).setYuvarlakSesli(true);
        }

        foreach(char c in harfAyristir(ozellik(bilgi, SERT))) {
            harf(c).setSert(true);
            buyukHarf(c).setSert(true);
        }

        asciiDisi = harfAyristir(ozellik(bilgi, ASCII_DISI));
        foreach (char c in asciiDisi)
            harf(c).setAsciiDisi(true);

        foreach(char c in harfAyristir(ozellik(bilgi, AYIKLAMA))) {
            temizlemeDizisi[c] = ALFABE_DISI_KARAKTER;
            temizlemeDizisi[buyukHarf(c).charDeger()] = ALFABE_DISI_KARAKTER;
        }

        foreach (HarfCifti cift in harfCiftiAyristir(ozellik(bilgi, AYIKLAMA_DONUSUM))) {
            temizlemeDizisi[cift.h1] = cift.h2;
            temizlemeDizisi[buyukHarf(cift.h1).charDeger()] = buyukHarf(cift.h2).charDeger();
        }

        List<HarfCifti> yumusamaDonusum = harfCiftiAyristir(ozellik(bilgi, YUMUSAMA_DONUSUM));
        foreach (HarfCifti cift in yumusamaDonusum) {
            harf(cift.h1).setYumusama(harf(cift.h2));
            buyukHarf(cift.h1).setYumusama(buyukHarf(cift.h2));
        }

        // eger sert donusum bilgisi harf ozelliklerinde yar almazsa
        // yumusama donusumun tersi olarak uygulanir.
        if (bilgi.ContainsKey(SERT_DONUSUM)) {
            foreach (HarfCifti cift in harfCiftiAyristir(ozellik(bilgi, SERT_DONUSUM))) {
                harf(cift.h1).setSertDonusum(harf(cift.h2));
                buyukHarf(cift.h1).setSertDonusum(buyukHarf(cift.h2));
            }
        } else {
            foreach (HarfCifti cift in yumusamaDonusum) {
                harf(cift.h2).setSertDonusum(harf(cift.h1));
                buyukHarf(cift.h2).setSertDonusum(buyukHarf(cift.h1));
            }
        }

        List<HarfCifti> asciiDonusum = harfCiftiAyristir(ozellik(bilgi, TURKCE_ASCII));
        foreach (HarfCifti cift in asciiDonusum) {
            asciifierDizisi[cift.h1] = cift.h2;
            harfler[cift.h1].setAsciiDonusum(harfler[cift.h2]);
        }

        // eger ascii-turkce donusum ikilileri harf dosyasinda belirtilimisse okunur.
        // yoksa turkce-ascii ikililerinin tersi kullanilarak harflerin turkceDonusum ozellikleri belirlenir.
        if (bilgi.ContainsKey(ASCII_TURKCE)) {
            foreach (HarfCifti cift in harfCiftiAyristir(ozellik(bilgi, ASCII_TURKCE)))
                harfler[cift.h1].setTurkceDonusum(harfler[cift.h2]);
        } else {
            foreach (HarfCifti cift in asciiDonusum)
                harf(cift.h2).setTurkceDonusum(harf(cift.h1));
        }

        // bazi turkcelerde yabanci dillerden gelen bazi kokler normal kalin-kalin sesli
        // uretimini bozar. Eger harf ozelliklerinde belirtilmisse burada ince ozelligine sahip kalin
        // sesli kopyalari uretilir. bu harfler normal sesli listesnde yer almaz. kiyaslama sirasinda
        // kalin hali ile ayni kabul edilir.
        if (bilgi.ContainsKey(OZEL_INCE_SESLI)) {
            foreach(char c in harfAyristir(ozellik(bilgi, OZEL_INCE_SESLI))) {
                TurkceHarf inceltilmisKalinSesli = (TurkceHarf)harf(c).Clone();
                inceltilmisKalinSesli.setInceSesli(true);
                ozelInceSesliler.Add(harf(c), inceltilmisKalinSesli);
            }
        }
    }
예제 #29
0
 public void setAsciiDonusum(TurkceHarf asciiDonusum)
 {
     this._asciiDonusum = asciiDonusum;
 }
예제 #30
0
 public void setAsciiDonusum(TurkceHarf asciiDonusum)
 {
     this._asciiDonusum = asciiDonusum;
 }
예제 #31
0
 public System.Object Clone()
 {
     TurkceHarf kopya = new TurkceHarf(_charDeger, _alfabetikSira);
     kopya.sert = sert;
     kopya.sesli = sesli;
     kopya.inceSesli = inceSesli;
     kopya.buyukHarf = buyukHarf;
     kopya.asciiDisi = asciiDisi;
     kopya.duzSesli = duzSesli;
     kopya.yuvarlakSesli = yuvarlakSesli;
     kopya._yumusama = _yumusama;
     kopya._sertDonusum = _sertDonusum;
     kopya._turkceDonusum = _turkceDonusum;
     kopya._asciiDonusum = _asciiDonusum;
     return kopya;
 }
예제 #32
0
파일: Ek.cs 프로젝트: ibrahimatay/nzemberek
 /**
  * Eger baslangic harfleri kumsei var ise gelen harfin bu kumede olup olmadigina bakar.
  * @param ilkHarf
  * @return eger kume tanimlanmamis ise bu ek icin ilk harf denetimi yapilmiyor demektir, true doner.
  *   eger kume mevcut ise (null disi) ve harf kumede mevcutsa true doner. aksi halde false.
  */
 public bool ilkHarfDenetle(TurkceHarf ilkHarf)
 {
     return baslangicHarfleri == null || baslangicHarfleri.Contains(ilkHarf);
 }