Modül:çekim/şablonlar
Bu belgeleme Modül:çekim/şablonlar/belge (düzenle | geçmiş) sayfasından yansıtılmaktadır. Arayüz düzenleyicilerinin deney yapabilmeleri için ayrıca Modül:çekim/şablonlar/deneme tahtası sayfası kullanılabilir.
local cikart = {}
local etiket_turunden_aciklamaya = {
-- If not listed, we just capitalize the first letter
["zaman"] = "Zaman",
["çatı"] = "Çatı",
["karşılaştırma"] = "Karşılaştırma dereceleri",
["class"] = "Inflectional class",
["sound change"] = "Sound changes",
["dilbilgisi"] = "Sınıflandırılmamış dil bilgisi",
["diğer"] = "Diğer etiketler",
}
local etiket_turu_sirasi = {
"şahıs",
"miktar",
"cinsiyet",
"animacy",
"zaman",
"kip",
"çatı",
"non-finite",
"hâl",
"durum",
"karşılaştırma",
"register",
"deixis",
"clusivity",
"class",
"attitude",
"sound change",
"dilbilgisi",
"diğer",
}
local function sirala_birinciye_gore(veriadi1, veriadi2)
return veriadi1[1] < veriadi2[1]
end
function cikart.etikettablosu()
m_veri = mw.loadData("Modül:çekim/veri")
m_veri2 = mw.loadData("Modül:çekim/veri2")
m_cekim = require("Modül:çekim")
local function organize_data(data_module)
local tab = {}
for name, data in pairs(data_module.etiketler) do
if not data.etiket_turu then
-- Throw an error because hopefully it will get noticed and fixed.
-- If we just skip it, it may never get fixed.
error("Tag '" .. name .. "' has no tag_type")
end
if not tab[data.etiket_turu] then
tab[data.etiket_turu] = {}
end
table.insert(tab[data.etiket_turu], {name, data})
end
local tag_type_order_set = require("Modül:table").listToSet(etiket_turu_sirasi)
for tag_type, tags_of_type in pairs(tab) do
if not tag_type_order_set[tag_type] then
-- See justification above for throwing an error.
error("Tag type '" .. tag_type .. "' not listed in tag_type_order")
end
table.sort(tags_of_type, sirala_birinciye_gore)
end
local multitag_shortcuts = {}
local list_shortcuts = {}
local function get_display_form(tags)
local normtags = m_cekim.normallestir_etiketleri(tags)
local display_forms = {}
for _, normtag in ipairs(normtags) do
table.insert(display_forms, m_cekim.getir_etiket_gorunum_bicimi(normtag))
end
return table.concat(display_forms, " ")
end
for shortcut, full in pairs(data_module.kisayollar) do
if type(full) == "table" then
table.insert(list_shortcuts, {shortcut, get_display_form(full)})
elseif full:find("//") then
table.insert(multitag_shortcuts, {shortcut, get_display_form({full})})
end
end
table.sort(list_shortcuts, sirala_birinciye_gore)
table.sort(multitag_shortcuts, sirala_birinciye_gore)
return tab, multitag_shortcuts, list_shortcuts
end
local data_tab, data_multitag_shortcuts, data_list_shortcuts = organize_data(m_veri)
local data2_tab, data2_multitag_shortcuts, data2_list_shortcuts = organize_data(m_veri2)
local parts = {}
local function insert_group(group)
for _, veriadi in ipairs(group) do
local sparts = {}
local name = veriadi[1]
local data = veriadi[2]
table.insert(sparts, "| <code>" .. name .. "</code> || ")
if data.kisayollar then
local ssparts = {}
for _, shortcut in ipairs(data.kisayollar) do
table.insert(ssparts, "<code>" .. shortcut .. "</code>")
end
table.insert(sparts, table.concat(ssparts, ", ") .. " ")
end
table.insert(sparts, "|| " .. m_cekim.getir_etiket_gorunum_bicimi(name))
table.insert(parts, "|-")
table.insert(parts, table.concat(sparts))
end
end
local function insert_shortcut_group(shortcuts)
for _, namedisp in ipairs(shortcuts) do
local name = namedisp[1]
local disp = namedisp[2]
table.insert(parts, "|-")
table.insert(parts, "| || <code>" .. name .. "</code> || " .. disp)
end
end
table.insert(parts, '{|class="wikitable"')
table.insert(parts, "! Etiketin adı !! Kısayol(lar) !! Görüntülenen biçimi")
for _, tag_type in ipairs(etiket_turu_sirasi) do
local group_tab = data_tab[tag_type]
if group_tab then
table.insert(parts, "|-")
table.insert(parts, '! colspan="3" style="text-align: center; background: #dddddd;" | ' ..
(etiket_turunden_aciklamaya[tag_type] or m_cekim.ucfirst(tag_type)) .. " (daha çok yaygın)")
insert_group(group_tab)
end
group_tab = data2_tab[tag_type]
if group_tab then
table.insert(parts, "|-")
table.insert(parts, '! colspan="3" style="text-align: center; background: #dddddd;" | ' ..
(etiket_turunden_aciklamaya[tag_type] or m_cekim.ucfirst(tag_type)) .. " (daha az yaygın)")
insert_group(group_tab)
end
end
if #data_multitag_shortcuts > 0 then
table.insert(parts, "|-")
table.insert(parts, '! colspan="3" style="text-align: center; background: #dddddd;" | Birdenfazla etiketli kısayollar (daha çok yaygın)')
insert_shortcut_group(data_multitag_shortcuts)
end
if #data2_multitag_shortcuts > 0 then
table.insert(parts, "|-")
table.insert(parts, '! colspan="3" style="text-align: center; background: #dddddd;" | Birdenfazla etiketli kısayollar (daha az yaygın)')
insert_shortcut_group(data2_multitag_shortcuts)
end
if #data_list_shortcuts > 0 then
table.insert(parts, "|-")
table.insert(parts, '! colspan="3" style="text-align: center; background: #dddddd;" | Liste kısayolları (daha çok yaygın)')
insert_shortcut_group(data_list_shortcuts)
end
if #data2_list_shortcuts > 0 then
table.insert(parts, "|-")
table.insert(parts, '! colspan="3" style="text-align: center; background: #dddddd;" | Liste kısayolları (daha az yaygın)')
insert_shortcut_group(data2_list_shortcuts)
end
table.insert(parts, "|}")
return table.concat(parts, "\n")
end
function cikart.cekimlemesi_s(frame)
local params = {
[1] = {required = true},
[2] = {},
[3] = {list = true},
["anlam"] = {},
["mana"] = {alias_of = "anlam"},
["id"] = {},
["dil"] = {required = true},
["nocap"] = {type = "boolean"},
["nocat"] = {type = "boolean"},
["nodot"] = {type = "boolean"},
["söz"] = {},
["sc"] = {},
["tr"] = {},
["ç"] = {alias_of = "tr"},
["istisna"] = {},
["k"] = {},
["a"] = {},
["şablon"] = {},
}
local args = require("Modül:parameters").process(frame:getParent().args, params)
local lang = args["dil"] or "und"
local sc = args["dk"]
lang = require("Modül:diller").getirKodaGore(lang) or
require("Modül:diller").err(lang, "dil")
sc = (sc and (require("Modül:alfabeler").getirKodaGore(sc) or
error(sc .. "\" alfabe kodu geçerli değil.")) or nil)
--NOT: bu kısım dil bazıl fonksiyonları çalıştırmak içindir,
--yani eğer bir dilin kendi modülünde otomatik çekimleme
--fonksiyonu var ise ona bağlanıp hiçbir parametre gerektirmeden
--çekimleme açıklamalarını çağırabiliriz
if args["şablon"] == "tr-çekim" then
if args['söz'] == "ad" then
require("Modül:tr-ad").cekim_tr(args)
elseif args['söz'] == "eylem" then
require("Modül:tr-eylem").cekim_tr(args)
end
elseif args["şablon"] == "ota-çekim" then
if args['söz'] == "ad" then
require("Modül:ota-ad").cekim_ota(args)
end
end
return require("Modül:çekim").etiketlenmis_cekimler(
args[3],
{
dil = lang,
alf = sc,
sozcuk = args[1] or "sözcük",
alt = args[2],
id = args["id"],
anlam = args["anlam"],
soz = args["söz"],
c = args["tr"],
}
)
end
return cikart