Module:Dochead: Difference between revisions
Jump to navigation
Jump to search
mNo edit summary |
implement headers; no categorizing code yet |
||
| Line 2: | Line 2: | ||
local getArgs = require("Module:Arguments").getArgs | local getArgs = require("Module:Arguments").getArgs | ||
local ctg = require("Module:Category handler")._category_handler | local ctg = require("Module:Category handler")._category_handler | ||
local yesno = require("Module:Yesno") | |||
local p = {} | local p = {} | ||
| Line 20: | Line 21: | ||
-- Detect whether a page exists, where pagename is "Namespace:Title" | -- Detect whether a page exists, where pagename is "Namespace:Title" | ||
function p.page_exists( | function p.page_exists(fullpagename) | ||
local pagename = pagename or "Template:Dochead" | local pagename = pagename or "Template:Dochead" | ||
local title = mw.title.new(pagename) | local title = mw.title.new(pagename) | ||
| Line 32: | Line 33: | ||
function p._dochead(args) | function p._dochead(args) | ||
local pagename = args["pagename"] | local namespace = args["namespace"] | ||
local header | local pagename = args["pagename" ] | ||
local | local header = args["header" ] or "none" | ||
local corr_template = args["temp" ] or "Template:" .. pagename | |||
local corr_module = args["mod" ] or "Module" .. pagename | |||
-- If header is none, don't bother. | |||
if header == "none" then return "" end | |||
local result = "" | |||
if namespace == "Module" then | |||
if p.page_exists(corr_template) then | |||
if header == "dualuse" then | |||
result = string.format("This module may be invoked by templates by using its corresponding [[%s | template]], or used directly from other modules.", corr_template) | |||
elseif header == "metatemplate" then | |||
result = string.format("This module implements a metatemplate, and may be invoked by templates by using its corresponding [[%s | template]], or used directly from other modules.", corr_template) | |||
elseif header == "noinvoke" then | |||
result = string.format("This module should not be invoked directly; use its corresponding [[%s | template]] instead.", corr_template) | |||
else | |||
result = table.concat({header, string.format("This module implements [[%s]].", corr_template)}, " ") | |||
end | |||
else | |||
if header == "library" or header == "metamodule" then | |||
result = string.format("This module primarily serves as a library for other modules.") | |||
else | |||
result = header | |||
end | |||
end | |||
elseif namespace == "Template" then | |||
if header == "noinvoke" then header = "" end | |||
if p.page_exists(corr_module) then | |||
if header == "metatemplate" then | |||
result = "This template is a metatemplate. It is used to build other templates and should not be used standalone, except for testing or simple usage." .. " " .. string.format("This template is implemented by the Lua module [[%s]].") | |||
else | |||
result = table.concat({header, string.format("This template is implemented by the Lua module [[%s]].")}, " ") | |||
end | |||
else | |||
if header == "metatemplate" then | |||
result = "This template is a metatemplate. It is used to build other templates and should not be used standalone, except for testing or simple usage." | |||
else | |||
result = header | |||
end | |||
end | |||
else | |||
result = "This template is in the wrong namespace. It should be used within the Template or Module namespaces." | |||
end | |||
return string.format(":''%s''", result) | |||
end | end | ||
function p.dochead(frame) | function p.dochead(frame) | ||
local args = getArgs(frame) | local args = getArgs(frame) or {} | ||
-- Get current title | |||
local title = mw.title.getCurrentTitle() | |||
args["namespace"] = args["namespace"] or title.nsText | |||
args["pagename"] = args["pagename" ] or title.text | |||
args["header"] = args["header"] or "noinvoke" | |||
--return p._dochead(args) | |||
return args["header"] | |||
end | end | ||
return p | return p | ||
Revision as of 06:25, 28 October 2025
noinvoke
| Introspection summary for Module:Dochead | |||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
| ||||||||||||||||||||||||
No function descriptions were provided. The Lua code may have further information.
-- This module follows [[User:Ganaram inukshuk/Provisional style guide for Lua]]
local getArgs = require("Module:Arguments").getArgs
local ctg = require("Module:Category handler")._category_handler
local yesno = require("Module:Yesno")
local p = {}
-- Produces a hatnote that is placed on the top of a documentation page (either
-- template or module documentation) and can autodetect and categorize:
-- - FOR MODULES:
-- - whether a module has an accompanying template (overridable)
-- - whether a module is meant as a library for other modules
-- - FOR TEMPLATES:
-- - whether a template has an accompanying module (overridable)
-- - what functions from which modules are invoked
-- Options for specific types of templates and modules include:
-- - (TEMPLATES) whether it's a metatemplate
-- - (MODULES) whether it's a metamodule (used the same way as a metatemplate,
-- but direct use of module code is allowed)
-- Detect whether a page exists, where pagename is "Namespace:Title"
function p.page_exists(fullpagename)
local pagename = pagename or "Template:Dochead"
local title = mw.title.new(pagename)
if title and title.exists then
return true
else
return false
end
end
function p._dochead(args)
local namespace = args["namespace"]
local pagename = args["pagename" ]
local header = args["header" ] or "none"
local corr_template = args["temp" ] or "Template:" .. pagename
local corr_module = args["mod" ] or "Module" .. pagename
-- If header is none, don't bother.
if header == "none" then return "" end
local result = ""
if namespace == "Module" then
if p.page_exists(corr_template) then
if header == "dualuse" then
result = string.format("This module may be invoked by templates by using its corresponding [[%s | template]], or used directly from other modules.", corr_template)
elseif header == "metatemplate" then
result = string.format("This module implements a metatemplate, and may be invoked by templates by using its corresponding [[%s | template]], or used directly from other modules.", corr_template)
elseif header == "noinvoke" then
result = string.format("This module should not be invoked directly; use its corresponding [[%s | template]] instead.", corr_template)
else
result = table.concat({header, string.format("This module implements [[%s]].", corr_template)}, " ")
end
else
if header == "library" or header == "metamodule" then
result = string.format("This module primarily serves as a library for other modules.")
else
result = header
end
end
elseif namespace == "Template" then
if header == "noinvoke" then header = "" end
if p.page_exists(corr_module) then
if header == "metatemplate" then
result = "This template is a metatemplate. It is used to build other templates and should not be used standalone, except for testing or simple usage." .. " " .. string.format("This template is implemented by the Lua module [[%s]].")
else
result = table.concat({header, string.format("This template is implemented by the Lua module [[%s]].")}, " ")
end
else
if header == "metatemplate" then
result = "This template is a metatemplate. It is used to build other templates and should not be used standalone, except for testing or simple usage."
else
result = header
end
end
else
result = "This template is in the wrong namespace. It should be used within the Template or Module namespaces."
end
return string.format(":''%s''", result)
end
function p.dochead(frame)
local args = getArgs(frame) or {}
-- Get current title
local title = mw.title.getCurrentTitle()
args["namespace"] = args["namespace"] or title.nsText
args["pagename"] = args["pagename" ] or title.text
args["header"] = args["header"] or "noinvoke"
--return p._dochead(args)
return args["header"]
end
return p