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