Modül:Ototaksonkutu
Bu modül şu Lua modüllerini kullanıyor: |
Şablonlar
Modüller
|
Bu modül {{otomatik taksonkutu}} şablonunu çalıştırmaya yarayan Modül:Ototaksonkutu/şablon arayüzü modülünün ana fonksiyonlarını barındıran bir Lua modülüdür. Direkt bu modül üzerinden kullanabileceğiniz belli başlı fonksiyonlar mevcuttur. bilimsel sınıflandırmaya göre alt cins ve üzerinde bulunan tüm kademeler için bu modül kullanılabilir durumdadır. Alt cins'in alt kademelerinde bulunan tür gibi kademeler için ise, Modül:Ototaksonkutu/şablon arayüzü modülünde özelleştirmeler mevcuttur. Bunlar da yalnızca {{otomatik taksonkutu}} şablonu için geçerlidir.
{{Taksonomi/Felis}} tarzındaki sayfalarda tutulan verileri kullanarak size herhangi bir takson hakkında bilgi vermek için kullanılan fonksiyonları burada bulabilirsiniz. Tüm taksonomi veritabanını görmek için Taksonomi şablonları sayfasına bakabilirsiniz.
taksonBilgi()
Şablon:Taksonomi/TAKSON sayfasına erişip istenilen verileri size verir, eğer 'aynısı' bağlantısı mevcutsa 'aynısı' olan taksonun bilgilerini verir.
Kullanımı:
{{#invoke:Ototaksonkutu|taksonBilgi|TAKSON|GİRDİ}}
- GİRDİ şunlardan biridir
- 'ebeveyn', 'sıra', 'bağ_sayfa', 'bağ_yazı', 'tükenmiş', 'hep_görüntüle', 'kaynak', 'aynısı' veya 'hepsi'.
Eğer GİRDİ belirlenmediyse, varsayılan değer 'hepsi' olur - tüm bilgiler tek bir satırda '$' ile ayrılarak yazılır.
taksonkutuListe()
Girilen taksonun hiyeraşisini en üste kadar bulup, bunu otomatik taksonkutuya yansıtmada yardımcı olur.
- Kullanımı
{{#invoke:Ototaksonkutu|taksonkutuListe|TAKSON |taks_üst_sayısı = gösterilecek *üst* seviye takson sayısı |sıralama = mevcut TAKSON için yazar adı ve tarihi |üst_sıralama = mevcut TAKSON'un ebeveyni için yazar adı ve tarihi |büst_sıralama = mevcut TAKSON'un ebeveyninin ebeveyni için yazar adı ve tarihi |bbüst_sıralama = mevcut TAKSON'un ebeveyninin ebeveyninin ebeveyni için yazar adı ve tarihi |bbbüst_sıralama = mevcut TAKSON'un ebeveyninin ebeveyninin ebeveyninin ebeveyni için yazar adı ve tarihi |seçili_kalın = TAKSON'un yazısının satırda kalın gözükmesi için 'kalın' yazın |virüs = virüs italik standartlarını kullanmak için 'evet' yazın }}
{{Taksonomi/Felis}} için bir deneme yapılacak olursa şu şekilde olur:
{| class="wikitable" {{#invoke:Ototaksonkutu|taksonkutuListe|Felis}} |}
Âlem: | Hayvan |
Şube: | Chordata |
Sınıf: | Mammalia |
Takım: | Carnivora |
Alt takım: | Feliformia |
Familya: | Felidae |
Alt familya: | Felinae |
Cins: | Felis |
esasSira()
Bu fonksiyon Otomatik taksonkutu sisteminde kullanılan konfigürasyon fonksiyonlarından bir tanesidir. Modül:Ototaksonkutu|taksonkutuListe() tarafından kullanılmaktadır.
{{#invoke:Ototaksonkutu|esasSira|SIRA}}
Girilen parametrenin, yani Latincedeki sıralamanın, bir 'esas' Linnaean sıralaması olup olmadığını kontrol eder, 'evet' veya 'hayır' çıktısı verir. Bu şablonu düzenleyerek hangi sıralamaların esas olarak değerlendirileceği ve otomatik taksonkutuda o şekilde görüntüleneceği belirlenebilir.
Şu anda esas sıralama olarak değerlendirilenler: alem, şube, bölüm, sınıf, takım, familya, cins ve tür. Ayrıca bunların ichno- ile oo- halleri.
ceviriSira()
Bu fonksiyon Otomatik taksonkutu sisteminde kullanılan konfigürasyon fonksiyonlarından bir tanesidir. Modül:Ototaksonkutu|taksonkutuListe() tarafından kullanılmaktadır.
{{#invoke:Ototaksonkutu|ceviriSira|SIRA|kontrol=KONTROL}}
Latincede yazılmış bir takson adının, Türkçe karşılığını verir.
Eğer girilen sıralama bu şablonda ekli değilse, bu sırayı barındıran taksonomi şablonu Kategori:Tanınmayan sıra kullanan taksonomi şablonları kategorisine yerleştirilecektir.
altSira()
Bu fonksiyon, belirtilmiş sıralamanın bir alt sırasını (asil olan) bize verir. Asıl kullanımı Şablon:Otomatik taksonkutu içerisindedir; bahsi geçen taksonun sırası girildiğinde, bir sonraki alt sıralamanın getirilmesini sağlar. Mesela, "cins" girildiğinde "Tür" olarak; "altşube" girildiğinde "Sınıf" ("Üstsınıf" veya "Classis" değil) olarak çıktı verir.
{{#invoke:Ototaksonkutu|altSira|SIRA}}
Eğer bir sıralama bu listede yoksa, bir hata mesajı yansıtılacaktır. Bu hatayı düzeltmek için, şablonu düzenleyin, var olmayan takson sıralamasını bulunması gereken bir alt sıralamasını verecek şekilde ekleyin. Şablonun içeriğine girdiğinizde zaten kendisini anlatmaktadır.
Alt- ve üst- şeklindeki sıralamalar çıktıya alınmaz; bu sıralamaların büyük çoğunlukla bahsi geçen taksonun yanına dizilmesi beklenir, örnek olarak Dinozor.
italikTakson()
Bu fonksiyon Otomatik taksonkutu sisteminde kullanılan konfigürasyon fonksiyonlarından bir tanesidir. Modül:Ototaksonkutu|taksonkutuListe() tarafından kullanılmaktadır.
{{#invoke:Ototaksonkutu|italikTakson|TAKSON|VİRÜS}}
Bir taksonun italik yazılıp yazılmaması gerektiğine karar verir, virüs olup olmamasına veya sıralamasına bakarak. Yeni bir tip sisteme eklendiğinde güncellemenmesi gereken şablonlardan biri.
Kullanım
{{#invoke:Ototaksonkutu|italikTakson|takson-sıra|evet veya hayır (virüs)}}
– mevcut değer |2=hayır
(virüs)
{{#invoke:Ototaksonkutu|italikTakson|tür}}
→ evet{{#invoke:Ototaksonkutu|italikTakson|cins}}
→ evet{{#invoke:Ototaksonkutu|italikTakson|familya}}
→ hayır{{#invoke:Ototaksonkutu|italikTakson|familya|evet}}
→ evet{{#invoke:Ototaksonkutu|italikTakson|strain|evet}}
→ hayır
taksonkutuRengi()
Modül Düzenleyicilerine not: Bu fonksiyon, taksonomi (takson) terimlerini içeren, takson sıralamasına göre renk belirleyen {{Otomatik taksonkutu}} şablonunun taksonkutu renginin değiştirilmesine dayanmaktadır, yani değişime uğrayabilirler. Renkler, rgb(..,..,..) biçimi kullanılarak belirlenmelidir.
{{#invoke:Ototaksonkutu|taksonkutuRengi|TAKSON}}
Amaç
Bu fonksiyon taksonkutusu sisteminde kullanılan konfigürasyon fonksiyonlarından bir tanesidir, otomatik taksonkutu sisteminde kullanılmaktadır.
Bir taksonkutusunun uygun rengini oluşturmaktadır.
Yalnızca diğer taksonkutusu şablonları tarafından kullanılmalıdır.
Taksonomi şablonları tarafından kullanımı
Otomatik taksonkutuları, Modül:Ototaksonkutu modülündeki bir fonksiyonu kullanmaktadır, ki bu da taksonun renkle eşleşmesini taksonomi şablonlarında kodlanmış olan taksonomi hiyerarşisini arayarak (örn. "Taksonomi/takson-adı" biçiminde başlayan şablon adlarını tarayarak).
Bir taksonkutu içerisindeki eşleşmiş renk
Otomatik taksonkutuları genellikle renklerini otomatik oluşturur. Eğer oluşturamazsa ya da birtakım bilinmeyen nedenlerden dolayı otomatik rengi görmezden gelirse, |renk_benzeri=
parametresi uygulanan takson için girilebilir. Sonuçta:
| renk_benzeri = Animalia
kodu bir taksonkutusu içerisindeyse rengin eşleşmesini uygun hayvanlar alemindeki renk ile değiştirir. Girilen |renk_benzeri=
parametresi bu şablonun kullandığı switch parametrelerinden biri olmalıdır. Yani |renk_benzeri=Felis
işe yaramaz ve hata rengine yönlendirir.
Taksonkutu renk şeması
Virüsler | rgb(250,250,190) | ayrıca Viroidler |
---|---|---|
Bakteri | rgb(220,235,245) | |
Arkea | rgb(195,245,250) | ayrıca Nanoarchaeota (Nanarchaeota), Korarchaeota, Thaumarchaeota, Crenarchaeota ve Euryarchaeota |
Ökaryotlar | rgb(245,215,255) | Excavata, Amoebozoa ve Opisthokonta da dahil olmak üzere ökaryotların tek bir rengi mevcut |
Hayvanlar | rgb(235,235,210) | |
Mantarlar | rgb(145,250,250) | |
Archaeplastida | rgb(180,250,180) | ayrıca Bitkiler ve Viridiplantae |
SAR | rgb(200,250,80) | ayrıca Chromalveolata |
incertae sedis | rgb(250,240,230) | |
İknotaksonlar | rgb(230,222,214) | |
Ootaxa | rgb(250,250,220) |
İzleyici kategoriler
--[[*************************************************************************
Bu modül Otomatik Taksonkutu sisteminin ana modülüdür.
{{Otomatik taksonkutu}} tarafından kullanılmaktadır.
Özellikle sağladığı şey, taksonomi hiyeraşisini otomatik olarak
taksonomi şablonlarında listelemektir ("Şablon:Taksonomi/TAKSON_ADI"
biçimindeki şablonları kullanarak), şablon genişletme hatalarına sebep
olmadan.sayfasına bağlanır
*****************************************************************************]]
require('Modül:No globals')
local veri = require("Modül:Ototaksonkutu/veri")
local TaksonItalik = require('Modül:Taksonİtalik') -- Modül:Taksonİtalik'ten takson adını italik göstermek için bir fonksiyon
local TabloSatiri = '|-\n'
local TabloSonu = '|}\n'
local p = {} -- dışarıdan erişilebilen fonksiyonlar
local l = {} -- modül içinde kullanılan fonksiyonlar, ayrıştırmak için
local colour = '' -- taksonkutu ve toksan listelemeleri için renk
--[[=========================================================================
Bir taksonomi hiyeraşisinin çıkabileceği en yüksek takson derinliğini
belirler; işlem yapma süresini azaltır ve yanlış belirlenmiş hiyeraşilere
karşı koruma sağlar, örneğin döngüler.
Bu değer dışarıdan şu şekilde çağırılabilir:
{{#invoke:Ototaksonkutu|getirMaksAramaSeviyesi}}
=============================================================================]]
local MaksAramaSeviyesi = 100
function p.getirMaksAramaSeviyesi()
return MaksAramaSeviyesi
end
--[[========================= taksonkutuRengi ===============================
Bir taksonkutu için gösterilen rengi belirler, taksonomi hiyeraşisindeki en
üst taksona çıkarak en baş taksonun rengini getirir ('incertae sedis' bir
istisnadır, bu direk kendi rengini belirler). Geçerli bir taksonkutu renginin
CSS rgb() biçimini kullandığı kabul edilmiştir, tüm renkler bu biçimdedir.
Eğer taksonkutu için hiçbir renk bulunamadıysa, 'transparent' (yani renksiz)
görünür ama taksonomi hiyeraşisi çok yukarı gidiyorsa, hata rengi görünür.
Kullanımı: {{#invoke:Ototaksonkutu|taksonkutuRengi|TAKSON}}
=============================================================================]]
function p.taksonkutuRengi(frame, taxon)
return p.getirTaksonkutuRengi(frame, taxon or frame.args[1] or '')
end
function p.getirTaksonkutuRengi(frame, currTaxon, cats)
-- renkler bu fonksiyon için küreseldir; varsayılan değeri ise string türündedir
local i = 1 -- sayma işlemi başlatılıyor
local searching = currTaxon ~= '' -- hala renk aranıyor mu?
local foundICTaxon = false -- bir 'incertae sedis' var mı diye kontrol et
while searching and i <= MaksAramaSeviyesi do
local plainCurrTaxon, dummy = l.kirpFazlaliklar(currTaxon) -- gereksiz yazıları soyutla /
if string.lower(plainCurrTaxon) == 'incertae sedis' then
foundICTaxon = true
else
local possibleColour = veri.getirTabloyaGore(plainCurrTaxon, "renkler")
if possibleColour and string.sub(possibleColour,1,3) == 'rgb' then
colour = possibleColour
searching = false
end
end
if searching then
local ok, parent = p.getirTaksonBilgiOgesi(frame, currTaxon, 'ebeveyn')
if ok and parent ~= '' then
currTaxon = parent
i = i + 1
else
searching = false -- hiyeraşinin en üst katmanına çık veya var olmayan taksonomi şablonlarını kullanmaya çalış
end
end
end
if colour == '' then
if foundICTaxon then
colour = veri.getirTabloyaGore("incertae sedis", "renkler")
table.insert(cats, "[[Kategori:Incertae sedis rengine sahip taksonkutular]]")
elseif searching then
-- MaksAramaSeviyesi'ni aşan hiyeraşi seviyeleri
colour = "transparent; text-align:center; border: 2px solid red; error:colour"
table.insert(cats, "[[Kategori:Hata rengine sahip taksonkutular]]")
else
colour = 'transparent'
table.insert(cats, "[[Kategori:Rengi olmayan taksonkutular]]")
end
end
return colour
end
--[[= = = = = = = = = = = = = ustSeviyeTakson = = = = = = = = = = = = = = =
Burası herhangi bir takson hiyeraşisinde en üste gelebilecek takson
gruplarını belirler.
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =]]
function l.ustSeviyeTakson(taxon)
return taxon == 'Life' or taxon == 'Veterovata' or taxon == 'Ichnos'
end
--[[========================= taksonkutuListe ===============================
Girilen taksonun hiyeraşisini en üste kadar bulup, bunu otomatik
taksonkutuya yansıtmada yardımcı olur.
Kullanım:
{{#invoke:Ototaksonkutu|taksonkutuListe|TAKSON
|taks_üst_sayısı = gösterilecek *üst* seviye takson sayısı
|sıralama = mevcut TAKSON için yazar adı ve tarihi
|üst_sıralama = mevcut TAKSON'un ebeveyni için yazar adı ve tarihi
|büst_sıralama = mevcut TAKSON'un ebeveyninin ebeveyni için yazar adı ve tarihi
|bbüst_sıralama = mevcut TAKSON'un ebeveyninin ebeveyninin ebeveyni için yazar adı ve tarihi
|bbbüst_sıralama = mevcut TAKSON'un ebeveyninin ebeveyninin ebeveyninin ebeveyni için yazar adı ve tarihi
|seçili_kalın = TAKSON'un yazısının satırda kalın gözükmesi için 'kalın' yazın
|virüs = virüs italik standartlarını kullanmak için 'evet' yazın
}}
=============================================================================]]
function p.taksonkutuListe(frame, moduleTable)
if moduleTable then
frame.args = moduleTable
end
local currTaxon = frame.args[1] or ''
if currTaxon == '' then return '' end
local displayN = (tonumber(frame.args['taks_üst_sayısı']) or 1) + 1
local authTable = {}
authTable[1] = frame.args['sıralama'] or ''
authTable[2] = frame.args['üst_sıralama'] or ''
authTable[3] = frame.args['büst_sıralama'] or ''
authTable[4] = frame.args['bbüst_sıralama'] or ''
authTable[5] = frame.args['bbbüst_sıralama'] or ''
local boldFirst = frame.args['seçili_kalın'] or 'link' -- değeri 'link' veya 'kalın'
local virus = frame.args['virüs'] or 'hayır' -- değeri 'evet' veya 'hayır'
local offset = tonumber(frame.args['offset'] or 0)
-- eğer 'sıralama' parametresi bahsi geçen taksondan daha alt seviyedeki
-- bir takson içinse, sıralamaların hepsini kaydır
if offset ~= 0 then
for i = 1, 5 do
local j = i + offset
if j <= 5 then
authTable[i] = authTable[j]
else
authTable[i] = ''
end
end
end
local taxonTable, taxonRankTable = l.yapTablo(frame, currTaxon)
local res = ''
local topTaxonN = taxonTable.n
-- eğer mümkünse büyük büyük büyük ebeveynin üstündeki tüm taksonları
-- sıralamasız (sıralamasını belirleyen yazar olmadan) göster
for i = topTaxonN, 6, -1 do
res = res .. p.gosterTakson(frame, taxonTable[i], taxonRankTable[i], topTaxonN==i, '', displayN >= i, '', virus)
end
-- ebeveynin üstündeki tüm taksonları eğer
-- sıralamaları (sıralamasını belirleyen yazarlar) ile birlikte göster
for i = math.min(topTaxonN, 5), 2, -1 do
res = res .. p.gosterTakson(frame, taxonTable[i], taxonRankTable[i], topTaxonN==i, authTable[i], displayN >= i, '', virus)
end
-- hedef taksonu göster, her daim kalın ve gösterilir
res = res .. p.gosterTakson(frame, taxonTable[1], taxonRankTable[1], topTaxonN==1, authTable[1], true, boldFirst, virus)
return res
end
--[[= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
Bir taksonkutudaki tek bir takson satırını oluştur.
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =]]
function p.gosterTakson(frame, taxon, rank, isTopTaxon, auth, force, boldFirst, virus)
-- eğer bir üst seviye taksonda değilsek (mesela "Life" değilse) ve ebeyevn yoksa bu bir hatadır
if isTopTaxon then
if l.ustSeviyeTakson(taxon) then
return '' -- bir üst seviye takson gösterme
elseif mw.title.new('Taksonomi/'..taxon, 'Şablon').exists then
-- bu taksonomi şablonunda bir ebeveyn tanımlanmamış
return l.taksonomiOlustur(taxon, 'Taksonomi şablonunda bir ebeveyn belirtilmemiş') .. '\n' .. TabloSatiri
else
-- bu taksonun bir taksonomi şablonu mevcut değil
return l.taksonomiOlustur(taxon, 'Eksik taksonomi şablonu') .. '\n' .. TabloSatiri
end
else
-- if showing is not already forced, force if it's a principal rank or an authority is specified
force = force or l.getirEsasSira(rank) == 'evet' or
auth ~= ''
if not force then
-- if showing is still not already forced, force if the taxonomy template has 'always_display' set
local ok, alwaysDisplay = p.getirTaksonBilgiOgesi(frame, taxon, 'hep_görüntüle')
force = alwaysDisplay == 'evet' or alwaysDisplay == 'true'
end
if force then
local res = l.tabloHucresi("<span style='white-space: nowrap;'>"..l.getirCeviriSira(rank) .. ':</span>')
local bold = 'hayır'
if boldFirst == 'kalın' then bold = 'evet' end
if auth ~= '' then
auth = '<br><small>' .. auth .. l.taksonKaynak(frame, taxon) .. '</small>'
elseif bold == "evet" then
auth = '<br><small>' .. l.taksonKaynak(frame, taxon) .. '</small>'
end
local res = res .. l.tabloHucresi(l.getirTaksonBag(frame, taxon, rank, bold, '', '', virus) .. auth) -- italic, abbreviated
return res .. TabloSatiri
else
return ''
end
end
end
function l.taksonKaynak(frame, taxon)
-- taksonun kaynağı belirtilmişse onu çağır
local ok, taksonKaynak = p.getirTaksonBilgiOgesi(frame, taxon, 'kaynak')
if ok and taksonKaynak ~= "" then
taksonKaynak = frame:extensionTag{ name = 'ref', content = taksonKaynak, args = { name = taxon..'-kaynak' } }
end
return taksonKaynak
end
--[[========================= taksonomiListe ================================
Returns the cells of the taxonomy table displayed on the right hand side of
"Template:Taxonomy...." pages.
Kullanımı: {{#invoke:Ototaksonkutu|taksonomiListe|TAKSON}}
=============================================================================]]
function p.taksonomiListe(frame)
return l._taksonomiListe(frame, frame.args[1] or '')
end
function l._taksonomiListe(frame, currTaxon)
local cats = {}
if currTaxon == '' then
return '{|class="infobox biota"\n' .. TabloSatiri .. l.tabloHucresi('') .. l.tabloHucresi('HATA: hiçbir takson girilmedi') .. TabloSonu
end
local taxonTable, taxonRankTable = l.yapTablo(frame, currTaxon)
local rankValTable = l.getirSiraTablosu()
local lastRankVal = 1000000
local orderOk = true
-- check whether the taxonomy is for viruses; use already determined taxon colour if possible
local virus = 'hayır'
local taxoColour = colour
if taxoColour == '' then
if taxonTable[taxonTable.n] == 'Ichnos' or taxonTable[taxonTable.n] == 'Veterovata' then
taxoColour = p.getirTaksonkutuRengi(frame, taxonTable[taxonTable.n], cats)
else
taxoColour = p.getirTaksonkutuRengi(frame, taxonTable[taxonTable.n - 1], cats)
end
end
if taxoColour == p.getirTaksonkutuRengi(frame, "virüs", cats) then
virus = 'evet'
end
-- add information message
local res = '<p style="text-align:right">Tabloda kalın olarak görünenler taksonkutularda görünür;<br>ya asil bir sıradır ya da <code>hep_görüntüle=evet</code> değerindedir.</p>\n'
-- start table
res = res .. '{| class="infobox biota" style="text-align: left; font-size:100%"\n' .. TabloSatiri .. '! colspan=4 style="text-align: center; background-color: '
.. taxoColour .. '"|Ata taksonlar\n'
-- deal first with the top level taxon; if there are no errors, it should be Life/Veterovata/Ichnos, which are
-- not displayed
local taxon = taxonTable[taxonTable.n]
if not l.ustSeviyeTakson(taxon) then
local msg = 'Taksonomi şablonu eksik'
if mw.title.new('Taksonomi/'..taxon, 'Şablon').exists then
msg = 'Ebeveyn takson gerekli'
end
res = res .. TabloSatiri .. l.tabloHucresi('colspan=2', l.taksonomiOlustur(taxon, msg))
end
-- now output the rest of the table
local currRankVal
for i = taxonTable.n-1, 1, -1 do
-- check ranks are in right order in the hierarchy
taxon = taxonTable[i]
local rank = taxonRankTable[i]
currRankVal = l.araSiraDegeri(rankValTable, rank)
if currRankVal then
orderOk = currRankVal < lastRankVal
if orderOk then lastRankVal = currRankVal end
else
orderOk = true
end
-- see if the row will be displayed in a taxobox; bold the rank if so
local boldRank = false
local ok, alwaysDisplay = p.getirTaksonBilgiOgesi(frame, taxon, 'hep_görüntüle')
if ok and (alwaysDisplay == 'evet' or alwaysDisplay == 'true') then
boldRank = true
else
boldRank = l.getirEsasSira(rank) == 'evet'
end
-- now return a row of the taxonomy table with anomalous ranks marked
local errorStr = ''
if not orderOk then errorStr = 'evet' end
local link = l.getirTaksonBag(frame, taxon, rank, '', '', '', virus) -- bold, italic, abbreviated
res = res .. l.taksonomiListeSatiri(taxon, rank, link, boldRank, errorStr)
end
-- close table
res = res .. TabloSonu
-- error-tracking for taxonomy templates
-- if the last row has an anomalous rank, put the page in an error-tracking category
if not orderOk then
table.insert(cats, '[[Kategori:Aykırı sıra gösteren taksonomi şablonları]]')
end
-- if the last row has a taxon name in the page name that does not match the link text,
-- put the taxonomy template in a tracking category
local dummy, linkText = p.getirTaksonBilgiOgesi(frame, taxon, 'bağ_yazı')
local match = l.matchTaxonLink(taxon, linkText, currRankVal and currRankVal < rankValTable['cins'])
if not match then
table.insert(cats, '[[Kategori:Bağ yazısı ve adı eşleşmeyen taksonomi şablonları|' .. taxon .. ']]')
end
if cats[1] then
res = res .. frame:expandTemplate{ title = 'Şablon diğer', args = { table.concat(cats)} }
end
return res
end
--[[ = = = = = = = = = = = = = = taxonomyListRow = = = = = = = = = = = = = =
Returns a single row of the taxonomy table displayed on the right hand side
of "Template:Taxonomy...." pages.
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =]]
function l.taksonomiListeSatiri(taxon, rank, link, boldRank, error)
local res = ''
if taxon == '' or rank == '' then return res end
local baseTaxon, qualifier = l.kirpFazlaliklar(taxon)
-- if appropriate, make it clear that some taxa have been skipped via a ... row
if qualifier == '/geç' then
res = res .. TabloSatiri .. l.tabloHucresi('.....') .. l.tabloHucresi('.....')
end
-- now generate a row of the table
res = res .. TabloSatiri
local cellContent = ''
local anglicizedRank = l.getirCeviriSira(rank)
if boldRank then
cellContent = cellContent .. '<span style="white-space:nowrap;"><b>' .. anglicizedRank .. '</b>:</span>'
else
cellContent = cellContent .. '<span style="white-space:nowrap;">' .. anglicizedRank .. ':</span>'
end
if error == 'evet' then
cellContent = '<span style="background-color:#FDD">' .. cellContent .. '</span>'
end
res = res .. l.tabloHucresi(cellContent)
.. l.tabloHucresi('<span style="white-space:nowrap;">' .. link .. '</span>')
.. l.tabloHucresi('<span style="font-size:smaller;">' .. qualifier .. '</span>')
.. l.tabloHucresi('<span style="white-space:nowrap;">' .. l.birTaksonuDuzenle(taxon) .. '</span>')
return res
end
--[[====================== cagirTaksonomiAnahtari ===========================
Prepares for, and then calls, Template:Taxonomy key to display a taxonomy
template page. It does this by building up the information the template
requires, following one 'aynısı' link, if required.
Kullanımı:
{{#invoke:Ototaksonkutu|cagirTaksonomiAnahtari
|ebeveyn=
|sıra=
|tükenmiş=
|hep_görüntüle=
|bağ_sayfa=value of 'link' parameter in taxonomy template
|bağ_yazı=value of parameter 2 in taxonomy template
|aynısı=
}}
=============================================================================]]
local PARENT = 1
local RANK = 2
local LINK_TARGET = 3
local LINK_TEXT = 4
local ALWAYS_DISPLAY = 5
local EXTINCT = 6
local SAME_AS = 7
local REFS = 8
function p.cagirTaksonomiAnahtari(frame)
local taxon = frame.args['takson'] or ''
local parent = frame.args['ebeveyn'] or ''
local rank = frame.args['sıra'] or ''
local extinct = string.lower(frame.args['tükenmiş']) or ''
local alwaysDisplay = string.lower(frame.args['hep_görüntüle']) or ''
local linkTarget = frame.args['bağ_sayfa'] or ''
local linkText = frame.args['bağ_yazı'] or '' -- this is the "raw" link text, and can be ''
local refs = frame.args['kaynak'] or ''
local sameAsTaxon = frame.args['aynısı'] or ''
if sameAsTaxon ~= '' then
-- try using the 'aynısı' taxon; it's an error if it doesn't exist
local ok, sameAsInfoStr = pcall(frame.expandTemplate, frame, { title = 'Şablon:Taksonomi/' .. sameAsTaxon, args = {['makine kodu'] = 'hepsi' } })
if ok then
local sameAsInfo = mw.text.split(sameAsInfoStr, '$', true)
--'aynısı' taxon's taxonomy template must not have a 'aynısı' link
if sameAsInfo[SAME_AS] == '' then
if parent == '' then parent = sameAsInfo[PARENT] end
if rank == '' then rank = sameAsInfo[RANK] end
if extinct == '' then extinct = string.lower(sameAsInfo[EXTINCT]) end
if alwaysDisplay == '' then alwaysDisplay = string.lower(sameAsInfo[ALWAYS_DISPLAY]) end
if linkTarget == '' then linkTarget = sameAsInfo[LINK_TARGET] end
if linkText == '' then linkText = sameAsInfo[LINK_TEXT] end
if refs == '' and parent == sameAsInfo[PARENT] then refs = sameAsInfo[REFS] end
else
return '<span style="color:red; font-size:1.1em">Error: attempt to follow two "same as" links</span>: <code>same_as = ' .. sameAsTaxon .. '</code>, but [[Şablon:Taksonomi/' .. sameAsTaxon .. ']] also has a<code>same_as</code> parameter.'
end
else
return l.eksikTaksonomiAnahtari(sameAsTaxon, 'given as the value of <code>same as</code>')
end
end
local link = linkTarget
if linkText ~= '' and linkText ~= linkTarget then link = link .. "|" .. linkText end
-- check consistency of extinct status; if this taxon is not extinct, parent must not be either
local extinctError = 'hayır'
if parent ~= '' and (extinct == '' or extinct == 'hayır' or extinct == 'false') then
local ok, parentExtinct = p.getirTaksonBilgiOgesi(frame, parent, 'tükenmiş')
if ok and (parentExtinct == 'evet' or parentExtinct == 'true') then extinctError = 'evet' end
end
-- taksonomi anahtarını oluşturmaya başlayalım
local taksAna = {}
table.insert(taksAna, l._taksonomiListe(frame, taxon))
if mw.title.new('Taksonomi/'..parent, 'Şablon').exists then
if linkTarget then
if mw.title.new(linkTarget).exists then
table.insert(taksAna, "__NOINDEX__")
else
table.insert(taksAna, "Vikipedi'de henüz [["..linkTarget.."]] isimli bir madde bulunmamakta. "
.."Bu maddeyi [["..linkTarget.."|oluşturarak]] yardımcı olabilirsiniz. Şu anda bulunduğunuz sayfa "
.."[["..linkTarget.."]] bilimsel sınıflandırması hakkında size bilgi vermektedir."
.."[[Kategori:Kırmızı bağlantılı taksona sahip taksonomi şablonları|"..l.secSon(mw.title.getCurrentTitle().text).."]]")
end
end
else
table.insert(taksAna, "<strong class='error'>Geliştiriliyor.</strong>"
.. " Eğer aşağıdaki tablo doğru görünüyorsa, seçilmiş takson için gerekli bilgiler mevcut demektir.\n"
.. l.eksikTaksonomiAnahtari(parent, "<code>ebeveyn</code> değeri olarak girildi"))
end
local ok, parRefs = p.getirTaksonBilgiOgesi(frame, parent, "kaynak")
table.insert(taksAna, "\nNiye burada olduğundan emin değil misin? Otomatik taksonkutu sistemini [[Vikipedi:Otomatik taksonkutu sistemi/giriş|öğrenmeye başla]]."
.. "\n{| class='wikitable'"
.. "\n|-"
.. "\n|Ebeveyn:"
.. "\n|<code>"..parent.."</code> [[[Şablon:Taksonomi/"..parent.."|Taksonomi]]; <span class=plainlinks>["..l.taksonomiOlusturBag(parent).." değiştir]]</span>"
.. "\n|-"
.. "\n|Sıra:"
.. "\n|<code>"..rank.."</code> (<code>"..l.getirCeviriSira(rank, "evet").."</code> şeklinde görünür)"..(rank~="" and "" or "<span class='error'>– bir sıra belirtilmeli</span")
.. "\n|-"
.. "\n|Bağ:"
.. "\n|<code>"..l.yapBag(taxon, extinct, "hayır", p.getirItalikTakson(rank), nil, linkTarget, link)
.."</code>"..(linkTarget == link and "" or " (<code>"..linkTarget.."</code> sayfasına bağlanır)")
.. "\n|-"
.. "\n|Tükenmiş:"
.. "\n|"..(extinct~="" and "<code>"..extinct.."</code>" or "hayır")
.. (extinctError == "evet" and "<span style='background-color:#FCC'>ebeveyn tükenmiş olarak belirtilmiş</span>" or "")
.. "\n|-"
.. "\n|Hep görüntüle:"
.. "\n|"..(alwaysDisplay~="" and "<code>"..alwaysDisplay.."</code>[[Kategori:Hep_görüntüle kullanan taksonomi şablonları|"..taxon.."]]"
or (l.getirEsasSira(rank) == "evet" and "evet (asil sıra)" or "hayır"))
.. "\n|-"
.. "\n|Taksonomi kaynakları:"
.. "\n|"..l.yapKaynaklariGoster(taxon, refs)
.. "\n|-"
.. "\n|Ebeveyn taksonominin kaynakları:"
.. "\n|"..l.yapKaynaklariGoster(parent, parRefs)
.. "\n|-"
.. (sameAsTaxon ~= '' and "\n|Takson ile aynı:||<code>"..sameAsTaxon.."</code> "
.."[[[Şablon:Taksonomi/"..sameAsTaxon.."|Taksonomi]]; "
.."<span class=plainlinks>["..l.taksonomiOlusturBag(sameAsTaxon).." değiştir]]</span>\n|-" or "")
.. (mw.ustring.match(taxon, "/geç$") and '\n| colspan=2 |Sonunda "/geç" varsa, bakınız '
..'[[Vikipedi:Otomatik taksonkutu sistemi/gelişmiş taksonomi#Geçilen taksonomi şablonları|Geçilen taksonomi şablonları]].'
..'<br>Geçilen takson için, bakınız [[Şablon:Taksonomi/'..mw.ustring.gsub(taxon, "/geç$", "")..']].' or '')
.. (mw.ustring.match(taxon, "/%?$") and '\n| colspan=2 |Sonunda "/?" varsa, bakınız [[Vikipedi:Otomatik taksonkutu sistemi/gelişmiş taksonomi#Kuşkulu atamalar|Kuşkulu atamalar]].' or '')
.. (mw.ustring.match(l.secSon(taxon), "Incertae sedis") and '| colspan=2 |"Incertae sedis" takson isimleri için, bakınız '
.."[[Vikipedi:Otomatik taksonkutu sistemi/gelişmiş taksonomi#Incertae_sedis_taksonomi_şablonları|''Incertae sedis'' taksonomi şablonları]]." or '')
.. "\n|}"
.. (extinctError == "evet" and "[[Kategori:Tutarsız tükenmiş değerine sahip taksonomi şablonları|"..taxon.."]]" or ""))
-- mevcut sayfanın vikiveri ögesini bulalım
local ID = mw.wikibase.getEntityIdForCurrentPage()
local oge = ID and mw.wikibase.getEntity(ID)
if not oge then
table.insert(taksAna, "[[Kategori:Vikiveri ögesine bağlı olmayan taksonomi şablonları|"..taxon.."]]")
else
-- vikiveri'de taksonomi şablonu için herhangi bir etiket girilmiş mi?
local vikiveriEtiket = oge:getLabel("tr")
if vikiveriEtiket then else
table.insert(taksAna, "[[Kategori:Vikiveri'de etiketi eksik olan taksonomi şablonları|"..taxon.."]]")
end
-- vikiveri'de taksonomi şablonu için herhangi bir açıklama girilmiş mi?
local vikiveriAciklama = oge:getDescription("tr")
if vikiveriAciklama then else
table.insert(taksAna, "[[Kategori:Vikiveri'de açıklaması eksik olan taksonomi şablonları|"..taxon.."]]")
end
end
return table.concat(taksAna)
end
function l.eksikTaksonomiAnahtari(takson, mesaj)
return mw.title.new("Şablon:Taksonomi/"..takson).exists and "" or
'<p><span class="error">Hata: eksik taksonomi şablonu.</span> "'
.. takson .. '" için taksonomi bilgisi eksik'.. (mesaj and ", " .. mesaj or "")
.. '.</span> "'.. takson ..'" doğru yazdığınıza emin misiniz? Belki İngilizce adı değil de, bilimsel adı olabilir?'
.. ' Eminseniz, "Şablon:Taksonomi/'.. takson ..'" oluşturulması gerekir:'
.. ' ['..l.taksonomiOlusturBag(takson)..' sayfayı oluştur].</p>'
end
--[[=========================== taksonBilgi =================================
Extracts and returns information from Şablon:Taksonomi/TAXON, following
one 'aynısı' link if required.
Kullanımı: {{#invoke:Ototaksonkutu|taksonBilgi|TAKSON|GİRDİ}}
GİRDİ şunlardan biridir: 'ebeveyn', 'sıra', 'bağ_sayfa', 'bağ_yazı',
'tükenmiş', 'hep_görüntüle', 'kaynak', 'aynısı' veya 'hepsi'.
Eğer GİRDİ belirlenmediyse, varsayılan değer 'hepsi' olur - tüm bilgiler tek
bir satırda '$' ile ayrılarak yazılır.
=============================================================================]]
function p.taksonBilgi(frame)
local taxon = frame.args[1] or ''
local item = frame.args[2] or ''
if item == '' then item = 'hepsi' end
local ok, info = p.getirTaksonBilgiOgesi(frame, taxon, item)
return info
end
--[[= = = = = = = = = = = getirTaksonBilgiOgesi = = = = = = = = = = = = = = =
Utility function to extract an item of information from a
taxonomy template, following one 'aynısı' link if required.
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =]]
function p.getirTaksonBilgiOgesi(frame, taxon, item)
local ok, info
-- item == 'hançer' is a special case
if item == 'hançer' then
ok, info = p.getirTaksonBilgiOgesi(frame, taxon, 'tükenmiş')
if ok then
if info == 'evet' or info == 'true' then
info = '†'
else
info = ''
end
end
-- item ~= 'hançer'
else
ok, info = pcall(frame.expandTemplate, frame, { title = 'Şablon:Taksonomi/' .. taxon, args = {['makine kodu'] = item } })
if ok then
if info == '' then
-- try 'aynısı'
local sameAsTaxon = frame:expandTemplate{ title = 'Şablon:Taksonomi/' .. taxon, args = {['makine kodu'] = 'aynısı' } }
if sameAsTaxon ~= '' then
ok, info = pcall(frame.expandTemplate, frame, { title = 'Şablon:Taksonomi/' .. sameAsTaxon, args = {['makine kodu'] = item } })
end
end
end
end
if ok then
-- if item is 'bağ_yazı', trim info and check whether '(?)' needs to be added
if item == 'bağ_yazı' then
-- there is a newline at the end of linkText when taxonomy template has "|link = LINK_TARGET|LINK_TEXT"
info = mw.text.trim(info)
if string.sub(taxon, -2) == '/?' and not string.find(info, '?', 1, true) then
info = info .. '<span style="font-style:normal;font-weight:normal;"> (?)</span>'
end
end
else
info = '[[Şablon:Taksonomi/' .. taxon .. ']]' --error indicator in code before conversion to Lua
end
return ok, info
end
--[[= = = = = = = = = = = = = = getirTaksonBag = = = = = = = = = = = = = = =
Internal function to drive l.yapBag().
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =]]
function l.getirTaksonBag(frame, taxon, rank, bold, italic, abbreviated, virus)
local ok, extinct = p.getirTaksonBilgiOgesi(frame, taxon, 'tükenmiş')
if italic == '' and taxon ~= "Virus" then
italic = p.getirItalikTakson(rank, virus)
end
local ok, linkTarget = p.getirTaksonBilgiOgesi(frame, taxon, 'bağ_sayfa')
local ok, linkText = p.getirTaksonBilgiOgesi(frame, taxon, 'bağ_yazı')
return l.yapBag(taxon, extinct, bold, italic, abbreviated, linkTarget, linkText)
end
--[[= = = = = = = = = = = = = = yapBag = = = = = = = = = = = = = = = = = = = =
Actually make the link.
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =]]
function l.yapBag(taxon, extinct, bold, italic, abbreviated, linkTarget, linkText)
local dummy
-- if link text is missing, try to find a replacement
if linkText == '' then
if string.find(taxon, 'Incertae sedis', 1, true) then
linkText = "''incertae sedis''"
linkTarget = 'Incertae sedis'
else
linkText, dummy = l.kirpFazlaliklar(taxon)
end
end
if linkTarget == '' then linkTarget = linkText end
if italic == 'evet' then linkText = TaksonItalik.italicizeTaxonName(linkText, false, abbreviated=='evet') end
local link = ''
if bold == 'evet' then link = '<b>' .. linkText .. '</b>'
else
if linkTarget == linkText then link = linkText
else link = linkTarget .. '|' .. linkText
end
link = '[[' .. link .. ']]'
end
if (extinct == 'evet' or extinct == 'true') and not string.find(link, '†', 1, true) then
link = '<span style="font-style:normal;font-weight:normal;">†</span>' .. link
end
if string.sub(taxon, -2) == '/?' and not string.find(link, '?', 1, true) then
link = link .. '<span style="font-style:normal;font-weight:normal;"> (?)</span>'
end
return link
end
--[[======================== gosterSiraTablosu ==============================
Returns a wikitable showing the ranks and their values as set up by
getRankTable().
Kullanımı: {{#invoke:Ototaksonkutu|gosterSiraTablosu}}
=============================================================================]]
function p.gosterSiraTablosu()
local rankTable = l.getirSiraTablosu()
local res = '{| class="wikitable sortable"\n|+ Taksonomi şablonlarında değerlendirilen sıralar\n! Sıra !! Görüntüsü !! Değeri\n'
for k, v in pairs(rankTable) do
local rankShown = l.getirCeviriSira(k)
res = res .. TabloSatiri .. l.tabloHucresi(k) .. l.tabloHucresi(rankShown) .. l.tabloHucresi(v)
end
return res .. TabloSonu
end
--[[=============================== bul =====================================
Returns the taxon above the specified taxon with a given rank.
Kullanımı: {{#invoke:Ototaksonkutu|bul|TAKSON|SIRA}}
=============================================================================]]
function p.bul(frame)
local currTaxon = frame.args[1] or ''
if currTaxon == '' then return '<span class="error">no taxon supplied</span>' end
local rank = frame.args[2] or ''
if rank == '' then return '<span class="error">no rank supplied</span>' end
local inHierarchy = true -- still in the taxonomic hierarchy or off the top?
local searching = true -- still searching
while inHierarchy and searching do
local ok, parent = p.getirTaksonBilgiOgesi(frame, currTaxon, 'ebeveyn')
if ok and parent ~= '' then
currTaxon = parent
local ok, currRank = p.getirTaksonBilgiOgesi(frame, currTaxon, 'rank')
if currRank == rank then
searching = false
end
else
inHierarchy = false
end
end
if inHierarchy and not searching then return currTaxon
else return '<span class="error">rank not found</span>'
end
end
--[[============================== ninci ====================================
External utility function primarily intended for use in checking and debugging.
Returns the nth level above a taxon in a taxonomic hierarchy, where the taxon
itself is counted as the first level.
Kullanımı: {{#invoke:Ototaksonkutu|ninci|TAKSON|n=N}}
=============================================================================]]
function p.ninci(frame)
local currTaxon = frame.args[1] or ''
if currTaxon == '' then return 'ERROR: no taxon supplied' end
local n = tonumber(frame.args['n'] or 1)
if n > MaksAramaSeviyesi then
return 'Exceeded maximum number of levels allowed (' .. MaksAramaSeviyesi .. ')'
end
local i = 1
local inHierarchy = true -- still in the taxonomic hierarchy or off the top?
while i < n and inHierarchy do
local ok, parent = p.getirTaksonBilgiOgesi(frame, currTaxon, 'ebeveyn')
if ok and parent ~= '' then
currTaxon = parent
i = i + 1
else
inHierarchy = false
end
end
if inHierarchy then return currTaxon
else return 'Level ' .. n .. ' is past the top of the taxonomic hierarchy'
end
end
--[[============================ nSeviyeler =================================
External utility function primarily intended for use in checking and debugging.
Returns number of levels in a taxonomic hierarchy, starting from
the supplied taxon as level 1.
Kullanımı: {{#invoke:Ototaksonkutu|nSeviyeler|TAKSON}}
=============================================================================]]
function p.nSeviyeler(frame)
local currTaxon = frame.args[1] or ''
if currTaxon == '' then return 'ERROR: no taxon supplied' end
local i = 1
local inHierarchy = true -- still in the taxonomic hierarchy or off the top?
while inHierarchy and i < MaksAramaSeviyesi do
local ok, parent = p.getirTaksonBilgiOgesi(frame, currTaxon, 'ebeveyn')
if ok and parent ~= '' then
currTaxon = parent
i = i + 1
else
inHierarchy = false
end
end
if inHierarchy then return MaksAramaSeviyesi .. '+'
else return i
end
end
--[[=========================== siralaHepsi =================================
External utility function primarily intended for use in checking and debugging.
Returns a comma separated list of a taxonomic hierarchy, starting from
the supplied taxon.
Kullanımı: {{#invoke:Ototaksonkutu|siralaHepsi|TAKSON}}
=============================================================================]]
function p.siralaHepsi(frame)
local currTaxon = frame.args[1] or ''
if currTaxon == '' then return 'ERROR: no taxon supplied' end
return l.doListAll(l.yapTablo(frame, currTaxon))
end
function l.doListAll(taxonTable, taxonRankTable)
local lst = taxonTable[1] .. '-' .. tostring(taxonRankTable[1])
for i = 2, taxonTable.n, 1 do
lst = lst .. ', ' .. taxonTable[i] .. '-' .. taxonRankTable[i]
end
return lst
end
--[[============================== cogulSira ================================
Kullanımı: {{#invoke:Ototaksonkutu|cogulSira|SIRA}}
=============================================================================]]
function p.getirCogulSira(deger)
local islem = veri.getirTabloyaGore(deger, "çeviri sıra")
return veri.getirTabloyaGore(islem, "çoğul sıra") or
"<strong class='error'>"
.."Tanınamayan sıra: ".. deger .." <small>[[Modül:Ototaksonkutu/veri|değiştir]]</small>[[Kategori:Otomatik taksonkutu temizleme]]"
.."</strong>"
end
function p.cogulSira(frame)
return p.getirCogulSira(frame.args[1])
end
--[[============================== altSira ==================================
Kullanımı: {{#invoke:Ototaksonkutu|altSira|SIRA}}
=============================================================================]]
function p.getirAltSira(deger)
local islem = veri.getirTabloyaGore(deger, "çeviri sıra")
return veri.getirTabloyaGore(islem, "alt sıra") or
"<strong class='error'>"
.."Tanınamayan sıra: ".. deger .." <small>[[Modül:Ototaksonkutu/veri|değiştir]]</small>[[Kategori:Otomatik taksonkutu temizleme]]"
.."</strong>"
end
function p.altSira(frame)
return p.getirAltSira(frame.args[1])
end
--[[============================= esasSira ==================================
Kullanımı: {{#invoke:Ototaksonkutu|esasSira|SIRA}}
=============================================================================]]
function l.getirEsasSira(deger)
local yazi = mw.ustring.gsub(mw.ustring.gsub( mw.getContentLanguage():lc(deger), "ichno", "" ), "oo", "")
return veri.getirTabloyaGore(yazi, "esas sıra") or "hayır"
end
function p.esasSira(frame)
return l.getirEsasSira(frame.args[1])
end
--[[=========================== ceviriSira ==================================
Kullanımı: {{#invoke:Ototaksonkutu|ceviriSira|SIRA|KONTROL}}
=============================================================================]]
function l.getirCeviriSira(deger, kontrol)
local yazi = deger
local sayfaAdi = mw.title.getCurrentTitle().text
if mw.ustring.sub( mw.getContentLanguage():lc(yazi), 1, 7 ) == "sırasız" then
yazi = "(sırasız)"
else
yazi = mw.ustring.gsub( yazi, "/(.*)", "" )
if veri.getirTabloyaGore(yazi, "çeviri sıra") then
yazi = veri.getirTabloyaGore(yazi, "çeviri sıra")
else
yazi = (kontrol == "evet" and "<span style='background-color:#F99'>" or "") .. yazi
.. (kontrol == "evet" and "</span>" or "")
.. (mw.ustring.gsub( sayfaAdi, "/(.*)", "" ) == "Taksonomi"
and "[[Kategori:Tanınmayan sıra kullanan taksonomi şablonları]]" or "")
end
end
if kontrol == "evet" and mw.ustring.gsub( sayfaAdi, "/(.*)", "" ) == "Taksonomi" then
yazi = yazi .. (mw.getContentLanguage():lcfirst(deger) == deger and ""
or "[[Kategori:Baş harfi büyük sıra adı kullanan taksonomi şablonları]]")
end
return mw.getContentLanguage():ucfirst(yazi)
end
function p.ceviriSira(frame)
return l.getirCeviriSira(frame.args[1], frame.args[2] or "hayır")
end
--[[=========================== italikTakson ================================
Kullanımı: {{#invoke:Ototaksonkutu|italikTakson|TAKSON|VİRÜS}}
=============================================================================]]
function p.getirItalikTakson(deger, virus)
if virus == "evet" then
return veri.getirTabloyaGore(deger, "italik virüs") or "evet"
else
return veri.getirTabloyaGore(deger, "italik takson") or "hayır"
end
end
function p.italikTakson(frame)
return p.getirItalikTakson(frame.args[1], frame.args[2] or "hayır")
end
--[[=========================================================================
Modülde kullanılan fonksiyonlar
=============================================================================]]
--[[= = = = = = = = = = = = = = = = Önyükleme = = = = = = = = = = = = = = = =
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =]]
function p.onyukleme(frame)
return l.taksonomiOlustur("Denimilia")
end
function l.onyukleme(takson)
local bir = l.secIlk(takson)
local iki = l.secSon(takson)
local uc = mw.ustring.find(iki, "/") and l.secSon(iki) or ""
iki = mw.ustring.find(iki, "/") and l.secIlk(l.secSon(takson)) or iki
local sonuc
if iki == "?" or uc == "?" then
sonuc = "önyükleme/?" .. (iki == "?" and uc or "")
elseif mw.getContentLanguage():lc(bir) == "incertae sedis" or mw.getContentLanguage():lc(bir) == "belirsiz yerleştirme" then
sonuc = "önyükleme/belirsiz_yerleştirme"
else
sonuc = iki ~= "" and "aynısı" or "önyükleme"
end
return sonuc
end
function l.secIlk(baslik)
return mw.ustring.gsub(baslik, "/+[^/]*", "")
end
function l.secSon(baslik)
return mw.ustring.gsub(baslik, "^[^/]*/*", "")
end
function l.taksonomiOlustur(takson, mesaj)
local sonuc = "|-\n|"
if l.secSon(mw.title.getCurrentTitle().text) == takson then
sonuc = sonuc .. "Şu anda oluşturduğunuz takson:"
else
sonuc = sonuc .. "<span style='color: Red;'>"..(mesaj or "Tanınmayan takson").."</span> (<span class=plainlinks>"
.. "[".. l.taksonomiOlusturBag(takson) .." düzenle]</span>):"
end
sonuc = sonuc .. "\n|[["..takson.."]]"
.. ((mw.title.getCurrentTitle().namespace == 0 or mw.title.getCurrentTitle().nsText == "Şablon")
and "[[Kategori:Otomatik taksonkutu temizleme]]" or "") .. "\n|-"
return sonuc
end
function l.taksonomiOlusturBag(takson)
return "//tr.wikipedia.org/w/index.php?action=edit&title=Şablon:Taksonomi/"
.. mw.uri.encode(mw.getContentLanguage():ucfirst(takson))
.. "&preload=Şablon:Taksonomi/"
.. l.onyukleme(takson)
end
--[[= = = = = = = = = = = = birTaksonuDuzenle = = = = = = = = = = = = = = = =
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =]]
function l.birTaksonuDuzenle(taksonAdi)
local baglanti = "<span class='plainlinks' style='font-size:small; float:right'> ["
if taksonAdi then
baglanti = baglanti .. "[[Şablon:Taksonomi/" .. taksonAdi .. "|Taksonomi]];"
.. " [//tr.wikipedia.org/w/index.php?title=Şablon:Taksonomi/" .. mw.uri.encode(taksonAdi)
.. "&action=edit değiştir]]</span>"
end
return baglanti
end
--[[= = = = = = = = = = = = kirpFazlaliklar = = = = = = = = = = = = = = = = =
Internal utility function to strip off any extra parts of a taxon name, i.e.
anything after a '/'. Thus 'Felidae/?' would be split into 'Felidae' and '?'.
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =]]
function l.kirpFazlaliklar(taxonName)
local i = mw.ustring.find(taxonName, '/', 1, true)
if i then
return mw.ustring.sub(taxonName, 1, i-1), mw.ustring.sub(taxonName, i, -1)
else
return taxonName, ''
end
end
--[[= = = = = = = = = = = = splitTaxonName = = = = = = = = = = = = = = = = =
Internal utility function to split a taxon name into its parts and return
them. Possible formats include:
* taxon
* taxon (disambig)
* taxon (Subgenus)
* taxon/qualifier
* combinations, e.g. taxon (disambig)/qualifier
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =]]
function l.ayirTaksonAdlari(taxon)
-- get any qualifier present
local qualifier = ''
local i = mw.ustring.find(taxon, '/', 1, true)
if i then
qualifier = mw.ustring.sub(taxon, i+1, -1)
taxon = mw.ustring.sub(taxon, 1, i-1)
end
-- get any disambiguator or subgenus
local disambig = ''
local subgenus = ''
i = mw.ustring.find(taxon, ' (', 1, true)
if i then
local parenTerm = mw.ustring.sub(taxon, i+2, -2)
taxon = mw.ustring.sub(taxon, 1, i-1)
local char1 = mw.ustring.sub(parenTerm, 1, 1)
if char1 == mw.ustring.lower(char1) then
disambig = parenTerm
else
subgenus = parenTerm
end
end
return taxon, disambig, subgenus, qualifier
end
--[[= = = = = = = = = = = = matchTaxonLink = = = = = = = = = = = = = = = = =
Function to determine whether the taxon name derived from the name of the
taxonomy template (passed in the parameter taxon) matches the link text
(passed in the parameter linkText).
The taxon name may have any of the formats:
* baseTaxon/qualifier
* baseTaxon (disambig)
* baseTaxon (Subgenus) [distinguished by the capital letter]
* a qualifier may be present after the previous two formats.
Examples of matches (baseTaxon ~ linkText):
* Pinus ~ Pinus
* Pinus sect. Trifoliae ~ Pinus sect. Trifoliae
* Pinus sect. Trifoliae ~ ''Pinus'' sect. ''Trifoliae'' [italic markers ignored]
* Pinus sect. Trifoliae ~ P. sect. Trifoliae [abbreviated genus name matches]
* Bombus (Pyrobombus) ~ Bombus (Pyrobombus)
* Bombus (Pyrobombus) ~ B. (Pyrobombus)
* Bombus (Pyrobombus) ~ Pyrobombus [link text may just be the subgenus]
* Heteractinida ~ "Heteractinida" [double-quotes are ignored in link text]
* "Heteractinida" ~ Heteractinida [double-quotes are ignored in base taxon name]
* Incertae sedis ~ anything [link text is ignored for matching in this case]
* Cetotheriidae with qualifier=? ~ Cetotheriidae (?)
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =]]
function l.matchTaxonLink(taxon, linkText, rankBelowGenus)
local dummy
linkText, dummy = mw.ustring.gsub(linkText, "''", '') -- remove any italic wikitext in the link text
linkText, dummy = mw.ustring.gsub(linkText, '<.->', '') -- strip all tags used to format the link text
linkText, dummy = mw.ustring.gsub(linkText, '"', '') -- remove any occurrences of " in the link text
local baseTaxon, disambig, subgenus, qualifier = l.ayirTaksonAdlari(taxon) -- split up the taxon name
baseTaxon, dummy = mw.ustring.gsub(linkText, '"', '') -- remove any occurrences of " in the base taxon name
local match = linkText == baseTaxon or
linkText == subgenus or
linkText == baseTaxon .. ' (' .. subgenus .. ')' or
linkText == mw.ustring.sub(baseTaxon, 1, 1) .. '. (' .. subgenus .. ')' or
baseTaxon == 'Incertae sedis' or
rankBelowGenus and linkText == mw.ustring.gsub(baseTaxon, '([A-Z]).- (.*)', '%1. %2') or
mw.ustring.find(qualifier, '?', 1, true) and mw.ustring.find(linkText, baseTaxon, 1, true) == 1
return match
end
--[[= = = = = = = = = = = = yapKaynaklariGoster = = = = = = = = = = = = = = =
Show the refs field in a taxonomy template.
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =]]
function l.yapKaynaklariGoster(taxonName, refs)
if mw.text.split(taxonName, '/', true)[1] == 'Incertae sedis' then
refs = 'gösterilemez (<i>incertae sedis</i>)'
elseif refs == '' then
refs = '–'
end
return refs
end
--[[= = = = = = = = = = = = = makeTable = = = = = = = = = = = = = = = = = = =
Internal utility function to return a table (array) constructed from a
taxonomic hierarchy stored in "Şablon:Taksonomi/..." templates.
TABLE.n holds the total number of taxa; TABLE[1]..TABLE[TABLE.n] the taxon
names.
The last taxon in the table will either (a) have a taxonomy template but with
no parent given (e.g. 'Life') or (b) not have a taxonomy template.
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =]]
function l.yapTablo(frame, currTaxon)
local taxonTable = {}
local taxonRankTable = {}
local ok, rank, parent
local i = 1
local topReached = false -- reached the top of the taxonomic hierarchy?
repeat
taxonTable[i] = currTaxon
ok, rank = p.getirTaksonBilgiOgesi(frame, currTaxon, 'sıra')
if ok then taxonRankTable[i] = string.lower(rank) else taxonRankTable[i] = '' end
ok, parent = p.getirTaksonBilgiOgesi(frame, currTaxon, 'ebeveyn')
if ok and parent ~= '' then
currTaxon = parent
i = i + 1
else
topReached = true -- reached the top of the hierarchy or tried to use a non-existent taxonomy template
end
until topReached or i > MaksAramaSeviyesi
taxonTable.n = math.min(i, MaksAramaSeviyesi)
return taxonTable, taxonRankTable
end
--[[= = = = = = = = = = = = getRankTable = = = = = = = = = = = = = = = = = =
Internal utility function to set up a table of numerical values corresponding
to 'Linnaean' ranks, with upper ranks having higher values. In a valid
taxonomic hierarchy, a lower rank should never have a higher value than a
higher rank. The actual numerical values are arbitrary so long as they are
ordered.
The ranks should correspond to those in Şablon:Taksonkutu/Çeviri sıralama.
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =]]
function l.getirSiraTablosu()
return {
['sınıf'] = 1400,
cohort = 1100,
['bölüm'] = 1500,
domain = 1700,
familya = 800,
forma = 100,
['cins'] = 600,
grandordo = 1005,
['grandordo-mb'] = 1002,
hyperfamilia = 805;
['infrasınıf'] = 1397,
infralegio = 1197,
['infratakım'] = 997,
['infraşube'] = 1497,
infraalem = 1597,
infraoymak = 697,
legio = 1200,
magnordo = 1006,
['mikroşube'] = 1495,
['mikrotakım'] = 995,
mirordo = 1004,
['mirordo-mb'] = 1001,
nanophylum = 1494,
nanordo = 994,
['takım'] = 1000,
parafamilia = 800,
parvclassis = 1396; -- same as subterclassis
parvordo = 996,
['şube'] = 1500,
alem = 1600,
seksiyon = 500,
--seri = 400, used too inconsistently to check
['tür'] = 300,
['altsınıf'] = 1398,
subcohort = 1098,
['altbölüm'] = 1498,
altfamilya = 798,
altcins = 598,
sublegio = 1198,
['alttakım'] = 998,
['altşube'] = 1498,
altalem = 1598,
altseksiyon = 498,
['alttür'] = 298,
subterclassis = 1396; -- same as parvclassis
altoymak = 698,
['üstsınıf'] = 1403,
supercohort = 1103,
['üstbölüm'] = 1503,
superdomain = 1703,
['üstfamilya'] = 803,
superlegio = 1203,
['üsttakım'] = 1003,
['üstşube'] = 1503,
['üstalem'] = 1603,
['üstoymak'] = 703,
oymak = 700,
varyete = 200,
zoodivisio = 1300,
zoosectio = 900,
zoosubdivisio = 1298,
zoosubsectio = 898,
}
end
--[[= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
Function to look up the arbitrary numerical value of a rank in a rank value
table. "Ichno" and "oo" ranks are not stored separately, so if present the
prefix is removed.
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =]]
function l.araSiraDegeri(rankValTable, rank)
local rankVal = rankValTable[rank]
if not rankVal then
-- may be an "ichno" or "oo" ranks
rank = mw.ustring.gsub(mw.ustring.gsub(rank, '^ichno', ''), '^oo', '')
if rank == 'rdo' then rank = 'ordo' end
rankVal = rankValTable[rank]
end
return rankVal
end
--[[= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =]]
function l.tabloHucresi(arg1, arg2)
local text, style
if arg2 then
style = arg1
text = arg2
else
style = ''
text = arg1
end
local res = '|'
if style ~= '' then
res = res .. style .. '|'
end
return res .. text .. '\n'
end
return p