Модул:category tree/famcatboiler
Script error: The function "main" does not exist.
local export = {}
-- Category object
local Category = {}
Category.__index = Category
local function infobox(fam)
local ret = {}
table.insert(ret, "<table class=\"wikitable\">\n")
table.insert(ret, "<tr>\n<th colspan=\"2\" class=\"plainlinks\">[//sr.wiktionary.org/w/index.php?title=Module:families/data&action=edit Унос фамилије података]</th>\n</tr>\n")
table.insert(ret, "<tr>\n<th>Канонско име</th><td>" .. fam:getCanonicalName() .. "</td>\n</tr>\n")
if #fam:getOtherNames() > 0 then
local names = {}
for _, name in ipairs(fam:getOtherNames()) do
table.insert(names, "<li>" .. name .. "</li>")
end
table.insert(ret, "<tr>\n<th>Other names</th><td>" .. table.concat(names, "\n") .. "</td>\n</tr>\n")
end
table.insert(ret, "<tr>\n<th>[[Wiktionary:Families|Family code]]</th><td><code>" .. fam:getCode() .. "</code></td>\n</tr>\n")
table.insert(ret, "<tr>\n<th>[[w:Proto-language|Common ancestor]]</th><td>")
local protoLanguage = fam:getProtoLanguage()
if protoLanguage then
table.insert(ret, "[[:Категорија:" .. mw.getContentLanguage():ucfirst(protoLanguage:getCategoryName()) .. "|" .. protoLanguage:getCanonicalName() .. "]]")
else
table.insert(ret, "none")
end
table.insert(ret, "</td>\n")
table.insert(ret, "\n</tr>\n")
local parent = fam:getFamily()
if not parent then
table.insert(ret, "<tr>\n<th>[[Викиречник:Families|Parent family]]</th>\n<td>")
table.insert(ret, "unclassified")
elseif parent:getCode() == "qfa-not" then
table.insert(ret, "<tr>\n<th>[[Викиречник:Families|Parent family]]</th>\n<td>")
table.insert(ret, "not a family")
else
local chain = {}
while parent do
table.insert(chain, "[[:Категорија:" .. mw.ustring.gsub(parent:getCategoryName(), "^.", mw.ustring.upper) .. "|" .. parent:getCanonicalName() .. "]]")
parent = parent:getFamily()
end
table.insert(ret, "<tr>\n<th>[[Викиречник:Families|Parent famil"
.. (#chain == 1 and "y" or "ies") .. "]]</th>\n<td>")
for i = #chain, 1, -1 do
table.insert(ret, "<ul><li>" .. chain[i])
end
table.insert(ret, string.rep("</li></ul>", #chain))
end
table.insert(ret, "</td>\n</tr>\n")
if fam:getWikidataItem() and mw.wikibase then
local link = '[' .. mw.wikibase.getEntityUrl(fam:getWikidataItem()) .. ' ' .. fam:getWikidataItem() .. ']'
table.insert(ret, "<tr><th>Wikidata</th><td>" .. link .. "</td></tr>")
end
table.insert(ret, "</table>")
return table.concat(ret)
end
function Category.new(info)
local self = setmetatable({}, Category)
assert(type(info) == "table", "The \"info\" parameter must be a table.")
self._info = {}
for key, val in pairs(info) do
if key == "code" then
self._info.code = val
self._fam = require("Module:families").getByCode(val) or error("The family code \"" .. val .. "\" is not valid.")
else
error("The parameter \"" .. key .. "\" was not recognized.")
end
end
return self
end
export.new = Category.new
function Category:getInfo()
return self._info
end
function Category:getBreadcrumbName()
if not self._fam then
return "Језици по фамилији"
else
return self._fam:getCanonicalName()
end
end
function Category:getDataModule()
return "Модул:category tree/famcatboiler"
end
function Category:canBeEmpty()
return true
end
function Category:isHidden()
return false
end
function Category:getCategoryName()
local ret = nil
if not self._fam then
ret = "Језици по фамилији"
else
ret = self._fam:getCategoryName()
end
return mw.getContentLanguage():ucfirst(ret)
end
function Category:getDescription()
if not self._fam then
return nil
else
local ret =
mw.getCurrentFrame():expandTemplate{title = "sisterlinks", args = {self._fam:getCategoryName()}} ..
mw.getCurrentFrame():expandTemplate{title = "wikipedia", args = {}} ..
"Ово је главна категорија од '''" .. self._fam:getCategoryName() .. "'''.\n\nИнформације о " .. self._fam:getCanonicalName() .. ":\n\n" .. infobox(self._fam)
return ret
end
end
function Category:getParents()
if not self._fam then
return {
{
name = "Категорија:Сви језици",
sort = " "
},
{
name = "Категорија:Све језичке фамилије",
sort = " "
},
}
else
local pinfo = mw.clone(self._info)
local fam = self._fam:getFamily()
if not fam or fam:getCode() == "qfa-iso" or fam:getCode() == "qfa-not" then
pinfo.code = nil
else
pinfo.code = fam:getCode()
end
return {{name = Category.new(pinfo), sort = self._fam:getCanonicalName()}}
end
end
function Category:getChildren()
return nil
end
function Category:getUmbrella()
return "Категорија:Све језичке фамилије"
end
return export