<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl">
	<id>https://wiki.idzie.xn--t-wha.xn--drog-eta.pl/index.php?action=history&amp;feed=atom&amp;title=Modu%C5%82%3ASprawd%C5%BA</id>
	<title>Moduł:Sprawdź - Historia wersji</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.idzie.xn--t-wha.xn--drog-eta.pl/index.php?action=history&amp;feed=atom&amp;title=Modu%C5%82%3ASprawd%C5%BA"/>
	<link rel="alternate" type="text/html" href="https://wiki.idzie.xn--t-wha.xn--drog-eta.pl/index.php?title=Modu%C5%82:Sprawd%C5%BA&amp;action=history"/>
	<updated>2026-07-10T13:20:36Z</updated>
	<subtitle>Historia wersji tej strony wiki</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://wiki.idzie.xn--t-wha.xn--drog-eta.pl/index.php?title=Modu%C5%82:Sprawd%C5%BA&amp;diff=3477&amp;oldid=prev</id>
		<title>Żółty Kapłan: 1 wersja</title>
		<link rel="alternate" type="text/html" href="https://wiki.idzie.xn--t-wha.xn--drog-eta.pl/index.php?title=Modu%C5%82:Sprawd%C5%BA&amp;diff=3477&amp;oldid=prev"/>
		<updated>2026-01-14T21:45:47Z</updated>

		<summary type="html">&lt;p&gt;1 wersja&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;pl&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← poprzednia wersja&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Wersja z 23:45, 14 sty 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;4&quot; class=&quot;diff-notice&quot; lang=&quot;pl&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(Brak różnic)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key wiki_droga:diff:1.41:old-3476:rev-3477 --&gt;
&lt;/table&gt;</summary>
		<author><name>Żółty Kapłan</name></author>
	</entry>
	<entry>
		<id>https://wiki.idzie.xn--t-wha.xn--drog-eta.pl/index.php?title=Modu%C5%82:Sprawd%C5%BA&amp;diff=3476&amp;oldid=prev</id>
		<title>wpl&gt;Nux: #invoke:Sprawdź|dodaj ostrzeżenie|Niepoprawna data</title>
		<link rel="alternate" type="text/html" href="https://wiki.idzie.xn--t-wha.xn--drog-eta.pl/index.php?title=Modu%C5%82:Sprawd%C5%BA&amp;diff=3476&amp;oldid=prev"/>
		<updated>2026-01-11T22:07:55Z</updated>

		<summary type="html">&lt;p&gt;#invoke:Sprawdź|dodaj ostrzeżenie|Niepoprawna data&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;pl&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← poprzednia wersja&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Wersja z 00:07, 12 sty 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l801&quot;&gt;Linia 801:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Linia 801:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	end,&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	end,&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;	[&quot;dodaj ostrzeżenie&quot;] = function(frame)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		local msg = frame.args[1]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		-- wyświetl niepuste info przy edycji&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		if msg and msg:match(&quot;%S&quot;) then&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;			mw.addWarning(msg)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		end&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		return &#039;&#039;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;	end,&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;	&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	[&amp;quot;pole z hostem&amp;quot;] = function (frame)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	[&amp;quot;pole z hostem&amp;quot;] = function (frame)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		local host = frame.args.host&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		local host = frame.args.host&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key wiki_droga:diff:1.41:old-755:rev-3476:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>wpl&gt;Nux</name></author>
	</entry>
	<entry>
		<id>https://wiki.idzie.xn--t-wha.xn--drog-eta.pl/index.php?title=Modu%C5%82:Sprawd%C5%BA&amp;diff=755&amp;oldid=prev</id>
		<title>Żółty Kapłan: 1 wersja</title>
		<link rel="alternate" type="text/html" href="https://wiki.idzie.xn--t-wha.xn--drog-eta.pl/index.php?title=Modu%C5%82:Sprawd%C5%BA&amp;diff=755&amp;oldid=prev"/>
		<updated>2025-12-07T22:28:26Z</updated>

		<summary type="html">&lt;p&gt;1 wersja&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;pl&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← poprzednia wersja&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Wersja z 00:28, 8 gru 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;4&quot; class=&quot;diff-notice&quot; lang=&quot;pl&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(Brak różnic)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key wiki_droga:diff:1.41:old-754:rev-755 --&gt;
&lt;/table&gt;</summary>
		<author><name>Żółty Kapłan</name></author>
	</entry>
	<entry>
		<id>https://wiki.idzie.xn--t-wha.xn--drog-eta.pl/index.php?title=Modu%C5%82:Sprawd%C5%BA&amp;diff=754&amp;oldid=prev</id>
		<title>wpl&gt;Nux: export isDate20YYMM</title>
		<link rel="alternate" type="text/html" href="https://wiki.idzie.xn--t-wha.xn--drog-eta.pl/index.php?title=Modu%C5%82:Sprawd%C5%BA&amp;diff=754&amp;oldid=prev"/>
		<updated>2025-08-24T16:10:09Z</updated>

		<summary type="html">&lt;p&gt;export isDate20YYMM&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nowa strona&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local function checkUri(uri)&lt;br /&gt;
	local urilen = #uri&lt;br /&gt;
	for _,v in ipairs(mw.loadData(&amp;quot;Moduł:Cytuj/dane&amp;quot;).supportedUriSchemas) do&lt;br /&gt;
		if (#v &amp;lt; urilen) and (string.lower(string.sub(uri,1, #v)) == v) then&lt;br /&gt;
			return not string.match(uri, &amp;#039;%s&amp;#039;)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function checkImageName(name)&lt;br /&gt;
	if not name or (#name==0) or string.match(name, &amp;quot;[#&amp;lt;&amp;gt;%[%]|{}]&amp;quot;) then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local title = mw.title.makeTitle(&amp;quot;Plik&amp;quot;, name)&lt;br /&gt;
	if not title then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local res = {&lt;br /&gt;
		prefix = {&lt;br /&gt;
			plik = true,&lt;br /&gt;
			image = true,&lt;br /&gt;
			grafika = true,&lt;br /&gt;
			file = true,&lt;br /&gt;
		},&lt;br /&gt;
		extension = {&lt;br /&gt;
			jpg = true,&lt;br /&gt;
			jpeg = true,&lt;br /&gt;
			jpe = true,&lt;br /&gt;
			png = true,&lt;br /&gt;
			svg = true,&lt;br /&gt;
			tif = true,&lt;br /&gt;
			tiff = true,&lt;br /&gt;
			gif = true,&lt;br /&gt;
			xcf = true,&lt;br /&gt;
			pdf = true,&lt;br /&gt;
			djvu = true,&lt;br /&gt;
			webp = true,&lt;br /&gt;
		},&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	local prefix = string.match(name, &amp;quot;^:? *([^:]+) *:&amp;quot;)&lt;br /&gt;
	if prefix and res.prefix[string.lower(prefix)] then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local extension = string.match(name, &amp;quot;%S.*%.([^%.]+)$&amp;quot;)&lt;br /&gt;
	return extension and res.extension[string.lower(extension)]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function findPlainHttp(text)&lt;br /&gt;
	if text then&lt;br /&gt;
		text = mw.ustring.gsub(text, &amp;quot;%[[hH][tT][tT][pP][sS]?://%S+&amp;quot;, &amp;quot;_&amp;quot;)&lt;br /&gt;
		return string.match(text, &amp;quot;[hH][tT][tT][pP][sS]?://%S&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function findAnyHttp(text)&lt;br /&gt;
	if text then&lt;br /&gt;
		return string.match(text, &amp;quot;[hH][tT][tT][pP][sS]?://%S&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function findFile(text)&lt;br /&gt;
	-- schowaj wyjątek: obrazek generowany przez Szablon:Link-interwiki&lt;br /&gt;
	text = mw.ustring.gsub(text, &amp;quot;%[%[Plik:Wikidata%-logo%-en%.svg|10x9px|link=:d:Q%d+|Informacje powiązane z artykułem „.-” w Wikidanych%]%]&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
	-- normalize&lt;br /&gt;
	text = mw.ustring.gsub(text, &amp;quot;%s*[Pp]lik%s*:%s*&amp;quot;, &amp;quot;Plik:&amp;quot;)&lt;br /&gt;
	text = mw.ustring.gsub(text, &amp;quot;%s*[Ff]ile%s*:%s*&amp;quot;, &amp;quot;Plik:&amp;quot;)&lt;br /&gt;
	text = mw.ustring.gsub(text, &amp;quot;%s*[Gg]rafika%s*:%s*&amp;quot;, &amp;quot;Plik:&amp;quot;)&lt;br /&gt;
	text = mw.ustring.gsub(text, &amp;quot;%s*[Ii]mage%s*:%s*&amp;quot;, &amp;quot;Plik:&amp;quot;)&lt;br /&gt;
	return mw.ustring.match(text, &amp;quot;%[%[Plik:([^%[%]|]+)[|%]]&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Lista of template params for wikicode. Like this:&lt;br /&gt;
-- | grafika = | data śmierci = | www = &lt;br /&gt;
local function listToTplParams(strArray)&lt;br /&gt;
	return &amp;quot;| &amp;quot; .. table.concat(strArray, &amp;quot; = | &amp;quot;) .. &amp;quot; =&amp;quot;;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function showTemplate(templateName, args)&lt;br /&gt;
	local result = {}&lt;br /&gt;
	local flags = {}&lt;br /&gt;
	table.insert(result, mw.text.nowiki(&amp;quot;{{&amp;quot;))&lt;br /&gt;
	if mw.isSubsting() then&lt;br /&gt;
		table.insert(result, &amp;quot;subst:&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local title = mw.title.new(templateName)&lt;br /&gt;
	if not args then&lt;br /&gt;
		table.insert(result, &amp;quot;[[&amp;quot;)&lt;br /&gt;
		table.insert(result, title.nsText)&lt;br /&gt;
		table.insert(result, &amp;quot;:&amp;quot;)&lt;br /&gt;
		table.insert(result, title.text)&lt;br /&gt;
		table.insert(result, &amp;quot;|&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if title.namespace ~= 10 then&lt;br /&gt;
		table.insert(result, title.nsText)&lt;br /&gt;
		table.insert(result, &amp;quot;:&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	table.insert(result, title.text)&lt;br /&gt;
	if not args then&lt;br /&gt;
		table.insert(result, &amp;quot;]]&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if args then&lt;br /&gt;
		local i = 1&lt;br /&gt;
		while args[i] do&lt;br /&gt;
			table.insert(result, &amp;quot;|&amp;quot;)&lt;br /&gt;
			table.insert(result, mw.text.nowiki(args[i]))&lt;br /&gt;
			i = i + 1&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		for k, v in pairs(args) do&lt;br /&gt;
			local index = tonumber(k)&lt;br /&gt;
			if (type(k) == &amp;quot;string&amp;quot;) or (index and ((index &amp;lt; 1) or (index &amp;gt; i))) then&lt;br /&gt;
				table.insert(result, &amp;quot;|&amp;quot;)&lt;br /&gt;
				table.insert(result, tostring(k))&lt;br /&gt;
				table.insert(result, &amp;quot;=&amp;quot;)&lt;br /&gt;
				table.insert(result, mw.text.nowiki(v))&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	table.insert(result, mw.text.nowiki(&amp;quot;}}&amp;quot;))&lt;br /&gt;
	return table.concat(result)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function infoboxCatTitle(infobox, class)&lt;br /&gt;
	local catTitle = mw.title.makeTitle(14, &amp;quot;Infoboksy – &amp;quot;..class..&amp;quot; – &amp;quot;..infobox)&lt;br /&gt;
	if not catTitle.exists then&lt;br /&gt;
		mw.logObject(catTitle, &amp;quot;Dedykowana kategoria błędów w infoboksie nie istnieje&amp;quot;)&lt;br /&gt;
		catTitle = mw.title.makeTitle(14, &amp;quot;Infoboksy – &amp;quot;..class)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	mw.logObject(catTitle, &amp;quot;infoboxCatTitle&amp;quot;)&lt;br /&gt;
	return catTitle&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function isLeapYear(year)&lt;br /&gt;
	return (year % 4 == 0) and ((year % 100 ~= 0) or (year % 400 == 0))&lt;br /&gt;
end&lt;br /&gt;
local function daysInMonth(year, month)&lt;br /&gt;
	-- nieprawidłowy miesiąc&lt;br /&gt;
	if month &amp;lt; 1 or month &amp;gt; 12 then return 0 end&lt;br /&gt;
	&lt;br /&gt;
	if month == 2 then return isLeapYear(year) and 29 or 28 end&lt;br /&gt;
	if month == 4 or month == 6 or month == 9 or month == 11 then&lt;br /&gt;
		return 30&lt;br /&gt;
	end&lt;br /&gt;
	return 31&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function isDate20YYMMDD(date)&lt;br /&gt;
	local y, m, d = string.match(date, &amp;quot;^(20[0-9][0-9])%-([01][0-9])%-([0123][0-9])$&amp;quot;)&lt;br /&gt;
	local year = tonumber(y)&lt;br /&gt;
	local month = tonumber(m)&lt;br /&gt;
	local day = tonumber(d)&lt;br /&gt;
	local result = year and month and day&lt;br /&gt;
		and (year &amp;gt;= 2001)&lt;br /&gt;
		and (month &amp;gt;= 1) and (month &amp;lt;= 12)&lt;br /&gt;
		and (day &amp;gt;= 1) and (day &amp;lt;= daysInMonth(year, month))&lt;br /&gt;
	if not result then&lt;br /&gt;
		mw.logObject({date=date,year=year,month=month,day=day}, &amp;quot;isDate20YYMMDD&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	return result&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function isDate20YYMM(date)&lt;br /&gt;
	local y, m = string.match(date, &amp;quot;^(20[0-9][0-9])%-([01][0-9])$&amp;quot;)&lt;br /&gt;
	local year = tonumber(y)&lt;br /&gt;
	local month = tonumber(m)&lt;br /&gt;
	local result = year and month&lt;br /&gt;
		and (year &amp;gt;= 2001)&lt;br /&gt;
		and (month &amp;gt;= 1) and (month &amp;lt;= 12)&lt;br /&gt;
	return result&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return {&lt;br /&gt;
	[&amp;quot;isDate20YYMM&amp;quot;] = isDate20YYMM,&lt;br /&gt;
	-- spr. czy data ma format YYYY-MM&lt;br /&gt;
	-- i czy jest poprawną datą po powstaniu Wikipedii&lt;br /&gt;
	[&amp;quot;DataWikiYM&amp;quot;] = function(frame)&lt;br /&gt;
		local date = mw.text.trim(frame.args[1] or frame.args.spr)&lt;br /&gt;
		local onInvalid = frame.args[2] or frame.args.niepoprawna or &amp;quot;&amp;quot;&lt;br /&gt;
		local onOK = frame.args[3] or frame.args.ok or date&lt;br /&gt;
		if not isDate20YYMM(date) then&lt;br /&gt;
			mw.addWarning( &amp;quot;Nieprawidłowa data: &amp;quot; .. date )&lt;br /&gt;
			mw.log( &amp;quot;Nieprawidłowa data: &amp;quot; .. date )&lt;br /&gt;
			return onInvalid&lt;br /&gt;
		end&lt;br /&gt;
		return onOK&lt;br /&gt;
	end,&lt;br /&gt;
	-- j/w, ale spr. formatu YYYY-MM-DD&lt;br /&gt;
	[&amp;quot;DataWikiYMD&amp;quot;] = function(frame)&lt;br /&gt;
		local date = mw.text.trim(frame.args[1] or frame.args.spr)&lt;br /&gt;
		local onInvalid = frame.args[2] or frame.args.niepoprawna or &amp;quot;&amp;quot;&lt;br /&gt;
		local onOK = frame.args[3] or frame.args.ok or date&lt;br /&gt;
		if not isDate20YYMMDD(date) then&lt;br /&gt;
			mw.addWarning( &amp;quot;Nieprawidłowa data: &amp;quot; .. date )&lt;br /&gt;
			mw.log( &amp;quot;Nieprawidłowa data: &amp;quot; .. date )&lt;br /&gt;
			return onInvalid&lt;br /&gt;
		end&lt;br /&gt;
		return onOK&lt;br /&gt;
	end,&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;Porównaj&amp;quot;] = function(frame)&lt;br /&gt;
		local config = frame:getParent().args[&amp;quot;&amp;quot;] or &amp;quot;&amp;quot;&lt;br /&gt;
		local options = mw.text.split(config, &amp;quot;|&amp;quot;)&lt;br /&gt;
		local templateName = mw.text.trim(options[1])&lt;br /&gt;
		if #templateName == 0 then&lt;br /&gt;
			local title = mw.title.getCurrentTitle()&lt;br /&gt;
			if title.namespace == 10 then&lt;br /&gt;
				templateName = mw.ustring.match(title.text, &amp;quot;^(.-)/opis&amp;quot;)&lt;br /&gt;
					or mw.ustring.match(title.text, &amp;quot;^(.-)/test&amp;quot;)&lt;br /&gt;
					or mw.ustring.match(title.text, &amp;quot;^(.-)/brudnopis&amp;quot;)&lt;br /&gt;
					or title.text&lt;br /&gt;
			end&lt;br /&gt;
			if #templateName == 0 then&lt;br /&gt;
				mw.log(&amp;quot;brak nazwy szablonu&amp;quot;)&lt;br /&gt;
				return&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	&lt;br /&gt;
		local templateTitle = mw.title.new(templateName, 10)&lt;br /&gt;
		if templateTitle.id == 0 then&lt;br /&gt;
			mw.log(&amp;quot;szablon &amp;#039;&amp;quot;..templateName..&amp;quot;&amp;#039; nie istnieje&amp;quot;)&lt;br /&gt;
			return&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		local sandboxName = templateName..&amp;quot;/brudnopis&amp;quot;&lt;br /&gt;
		local sandboxTitle = mw.title.new(sandboxName, 10)&lt;br /&gt;
		if sandboxTitle.id == 0 then&lt;br /&gt;
			mw.log(&amp;quot;brudnopis &amp;#039;&amp;quot;..sandboxName..&amp;quot;&amp;#039; nie istnieje&amp;quot;)&lt;br /&gt;
			return&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		local i = 2&lt;br /&gt;
		local showparams = true&lt;br /&gt;
		local showinfo = true&lt;br /&gt;
		local vertical = false&lt;br /&gt;
		while i &amp;lt;= #options do&lt;br /&gt;
			local option = mw.text.trim(options[i])&lt;br /&gt;
			if option == &amp;quot;bez wikikodu&amp;quot; then&lt;br /&gt;
				showparams = false&lt;br /&gt;
			elseif option == &amp;quot;bez opisu&amp;quot; then&lt;br /&gt;
				showinfo = false&lt;br /&gt;
			elseif option == &amp;quot;pionowo&amp;quot; then&lt;br /&gt;
				vertical = true&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			i = i + 1&lt;br /&gt;
		end&lt;br /&gt;
	&lt;br /&gt;
		local templateParams = {}&lt;br /&gt;
		local params = {}&lt;br /&gt;
		for k, v in pairs(frame:getParent().args) do&lt;br /&gt;
			if k ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				templateParams[k] = v&lt;br /&gt;
				table.insert(params, k)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	&lt;br /&gt;
		local result = {}&lt;br /&gt;
		table.insert(result, &amp;#039;&amp;lt;table style=&amp;quot;width: 100%;&amp;quot;&amp;gt;&amp;#039;)&lt;br /&gt;
		&lt;br /&gt;
		if showparams and (#params &amp;gt; 0) then&lt;br /&gt;
			local compare = function(a, b)&lt;br /&gt;
				-- return a &amp;lt; b&lt;br /&gt;
				if (type(a) == &amp;quot;number&amp;quot;) and (type(b) == &amp;quot;number&amp;quot;) then&lt;br /&gt;
					return a &amp;lt; b&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				if (type(a) == &amp;quot;string&amp;quot;) and (type(b) == &amp;quot;string&amp;quot;) then&lt;br /&gt;
					return a &amp;lt; b&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				if (type(a) == &amp;quot;number&amp;quot;) and (type(b) == &amp;quot;string&amp;quot;) then&lt;br /&gt;
					return true&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				return false&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			table.sort(params, compare)&lt;br /&gt;
			table.insert(result, &amp;quot;&amp;lt;caption&amp;gt;&amp;lt;code&amp;gt;&amp;amp;#x7B;&amp;amp;#x7B;&amp;quot;)&lt;br /&gt;
			table.insert(result, templateName)&lt;br /&gt;
			for i, k in ipairs(params) do&lt;br /&gt;
				table.insert(result, &amp;quot; &amp;amp;#x7C; &amp;quot;)&lt;br /&gt;
				local p = mw.text.nowiki(tostring(k))&lt;br /&gt;
				local v = mw.text.nowiki(templateParams[k])&lt;br /&gt;
				table.insert(result, p)&lt;br /&gt;
				table.insert(result, &amp;quot; = &amp;quot;)&lt;br /&gt;
				table.insert(result, v)&lt;br /&gt;
			end&lt;br /&gt;
			table.insert(result, &amp;quot;&amp;amp;#x7D;&amp;amp;#x7D;&amp;lt;/code&amp;gt;&amp;lt;/caption&amp;gt;&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		local templateResult = frame:expandTemplate{ title=templateName, args=templateParams}&lt;br /&gt;
		local sandboxResult = frame:expandTemplate{ title=sandboxName, args=templateParams}&lt;br /&gt;
		&lt;br /&gt;
		if templateResult and string.match(templateResult, &amp;quot;^{|&amp;quot;) then&lt;br /&gt;
			templateResult = &amp;quot;\n&amp;quot;..templateResult&lt;br /&gt;
		end&lt;br /&gt;
		if sandboxResult and string.match(sandboxResult, &amp;quot;^{|&amp;quot;) then&lt;br /&gt;
			sandboxResult = &amp;quot;\n&amp;quot;..sandboxResult&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if vertical and showinfo then&lt;br /&gt;
			table.insert(result, &amp;#039;&amp;lt;tr&amp;gt;&amp;lt;th style=&amp;quot;width: 15em&amp;quot;&amp;gt;[[Szablon:&amp;#039;)&lt;br /&gt;
			table.insert(result, templateName)&lt;br /&gt;
			table.insert(result, &amp;#039;|Szablon]]&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;&amp;#039;)&lt;br /&gt;
			table.insert(result, templateResult)&lt;br /&gt;
			table.insert(result, &amp;#039;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;[[Szablon:&amp;#039;)&lt;br /&gt;
			table.insert(result, sandboxName)&lt;br /&gt;
			table.insert(result, &amp;#039;|Brudnopis szablonu]]&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;&amp;#039;)&lt;br /&gt;
			table.insert(result, sandboxResult)&lt;br /&gt;
			table.insert(result, &amp;#039;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;#039;)&lt;br /&gt;
		elseif vertical then&lt;br /&gt;
			table.insert(result, &amp;#039;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;#039;)&lt;br /&gt;
			table.insert(result, templateResult)&lt;br /&gt;
			table.insert(result, &amp;#039;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;#039;)&lt;br /&gt;
			table.insert(result, sandboxResult)&lt;br /&gt;
			table.insert(result, &amp;#039;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;#039;)&lt;br /&gt;
		else&lt;br /&gt;
			if showinfo then&lt;br /&gt;
				table.insert(result, &amp;#039;&amp;lt;tr&amp;gt;&amp;lt;th style=&amp;quot;width: 50%;&amp;quot;&amp;gt;[[Szablon:&amp;#039;)&lt;br /&gt;
				table.insert(result, templateName)&lt;br /&gt;
				table.insert(result, &amp;#039;|Szablon]]&amp;lt;/th&amp;gt;&amp;lt;th style=&amp;quot;width: 50%;&amp;quot;&amp;gt;[[Szablon:&amp;#039;)&lt;br /&gt;
				table.insert(result, sandboxName)&lt;br /&gt;
				table.insert(result, &amp;#039;|Brudnopis szablonu]]&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&amp;#039;)&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			table.insert(result, &amp;#039;&amp;lt;tr style=&amp;quot;vertical-align: top;&amp;quot;&amp;gt;&amp;lt;td&amp;gt;&amp;#039;)&lt;br /&gt;
			table.insert(result, templateResult)&lt;br /&gt;
			table.insert(result, &amp;#039;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;#039;)&lt;br /&gt;
			table.insert(result, sandboxResult)&lt;br /&gt;
			table.insert(result, &amp;#039;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;#039;)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		table.insert(result, &amp;quot;&amp;lt;/table&amp;gt;&amp;quot;)&lt;br /&gt;
		return table.concat(result)&lt;br /&gt;
	end,&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;Parametry&amp;quot;] = function(frame)&lt;br /&gt;
		if mw.title.getCurrentTitle().contentModel ~= &amp;quot;wikitext&amp;quot; then&lt;br /&gt;
			mw.logObject(mw.title.getCurrentTitle().contentModel, &amp;quot;mw.title.getCurrentTitle().contentModel&amp;quot;)&lt;br /&gt;
			return -- to nie ma sensu w takim wypadku&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local unknown = {}&lt;br /&gt;
		local invalid = {}&lt;br /&gt;
		local deprecated = {}&lt;br /&gt;
		local nakedurl = {}&lt;br /&gt;
		local files = {}&lt;br /&gt;
		local exturl = {}&lt;br /&gt;
		local templateName = frame:getParent():getTitle()&lt;br /&gt;
		local infobox = mw.ustring.match(templateName, &amp;quot;^Szablon:(.- infobox)$&amp;quot;)&lt;br /&gt;
		local config = frame.args[&amp;quot;&amp;quot;]&lt;br /&gt;
		local class, space, category = string.match(config or &amp;quot;&amp;quot;, &amp;quot;^%s*(%S+)(%s+)(.-)%s*$&amp;quot;)&lt;br /&gt;
		local nl = space and string.match(space, &amp;quot;\n&amp;quot;) or &amp;quot;&amp;quot;&lt;br /&gt;
		class = class or config&lt;br /&gt;
&lt;br /&gt;
		local function argName(arg)&lt;br /&gt;
			return type(arg) ~= &amp;quot;string&amp;quot; and tostring(arg) or (&amp;#039;&amp;quot;&amp;#039;..arg..&amp;#039;&amp;quot;&amp;#039;)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		local required = {}&lt;br /&gt;
		for k, v in pairs(frame.args) do&lt;br /&gt;
			if mw.ustring.match(v, &amp;quot;!$&amp;quot;) then&lt;br /&gt;
				required[k] = true&lt;br /&gt;
				if infobox then&lt;br /&gt;
					-- odróżniaj pola sugerowane w infoboksach, które mogą być puste&lt;br /&gt;
					if v == &amp;quot;!&amp;quot; or mw.ustring.match(v, &amp;quot;%?!$&amp;quot;) then&lt;br /&gt;
						required[k] = false&lt;br /&gt;
					else&lt;br /&gt;
						local pattern = string.match(v,&amp;quot;^(^.-$)!?$&amp;quot;)&lt;br /&gt;
						if pattern and mw.ustring.match(&amp;quot;&amp;quot;, pattern) then&lt;br /&gt;
							required[k] = false&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		local emptyArg = false&lt;br /&gt;
		for k, v in pairs(frame:getParent().args) do&lt;br /&gt;
			required[k] = nil&lt;br /&gt;
			local kind = frame.args[k]&lt;br /&gt;
			if kind == &amp;quot;&amp;quot; or kind == &amp;quot;!&amp;quot; then&lt;br /&gt;
				kind = &amp;quot;text?&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
				&lt;br /&gt;
			if k == &amp;quot;&amp;quot; then&lt;br /&gt;
				emptyArg = v&lt;br /&gt;
			elseif not kind then&lt;br /&gt;
				table.insert(unknown, argName(k))&lt;br /&gt;
			elseif (kind == &amp;quot;num&amp;quot;) or (kind == &amp;quot;num!&amp;quot;) then&lt;br /&gt;
				local n = tonumber(v)&lt;br /&gt;
				if not n then table.insert(invalid, argName(k)) end&lt;br /&gt;
			elseif (kind == &amp;quot;num?&amp;quot;) or (kind == &amp;quot;num?!&amp;quot;) then&lt;br /&gt;
				local n = (#v == 0) or tonumber(v)&lt;br /&gt;
				if not n then table.insert(invalid, argName(k)) end&lt;br /&gt;
			elseif (kind == &amp;quot;grafika&amp;quot;) or (kind == &amp;quot;grafika!&amp;quot;) then&lt;br /&gt;
				if findPlainHttp(v) then&lt;br /&gt;
					table.insert(nakedurl, argName(k))&lt;br /&gt;
				else&lt;br /&gt;
					local g = checkImageName(v)&lt;br /&gt;
					if not g then table.insert(invalid, argName(k)) end&lt;br /&gt;
				end&lt;br /&gt;
			elseif (kind == &amp;quot;grafika?&amp;quot;) or (kind == &amp;quot;grafika?!&amp;quot;) then&lt;br /&gt;
				if findPlainHttp(v) then&lt;br /&gt;
					table.insert(nakedurl, argName(k))&lt;br /&gt;
				else&lt;br /&gt;
					local g = (#v == 0) or checkImageName(v)&lt;br /&gt;
					if not g then table.insert(invalid, argName(k)) end&lt;br /&gt;
				end&lt;br /&gt;
			elseif (kind == &amp;quot;uri&amp;quot;) or (kind == &amp;quot;uri!&amp;quot;) then&lt;br /&gt;
				local u = checkUri(v)&lt;br /&gt;
				if not u then table.insert(invalid, argName(k)) end&lt;br /&gt;
			elseif (kind == &amp;quot;uri?&amp;quot;) or (kind == &amp;quot;uri?!&amp;quot;) then&lt;br /&gt;
				local u = (#v == 0) or checkUri(v)&lt;br /&gt;
				if not u then table.insert(invalid, argName(k)) end&lt;br /&gt;
			elseif (kind == &amp;quot;all&amp;quot;) or (kind == &amp;quot;all!&amp;quot;) or (kind == &amp;quot;txt&amp;quot;) or (kind == &amp;quot;txt!&amp;quot;) then&lt;br /&gt;
				if #v == 0 then&lt;br /&gt;
					table.insert(invalid, argName(k))&lt;br /&gt;
				elseif checkUri(v) then&lt;br /&gt;
					table.insert(nakedurl, argName(k))&lt;br /&gt;
				elseif findPlainHttp(v) then&lt;br /&gt;
					table.insert(nakedurl, argName(k))&lt;br /&gt;
				end&lt;br /&gt;
			elseif (kind == &amp;quot;text&amp;quot;) or (kind == &amp;quot;text!&amp;quot;) or (kind == &amp;quot;text?&amp;quot;) then&lt;br /&gt;
				if ((kind ~= &amp;quot;text?&amp;quot;) and (#v == 0)) then&lt;br /&gt;
					table.insert(invalid, argName(k))&lt;br /&gt;
				elseif findFile(v) then&lt;br /&gt;
					table.insert(files, argName(k))&lt;br /&gt;
				elseif checkUri(v) then&lt;br /&gt;
					table.insert(nakedurl, argName(k))&lt;br /&gt;
				elseif findPlainHttp(v) then&lt;br /&gt;
					table.insert(nakedurl, argName(k))&lt;br /&gt;
				elseif findAnyHttp(v) then&lt;br /&gt;
					table.insert(exturl, argName(k))&lt;br /&gt;
				end&lt;br /&gt;
			elseif (kind == &amp;quot;text-img&amp;quot;) or (kind == &amp;quot;text-img!&amp;quot;) or (kind == &amp;quot;text-img?&amp;quot;) then&lt;br /&gt;
				if ((kind ~= &amp;quot;text-img?&amp;quot;) and (#v == 0)) then&lt;br /&gt;
					table.insert(invalid, argName(k))&lt;br /&gt;
				elseif checkUri(v) then&lt;br /&gt;
					table.insert(nakedurl, argName(k))&lt;br /&gt;
				elseif findPlainHttp(v) then&lt;br /&gt;
					table.insert(nakedurl, argName(k))&lt;br /&gt;
				elseif findAnyHttp(v) then&lt;br /&gt;
					table.insert(exturl, argName(k))&lt;br /&gt;
				end&lt;br /&gt;
			elseif (kind == &amp;quot;text-link&amp;quot;) or (kind == &amp;quot;text-link!&amp;quot;) or (kind == &amp;quot;text-link?&amp;quot;) then&lt;br /&gt;
				if ((kind ~= &amp;quot;text-link?&amp;quot;) and (kind ~= &amp;quot;tekst?&amp;quot;) and (#v == 0)) then&lt;br /&gt;
					table.insert(invalid, argName(k))&lt;br /&gt;
				elseif findFile(v) then&lt;br /&gt;
					table.insert(files, argName(k))&lt;br /&gt;
				elseif checkUri(v) then&lt;br /&gt;
					table.insert(nakedurl, argName(k))&lt;br /&gt;
				elseif findPlainHttp(v) then&lt;br /&gt;
					table.insert(nakedurl, argName(k))&lt;br /&gt;
				end&lt;br /&gt;
			elseif kind == &amp;quot;old&amp;quot; then&lt;br /&gt;
				table.insert(deprecated, argName(k))&lt;br /&gt;
			elseif kind == &amp;quot;uri*&amp;quot; then -- specjalny przpadek dla pola &amp;#039;url&amp;#039; w [[Szablon:Cytuj]]&lt;br /&gt;
				local u = checkUri(v) or checkUri(mw.text.unstripNoWiki(v))&lt;br /&gt;
				if not u then table.insert(invalid, argName(k)) end&lt;br /&gt;
			else&lt;br /&gt;
				local pattern = string.match(kind,&amp;quot;^(^.-$)!?$&amp;quot;)&lt;br /&gt;
				if pattern and not mw.ustring.match(v, pattern) then&lt;br /&gt;
					table.insert(invalid, argName(k))&lt;br /&gt;
				elseif (#v &amp;gt; 0) and checkUri(v) then&lt;br /&gt;
					table.insert(nakedurl, argName(k))&lt;br /&gt;
				elseif findPlainHttp(v) then&lt;br /&gt;
					table.insert(nakedurl, argName(k))&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		local missing = {}&lt;br /&gt;
		local suggested = {}&lt;br /&gt;
		mw.logObject(required, &amp;quot;required&amp;quot;)&lt;br /&gt;
		for k, v in pairs(required) do&lt;br /&gt;
			table.insert(v and missing or suggested, k)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if (#missing == 0)&lt;br /&gt;
		and (#suggested == 0)&lt;br /&gt;
		and (#unknown == 0)&lt;br /&gt;
		and (#invalid == 0)&lt;br /&gt;
		and (#deprecated == 0)&lt;br /&gt;
		and (#nakedurl == 0)&lt;br /&gt;
		and (#files == 0)&lt;br /&gt;
		and (#exturl == 0) then&lt;br /&gt;
			return nil&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local errorClasses = 0&lt;br /&gt;
		&lt;br /&gt;
		-- generate messages for each category of problems&lt;br /&gt;
		local messages = {}&lt;br /&gt;
		if #invalid &amp;gt; 0 then&lt;br /&gt;
			errorClasses = errorClasses + 2&lt;br /&gt;
			table.insert(messages, &amp;quot;Nieprawidłowe/puste pola: &amp;quot; .. mw.text.listToText(invalid) .. &amp;quot;.&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if (#missing &amp;gt; 0) or (#suggested &amp;gt; 0) then&lt;br /&gt;
			errorClasses = errorClasses + 1&lt;br /&gt;
			if (#missing &amp;gt; 0) then table.insert(messages, &amp;quot;Brakujące pola: &amp;quot; .. mw.text.listToText(missing) .. &amp;quot;.&amp;quot;) end&lt;br /&gt;
			if (#suggested &amp;gt; 0) then table.insert(messages, &amp;quot;Sugerowane pola (wstaw w kodzie): &amp;lt;code&amp;gt;&amp;quot; .. listToTplParams(suggested) .. &amp;quot;&amp;lt;/code&amp;gt;&amp;quot;) end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if #unknown &amp;gt; 0 then&lt;br /&gt;
			errorClasses = errorClasses + 4&lt;br /&gt;
			table.insert(messages, &amp;quot;Nieznane pola: &amp;quot; .. mw.text.listToText(unknown) .. &amp;quot;.&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if #deprecated &amp;gt; 0 then&lt;br /&gt;
			errorClasses = errorClasses + 8&lt;br /&gt;
			table.insert(messages, &amp;quot;Przestarzałe pola: &amp;quot; .. mw.text.listToText(deprecated) .. &amp;quot;.&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if #nakedurl &amp;gt; 0 then&lt;br /&gt;
			errorClasses = errorClasses + 16&lt;br /&gt;
			table.insert(messages, &amp;quot;Gołe linki: &amp;quot; .. mw.text.listToText(nakedurl) .. &amp;quot;.&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if #files &amp;gt; 0 then&lt;br /&gt;
			errorClasses = errorClasses + 32&lt;br /&gt;
			table.insert(messages, &amp;quot;Nieoczekiwana grafika: &amp;quot; .. mw.text.listToText(files) .. &amp;quot;.&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if #exturl &amp;gt; 0 then&lt;br /&gt;
			errorClasses = errorClasses + 64&lt;br /&gt;
			table.insert(messages, &amp;quot;Linki zewnętrzne: &amp;quot; .. mw.text.listToText(exturl) .. &amp;quot;.&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		-- render messages&lt;br /&gt;
		local message = mw.html.create()&lt;br /&gt;
		if emptyArg then&lt;br /&gt;
			message:wikitext(&amp;quot;|=&amp;quot;, emptyArg, &amp;quot;| &amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
		if infobox then&lt;br /&gt;
			message:wikitext(&amp;quot;\n* &amp;quot;, table.concat(messages, &amp;quot;\n* &amp;quot;))&lt;br /&gt;
		else&lt;br /&gt;
			message:wikitext(table.concat(messages, &amp;quot; &amp;quot;))&lt;br /&gt;
		end&lt;br /&gt;
		message = tostring(message)&lt;br /&gt;
&lt;br /&gt;
		-- result container&lt;br /&gt;
		local result = mw.html.create(infobox and &amp;quot;table&amp;quot; or &amp;quot;span&amp;quot;)&lt;br /&gt;
		result:addClass(&amp;quot;problemy&amp;quot;)&lt;br /&gt;
			:addClass(class or nil)&lt;br /&gt;
			:attr(&amp;quot;aria-hidden&amp;quot;, &amp;quot;true&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
		local restext = result&lt;br /&gt;
		if infobox then&lt;br /&gt;
			result:addClass(&amp;quot;infobox&amp;quot;)&lt;br /&gt;
			restext = result:tag(&amp;quot;tr&amp;quot;):tag(&amp;quot;td&amp;quot;)&lt;br /&gt;
		else&lt;br /&gt;
			result:attr(&amp;quot;data-nosnippet&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
 		if templateName then&lt;br /&gt;
			restext:wikitext(showTemplate(templateName)..&amp;quot; &amp;quot;)&lt;br /&gt;
			-- pomiń ten komunikat jeśli zabraknie tylko pól sugerowanych w infoboksie&lt;br /&gt;
			if not infobox or (errorClasses ~= 1) or (#missing &amp;gt; 0) then&lt;br /&gt;
	 			local warning = mw.html.create()&lt;br /&gt;
	 			warning:tag(&amp;quot;code&amp;quot;):wikitext(showTemplate(templateName, frame:getParent().args))&lt;br /&gt;
	 			warning:wikitext(&amp;quot; &amp;quot;)&lt;br /&gt;
	 			warning:tag(&amp;quot;span&amp;quot;):addClass(&amp;quot;problemy&amp;quot;):wikitext(message)&lt;br /&gt;
	 			mw.addWarning(tostring(warning))&lt;br /&gt;
 			end&lt;br /&gt;
 		end&lt;br /&gt;
 		&lt;br /&gt;
 		restext:wikitext(message)&lt;br /&gt;
 &lt;br /&gt;
		if category then&lt;br /&gt;
			result:wikitext(category)&lt;br /&gt;
		end&lt;br /&gt;
		if infobox then&lt;br /&gt;
			if (errorClasses == 1) and (#missing &amp;lt;= 0) then&lt;br /&gt;
				result:addClass(&amp;quot;tylko-braki&amp;quot;) -- tylko SUGEROWANE braki&lt;br /&gt;
			end&lt;br /&gt;
			if mw.title.getCurrentTitle().namespace == 0 then&lt;br /&gt;
				if (#missing &amp;gt; 0) or (#suggested &amp;gt; 0) then&lt;br /&gt;
					result:wikitext(&amp;quot;[[Kategoria:&amp;quot;, infoboxCatTitle(infobox, &amp;quot;brakujące parametry&amp;quot;).text, &amp;quot;]]&amp;quot;)&lt;br /&gt;
				end&lt;br /&gt;
				if #invalid &amp;gt; 0 then&lt;br /&gt;
					result:wikitext(&amp;quot;[[Kategoria:&amp;quot;, infoboxCatTitle(infobox, &amp;quot;nieprawidłowe parametry&amp;quot;).text, &amp;quot;]]&amp;quot;)&lt;br /&gt;
				end&lt;br /&gt;
				if #unknown &amp;gt; 0 then&lt;br /&gt;
					result:wikitext(&amp;quot;[[Kategoria:&amp;quot;, infoboxCatTitle(infobox, &amp;quot;nieznane parametry&amp;quot;).text, &amp;quot;]]&amp;quot;)&lt;br /&gt;
				end&lt;br /&gt;
				if #deprecated &amp;gt; 0 then&lt;br /&gt;
					result:wikitext(&amp;quot;[[Kategoria:&amp;quot;, infoboxCatTitle(infobox, &amp;quot;przestarzałe parametry&amp;quot;).text, &amp;quot;]]&amp;quot;)&lt;br /&gt;
				end&lt;br /&gt;
				if #nakedurl &amp;gt; 0 then&lt;br /&gt;
					result:wikitext(&amp;quot;[[Kategoria:&amp;quot;, infoboxCatTitle(infobox, &amp;quot;gołe linki&amp;quot;).text, &amp;quot;]]&amp;quot;)&lt;br /&gt;
				end&lt;br /&gt;
				if #files &amp;gt; 0 then&lt;br /&gt;
					result:wikitext(&amp;quot;[[Kategoria:&amp;quot;, infoboxCatTitle(infobox, &amp;quot;grafika w nieodpowiednim miejscu&amp;quot;).text, &amp;quot;]]&amp;quot;)&lt;br /&gt;
				end&lt;br /&gt;
				if #exturl &amp;gt; 0 then&lt;br /&gt;
					result:wikitext(&amp;quot;[[Kategoria:&amp;quot;, infoboxCatTitle(infobox, &amp;quot;linki zewnętrzne&amp;quot;).text, &amp;quot;]]&amp;quot;)&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		return nl..tostring(result)&lt;br /&gt;
	end,&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;wartość&amp;quot;] = function(frame)&lt;br /&gt;
		local msg = frame.args.msg&lt;br /&gt;
		local value = tonumber(frame.args[1]) or frame.args[1]&lt;br /&gt;
		local index = 2 -- pierwszy wzór&lt;br /&gt;
		while value do&lt;br /&gt;
			local pattern = frame.args[index]&lt;br /&gt;
			if not pattern then&lt;br /&gt;
				break -- nie ma więcej wzorów&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			if mw.ustring.match(value, &amp;quot;^&amp;quot;..pattern..&amp;quot;$&amp;quot;) then&lt;br /&gt;
				return -- wzór pasuje, nie ma błędów&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			-- następny wzór&lt;br /&gt;
			index = index + 1&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		-- komunikat błędu&lt;br /&gt;
		return msg&lt;br /&gt;
	end,&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;odn&amp;quot;] = function(frame)&lt;br /&gt;
		local pf = frame:getParent()&lt;br /&gt;
		local i = 0 -- liczba argumentów pozycyjnych&lt;br /&gt;
		local problems = false&lt;br /&gt;
		local yeardetected = false&lt;br /&gt;
		while true do&lt;br /&gt;
			local arg = pf.args[i + 1]&lt;br /&gt;
			if not arg then&lt;br /&gt;
				problems = i == 0 and &amp;quot;brak argumentów&amp;quot; or false&lt;br /&gt;
				break&lt;br /&gt;
			end&lt;br /&gt;
	 &lt;br /&gt;
			if (i &amp;gt;= 5) or yeardetected then&lt;br /&gt;
				problems = &amp;quot;za dużo argumentów pozycyjnych&amp;quot;&lt;br /&gt;
				break&lt;br /&gt;
			end&lt;br /&gt;
	 &lt;br /&gt;
			if #arg == 0 then&lt;br /&gt;
				problems = &amp;quot;pusty argument&amp;quot;&lt;br /&gt;
				break&lt;br /&gt;
			end&lt;br /&gt;
	 &lt;br /&gt;
			if arg ~= mw.text.trim(arg) then&lt;br /&gt;
				problems = &amp;quot;nieoczekiwane odstępy na początku lub końcu argumentu&amp;quot;&lt;br /&gt;
				break&lt;br /&gt;
			end&lt;br /&gt;
	 &lt;br /&gt;
			if string.match(arg, &amp;quot;^%d+%l?$&amp;quot;) then&lt;br /&gt;
				yeardetected = true&lt;br /&gt;
				if i == 0 then&lt;br /&gt;
					problems = &amp;quot;rok musi być ostatnim parametrem po nazwiskach autorów&amp;quot;&lt;br /&gt;
					break&lt;br /&gt;
				end&lt;br /&gt;
			elseif string.match(arg, &amp;quot;^s[%-%.:]%s*%d+&amp;quot;) then&lt;br /&gt;
				problems = &amp;quot;prawdopodobnie nieprawidłowo podany numer strony&amp;quot;&lt;br /&gt;
				break&lt;br /&gt;
			elseif string.match(arg, &amp;quot;%s%s&amp;quot;) then&lt;br /&gt;
				problems = &amp;quot;podwójne odstępy&amp;quot;&lt;br /&gt;
				break&lt;br /&gt;
			elseif mw.ustring.match(arg, &amp;quot;^%a+%d&amp;quot;) then&lt;br /&gt;
				if not mw.ustring.match(arg, &amp;quot;^[%u%d]+$&amp;quot;) then&lt;br /&gt;
					problems = &amp;quot;prawdopodobnie sklejone argumenty (brak pionowej kreski)&amp;quot;&lt;br /&gt;
					break&lt;br /&gt;
				end&lt;br /&gt;
			elseif mw.ustring.match(arg, &amp;quot;^OdeB &amp;quot;) then&lt;br /&gt;
				-- [[Ordre de Bataille]]&lt;br /&gt;
			elseif mw.ustring.match(arg, &amp;quot;^%u%l+%u&amp;quot;) then&lt;br /&gt;
				local justification = {&lt;br /&gt;
					[&amp;quot;De&amp;quot;] = true,&lt;br /&gt;
					[&amp;quot;Del&amp;quot;] = true,&lt;br /&gt;
					[&amp;quot;Di&amp;quot;] = true,&lt;br /&gt;
					[&amp;quot;Le&amp;quot;] = true,&lt;br /&gt;
					[&amp;quot;Mac&amp;quot;] = true,&lt;br /&gt;
					[&amp;quot;Mc&amp;quot;] = true,&lt;br /&gt;
					[&amp;quot;Te&amp;quot;] = true, -- TeSelle&lt;br /&gt;
					[&amp;quot;Sar&amp;quot;] = true, -- SarDesai&lt;br /&gt;
					[&amp;quot;Van&amp;quot;] = true, -- VanBuren&lt;br /&gt;
					[&amp;quot;La&amp;quot;] = true, -- LaSalle&lt;br /&gt;
				}&lt;br /&gt;
				if not justification[mw.ustring.match(arg, &amp;quot;^%u%l+&amp;quot;)] then&lt;br /&gt;
					problems = &amp;quot;prawdopodobnie sklejone argumenty (brak pionowej kreski)&amp;quot;&lt;br /&gt;
					break&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
	 &lt;br /&gt;
			i = i + 1&lt;br /&gt;
		end&lt;br /&gt;
	 &lt;br /&gt;
		if not problems then&lt;br /&gt;
			local odn = pf.args.odn&lt;br /&gt;
			if odn and ((#odn ~= 1) or (odn &amp;lt; &amp;quot;a&amp;quot;) or (odn &amp;gt; &amp;quot;z&amp;quot;)) then&lt;br /&gt;
				problems = &amp;quot;nieoczekiwany parametr odn&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	 &lt;br /&gt;
	 	if not problems then&lt;br /&gt;
	 		local s = pf.args.s&lt;br /&gt;
	 		if s and string.match(s, &amp;quot;&amp;amp;[a-z]+;&amp;quot;) then&lt;br /&gt;
	 			problems = &amp;quot;użyto encji HTML w numerze strony&amp;quot;&lt;br /&gt;
	 		end&lt;br /&gt;
	 	end&lt;br /&gt;
	 &lt;br /&gt;
		if not problems then&lt;br /&gt;
			if pf.args.strona or pf.args.ss or pf.args.strony or pf.args.p or pf.args.page or pf.args.pp or pf.args.pages then&lt;br /&gt;
				problems = &amp;quot;przestarzały parametr z numerem strony&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	&lt;br /&gt;
		local category = &amp;quot;Szablon odn do sprawdzenia&amp;quot;&lt;br /&gt;
	 	if not problems then&lt;br /&gt;
	 		&lt;br /&gt;
	 		local function TextLinkToRFC()&lt;br /&gt;
	 			return (i == 1) and (pf.args.ref == &amp;quot;nie&amp;quot;) and mw.ustring.match(pf.args[1], &amp;quot;^RFC [1-9][0-9]*$&amp;quot;)&lt;br /&gt;
	 		end&lt;br /&gt;
	 		&lt;br /&gt;
	 		local s = pf.args.s or &amp;quot;&amp;quot;&lt;br /&gt;
	 		local l = pf.args.loc or &amp;quot;&amp;quot;&lt;br /&gt;
	 		if (#s == 0) and (#l == 0) then&lt;br /&gt;
	 			local exception = TextLinkToRFC()&lt;br /&gt;
	 			if not exception then&lt;br /&gt;
	 				category = &amp;quot;Szablon odn bez numeru strony&amp;quot;&lt;br /&gt;
	 				problems = &amp;quot;brak numeru strony&amp;quot;&lt;br /&gt;
	 			end&lt;br /&gt;
	 		end&lt;br /&gt;
	 	end&lt;br /&gt;
	 &lt;br /&gt;
	 	if not problems then&lt;br /&gt;
	 		return nil&lt;br /&gt;
	 	end&lt;br /&gt;
	 	&lt;br /&gt;
	 	local result = mw.html.create(&amp;quot;span&amp;quot;)&lt;br /&gt;
	 		:addClass(&amp;quot;problemy&amp;quot;)&lt;br /&gt;
	 		:addClass(&amp;quot;problemy-w-odn&amp;quot;)&lt;br /&gt;
			:attr(&amp;quot;aria-hidden&amp;quot;, &amp;quot;true&amp;quot;)&lt;br /&gt;
			:attr(&amp;quot;data-nosnippet&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
			:attr(&amp;quot;data-problemy&amp;quot;, &amp;quot;ODN: &amp;quot;..problems)&lt;br /&gt;
	 	if mw.title.getCurrentTitle().namespace == 0 then&lt;br /&gt;
	 		result:wikitext(&amp;quot;[[Kategoria:&amp;quot;, category, &amp;quot;]]&amp;quot;)&lt;br /&gt;
	 	end&lt;br /&gt;
	 	result:wikitext(&amp;quot;&amp;amp;#8201;&amp;quot;) -- thin space&lt;br /&gt;
	 	return tostring(result)&lt;br /&gt;
	end,&lt;br /&gt;
	&lt;br /&gt;
	[&amp;quot;Wikidane&amp;quot;] = function(frame)&lt;br /&gt;
		local property = frame.args.cecha&lt;br /&gt;
		local field = frame.args.pole&lt;br /&gt;
		local value = frame.args[1]&lt;br /&gt;
		if not property or not field then&lt;br /&gt;
			return&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if not value then&lt;br /&gt;
			value = frame:getParent().args[field]&lt;br /&gt;
			if not value or (#value == 0) then&lt;br /&gt;
				return&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		local entity = mw.wikibase.getEntity()&lt;br /&gt;
		if not entity or not entity.claims or not entity.claims[property] then&lt;br /&gt;
			return&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		for i, v in ipairs(entity.claims[property]) do&lt;br /&gt;
			if v.mainsnak.snaktype == &amp;quot;value&amp;quot; then&lt;br /&gt;
				if value == v.mainsnak.datavalue.value then&lt;br /&gt;
					return&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	&lt;br /&gt;
		local template = frame:getParent():getTitle()&lt;br /&gt;
		local infobox = mw.ustring.match(template, &amp;quot;^Szablon:(.- infobox)$&amp;quot;)&lt;br /&gt;
		return mw.ustring.format(&amp;quot;[[Kategoria:%s – niezgodność w Wikidanych – %s – %s]]&amp;quot;, infobox and &amp;quot;Infoboksy&amp;quot; or &amp;quot;Szablony&amp;quot;, infobox or template, field)&lt;br /&gt;
	end,&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;bez parametrów&amp;quot;] = function(frame)&lt;br /&gt;
		for k, v in pairs(frame:getParent().args) do&lt;br /&gt;
			return nil&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		return &amp;quot;tak&amp;quot;&lt;br /&gt;
	end,&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;pole z hostem&amp;quot;] = function (frame)&lt;br /&gt;
		local host = frame.args.host&lt;br /&gt;
		if host and (#host &amp;gt; 0) then&lt;br /&gt;
			for k, v in pairs(frame:getParent().args) do&lt;br /&gt;
				local link = string.match(v, &amp;quot;[hH][tT][tT][pP][sS]?://[%S]+&amp;quot;)&lt;br /&gt;
				if link then&lt;br /&gt;
					local uri = mw.uri.new(link)&lt;br /&gt;
					local valid, _ = mw.uri.validate(uri)&lt;br /&gt;
					if valid and uri.host and (#uri.host &amp;gt; 0) then&lt;br /&gt;
						if host == uri.host then&lt;br /&gt;
							mw.logObject({k, link}, &amp;quot;cały&amp;quot;)&lt;br /&gt;
							return k&lt;br /&gt;
						end&lt;br /&gt;
						&lt;br /&gt;
						if #host &amp;lt; #uri.host then&lt;br /&gt;
							local s1 = &amp;#039;.&amp;#039;..host&lt;br /&gt;
							local s2 = string.sub(uri.host, -#s1)&lt;br /&gt;
							if s1 == s2 then&lt;br /&gt;
								mw.logObject({k, link}, &amp;quot;fragment&amp;quot;)&lt;br /&gt;
								return k&lt;br /&gt;
							end&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end,&lt;br /&gt;
	&lt;br /&gt;
	[&amp;quot;pola z autorami&amp;quot;] = function (frame)&lt;br /&gt;
		local result = {}&lt;br /&gt;
		local nazwisko = frame.args[&amp;quot;nazwisko&amp;quot;]&lt;br /&gt;
		local imie = frame.args[&amp;quot;imię&amp;quot;]&lt;br /&gt;
		local autor = frame.args[&amp;quot;autor&amp;quot;]&lt;br /&gt;
		local link = frame.args[&amp;quot;link&amp;quot;]&lt;br /&gt;
		local maxIndex = tonumber(frame.args[&amp;quot;max&amp;quot;])&lt;br /&gt;
		local prefix = frame.args[&amp;quot;przed&amp;quot;] or &amp;quot;&amp;quot;&lt;br /&gt;
		local suffix = frame.args[&amp;quot;po&amp;quot;] or &amp;quot;&amp;quot;&lt;br /&gt;
		for i = 1, maxIndex do&lt;br /&gt;
			local s = i == 1 and &amp;quot;&amp;quot; or tostring(i)&lt;br /&gt;
			local nin = string.gsub(nazwisko, &amp;#039;#&amp;#039;, s)&lt;br /&gt;
			local iin = string.gsub(imie, &amp;#039;#&amp;#039;, s)&lt;br /&gt;
			local ain = string.gsub(autor, &amp;#039;#&amp;#039;, s)&lt;br /&gt;
			local lin = string.gsub(link, &amp;#039;#&amp;#039;, s)&lt;br /&gt;
			local niv = frame:getParent().args[nin]&lt;br /&gt;
			local iiv = frame:getParent().args[iin]&lt;br /&gt;
			local aiv = frame:getParent().args[ain]&lt;br /&gt;
			local liv = frame:getParent().args[lin]&lt;br /&gt;
			local nis = niv and (#niv &amp;gt; 0)&lt;br /&gt;
			local iis = iiv and (#iiv &amp;gt; 0)&lt;br /&gt;
			local ais = aiv and (#aiv &amp;gt; 0)&lt;br /&gt;
			local lis = liv and (#liv &amp;gt; 0)&lt;br /&gt;
			local bad = (nis and ais) -- nazwisko -&amp;gt; zbędny autor&lt;br /&gt;
				or (nis and not iis) -- nazwisko bez imienia&lt;br /&gt;
				or (lis and not nis and not ais) -- tylko link&lt;br /&gt;
				or (iis and not nis) -- imię bez nazwiska&lt;br /&gt;
			if bad then&lt;br /&gt;
				table.insert(result, i)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	&lt;br /&gt;
		if #result &amp;gt; 0 then&lt;br /&gt;
			return prefix..mw.text.listToText(result)..suffix&lt;br /&gt;
		end&lt;br /&gt;
	end,&lt;br /&gt;
	&lt;br /&gt;
	[&amp;quot;uri&amp;quot;] = function(frame)&lt;br /&gt;
		mw.logObject(frame:getParent():getTitle(), &amp;quot;parent:title&amp;quot;)&lt;br /&gt;
		_ = mw.title.new(&amp;quot;Moduł:Sprawdź/deprecated/uri&amp;quot;).id&lt;br /&gt;
		local link = frame.args[&amp;quot;link&amp;quot;]&lt;br /&gt;
		local space = frame.args[&amp;quot;spacja&amp;quot;]&lt;br /&gt;
		local check = checkUri(link)&lt;br /&gt;
		if check then&lt;br /&gt;
			return link&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		return (space and (check ~= nil)) and link or &amp;quot;&amp;quot;&lt;br /&gt;
	end,&lt;br /&gt;
&lt;br /&gt;
	--[[Sprawdzanie url do szablonów&lt;br /&gt;
	&lt;br /&gt;
		Wykorzystanie:&lt;br /&gt;
		{{#invoke:Sprawdź|url|{{{www|}}}|[{{{www}}} Strona internetowa]}}&lt;br /&gt;
		{{#invoke:Sprawdź|url|{{{www}}}|[{{{www}}} Strona internetowa]}}&lt;br /&gt;
	&lt;br /&gt;
		@param #1 Url do sprawdzenia.&lt;br /&gt;
			Ciąg typu &amp;quot;{{{abc}}}&amp;quot; pominie sprawdzenie, żeby pokazać wartość na stronie szablonu.&lt;br /&gt;
		@param #2 Tekst do wyświetlenia gdy OK.&lt;br /&gt;
		@return pusty string gdy błędny, &amp;quot;ok&amp;quot; lub zawartość #2 gdy OK.&lt;br /&gt;
	]] &lt;br /&gt;
	[&amp;quot;url&amp;quot;] = function(frame)&lt;br /&gt;
		local link = frame.args[1]&lt;br /&gt;
		local okText = frame.args[2] or &amp;quot;ok&amp;quot;&lt;br /&gt;
		local isValid = string.find(link, &amp;#039;{{{&amp;#039;) == 1 or checkUri(link)&lt;br /&gt;
		if isValid then&lt;br /&gt;
			return okText&lt;br /&gt;
		end&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end,&lt;br /&gt;
	&lt;br /&gt;
	[&amp;quot;lista nazw niepustych argumentów&amp;quot;] = function(frame)&lt;br /&gt;
		local argNames = {}&lt;br /&gt;
		for k, v in pairs(frame:getParent().args) do&lt;br /&gt;
			if #mw.text.trim(v) &amp;gt; 0 then&lt;br /&gt;
				table.insert(argNames, tostring(k))&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		return table.concat(argNames, &amp;quot;, &amp;quot;)&lt;br /&gt;
	end,&lt;br /&gt;
	&lt;br /&gt;
	[&amp;quot;zapis daty dostępu&amp;quot;] = function(frame)&lt;br /&gt;
		local accessDate = frame:getParent().args[&amp;quot;data dostępu&amp;quot;]&lt;br /&gt;
		if accessDate and (#accessDate &amp;gt; 0) then&lt;br /&gt;
			if not isDate20YYMMDD(accessDate) then&lt;br /&gt;
				local builder = mw.html.create(&amp;#039;span&amp;#039;)&lt;br /&gt;
					:addClass(&amp;#039;problemy&amp;#039;)&lt;br /&gt;
					:wikitext(&amp;#039;zły zapis daty dostępu&amp;#039;)&lt;br /&gt;
				if mw.title.getCurrentTitle().namespace == 0 then&lt;br /&gt;
					builder:wikitext(&amp;#039;[[Kategoria:Szablon cytowania – zły zapis daty dostępu]]&amp;#039;)&lt;br /&gt;
				end&lt;br /&gt;
				return builder&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end,&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>wpl&gt;Nux</name></author>
	</entry>
</feed>