Module:Test2: Difference between revisions
From Elwiki
No edit summary |
No edit summary |
||
Line 2: | Line 2: | ||
function p.Patch(frame) | function p.Patch(frame) | ||
local | local origTemplateRaw = frame.args.orig | ||
local origTemplate = mw.text.unstrip(origTemplateRaw) | |||
local newArgs = {} | local newArgs = {} | ||
for k, v in pairs(frame.args) do | for k, v in pairs(frame.args) do | ||
Line 8: | Line 9: | ||
newArgs[k] = v | newArgs[k] = v | ||
end | end | ||
end | end | ||
-- Extract the old arguments from the orig template | -- Extract the old arguments from the orig template | ||
local oldArgs = {} | local oldArgs = {} | ||
string.gsub( | string.gsub(origTemplate, "%|%s*(%w+)%s*=%s*(.-)%s*", function(k, v) | ||
oldArgs[k] = v | oldArgs[k] = v | ||
end) | end) | ||
Line 33: | Line 27: | ||
-- Create the new template string with the merged arguments | -- Create the new template string with the merged arguments | ||
local newTemplate = "{{" .. string.match( | local newTemplate = "{{" .. string.match(origTemplate, "{{%s*(.-)%s*}}") .. "|" | ||
for k, v in pairs(mergedArgs) do | for k, v in pairs(mergedArgs) do | ||
newTemplate = newTemplate .. k .. "=" .. v .. "|" | newTemplate = newTemplate .. k .. "=" .. v .. "|" |
Revision as of 20:56, 25 April 2023
Documentation for this module may be created at Module:Test2/doc
local p = {}
function p.Patch(frame)
local origTemplateRaw = frame.args.orig
local origTemplate = mw.text.unstrip(origTemplateRaw)
local newArgs = {}
for k, v in pairs(frame.args) do
if k ~= "orig" then
newArgs[k] = v
end
end
-- Extract the old arguments from the orig template
local oldArgs = {}
string.gsub(origTemplate, "%|%s*(%w+)%s*=%s*(.-)%s*", function(k, v)
oldArgs[k] = v
end)
-- Merge the old and new arguments
local mergedArgs = {}
for k, v in pairs(oldArgs) do
mergedArgs[k] = v
end
for k, v in pairs(newArgs) do
mergedArgs[k] = v
end
-- Create the new template string with the merged arguments
local newTemplate = "{{" .. string.match(origTemplate, "{{%s*(.-)%s*}}") .. "|"
for k, v in pairs(mergedArgs) do
newTemplate = newTemplate .. k .. "=" .. v .. "|"
end
newTemplate = newTemplate:sub(1, -2) .. "}}"
-- Expand the new template
local newTemplateExpanded = frame:preprocess(newTemplate)
return newTemplateExpanded
end
return p