Module:Script doc auto explained

local MessageBox = require('Module:Message box')local Gadgets = require('Module:Gadgets')local Arguments = require('Module:Arguments')local TableTools = require('Module:TableTools')

local p =

p.main = function(frame) local args = Arguments.getArgs(frame) return p.core(args.page or mw.title.getCurrentTitle.fullText)end

p.core = function(page) local len = page:len if len < 4 then -- Too short page name, do nothing return end if page:sub(-4, -1)

'.css' then local basepage = page:sub(0, -5) local sisterpage = basepage..'.js' return p.makeMessage('css', mw.title.new(basepage), mw.title.new(sisterpage), 'js') end if page:sub(-3, -1)

'.js' then local basepage = page:sub(0, -4) local sisterpage = basepage..'.css' return p.makeMessage('js', mw.title.new(basepage), mw.title.new(sisterpage), 'css') endend

local skins =

p.gadget_text = function(name, repo) local lang = mw.getContentLanguage local options = repo[name].options local dependents = if options.hidden ~= nil then -- Find dependents for n, c in pairs(repo) do local deps = c.options.dependencies and TableTools.listToSet(mw.text.split(c.options.dependencies, ',', false)) or local peers = c.options.peers and TableTools.listToSet(mw.text.split(c.options.peers, ',', false)) or if deps['ext.gadget.'..name] ~= nil or peers[name] ~= nil then table.insert(dependents, ''..n..'') end end end local usage = Gadgets.get_usage(name) if usage

-1 then usage = "an unknown number of" else usage = lang:formatNum(usage) end return 'This page is loaded as a part of the ' .. ''..name..' gadget' .. (options.hidden ~= nil and ', a hidden gadget'.. (#dependents > 0 and ' used by '..mw.text.listToText(dependents)..'.' or '.') or (options.default ~= nil and ', which is enabled by default.' or (', used by '..usage..' users. '))) .. '
'end

p.makeMessage = function(pagetype, basepage, sisterpage, sistertype) local text = if basepage.namespace

2 then if skins[basepage.subpageText] ~= nil then -- We are on a user skin file text = 'The accompanying .'..sistertype..' page for this skin '.. (sisterpage.exists and 'is' or 'can be added')..' at '..sisterpage.fullText..'.' else -- We are on some script page, not a user skin file local docpageExists = basepage.exists local sisterpageExists = sisterpage.exists if docpageExists and sisterpageExists then text = 'This user script seems to have a documentation page at '..basepage.fullText..' and an accompanying .'..sistertype..' page at '..sisterpage.fullText..'.' elseif docpageExists and not sisterpageExists then text = 'This user script seems to have a documentation page at '..basepage.fullText..'.' elseif sisterpageExists then text = 'Documentation for this user script can be added at '..basepage.fullText..'. This user script seems to have an accompanying .'..sistertype..' page at '..sisterpage.fullText..'. ' else text = 'Documentation for this user script can be added at '..basepage.fullText..'.' end end elseif basepage.namespace

8 then if basepage.text:find('^Gadget-') ~= nil then local gadgetRepo = Gadgets.parse local shortName = basepage.text:gsub('^Gadget%-', ) .. '.' .. pagetype for name, config in pairs(gadgetRepo) do if TableTools.inArray(config.pages, shortName) then text = text .. p.gadget_text(name, gadgetRepo) end end end end if text ~= then return MessageBox.main('fmbox',) endend

return p