Modul:dara kategoriyan/li gorî zimanan
Documentation for this module may be created at Modul:dara kategoriyan/li gorî zimanan/belge
local export = {}
local label_data = require("Modul:dara kategoriyan/ferhengokkatbike/dane")
local b = require("Modul:bingeh")
-- 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 "Li gorî zimanan"
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()
local umbrella = self._data["umbrella"]
if umbrella == true then
return mw.getContentLanguage():ucfirst(self._info.label) .. " li gorî zimanan"
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"] = "Peyvên {{{langname}}} têkildarî {{{label_lc}}}.",
["default with capital"] = "Peyvên {{{langname}}} têkildarî {{{label_uc}}}.",
["default with the"] = "{{{langname}}} terms related to the {{{label_uc}}}.",
["default with the lower"] = "{{{langname}}} terms related to the {{{label_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:larger; font-weight:normal;\"><i>" .. desc:gsub("{{{langcat}}}", cat._lang:getCategoryName()) .. "</i></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 .. "]]")
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 .. "]]")
else
desc = desc:gsub("{{{label_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
return
"Ev kategoriyeke sîwan e ku mijara \"" .. self._info.label .. "\" li gorî zimanan li vir tên rêzkirin. \n\n" ..
"Ji bo kategoriya kurmancî binêre [[:Kategorî:".. b.ucfirst(self._info.label) .. " bi kurmancî]]."
end
end
function Category:getParents()
local umbrella = self._data["umbrella"]
if umbrella == true then
return {
{
name = require("Modul:dara kategoriyan/ferhengokkatbike")
.new {
code = nil,
label = self._info.label
},
sort = " ",
},
}
end
end
function Category:getChildren()
return nil
end
function Category:getUmbrella()
if not self._lang then
return nil
end
local uinfo = mw.clone(self._info)
uinfo.code = nil
return Category.new(uinfo)
end
return export