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 > 0 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