No edit summary |
No edit summary |
||
| Line 32: | Line 32: | ||
for k, v in pairs(frame.args) do | for k, v in pairs(frame.args) do | ||
if #v > 1 then | if #v > 1 then | ||
debugstring = debugstring .. k | debugstring = debugstring .. k .. "@" | ||
arg_count = arg_count + 1 | arg_count = arg_count + 1 | ||
end | end | ||
end | end | ||
if true then | if true then | ||
return debugstring | |||
end | end | ||
Revision as of 00:15, 6 June 2024
Documentation for this module may be created at Module:ModuleShowVariantsOrSingle/doc
------------------------------------
-- Modules can have variants, or they can be one of a kind.
-- It doesn't make sense to show all the variant fluff if a module is one of a kind.
-- This script shows or hides all that variant info based on how many unique modules are defined,
-- no having to manually pick a template yourself!
local p = {}
local function moreThanOne(module_name)
local variants_chapter = "== Variants ==\n{{Template:ModuleTableCompareLevels|module_name=" .. module_name .. "}}\n\n"
local variant_details_chapter = "== Variant Details ==\n"
return variants_chapter .. variant_details_chapter
end
local function addChapter(variantID, moduleText)
return "\n= " .. tostring(variantID) .. " =\n" ..moduleText
end
function p.processData(frame)
if frame.args.count == nil then
return "ERROR: Module:ModuleShowVariantsOrSingle not passed a count. Please tell us on Discord!"
end
local smw_count = tonumber(frame.args.count)
-- Count how many Template:ModuleUniqueDetails have been included as params
-- If this doesn't match how many SMW entries there are, someone screwed up data entry
local arg_count = 0
local debugstring = ""
for k, v in pairs(frame.args) do
if #v > 1 then
debugstring = debugstring .. k .. "@"
arg_count = arg_count + 1
end
end
if true then
return debugstring
end
-- Two args are the module name and smw count
if (arg_count-2) ~= smw_count then
return "arg_count: " .. tostring(arg_count) .. " smw_count: " .. tostring(smw_count) .. "randomval: " .. tostring(frame.args[6])
--return "ERROR: The Module page template requires each module to be defined twice. Make sure you put it in both spots!"
end
local result = ""
if arg_count > 3 then
result = moreThanOne(frame.args.module_name)
-- In MediaWiki, args are a table. Named args get a string key, unnamed args get a sequential number key.
-- Thus, the first unnamed arg will be 1, and we can loop through them all by subtracting the number of named args.
for i=1, (arg_count-2) do
result = result .. addChapter(i, frame.args[i])
end
result = result .. "\n<headertabs />"
else
result = frame.args[1] --If it's unique and this gives an error: good. You deserve it.
end
return frame:preprocess(result)
end
return p