<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.mechsploit.me/index.php?action=history&amp;feed=atom&amp;title=Module%3AArguments%2Fdoc%2Fcs</id>
	<title>Module:Arguments/doc/cs - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.mechsploit.me/index.php?action=history&amp;feed=atom&amp;title=Module%3AArguments%2Fdoc%2Fcs"/>
	<link rel="alternate" type="text/html" href="https://wiki.mechsploit.me/index.php?title=Module:Arguments/doc/cs&amp;action=history"/>
	<updated>2026-04-08T13:18:50Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://wiki.mechsploit.me/index.php?title=Module:Arguments/doc/cs&amp;diff=200&amp;oldid=prev</id>
		<title>MechsploWikiSysop: 1 revision imported</title>
		<link rel="alternate" type="text/html" href="https://wiki.mechsploit.me/index.php?title=Module:Arguments/doc/cs&amp;diff=200&amp;oldid=prev"/>
		<updated>2025-09-02T02:50:12Z</updated>

		<summary type="html">&lt;p&gt;1 revision imported&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 22:50, 1 September 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>MechsploWikiSysop</name></author>
	</entry>
	<entry>
		<id>https://wiki.mechsploit.me/index.php?title=Module:Arguments/doc/cs&amp;diff=199&amp;oldid=prev</id>
		<title>mw&gt;FuzzyBot: Updating to match new version of source page</title>
		<link rel="alternate" type="text/html" href="https://wiki.mechsploit.me/index.php?title=Module:Arguments/doc/cs&amp;diff=199&amp;oldid=prev"/>
		<updated>2024-12-06T14:03:05Z</updated>

		<summary type="html">&lt;p&gt;Updating to match new version of source page&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#ifeq:{{SUBPAGENAME}}|doc||{{Documentation subpage}}}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;/noinclude&amp;gt;{{#switch:&lt;br /&gt;
| =&lt;br /&gt;
&amp;lt;includeonly&amp;gt;{{Languages|Module:Arguments/doc}}&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&amp;lt;!-- Add categories where indicated at the bottom of this page and interwikis at Wikidata --&amp;gt;&lt;br /&gt;
{{Shared Template Warning|Module:Arguments|Module:Arguments}}&lt;br /&gt;
{{Used in system}}&lt;br /&gt;
{{Module rating|release}}&lt;br /&gt;
{{Module rating|protected}}&lt;br /&gt;
&lt;br /&gt;
Tento modul umožňuje snadné zpracování argumentů předávaných z {{Magic word|#invoke|...|ext=Scribunto|code=1|nowrap=1}}.&lt;br /&gt;
Je to metamodul určený pro použití jinými moduly a neměl by být volán přímo z {{tlc|&amp;lt;nowiki&amp;gt;#invoke:...&amp;lt;/nowiki&amp;gt;}}.&lt;br /&gt;
Mezi jeho vlastnosti patří:&lt;br /&gt;
&lt;br /&gt;
* Snadné ořezávání argumentů a odstraňování prázdných argumentů.&lt;br /&gt;
* Argumenty mohou být předány současně aktuálním rámcem i nadřazeným rámcem. (Další podrobnosti níže.)&lt;br /&gt;
* Argumenty lze předávat přímo z jiného modulu Lua nebo z ladicí konzole.&lt;br /&gt;
* Argumenty se načítají podle potřeby, což může pomoci vyhnout se (některým) problémům se značkami {{xtag|ref}}.&lt;br /&gt;
* Většinu funkcí lze přizpůsobit.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Basic_use&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Základní použití ==&lt;br /&gt;
Nejprve je třeba načíst modul.&lt;br /&gt;
Obsahuje jednu funkci s názvem &amp;lt;code&amp;gt;getArgs&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local getArgs = require(&amp;#039;Module:Arguments&amp;#039;).getArgs&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
V nejzákladnějším scénáři můžete v hlavní funkci použít &amp;lt;code&amp;gt;getArgs&amp;lt;/code&amp;gt;.&lt;br /&gt;
Proměnná &amp;lt;code&amp;gt;args&amp;lt;/code&amp;gt; je tabulka obsahující argumenty z {{tlc|&amp;lt;nowiki&amp;gt;#invoke:...&amp;lt;/nowiki&amp;gt;}}.&lt;br /&gt;
(Další podrobnosti najdete níže.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local getArgs = require(&amp;#039;Module:Arguments&amp;#039;).getArgs&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local args = getArgs(frame)&lt;br /&gt;
	-- Zde je kód hlavního modulu.&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Doporučená praxe je však použít funkci pouze pro zpracování argumentů od {{tlc|&amp;lt;nowiki&amp;gt;#invoke:...&amp;lt;/nowiki&amp;gt;}}.&lt;br /&gt;
To znamená, že pokud někdo zavolá váš modul z jiného modulu Lua, nemusíte mít k dispozici rámový objekt, což zlepšuje výkon.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local getArgs = require(&amp;#039;Module:Arguments&amp;#039;).getArgs&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local args = getArgs(frame)&lt;br /&gt;
	return p._main(args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._main(args)&lt;br /&gt;
	-- Zde je kód hlavního modulu.&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pokud chcete, aby argumenty používalo více funkcí, a také chcete, aby byly přístupné z {{tlc|&amp;lt;nowiki&amp;gt;#invoke:...&amp;lt;/nowiki&amp;gt;}}, můžete použít funkci wrapper.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local getArgs = require(&amp;#039;Module:Arguments&amp;#039;).getArgs&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local function makeInvokeFunc(funcName)&lt;br /&gt;
	return function (frame)&lt;br /&gt;
		local args = getArgs(frame)&lt;br /&gt;
		return p[funcName](args)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.func1 = makeInvokeFunc(&amp;#039;_func1&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
function p._func1(args)&lt;br /&gt;
	-- Zde je kód pro první funkci.&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.func2 = makeInvokeFunc(&amp;#039;_func2&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
function p._func2(args)&lt;br /&gt;
	-- Zde je kód pro druhou funkci.&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Options&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Možnosti ===&lt;br /&gt;
K dispozici jsou následující možnosti.&lt;br /&gt;
Jsou vysvětleny v následujících částech.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local args = getArgs(frame, {&lt;br /&gt;
	trim = false,&lt;br /&gt;
	removeBlanks = false,&lt;br /&gt;
	valueFunc = function (key, value)&lt;br /&gt;
		-- Kód pro zpracování jednoho argumentu&lt;br /&gt;
	end,&lt;br /&gt;
	frameOnly = true,&lt;br /&gt;
	parentOnly = true,&lt;br /&gt;
	parentFirst = true,&lt;br /&gt;
	wrappers = {&lt;br /&gt;
		&amp;#039;Template:A wrapper template&amp;#039;,&lt;br /&gt;
		&amp;#039;Template:Another wrapper template&amp;#039;&lt;br /&gt;
	},&lt;br /&gt;
	readOnly = true,&lt;br /&gt;
	noOverwrite = true&lt;br /&gt;
})&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Trimming_and_removing_blanks&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Ořezávání a odstraňování polotovarů ===&lt;br /&gt;
Prázdné argumenty často podrazí kodéry, které jsou novým převodem šablon MediaWiki na Lua.&lt;br /&gt;
V syntaxi šablony jsou prázdné řetězce a řetězce obsahující pouze mezery považovány za &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;.&lt;br /&gt;
V Lua jsou však prázdné řetězce a řetězce obsahující mezery považovány za &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;.&lt;br /&gt;
To znamená, že pokud těmto argumentům při psaní svých Lua modulů nevěnujete pozornost, můžete s něčím zacházet jako s &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;, s čím by ve skutečnosti mělo být zacházeno jako s &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;.&lt;br /&gt;
Aby se tomu zabránilo, ve výchozím nastavení tento modul odstraňuje všechny prázdné argumenty.&lt;br /&gt;
&lt;br /&gt;
Podobně mohou bílé znaky způsobit problémy při práci s pozičními argumenty.&lt;br /&gt;
Přestože jsou mezery oříznuty pro pojmenované argumenty pocházející z {{tlc|&amp;lt;nowiki&amp;gt;#invoke:...&amp;lt;/nowiki&amp;gt;}}, jsou zachovány pro poziční argumenty.&lt;br /&gt;
Většinu času není tato další mezera žádoucí, takže tento modul je ve výchozím nastavení ořízne.&lt;br /&gt;
&lt;br /&gt;
Někdy však chcete jako vstup použít prázdné argumenty a někdy chcete ponechat další mezery.&lt;br /&gt;
To může být nezbytné pro převod některých šablon přesně tak, jak byly napsány.&lt;br /&gt;
Pokud to chcete udělat, můžete nastavit argumenty &amp;lt;code&amp;gt;trim&amp;lt;/code&amp;gt; a &amp;lt;code&amp;gt;removeBlanks&amp;lt;/code&amp;gt; na &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local args = getArgs(frame, {&lt;br /&gt;
	trim = false,&lt;br /&gt;
	removeBlanks = false&lt;br /&gt;
})&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Custom_formatting_of_arguments&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Vlastní formátování argumentů ===&lt;br /&gt;
Někdy chcete odstranit některé prázdné argumenty, ale ne jiné, nebo možná budete chtít umístit všechny poziční argumenty malými písmeny.&lt;br /&gt;
Chcete-li dělat věci, jako je tato, můžete použít možnost &amp;lt;code&amp;gt;valueFunc&amp;lt;/code&amp;gt;.&lt;br /&gt;
Vstupem této možnosti musí být funkce, která přebírá dva parametry, &amp;lt;code&amp;gt;key&amp;lt;/code&amp;gt; a &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt;, a vrací jedinou hodnotu.&lt;br /&gt;
Tato hodnota je to, co získáte, když vstoupíte do pole &amp;lt;code&amp;gt;key&amp;lt;/code&amp;gt; v tabulce &amp;lt;code&amp;gt;args&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Příklad 1:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
Tato funkce zachová mezery pro první poziční argument, ale ořízne všechny ostatní argumenty a odstraní všechny ostatní prázdné argumenty.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local args = getArgs(frame, {&lt;br /&gt;
	valueFunc = function (key, value)&lt;br /&gt;
		if key == 1 then&lt;br /&gt;
			return value&lt;br /&gt;
		elseif value then&lt;br /&gt;
			value = mw.text.trim(value)&lt;br /&gt;
			if value ~= &amp;#039;&amp;#039; then&lt;br /&gt;
				return value&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
})&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Příklad 2:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
Tato funkce odstraní prázdné argumenty a převede všechny argumenty na malá písmena, ale neořízne mezery od pozičních parametrů.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local args = getArgs(frame, {&lt;br /&gt;
	valueFunc = function (key, value)&lt;br /&gt;
		if not value then&lt;br /&gt;
			return nil&lt;br /&gt;
		end&lt;br /&gt;
		value = mw.ustring.lower(value)&lt;br /&gt;
		if mw.ustring.find(value, &amp;#039;%S&amp;#039;) then&lt;br /&gt;
			return value&lt;br /&gt;
		end&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
})&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|text=&lt;br /&gt;
Výše uvedené funkce selžou, pokud je předán vstup, který není typu &amp;lt;code&amp;gt;string&amp;lt;/code&amp;gt; nebo &amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt;.&lt;br /&gt;
To může být případ, kdy používáte funkci &amp;lt;code&amp;gt;getArgs&amp;lt;/code&amp;gt; v hlavní funkci vašeho modulu a tato funkce je volána jiným modulem Lua.&lt;br /&gt;
V tomto případě budete muset zkontrolovat typ vašeho vstupu.&lt;br /&gt;
To není problém, pokud používáte funkci speciálně pro argumenty od {{tlc|&amp;lt;nowiki&amp;gt;#invoke:...&amp;lt;/nowiki&amp;gt;}} (tj. máte funkce &amp;lt;code&amp;gt;p.main&amp;lt;/code&amp;gt; a &amp;lt;code&amp;gt;p._main&amp;lt;/code&amp;gt; nebo něco podobného).&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Collapse top|1=Příklady 1 a 2 s kontrolou typu}}&lt;br /&gt;
Příklad 1:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local args = getArgs(frame, {&lt;br /&gt;
	valueFunc = function (key, value)&lt;br /&gt;
		if key == 1 then&lt;br /&gt;
			return value&lt;br /&gt;
		elseif type(value) == &amp;#039;string&amp;#039; then&lt;br /&gt;
			value = mw.text.trim(value)&lt;br /&gt;
			if value ~= &amp;#039;&amp;#039; then&lt;br /&gt;
				return value&lt;br /&gt;
			else&lt;br /&gt;
				return nil&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			return value&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
})&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Příklad 2:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local args = getArgs(frame, {&lt;br /&gt;
	valueFunc = function (key, value)&lt;br /&gt;
		if type(value) == &amp;#039;string&amp;#039; then&lt;br /&gt;
			value = mw.ustring.lower(value)&lt;br /&gt;
			if mw.ustring.find(value, &amp;#039;%S&amp;#039;) then&lt;br /&gt;
				return value&lt;br /&gt;
			else&lt;br /&gt;
				return nil&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			return value&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
})&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{Collapse bottom}}&lt;br /&gt;
&lt;br /&gt;
Pamatujte také, že funkce &amp;lt;code&amp;gt;valueFunc&amp;lt;/code&amp;gt; je volána víceméně pokaždé, když je požadován argument z tabulky &amp;lt;code&amp;gt;args&amp;lt;/code&amp;gt;, takže pokud vám záleží na výkonu, měli byste se ujistit, že se svým kódem neděláte nic neefektivního.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Frames_and_parent_frames&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Rámce a nadřazené rámce ===&lt;br /&gt;
&lt;br /&gt;
Argumenty v tabulce &amp;lt;code&amp;gt;args&amp;lt;/code&amp;gt; lze současně předávat z aktuálního rámce nebo z jeho nadřazeného rámce.&lt;br /&gt;
Abychom pochopili, co to znamená, je nejjednodušší uvést příklad.&lt;br /&gt;
Řekněme, že máme modul nazvaný &amp;lt;code&amp;gt;Module:ExampleArgs&amp;lt;/code&amp;gt;.&lt;br /&gt;
Tento modul vypíše první dva poziční argumenty, které jsou předány.&lt;br /&gt;
&lt;br /&gt;
{{Collapse top|1=kód Module:ExampleArgs}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local getArgs = require(&amp;#039;Module:Arguments&amp;#039;).getArgs&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local args = getArgs(frame)&lt;br /&gt;
	return p._main(args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._main(args)&lt;br /&gt;
	local first = args[1] or &amp;#039;&amp;#039;&lt;br /&gt;
	local second = args[2] or &amp;#039;&amp;#039;&lt;br /&gt;
	return first .. &amp;#039; &amp;#039; .. second&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{Collapse bottom}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Module:ExampleArgs&amp;lt;/code&amp;gt; je pak volán &amp;lt;code&amp;gt;Template:ExampleArgs&amp;lt;/code&amp;gt;, který obsahuje kód &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#invoke:ExampleArgs|main|firstInvokeArg}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
Výsledkem je &amp;quot;firstInvokeArg&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Pokud bychom nyní zavolali &amp;lt;code&amp;gt;Template:ExampleArgs&amp;lt;/code&amp;gt;, stalo by se následující:&lt;br /&gt;
&lt;br /&gt;
{{(!}} class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 50em; max-width: 100%;&amp;quot;&lt;br /&gt;
{{!}}-&lt;br /&gt;
! style=&amp;quot;width: 60%;&amp;quot; {{!}} Kód&lt;br /&gt;
! style=&amp;quot;width: 40%;&amp;quot; {{!}} Výsledek&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{!}} &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{ExampleArgs}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
{{!}} firstInvokeArg&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{!}} &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{ExampleArgs|firstTemplateArg}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
{{!}} firstInvokeArg&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{!}} &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{ExampleArgs|firstTemplateArg|secondTemplateArg}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
{{!}} firstInvokeArg secondTemplateArg&lt;br /&gt;
{{!)}}&lt;br /&gt;
&lt;br /&gt;
Pro změnu tohoto chování můžete nastavit tři možnosti: &amp;lt;code&amp;gt;frameOnly&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;parentOnly&amp;lt;/code&amp;gt; a &amp;lt;code&amp;gt;parentFirst&amp;lt;/code&amp;gt;.&lt;br /&gt;
Pokud nastavíte &amp;lt;code&amp;gt;frameOnly&amp;lt;/code&amp;gt;, budou přijaty pouze argumenty předané z aktuálního rámce. Pokud nastavíte &amp;lt;code&amp;gt;parentOnly&amp;lt;/code&amp;gt;, budou přijaty pouze argumenty předané z nadřazeného rámce. A pokud nastavíte &amp;lt;code&amp;gt;parentFirst&amp;lt;/code&amp;gt;, budou argumenty předány z aktuálního i nadřazeného snímku, ale nadřazený snímek bude mít prioritu před aktuálním snímkem.&lt;br /&gt;
Zde jsou výsledky na &amp;lt;code&amp;gt;Template:ExampleArgs&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;dl&amp;gt;&lt;br /&gt;
&amp;lt;dt&amp;gt;&amp;lt;code&amp;gt;frameOnly&amp;lt;/code&amp;gt;&amp;lt;/dt&amp;gt;&lt;br /&gt;
&amp;lt;dd&amp;gt;&lt;br /&gt;
{{(!}} class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 50em; max-width: 100%;&amp;quot;&lt;br /&gt;
{{!}}-&lt;br /&gt;
! style=&amp;quot;width: 60%;&amp;quot; {{!}} Kód&lt;br /&gt;
! style=&amp;quot;width: 40%;&amp;quot; {{!}} Výsledek&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{!}} &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{ExampleArgs}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
{{!}} firstInvokeArg&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{!}} &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{ExampleArgs|firstTemplateArg}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
{{!}} firstInvokeArg&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{!}} &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{ExampleArgs|firstTemplateArg|secondTemplateArg}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
{{!}} firstInvokeArg&lt;br /&gt;
{{!)}}&lt;br /&gt;
&amp;lt;/dd&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;dt&amp;gt;&amp;lt;code&amp;gt;parentOnly&amp;lt;/code&amp;gt;&amp;lt;/dt&amp;gt;&lt;br /&gt;
&amp;lt;dd&amp;gt;&lt;br /&gt;
{{(!}} class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 50em; max-width: 100%;&amp;quot;&lt;br /&gt;
{{!}}-&lt;br /&gt;
! style=&amp;quot;width: 60%;&amp;quot; {{!}} Kód&lt;br /&gt;
! style=&amp;quot;width: 40%;&amp;quot; {{!}} Výsledek&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{!}} &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{ExampleArgs}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
{{!}}&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{!}} &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{ExampleArgs|firstTemplateArg}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
{{!}} firstTemplateArg&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{!}} &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{ExampleArgs|firstTemplateArg|secondTemplateArg}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
{{!}} firstTemplateArg secondTemplateArg&lt;br /&gt;
{{!)}}&lt;br /&gt;
&amp;lt;/dd&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;dt&amp;gt;&amp;lt;code&amp;gt;parentFirst&amp;lt;/code&amp;gt;&amp;lt;/dt&amp;gt;&lt;br /&gt;
&amp;lt;dd&amp;gt;&lt;br /&gt;
{{(!}} class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 50em; max-width: 100%;&amp;quot;&lt;br /&gt;
{{!}}-&lt;br /&gt;
! style=&amp;quot;width: 60%;&amp;quot; {{!}} Kód&lt;br /&gt;
! style=&amp;quot;width: 40%;&amp;quot; {{!}} Výsledek&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{!}} &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{ExampleArgs}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
{{!}} firstInvokeArg&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{!}} &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{ExampleArgs|firstTemplateArg}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
{{!}} firstTemplateArg&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{!}} &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{ExampleArgs|firstTemplateArg|secondTemplateArg}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
{{!}} firstTemplateArg secondTemplateArg&lt;br /&gt;
{{!)}}&lt;br /&gt;
&amp;lt;/dd&amp;gt;&lt;br /&gt;
&amp;lt;/dl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|text=&lt;br /&gt;
{{Ordered list&lt;br /&gt;
|1=&lt;br /&gt;
Pokud nastavíte obě možnosti &amp;lt;code&amp;gt;frameOnly&amp;lt;/code&amp;gt; a &amp;lt;code&amp;gt;parentOnly&amp;lt;/code&amp;gt;, modul nenačte z {{tlc|&amp;lt;nowiki&amp;gt;#invoke:...&amp;lt;/nowiki&amp;gt;}} vůbec žádné argumenty.&lt;br /&gt;
To pravděpodobně není to, co chcete.&lt;br /&gt;
|2=&lt;br /&gt;
V některých situacích nemusí být nadřazený rámec dostupný, např. pokud je &amp;lt;code&amp;gt;getArgs&amp;lt;/code&amp;gt; předán nadřazený rámec, nikoli aktuální rámec.&lt;br /&gt;
V tomto případě budou použity pouze argumenty rámce (pokud není nastaveno &amp;lt;code&amp;gt;parentOnly&amp;lt;/code&amp;gt;, v takovém případě nebudou použity žádné argumenty) a volby &amp;lt;code&amp;gt;parentFirst&amp;lt;/code&amp;gt; a &amp;lt;code&amp;gt;frameOnly&amp;lt;/code&amp;gt; nebudou mít žádný účinek.&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Wrappers ===&lt;br /&gt;
&lt;br /&gt;
Volba &amp;lt;code&amp;gt;wrappers&amp;lt;/code&amp;gt; se používá k určení omezeného počtu šablon jako &amp;#039;&amp;#039;šablony obalů&amp;#039;&amp;#039;, tedy šablon, jejichž jediným účelem je volání modulu.&lt;br /&gt;
Pokud modul zjistí, že je volán ze šablony wrapperu, zkontroluje pouze argumenty v nadřazeném rámci. Jinak bude kontrolovat pouze argumenty v rámci předaném &amp;lt;code&amp;gt;getArgs&amp;lt;/code&amp;gt;.&lt;br /&gt;
To umožňuje modulům volat buď pomocí {{tlc|&amp;lt;nowiki&amp;gt;#invoke:...&amp;lt;/nowiki&amp;gt;}} nebo prostřednictvím šablony wrapperu, aniž by došlo ke ztrátě výkonu spojené s nutností kontrolovat rámec i nadřazený rámec pro každé vyhledávání argumentů.&lt;br /&gt;
&lt;br /&gt;
Například jediný obsah {{tlx|Navbox}} (s výjimkou obsahu ve značkách {{tag|noinclude}}) je &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#invoke:Navbox|navbox}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
Nemá smysl kontrolovat argumenty předávané přímo příkazu {{tlc|&amp;lt;nowiki&amp;gt;#invoke:...&amp;lt;/nowiki&amp;gt;}} pro tuto šablonu, protože tam nikdy nebudou zadány žádné argumenty.&lt;br /&gt;
Můžeme se vyhnout kontrole argumentů předávaných do {{tlc|&amp;lt;nowiki&amp;gt;#invoke:...&amp;lt;/nowiki&amp;gt;}} použitím možnosti &amp;lt;code&amp;gt;parentOnly&amp;lt;/code&amp;gt;, ale pokud to uděláme, {{tlc|&amp;lt;nowiki&amp;gt;#invoke:...&amp;lt;/nowiki&amp;gt;}} nebude fungovat ani z jiných stránek.&lt;br /&gt;
Pokud by tomu tak bylo, pak by {{tmpl|0={{para|text|$1}}|nějaký text}} v kódu {{tmpl|0={{tlc|&amp;lt;nowiki&amp;gt;#invoke:Navbox&amp;lt;/nowiki&amp;gt;|navbox|3=text=$1}}|nějaký text}} byl zcela ignorován, bez ohledu na to, z jaké stránky byl použit.&lt;br /&gt;
Použitím možnosti &amp;lt;code&amp;gt;wrappers&amp;lt;/code&amp;gt; k určení [[Template:Navbox]] jako obalu můžeme zajistit, aby {{tmpl|0={{tlc|&amp;lt;nowiki&amp;gt;#invoke:Navbox&amp;lt;/nowiki&amp;gt;|main|3=text=$1}}|nějaký text}} fungovalo na většině stránek, aniž by bylo nutné, aby modul kontroloval argumenty na samotné stránce [[Template:Navbox]].&lt;br /&gt;
&lt;br /&gt;
Wrappers lze zadat buď jako řetězec, nebo jako pole řetězců.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local args = getArgs(frame, {&lt;br /&gt;
	wrappers = &amp;#039;Template:Wrapper template&amp;#039;&lt;br /&gt;
})&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local args = getArgs(frame, {&lt;br /&gt;
	wrappers = {&lt;br /&gt;
		&amp;#039;Template:Wrapper 1&amp;#039;,&lt;br /&gt;
		&amp;#039;Template:Wrapper 2&amp;#039;,&lt;br /&gt;
		-- Zde lze přidat libovolný počet šablon wrapper.&lt;br /&gt;
	}&lt;br /&gt;
})&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|text=&lt;br /&gt;
{{Ordered list&lt;br /&gt;
|1=&lt;br /&gt;
Modul automaticky zjistí, zda je volán z podstránky &amp;lt;code&amp;gt;/sandbox&amp;lt;/code&amp;gt; šablony wrapperu, takže není potřeba explicitně specifikovat stránky sandboxu.&lt;br /&gt;
|2=&lt;br /&gt;
Volba &amp;lt;code&amp;gt;wrappers&amp;lt;/code&amp;gt; fakticky změní výchozí hodnotu možností &amp;lt;code&amp;gt;frameOnly&amp;lt;/code&amp;gt; a &amp;lt;code&amp;gt;parentOnly&amp;lt;/code&amp;gt;.&lt;br /&gt;
Pokud by například &amp;lt;code&amp;gt;parentOnly&amp;lt;/code&amp;gt; bylo explicitně nastaveno na &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; s nastaveným &amp;lt;code&amp;gt;wrappers&amp;lt;/code&amp;gt;, volání přes šablony wrapperu by mělo za následek načtení argumentů rámce i nadřazených argumentů, ačkoli volání, která nejsou přes šablony wrapperu, by vedla k načtení pouze argumentů rámce.&lt;br /&gt;
|3=&lt;br /&gt;
Pokud je nastavena volba &amp;lt;code&amp;gt;wrappers&amp;lt;/code&amp;gt; a není k dispozici žádný nadřazený rámec, modul vždy získá argumenty z rámce předaného do &amp;lt;code&amp;gt;getArgs&amp;lt;/code&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Zápis do &amp;lt;code&amp;gt;args&amp;lt;/code&amp;gt; tabulky ===&lt;br /&gt;
Někdy může být užitečné zapsat nové hodnoty do tabulky &amp;lt;code&amp;gt;args&amp;lt;/code&amp;gt;.&lt;br /&gt;
To je možné s výchozím nastavením tohoto modulu.&lt;br /&gt;
(Mějte však na paměti, že obvykle je lepší styl kódování vytvořit novou tabulku s novými hodnotami a podle potřeby zkopírovat argumenty z tabulky &amp;lt;code&amp;gt;args&amp;lt;/code&amp;gt;.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
args.foo = &amp;#039;nějaká hodnota&amp;#039;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Toto chování je možné změnit pomocí možností &amp;lt;code&amp;gt;readOnly&amp;lt;/code&amp;gt; a &amp;lt;code&amp;gt;noOverwrite&amp;lt;/code&amp;gt;.&lt;br /&gt;
Pokud je nastaveno &amp;lt;code&amp;gt;readOnly&amp;lt;/code&amp;gt;, není možné do tabulky &amp;lt;code&amp;gt;args&amp;lt;/code&amp;gt; zapisovat vůbec žádné hodnoty.&lt;br /&gt;
Pokud je nastaveno &amp;lt;code&amp;gt;noOverwrite&amp;lt;/code&amp;gt;, pak je možné do tabulky přidávat nové hodnoty, ale není možné přidat hodnotu, pokud by to přepsalo nějaké argumenty předávané z {{tlc|&amp;lt;nowiki&amp;gt;#invoke:...&amp;lt;/nowiki&amp;gt;}}.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Ref_tags&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Tagy Ref ===&lt;br /&gt;
Tento modul používá [[mw:Special:MyLanguage/Extension:Scribunto/Lua reference manual#Metatables|metatables]] k načítání argumentů z {{tlc|&amp;lt;nowiki&amp;gt;#invoke:...&amp;lt;/nowiki&amp;gt;}}.&lt;br /&gt;
To umožňuje přístup k argumentům rámce i argumentům nadřazeného rámce bez použití funkce &amp;lt;code&amp;gt;pairs()&amp;lt;/code&amp;gt;.&lt;br /&gt;
To může pomoci, pokud vašemu modulu mohou být předány tagy {{xtag|ref}} jako vstup.&lt;br /&gt;
&lt;br /&gt;
Jakmile jsou tagy {{xtag|ref}} zpřístupněny z Lua, jsou zpracovány softwarem MediaWiki a reference se objeví v seznamu referencí ve spodní části článku.&lt;br /&gt;
Pokud váš modul vynechá referenční značku z výstupu, skončíte s fantomovou referencí – referencí, která se objeví v seznamu referencí, ale žádné číslo, které by na ni odkazovalo.&lt;br /&gt;
To byl problém s moduly, které používají &amp;lt;code&amp;gt;pairs()&amp;lt;/code&amp;gt; ke zjištění, zda použít argumenty z rámce nebo nadřazeného rámce, protože tyto moduly automaticky zpracovávají každý dostupný argument.&lt;br /&gt;
&lt;br /&gt;
Tento modul řeší tento problém tím, že umožňuje přístup k argumentům rámce i nadřazeného rámce, přičemž tyto argumenty načítá pouze tehdy, když je to nutné.&lt;br /&gt;
Problém však bude stále nastávat, pokud jinde ve svém modulu použijete &amp;lt;code&amp;gt;pairs(args)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Known_limitations&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Známá omezení ===&lt;br /&gt;
Používání metatabulek má i své stinné stránky.&lt;br /&gt;
Většina běžných nástrojů tabulky Lua nebude správně fungovat v tabulce &amp;lt;code&amp;gt;args&amp;lt;/code&amp;gt;, včetně operátoru &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt;, funkce &amp;lt;code&amp;gt;next()&amp;lt;/code&amp;gt; a funkcí v knihovně &amp;lt;code&amp;gt;table&amp;lt;/code&amp;gt;.&lt;br /&gt;
Pokud je jejich použití pro váš modul důležité, měli byste místo tohoto modulu použít svou vlastní funkci zpracování argumentů.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Tests&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Testy ==&lt;br /&gt;
{{ModuleQuality}}&lt;br /&gt;
&amp;lt;includeonly&amp;gt;{{Sandbox other||&lt;br /&gt;
&amp;lt;!-- Categories below this line; interwikis at Wikidata --&amp;gt;&lt;br /&gt;
[[Category:Lua metamodules{{#translation:}}]]&lt;br /&gt;
}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Module documentation pages{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
| #default=&lt;br /&gt;
  {{#invoke:Template translation|renderTranslatedTemplate|template=Module:Arguments/doc|noshift=1|uselang={{int:lang}}}}&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>mw&gt;FuzzyBot</name></author>
	</entry>
</feed>