વિભાગ:શ્રેણી ઝાડ
Documentation for this module may be created at વિભાગ:શ્રેણી ઝાડ/doc
local export = {}
-- The main entry point.
-- This is the only function that can be invoked from a template.
function export.show(frame)
if mw.title.getCurrentTitle().nsText == "ઢાંચો" then
return "(This template should be used on pages in the Category: namespace.)"
elseif mw.title.getCurrentTitle().nsText ~= "શ્રેણી" then
error("This template/module can only be used on pages in the Category: namespace.")
end
local args = frame.args
local template = args["ઢાંચો"]
if not template then
error("\"ઢાંચો\" પારમિતિ સ્પષ્ટ નહોતું.")
end
-- Get all the parameters and the label data
local info = {}
info.code = args["સંકેત"]; if info.code == "" then info.code = nil end
info.label = args["લેબલ"]; if info.label == "" then info.label = nil end
info.sc = args["લિપિ"]; if info.sc == "" then info.sc = nil end
info.template = template
-- Does the category have the correct name?
local errormessage = check_name(info)
if errormessage then
return errormessage
end
-- Generate the displayed information
local display = {}
table.insert(display, show_breadcrumbs(info))
table.insert(display, show_description(info))
table.insert(display, show_subcategory_list(info))
table.insert(display, show_TOC(info))
return show_categories(info) .. table.concat(display, "\n\n") .. "<br clear=\"સહુ\"/>"
end
-- Retrieves an item of information
function export.get_item(info, item)
local ret = require("Module:શ્રેણી ઝાડ/" .. info.template).get_item(info, item)
if not ret then
if item:find("^પૂર્વજક્રમ[1-9]$") or item == "પૂર્વજછત્રીક્રમ" then
ret = export.get_item(info, "નામ_પ્રદર્શન")
elseif item == "નામ_પ્રદર્શન" then
ret = info.label
end
end
return ret
end
-- Check the name of the curren page, and return an error if it's not right.
function check_name(info)
local errortext = nil
local category = nil
if not export.get_item(info, "લેબલ_છે") then
errortext =
"The label \"" .. (info.label or "") .. "\" given to the " .. mw.getCurrentFrame():expandTemplate{title = "ઢાંચ", args = {info.template}} .. " template is not valid. " ..
"You may have mistyped it, or it simply has not been created yet. To add a new label, please consult the documentation of the template."
category = "[[Category:Categories with invalid label]]"
else
local expected_name = export.get_item(info, (info.code and "મૂળભૂત" or "છત્રી"))
if expected_name ~= mw.title.getCurrentTitle().text then
errortext = "Based on the parameters given to the " .. mw.getCurrentFrame():expandTemplate{title = "ઢાંચ", args = {info.template}} .. " template, this category should be called '''[[શ્રેણીy:" .. expected_name .. "]]'''."
category = "[[શ્રેણી:Categories with incorrect name]]"
end
end
if errortext then
return (category or "") .. mw.getCurrentFrame():expandTemplate{title = "જાળવણી ડબ્બો", args = {
"રાતું",
image = "[[File:Ambox warning pn.svg|50px]]",
title = "The automatically-generated contents of this category has errors.",
text = errortext,
}}
else
return nil
end
end
-- Show the parent categories that the current category should be placed in.
function show_categories(info)
local categories = {}
local lang = require("Module:ભાષાઓ").getByCode(mw.getContentLanguage():getCode()) -- Used to create English sort keys
if info.sc then
local parent = export.get_item({code = info.code, label = info.label, sc = nil, template = info.template}, (info.code and "મૂળભૂત" or "છત્રી"))
local sortparent = require("Module:લિપિઓ").getByCode(info.sc):getCanonicalName()
table.insert(categories, "[[શ્રેણી:" .. parent .. "|" .. lang:makeSortKey(sortparent) .. "]]")
elseif info.code then
-- There is a code, so this is a basic category. Put the category in its parent.
for i = 1, 9 do
local parent = export.get_item(info, "પૂર્વજ" .. i)
local sortparent = export.get_item(info, "પૂર્વજક્રમ" .. i)
if parent then
local parent_name = export.get_item({code = info.code, label = parent, sc = info.sc, template = info.template}, "મૂળભૂત")
table.insert(categories, "[[શ્રેણી:" .. parent_name .. "|" .. lang:makeSortKey(sortparent) .. "]]")
else
local parentbyname = export.get_item(info, "પૂર્વજનામથી" .. i)
if parentbyname then
table.insert(categories, "[[શ્રેણી:" .. parentbyname .. "|" .. lang:makeSortKey(sortparent) .. "]]")
end
end
end
-- Also put the category in its corresponding "umbrella" or "by language" category.
local umbrella = export.get_item(info, "છત્રી")
if umbrella then
local current_name = export.get_item(info, "મૂળભૂત")
table.insert(categories, "[[શ્રેણી:" .. umbrella .. "|" .. lang:makeSortKey(current_name) .. "]]")
end
else
-- There is no code, this is an umbrella category. Put the category in a "મૂળભૂત" category.
local umbrella_categorization = export.get_item(info, "છત્રી-શ્રેણીકરણ")
if umbrella_categorization == "મૂળભૂત" then
local fundamental = export.get_item(info, "મૂળભૂત")
if fundamental then
local sortparentumbrella = export.get_item(info, "પૂર્વજછત્રીક્રમ")
table.insert(categories, "[[શ્રેણી:" .. fundamental .. "|" .. lang:makeSortKey(sortparentumbrella) .. "]]")
end
elseif umbrella_categorization == "સમાંતર" then
for i = 1, 9 do
local parent = export.get_item(info, "પૂર્વજ" .. i)
local sortparent = export.get_item(info, "પૂર્વજક્રમ" .. i)
if parent then
local parent_name = export.get_item({code = info.code, label = parent, sc = info.sc, template = info.template}, "છત્રી")
table.insert(categories, "[[શ્રેણી:" .. parent_name .. "|*" .. lang:makeSortKey(sortparent) .. "]]")
else
local parentbyname = export.get_item(info, "પૂર્વજનામથી" .. i)
if parentbyname then
table.insert(categories, "[[શ્રેણી:" .. parentbyname .. "|*" .. lang:makeSortKey(sortparent) .. "]]")
end
end
end
end
end
if mw.site.stats.pagesInCategory(mw.title.getCurrentTitle().text, "સહુ") == 0 then
table.insert(categories, "[[શ્રેણી:ખાલી શ્રેણી]]")
end
return table.concat(categories, "")
end
-- Show navigational "breadcrumbs" at the top of the page.
function show_breadcrumbs(info)
if not info.code and export.get_item(info, "છત્રી-શ્રેણીકરણ") ~= "સમાંતર" then
return nil
end
local steps = {}
-- Start at the current label and move our way up the "chain" from child to parent, until we can't go further.
local current = info.label
while current do
local parent = export.get_item({code = info.code, label = current, sc = nil, template = info.template}, "પૂર્વજ૧")
if parent then
local parent_category = export.get_item({code = info.code, label = parent, sc = nil, template = info.template}, (info.code and "મૂળભૂત" or "છત્રી"))
local parent_display_name = export.get_item({code = info.code, label = parent, sc = nil, template = info.template}, "નામ_પ્રદર્શન")
table.insert(steps, 1, "» [[:શ્રેણી:" .. parent_category .. "|" .. mw.getContentLanguage():ucfirst(parent_display_name) .. "]]")
else
local parent_parentbyname = export.get_item({code = info.code, label = current, sc = nil, template = info.template}, "પૂર્વજનામથી૧")
if parent_parentbyname then
table.insert(steps, 1, "» [[:શ્રેણી:" .. parent_parentbyname .. "|" .. mw.getContentLanguage():ucfirst(parent_parentbyname) .. "]]")
end
end
-- Move up the "chain" by one level.
current = parent
end
if info.sc then
local category = export.get_item({code = info.code, label = info.label, sc = nil, template = info.template}, (info.code and "મૂળભૂત" or "છત્રી"))
local display_name = export.get_item({code = info.code, label = info.label, sc = nil, template = info.template}, "નામ_પ્રદર્શન")
table.insert(steps, "» [[:શ્રેણી:" .. category .. "|" .. mw.getContentLanguage():ucfirst(display_name) .. "]]")
end
local category = export.get_item(info, (info.code and "મૂળભૂત" or "છત્રી"))
local display_name = export.get_item(info, "નામ_પ્રદર્શન")
table.insert(steps, "» [[:શ્રેણી:" .. category .. "|" .. mw.getContentLanguage():ucfirst(display_name) .. "]]")
return "<small>" .. table.concat(steps, " ") .. "</small>"
end
-- Show a short description text for the category.
function show_description(info)
if info.code then
if info.sc then
local basic = export.get_item(info, "મૂળભૂત")
return "This category contains '''" .. basic .. "'''."
else
local description = export.get_item(info, "વર્ણન")
local edit = export.get_item(info, "ફેરફાર")
return (description or "") .. mw.getCurrentFrame():expandTemplate{title = "ફેરફાર", args = {edit, type = "sup"}}
end
else
local description = export.get_item(info, "છત્રી_વર્ણન")
local edit = export.get_item(info, "ફેરફાર")
return (description or "") .. mw.getCurrentFrame():expandTemplate{title = "ફેરફાર", args = {edit, type = "sup"}}
end
end
-- Show a list of subcategories.
function show_subcategory_list(info)
if not info.code then
return nil
end
local subcategories = {}
for i = 1, 40 do
local sub = export.get_item(info, "ઉપ" .. i)
if sub then
local sub_basic = export.get_item({code = info.code, label = sub, sc = info.sc, template = info.template}, "મૂળભૂત")
local sub_page = mw.title.new("શ્રેણી:" .. sub_basic)
if sub_page.exists then
local sub_description = export.get_item({code = info.code, label = sub, sc = info.sc, template = info.template}, "વર્ણન")
table.insert(subcategories, "* [[:શ્રેણી:" .. sub_basic .. "]]: " .. sub_description)
end
end
end
if #subcategories > 0 then
return table.concat(subcategories, "\n")
else
return nil
end
end
-- Show a table of contents with links to each letter in the language's script.
function show_TOC(info)
if not info.code then
return nil
end
local num_pages = mw.site.stats.pagesInCategory(mw.title.getCurrentTitle().text, "પાનાઓ")
-- No need for a TOC if all entry names can fit on one page.
if num_pages > 200 then
-- This category is very large, see if there is an "extended" version of the TOC.
if num_pages > 2500 then
local TOC_template_extended = mw.title.new("ઢાંચો:" .. info.code .. "-categoryTOC/full")
if TOC_template_extended.exists then
return mw.getCurrentFrame():expandTemplate{title = TOC_template_extended.text, args = {}}
end
end
local TOC_template = mw.title.new("ઢાંચો:" .. info.code .. "-categoryTOC")
if TOC_template.exists then
return mw.getCurrentFrame():expandTemplate{title = TOC_template.text, args = {}}
end
end
return nil
end
return export