Help:Extension:ParserFunctions/diq

eklentisi, MediaWiki'de zaten mevcut olan e ek olarak on bir yeni ayrıştırıcı işlev sunar. Bu eklenti tarafından sunulan tüm ayrıştırıcı işlevler şu biçimde kullanılır:
 *  

#expr
Bu işlev matematiksel bir ifadeyi değerlendirir ve hesaplanmış değerini gösterir.


 *  

Kullanılabilir işleçler (operatörler) yandaki tabloda öncelik sırasına göre listelenmiştir, her bir işlecin özelliğiyle ilgili daha ayrıntılı bilgi edinmek için sayfasına bakın. Sonuçların doğruluğu ve düzeni viki üzerinde çalıştırılan işletim sistemine ve site dilinin sayı düzenine bağlı olarak değişkenlik gösterir.

kullanılarak yapılan işlemlerde, sıfır false olarak ve sıfır dışındaki, negatif veya pozitif her değer true olarak değerlendirilir:


 *   → 
 *   → 

Boş girilen bir ifadenin dönüşü boş bir metindir. Geçersiz ifadeler hata olarak döner, bu hatalar #iferror ile yakalanabilir:


 *   →  
 *  </tt> → 
 *  </tt> → 

#if

 *  </tt>

Bu işlev ilk parametrenin boş olup olmadığını sınar. Eğer sınanacak dizge yalnızca boşluk karakterleri (boşluk, satır atlama vb.) içeriyorsa sonuç yanlış (false) olur.


 *  </tt> → 
 *  </tt> → 
 *  </tt> → 
 *  </tt> → 

Sınama dizgisi her zaman düz metin olarak yorumlanır, bu yüzden matematiksel ifadeler değerlendirilmez:


 *  </tt> → 
 *  </tt> → 

Dönüş değerlerinin biri veya ikisi birden girilmeyebilir:


 *  </tt> →  
 *  </tt> →  
 *  </tt> →  

Bu ayrıştırıcı işlevin daha fazla kullanım örneği için sayfasına bakın.

#ifeq
Bu ayrıştırıcı işlev iki dizgeyi karşılaştırarak eş olup olmadıklarını tespit eder.


 *  </tt>

Eğer iki dizge de geçerli sayısal değerlerden oluşuyorsa, dizgeler sayısal olarak karşılaştırılır:


 *  </tt> → 
 *  </tt> → 
 *  </tt> → 
 * <tt> </tt> → 

Başka türlü, kıyaslama metinsel olarak yapılır; bu karşılaştırma büyük-küçük harfe duyarlıdır:


 * <tt> </tt> → 
 * <tt> </tt> → 
 * <tt> </tt> →   (tırnak işaretleri olmadan yapılmış üstteki benzer örnekle karşılaştırın)
 * <tt> </tt> →   (<tt>#expr</tt> ile yapılmış üstteki benzer örnekle karşılaştırın)

Pratik bir örnek olması için kullanılmakta olan bir şablon örnek verildi. <tt>Şablon:Size</tt> şablonu önceden tanımlanmış uzun ve kısa boyutları ayarlamak için kullanılır, şu şekilde tanımlanmıştır:

Aşağıdakiler şu sonucu verir:


 * <tt> </tt> → 20
 * <tt> </tt> → 40
 * <tt> </tt> → 40

#iferror
Bu işlev girilen dizgeyi alarak iki sonuçtan birini gösterir; eğer girilen dizge <tt>#expr</tt>, <tt>#time</tt> ve <tt>#rel2abs</tt> işlevleri tarafından oluşturulan hatalar veya döngü hatası, özyineleme benzeri şablon hataları ve diğer kısmi ayrıştırıcı hataları gibi <tt>class="error"</tt> bulunduran HTML nesnesi içeriyorsa sonuç <tt>true</tt> (doğru) olur.


 * <tt> </tt>

Dönüş değerlerinin biri veya her ikisi de ihmal edilebilir. Eğer <tt>hatasız</tt> dizgesi girilmezse, <tt>sınanacak dizge</tt> hatalı olmadığı sürece olduğu gibi göterilir. Eğer <tt>hatalı</tt> dizgesi de girilmezse, hata olması durumunda boş bir dizge gösterilir:


 * <tt> </tt> → 
 * <tt> </tt> → 
 * <tt> </tt> → 
 * <tt> </tt> → 
 * <tt> </tt> →  
 * <tt> </tt> → &zwnj;
 * <tt> </tt> →  

#ifexpr
Bu işlev matematiksel bir ifadeyi değerlendirir ve boole değerine göre iki mümkün sonuçtan birini gösterir:
 * <tt> </tt>

<tt>İfade</tt> girdisi, yukarıdaki <tt>#expr</tt> ile tamamen aynı şekilde ve aynı işleçler kullanılarak değerlendirilir. Çıkış değeri boole ifadesi olarak hesaplanır.

Boş bir ifade girdisi yanlış (false) sonucunu çıkarır:


 * <tt> </tt> → 

Yukarıda bahsedildiği gibi sıfır yanlış olarak değerlendirilir ve herhangi bir sıfır dışı değer doğrudur. Bu yüzden, <tt>#ifeq</tt> ve <tt>#expr</tt> işlevlerinin ikisi birlikte, bu işlevle eşdeğer bir şekilde kullanılabilir:


 * <tt> </tt>

Ancak boş veya yanlış girilen ifadelerde durum değişir, hata mesajı sıradan bir dizge olarak algılanır; sıfırla denk değildir, bu yüzden bu durumda <tt>doğruysa değeri</tt>ni alırız.

Sonuç değerlerinin biri veya her ikisi de girilmeyebilir. Girilmeyen sonuç değeri gösterileceği zaman hiçbir şey gösterilmez:


 * <tt> </tt> → 
 * <tt> </tt> →  
 * <tt> </tt> →  
 * <tt> </tt> →  
 * <tt> </tt> →  
 * <tt> </tt> →  

#ifexist
Bu işlev girilen dizgeyi sayfa adı olarak yorumlar ve yerel viki üzerinde sayfanın bulunup bulunmadığına bağlı olarak iki sonuçtan birini gösterir.


 * <tt> </tt>

Görünür bir içeriği olmayan (ama kategori bağlantıları veya değişkenler bulunduran), tamamen boş olan veya yönlendirme olan sayfaları, işlev <tt>true</tt> (doğru) olarak sonuç verir. Sadece kırmızı bağlantı olan sayfalar (önceden mevcut olup da sonradan silinmiş sayfalar da dahil) <tt>false</tt> (yanlış) olarak sonuç verir.


 * <tt> </tt> → 
 * <tt> </tt> → 

İşlev, değiştirilmiş ve yazılım tarafından tanımlanmış olan  için doğru (true) sonucunu verir.


 * <tt> </tt> → 
 * <tt> </tt> →
 * <tt> </tt> →

<tt>#ifexist:</tt>, "masraflı ayrıştırıcı işlev" olarak bilinir; sayfalarda kullanım sayısı sınırlıdır (bu sayıya sayfada kullanılan şablonlarda bulunanlar da dahil). Sınır aşıldığında, sayfa Category: kategorisinde listelenir ve konulan diğer <tt>#ifexist:</tt> işlevleri sayfanın mevcut olup olmadığına bakmaksızın otomatik olarak yanlış (false) sonucunu çıkarır.

Eğer bir sayfa <tt>#ifexist:</tt> ile bir hedefi kontrol ederse, o sayfa hedef sayfanın sayfasında listelenir. Yani eğer <tt>  </tt> kodunu bu sayfaya  koyarsak, /Deneme sayfasında  sayfasının adı görünür.

Paylaşılan medya depo alanı kullanan vikilerde, <tt>#ifexist:</tt> ile bir dosyanın vikinin kendisine değil de depo alanına yüklenmiş olup olmadığını kontrol edilebilir:


 * <tt> </tt>  → 
 * <tt> </tt> → 
 * <tt> </tt> → 

Eğer dosya için yerel bir açıklama sayfası oluşturulmuşsa, yukarıdakiler için sonuç mevcut olacaktır.

#rel2abs
Bu işlev bağıl dosya yolunu tam dosya yoluna dönüştürür.


 * <tt> </tt>
 * <tt> </tt>

<tt>yol</tt> bölümüne girilecekler için şu kural uygulanmalıdır:
 * → şu anki seviye
 * → "bir üst seviyeye çık"
 * → "bir alt seviye olan /deneme alt dizinine git"

Eğer <tt>ana yol</tt> belirtilmemişse, yerine tam sayfa adı kullanılır:


 * <tt> </tt> → '''
 * <tt> </tt> → '''
 * <tt> </tt> → '''
 * <tt> </tt> → '''

<tt>/.</tt> veya <tt>/./</tt> gibi yanlış sözdizimleri yok sayılır. Arka arkaya iki noktadan fazlasına izin verilmediğinden, bunun gibi dizilimler art arda gelen ifadeleri ayırmada kullanılabilir:


 * <tt> </tt> → '''
 * <tt> </tt> → '''
 * <tt> </tt> → '''
 * <tt> </tt> → '''

#switch
Bu işlev girilen değeri birçok sınama durumuyla karşılaştırır ve eğer eşleşme bulunursa eşleşmenin bulunduğuna atanmış değeri gösterir.

Örnek:


 * <tt> </tt> →   


 * 1) switch işlevi, bir şablona konulan bilginin, farklı düzenleri olan farklı şablonlarda görünmesini sağlar.

Varsayılan
Eğer hiç bir <tt>durum</tt>, <tt>sınanacak dizge</tt> ile eşleşmezse <tt>varsayılan değer</tt> gösterilir:


 * <tt> </tt> →   

Bu sözdiziminde, varsayılan sonuç son parametrede olmalıdır ve eşittir işareti bulundurmamalıdır.


 * <tt> </tt> →   
 * <tt> </tt> →   

Alternatif olarak, varsayılan sonuç açık bir şekilde, "<tt>#default</tt>", <tt>durum</tt> dizgesiyle beyan edilebilir.

Varsayılan sonuçlar bu yolla belirtildiğinde, sadece sona yerleştirilmek zorunda değildir:


 * <tt> </tt> →   

<tt>default</tt> parametresi girilmeyip, hiçbir eşleşme olmadığında hiçbir <tt>sonuç</tt> gösterilmez:


 * <tt> </tt> →   

Sonuçları gruplama
Sonuç bölümleri girilmemiş durumlar yazmak mümkündür, bu durumda <tt>durum</tt> dizgelerinin aynı <tt>sonuç</tt> dizgesini göstermelerini sağlanabilir. Bu da aynı şeylerin tekrarlanmasını en aza indirir.

Buradaki 2, 3 ve 4 numaralı durumların hepsi <tt>sonuç2</tt>'yi gösterir; 6 ve 7 numaralı durumların ikisi de <tt>sonuç4</tt>'ü getirir.

Karşılaştırma yöntemi
<tt>#ifeq</tt> işlevindeki gibi, eğer hem karşılaştırılacak dizge hem de durum dizgeleri sayısal değerlerden oluşuyorsa karşılaştırma sayısal olarak yapılır. Diğer durumlarda da büyük küçük harf duyarlı olarak karşılaştırılır:


 * <tt> </tt> → 
 * <tt> </tt> → 


 * <tt> </tt> → 
 * <tt> </tt> → 

Bir <tt>durum</tt> dizgesi boş bırakılabilir:
 * <tt> </tt> → 

Bir eşleşme bulunduğunda, takip den <tt>durumlar</tt> yok sayılır:
 * <tt> </tt> → 

Eşittir işareti
"Durum" dizgeleri doğrudan eşittir işareti bulunduramaz. Bunu halletmek için, = isimli bir şablon oluşturun ve bu şablonun içine sadece eşittir işareti koyun: <tt>=</tt>. Böylece eşittir işaretini dolaylı yoldan eklemiş olursunuz.

Örnek:
 * <tt> </tt> → 

Bu işlevin uygulamalı olarak kullanımını görmek için, şablonuna bakın. Daha karmaşık örnekler için ve  sayfalarına bakabilirsiniz.

#time
Bu ayrıştırıcı işlev bir tarihi ve/veya zaman dilimini alarak girilen sözdizimine göre düzenler. Bir tarih/zaman nesnesi belirtilebilir; varsayılan değer <tt> </tt> değişkenininin değeridir – bu değer sayfanın HTML olarak görüntülendiği en son zamanı gösterir.


 * <tt> </tt>
 * <tt> </tt>

Kabul edilen biçim dizgesi sağdaki tabloda verilmiştir. Biçim dizgesindeki herhangi bir tanınmayan karakter değiştirilmeden atlanır. Ayrıca biçimlenecek dizgeye kaçak karakter girmenin iki yolu vardır: <tt>xx</tt> şeklinde çift yazılan harfler bir adet normal "x" harfi olarak algılanır.
 * 1) Biçimleyici karakterden önce \ karakteri konulursa, normal bir harf olarak algılanır
 * 2) Tırnak işaretleri arasına konulan biçimleyici karakter normal harf olarak değerlendirilir ve görüntülenirken tırnak işaretleri silinir.


 * <tt> </tt> → 
 * <tt> </tt> → 
 * <tt> </tt> → 
 * <tt> </tt> → 
 * <tt> </tt> → 

<tt>tarih/zaman nesnesi</tt> PHP'nin strtotime işlevi tarafından kabul edilen herhangi bir formatta olabilir. Hem salt (mesela <tt>20 Aralık 2000</tt>) hem de bağıl (mesela <tt>+20 hours</tt>) zaman belirtilebilir.

<tt> </tt> → '''

<tt> </tt> → '''

<tt> </tt> → '''

Eğer Unix zaman damgası hesapladıysanız, tarih hesaplamalarında önüne <tt>@</tt> sembolü ekleyerek kullanabilirsiniz.

<tt> </tt> → '''

<tt> </tt> → '''

Tam veya kısmi salt tarihler belirtilebilir; işlev girilmeyen değerleri otomatik olarak şu anki değerlerle 'dolduracaktır':


 * <tt> </tt> → '''

MediaWiki r86805 - Code Review ile birlikte, dört haneli sayılar her zaman yıl olarak yorumlanır, asla saat ve dakika olarak yorumlanmaz:

<tt> </tt> → '''

Altı haneli bir sayı saat, dakika ve saniye olarak (eğer mümkünse), başka türlü ise hata olarak algılanır (yıl ve ay olarak algılanmaz mesela):

<tt> </tt> → ''' yıl+zaman yerine saat, dakika, saniye olarak algılanır

<tt> </tt> → ''' 19:60:09 geçerli bir zaman olmamasına rağmen Eylül 1960 olarak algılanmaz.

Bu işlev belirli bir miktarda tarih aritmetiği gerçekleştirebilir:


 * <tt> </tt> → '''
 * <tt> </tt> → '''
 * <tt> </tt> → '''
 * <tt> </tt> → '''

#timel
Bu işlev <tt> </tt> işlevinin eşidir, tek fark bu işlevin hiçbir tarih girilmediğinde  ile ayarlanmış olan vikinin yerel zamanını kullanmasıdır.


 * <tt> </tt> → 
 * <tt> </tt> → 
 * <tt> </tt> → 
 * <tt> </tt> → 

#titleparts
Bu işlev sayfa adını, sayfa adındaki eğik çizgilere göre parçalara ayırır ve çıkış metni olarak bu parçaların belirlenen kadarını gösterir.


 * <tt> </tt>

Yani eğer:


 * <tt> </tt>

yazılırsa, "x isimli sayfanın b numaralı parçasından başlanarak a tane parçası" gösterilir.

Eğer <tt>gösterilecek parça sayısı</tt> parametresi tanımlanmazsa "0" değeri varsayılır, yani tüm parçalar gösterilir. <tt>gösterilmeye başlanacak ilk parça</tt> belirtilmezse veya "0" olarak belirtilirse, "1" olduğu varsayılır:


 * <tt> </tt> → 
 * <tt> </tt> → 
 * <tt> </tt> → 
 * <tt> </tt> → 

İki parametre için de negatif değerler kabul edilir. <tt>parça sayısı</tt> için negatif değer girilirse, girilen değer kadar parça sondan eksiltilir. <tt>gösterilmeye başlanacak ilk parça</tt> için negatif değer girilirse parçalar sondan "girilen değer kadar önceki" parçadan başlanarak sayılır:


 * <tt> </tt> → 
 * <tt> </tt> →  
 * <tt> </tt> →   Sondan 1 parça eksiltilir, ikinci parçadan başlanarak kalan parçalar gösterilir.

<tt> </tt> →   Sondan 1 parça eksiltilir, Sondan iki önceki parçadan başlanarak kalan parçalar gösterilir.

Girilen değer en fazla 25 parçadan oluşabilir, fazla konulan eğik çizgiler yok sayılır. Ayrıca dizgenin karakter sınırı 255'tir, zaten bir sayfa adının karakter limiti de aynıdır:
 * <tt> </tt> → 


 * 1) titleparts işlevini küçük bir "dizge ayrıştırıcı ve dönüştürücü" olarak kullanabilirsiniz; ama dizgenin gösterilen ilk parçası büyük harfle gösterilir, eğer küçük harfli olması gerekiyorsa çıkış metnini kontrol altına almak için lc: işlevini kullanın.


 * <tt> </tt> → 
 * <tt> </tt> → 
 * <tt> </tt> → 

Netice metini ahulnayış
Ayrıştırıcı işlevlerin kullanıldığında sadece sonuç metnini aktarmaları sağlanabilir (Bkz: w:Help:Substitution. Bunun için ilgili işlevi yazarken {{'den sonra <tt>subst:</tt> yazın:


 * <tt> {{subst:#ifexist: {{FULLPAGENAME}} | {{FULLPAGENAME}}  | {{FULLPAGENAME}} }} </tt> → sayfa kaydedilince <tt>  {{FULLPAGENAME}}  </tt> kodu eklenecektir, çünkü bu sayfa mevcut.

{{warning/diq|Sonucu aktarılmış ayrıştırıcı işlevler, Vurneyeni veya diğer ayrıştırıcı işlevler gibi sonucu aktarılamayan geçici kodlar bulunduruyorsa tanımsız olur. Sürekli sonuçlar için ifadedeki tüm geçici kodların içeriği de aktarılmalıdır. Help:Substitution sayfasına bakın.}}

Tabloy
Ayrıştırıcı işlevler vikitablo sözdizimini farklı algılamaktadır, doğrudan yazılmış tüm pipet (dik çizgi, pipe) karakterlerini işlev ayracı olarak algılamaktadırlar. Bunu önlemek için çoğu vikide, sadece bir pipet karakteri içeren    :! şablonunu oluşturulmuştur. Bu işlemle pipet karakteri, tüm şablonlar ve değişkenler kapatılana kadar MediaWiki ayrıştırıcısından gizlenmiş olur. Alternatif olarak doğrudan HTML tablo sözdizimi kullanılabilir; ancak bu yöntem kolay anlaşılabilir değildir ve daha çok hata vermeye yatkındır.

Aran ra karaktera kırpnayış
Satır başı karakteri ve boşluklar, bu ayrıştırıcı işlevlerin tüm parametrelerin başından ve sonundan kırpılır. Eğer bu karakterler gerekliyse, herhangi aralıklama dışı karakterler (aralıklama karakteri için kullanılan HTML kodlaması, sıfır genişlikli boşluklar, yönlendirme karakterleri gibi görünmez Unicode karakterleri ve <tt> </tt> gibi MediaWiki ayrıştırıcısı tarafından algılanarak kırpılan dizilimler) daha fazla kırpmayı önleyecektir:







Teberde

 * Help:Parser functions in templates/diq
 * (İngilizce)
 * (İngılızki)
 * Extension:StringFunctions
 * Extension:StringFunctions