Subject: tr.dizgi modülünü ekledim
Dizgi sınıf şablonunu tanımlıyor. Dizgi, bir İm dizisini temsil eder. Aslında bütün işi, bir İm[] dizisini sarmalamak ve bir dizi gibi davranmak...
Özellikleri:
= alfabenin kurallarına göre küçük/büyük/aksansız dönüşümleri
= alfabenin kurallarına göre sıra karşılaştırmaları; bunu dört aşamada yapar
-- öncelikle, harflerin temel farklılıklarına bakılır: 'é' ve 'e' aynıdır; 'c' ve 'ç' farklıdır
-- ondan sonra dizginin uzunluklarına bakılır: kısa olan öncedir ('hal' 'hala'dan öncedir)
-- ondan sonra ilk aksan farkına bakılır: 'hal' 'hâl'den öncedir
-- ondan sonra küçük/büyük farklarına bakılır: küçük harf öncedir ('hal' 'Hal'den öncedir); Bu kuralın ASCII tablosundaki harflerin tersi olduğunu biliyorum ama sanki küçük harfleri önce görmek daha doğal geldi. Bunu düşünmeye devam edelim...
= temel harf ve dizgilerle de olabildiğince pürüzsüz çalışır
Linux'ta denemek için:
(Not: Windows ortamında oluşturma programlarına dokunmadım. Orada da yapılması gereken, trilerinin bütün .d dosyalarını derleme komut satırına eklemektir.)
1) Son trileriyi indirin:
http://code.google.com/p/trileri/source/checkout
2) (Kolaylık olsun diye) trileri klasörüne şu programı kaydedin:
3) Programı şu şekilde oluşturun (isminin dizgi_deneme.d olduğunu varsayıyorum):
4) Çalıştırın:
dizgi_tr'den başka, onun yapı taşı olan İm şablonuna da bakmak isteyebilirsiniz:
Ali
Özellikleri:
= alfabenin kurallarına göre küçük/büyük/aksansız dönüşümleri
= alfabenin kurallarına göre sıra karşılaştırmaları; bunu dört aşamada yapar
-- öncelikle, harflerin temel farklılıklarına bakılır: 'é' ve 'e' aynıdır; 'c' ve 'ç' farklıdır
-- ondan sonra dizginin uzunluklarına bakılır: kısa olan öncedir ('hal' 'hala'dan öncedir)
-- ondan sonra ilk aksan farkına bakılır: 'hal' 'hâl'den öncedir
-- ondan sonra küçük/büyük farklarına bakılır: küçük harf öncedir ('hal' 'Hal'den öncedir); Bu kuralın ASCII tablosundaki harflerin tersi olduğunu biliyorum ama sanki küçük harfleri önce görmek daha doğal geldi. Bunu düşünmeye devam edelim...
= temel harf ve dizgilerle de olabildiğince pürüzsüz çalışır
Linux'ta denemek için:
(Not: Windows ortamında oluşturma programlarına dokunmadım. Orada da yapılması gereken, trilerinin bütün .d dosyalarını derleme komut satırına eklemektir.)
1) Son trileriyi indirin:
http://code.google.com/p/trileri/source/checkout
2) (Kolaylık olsun diye) trileri klasörüne şu programı kaydedin:
import tr.dizgi; import std.stream; import std.cstream; /* * Kullanım kolaylığı için kısa bir isim: */ alias Dizgi!(AlfabeKodu.tur) dizgi_tr; /* * Yukarıdakini veya bir benzerini daha sonra kütüphaneye de eklemeliyiz * ama henüz bu AlfabeKodu enum'undan ve alfabe kodlarından emin değilim. * * Belkide şöyle olmalı: * * auto d = new Dizgi!türkAlfabesi("merhaba"); * auto d = new Dizgi!("merhaba"); * auto d = new türkAlfabesi.Dizgi("merhaba"); * * Şimdilik düşünmeye devam... */ /* * Girişten belirtilen alfabe türünden dizgi okur */ Dizgi!kod Dizgi_oku(AlfabeKodu kod)(Stream akım) { char[] dizgi; akım.readf(&dizgi); return new Dizgi!kod(dizgi); } /* * Bir üstteki işlevin kestirme hali */ Dizgi!(AlfabeKodu.tur) Dizgi_oku_tr(Stream akım) { return Dizgi_oku!(AlfabeKodu.tur)(akım); } void main() { string düzen = "% 20s: %s"; dout.writef(düzen, "Bir sözcük girin", ""); dizgi_tr sözcük = Dizgi_oku_tr(din); dout.writefln(düzen, "küçüğü", sözcük.küçüğü); dout.writefln(düzen, "büyüğü", sözcük.büyüğü); dout.writefln(düzen, "aksansızı", sözcük.aksansızı); }
3) Programı şu şekilde oluşturun (isminin dizgi_deneme.d olduğunu varsayıyorum):
dmd dizgi_deneme.d linux/build/libtrileri.a
4) Çalıştırın:
./dizgi_deneme
Bir sözcük girin: aâBCçdeéfGĞhıîijklmnoöpqrSştuÛüvWxYz
küçüğü: aâbcçdeéfgğhıîijklmnoöpqrsştuûüvwxyz
büyüğü: AÂBCÇDEÉFGĞHIÎİJKLMNOÖPQRSŞTUÛÜVWXYZ
aksansızı: aaBCçdeefGĞhııijklmnoöpqrSştuUüvWxYz
dizgi_tr'den başka, onun yapı taşı olan İm şablonuna da bakmak isteyebilirsiniz:
import tr.im; import std.cstream; alias İm!(AlfabeKodu.tur) im_tr; void main() { im_tr ı = 'ı'; im_tr i = 'i'; im_tr I = 'I'; im_tr İ = 'İ'; assert(ı < i); assert(I < İ); dout.writefln(ı, i, I, İ); }
Ali
acehreli
Show profile
Link to this post