Module:Higher education task force: Difference between revisions
Appearance
Content deleted Content added
No edit summary |
No edit summary |
||
Line 31: | Line 31: | ||
end |
end |
||
-- Takes an input string "r" in the form "|a=b" (no spaces around the =) used in templates and adds it to the table |
|||
function p.tab2arg(trable,r) |
function p.tab2arg(trable,r) |
||
local t = mw.text.split(r, "=", true, true) -- Split by comma, trim whitespace, remove empty strings |
local t = mw.text.split(r, "=", true, true) -- Split by comma, trim whitespace, remove empty strings |
||
Line 39: | Line 40: | ||
end |
end |
||
-- Adds an element to a table (syntactic sugar) |
|||
function p.ma1(frame,s1,s2) |
function p.ma1(frame,s1,s2) |
||
frame[s1]=s2 |
frame[s1]=s2 |
||
end |
end |
||
--[[ pulls out our specially named parameter from the list of template-like args, and expands |
|||
it into the appropriate task force table entries |
|||
]]-- |
|||
function p.fudgeTaskforceParameters(frame) |
function p.fudgeTaskforceParameters(frame) |
||
local args = getArgs(frame, { parentFirst = true }) |
local args = getArgs(frame, { parentFirst = true }) |
||
Line 72: | Line 76: | ||
end |
end |
||
-- More or less a wrapper for WikiProject Banner with some argument sweetening |
|||
function p.fudge(frame) |
function p.fudge(frame) |
||
local oframe=frame |
local oframe=frame |
Revision as of 18:14, 22 April 2025
require("strict")
local yesNo = require("Module:Yesno")
local getArgs = require("Module:Arguments").getArgs
local banner = require("Module:WikiProject_banner")
local p = {}
--[[------------------------< _main >---------------------------------
Internal function to retrieve data for a task force.
]]----------------------------------------------------------------------------
function p._main(args, data)
local dataModule = require('Module:Higher education task force/data')
local taskForceCode = args.code or args[1]
local taskForceData
if taskForceCode then
taskForceCode = taskForceCode:match('^%s*(.-)%s*$'):lower() -- trim whitespace and put in lower case
taskForceData = dataModule[taskForceCode]
end
return taskForceData
end
--[[------------------------< getCanonicalCode >---------------------------------
Gets the canonical code for a task force. return tfData.canonicalCode
]]----------------------------------------------------------------------------
function p.main(frame)
local args = getArgs(frame, { parentFirst = true })
return p._main(args)
end
-- Takes an input string "r" in the form "|a=b" (no spaces around the =) used in templates and adds it to the table
function p.tab2arg(trable,r)
local t = mw.text.split(r, "=", true, true) -- Split by comma, trim whitespace, remove empty strings
local x = mw.text.split(t[1], "|", true, true) -- Split by comma, trim whitespace, remove empty strings
trable[x[2] ]=t[2]
return trable
end
-- Adds an element to a table (syntactic sugar)
function p.ma1(frame,s1,s2)
frame[s1]=s2
end
--[[ pulls out our specially named parameter from the list of template-like args, and expands
it into the appropriate task force table entries
]]--
function p.fudgeTaskforceParameters(frame)
local args = getArgs(frame, { parentFirst = true })
local taskforcesStr = ""
taskforcesStr = args["HETF_TASKFORCES_TO_EXPAND"]
if not taskforcesStr then
return "oops"
end
local taskforceCodes = mw.text.split(taskforcesStr, ",", true, true) -- Split by comma, trim whitespace, remove empty strings
local tfCounter = 1
local trable=args
for _, code in ipairs(taskforceCodes) do
local tfData = p._main({code})
if tfData then
trable = p.tab2arg(trable,string.format("|tf %d=%dyes", tfCounter,tfCounter))
trable = p.tab2arg(trable,string.format("|TF_%d_LINK=%s", tfCounter, tfData.link))
trable = p.tab2arg(trable,string.format("|TF_%d_NAME=%s", tfCounter, tfData.name))
trable = p.tab2arg(trable,string.format("|TF_%d_NESTED=%s", tfCounter, tfData.nested))
trable = p.tab2arg(trable,string.format("|TF_%d_IMAGE=%s", tfCounter, tfData.image))
trable = p.tab2arg(trable,string.format("|TF_%d_MAIN_CAT=%s", tfCounter, tfData.category))
tfCounter = tfCounter + 1
end
end
frame.args=trable
return frame
end
-- More or less a wrapper for WikiProject Banner with some argument sweetening
function p.fudge(frame)
local oframe=frame
frame=p.fudgeTaskforceParameters(frame)
return banner.main(oframe)
end
function p.printargs(frame)
local str=getArgs(frame, { parentFirst = true })
return str[1]
end
p[''] = function (frame) return p._main(frame.args) end
return p