Module:Devmodule: Difference between revisions
Jump to navigation
Jump to search
m (1 revision imported) |
No edit summary |
||
Line 8: | Line 8: | ||
local p = {} | local p = {} | ||
local getArgs = require(" | local getArgs = require("Module:Arguments").getArgs | ||
local normalize = require(" | local normalize = require("Module:NormalizeModuleName") | ||
local userError = require(" | local userError = require("Module:User error") | ||
local removeArgs = require(" | local removeArgs = require("Module:FrameTools").removeArgs | ||
--% Entry point to use module | --% Entry point to use module |
Latest revision as of 05:33, 30 April 2021
Documentation for this module may be created at Module:Devmodule/doc
-- <nowiki> -------------------------------------------------------------------------------- -- Invokes global modules from dev.wikia.com. -- -- Syntax: -- {{Devmodule|#mod = <module name>|#fun = <function name>|<parameters>}} -------------------------------------------------------------------------------- local p = {} local getArgs = require("Module:Arguments").getArgs local normalize = require("Module:NormalizeModuleName") local userError = require("Module:User error") local removeArgs = require("Module:FrameTools").removeArgs --% Entry point to use module --@ frame (table) A scribunto frame --: (string) The return content of the module function p.main(frame) local args = getArgs(frame) local moduleName = args["#mod"] or args["#modulename"] local functionName = args["#fun"] or args["#fname"] or "main" local success, _, invokedModule -- try to `normalize()` the given module name -- if this fails, then the user did not pass the right parameters success, _, moduleName = pcall(normalize, moduleName) if not success then return userError("no `#mod` parameter given " .. "(should be the name of a module on dev.wikia)") end -- try to `require()` the given module -- if this fails, then the user gave an incorrect module name success, invokedModule = pcall(require, "Dev:" .. moduleName) if not success then return userError("could not find a module called `" .. moduleName .. "` on dev.wikia") end -- make sure the module has a function called `functionName` -- if this fails, then the user gave an incorrect function name local func = invokedModule[functionName] if not func then return userError("that module does not have a function called `" .. functionName .. "`") end -- create a frame-like object, without the Devmodule-exclusive arguments local pseudoFrame = removeArgs(frame, "#mod", "#modulename", "#fun", "#fname") -- call the function -- any errors from the function itself will be passed to the user return func(pseudoFrame) end return p -- </nowiki> -- (Add categories here.)