Yeniden başlasam herhalde Ddoc yerine başka bir markup dili kullanırdım. O zamanlar D öğrenmekte olduğumdan ve Ddoc açıklamalardan belge üretmeye de yaradığından elim alışsın onunla diye başlamıştım. :)
Önce kod belgelendirmeye bakalım. Bunun kaynağı şurada:
http://dlang.org/ddoc.html
Şöyle bir kod olsun:
/**
* Authors: Hasip Hesapçıoğlu
*
* Bugs: Sıfırla bölmeye karşı vs. denetim yoktur.
*/
struct Hesapçı {
int bölen; /// Bu, 'bölen'in belgesidir
/**
* Verilen değerin bölünmüşünü döndürür
*
* Params:
* değer = Bölünecek değer
*
* Returns: Bölme işleminin sonucu
*/
int böl(int değer) {
return değer / bölen;
}
}
/// Ddoc açıklaması bulunan 'unittest' blokları da belgeye dahil edilir.
unittest {
auto h = Hesapçı(2);
assert(h.böl(42) == 21);
}
void main() {
}
O kodu '-D' ile derlediğimizde bir .html dosyası elde ederiz:
'
dmd -D deneme.d
'
Çıktısı şunun gibi bir şey oluyor (tabii aslında renkli):
'
deneme
struct Hesapçı;
Authors:
Hasip Hesapçıoğlu
BUGS:
Sıfırla bölmeye karşı vs. denetim yoktur.
Examples:
Ddoc açıklaması bulunan 'unittest' blokları da belgeye dahil edilir.
auto h = Hesapçı(2);
assert(h.böl(42) == 21);
int bölen;
Bu, 'bölen'in belgesidir
int böl(int değer);
Verilen değerin bölünmüşünü döndürür
Params:
int değer Bölünecek değer
Returns:
Bölme işleminin sonucu
'
Her html dosyasında olduğu gibi, o belgenin görüntüsü .css ile ayarlanabilir. Ancak, aslında basit bir makro dili olduğundan, Ddoc baştan ayarlar yapma olanağı da verir. Örneğin, yukarıdaki belgeyi bütünüyle Türkçeleştirmek istersek, Authors, BUGS, vs. gibi metin parçalarını üreten makroları değiştirebiliriz.
Bu makroların ne oldukları Ddoc'un belgesinde görülüyor. Ben örnek olarak DDOC_AUTHORS ve DDOC_BUGS'ı değiştireceğim. Bu, ilk satırı Ddoc olan dosyalarla gerçekleştiriliyor. Örneğin, 'deneme.ddoc' adında şöyle bir dosya yazalım:
'
Ddoc
DDOC_AUTHORS = $(B Yazarlar:)$(BR)$0$(BR)$(BR)
DDOC_BUGS = $(GREEN $(B YETERSİZLİKLER:))$(BR)$0$(BR)$(BR)
'
Belge üretirken o dosyayı da verirsek bizim makrolarımız kullanılıyor:
'
dmd -D deneme.d deneme.ddoc
'
İstediğimiz satırlar Türkçeleşti ve birisi kırmızı yerine yeşil ve kalın oldu:
'
struct Hesapçı;
Yazarlar:
Hasip Hesapçıoğlu
YETERSİZLİKLER:
..
'
Ek olarak, '---' ile ayrılan metin parçaları otomatik olarak kod olarak kabul ediliyor. Bu makro sistemi aslında D'den bağımsız ve başka amaçlarla da kullanılabiliyor.
Merhaba Dünya bölümünün kaynağı şu:
https://bitbucket.org/acehreli/ddili/src/2c1dd7b75ba31fe8116cada909f14bd8367bd7fe/src/ders/d/merhaba_dunya.d?at=master&fileviewer=file-view-default
Onu üreten .ddoc dosyalarından ikisi de şunlar (başkaları da var; onları 'make' yazınca kullanılan komut satırında görebilirsiniz):
https://bitbucket.org/acehreli/ddili/src/2c1dd7b75ba31fe8116cada909f14bd8367bd7fe/src/common.ddoc?at=master&fileviewer=file-view-default
https://bitbucket.org/acehreli/ddili/src/2c1dd7b75ba31fe8116cada909f14bd8367bd7fe/src/ders.ddoc?at=master&fileviewer=file-view-default
Resim yolları da IMG, LINK, ve LINK2 gibi makroları kullanır. Şurada IMG kullanılıyor:
https://bitbucket.org/acehreli/ddili/src/2c1dd7b75ba31fe8116cada909f14bd8367bd7fe/src/ders/d/index.d?at=master&fileviewer=file-view-default#index.d-14
Orada geçen pdficon_small.gif ise normalde şu klasörde duruyor:
https://bitbucket.org/acehreli/ddili/src/2c1dd7b75ba31fe8116cada909f14bd8367bd7fe/src/image/?at=master
Bütün kitapların aynı 'image' klasöründe durmaları aslında yanlış. Her kitabın endi alt 'image' klasörü olmalıymış. Gerekirse öyle değiştiririz.
Ayrıca, kitabın oluşturulması, Ddoc'lar, vs. zamanla oldukça karmaşık hale geldi... :-/
Ali
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]