Öncelikle, eğer belge hazırlamak için düşünüyorsan bana ddili'ne başladıktan sonra Markdown önerilmişti:
http://en.wikipedia.org/wiki/Markdown
veya Emacs Muse:
http://mwolson.org/projects/MuseQuickStart.html
Bir kere ddoc'la başlamış olduğum için değiştirmeye üşenmiştim.
Benim anladığım, .ddoc dosyalarında makroların tanımları bulunuyor. .d dosyası da o makroları kullanıyor. Ama, .d'nin başına bile 'Ddoc' belirteci yazınca onun da aslında ddoc dosyası olduğu söyleniyor.
ddoc tamamen bir makro açılımı düzeneği. HTML tanımları, içinde hazır geliyor. Şu sayfada "Predefined Macros" başlığı altında görülüyorlar:
http://www.digitalmars.com/d/2.0/ddoc.html
Önce onlarla bir örnek. Şu kodu 'ddoc_deneme.d' ismiyle kaydet:
Ddoc
$(P
Merhaba $(B ddoc)!
)
$(P
Bir paragraf.
)
$(P
Bir liste:
)
$(UL
$(LI $(RED kırmızı))
$(LI $(BLUE mavi))
$(LI $(GREEN yeşil))
)
$(P
D kaynak kodları en az üç tirelik satırlar arasına yazılıyor:
)
---
struct GününSaati
{
int saat;
int dakika;
}
---
Ondan sonra şöyle derle:
dmd ddoc_deneme.d -Dfddoc_deneme.html
Sonuçta 'ddoc_deneme.html' isminde bir dosya oluşacak. Onu tarayıcıda açabilirsin...
Kendi makrolarını tanımlayabileceğin gibi, mevcut makroları da değiştirebiliyorsun. Yukarıdaki "Predefined Macros" bölümüne bakarsan, DDOC makrosunun bütün sonuç belgenin temeli olduğu gösteriliyor. BODY onun içine yerleştiriliyor. (Belgeler eksik :( TITLE bir makro olarak listelenmemiş ama DDOC içinde kullanıldığını görüyoruz.)
Şimdi kendi makro dosyasını kullanan bir örnek. Şu kodu da 'makrolar.ddoc' ismiyle kaydet:
RED = <span style="color:#ff4400">$0</span>
MOR = <span style="color:#8800ff">$0</span>
D_KEYWORD = $(MOR $0)
Sonra şöyle oluştur:
dmd makrolar.ddoc ddoc_deneme.d -Dfddoc_deneme.html
Hatta, eğer HTML yapacaksan herhalde DDOC'u mutlaka kendin yazmalısın. Benim 'ddili.ddoc' dosyam şöyle:
DDOC =<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="tr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="content-language" content="tr" />
<meta name="language" content="turkish" />
<meta name="description" content="$(DESCRIPTION)" />
<meta name="keywords" content="türkçe $(KEYWORDS)" />
<title>$(MAIN_TITLE) - $(SUBTITLE)</title>
<link href="$(ROOT_DIR)/style.css" rel="stylesheet" type="text/css" />
<link rel="icon" type="image/png" href="/image/favicon.png" />
<link rel="alternate" type="application/rss+xml" href="http://ddili.org/rss.xml" title="D Programlama Dili RSS Beslemesi" />
</head>
<body>
<div id="$(CONTAINER_ID)">
<div id="$(HEADER_ID)">
<div id="$(HEADER1_ID)">
$(MAIN_TITLE)
<span style="font-size:.4em">$(I $(SUB_MAIN_TITLE))</span>
</div>
$(HEADER_SECONDARY_DIV)
</div>
$(VERTINAV_DIV)
<div id="content">
$(BREADCRUMBS_DIV)
$(DERS_NAV)
$(BODY)
$(DERS_NAV)
</div>
</div>
</body>
</html>
Orada ismi geçen makrolar başka dosyalarda tanımlanıyorlar ve komut satırı da make marifetiyle örneğin şöyle oluyor (evet, yapılar dersini yazıyorum ;) ):
dmd ddili.ddoc common.ddoc dusey_navigasyon.ddoc sozluk_body.ddoc ders.ddoc sozluk.ddoc ders/d/yapilar.d.macros.ddoc test.ddoc ders/d/breadcrumbs.ddoc ders/d/yapilar.d -Df../public_html_test/ders/d/yapilar.html
$0 makroya verilen bütün bilgi anlamına geliyor. Örneğin '$(B Bütün bu koyu olacak)' yazıldığında "Bütün bu koyu olacak" kısmı $0 yerine geliyor.
$1, $2, vs. de makronun o numaralı parametresi oluyor. '$(PARAMETRELI_MAKRO birinci, ikinci, üçüncü)'.
$+, ilk virgülden sonra verilenler oluyor (sonraki virgüllerde aynı parametrenin parçası oluyorlar). Örneğin LINK2 şöyle tanımlanmış (ddoc sayfasından):
LINK2 = <a href="$1">$+</a>
O makroyu metin içinde şöyle yazıyorum: '$(LINK2 /ders/d/assert.html, $(C assert) dersinde)' sonuçta HTML dosyasında şu bulunuyor:
<a href="/ders/d/assert.html"><code class="d_inline">assert</code> dersinde</a>
Yani verdiğim bağlantı href'in değeri olmuş. Onun oluşabilmesi için ayrıca şunun tanımlı olduğunu da söylemem gerek:
C = <code class="d_inline">$0</code>
Özet: Çok basit bir makro açılım düzeneği... Tabii HTML belgesinin güzel olarak açılabilmesi için yanında uygun bir 'style.css' dosyası da gelmeli.
Ali
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]