Forum: D Programlama Dili RSS
DDOC Nasıl kullanılır ?
canalpay (Moderatör) #1
Kullanıcı başlığı: Can Alpay Çiftçi
Üye Tem 2009 tarihinden beri · 1133 mesaj · Konum: İzmir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Konu adı: DDOC Nasıl kullanılır ?
Şöylesine bir baktım ama anlamadım. Sanırım iki dosyadan oluşuyor. Biri .ddoc diğeri .d adlı iki dosya. Birinde $(P paragraftaki metinler) diyerek kullanıyoruz, diğerinde ise P = <p>$a</p> şeklinde P'nin ne olduğunu tanımlıyoruz. Ama hangisinde hangisini yapıyoruz anlamadım.

Ve en önemlisi ve sanırım yanlış yaptığım şey dmd'ye derlemek için verdiğim kod.

Bunu anlatmak için sanırım en iyisi $(P sse) gibi bir örnek vermektir.
acehreli (Moderatör) #2
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Ö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
canalpay (Moderatör) #3
Kullanıcı başlığı: Can Alpay Çiftçi
Üye Tem 2009 tarihinden beri · 1133 mesaj · Konum: İzmir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Derlemede takıldım :

ddoc_deneme.d(3): no identifier for declarator Ddoc
ddoc_deneme.d(3): semicolon expected, not '$'
ddoc_deneme.d(3): Declaration expected, not '$'
ddoc_deneme.d(25): unrecognized declaration

Diye hata alıyorum. Daha önceki denemelerimde de almıştım.
acehreli (Moderatör) #4
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Anladım: Ddoc'un ilk satırda olması gerekiyor.

D açıklama satırları da eklenemiyor. Denedim; var olmayan bir makroyu açıklama satırı gibi kullanabiliyorsun:

$(AÇIKLAMA Benim açıklamam)

Saçma tabii ama öyle... :)

Ali
canalpay (Moderatör) #5
Kullanıcı başlığı: Can Alpay Çiftçi
Üye Tem 2009 tarihinden beri · 1133 mesaj · Konum: İzmir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
acehreli:
D açıklama satırları da eklenemiyor. Denedim; var olmayan bir makroyu açıklama satırı gibi kullanabiliyorsun:

$(AÇIKLAMA Benim açıklamam)

Anladığım kadarıyla /** */ satırını kullanamıyoruz. Yada direk açıklama satırı yerine $(AÇIKLAMA açıklama satırı) diyoruz. Açıkcası benim için bir sorun değil :-) D kodunu da çok güzel renklendiriyor.

Şimdi aklımda kalan tek şey nasıl pdf sayfası üretileceği ? Sayfasında da sadece pdf üretilebilir diyor. Nasıl üretileceği yazmıyor. Örnek olarak ilk verdiğiniz örneği pdf olarak çıktı alabilir miyiz ?
acehreli (Moderatör) #6
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
canalpay:
direk açıklama satırı yerine $(AÇIKLAMA açıklama satırı) diyoruz. Açıkcası benim için bir sorun değil :-)

Evet, böyle bir belgede açıklamaya fazla gerek olmuyor. İlerisi için hatırlatma amaçlı notlar bırakmaya çalıştığımda gerekmişti ama önemli değil.

Şimdi aklımda kalan tek şey nasıl pdf sayfası üretileceği ?

Makroların çıktıda pdf düzenini oluşturan kodlar haline gelmeleri gerekiyor. pdf standardını şu anda ücretsiz olarak bulamıyorum. Daha önce belki de eski bir standardını bulmuştum; oldukça külfetliydi... Bir sürü olanağı var. :)

Başka bir yolunu hatırladım: Linux'ta yazıcı seçeneği olarak "dosyaya yazdır" gibi bir şey de var. Onu kullanarak da HTML'den (veya her dosyadan) pdf oluşturulabilir ama tam bir çözüm değil.

Ya da en iyisi pdf üreten bir program veya kütüphane satın almak ve kurtulmak. :)

Ali
canalpay (Moderatör) #7
Kullanıcı başlığı: Can Alpay Çiftçi
Üye Tem 2009 tarihinden beri · 1133 mesaj · Konum: İzmir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlarınız için teşekkürler. Bir kaç sorum daha var. (Pek saçma ama olsun.)
1. DDOC hala geliştiriliyor mu ?

2. İşaretlemeli dil yapımı zor olur mu(Niyetim belli oldu :-D ) ?

3. D.ershane yazılarının ham şekli var mı ? Varsa paylaşabilir misiniz ? Yoksa ama DDOC'lu hali varsa onu paylaşabilir misiniz ?
acehreli (Moderatör) #8
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
DDOC düzeninin geliştirilip geliştirilmediğini bilmiyorum ama dmd bug listesinde onunla ilgili kayıtlar var. En azından zaman bulurlarsa düzeltilecektir.

İşaretlemeli dil ile "markup language" mı demek istiyorsun? Zor olmamalı. Sonuçta bir dönüşüm yapılıyor. Makrolar ekleyebiliyor olmak karmaşıklık getirebilir.

D.ershane'yi tamamen DDOC olarak yazıyorum. Elim değince bir proje sitesine koyacağım. Şimdilik sana özel göndereyim.

Ali
Doğrulama Kodu: VeriCode Lütfen resimde gördüğünüz doğrulama kodunu girin:
İfadeler: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Özel Karakterler:
Bağlı değilsiniz. · Şifremi unuttum · ÜYELİK
This board is powered by the Unclassified NewsBoard software, 20100516-dev, © 2003-10 by Yves Goergen
Şu an: 2017-11-23, 23:16:49 (UTC -08:00)