Ruby/here Dokümanlar

←Alternatif String Yazımları | ASCII→

Çok satırlı string değerler için Ruby here dokümanları destekler (heredocs). Bu özellik Bourne shell kökenlidir ve Perl ve PHP'de de mevcuttur.


Here dokümanlar

düzenle

Bir here dokümanı oluşturmak için << operatörünü takip eden ve doküman sınırını belirten bir işaretleyici kelime kullanılır. Sondaki işaretleme kelimesi terminatör (sonlandırıcı) olarak bilinir ve öncesinde baştan beri gelen tüm metin newline ve boşluklarla beraber birleştirilip string değeri oluşturur.

puts <<M_LİSTESİ
Market listesi
------------
1. Karışık salata.
2. Çilek.*
3. Çerez.
4. Süt.*

* Organik
M_LİSTESİ

Sonuç:

Market listesi
------------
1. Karışık salata.
2. Çilek.*
3. Çerez.
4. Süt.*

* Organik


Eğer puts metoduna birden çok argüman verirsek, here dokümandan elde edilen string değer, argüman listesindeki << operatörünün olduğu yerde belirir.

Aşağıdaki kodda here-doküman (dört market elemanı ve bir satır boşluktan oluşan) 3üncü argüman olarak metoda verilir. Yukarıdakiyle aynı sonucu elde ederiz.

puts 'Market listesi', '--------------', <<M_LIST, '* Organik'
1. Karışık salata.
2. Çilek.*
3. Çerez.
4. Süt.*

M_LIST


Çoklu here dokümanlar

düzenle

Bir argüman listesinde birden fazla here-doküman de olabilir. Okunabilirliği sağlamak için her here-doküman sonuna bir boş satır ekledik.

puts 'Meyve', '------', <<URUN, 'Süt ürünü', '---------', <<SUT_URUN, '* Organik'
1. Çilek*
2. Yaban mersini

URUN
1. Yoğurt
2. Süt*
3. Süzme peynir

SUT_URUN

Bu kodu çalıştırınca göreceğimiz:

Meyve
------
1. Çilek*
2. Yaban mersini

Süt ürünü
---------
1. Yoğurt
2. Süt*
3. Süzme peynir

* Organik

Örneklerimizde puts metodu kullandık, fakat string parametre alan her metoda bu uygulanabilir.


Girinti

düzenle

Here doküman içinde satırlarda girinti yaparsanız bunlar string değere yansır, ancak sonlandırıcı öncesinde herhangi bir boşluk olmamalıdır.

puts 'Market listesi', '--------------', <<m_list
    1. Karışık salata.
    2. Çilek.
    3. Çerez.
    4. Süt.
m_list

Sonuç:

Market listesi
--------------
    1. Karışık salata.
    2. Çilek.
    3. Çerez.
    4. Süt.


Sonlandırıcıda girinti

düzenle

Kod okunabilirliği için sonlandırıcıyı da girintilemek isterseniz here-dokümanı <<- operatörü ile yazın.

puts 'Market listesi', '--------------', <<-m_list
    1. Karışık salata.
    2. Çilek.
    3. Çerez.
    4. Süt.
    m_list

Not, here-doküman içindeki girintiler hala geçerliğini koruyor.

Market listesi
--------------
    1. Karışık salata.
    2. Çilek.
    3. Çerez.
    4. Süt.


Tırnaklama kuralları

düzenle

Here dokümanlar için de tek tırnaklar veya çift tırnaklar kurallarını kullanabilirsiniz.


Çift tırnak kuralları

düzenle

Eğer bizim örneklerimizde olduğu gibi sınırlayıcı etrafında tırnaklar yoksa here-doküman gövdesi çift tırnak kurallarına göre işlenir.

isim = 'Charlie Brown'

puts <<QUIZ
Öğrenci: #{isim}
 
1.\tSoru: 4+5 kaç yapar?
\tCevap: 4 ve 5'in toplamı #{4+5}
QUIZ

Bu örneğin çıktısı:

Öğrenci: Charlie Brown

1.      Soru: 4+5 kaç yapar?
        Cevap: 4 ve 5'in toplamı 9

Eğer sınırlayıcı etrafına çift tırnak koyarsanız da çift tırnak kuralları geçerli olur. Ancak sonlandırıcı etrafına çift tırnak koymayın.

puts <<"QUIZ"
Öğrenci: #{isim}
 
1.\tSoru: 4+5 kaç yapar?
\tCevap: 4 ve 5'in toplamı #{4+5}
QUIZ


Tek tırnak kuralları

düzenle

Tek tırnak kurallarına uyan here-doküman oluşturmak için sınırlayıcı kelime etrafına tek tırnak koyun.

puts <<'BUS_SCHEDULES'
c:\napolean's documents\tomorrow's bus schedule.txt
c:\new documents\sam spade's bus schedule.txt
c:\bus schedules\the #9 bus schedule.txt
BUS_SCHEDULES

The sonuç:

c:\napolean's documents\tomorrow's bus schedule.txt
c:\new documents\sam spade's bus schedule.txt
c:\bus schedules\the #9 bus schedule.txt