local cikart = {}
local etiket_turunden_aciklamaya = {
-- If not listed, we just capitalize the first letter
= "Zaman",
= "Çatı",
= "Karşılaştırma dereceleri",
= "Inflectional class",
= "Sound changes",
= "Sınıflandırılmamış dil bilgisi",
= "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 < veriadi2
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 then
tab = {}
end
table.insert(tab, {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 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
local data = veriadi
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
local disp = namedisp
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
if group_tab then
table.insert(parts, "|-")
table.insert(parts, '! colspan="3" style="text-align: center; background: #dddddd;" | ' ..
(etiket_turunden_aciklamaya or m_cekim.ucfirst(tag_type)) .. " (daha çok yaygın)")
insert_group(group_tab)
end
group_tab = data2_tab
if group_tab then
table.insert(parts, "|-")
table.insert(parts, '! colspan="3" style="text-align: center; background: #dddddd;" | ' ..
(etiket_turunden_aciklamaya 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 = {
= {required = true},
= {},
= {list = true},
= {},
= {alias_of = "anlam"},
= {},
= {required = true},
= {type = "boolean"},
= {type = "boolean"},
= {type = "boolean"},
= {},
= {},
= {},
= {alias_of = "tr"},
= {},
= {},
= {},
= {},
}
local args = require("Modül:parameters").process(frame:getParent().args, params)
local lang = args or "und"
local sc = args
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 == "tr-çekim" then
if args == "ad" then
require("Modül:tr-ad").cekim_tr(args)
elseif args == "eylem" then
require("Modül:tr-eylem").cekim_tr(args)
end
elseif args == "ota-çekim" then
if args == "ad" then
require("Modül:ota-ad").cekim_ota(args)
end
end
return require("Modül:çekim").etiketlenmis_cekimler(
args,
{
dil = lang,
alf = sc,
sozcuk = args or "sözcük",
alt = args,
id = args,
anlam = args,
soz = args,
c = args,
}
)
end
return cikart