local p =
function cleanupArgs(argsTable) local cleanArgs = for key, val in pairs(argsTable) do if type(val)
local content =
function makeTemplatePattern(template) local first = string.sub(template, 1, 1) local rest = string.sub(template, 2) local pattern = mw.ustring.format('%s[%s%s]%s%s', '%%}') return patternend
function makeParameterPattern(parameter) return mw.ustring.format('%s%s%s%s', '|%s*', parameter, '%s*=%s*', '([^|%}]*)', '%s*[|%}]')end
function getMatchingTemplateWikitext(content, template, leadOnly) if leadOnly then content = mw.ustring.gsub(content, "%c%s*
Heading
function getSubjectPageContent(contentNamespaceNumber) local namespace = mw.site.namespaces[contentNamespaceNumber] ["name"] local talkTitle = mw.title.getCurrentTitle if talkTitle.namespace ~= contentNamespaceNumber + 1 then return error('Wrong namespace', 0) end local subjectTitle = mw.title.new(namespace .. ":" .. talkTitle.text) return subjectTitle:getContentend
-- historical function-- Looks for on a Wikipedia_talk: page's related project page.-- Returns 'yes' if found or (empty string) if not found, or an error if used in the wrong namespace.p.historical = function(frame) local parent = frame.getParent(frame) local args = cleanupArgs(frame.args) local demo = args.demo and true or false local content if demo then local demoText = mw.ustring.gsub(args.demo, '%', '|') content = '' if args.demo2 then local demo2Text = mw.ustring.gsub(args.demo2, '%', '|') content= portalContent .. '' end else content = getSubjectPageContent(4) end
content = mw.ustring.gsub(content, "","") -- remove HTML comments content = mw.ustring.gsub(content, "%c%s*
Heading
local isHistorical = mw.ustring.match(content, makeTemplatePattern('Historical')) and true or false return isHistorical and 'yes' or end
-- featured function-- Looks for on a Portal_talk: page's related portal page.-- Returns 'yes' if found or (empty string) if not found, or an error if used in the wrong namespace.p.featured = function(frame) local parent = frame.getParent(frame) local args = cleanupArgs(frame.args) local demo = args.demo and true or false local content if demo then local demoText = mw.ustring.gsub(args.demo, '%', '|') content = '' if args.demo2 then local demo2Text = mw.ustring.gsub(args.demo2, '%', '|') content= portalContent .. '' end else content = getSubjectPageContent(100) end
content = mw.ustring.gsub(content, "","") -- remove HTML comments content = mw.ustring.gsub(content, "
local isFeatured = mw.ustring.match(content, makeTemplatePattern('Featured portal')) and true or false return isFeatured and 'yes' or end
-- main function-- Looks for (or earlier deprecated templates) on a Portal_talk: page's related portal page.-- Returns an appropriate message string if found or (empty string) if not found, or an error if used in the wrong namespace.p.main = function(frame) local parent = frame.getParent(frame) local args = cleanupArgs(frame.args) local demo = args.demo and true or false local portalContent if demo then local demoText = mw.ustring.gsub(args.demo, '%', '|') portalContent = '' if args.demo2 then local demo2Text = mw.ustring.gsub(args.demo2, '%', '|') portalContent = portalContent .. '' end else portalContent = getSubjectPageContent(100) end
local status = getMatchingTemplateWikitext(portalContent, 'Portal maintenance status') or getMatchingTemplateWikitext(portalContent, 'Portal flag') if not status then return end
local output = mw.ustring.sub(status, 0, -3) .. '|embed=yes}}' return frame:preprocess(output)end
return p