Module:Dochead: Difference between revisions

Ganaram inukshuk (talk | contribs)
implement headers; no categorizing code yet
Ganaram inukshuk (talk | contribs)
No edit summary
Line 1: Line 1:
-- This module follows [[User:Ganaram inukshuk/Provisional style guide for Lua]]
-- This module follows [[User:Ganaram inukshuk/Provisional style guide for Lua]]
local getArgs = require("Module:Arguments").getArgs
local getArgs = require("Module:Arguments").getArgs
local ctg    = require("Module:Category handler")._category_handler
local yesno  = require("Module:Yesno")


local p = {}
local p = {}
Line 22: Line 20:
-- Detect whether a page exists, where pagename is "Namespace:Title"
-- Detect whether a page exists, where pagename is "Namespace:Title"
function p.page_exists(fullpagename)
function p.page_exists(fullpagename)
local pagename = pagename or "Template:Dochead"
local title = mw.title.new(fullpagename)
local title = mw.title.new(pagename)
if title and title.exists then
if title and title.exists then
Line 30: Line 27:
return false
return false
end
end
end
function p.categorize(namespace, pagename, is_lua_based_template)
local is_lua_based_template = is_lua_based_template or false
if pagename:sub(-4) == "/doc" then
-- Page is a documentation subpage
if namespace == "Template" then
return "[[Category:Template documentation]]"
elseif namespace == "Module" then
return "[[Category:Module documentation]]"
end
else
-- Page is either a template or module page
if namespace == "Template" then
return "[[Category:Templates]]" .. (is_lua_based_template and [[Category:Lua-based templates]] or "")
elseif namespace == "Module" then
return "[[Category:Lua modules]]"
end
end
return ""
end
end


Line 36: Line 55:
local pagename  = args["pagename" ]
local pagename  = args["pagename" ]
local header    = args["header"  ] or "none"
local header    = args["header"  ] or "none"
local corr_template = args["temp"   ] or "Template:" .. pagename
local corr_template = args["temp"] or "Template:" .. pagename
local corr_module  = args["mod"   ] or "Module"   .. pagename
local corr_module  = args["mod" ] or "Module:"   .. pagename
-- If header is none, don't bother.
-- If header is none, don't bother.
if header == "none" then return "" end
if header == "none" then return "" .. p.categorize(namespace, pagename) end
local result = ""
local result = ""
Line 46: Line 65:
if p.page_exists(corr_template) then
if p.page_exists(corr_template) then
if header == "library" or header == "metamodule" then header = "" end
if header == "dualuse" 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)
result = string.format("This module may be invoked by templates by using its corresponding [[%s | template]], or used directly from other modules.", corr_template)
Line 56: Line 77:
end
end
else
else
if header == "dualuse" or header == "metatemplate" or header == "noinvoke" then header = "" end
if header == "library" or header == "metamodule" then
if header == "library" or header == "metamodule" then
result = string.format("This module primarily serves as a library for other modules.")
result = string.format("This module primarily serves as a library for other modules.")
Line 62: Line 85:
end
end
end
end
result = result .. p.categorize(namespace, pagename, p.page_exists(corr_template))
elseif namespace == "Template" then
elseif namespace == "Template" then
Line 79: Line 104:
end
end
end
end
result = result .. p.categorize(namespace, pagename, p.page_exists(corr_module))
else
else
Line 94: Line 121:
args["namespace"] = args["namespace"] or title.nsText
args["namespace"] = args["namespace"] or title.nsText
args["pagename"] = args["pagename" ] or title.text
args["pagename" ] = args["pagename" ] or title.text
args["header"] = args["header"] or "noinvoke"
args["header"   ] = args["header"   ] or "noinvoke"
args["temp"] = args["temp"] or args["pagename"]
args["mod" ] = args["mod" ] or args["pagename"]
--return p._dochead(args)
return p._dochead(args)
return args["header"]
--return args["pagename"]
end
end


return p
return p