Module:Template introspection: Difference between revisions
No edit summary |
mNo edit summary |
||
| (9 intermediate revisions by the same user not shown) | |||
| Line 5: | Line 5: | ||
-- Inspects a template for any modules' functions being invoked. | -- Inspects a template for any modules' functions being invoked. | ||
-- Helper function: preprocess wikitext so that: | -- Helper function: preprocess wikitext so that: | ||
| Line 36: | Line 35: | ||
:gsub("%s+", " ") | :gsub("%s+", " ") | ||
:match("^%s*(.-)%s*$") | :match("^%s*(.-)%s*$") | ||
-- Normalize more by removing subst, safesubst, and any extra curly brackets | |||
normalized = normalized | |||
:gsub("{{{|safesubst:}}}", "") -- Remove {{{{|safesubst:}}} if used | |||
:gsub("{{{|subst:}}}", "") -- Remove {{{{|subst:}}} if used | |||
:gsub("{{{{", "{{") -- Collapse excessive curly brackets | |||
:gsub("}}}}", "}}") -- Collapse excessive curly brackets | |||
return normalized | return normalized | ||
| Line 60: | Line 66: | ||
if #invokes == 0 then | if #invokes == 0 then | ||
hatnote = "This template does not invoke any functions." | hatnote = "This template does not invoke any functions." | ||
return hatnote | return string.format(":''%s''\n", hatnote) | ||
else | else | ||
hatnote = "This template invokes functions | hatnote = "This template invokes the following functions:" | ||
local calls = {} | local calls = {} | ||
for _, call in ipairs(invokes) do | for _, call in ipairs(invokes) do | ||
table.insert(calls, string.format("'''%s''' from [[Module:%s]]", call.func, call.module)) | table.insert(calls, string.format("'''%s''' from [[Module:%s]]", call.func, call.module)) | ||
end | end | ||
return string.format(":''%s %s''", hatnote, table.concat(calls, ", ")) | return string.format(":''%s %s''\n", hatnote, table.concat(calls, ", ")) | ||
end | end | ||
end | end | ||
function p._template_introspection(args) | function p._template_introspection(args) | ||
local template_name = args[" | local template_name = args["template_name"] | ||
-- Get template wikitext | -- Get template wikitext | ||
| Line 96: | Line 102: | ||
local args = getArgs(frame) or {} | local args = getArgs(frame) or {} | ||
-- Get template name, and strip /doc | -- Get template name, with namespace, and strip /doc if present | ||
args[" | args["template_name"] = args["template_name"] or mw.title.getCurrentTitle().prefixedText | ||
args[" | args["template_name"] = args["template_name"]:gsub("/doc$", "") | ||
return | return p._template_introspection(args) | ||
end | end | ||
return p | return p | ||