Modul:dara kategoriyan/ferhengokkatbike
Belgekirina modulê[nîşan bide] [biguhêre] [rojane bike]
- Ev belge ji Modul:dara kategoriyan/ferhengokkatbike/belge hatiye girtin.
Bikaranîn
biguhêrelabels
= Navê kategoriyê ye. Wek "Etîket" + navê zimanî kategorî tê çêkirin. Mînak Kategorî:Etîmolojî bi kurmancîdescription
= Wek danasîna kategoriyê di nav kategoriyan de xuya dike.parents
= Serkategoriyên vê kategoriyê, mînak Kategorî:Lîsteya ferhengan bi kurmancî serkategoriya Kategorî:Biyolojî bi kurmancî ye Kategorî:Biyolojî bi kurmancî jî serkategoriya Kategorî:Avjenî bi kurmancî ye, ji yekî zêdetir serkategorî dikare hebe. Heke hûn dixwazin serkategorî ziman be (weke di Kategorî:Etîmolojî bi kurmancî de) divê "parents" weke "parents = {{template = "zimankatbike"}},
" were diyarkirin.inSerkategori
= Heke hûn dixwazin kategoriya bêyî navê zimanî weke Kategorî:Deng bikeve kategoriya Kategorî:!Serkategorî hingê "inSerkategori = true,
" lê zêde bikin.isHidden
= Ji bo veşartina kategoriyan e. Dema "isHidden = true,
" lê tê zêdekirin, kategorî veşartî dibe.umbrella
= Normalê de her etîket wek "Etîket" + navê zimanî tê çêkirin û her kategorî etîketa xwe jî çêdike wek Kategorî:Deng bi kurmancî hem dikeve kategoriya Kategorî:Kurmancî û Kategorî:Deng. Heke hûn dixwazin dewsa wê bikeve "Kategorî:Deng li gorî zimanan" hingê "umrella = true,
" lê zêde bikin.- Kategoriyên wek Kategorî:Heywan yên ku binkategoriyên wan yên taybet (wek Kategorî:Ajal) hene divê wek "umbrella" werîn nîşankirin ji bo ku Kategorî:Heywan li gorî zimanan were çêkirin û di kategoriya Kategorî:Heywan de tenê wan binkategoriyên taybet bên nîşandan.
Mînak
biguhêreDi vê mînakê de kategoriyên wek Kategorî:Avjenî + bi zimanekî tê çêkirin danasîna kategoriyê "Peyvên {{{langname}}} têkildarî avjenî.", tê lêzêdekirin û ew kategorî dikeve Kategorî:Biyolojî + "zimanekî" û Kategorî:Werziş + "zimanekî".
labels["avjenî"] = {
description = "Peyvên {{{langname}}} têkildarî [[avjeni|avjeniyê]].",
parents = {"biyolojî", "spor"},
}
Di vê mînakê de kategoriyên wek Kategorî:Etîmolojî + bi zimanekî tê çêkirin danasîna kategoriyê "Etîmolojiyên peyvên {{{langname}}}." tê lêzêdekirin û ew kategorî dikeve Kategorî:Etîmolojî li gorî zimanan û Kategorî:Etîmolojî dikeve Kategorî:!Serkategorî.
labels["etîmolojî"] = {
description = "Etîmolojiyên peyvên {{{langname}}}.",
parents = {{template = "zimankatbike"}},
umbrella = true,
inSerkategori = true,
}
Binêre
biguhêre- dara kategoriyan/ferhengokkatbike/belge
- dara kategoriyan/ferhengokkatbike/dane
- dara kategoriyan/ferhengokkatbike/dane/belge
- dara kategoriyan/ferhengokkatbike/dane/daxwaz
- dara kategoriyan/ferhengokkatbike/dane/etîmolojî
- dara kategoriyan/ferhengokkatbike/dane/ferhengok
- dara kategoriyan/ferhengokkatbike/dane/ferhengok/belge
- dara kategoriyan/ferhengokkatbike/dane/mane
- dara kategoriyan/ferhengokkatbike/dane/places
- dara kategoriyan/ferhengokkatbike/dane/rêzimanî
- dara kategoriyan/ferhengokkatbike/hierarchy
- dara kategoriyan/ferhengokkatbike/hierarchy/belge
local export = {}
local label_data = require("Modul:dara kategoriyan/ferhengokkatbike/dane")
local b = require("Modul:bingeh")
local tewin = require('Modul:ku-tewîn-nav').tew_nobold
-- Category object
local Category = {}
Category.__index = Category
function Category.new_main(frame)
local self = setmetatable({}, Category)
local params = {
[1] = {},
[2] = {required = true},
["sc"] = {},
}
args = require("Module:parameters").process(frame:getParent().args, params)
self._info = {code = args[1], label = args[2]}
self:initCommon()
if not self._data then
return nil
end
return self
end
function Category.new(info)
for key, val in pairs(info) do
if not (key == "code" or key == "label") then
error("Parametreya “" .. key .. "” nayê zanîn.")
end
end
local self = setmetatable({}, Category)
self._info = info
if not self._info.label then
error("No label was specified.")
end
self:initCommon()
if not self._data then
error("The label “" .. self._info.label .. "” does not exist.")
end
return self
end
export.new = Category.new
export.new_main = Category.new_main
function Category:initCommon()
if self._info.code then
self._lang = require("Modul:ziman").getByCode(self._info.code) or
error("The language code “" .. self._info.code .. "” is not valid.")
end
-- Convert label to lowercase if possible
local lowercase_label = mw.getContentLanguage():lcfirst(self._info.label)
-- Check if the label exists
local labels = label_data["LABELS"]
if labels[lowercase_label] then
self._info.label = lowercase_label
end
self._data = labels[self._info.label]
-- Go through handlers
if not self._data then
for _, handler in ipairs(label_data["HANDLERS"]) do
self._data = handler.handler(self._info.label)
if self._data then
self._data.edit = handler.module
break
end
end
end
end
function Category:getInfo()
return self._info
end
function Category:getBreadcrumbName()
return self._info.label
end
function Category:getDataModule()
return self._data["edit"]
end
function Category:canBeEmpty()
if self._lang then
return false
else
return true
end
end
function Category:isHidden()
local isHidden = self._data["isHidden"]
if isHidden then
return true
else
return false
end
end
function Category:getCategoryName()
if self._lang then
return mw.getContentLanguage():ucfirst(self._info.label) .. " bi " .. self._lang:getCanonicalName()
else
return mw.getContentLanguage():ucfirst(self._info.label)
end
end
local function replace_special_descriptions(desc)
-- TODO: Should probably find a better way to do this
local descriptionFormats = {-- default û default girdek "mê" ne, def-n û def-n girdek nêr e!
["default"] = "Peyvên {{{langname}}} têkildarî {{{label_lc}}}.",
["default girdek"] = "Peyvên {{{langname}}} têkildarî {{{label_uc}}}.",
["def-n girdek"] = "Peyvên {{{langname}}} têkildarî {{{label-n_uc}}}.",
["def-n"] = "Peyvên {{{langname}}} têkildarî {{{label-n_lc}}}.",
["default with topic"] = "{{{langname}}} terms related to {{{label_lc}}} topics.",
["default-set"] = "{{{langname}}} terms for various {{{label_lc}}}.",
}
return descriptionFormats[desc] or desc
end
local function expand_description(desc, cat)
if cat._lang then
desc = desc:gsub("{{{langname}}}", cat._lang:getCanonicalName())
desc = desc:gsub("{{{langcode}}}", cat._lang:getCode())
desc = "<strong style=\"font-size:normal; font-weight:normal;\">" .. desc:gsub("{{{langcat}}}", cat._lang:getCategoryName()) .. "</strong>"
end
if desc:find("{{{label_uc}}}") then
local label_entry_name = mw.getContentLanguage():ucfirst(cat._info.label)
local label_entry = mw.title.new(label_entry_name)
if label_entry.exists then
desc = desc:gsub("{{{label_uc}}}", "[[" .. label_entry_name .. "|" .. tewin(label_entry_name, 'mê', 'def_obl_s')
.. "]]")
else
desc = desc:gsub("{{{label_uc}}}", label_entry_name)
end
end
if desc:find("{{{label_lc}}}") then
local label_entry_name = mw.getContentLanguage():lcfirst(cat._info.label)
local label_entry = mw.title.new(label_entry_name)
if label_entry.exists then
desc = desc:gsub("{{{label_lc}}}", "[[" .. label_entry_name .. "|" .. tewin(label_entry_name, 'mê', 'def_obl_s')
.. "]]")
else
desc = desc:gsub("{{{label_lc}}}", label_entry_name)
end
end
if desc:find("{{{label-n_uc}}}") then
local label_entry_name = mw.getContentLanguage():ucfirst(cat._info.label)
local label_entry = mw.title.new(label_entry_name)
if label_entry.exists then
desc = desc:gsub("{{{label-n_uc}}}", "[[" .. label_entry_name .. "|" ..mw.getCurrentFrame():expandTemplate{title = "y2", args = {
label_entry_name,
"î",
}} .. "]]")
else
desc = desc:gsub("{{{label-n_uc}}}", label_entry_name)
end
end
if desc:find("{{{label-n_lc}}}") then
local label_entry_name = mw.getContentLanguage():lcfirst(cat._info.label)
local label_entry = mw.title.new(label_entry_name)
if label_entry.exists then
desc = desc:gsub("{{{label-n_lc}}}", "[[" .. label_entry_name .. "|" ..mw.getCurrentFrame():expandTemplate{title = "y2", args = {
label_entry_name,
"î",
}} .. "]]")
else
desc = desc:gsub("{{{label-n_lc}}}", label_entry_name)
end
end
return desc
end
function Category:getDescription()
if self._lang then
local desc = self._data["description"]
desc = replace_special_descriptions(desc)
if desc then
return expand_description(desc, self)
end
else
if not self._lang and self._info.label == "lîsteya ferhengan" then
return "Lîsteya ferhengan li gorî ziman û mijaran."
elseif not self._lang and self._info.label == "rêziman" then
return "Lîsteya hemû kategoriyên rêzimanê li gorî beşa rêzimanî û zimanan."
elseif not self._lang and self._info.label == "deng" then
return "Lîsteya zimanên bi dosyaya dengî."
elseif not self._lang and self._info.label == "bilêvkirina IPAyê" then
return "Lîsteya zimanên bi bilêvkirina [[IPA]]yê."
elseif not self._lang and self._info.label == "werger" then
return "Lîsteya hemû wergerên kurmancî û zimanên din."
elseif not self._lang and self._info.label == "etîmolojî" then
return "Lîsteya hemû binkategoriyên etîmolojiyê."
end
local eninfo = mw.clone(self._info)
eninfo.code = "ku"
local ku = Category.new(eninfo)
local desc = self._data["description"]
desc = replace_special_descriptions(desc)
if desc then
desc = desc:gsub("^{{{langname}}} ", "")
desc = desc:gsub("^{{{langcode}}} ", "")
desc = desc:gsub("^{{{langcat}}} ", "")
desc = desc:gsub("%.$", "")
desc = expand_description(desc, self)
else
desc = self._info.label
end
local umbrella = self._data["umbrella"]
if umbrella == true then
return
"<i>" .. mw.getContentLanguage():ucfirst(self._info.label) .. " </i>mijara sereke ya vê kategoriyê ye. Li vir bin kategoriyên taybet tên lîstekirin. \n\n" ..
"Ji bo dîtina hemû kategoriyên li gorî zimanan binêre [[:Kategorî:" .. mw.getContentLanguage():ucfirst(self._info.label) .. " li gorî zimanan]].\n\n" ..
"Ji bo kategoriya kurmancî binêre [[:Kategorî:" .. ku:getCategoryName() .. "]]."
end
return
"<i>" .. mw.getContentLanguage():ucfirst(self._info.label) .. " </i>mijara sereke ya vê kategoriyê ye. \n\n"..
"Ji bo kategoriya kurmancî binêre [[:Kategorî:" .. ku:getCategoryName() .. "]]."
end
end
function Category:getParents()
local parents = self._data["parents"]
local inSerkategori = self._data["inSerkategori"]
if inSerkategori and not self._lang then
return {{ name = "Kategorî:!Serkategorî", sort = self._info.label:gsub("all ", "") }}
end
if not parents or #parents == 0 then
return nil
end
local ret = {}
local is_set = false
if self._info.label == "rêziman" then
is_set = true
end
for key, parent in ipairs(parents) do
parent = mw.clone(parent)
if type(parent) ~= "table" then
parent = {name = parent}
end
if not parent.sort then
parent.sort = self._info.label
end
if self._lang then
parent.sort = parent.sort:gsub("{{{langname}}}", self._lang:getCanonicalName())
parent.sort = parent.sort:gsub("{{{langcat}}}", self._lang:getCategoryName())
elseif parent.sort:find("{{{langname}}}") or parent.sort:find("{{{langcat}}}") or parent.template == "zimankatbike" then
return nil
end
if not self._lang then
parent.sort = parent.sort
end
if parent.name and parent.name:find("^Kategorî:") then
if self._lang then
parent.name = parent.name:gsub("{{{langname}}}", self._lang:getCanonicalName())
parent.name = parent.name:gsub("{{{langcat}}}", self._lang:getCategoryName())
elseif parent.name:find("{{{langname}}}") or parent.name:find("{{{langcat}}}") or parent.template == "zimankatbike" then
return nil
end
else
if parent.name == "lîsteya ferhengan" then
is_set = true
end
local pinfo = mw.clone(self._info)
pinfo.label = parent.name
if parent.template then
parent.name = require("Modul:dara kategoriyan/" .. parent.template).new(pinfo)
else
parent.name = Category.new(pinfo)
end
end
table.insert(ret, parent)
end
local naveModule = self._data["edit"]
if self._info.label ~= "lîsteya ferhengan" and self._info.label ~= "hemû mijar" and (naveModule == "Modul:dara kategoriyan/ferhengokkatbike/dane/ferhengok" or naveModule == "Modul:dara kategoriyan/ferhengokkatbike/dane/mane") then
local pinfo = mw.clone(self._info)
pinfo.label = "hemû mijar"
table.insert(ret, {name = Category.new(pinfo), sort = self._info.label})
end
return ret
end
function Category:getChildren()
return nil
end
function Category:getUmbrella()
local umbrella = self._data["umbrella"]
if self._lang and umbrella == true then
return "Kategorî:" .. b.ucfirst(self._info.label) .. " li gorî zimanan"
elseif not self._lang then
return nil
end
--[[ if self._info.label == "etîmolojî" then
return "Kategorî:Etîmolojî li gorî zimanan"
elseif not self._lang then
return nil
end ]]--
local uinfo = mw.clone(self._info)
uinfo.code = nil
return Category.new(uinfo)
end
return export