Module:Template category auto topic

local getArgs = require('Module:Arguments').getArgs

p = {}

local function main(frame)

local args = getArgs(frame)

local title = mw.title.getCurrentTitle()

local pageName = args.demopage or title.text

local formatStr = args[1]

local defaultText = args[2]

local suffixes = {

' infobox templates',

' sidebar templates',

' stub templates',

' user templates',

' category header templates',

-- ' templates', -- just "templates" is disabled, because it generates too many false-negatives

' navigational boxes'

}

-- possible article name

local s = pageName

for _, suffix in pairs(suffixes) do

if s == pageName then

s = string.gsub(pageName, suffix, '', 1)

else

break

end

end

if s == pageName then

-- unknown template category naming convention

return defaultText

end

local article = mw.title.makeTitle('', s)

if article.exists then

return string.format(formatStr, '' .. s .. '')

end

return defaultText

end

p.main = main

return p