Henüz bitmedi ama "ali & jim" -> "ALİ & JIM" dönüşümü tamam! :)
-
YazıParçası isimli bir arayüz tanımladım ve Dizgi'yi o arayüzden türeterek "Dizgi bir YazıParçası'dır" ifadesini gerçekleştirmiş oldum
-
Yazı isimli bir sınıf tanımlayarak, YazıParçası türünden nesneleri bir araya getirdim. Bu sayede değişik alfabelerle yazılmış olan parçalar aynı yazı içinde birleştirilebiliyor:
import tr.yazi;
import std.cstream;
alias Dizgi!(AlfabeKodu.eng) dizgi_en; // İngiliz alfabesi dizgi türü
alias Dizgi!(AlfabeKodu.tur) dizgi_tr; // Türk alfabesi dizgi türü
alias Yazı!(AlfabeKodu.tur) yazı_tr; // Türk alfabesini yeğleyen yazı türü
void main()
{
// Boş bir yazı
auto yazı = new yazı_tr;
// Farklı alfabelere bağlı parçaları olabilir
yazı ~= new dizgi_tr("ali ĞüŞiÖçIğÜşİöÇı âÎû");
yazı ~= new dizgi_tr(" - ");
yazı ~= new dizgi_en("jim ĞüŞiÖçIğÜşİöÇı âÎû");
dout.writefln(" aslı: ", yazı);
dout.writefln(" küçüğü: ", yazı.küçüğü);
dout.writefln(" büyüğü: ", yazı.büyüğü);
dout.writefln("aksansızı: ", yazı.aksansızı);
}
Çıktısı:
aslı: ali ĞüŞiÖçIğÜşİöÇı âÎû - jim ĞüŞiÖçIğÜşİöÇı âÎû
küçüğü: ali ğüşiöçığüşiöçı âîû - jim ğüşiöçiğüşİöçı âîû
büyüğü: ALİ ĞÜŞİÖÇIĞÜŞİÖÇI ÂÎÛ - JIM ĞÜŞIÖÇIĞÜŞİÖÇı ÂÎÛ
aksansızı: ali ĞüŞiÖçIğÜşİöÇı aIu - jim GuSiOcIgUsIoCi aIu
Aksan kavramının her alfabede farklı olduğuna dikkat edin: ç'nin aksansızı Türk alfabesinde yine ç, ama İngiliz alfabesinde c...
Ayrıca İngiliz alfabesinde ı'nın büyüğü ve İ'nin küçüğü bulunmuyor. Bunun nedeni, o kavramların Unicode'da eksik olmaları... Unicode'da (en azından benim ortamımda) büyüğü olmayan başka harfler de var: ßẗ vs... Bunların bizim için o kadar önemli olmadığını biliyorum; sadece böyle bir yetersizlik olduğunu söylüyorum.
Daha ayrıca, trileri'nin İngiliz alfabesine de çok iyi geldiğini belirtmek isterim. trileri, aksanlı harfleri İngiliz alfabesindeki temel harflerinin hemen arkasında sıralıyor.
Ali
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]