Module:Module introspection: Difference between revisions
m bugfix |
ArrowHead294 (talk | contribs) mNo edit summary |
||
| (14 intermediate revisions by 2 users not shown) | |||
| Line 2: | Line 2: | ||
local getArgs = require("Module:Arguments").getArgs | local getArgs = require("Module:Arguments").getArgs | ||
local iutils = require("Module:Introspection utils") | local iutils = require("Module:Introspection utils") | ||
local yesno = require("Module:Yesno") | |||
local p = {} | local p = {} | ||
| Line 12: | Line 13: | ||
local lines = {} | local lines = {} | ||
table.insert(lines, '{| class="wikitable sortable"') | table.insert(lines, '{| class="wikitable sortable"') | ||
table.insert(lines, "|+ Lua modules required | table.insert(lines, "|+ style=\"font-size: 105%;\" | " .. string.format("Lua modules required (%d)", #module_deps)) | ||
table.insert(lines, "|-") | |||
table.insert(lines, "! Variable") | table.insert(lines, "! Variable") | ||
table.insert(lines, "! Module") | table.insert(lines, "! Module") | ||
| Line 61: | Line 63: | ||
--table.insert(lines, string.format("'''Module:%s''' provides %d function(s):", module_name, #module_funcs)) | --table.insert(lines, string.format("'''Module:%s''' provides %d function(s):", module_name, #module_funcs)) | ||
table.insert(lines, '{| class="wikitable sortable"') | table.insert(lines, '{| class="wikitable sortable"') | ||
table.insert(lines, "|+ | table.insert(lines, "|+ style=\"font-size: 105%;\" | " .. string.format("Functions provided (%d)", #module_funcs)) | ||
table.insert(lines, "|-") | |||
table.insert(lines, "! Line") | table.insert(lines, "! Line") | ||
table.insert(lines, "! Function") | table.insert(lines, "! Function") | ||
| Line 104: | Line 107: | ||
-- If the function is invokable (it has one param called "frame"), add | -- If the function is invokable (it has one param called "frame"), add | ||
-- "invokable" to that cell | -- "invokable" to that cell | ||
if # | if #params == 1 and params[1] == "frame" then | ||
func = func .. " '''(invokable)'''" | func = func .. " '''(invokable)'''" | ||
end | end | ||
| Line 128: | Line 131: | ||
local main_function = args["main_function"] | local main_function = args["main_function"] | ||
local descriptions = args["descriptions" ] | local descriptions = args["descriptions" ] | ||
local is_doc = args["is_doc"] | |||
-- Check whether this page is a docpage | |||
-- If so, don't bother | |||
if is_doc then | |||
return "''To see introspection summary, see this module's main page.''" | |||
end | |||
-- Preprocess module and blank-out comments | -- Preprocess module and blank-out comments | ||
local title = mw.title.new('Module:' .. module_name) | --local title = mw.title.new('Module:' .. module_name) | ||
local code = title:getContent() | --local code = title:getContent() | ||
code = iutils.preprocess_code(code) -- Blank-out comments | --code = iutils.preprocess_code(code) -- Blank-out comments | ||
local code = iutils.get_and_preprocess_content("Module", module_name) | |||
-- Get dependencies and their functions used, then build a table | -- Get dependencies and their functions used, then build a table | ||
| Line 146: | Line 157: | ||
local lines = { | local lines = { | ||
'{| class="wikitable mw-collapsible"', | '{| class="wikitable mw-collapsible"', | ||
'! colspan="2" | Introspection summary for Module: | '|-', | ||
'! colspan="2" style="font-size: 105%;" | ' .. string.format("Introspection summary for Module:%s ", module_name), | |||
"|-", | "|-", | ||
'| style="vertical-align:top; border-right:none" | '| style="vertical-align: top; border-right: none;" | ', | ||
func_table, | func_table, | ||
'| style="vertical-align:top; border-left:none" |', | '| style="vertical-align: top; border-left: none;" | ', | ||
dep_table, | dep_table, | ||
"|}" | "|}" | ||
| Line 181: | Line 193: | ||
-- Strip trailing "/doc" if the template is used on a documentation subpage | -- Strip trailing "/doc" if the template is used on a documentation subpage | ||
module_name = module_name:gsub("/doc$", "") | --module_name = module_name:gsub("/doc$", "") | ||
-- Check whether page is the doc page | |||
-- To ensure proper referencing, do not display introspection on a docpage. | |||
local is_doc = string.find(module_name, "/doc$") | |||
-- Normalize module name so it can be used to find the main function, which | -- Normalize module name so it can be used to find the main function, which | ||
| Line 202: | Line 218: | ||
["module_name" ] = module_name, | ["module_name" ] = module_name, | ||
["main_function"] = main_function, | ["main_function"] = main_function, | ||
["descriptions" ] = func_descriptions | ["descriptions" ] = func_descriptions, | ||
["is_doc"] = is_doc | |||
}) | }) | ||
-- Debugger option to show generated WikiText | |||
local wtext = yesno(frame.args["wtext"] or args["wtext"]) | |||
if wtext == true then | |||
result = "<syntaxhighlight lang=\"wikitext\">" .. result .. "</syntaxhighlight>" | |||
end | |||
return frame:preprocess(result) | return frame:preprocess(result) | ||
end | end | ||
return p | return p | ||