Anonymous

Module:Main: Difference between revisions

From Zelda Wiki, the Zelda encyclopedia
1,323 bytes added ,  21 July 2023
support pipe separators like Template:List so that Template:, is not needed
mNo edit summary
(support pipe separators like Template:List so that Template:, is not needed)
 
(7 intermediate revisions by 3 users not shown)
Line 1: Line 1:
local p = {}
local p = {}
local utilsArg = require("Module:UtilsArg")
local utilsError = require("Module:UtilsError")
local utilsMarkup = require("Module:UtilsMarkup")
local utilsString = require("Module:UtilsString")
local utilsTable = require("Module:UtilsTable")
local CATEGORY_INVALID_ARGS = "[[Category:"..require("Module:Constants/category/invalidArgs").."]]"


function p.Main(frame)
function p.Main(frame)
return frame:expandTemplate({
local args, err = utilsArg.parse(frame:getParent().args, p.Templates.Main)
title = "Main/Old",
local categories = err and err.categoryText or ""
args = frame:getParent().args,
}) .. "\n"
local pages = args.pages
if pages == nil or #pages == 0 then
return "", categories
elseif #pages == 1 then -- assume list items are delimited by commas instead of pipes
pages = utilsString.split(pages[1])
end
pages = utilsTable.map(pages, p.formatListItem)
local pagesOld = pages
pages = utilsTable.compact(pages) -- remove nils
if #pagesOld ~= #pages then
utilsError.warn(string.format("Page list cannot have blank entries: <code>%s</code>", frame:getParent().args[1]))
categories = categories..CATEGORY_INVALID_ARGS
end
 
local text = #pages > 1 and "Main articles: " or "Main article: "
local pageList = text..mw.text.listToText(pages)
local hatnote = frame:expandTemplate({
title = "Hatnote",
args = {pageList},
})
 
return hatnote, categories
end
 
function p.formatListItem(item)
item = mw.text.decode(item)
if utilsString.isBlank(item) then
return nil
elseif utilsMarkup.containsLink(item) then
return item
elseif string.find(item, "#") then
local linkDisplay = string.gsub(item, "#", " § ")
return string.format("[[%s|%s]]", item, linkDisplay)
else
return string.format("[[%s]]", item)
end
end
end


Line 11: Line 55:
["Main"] = {
["Main"] = {
purpose = "To be placed under a heading when that section's topic has its own page or pages.",
purpose = "To be placed under a heading when that section's topic has its own page or pages.",
categories = {"Formatting Templates"},
categories = {"Formatting templates"},
params = {
params = {
[1] = {
["..."] = {
name = "pages",
name = "pages",
required = true,
required = true,
desc = "Comma separated list of wiki page names.",
desc = "Article names",
trim = true,
trim = true,
nilIfEmpty = true,
nilIfEmpty = true,
split = true,
},
["..."] = {
name = "_pages",
deprecated = true,
},
},
},
},
examples = {
{"Spear Moblin", "A", "Bow Moblin", "", "Shield Moblin", "C"}
}
}
}
}
}


return p
return p