<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mywikibiz.com/index.php?action=history&amp;feed=atom&amp;title=Module%3APortal_maintenance_status</id>
	<title>Module:Portal maintenance status - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mywikibiz.com/index.php?action=history&amp;feed=atom&amp;title=Module%3APortal_maintenance_status"/>
	<link rel="alternate" type="text/html" href="https://mywikibiz.com/index.php?title=Module:Portal_maintenance_status&amp;action=history"/>
	<updated>2026-06-14T02:55:53Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.35.3</generator>
	<entry>
		<id>https://mywikibiz.com/index.php?title=Module:Portal_maintenance_status&amp;diff=479013&amp;oldid=prev</id>
		<title>Zoran: Pywikibot 6.4.0</title>
		<link rel="alternate" type="text/html" href="https://mywikibiz.com/index.php?title=Module:Portal_maintenance_status&amp;diff=479013&amp;oldid=prev"/>
		<updated>2021-07-16T05:24:13Z</updated>

		<summary type="html">&lt;p&gt;Pywikibot 6.4.0&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
function cleanupArgs(argsTable)&lt;br /&gt;
	local cleanArgs = {}&lt;br /&gt;
	for key, val in pairs(argsTable) do&lt;br /&gt;
		if type(val) == 'string' then&lt;br /&gt;
			val = val:match('^%s*(.-)%s*$')&lt;br /&gt;
			if val ~= '' then&lt;br /&gt;
				cleanArgs[key] = val&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			cleanArgs[key] = val&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return cleanArgs&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local content = {}&lt;br /&gt;
&lt;br /&gt;
function makeTemplatePattern(template)&lt;br /&gt;
	local first = string.sub(template, 1, 1)&lt;br /&gt;
	local rest = string.sub(template, 2)&lt;br /&gt;
	local pattern = mw.ustring.format('%s[%s%s]%s%s', '%{%{%s*', mw.ustring.upper(first), mw.ustring.lower(first), rest, '%s*|?[^%}]*%}%}')&lt;br /&gt;
	return pattern&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function makeParameterPattern(parameter)&lt;br /&gt;
	return mw.ustring.format('%s%s%s%s', '|%s*', parameter, '%s*=%s*', '([^|%}]*)', '%s*[|%}]')&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function getMatchingTemplateWikitext(content, template, leadOnly)&lt;br /&gt;
	if leadOnly then&lt;br /&gt;
		content = mw.ustring.gsub(content, &amp;quot;%c%s*==.*&amp;quot;,&amp;quot;&amp;quot;) -- remove first ==Heading== and everything after it&lt;br /&gt;
	end&lt;br /&gt;
	for templateWikitext in mw.ustring.gmatch(content, '%b{}') do&lt;br /&gt;
		local isCorrectTemplate = mw.ustring.match(templateWikitext, makeTemplatePattern(template))&lt;br /&gt;
		if isCorrectTemplate then&lt;br /&gt;
			return templateWikitext&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function getSubjectPageContent(contentNamespaceNumber)&lt;br /&gt;
	local namespace = mw.site.namespaces[contentNamespaceNumber] [&amp;quot;name&amp;quot;]&lt;br /&gt;
	local talkTitle = mw.title.getCurrentTitle()&lt;br /&gt;
	if talkTitle.namespace ~= contentNamespaceNumber + 1 then&lt;br /&gt;
		return error('Wrong namespace', 0)&lt;br /&gt;
	end&lt;br /&gt;
	local subjectTitle = mw.title.new(namespace .. &amp;quot;:&amp;quot; .. talkTitle.text)&lt;br /&gt;
	return subjectTitle:getContent()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- historical function&lt;br /&gt;
--   Looks for {{Historical}} on a Wikipedia_talk: page's related project page.&lt;br /&gt;
--   Returns 'yes' if found or '' (empty string) if not found, or an error if used in the wrong namespace.&lt;br /&gt;
p.historical = function(frame)&lt;br /&gt;
	local parent = frame.getParent(frame)&lt;br /&gt;
	local args = cleanupArgs(frame.args)&lt;br /&gt;
	local demo = args.demo and true or false&lt;br /&gt;
	local content&lt;br /&gt;
	if demo then&lt;br /&gt;
		local demoText = mw.ustring.gsub(args.demo, '%{%{%!%}%}', '|')&lt;br /&gt;
		content = '{{' .. demoText .. '}}'&lt;br /&gt;
		if args.demo2 then&lt;br /&gt;
			local demo2Text = mw.ustring.gsub(args.demo2, '%{%{%!%}%}', '|')&lt;br /&gt;
			content= portalContent  .. '{{' .. demo2Text .. '}}'&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		content = getSubjectPageContent(4)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	content = mw.ustring.gsub(content, &amp;quot;&amp;lt;!%-%-.-%-%-&amp;gt;&amp;quot;,&amp;quot;&amp;quot;) -- remove HTML comments&lt;br /&gt;
	content = mw.ustring.gsub(content, &amp;quot;%c%s*==.*&amp;quot;,&amp;quot;&amp;quot;) -- remove first ==Heading== and everything after it&lt;br /&gt;
	content = mw.ustring.gsub(content, &amp;quot;&amp;lt;noinclude&amp;gt;.-&amp;lt;/noinclude&amp;gt;&amp;quot;, &amp;quot;&amp;quot;) -- remove noinclude bits&lt;br /&gt;
&lt;br /&gt;
	local isHistorical = mw.ustring.match(content, makeTemplatePattern('Historical')) and true or false&lt;br /&gt;
	return isHistorical and 'yes' or ''&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- featured function&lt;br /&gt;
--   Looks for {{Featured portal}} on a Portal_talk: page's related portal page.&lt;br /&gt;
--   Returns 'yes' if found or '' (empty string) if not found, or an error if used in the wrong namespace.&lt;br /&gt;
p.featured = function(frame)&lt;br /&gt;
	local parent = frame.getParent(frame)&lt;br /&gt;
	local args = cleanupArgs(frame.args)&lt;br /&gt;
	local demo = args.demo and true or false&lt;br /&gt;
	local content&lt;br /&gt;
	if demo then&lt;br /&gt;
		local demoText = mw.ustring.gsub(args.demo, '%{%{%!%}%}', '|')&lt;br /&gt;
		content = '{{' .. demoText .. '}}'&lt;br /&gt;
		if args.demo2 then&lt;br /&gt;
			local demo2Text = mw.ustring.gsub(args.demo2, '%{%{%!%}%}', '|')&lt;br /&gt;
			content= portalContent  .. '{{' .. demo2Text .. '}}'&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		content = getSubjectPageContent(100)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	content = mw.ustring.gsub(content, &amp;quot;&amp;lt;!%-%-.-%-%-&amp;gt;&amp;quot;,&amp;quot;&amp;quot;) -- remove HTML comments&lt;br /&gt;
	content = mw.ustring.gsub(content, &amp;quot;&amp;lt;noinclude&amp;gt;.-&amp;lt;/noinclude&amp;gt;&amp;quot;, &amp;quot;&amp;quot;) -- remove noinclude bits&lt;br /&gt;
&lt;br /&gt;
	local isFeatured = mw.ustring.match(content, makeTemplatePattern('Featured portal')) and true or false&lt;br /&gt;
	return isFeatured and 'yes' or ''&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- main function&lt;br /&gt;
--   Looks for {{Portal maintenance status}} (or earlier deprecated templates) on a Portal_talk: page's related portal page.&lt;br /&gt;
--   Returns an appropriate message string if found or '' (empty string) if not found, or an error if used in the wrong namespace.&lt;br /&gt;
p.main = function(frame)&lt;br /&gt;
	local parent = frame.getParent(frame)&lt;br /&gt;
	local args = cleanupArgs(frame.args)&lt;br /&gt;
	local demo = args.demo and true or false&lt;br /&gt;
	local portalContent&lt;br /&gt;
	if demo then&lt;br /&gt;
		local demoText = mw.ustring.gsub(args.demo, '%{%{%!%}%}', '|')&lt;br /&gt;
		portalContent = '{{' .. demoText .. '}}'&lt;br /&gt;
		if args.demo2 then&lt;br /&gt;
			local demo2Text = mw.ustring.gsub(args.demo2, '%{%{%!%}%}', '|')&lt;br /&gt;
			portalContent = portalContent  .. '{{' .. demo2Text .. '}}'&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		portalContent = getSubjectPageContent(100)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local status = getMatchingTemplateWikitext(portalContent, 'Portal maintenance status') or getMatchingTemplateWikitext(portalContent, 'Portal flag')&lt;br /&gt;
	if not status then&lt;br /&gt;
		return ''&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local output = mw.ustring.sub(status, 0, -3) .. '|embed=yes}}' &lt;br /&gt;
	return frame:preprocess(output)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Zoran</name></author>
	</entry>
</feed>