Wikibooks
plwikibooks
https://pl.wikibooks.org/wiki/Wikibooks:Strona_g%C5%82%C3%B3wna
MediaWiki 1.47.0-wmf.17
first-letter
Media
Specjalna
Dyskusja
Wikipedysta
Dyskusja wikipedysty
Wikibooks
Dyskusja Wikibooks
Plik
Dyskusja pliku
MediaWiki
Dyskusja MediaWiki
Szablon
Dyskusja szablonu
Pomoc
Dyskusja pomocy
Kategoria
Dyskusja kategorii
Wikijunior
Dyskusja Wikijuniora
TimedText
TimedText talk
Moduł
Dyskusja modułu
Wydarzenie
Dyskusja wydarzenia
Niemiecki/Gramatyka/Użycie rodzajnika przy nazwach państw, miast i przy innych nazwach własnych
0
22652
553279
551711
2026-08-26T16:17:56Z
EdytaT
2664
/* w liczbie mnogiej (Plural) */
553279
wikitext
text/x-wiki
{{Podrozdział|[[Niemiecki|Język niemiecki]]<br>[[Niemiecki/Gramatyka|Gramatyka]]|Użycie rodzajnika przy nazwach państw, miast i przy innych nazwach własnych}}
== Użycie rodzajnika przy nazwach państw i miast ==
* (''Artikelgebrauch bei Staaten- und Städtenamen'')
* Większość nazw państw i miast to rzeczowniki rodzaju '''nijakiego''', przy których z reguły rodzajnik nie występuje. Do tej grupy należą również nazwy państw, w których występuje spójnik '''und''':
*: np. ''(das) [http://pl.wiktionary.org/wiki/Polen#Polen_.28j.C4.99zyk_niemiecki.29 Polen]'', ''(das) [http://pl.wiktionary.org/wiki/Deutschland Deutschland]'', ''(das) [http://pl.wiktionary.org/wiki/Frankreich Frankreich]'', ...
*: np. ''(das) [http://pl.wiktionary.org/wiki/Trinidad_und_Tobago Trinidad und Tobago]'', ''(das) [http://pl.wiktionary.org/wiki/St._Vincent_und_die_Grenadinen St. Vincent und die Grenadinen]'' ...
:* W ''Sing. Gen.'' rzeczowniki te przyjmują końcówkę ''-s'', np. ''die Hauptstadt Polens''.
:* Jeżeli rzeczownikowi temu towarzyszy określający go przymiotnik (lub inny wyszczególniający atrybut), to trzeba użyć rodzajnika, np. ''das mittelalterliche Frankreich''<ref name=Wahrig>[http://books.google.com/books?id=sZGwuIt2FEMC&pg=PA342&lpg=PA342&dq=Wahrig+Irak+Iran+Schweiz&source=bl&ots=kgsJQcYayk&sig=axCkhPsVFvxs4Jz08f4w7QrYwss&hl=pl&ei=cGjtTP6pO4X1sgbqtqDxDg&sa=X&oi=book_result&ct=result&resnum=1&ved=0CBQQ6AEwAA#v=onepage&q=L%C3%A4ndernamen%20im%20Neutrum&f=false praca zbiorowa, ''Wahrig - Richtiges Deutsch leicht gemacht'', wissensmedia GmbH, Gütersloh/München, ISBN 978-3-577-07566-4, ebook]</ref>, ''das Deutschland der Zukunft''<ref>[http://www.spiegel.de/spiegel/print/d-52637617.html Spiegel online, ''Das doppelte Dorf'', 20.08.2007]</ref>, ''so ein Deutschland''<ref>[http://www.spiegel.de/politik/deutschland/0,1518,379027,00.html Spiegel online, ''Der Zwischenkanzler'', 12.10.2005]</ref>.
:* W ''Sing. Gen.'' rzeczownik ten w towarzystwie przymiotnika traci jednak końcówkę ''-s''<ref name=Wahrig/>, np. ''die Bürger des mittelalterlichen Frankreich''.
* Przy nazwach państw będących rzeczownikami rodzaju '''żeńskiego''' zawsze występuje rodzajnik:
*: np. ''die Elfenbeinküste'', ''die Mongolei'', ''die Schweiz'', ''die Slowakei'', ''die Türkei'', ''die Ukraine'', ...
* Nieliczne nazwy państw to rzeczowniki rodzaju '''męskiego''', przy których użycie rodzajnika jest gramatycznie poprawne, ale w pismach oficjalnych używana jest wyłącznie forma bez rodzajnika<ref>[https://www.auswaertiges-amt.de/blob/199312/268090e2272b932f1964807b7be7d64f/staatennamen-data.pdf Auswärtiges Amt, ''Verzeichnis der Staatennamen für den amtlichen Gebrauch in der Bundesrepublik Deutschland'', 12.06.2023, dostęp 05.11.2023]</ref> , np.:
::* ''der [http://pl.wiktionary.org/wiki/Irak#Irak_.28j.C4.99zyk_niemiecki.29 Irak]/Irak''
::* ''der [http://pl.wiktionary.org/wiki/Iran#Iran_.28j.C4.99zyk_niemiecki.29 Iran]/Iran''
::* ''der [http://pl.wiktionary.org/wiki/Libanon#Libanon_.28j.C4.99zyk_niemiecki.29 Libanon]/Libanon''
::* ''der [http://pl.wiktionary.org/wiki/Oman#Oman.28j.C4.99zyk_niemiecki.29 Oman]/Oman''
::* ''der [http://pl.wiktionary.org/wiki/Senegal#Senegal_.28j.C4.99zyk_niemiecki.29 Senegal]/Senegal''
::* ''der [http://pl.wiktionary.org/wiki/Sudan#Sudan_.28j.C4.99zyk_niemiecki.29 Sudan]/Sudan''
::* ''der [http://pl.wiktionary.org/wiki/Tschad#Tschad_.28j.C4.99zyk_niemiecki.29 Tschad]/Tschad''
::* ''der [http://pl.wiktionary.org/wiki/Vatikan#Vatikan_.28j.C4.99zyk_niemiecki.29 Vatikan]/Vatikan''
:* W ''Sing. Gen.'' rzeczowniki te mogą przyjmować końcówkę ''s'', np. ''die Hauptstadt des Irans/des Iran''<ref name=Duden>[https://www.duden.de/sprachwissen/sprachratgeber/Staatennamen Duden online, ''Staatennamen'', 03.10.2018]</ref>; ''die Geschichte des Sudan''<ref name=Wahrig/>
:* Współcześnie rodzaj męski tych nazw jest w pewnych kontekstach wypierany przez rodzaj nijaki<ref name=Wahrig/>, jeżeli nazwa takiego państwa występuje w towarzystwie słowa określającego, np. ''„Das zweite Buch“ führt (...) in '''das moderne Irak''' des Jahres 2003''<ref>[https://dokumen.tips/documents/nachrichten-aus-berlin-und-umgebung-created-date-1182007-113616-am.html?page=5 Lokalnachrichten, ''Historische Romane von Zabern'', dostęp 05.11.2023]</ref>.
* '''''Kongo''''' jest nazwą, która może oznaczać dwa kraje: ''Republikę Kongo'' oraz ''Demokratyczną Republikę Konga''. Rzeczownik ten spotyka się zarówno w rodzaju męskim jak i nijakim. Dawniej był wyłącznie rodzaju męskiego, a obecnie jest coraz bardziej wypierany przez rodzaj nijaki. Użyty w rodzaju męskim podlega opisanym wyżej regułom dla nazw państw rodzaju męskiego, a w rodzaju nijakim zasadom dla nazw państw rodzaju nijakiego.
:* W pismach oficjalnych w odniesieniu do ''Demokratycznej Republiki Konga'' używa się wyłącznie pełnej oficjalnej nazwy tego państwa.
* W przypadku '''wieloczłonowych nazw''' państw, składających się z przymiotnika pospolitego i rzeczownika, rodzajnik występuje zawsze, np:
*: ''das Vereinigte Königreich'', ''die Vereinigten Staaten'', ...
:* Ich odmiana odpowiada ogólnym zasadom deklinacji.<ref name=Wahrig/>
== Użycie rodzajnika przy imionach i nazwiskach ==
=== w liczbie pojedynczej (''Singular'') ===
* Imiona i nazwiska występują z reguły bez rodzajnika.
:* Jeżeli imieniu lub nazwisku towarzyszy określający je przymiotnik (lub inny wyszczególniający atrybut), to trzeba użyć rodzajnika, np. ''die kleine Brigitte''.
* W ''Sing. Gen.'' generalnie występuje końcówka deklinacyjna ''-s'', np. ''das Leben Kafkas'', ''Angela Merkels Politik''.
:* Jedynie jeżeli w ''Sing. Gen.'' imię lub nazwisko występuje z rodzajnikiem, to traci końcówkę ''-s'', np. ''die Eltern des kranken Otto''.
:* W ''Sing. Gen.'' przy wymienianiu imion lub nazwisk jednej osoby końcówka deklinacyjna występuje tylko przy ostatnim członie, np. ''Wolfgang Amadeus Mozarts Briefe''.
:* Imiona i nazwiska zakończone na ''-s, -ß, -z, -x'' tworzą ''Sing. Gen.'' w piśmie poprzez dodanie apostrofu (np. ''Marx' Werke''), a w mowie najczęściej przez dodanie przyimka ''von'' i zmianę przypadku na ''Dat.'' (np. ''das Auto von Max'').
:* W połączeniu z tytułami użytymi z rodzajnikiem tylko tytuły ulegają deklinacji, natomiast imiona i nazwiska pozostają nieodmienne (np. ''die These des Professors Sauerland''), ale jeżeli tytuł występuje bez rodzajnika, to w ''Sing. Gen.'' końcówka ''-s'' jest dodawana do nazwiska, np. ''der Vortrag Frau Doktor Majewskas''.
=== w liczbie mnogiej (''Plural'') ===
* {{TODO}} [https://de.wiktionary.org/wiki/Hilfe:Vor-_und_Nachnamen/Grammatik_der_deutschen_Namen zob.]
==== Imiona żeńskie ====
* kończące się na ''-(i)e'' utrzymują końcówkę ''-n'' lub ''-s'', np:
:* ''die Ingen / Inges'', ''die Sofien / Sofies''
== Źródła ==
<references/>
6jruu5o2b7phkl8kjpbredllsjd1w0o
Szablon:Wikipedia2
10
31216
553313
552132
2026-08-27T08:28:50Z
Persino
2851
553313
wikitext
text/x-wiki
<includeonly>{{#if:{{{ref|}}}||{{Div|styl=float: left;|{{Plik|plik=Wikipedia-logo-v2.svg|rozmiar=20px|opis=Wikipedia}}}}
:}}Zobacz w {{lo|_|Wikipedii|k=w}} hasł{{#if:{{#ifexpr:{{#invoke:Ramka|IleJestTakichOdpowiednikowychZmiennych|zmienna=strona|numerowane=tak}}>1|tak}}|a{{Br}}|o}} {{#invoke:Ramka|Powtarzaj|różne=tak|wytnij=tak|parametry=strona=tak;dopełniacz=tak|dodatkowe=dopełniacz|{{((}}#ifeq:{{((}}_{{))}}{{!}}{{#invoke:Ramka|MinimalnyNumerSpośródNieodpowiednikowychZmiennych|zmienna=strona|odpowiednik=tak}}{{!}}{{!}}{{((}}Br{{))}}{{))}}{{!((}}w:{{(((}}{{((}}_{{))}}{{!}}{{(((}}strona{{((}}__{{))}}{{)))}}{{)))}}{{!}}{{(((}}dopełniacz{{((}}__{{))}}{{!}}{{((}}PAGENAME{{))}}{{)))}}{{))!}}}}</includeonly><noinclude>{{Dokumentacja}}</noinclude>
jy9xtdti1ih4j2k2j8aapwh2by16feb
553314
553313
2026-08-27T08:30:09Z
Persino
2851
553314
wikitext
text/x-wiki
<includeonly>{{#if:{{{ref|}}}||{{Div|styl=float: left;|{{Plik|plik=Wikipedia-logo-v2.svg|rozmiar=20px|opis=Wikipedia}}}}
:}}Zobacz w {{lo|_|Wikipedii|k=w}} hasł{{#if:{{#ifexpr:{{#invoke:Ramka|IleJestTakichOdpowiednikowychZmiennych|zmienna=strona|numerowane=tak}}>1|tak}}|a{{Br}}|o}} {{#invoke:Ramka|Powtarzaj|różne=tak|wytnij=tak|parametry=strona=tak;dopełniacz=tak|dodatkowe=dopełniacz|{{((}}#ifeq:{{((}}_{{))}}{{!}}{{#invoke:Ramka|MinimalnyNumerSpośródOdpowiednikowychZmiennych|zmienna=strona|numerowane=tak}}{{!}}{{!}}{{((}}Br{{))}}{{))}}{{!((}}w:{{(((}}{{((}}_{{))}}{{!}}{{(((}}strona{{((}}__{{))}}{{)))}}{{)))}}{{!}}{{(((}}dopełniacz{{((}}__{{))}}{{!}}{{((}}PAGENAME{{))}}{{)))}}{{))!}}}}</includeonly><noinclude>{{Dokumentacja}}</noinclude>
6n1nv3u9vu2qdn64m8d4yt918vmm7u1
553331
553314
2026-08-27T09:47:44Z
Persino
2851
553331
wikitext
text/x-wiki
<includeonly>{{#if:{{{ref|}}}||{{Div|styl=float: left;|{{Plik|plik=Wikipedia-logo-v2.svg|rozmiar=20px|opis=Wikipedia}}}}
:}}Zobacz w {{lo|_|Wikipedii|k=w}} hasł{{#if:{{#ifexpr:{{#invoke:Ramka|IleJestTakichOdpowiednikowychZmiennych|zmienna=strona|numerowane=tak}}>1|tak}}|a{{Br}}|o}} {{#invoke:Ramka|Powtarzaj|różne=tak|wytnij=tak|parametry=strona=tak;dopełniacz=tak|dodatkowe=dopełniacz|{{((}}#ifeq:{{((}}_{{))}}{{!}}{{#invoke:Ramka|MinimalnyNumerSpośródOdpowiednikowychZmiennych|zmienna=strona|numerowane=tak}}{{!}}{{!}}{{((}}Br{{))}}{{))}}{{!((}}w:{{(((}}{{((}}_{{))}}{{!}}{{(((}}strona{{((}}__{{))}}{{)))}}{{)))}}{{!}}{{(((}}dopełniacz{{((}}__{{))}}{{!}}{{(((}}{{((}}_{{))}}{{!}}{{(((}}strona{{((}}__{{))}}{{)))}}{{)))}}{{)))}}{{))!}}}}</includeonly><noinclude>{{Dokumentacja}}</noinclude>
3uj7gpe57nb2uuh3ndxm6aykioa2pu8
Szablon:Wikipedia2/opis
10
31575
553332
546310
2026-08-27T09:54:58Z
Persino
2851
/* Opis parametrów */
553332
wikitext
text/x-wiki
{{Podstrona dokumentacji}}
{{Szablony siostrzanych projektów}}
<!-- DODAWAJ KATEGORIE NA DOLE STRONY -->
W porównaniu z szablonem {{s|Wikipedia}} umożliwia dodanie więcej linków (dowolną liczbę) do artykułów w Wikipedii.
== Użycie ==
== Opis parametrów ==
* {{Code|stronaX}} - tytuł strony w Wikipedii,
* {{Code|dopełniaczX}} - wyświetlany tytuł linka, jeśli nie podano, to tytuł tego jest względem tytułu strony.
X to numer od 1 do dowolnej liczby. Może być też para parametrów bez numeru, lub taki pierwszy argument bez tego drugiego, jeśli nie podano tytułu, wtedy tytuł wyświetlanej strony jest względem tego pierwszego.
== Przykład ==
{{Pre|{{s|Wikipedia2|strona1{{=}}Wikipedia|dopełniacz1{{=}}Wikipedia|strona2{{=}}Wikibooks|dopełniacz2{{=}}Wirtualne podręczniki|strona3{{=}}Wikinews|dopełniacz3{{=}}Wikinews}}}}
{{Wikipedia2|strona1=Wikipedia|dopełniacz1=Wikipedia|strona2=Wikibooks|dopełniacz2=Wirtualne podręczniki|strona3=Wikinews|dopełniacz3=Wikinews}}
== Błędy ==
Błędy należy zgłaszać na stronie {{kwestie techniczne}}.
== Zobacz też ==
; Te szablony dodają ramkę z odnośnikiem do strony w Wikipedii
* {{s|Wikipedia}} - do hasła,
* {{s|Wikipedia kat}} - do kategorii.
{{BrClear}}
<includeonly><!--
++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII -->
{{Kategorie
| Szablony siostrzanych projektów
| Omiń w druku
}}
</includeonly>
rhjp41rem4h5r3tww28jda7kl3n5qn2
Moduł:Ramka
828
44224
553310
551363
2026-08-27T08:20:12Z
Persino
2851
553310
Scribunto
text/plain
local p={};
local function ParserBlokowy(frame, co_ma_wywolac)
local pf=frame:getParent();
local nazwa_szablonu_modulu_lub_parsera="Nazwa";
local szablon_modul_lub_parser=frame.args[nazwa_szablonu_modulu_lub_parsera];
local argumenty_szablonu_modulu_lub_parsera={};
local tabela_by_sprawdzic_czy_powstarzaja_sie_parametry_dzieci_i_rodzica={};
local ramka_dane_modul=mw.loadData("Module:Ramka/dane");
local bez_parametrowa_tablica=ramka_dane_modul.bez_parametrowa_tablica;
local bez_parametrow={};
if(co_ma_wywolac==1)then bez_parametrow["Funkcja"]=true;end;
local parametry_modul=require("Module:Parametry");
local tab_usun_parametry;
local czy_usun=frame.args["usuń z parametrów ramki"];
if(parametry_modul.CzyTak(czy_usun))then
tab_usun_parametry={};
local iter=mw.text.gsplit(czy_usun,";",true);
for name in iter do
name=mw.ustring.gsub(name,"^[%s_]*","");
name=mw.ustring.gsub(name,"[%s_]*$","");
name=tonumber(name) or name;
tab_usun_parametry[name]=true;
end;
end;
for nazwa_parametru,wartosc_parametru in pairs(frame.args) do
if(((not tab_usun_parametry)or(not tab_usun_parametry[nazwa_parametru]))
and((type(nazwa_parametru)=="number")or((type(nazwa_parametru)=="string")and(not bez_parametrow[nazwa_parametru])and(not bez_parametrowa_tablica[nazwa_parametru])))
)then
tabela_by_sprawdzic_czy_powstarzaja_sie_parametry_dzieci_i_rodzica[nazwa_parametru]=nazwa_parametru;
argumenty_szablonu_modulu_lub_parsera[nazwa_parametru]=wartosc_parametru;
end;
end;
local szablonowe_modul=require("Module:Szablonowe");
local tabela_bez_argumentow=p.RozpakujArgumenty(frame.args["bez argumentów rodzica"]);
local zmienna_z_parametrami_rodzica=frame.args["zmienna z parametrami rodzica"];
local czy_przekazac_parametry_rodzica=zmienna_z_parametrami_rodzica and parametry_modul.CzyTak(zmienna_z_parametrami_rodzica) or false;
----
local frame_sprawdzenia_args=frame.args["bez dodatkowych sprawdzeń"];
local bez_dodatkowych_sprawdzen;
local czy_podano_bez_dodatkowych_sprawdzen;
if(frame_sprawdzenia_args)then
czy_podano_bez_dodatkowych_sprawdzen=frame_sprawdzenia_args and true or false;
bez_dodatkowych_sprawdzen=parametry_modul.CzyTak(frame_sprawdzenia_args);
else
local frame_sprawdzenia_pf_args=pf.args["bez dodatkowych sprawdzeń"];
if(frame_sprawdzenia_pf_args)then
czy_podano_bez_dodatkowych_sprawdzen=frame_sprawdzenia_pf_args and true or false;
bez_dodatkowych_sprawdzen=parametry_modul.CzyTak(frame_sprawdzenia_pf_args);
end;
end;
local z_dodatkowymi_sprawdzeniami=not(bez_dodatkowych_sprawdzen);
---
local PakujArgumentyRamki = function(args)
local czy_tylko_ze_zmienna_bez_argumentow_szablonu=args["zmienna z argumentami ramki"];
if(not parametry_modul.CzyTak(czy_tylko_ze_zmienna_bez_argumentow_szablonu))then return args["bez argumentów szablonu"];end;
local tabelka1={};
for nazwa_parametru,_ in pairs(args)do
if((type(nazwa_parametru)=="number")or((type(nazwa_parametru)=="string")and(not bez_parametrow[nazwa_parametru])and(not bez_parametrowa_tablica[nazwa_parametru])))then
tabelka1[nazwa_parametru]=true;
end;
end;
local tabelka2=(args["bez argumentów szablonu"]) and p.RozpakujArgumenty(args["bez argumentów szablonu"]);
local tabelka=parametry_modul["ŁączDwieTabele"](tabelka1,tabelka2);
local tablica_mikroszablonow={
[";"]="{{+}}",
};
local str="";
for name,_ in pairs(tabelka) do
str=str..((str~="")and ";" or "")..mw.ustring.gsub(mw.text.trim(name),".",tablica_mikroszablonow);
end;
return str,tabelka2;
end;
local bez_argumentow_szablonu=nil;
if(czy_przekazac_parametry_rodzica)then
if(z_dodatkowymi_sprawdzeniami)then
local str=p.PakujParametry(pf.args);
argumenty_szablonu_modulu_lub_parsera["parametry rodzica"]=str;
end;
argumenty_szablonu_modulu_lub_parsera["potomek"]="tak";
argumenty_szablonu_modulu_lub_parsera["bez argumentów szablonu"],bez_argumentow_szablonu=PakujArgumentyRamki(frame.args);
if(czy_podano_bez_dodatkowych_sprawdzen)then
argumenty_szablonu_modulu_lub_parsera["bez dodatkowych sprawdzeń"]=bez_dodatkowych_sprawdzen and "tak" or "";
end;
argumenty_szablonu_modulu_lub_parsera["nazwa szablonu rodzica"]=pf.args["nazwa szablonu rodzica"] or szablonowe_modul.NazwaSzablonu(pf:getTitle());
else
local function ZmiennaZNazwaSzablonuRodzica()
local czy_ze_nazwa_szablonu=frame.args["zmienna z nazwą szablonu rodzica"];
if(parametry_modul.CzyTak(czy_ze_nazwa_szablonu))then
argumenty_szablonu_modulu_lub_parsera["nazwa szablonu rodzica"]=pf.args["nazwa szablonu rodzica"] or szablonowe_modul.NazwaSzablonu(pf:getTitle());
end;
end;
local z_argumentami_najwyzszego_rodzica=not parametry_modul.CzyTak(tabela_bez_argumentow["nie potomek"]);
if(z_argumentami_najwyzszego_rodzica)then
local potomek=parametry_modul.CzyTak(pf.args["potomek"]);
if(potomek)then
local parametry_rodzic=pf.args["parametry rodzica"];
if(parametry_rodzic)then
if(z_dodatkowymi_sprawdzeniami)then
argumenty_szablonu_modulu_lub_parsera["parametry rodzica"]=parametry_rodzic;
end;
argumenty_szablonu_modulu_lub_parsera["potomek"]="tak";
argumenty_szablonu_modulu_lub_parsera["bez argumentów szablonu"],bez_argumentow_szablonu=PakujArgumentyRamki(frame.args);
if(czy_podano_bez_dodatkowych_sprawdzen)then
argumenty_szablonu_modulu_lub_parsera["bez dodatkowych sprawdzeń"]=bez_dodatkowych_sprawdzen and "tak" or "";
end;
argumenty_szablonu_modulu_lub_parsera["nazwa szablonu rodzica"]=pf.args["nazwa szablonu rodzica"] or szablonowe_modul.NazwaSzablonu(pf:getTitle());
else
ZmiennaZNazwaSzablonuRodzica();
end;
else
ZmiennaZNazwaSzablonuRodzica();
end;
else
ZmiennaZNazwaSzablonuRodzica()
end;
end;
local czy_bez_argumentow_nienazwanych_rodzica=parametry_modul.CzyTak(frame.args["bez argumentów nienazwanych rodzica"]);
local czy_parametry_pudelka=parametry_modul.CzyTak(frame.args["parametry funkcji modułu pudełek"]);
local czy_parametry_pudelka_podstawowe=parametry_modul.CzyTak(frame.args["parametry podstawowe funkcji modułu pudełek"])
local pudelko_modul=require("Module:Pudełko");
for nazwa_parametru,wartosc_parametru in pairs(pf.args) do
if(((type(nazwa_parametru)=="number")or((type(nazwa_parametru)=="string")and(not bez_parametrow[nazwa_parametru])and(not bez_parametrowa_tablica[nazwa_parametru])))and((not bez_argumentow_szablonu)or(not bez_argumentow_szablonu[nazwa_parametru])))then
if((not tabela_by_sprawdzic_czy_powstarzaja_sie_parametry_dzieci_i_rodzica[nazwa_parametru])
and(not tabela_bez_argumentow[nazwa_parametru])
and((not czy_bez_argumentow_nienazwanych_rodzica)or((czy_bez_argumentow_nienazwanych_rodzica)and(not tonumber(nazwa_parametru)))
))then
local czy_dodac_do_parametrow;
if czy_parametry_pudelka or czy_parametry_pudelka_podstawowe then
local czy_dodac_do_parametrow=((not czy_parametry_pudelka_podstawowe)
and mw.ustring.match(nazwa_parametru,"^nazwa przestrzeni nazw %d+$")
and not pudelko_modul.CzyNiepoprawnaNazwa(wartosc_parametru))
or (mw.ustring.match(nazwa_parametru,"^nazwa przestrzeni nazw$")
and not pudelko_modul.CzyNiepoprawnaNazwa(wartosc_parametru))
or ((not czy_parametry_pudelka_podstawowe)
and mw.ustring.match(nazwa_parametru,"^nazwa jednostki %d+$")
and wartosc_parametru~=""
and not pudelko_modul.CzyNiepoprawnaNazwa(wartosc_parametru))
or (mw.ustring.match(nazwa_parametru,"^nazwa jednostki$")
and wartosc_parametru~=""
and not pudelko_modul.CzyNiepoprawnaNazwa(wartosc_parametru))
or ((not czy_parametry_pudelka_podstawowe)
and mw.ustring.match(nazwa_parametru,"^typ jednostki %d+$")
and wartosc_parametru~=""
and not pudelko_modul.CzyNiepoprawnaNazwa(wartosc_parametru))
or (mw.ustring.match(nazwa_parametru,"^typ jednostki$")
and wartosc_parametru~=""
and not pudelko_modul.CzyNiepoprawnaNazwa(wartosc_parametru));
if(czy_dodac_do_parametrow)then
argumenty_szablonu_modulu_lub_parsera[nazwa_parametru]=wartosc_parametru;
end;
else
argumenty_szablonu_modulu_lub_parsera[nazwa_parametru]=wartosc_parametru;
end;
end;
end;
end;
if(co_ma_wywolac==0)then
return pf:expandTemplate{title=szablon_modul_lub_parser,args=argumenty_szablonu_modulu_lub_parsera};
elseif(co_ma_wywolac==1)then
local frame2=pf:newChild{args=argumenty_szablonu_modulu_lub_parsera};
local funkcja=frame.args["Funkcja"];
return require("Module:"..szablon_modul_lub_parser)[funkcja](frame2);
elseif(co_ma_wywolac==2)then
return pf:callParserFunction{name=szablon_modul_lub_parser,args=argumenty_szablonu_modulu_lub_parsera};
else
return pf:expandTemplate{title=szablon_modul_lub_parser,args=argumenty_szablonu_modulu_lub_parsera};
end;
end;
local function BudowaSzereguZDanych(frame,tab_lancuch,minimum,maksimum)
local parametry_modul=require("Module:Parametry");
local czy_akapit=parametry_modul.CzyTak(frame.args["akapit"]);
local akapit=czy_akapit and "\n\n" or "";
local przecinek=parametry_modul.CzyTak(frame.args["przecinek"]) and ", " or "";
local czy_nowa_linia=parametry_modul.CzyTak(frame.args["nowa linia"]);
local nowa_linia=czy_nowa_linia and "\n" or "";
local wyliczanka=parametry_modul.CzyTak(frame.args["wyliczanka"]);
local przecinek_na_poczatku=parametry_modul.CzyTak(frame.args["początek"]);
local myslnik=parametry_modul.CzyTak(frame.args["myślnik"]);
local warunkowe=parametry_modul.CzyTak(frame.args["warunkowe"]);
local lancuch_znakow="";
local koniec=#tab_lancuch;
for i=1,koniec,1 do
local lancuch=tab_lancuch[i];
lancuch=mw.ustring.gsub(lancuch,"{{min}}",minimum);
lancuch=mw.ustring.gsub(lancuch,"{{max}}",maksimum);
if(not wyliczanka)then
lancuch_znakow=lancuch_znakow..((i~=1)and przecinek or ((przecinek_na_poczatku)and przecinek or ((myslnik)and " - " or "")));
else
lancuch_znakow=lancuch_znakow..((i==1)and ((przecinek_na_poczatku)and ", " or "") or ((i<koniec)and ", " or " i "));
end;
lancuch_znakow=lancuch_znakow..((i~=1)and (czy_akapit and akapit or nowa_linia) or "")..lancuch;
end;
if(warunkowe)then
local parametr=parametry_modul.CzyTak(frame.args["parametr"]);
return p.InstrukcjeWarunkowe(lancuch_znakow,true,parametr);
else
return lancuch_znakow;
end;
end;
p.InstrukcjeWarunkowe = function(ciag,derektywy_specjalne,derektywy_parametrowe)
local ciag_warunkowe_fun=function(s)
local function ParserWiki(s,wywolanie)
local czy_parser=mw.ustring.match(s,wywolanie);
if(czy_parser)then
return mw.getCurrentFrame():preprocess(s);
end;
end
return ParserWiki(s,"^({{%s*#if:[^{}]*}})$")
or ParserWiki(s,"^({{%s*#ifeq:[^{}]*}})$")
or ParserWiki(s,"^({{%s*#switch:[^{}]*}})$")
or ParserWiki(s,"^({{%s*#ifexpr:[^{}]*}})$")
or ParserWiki(s,"^({{%s*#expr:[^{}]*}})$")
or ParserWiki(s,"^({{%s*#iferror:[^{}]*}})$")
or ParserWiki(s,"^({{%s*#ifexist:[^{}]*}})$")
or nil;
end;
local ciag,_=mw.ustring.gsub(ciag,"{{[^{}]+}}",ciag_warunkowe_fun);
if(derektywy_specjalne)then
local ramka_dane_modul=mw.loadData("Module:Ramka/dane");
local tab_zamieniane=ramka_dane_modul.tablica_warunkowe_i_parametr;
ciag=mw.ustring.gsub(ciag,"(__[^_]+__)",function(s)
local tab_szablon=tab_zamieniane[s];
if(tab_szablon)then
if(not derektywy_parametrowe)then return tab_szablon[1];end;
return tab_szablon[2];
end;
return nil;
end);
return ciag;
end;
return ciag;
end;
p.RozpakujArgumenty = function(zmienna_z_argumentami)
local tablica_mikroszablonow={
["{{+}}"]=";",
};
local tabela_bez_argumentow={};
local parametry_modul=require("Module:Parametry");
if(parametry_modul.CzyTak(zmienna_z_argumentami))then
local iter=mw.text.gsplit(zmienna_z_argumentami,";",true);
local podlancuch;
for podlancuch in iter do
podlancuch=mw.text.trim(podlancuch);
local liczba=tonumber(podlancuch);
tabela_bez_argumentow[liczba or mw.ustring.gsub(podlancuch,"{{[^{}]+}}",tablica_mikroszablonow)]=true;
end;
end;
return tabela_bez_argumentow;
end;
p.PakujParametry = function(args)
return mw.text.jsonEncode(args,mw.text.JSON_PRESERVE_KEYS);
end;
p.RozpakujParametry = function (zmienna_z_parametrami)
return mw.text.jsonDecode(zmienna_z_parametrami,mw.text.JSON_PRESERVE_KEYS);
end;
p["Rozwiń"] = function(frame)
return frame:getParent():preprocess(frame.args[1]);
end;
p.Log = function(frame)
local parametry_modul=require("Module:Parametry");
local czy_zwracac=parametry_modul.CzyTak(frame.args["wikitext"]);
local wikitekst=frame.args["log"];
mw.log(wikitekst);
return (czy_zwracac and wikitekst or "");
end;
p.Szablon = function(frame)
return ParserBlokowy(frame,0);
end;
p["Moduł"] = function(frame)
return ParserBlokowy(frame, 1);
end;
p.Parser = function(frame)
return ParserBlokowy(frame, 2);
end;
p.Q =function(frame)
local parametry_modul=require("Module:Parametry");
local args_szablon=parametry_modul.PobierzArgsParametry(frame);
local args_ksiazka={};
for name,value in pairs(args_szablon)do
if(not parametry_modul.TypeNumber(name))then
args_ksiazka[name]=value;
elseif(name>1)then
args_ksiazka[name-1]=value;
elseif(name~=1)then
args_ksiazka[name]=value;
end;
end;
if(parametry_modul.CzyTak(frame.args["wyspecjalizowana"]))then
args_ksiazka["wyspecjalizowana"]=nil;
end;
local szablon=args_szablon[1];
local szablon_ksiazka=p["N"]{args={[1]=szablon,}};
local pf=frame:getParent();
return pf:expandTemplate{title=szablon_ksiazka,args=args_ksiazka,};
end;
p.N=function(frame)
local parametr=frame.args[1];
local parametry_modul=require("Module:Parametry");
local parametr_p=tonumber(frame.args["p"]) or 0;
local parametr_n=parametry_modul.CzyTak(frame.args["n"]);
local szablon=parametry_modul["CzyTakCiąg"](parametr) and parametr or ((parametr_p==1) and "Nieznany moduł" or ((parametr_p==2) and "Nieznana kategoria" or "Nieznany szablon"));
szablon=parametry_modul["Odstępy"]{[1]=szablon,[2]="tak",};
szablon=mw.getContentLanguage():ucfirst(szablon);
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
local przestrzen=((parametr_p==1) and nazwy_np_modul.Module or ((parametr_p==2) and nazwy_np_modul.Category or nazwy_np_modul.Template));
local szablon_ksiazka=przestrzen..":Książka:"..szablon;
local parametr_k=parametry_modul.CzyTak(frame.args["k"]);
if(not parametr_k)then
local techniczne_modul=require("Module:Techniczne");
local liczba_title,tab_title=techniczne_modul.PoliczZbiory{[1]=szablon_ksiazka,tekst=true,};
szablon_ksiazka=((liczba_title>0)and (szablon_ksiazka) or (przestrzen..":"..szablon));
end;
if(parametr_n)then
local nazwy_modul=require("Module:Nazwy");
szablon_ksiazka=nazwy_modul["NAZWASTRONY"]{nazwa=szablon_ksiazka,};
end;
return szablon_ksiazka;
end;
p.A=function(frame)
local parametr=frame.args[1];
local parametry_modul=require("Module:Parametry");
local parametr_p=parametry_modul.CzyTak(frame.args["p"]);
local przestrzen;
if(parametr_p)then
local tabela_nazw={};
local nazwy_modul=require("Module:Nazwy");
przestrzen=nazwy_modul["NAZWAPRZESTRZENI"](parametr,tabela_nazw);
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
if((przestrzen~=nazwy_np_modul.Template)and(przestrzen~=nazwy_np_modul.Module)and(przestrzen~=nazwy_np_modul.Category))then
return parametr;
end;
parametr=nazwy_modul["NAZWASTRONY"](parametr,tabela_nazw);
end;
parametr=mw.ustring.gsub(parametr,"^[Kk]siążka:","");
parametr=(parametr_p and ((przestrzen~="") and (przestrzen..":") or "") or "")..parametr;
return parametr;
end;
p.Powtarzaj = function(frame)
local pf=frame:getParent();
local parametry_modul=require("Moduł:Parametry");
local czy_parametry=parametry_modul.CzyTak(frame.args["parametry"]);
local tabela={};
local zacznij_nazwane;
local parametry_modul=require("Module:Parametry");
if(czy_parametry)then
local FormatujTabela=function(parametr_tab)
return{
parametry_modul.CzyTak(parametr_tab[1]),
parametry_modul.CzyTak(parametr_tab[2]),
tonumber(parametr_tab[3]) or 0,
tonumber(parametr_tab[4]),
tonumber(parametr_tab[5]),
};
end;
local WstawDoTabeli=function(znaczenia_parametr)
local parametr,wartosc=mw.ustring.match(znaczenia_parametr,"%s*([%w_%-][%w%s_%-]-)%s*=%s*(.-)%s*$");
if(parametr and wartosc)then
if((not tonumber(parametr))and(not tabela[parametr]))then
local parametr_tab=mw.text.split(wartosc,"%s*,%s*",false);
tabela[parametr]=FormatujTabela(parametr_tab);
end;
else
if((not tonumber(znaczenia_parametr))and(not tabela[znaczenia_parametr]))then
tabela[znaczenia_parametr]={};
end;
end;
end;
local iter=mw.text.gsplit(mw.text.trim(frame.args["parametry"]),"%s*;%s*",false);
local czy=true;
for znaczenia_parametr in iter do
znaczenia_parametr=mw.text.trim(znaczenia_parametr);
local czy_nie_omijac=parametry_modul.CzyTak(znaczenia_parametr);
if(czy_nie_omijac)then
if(czy)then
zacznij_nazwane=tonumber(znaczenia_parametr);
czy=false;
if(not zacznij_nazwane)then
zacznij_nazwane=0;
WstawDoTabeli(znaczenia_parametr);
end;
else
WstawDoTabeli(znaczenia_parametr);
end;
end;
end;
end;
local tabela_dodatkowe={};
local czy_dodatkowe=parametry_modul.CzyTak(frame.args["dodatkowe"]);
if(czy_dodatkowe)then
local iter=mw.text.gsplit(mw.text.trim(frame.args["dodatkowe"]),"%s*;%s*",false);
for name in iter do
tabela_dodatkowe[name]=true;
end;
end;
if(not zacznij_nazwane)then zacznij_nazwane=0;end;
local function LiczbaZmiennychOOgolniePodstawieParametru(podstawa_parametru_wyszukiwana)
local args=pf.args;
local maksymalna_liczba_nazwy_danego_parametru=0;
for nazwa_parametru, wartosc_parametru in pairs(args)do
local czy_jedynka=false;
if(type(nazwa_parametru)=="string")then
local nazwa_podstawy_parametru,spacja,liczba=mw.ustring.match(nazwa_parametru,"^([%a%-%s]*[%a%-])(%s?)(%d+)$");
if(not nazwa_podstawy_parametru and not spacja and not liczba)then
nazwa_podstawy_parametru=nazwa_parametru;
spacja="";
liczba=1;
czy_jedynka=true;
end;
local subtab=tabela[nazwa_podstawy_parametru];
if(subtab)then
local nie_spacja_parametru=subtab[1];
local czy_z_jedynka=subtab[2];
liczba=tonumber(liczba) or 0;
if((not nie_spacja_parametru and (((spacja==" ")and ((liczba>1)or((not czy_jedynka)and(czy_z_jedynka))or((not czy_z_jedynka)and(not czy_jedynka)))) or(((not czy_z_jedynka)and(czy_jedynka))and(spacja=="" and liczba==1))))
or (nie_spacja_parametru and (((spacja=="")and ((liczba>1)or((not czy_jedynka)and(czy_z_jedynka))or((not czy_z_jedynka)and(not czy_jedynka)))) or(((not czy_z_jedynka)and(czy_jedynka))and(spacja=="" and liczba==1))))
)then
if(((podstawa_parametru_wyszukiwana) and (nazwa_podstawy_parametru==podstawa_parametru_wyszukiwana))or(not podstawa_parametru_wyszukiwana))then
maksymalna_liczba_nazwy_danego_parametru=math.max(maksymalna_liczba_nazwy_danego_parametru,liczba);
end;
end;
end;
end;
end;
return maksymalna_liczba_nazwy_danego_parametru;
end;
local MaksymalnyLiczonyNumerElementowPodanychPodstawNazwyParametrow=function()
local maksimum_all=0;
for wartosc_parametru,dane_parametru in pairs(tabela)do
if(parametry_modul.TypeString(wartosc_parametru))then
if(not tabela_dodatkowe[wartosc_parametru])then
local maksymalna_liczba_nazwy_danego_parametru=LiczbaZmiennychOOgolniePodstawieParametru(wartosc_parametru);
local maksimum=maksymalna_liczba_nazwy_danego_parametru-(dane_parametru[3] or 0);
maksimum_all=math.max(maksimum-zacznij_nazwane,maksimum_all);
end;
end;
end;
return maksimum_all;
end;
local zacznij_na_poczatku,skoncz_na_koncu;
local tekst_do_analizy=frame.args[1];
if(not frame.args[1])then return "(brak parametru do analizy)";end;
local czy_tekst=parametry_modul.CzyTak(tekst_do_analizy);
if(not czy_tekst)then return "(parametr do analizy pusty)";end;
local start=frame.args["start"];
local koniec=frame.args["koniec"];
local czy_start=parametry_modul.CzyTak(start);
local czy_koniec=parametry_modul.CzyTak(koniec);
local zaznacz=frame.args["zaznacz"];
local tabela_zaznacz={};
if(zaznacz)then
local iter=mw.text.gsplit(zaznacz,"%s*;%s*",false)
for liczba in iter do
tabela_zaznacz[#tabela_zaznacz+1]=tonumber(liczba) or 0;
end;
end;
local czy_rozne=parametry_modul.CzyTak(frame.args["różne"]);
local czy_ma_nazwane;
local function Wylicz_skoncz_na_koncu()
czy_ma_nazwane=parametry_modul["CzySąElementyNazwaneTablicy"](tabela);
if(czy_ma_nazwane)then
if(czy_rozne)then
local maks_numer=parametry_modul.CzyTak(frame.args["maksimum numeracyjne"]);
if(not maks_numer)then
return math.max(MaksymalnyLiczonyNumerElementowPodanychPodstawNazwyParametrow(),parametry_modul.MaksymalnaLiczbaParametruNienazwanegoTablicy(pf.args));
else
return parametry_modul.MaksymalnaLiczbaParametruNienazwanegoTablicy(pf.args);
end;
else
return MaksymalnyLiczonyNumerElementowPodanychPodstawNazwyParametrow();
end;
else
return parametry_modul.MaksymalnaLiczbaParametruNienazwanegoTablicy(pf.args);
end;
end;
local skoncz_na_koncu_wyliczona=Wylicz_skoncz_na_koncu();
if(not czy_koniec)then
skoncz_na_koncu=skoncz_na_koncu_wyliczona;
else
skoncz_na_koncu=math.max(math.min(skoncz_na_koncu_wyliczona, tonumber(koniec) or 0),0);
end;
zacznij_na_poczatku=math.max(tonumber(start) or 1,1);
if(zacznij_na_poczatku==0)then return "(początek jest ustawiony na zero)";end;
for name, tab_par in pairs(tabela)do
local _4=tab_par[4];local _5=tab_par[5];
if(_4)then zacznij_na_poczatku=math.max(math.min(zacznij_na_poczatku,_4 or 1),1);end;
if(_5)then skoncz_na_koncu=math.max(math.max(skoncz_na_koncu,_5 or 0),0);end;
end;
local czy_niepodane=parametry_modul.CzyTak(frame.args["niepodane"]);
local czy_zero_element=false;
if(czy_niepodane)then
if(zacznij_na_poczatku>skoncz_na_koncu)then
skoncz_na_koncu=zacznij_na_poczatku;
czy_zero_element=true;
end;
end;
local lancuch_znakow="";
local gdy_nic=parametry_modul.CzyTak(frame.args["nic"])and frame.args["nic"] or "";
if(zacznij_na_poczatku>skoncz_na_koncu)then return gdy_nic;end;
local pokolei=parametry_modul.CzyTak(frame.args["po kolei"]);
local wytnij=parametry_modul.CzyTak(frame.args["wytnij"]);
local wytnij_puste=parametry_modul.CzyTak(frame.args["wytnij puste"]);
local nie_wytnij_nazwane=parametry_modul.CzyTak(frame.args["nie wytnij nazwane"]);
local _i=parametry_modul.CzyTak(frame.args["znacznik"])and frame.args["znacznik"] or "_";
local czy_parametry_ze_spacja_i_jedynka=function(nazwa_parametru)
local parametr_tab=tabela[nazwa_parametru];
if(parametr_tab)then
return (not parametr_tab[1]),parametr_tab[2];
end;
return true,false;
end;
if(not czy_rozne)then
if(czy_ma_nazwane)then
local function Analizuj_dla_bez_rozne(tabela_wszystkich_parametrow)
local tab_lancuch={};
local maksimum=0;
local minimum;
for licznik=zacznij_na_poczatku,skoncz_na_koncu,1 do
local lancuch=tekst_do_analizy;
local czy=nil;
local wytnij_ujemne;
for zmienne_parametrowe,_ in pairs(tabela_wszystkich_parametrow)do
if(zmienne_parametrowe)then
local subtab=tabela[zmienne_parametrowe];
local liczba_przesuniecia=subtab and subtab[3] or 0;
local liczba=licznik+liczba_przesuniecia+zacznij_nazwane;
----
if(liczba<1)then wytnij_ujemne=true;end;
if(liczba>0)then
local ze_spacja,czy_z_jedynka=czy_parametry_ze_spacja_i_jedynka(zmienne_parametrowe);
local element=pf.args[zmienne_parametrowe..((ze_spacja)and " " or "")..licznik];
local czy_jedynka=(licznik==1)and ((element and(not wytnij)) or((wytnij)and (parametry_modul.CzyTak(element))));
local wartosc_elementu=((czy_z_jedynka) and element or ((not czy_z_jedynka)and((licznik>1)and element or ((licznik==1)and(czy_jedynka and element or pf.args[zmienne_parametrowe])))));
czy=czy or (((wartosc_elementu) and ((not wytnij)and(not wytnij_puste)))
or ((wytnij)and (parametry_modul["CzyTakCiąg"](wartosc_elementu)))
or ((wytnij_puste and not wytnij)and (parametry_modul.CzyTak(wartosc_elementu))));
local tabelka_szablonow={
["{{".._i.."}}"]=licznik,
["{{".._i.._i.."}}"]=(czy_z_jedynka and licznik or ((licznik>1) and licznik or (czy_jedynka and 1 or ""))),
};
local function fun_tabelka_szablonow(ciag)
local ciag_strip=mw.ustring.gsub(ciag,"{{%s*(%S+)%s*}}","{{%1}}");
return tabelka_szablonow[ciag_strip] or ciag;
end;
lancuch=mw.ustring.gsub(lancuch,"{{%s*".._i.."+%s*}}",fun_tabelka_szablonow);
end;
end;
end;
if(not wytnij_ujemne)then
local czy_jest=parametry_modul.CzyJestTakiElementNumerowanyTabeli(tabela_zaznacz,licznik);
czy=czy or czy_zero_element;
if((pokolei and (not czy_jest)) or czy or ((not pokolei)and(czy_jest)))then
tab_lancuch[#tab_lancuch+1]=lancuch;
maksimum=math.max(maksimum,licznik);
minimum=math.min(minimum or licznik,licznik);
end;
end;
end
lancuch_znakow=BudowaSzereguZDanych(frame,tab_lancuch,minimum or 0,maksimum);
end;
Analizuj_dla_bez_rozne(tabela);
else
local tab_lancuch={};
local maksimum=0;
local minimum;
for licznik=zacznij_na_poczatku,skoncz_na_koncu,1 do
local element=pf.args[licznik]
local czy=czy_zero_element
or (((element)and ((not wytnij)and(not wytnij_puste)))
or((wytnij)and(parametry_modul["CzyTakCiąg"](element)))
or((wytnij_puste and not wytnij)and(parametry_modul.CzyTak(element))));
local czy_jest=parametry_modul.CzyJestTakiElementNumerowanyTabeli(tabela_zaznacz,licznik);
if((pokolei and (not czy_jest)) or czy or ((not pokolei)and(czy_jest)))then
tab_lancuch[#tab_lancuch+1]=mw.ustring.gsub(tekst_do_analizy,"{{%s*".._i.."+%s*}}",licznik);
maksimum=math.max(maksimum,licznik);
minimum=math.min(minimum or licznik,licznik);
end;
end;
lancuch_znakow=BudowaSzereguZDanych(frame, tab_lancuch,minimum or 0,maksimum);
end;
else
local function Analizuj_z_rozne(tabela_wszystkich_parametrow)
local tab_lancuch={};
local maksimum=0;
local minimum;
for licznik=zacznij_na_poczatku,skoncz_na_koncu,1 do
local czy=false;
local czy_niepuste=false;
local wytnij_ujemne=false;
local function Analiza_zmiennej_parametrowej(zmienne_parametrowe,licznik,czy_ze_spacja,czy_z_jedynka)
local wartosc,klucz;
if(zmienne_parametrowe)then
local function Niewspomniane_w_rozne(zmienne_parametrowe,liczba_przesuniecia)
local liczba=licznik+liczba_przesuniecia+zacznij_nazwane;
if(liczba<1)then wytnij_ujemne=true;end;
if(liczba>0)then
local element=pf.args[zmienne_parametrowe..((czy_ze_spacja)and " " or "")..liczba];
local czy_jedynka=(liczba==1)and element;
local wartosc_elementu=((czy_z_jedynka) and element or ((not czy_z_jedynka)and((liczba>1)and element or ((liczba==1)and(czy_jedynka and element or pf.args[zmienne_parametrowe])))));
czy_niepuste=czy_niepuste
or ((not nie_wytnij_nazwane)and((wytnij and parametry_modul["CzyTakCiąg"](wartosc_elementu))
or (wytnij_puste and not wytnij and parametry_modul.CzyTak(wartosc_elementu))) or (nie_wytnij_nazwane and wartosc_elementu));
czy=czy or wartosc_elementu;
wartosc="{{{"..zmienne_parametrowe..(czy_z_jedynka and (((czy_ze_spacja)and " " or "")..liczba) or ((liczba>1) and (((czy_ze_spacja)and " " or "")..liczba) or (czy_jedynka and (((czy_ze_spacja)and " " or "")..1) or "")));
klucz="{{{%s*"..zmienne_parametrowe..((czy_ze_spacja)and "%s+" or "").."{{%s*".._i.._i.."+%s*}}";
end;
end;
local subtab=tabela[zmienne_parametrowe];
local liczba_przesuniecia=subtab and subtab[3] or 0;
Niewspomniane_w_rozne(zmienne_parametrowe,liczba_przesuniecia);
end;
return klucz,wartosc;
end;
local function Tekst_do_analizy(tekst_do_analizy_przetwarzany,klucz,wartosc)
if((wartosc)and(klucz))then
local przetwarzane,_=mw.ustring.gsub(tekst_do_analizy_przetwarzany,klucz,wartosc);
return przetwarzane;
end;
return "";
end;
local lancuch_zaanalizowany=tekst_do_analizy;
for zmienne_parametrowe,_ in pairs(tabela_wszystkich_parametrow)do
local lokalizacja=mw.ustring.match(tekst_do_analizy,"{{{%s*"..zmienne_parametrowe.."%s*{{%s*".._i.._i.."+%s*}}");
if(lokalizacja)then
zmienne_parametrowe=mw.text.trim(zmienne_parametrowe);
local czy_ze_spacja,czy_z_jedynka=czy_parametry_ze_spacja_i_jedynka(zmienne_parametrowe);
local klucz,wartosc=Analiza_zmiennej_parametrowej(zmienne_parametrowe,licznik,czy_ze_spacja,czy_z_jedynka);
if(wytnij_ujemne)then break;end;
lancuch_zaanalizowany=Tekst_do_analizy(lancuch_zaanalizowany,klucz,wartosc);
end;
end;
if(not wytnij_ujemne)then
local zmienna_numerowana_wikikodu=mw.ustring.match(tekst_do_analizy,"{{{%s*{{%s*".._i.."+%s*}}");
czy=czy_zero_element or czy or ((not zmienna_numerowana_wikikodu)and(mw.ustring.match(tekst_do_analizy,"{{%s*".._i.."%s*}}")))or((zmienna_numerowana_wikikodu)and(pf.args[licznik]));
local klucz="{{%s*".._i.."%s*}}";
local wartosc=licznik;
lancuch_zaanalizowany=Tekst_do_analizy(lancuch_zaanalizowany,klucz,wartosc);
czy_niepuste=czy_zero_element
or czy_niepuste
or (wytnij and parametry_modul["CzyTakCiąg"](pf.args[licznik]))
or (wytnij_puste and not wytnij and parametry_modul.CzyTak(pf.args[licznik]));
local czy_jest=parametry_modul.CzyJestTakiElementNumerowanyTabeli(tabela_zaznacz,licznik);
if((pokolei and (not czy_jest)) or (czy and (not wytnij)and(not wytnij_puste)) or (((wytnij)or(wytnij_puste))and(czy_niepuste)) or ((not pokolei)and(czy_jest)))then
tab_lancuch[#tab_lancuch+1]=lancuch_zaanalizowany;
maksimum=math.max(maksimum,licznik);
minimum=math.min(minimum or licznik,licznik);
end;
end;
end;
lancuch_znakow=BudowaSzereguZDanych(frame,tab_lancuch,minimum or 0,maksimum);
end;
Analizuj_z_rozne(tabela);
end;
if(#lancuch_znakow==0)then return gdy_nic;end;
local przetworzony_wikikod=not parametry_modul.CzyTak(frame.args["nie rozwiń"]) and pf:preprocess(lancuch_znakow) or lancuch_znakow;
return przetworzony_wikikod;
end;
p.PowtarzajOdDo=function(frame)
local start=tonumber(frame.args["start"]);
local koniec=tonumber(frame.args["koniec"]);
local krok=tonumber(frame.args["krok"]) or 1;
local parametry_modul=require("Module:Parametry")
local lacznik=frame.args["łącznik"] or (parametry_modul.CzyTak(frame.args["nowa linia"]) and "\n" or "");
if((not start)or(not koniec))then return "";end;
if(krok==0)then return "";end;
if(((start>koniec)and(krok>0))or((start<koniec)and(krok<0)))then return "";end;
local kod=frame.args[1];
tabela_mikroszablonow={
["{{start}}"]=start,
["{{koniec}}"]=koniec,
["{{krok}}"]=krok,
}
kod=mw.ustring.gsub(kod,"{{[^{}]+}}",tabela_mikroszablonow);
local lancuch="";
local licznik=start;
local kodprzeskok=frame.args["przeskok"];
local pf=frame:getParent();
while licznik<=koniec do
local przeskok;
if(kodprzeskok)then
local _;
przeskok,_=mw.ustring.gsub(kodprzeskok,"{{_}}",licznik);
przeskok=pf:preprocess(przeskok);
end;
local kod2,_=mw.ustring.gsub(kod,"{{_}}",licznik);
lancuch=lancuch..((lancuch~="")and lacznik or "")..kod2;
licznik=licznik+krok+(tonumber(przeskok) or 0);
end;
local przetworzony_wikikod=not parametry_modul.CzyTak(frame.args["nie rozwiń"]) and pf:preprocess(lancuch) or lancuch;
return przetworzony_wikikod;
end;
p["PrzetwarzajIterującCiąg"]=function(frame)
local poziom=frame.args["ciąg"];
poziom=mw.text.trim(poziom);
local tab_poziom=mw.text.split(poziom,"%s*;%s*",false);
local len_tab_poziom=#tab_poziom;
local start=1;local koniec=len_tab_poziom;local krok=1;
tabela_mikroszablonow={
["{{start}}"]=start,
["{{koniec}}"]=koniec,
["{{krok}}"]=krok,
}
local parametry_modul=require("Module:Parametry");
local lacznik=frame.args["łącznik"] or (parametry_modul.CzyTak(frame.args["nowa linia"]) and "\n" or "");
local kod=frame.args[1];
kod=mw.ustring.gsub(kod,"{{[^{}]+}}",tabela_mikroszablonow);
local lancuch="";
local licznik=start;
local kodprzeskok=frame.args["przeskok"];
if(kodprzeskok)then
kodprzeskok=mw.ustring.gsub(kodprzeskok,"{{[^{}]+}}",tabela_mikroszablonow);
end;
local pf=frame:getParent();
while licznik<=koniec do
local przeskok;
local tabela_microszablonow2={
["{{_}}"]=licznik,
["{{ciąg}}"]=tab_poziom[licznik];
};
if(kodprzeskok)then
przeskok=mw.ustring.gsub(kodprzeskok,"{{[^{}]+}}",tabela_microszablonow2);
przeskok=pf:preprocess(przeskok);
end;
local kod2,_=mw.ustring.gsub(kod,"{{[^{}]+}}",tabela_microszablonow2);
lancuch=lancuch..((lancuch~="")and lacznik or "")..kod2;
licznik=licznik+krok+(tonumber(przeskok) or 0);
end;
local przetworzony_wikikod=not parametry_modul.CzyTak(frame.args["nie rozwiń"]) and pf:preprocess(lancuch) or lancuch;
return przetworzony_wikikod;
end;
p["PowtarzajWedług"] = function(frame)
local start=tonumber(frame.args["start"]) or 1;
local wybrany_wzor=frame.args["wzór"];
local parametry_modul=require("Module:Parametry")
local czy_link=parametry_modul.CzyTak(frame.args["link"]);
local liczba_list=p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]{args={["wzór"]=wybrany_wzor,}};
local lancuch="";
local linki_modul=require("Module:S");
for i=start,liczba_list,1 do
local wybrany_link_lub_bez;
local wybrany_link_lub_bez=mw.ustring.gsub(wybrany_wzor,"{{_}}",tostring(i));
if czy_link then
wybrany_link_lub_bez=linki_modul["S"]{[1]=wybrany_link_lub_bez};
end;
lancuch=(lancuch~="")and (lancuch..((i<liczba_list) and ", " or " i ")..wybrany_link_lub_bez) or wybrany_link_lub_bez;
end;
return lancuch;
end;
p["LiczbaPrawychUkośników"] = function(frame)
local nazwa=frame.args[1];
local _,ile=mw.ustring.gsub(nazwa,"/",function(s)return nil;end);
return ile;
end;
p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"] = function(frame)
local start=tonumber(frame.args["start"]) or 1;
licznik=start;
local strona=frame.args["wzór"];
while true do
local strona2,_=mw.ustring.gsub(strona,"{{_}}",licznik);
local title=mw.title.makeTitle('',strona2);
if((not title) or (not title.exists))then
return licznik-1;
end;
licznik=licznik+1;
end;
end;
p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]=function(frame)
local parametry_modul=require("Module:Parametry");
local techniczne_modul=require("Module:Techniczne");
local pf=frame:getParent();
local parametr=frame.args["zmienna"];
local odpowiednik=frame.args["odpowiednik"];
parametr=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](parametr);
local czy_odpowiednik=parametry_modul.CzyTak(odpowiednik);
local numer=nil;
for name,value in pairs(pf.args)do
local __name=tostring(name);
local __numer=mw.ustring.match(__name,"^"..parametr.."(%d*)$");
__numer=tonumber(__numer) or (((__numer)and(__numer=="")) and 1 or nil);
if((__numer)or((czy_odpowiednik)and(parametry_modul.TypeNumber(name))))then
if(numer)then
numer=math.min(__numer or name,numer);
else
numer=__numer or name;
end;
end;
end;
return numer;
end;
p.IleJestTakichOdpowiednikowychZmiennych=function(frame)
local parametry_modul=require("Module:Parametry");
local techniczne_modul=require("Module:Techniczne");
local pf=frame:getParent();
local parametr=frame.args["zmienna"];
local odpowiednik=frame.args["odpowiednik"];
parametr=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](parametr);
local czy_odpowiednik=parametry_modul.CzyTak(odpowiednik);
local numer=0;
local tab={};
for name,value in pairs(pf.args)do
local __name=tostring(name);
local __numer=mw.ustring.match(__name,"^"..parametr.."(%d*)$");
if((not tab[name])and((__numer)or((czy_odpowiednik)and(parametry_modul.TypeNumber(name)))))then
numer=numer+1;
tab[tonumber(__numer) or(((__numer)and(__numer==""))and 1 or nil) or name]=true;
end;
end;
return numer;
end;
p["Parametr w tablicy nazw"]=function(frame)
local zmienna_z_argumentami=frame.args["parametry"];
if(not zmienna_z_argumentami)then return;end;
local jedna_pozycja=frame.args["pozycja"];
if(not jedna_pozycja)then return;end;
local parametry_modul=require("Module:Parametry");
jedna_pozycja=parametry_modul["Odstępy"]{[1]=jedna_pozycja,[2]="tak"};
if(jedna_pozycja=="")then return;end;
local od_duzej=parametry_modul.CzyTak(frame.args["od dużej"]);
jedna_pozycja=od_duzej and mw.getContentLanguage():ucfirst(jedna_pozycja) or jedna_pozycja;
local iter=mw.text.gsplit(zmienna_z_argumentami,";",true);
local tablica={};
for pozycja in iter do
pozycja=parametry_modul["Odstępy"]{[1]=pozycja,[2]="tak"};
if(pozycja~="")then
tablica[od_duzej and mw.getContentLanguage():ucfirst(pozycja) or pozycja]=true;
end;
end;
return (tablica[jedna_pozycja] and "tak" or nil);
end;
return p;
ptk79ziwxx54wfm86v03ba7bgkqihui
553312
553310
2026-08-27T08:28:03Z
Persino
2851
553312
Scribunto
text/plain
local p={};
local function ParserBlokowy(frame, co_ma_wywolac)
local pf=frame:getParent();
local nazwa_szablonu_modulu_lub_parsera="Nazwa";
local szablon_modul_lub_parser=frame.args[nazwa_szablonu_modulu_lub_parsera];
local argumenty_szablonu_modulu_lub_parsera={};
local tabela_by_sprawdzic_czy_powstarzaja_sie_parametry_dzieci_i_rodzica={};
local ramka_dane_modul=mw.loadData("Module:Ramka/dane");
local bez_parametrowa_tablica=ramka_dane_modul.bez_parametrowa_tablica;
local bez_parametrow={};
if(co_ma_wywolac==1)then bez_parametrow["Funkcja"]=true;end;
local parametry_modul=require("Module:Parametry");
local tab_usun_parametry;
local czy_usun=frame.args["usuń z parametrów ramki"];
if(parametry_modul.CzyTak(czy_usun))then
tab_usun_parametry={};
local iter=mw.text.gsplit(czy_usun,";",true);
for name in iter do
name=mw.ustring.gsub(name,"^[%s_]*","");
name=mw.ustring.gsub(name,"[%s_]*$","");
name=tonumber(name) or name;
tab_usun_parametry[name]=true;
end;
end;
for nazwa_parametru,wartosc_parametru in pairs(frame.args) do
if(((not tab_usun_parametry)or(not tab_usun_parametry[nazwa_parametru]))
and((type(nazwa_parametru)=="number")or((type(nazwa_parametru)=="string")and(not bez_parametrow[nazwa_parametru])and(not bez_parametrowa_tablica[nazwa_parametru])))
)then
tabela_by_sprawdzic_czy_powstarzaja_sie_parametry_dzieci_i_rodzica[nazwa_parametru]=nazwa_parametru;
argumenty_szablonu_modulu_lub_parsera[nazwa_parametru]=wartosc_parametru;
end;
end;
local szablonowe_modul=require("Module:Szablonowe");
local tabela_bez_argumentow=p.RozpakujArgumenty(frame.args["bez argumentów rodzica"]);
local zmienna_z_parametrami_rodzica=frame.args["zmienna z parametrami rodzica"];
local czy_przekazac_parametry_rodzica=zmienna_z_parametrami_rodzica and parametry_modul.CzyTak(zmienna_z_parametrami_rodzica) or false;
----
local frame_sprawdzenia_args=frame.args["bez dodatkowych sprawdzeń"];
local bez_dodatkowych_sprawdzen;
local czy_podano_bez_dodatkowych_sprawdzen;
if(frame_sprawdzenia_args)then
czy_podano_bez_dodatkowych_sprawdzen=frame_sprawdzenia_args and true or false;
bez_dodatkowych_sprawdzen=parametry_modul.CzyTak(frame_sprawdzenia_args);
else
local frame_sprawdzenia_pf_args=pf.args["bez dodatkowych sprawdzeń"];
if(frame_sprawdzenia_pf_args)then
czy_podano_bez_dodatkowych_sprawdzen=frame_sprawdzenia_pf_args and true or false;
bez_dodatkowych_sprawdzen=parametry_modul.CzyTak(frame_sprawdzenia_pf_args);
end;
end;
local z_dodatkowymi_sprawdzeniami=not(bez_dodatkowych_sprawdzen);
---
local PakujArgumentyRamki = function(args)
local czy_tylko_ze_zmienna_bez_argumentow_szablonu=args["zmienna z argumentami ramki"];
if(not parametry_modul.CzyTak(czy_tylko_ze_zmienna_bez_argumentow_szablonu))then return args["bez argumentów szablonu"];end;
local tabelka1={};
for nazwa_parametru,_ in pairs(args)do
if((type(nazwa_parametru)=="number")or((type(nazwa_parametru)=="string")and(not bez_parametrow[nazwa_parametru])and(not bez_parametrowa_tablica[nazwa_parametru])))then
tabelka1[nazwa_parametru]=true;
end;
end;
local tabelka2=(args["bez argumentów szablonu"]) and p.RozpakujArgumenty(args["bez argumentów szablonu"]);
local tabelka=parametry_modul["ŁączDwieTabele"](tabelka1,tabelka2);
local tablica_mikroszablonow={
[";"]="{{+}}",
};
local str="";
for name,_ in pairs(tabelka) do
str=str..((str~="")and ";" or "")..mw.ustring.gsub(mw.text.trim(name),".",tablica_mikroszablonow);
end;
return str,tabelka2;
end;
local bez_argumentow_szablonu=nil;
if(czy_przekazac_parametry_rodzica)then
if(z_dodatkowymi_sprawdzeniami)then
local str=p.PakujParametry(pf.args);
argumenty_szablonu_modulu_lub_parsera["parametry rodzica"]=str;
end;
argumenty_szablonu_modulu_lub_parsera["potomek"]="tak";
argumenty_szablonu_modulu_lub_parsera["bez argumentów szablonu"],bez_argumentow_szablonu=PakujArgumentyRamki(frame.args);
if(czy_podano_bez_dodatkowych_sprawdzen)then
argumenty_szablonu_modulu_lub_parsera["bez dodatkowych sprawdzeń"]=bez_dodatkowych_sprawdzen and "tak" or "";
end;
argumenty_szablonu_modulu_lub_parsera["nazwa szablonu rodzica"]=pf.args["nazwa szablonu rodzica"] or szablonowe_modul.NazwaSzablonu(pf:getTitle());
else
local function ZmiennaZNazwaSzablonuRodzica()
local czy_ze_nazwa_szablonu=frame.args["zmienna z nazwą szablonu rodzica"];
if(parametry_modul.CzyTak(czy_ze_nazwa_szablonu))then
argumenty_szablonu_modulu_lub_parsera["nazwa szablonu rodzica"]=pf.args["nazwa szablonu rodzica"] or szablonowe_modul.NazwaSzablonu(pf:getTitle());
end;
end;
local z_argumentami_najwyzszego_rodzica=not parametry_modul.CzyTak(tabela_bez_argumentow["nie potomek"]);
if(z_argumentami_najwyzszego_rodzica)then
local potomek=parametry_modul.CzyTak(pf.args["potomek"]);
if(potomek)then
local parametry_rodzic=pf.args["parametry rodzica"];
if(parametry_rodzic)then
if(z_dodatkowymi_sprawdzeniami)then
argumenty_szablonu_modulu_lub_parsera["parametry rodzica"]=parametry_rodzic;
end;
argumenty_szablonu_modulu_lub_parsera["potomek"]="tak";
argumenty_szablonu_modulu_lub_parsera["bez argumentów szablonu"],bez_argumentow_szablonu=PakujArgumentyRamki(frame.args);
if(czy_podano_bez_dodatkowych_sprawdzen)then
argumenty_szablonu_modulu_lub_parsera["bez dodatkowych sprawdzeń"]=bez_dodatkowych_sprawdzen and "tak" or "";
end;
argumenty_szablonu_modulu_lub_parsera["nazwa szablonu rodzica"]=pf.args["nazwa szablonu rodzica"] or szablonowe_modul.NazwaSzablonu(pf:getTitle());
else
ZmiennaZNazwaSzablonuRodzica();
end;
else
ZmiennaZNazwaSzablonuRodzica();
end;
else
ZmiennaZNazwaSzablonuRodzica()
end;
end;
local czy_bez_argumentow_nienazwanych_rodzica=parametry_modul.CzyTak(frame.args["bez argumentów nienazwanych rodzica"]);
local czy_parametry_pudelka=parametry_modul.CzyTak(frame.args["parametry funkcji modułu pudełek"]);
local czy_parametry_pudelka_podstawowe=parametry_modul.CzyTak(frame.args["parametry podstawowe funkcji modułu pudełek"])
local pudelko_modul=require("Module:Pudełko");
for nazwa_parametru,wartosc_parametru in pairs(pf.args) do
if(((type(nazwa_parametru)=="number")or((type(nazwa_parametru)=="string")and(not bez_parametrow[nazwa_parametru])and(not bez_parametrowa_tablica[nazwa_parametru])))and((not bez_argumentow_szablonu)or(not bez_argumentow_szablonu[nazwa_parametru])))then
if((not tabela_by_sprawdzic_czy_powstarzaja_sie_parametry_dzieci_i_rodzica[nazwa_parametru])
and(not tabela_bez_argumentow[nazwa_parametru])
and((not czy_bez_argumentow_nienazwanych_rodzica)or((czy_bez_argumentow_nienazwanych_rodzica)and(not tonumber(nazwa_parametru)))
))then
local czy_dodac_do_parametrow;
if czy_parametry_pudelka or czy_parametry_pudelka_podstawowe then
local czy_dodac_do_parametrow=((not czy_parametry_pudelka_podstawowe)
and mw.ustring.match(nazwa_parametru,"^nazwa przestrzeni nazw %d+$")
and not pudelko_modul.CzyNiepoprawnaNazwa(wartosc_parametru))
or (mw.ustring.match(nazwa_parametru,"^nazwa przestrzeni nazw$")
and not pudelko_modul.CzyNiepoprawnaNazwa(wartosc_parametru))
or ((not czy_parametry_pudelka_podstawowe)
and mw.ustring.match(nazwa_parametru,"^nazwa jednostki %d+$")
and wartosc_parametru~=""
and not pudelko_modul.CzyNiepoprawnaNazwa(wartosc_parametru))
or (mw.ustring.match(nazwa_parametru,"^nazwa jednostki$")
and wartosc_parametru~=""
and not pudelko_modul.CzyNiepoprawnaNazwa(wartosc_parametru))
or ((not czy_parametry_pudelka_podstawowe)
and mw.ustring.match(nazwa_parametru,"^typ jednostki %d+$")
and wartosc_parametru~=""
and not pudelko_modul.CzyNiepoprawnaNazwa(wartosc_parametru))
or (mw.ustring.match(nazwa_parametru,"^typ jednostki$")
and wartosc_parametru~=""
and not pudelko_modul.CzyNiepoprawnaNazwa(wartosc_parametru));
if(czy_dodac_do_parametrow)then
argumenty_szablonu_modulu_lub_parsera[nazwa_parametru]=wartosc_parametru;
end;
else
argumenty_szablonu_modulu_lub_parsera[nazwa_parametru]=wartosc_parametru;
end;
end;
end;
end;
if(co_ma_wywolac==0)then
return pf:expandTemplate{title=szablon_modul_lub_parser,args=argumenty_szablonu_modulu_lub_parsera};
elseif(co_ma_wywolac==1)then
local frame2=pf:newChild{args=argumenty_szablonu_modulu_lub_parsera};
local funkcja=frame.args["Funkcja"];
return require("Module:"..szablon_modul_lub_parser)[funkcja](frame2);
elseif(co_ma_wywolac==2)then
return pf:callParserFunction{name=szablon_modul_lub_parser,args=argumenty_szablonu_modulu_lub_parsera};
else
return pf:expandTemplate{title=szablon_modul_lub_parser,args=argumenty_szablonu_modulu_lub_parsera};
end;
end;
local function BudowaSzereguZDanych(frame,tab_lancuch,minimum,maksimum)
local parametry_modul=require("Module:Parametry");
local czy_akapit=parametry_modul.CzyTak(frame.args["akapit"]);
local akapit=czy_akapit and "\n\n" or "";
local przecinek=parametry_modul.CzyTak(frame.args["przecinek"]) and ", " or "";
local czy_nowa_linia=parametry_modul.CzyTak(frame.args["nowa linia"]);
local nowa_linia=czy_nowa_linia and "\n" or "";
local wyliczanka=parametry_modul.CzyTak(frame.args["wyliczanka"]);
local przecinek_na_poczatku=parametry_modul.CzyTak(frame.args["początek"]);
local myslnik=parametry_modul.CzyTak(frame.args["myślnik"]);
local warunkowe=parametry_modul.CzyTak(frame.args["warunkowe"]);
local lancuch_znakow="";
local koniec=#tab_lancuch;
for i=1,koniec,1 do
local lancuch=tab_lancuch[i];
lancuch=mw.ustring.gsub(lancuch,"{{min}}",minimum);
lancuch=mw.ustring.gsub(lancuch,"{{max}}",maksimum);
if(not wyliczanka)then
lancuch_znakow=lancuch_znakow..((i~=1)and przecinek or ((przecinek_na_poczatku)and przecinek or ((myslnik)and " - " or "")));
else
lancuch_znakow=lancuch_znakow..((i==1)and ((przecinek_na_poczatku)and ", " or "") or ((i<koniec)and ", " or " i "));
end;
lancuch_znakow=lancuch_znakow..((i~=1)and (czy_akapit and akapit or nowa_linia) or "")..lancuch;
end;
if(warunkowe)then
local parametr=parametry_modul.CzyTak(frame.args["parametr"]);
return p.InstrukcjeWarunkowe(lancuch_znakow,true,parametr);
else
return lancuch_znakow;
end;
end;
p.InstrukcjeWarunkowe = function(ciag,derektywy_specjalne,derektywy_parametrowe)
local ciag_warunkowe_fun=function(s)
local function ParserWiki(s,wywolanie)
local czy_parser=mw.ustring.match(s,wywolanie);
if(czy_parser)then
return mw.getCurrentFrame():preprocess(s);
end;
end
return ParserWiki(s,"^({{%s*#if:[^{}]*}})$")
or ParserWiki(s,"^({{%s*#ifeq:[^{}]*}})$")
or ParserWiki(s,"^({{%s*#switch:[^{}]*}})$")
or ParserWiki(s,"^({{%s*#ifexpr:[^{}]*}})$")
or ParserWiki(s,"^({{%s*#expr:[^{}]*}})$")
or ParserWiki(s,"^({{%s*#iferror:[^{}]*}})$")
or ParserWiki(s,"^({{%s*#ifexist:[^{}]*}})$")
or nil;
end;
local ciag,_=mw.ustring.gsub(ciag,"{{[^{}]+}}",ciag_warunkowe_fun);
if(derektywy_specjalne)then
local ramka_dane_modul=mw.loadData("Module:Ramka/dane");
local tab_zamieniane=ramka_dane_modul.tablica_warunkowe_i_parametr;
ciag=mw.ustring.gsub(ciag,"(__[^_]+__)",function(s)
local tab_szablon=tab_zamieniane[s];
if(tab_szablon)then
if(not derektywy_parametrowe)then return tab_szablon[1];end;
return tab_szablon[2];
end;
return nil;
end);
return ciag;
end;
return ciag;
end;
p.RozpakujArgumenty = function(zmienna_z_argumentami)
local tablica_mikroszablonow={
["{{+}}"]=";",
};
local tabela_bez_argumentow={};
local parametry_modul=require("Module:Parametry");
if(parametry_modul.CzyTak(zmienna_z_argumentami))then
local iter=mw.text.gsplit(zmienna_z_argumentami,";",true);
local podlancuch;
for podlancuch in iter do
podlancuch=mw.text.trim(podlancuch);
local liczba=tonumber(podlancuch);
tabela_bez_argumentow[liczba or mw.ustring.gsub(podlancuch,"{{[^{}]+}}",tablica_mikroszablonow)]=true;
end;
end;
return tabela_bez_argumentow;
end;
p.PakujParametry = function(args)
return mw.text.jsonEncode(args,mw.text.JSON_PRESERVE_KEYS);
end;
p.RozpakujParametry = function (zmienna_z_parametrami)
return mw.text.jsonDecode(zmienna_z_parametrami,mw.text.JSON_PRESERVE_KEYS);
end;
p["Rozwiń"] = function(frame)
return frame:getParent():preprocess(frame.args[1]);
end;
p.Log = function(frame)
local parametry_modul=require("Module:Parametry");
local czy_zwracac=parametry_modul.CzyTak(frame.args["wikitext"]);
local wikitekst=frame.args["log"];
mw.log(wikitekst);
return (czy_zwracac and wikitekst or "");
end;
p.Szablon = function(frame)
return ParserBlokowy(frame,0);
end;
p["Moduł"] = function(frame)
return ParserBlokowy(frame, 1);
end;
p.Parser = function(frame)
return ParserBlokowy(frame, 2);
end;
p.Q =function(frame)
local parametry_modul=require("Module:Parametry");
local args_szablon=parametry_modul.PobierzArgsParametry(frame);
local args_ksiazka={};
for name,value in pairs(args_szablon)do
if(not parametry_modul.TypeNumber(name))then
args_ksiazka[name]=value;
elseif(name>1)then
args_ksiazka[name-1]=value;
elseif(name~=1)then
args_ksiazka[name]=value;
end;
end;
if(parametry_modul.CzyTak(frame.args["wyspecjalizowana"]))then
args_ksiazka["wyspecjalizowana"]=nil;
end;
local szablon=args_szablon[1];
local szablon_ksiazka=p["N"]{args={[1]=szablon,}};
local pf=frame:getParent();
return pf:expandTemplate{title=szablon_ksiazka,args=args_ksiazka,};
end;
p.N=function(frame)
local parametr=frame.args[1];
local parametry_modul=require("Module:Parametry");
local parametr_p=tonumber(frame.args["p"]) or 0;
local parametr_n=parametry_modul.CzyTak(frame.args["n"]);
local szablon=parametry_modul["CzyTakCiąg"](parametr) and parametr or ((parametr_p==1) and "Nieznany moduł" or ((parametr_p==2) and "Nieznana kategoria" or "Nieznany szablon"));
szablon=parametry_modul["Odstępy"]{[1]=szablon,[2]="tak",};
szablon=mw.getContentLanguage():ucfirst(szablon);
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
local przestrzen=((parametr_p==1) and nazwy_np_modul.Module or ((parametr_p==2) and nazwy_np_modul.Category or nazwy_np_modul.Template));
local szablon_ksiazka=przestrzen..":Książka:"..szablon;
local parametr_k=parametry_modul.CzyTak(frame.args["k"]);
if(not parametr_k)then
local techniczne_modul=require("Module:Techniczne");
local liczba_title,tab_title=techniczne_modul.PoliczZbiory{[1]=szablon_ksiazka,tekst=true,};
szablon_ksiazka=((liczba_title>0)and (szablon_ksiazka) or (przestrzen..":"..szablon));
end;
if(parametr_n)then
local nazwy_modul=require("Module:Nazwy");
szablon_ksiazka=nazwy_modul["NAZWASTRONY"]{nazwa=szablon_ksiazka,};
end;
return szablon_ksiazka;
end;
p.A=function(frame)
local parametr=frame.args[1];
local parametry_modul=require("Module:Parametry");
local parametr_p=parametry_modul.CzyTak(frame.args["p"]);
local przestrzen;
if(parametr_p)then
local tabela_nazw={};
local nazwy_modul=require("Module:Nazwy");
przestrzen=nazwy_modul["NAZWAPRZESTRZENI"](parametr,tabela_nazw);
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
if((przestrzen~=nazwy_np_modul.Template)and(przestrzen~=nazwy_np_modul.Module)and(przestrzen~=nazwy_np_modul.Category))then
return parametr;
end;
parametr=nazwy_modul["NAZWASTRONY"](parametr,tabela_nazw);
end;
parametr=mw.ustring.gsub(parametr,"^[Kk]siążka:","");
parametr=(parametr_p and ((przestrzen~="") and (przestrzen..":") or "") or "")..parametr;
return parametr;
end;
p.Powtarzaj = function(frame)
local pf=frame:getParent();
local parametry_modul=require("Moduł:Parametry");
local czy_parametry=parametry_modul.CzyTak(frame.args["parametry"]);
local tabela={};
local zacznij_nazwane;
local parametry_modul=require("Module:Parametry");
if(czy_parametry)then
local FormatujTabela=function(parametr_tab)
return{
parametry_modul.CzyTak(parametr_tab[1]),
parametry_modul.CzyTak(parametr_tab[2]),
tonumber(parametr_tab[3]) or 0,
tonumber(parametr_tab[4]),
tonumber(parametr_tab[5]),
};
end;
local WstawDoTabeli=function(znaczenia_parametr)
local parametr,wartosc=mw.ustring.match(znaczenia_parametr,"%s*([%w_%-][%w%s_%-]-)%s*=%s*(.-)%s*$");
if(parametr and wartosc)then
if((not tonumber(parametr))and(not tabela[parametr]))then
local parametr_tab=mw.text.split(wartosc,"%s*,%s*",false);
tabela[parametr]=FormatujTabela(parametr_tab);
end;
else
if((not tonumber(znaczenia_parametr))and(not tabela[znaczenia_parametr]))then
tabela[znaczenia_parametr]={};
end;
end;
end;
local iter=mw.text.gsplit(mw.text.trim(frame.args["parametry"]),"%s*;%s*",false);
local czy=true;
for znaczenia_parametr in iter do
znaczenia_parametr=mw.text.trim(znaczenia_parametr);
local czy_nie_omijac=parametry_modul.CzyTak(znaczenia_parametr);
if(czy_nie_omijac)then
if(czy)then
zacznij_nazwane=tonumber(znaczenia_parametr);
czy=false;
if(not zacznij_nazwane)then
zacznij_nazwane=0;
WstawDoTabeli(znaczenia_parametr);
end;
else
WstawDoTabeli(znaczenia_parametr);
end;
end;
end;
end;
local tabela_dodatkowe={};
local czy_dodatkowe=parametry_modul.CzyTak(frame.args["dodatkowe"]);
if(czy_dodatkowe)then
local iter=mw.text.gsplit(mw.text.trim(frame.args["dodatkowe"]),"%s*;%s*",false);
for name in iter do
tabela_dodatkowe[name]=true;
end;
end;
if(not zacznij_nazwane)then zacznij_nazwane=0;end;
local function LiczbaZmiennychOOgolniePodstawieParametru(podstawa_parametru_wyszukiwana)
local args=pf.args;
local maksymalna_liczba_nazwy_danego_parametru=0;
for nazwa_parametru, wartosc_parametru in pairs(args)do
local czy_jedynka=false;
if(type(nazwa_parametru)=="string")then
local nazwa_podstawy_parametru,spacja,liczba=mw.ustring.match(nazwa_parametru,"^([%a%-%s]*[%a%-])(%s?)(%d+)$");
if(not nazwa_podstawy_parametru and not spacja and not liczba)then
nazwa_podstawy_parametru=nazwa_parametru;
spacja="";
liczba=1;
czy_jedynka=true;
end;
local subtab=tabela[nazwa_podstawy_parametru];
if(subtab)then
local nie_spacja_parametru=subtab[1];
local czy_z_jedynka=subtab[2];
liczba=tonumber(liczba) or 0;
if((not nie_spacja_parametru and (((spacja==" ")and ((liczba>1)or((not czy_jedynka)and(czy_z_jedynka))or((not czy_z_jedynka)and(not czy_jedynka)))) or(((not czy_z_jedynka)and(czy_jedynka))and(spacja=="" and liczba==1))))
or (nie_spacja_parametru and (((spacja=="")and ((liczba>1)or((not czy_jedynka)and(czy_z_jedynka))or((not czy_z_jedynka)and(not czy_jedynka)))) or(((not czy_z_jedynka)and(czy_jedynka))and(spacja=="" and liczba==1))))
)then
if(((podstawa_parametru_wyszukiwana) and (nazwa_podstawy_parametru==podstawa_parametru_wyszukiwana))or(not podstawa_parametru_wyszukiwana))then
maksymalna_liczba_nazwy_danego_parametru=math.max(maksymalna_liczba_nazwy_danego_parametru,liczba);
end;
end;
end;
end;
end;
return maksymalna_liczba_nazwy_danego_parametru;
end;
local MaksymalnyLiczonyNumerElementowPodanychPodstawNazwyParametrow=function()
local maksimum_all=0;
for wartosc_parametru,dane_parametru in pairs(tabela)do
if(parametry_modul.TypeString(wartosc_parametru))then
if(not tabela_dodatkowe[wartosc_parametru])then
local maksymalna_liczba_nazwy_danego_parametru=LiczbaZmiennychOOgolniePodstawieParametru(wartosc_parametru);
local maksimum=maksymalna_liczba_nazwy_danego_parametru-(dane_parametru[3] or 0);
maksimum_all=math.max(maksimum-zacznij_nazwane,maksimum_all);
end;
end;
end;
return maksimum_all;
end;
local zacznij_na_poczatku,skoncz_na_koncu;
local tekst_do_analizy=frame.args[1];
if(not frame.args[1])then return "(brak parametru do analizy)";end;
local czy_tekst=parametry_modul.CzyTak(tekst_do_analizy);
if(not czy_tekst)then return "(parametr do analizy pusty)";end;
local start=frame.args["start"];
local koniec=frame.args["koniec"];
local czy_start=parametry_modul.CzyTak(start);
local czy_koniec=parametry_modul.CzyTak(koniec);
local zaznacz=frame.args["zaznacz"];
local tabela_zaznacz={};
if(zaznacz)then
local iter=mw.text.gsplit(zaznacz,"%s*;%s*",false)
for liczba in iter do
tabela_zaznacz[#tabela_zaznacz+1]=tonumber(liczba) or 0;
end;
end;
local czy_rozne=parametry_modul.CzyTak(frame.args["różne"]);
local czy_ma_nazwane;
local function Wylicz_skoncz_na_koncu()
czy_ma_nazwane=parametry_modul["CzySąElementyNazwaneTablicy"](tabela);
if(czy_ma_nazwane)then
if(czy_rozne)then
local maks_numer=parametry_modul.CzyTak(frame.args["maksimum numeracyjne"]);
if(not maks_numer)then
return math.max(MaksymalnyLiczonyNumerElementowPodanychPodstawNazwyParametrow(),parametry_modul.MaksymalnaLiczbaParametruNienazwanegoTablicy(pf.args));
else
return parametry_modul.MaksymalnaLiczbaParametruNienazwanegoTablicy(pf.args);
end;
else
return MaksymalnyLiczonyNumerElementowPodanychPodstawNazwyParametrow();
end;
else
return parametry_modul.MaksymalnaLiczbaParametruNienazwanegoTablicy(pf.args);
end;
end;
local skoncz_na_koncu_wyliczona=Wylicz_skoncz_na_koncu();
if(not czy_koniec)then
skoncz_na_koncu=skoncz_na_koncu_wyliczona;
else
skoncz_na_koncu=math.max(math.min(skoncz_na_koncu_wyliczona, tonumber(koniec) or 0),0);
end;
zacznij_na_poczatku=math.max(tonumber(start) or 1,1);
if(zacznij_na_poczatku==0)then return "(początek jest ustawiony na zero)";end;
for name, tab_par in pairs(tabela)do
local _4=tab_par[4];local _5=tab_par[5];
if(_4)then zacznij_na_poczatku=math.max(math.min(zacznij_na_poczatku,_4 or 1),1);end;
if(_5)then skoncz_na_koncu=math.max(math.max(skoncz_na_koncu,_5 or 0),0);end;
end;
local czy_niepodane=parametry_modul.CzyTak(frame.args["niepodane"]);
local czy_zero_element=false;
if(czy_niepodane)then
if(zacznij_na_poczatku>skoncz_na_koncu)then
skoncz_na_koncu=zacznij_na_poczatku;
czy_zero_element=true;
end;
end;
local lancuch_znakow="";
local gdy_nic=parametry_modul.CzyTak(frame.args["nic"])and frame.args["nic"] or "";
if(zacznij_na_poczatku>skoncz_na_koncu)then return gdy_nic;end;
local pokolei=parametry_modul.CzyTak(frame.args["po kolei"]);
local wytnij=parametry_modul.CzyTak(frame.args["wytnij"]);
local wytnij_puste=parametry_modul.CzyTak(frame.args["wytnij puste"]);
local nie_wytnij_nazwane=parametry_modul.CzyTak(frame.args["nie wytnij nazwane"]);
local _i=parametry_modul.CzyTak(frame.args["znacznik"])and frame.args["znacznik"] or "_";
local czy_parametry_ze_spacja_i_jedynka=function(nazwa_parametru)
local parametr_tab=tabela[nazwa_parametru];
if(parametr_tab)then
return (not parametr_tab[1]),parametr_tab[2];
end;
return true,false;
end;
if(not czy_rozne)then
if(czy_ma_nazwane)then
local function Analizuj_dla_bez_rozne(tabela_wszystkich_parametrow)
local tab_lancuch={};
local maksimum=0;
local minimum;
for licznik=zacznij_na_poczatku,skoncz_na_koncu,1 do
local lancuch=tekst_do_analizy;
local czy=nil;
local wytnij_ujemne;
for zmienne_parametrowe,_ in pairs(tabela_wszystkich_parametrow)do
if(zmienne_parametrowe)then
local subtab=tabela[zmienne_parametrowe];
local liczba_przesuniecia=subtab and subtab[3] or 0;
local liczba=licznik+liczba_przesuniecia+zacznij_nazwane;
----
if(liczba<1)then wytnij_ujemne=true;end;
if(liczba>0)then
local ze_spacja,czy_z_jedynka=czy_parametry_ze_spacja_i_jedynka(zmienne_parametrowe);
local element=pf.args[zmienne_parametrowe..((ze_spacja)and " " or "")..licznik];
local czy_jedynka=(licznik==1)and ((element and(not wytnij)) or((wytnij)and (parametry_modul.CzyTak(element))));
local wartosc_elementu=((czy_z_jedynka) and element or ((not czy_z_jedynka)and((licznik>1)and element or ((licznik==1)and(czy_jedynka and element or pf.args[zmienne_parametrowe])))));
czy=czy or (((wartosc_elementu) and ((not wytnij)and(not wytnij_puste)))
or ((wytnij)and (parametry_modul["CzyTakCiąg"](wartosc_elementu)))
or ((wytnij_puste and not wytnij)and (parametry_modul.CzyTak(wartosc_elementu))));
local tabelka_szablonow={
["{{".._i.."}}"]=licznik,
["{{".._i.._i.."}}"]=(czy_z_jedynka and licznik or ((licznik>1) and licznik or (czy_jedynka and 1 or ""))),
};
local function fun_tabelka_szablonow(ciag)
local ciag_strip=mw.ustring.gsub(ciag,"{{%s*(%S+)%s*}}","{{%1}}");
return tabelka_szablonow[ciag_strip] or ciag;
end;
lancuch=mw.ustring.gsub(lancuch,"{{%s*".._i.."+%s*}}",fun_tabelka_szablonow);
end;
end;
end;
if(not wytnij_ujemne)then
local czy_jest=parametry_modul.CzyJestTakiElementNumerowanyTabeli(tabela_zaznacz,licznik);
czy=czy or czy_zero_element;
if((pokolei and (not czy_jest)) or czy or ((not pokolei)and(czy_jest)))then
tab_lancuch[#tab_lancuch+1]=lancuch;
maksimum=math.max(maksimum,licznik);
minimum=math.min(minimum or licznik,licznik);
end;
end;
end
lancuch_znakow=BudowaSzereguZDanych(frame,tab_lancuch,minimum or 0,maksimum);
end;
Analizuj_dla_bez_rozne(tabela);
else
local tab_lancuch={};
local maksimum=0;
local minimum;
for licznik=zacznij_na_poczatku,skoncz_na_koncu,1 do
local element=pf.args[licznik]
local czy=czy_zero_element
or (((element)and ((not wytnij)and(not wytnij_puste)))
or((wytnij)and(parametry_modul["CzyTakCiąg"](element)))
or((wytnij_puste and not wytnij)and(parametry_modul.CzyTak(element))));
local czy_jest=parametry_modul.CzyJestTakiElementNumerowanyTabeli(tabela_zaznacz,licznik);
if((pokolei and (not czy_jest)) or czy or ((not pokolei)and(czy_jest)))then
tab_lancuch[#tab_lancuch+1]=mw.ustring.gsub(tekst_do_analizy,"{{%s*".._i.."+%s*}}",licznik);
maksimum=math.max(maksimum,licznik);
minimum=math.min(minimum or licznik,licznik);
end;
end;
lancuch_znakow=BudowaSzereguZDanych(frame, tab_lancuch,minimum or 0,maksimum);
end;
else
local function Analizuj_z_rozne(tabela_wszystkich_parametrow)
local tab_lancuch={};
local maksimum=0;
local minimum;
for licznik=zacznij_na_poczatku,skoncz_na_koncu,1 do
local czy=false;
local czy_niepuste=false;
local wytnij_ujemne=false;
local function Analiza_zmiennej_parametrowej(zmienne_parametrowe,licznik,czy_ze_spacja,czy_z_jedynka)
local wartosc,klucz;
if(zmienne_parametrowe)then
local function Niewspomniane_w_rozne(zmienne_parametrowe,liczba_przesuniecia)
local liczba=licznik+liczba_przesuniecia+zacznij_nazwane;
if(liczba<1)then wytnij_ujemne=true;end;
if(liczba>0)then
local element=pf.args[zmienne_parametrowe..((czy_ze_spacja)and " " or "")..liczba];
local czy_jedynka=(liczba==1)and element;
local wartosc_elementu=((czy_z_jedynka) and element or ((not czy_z_jedynka)and((liczba>1)and element or ((liczba==1)and(czy_jedynka and element or pf.args[zmienne_parametrowe])))));
czy_niepuste=czy_niepuste
or ((not nie_wytnij_nazwane)and((wytnij and parametry_modul["CzyTakCiąg"](wartosc_elementu))
or (wytnij_puste and not wytnij and parametry_modul.CzyTak(wartosc_elementu))) or (nie_wytnij_nazwane and wartosc_elementu));
czy=czy or wartosc_elementu;
wartosc="{{{"..zmienne_parametrowe..(czy_z_jedynka and (((czy_ze_spacja)and " " or "")..liczba) or ((liczba>1) and (((czy_ze_spacja)and " " or "")..liczba) or (czy_jedynka and (((czy_ze_spacja)and " " or "")..1) or "")));
klucz="{{{%s*"..zmienne_parametrowe..((czy_ze_spacja)and "%s+" or "").."{{%s*".._i.._i.."+%s*}}";
end;
end;
local subtab=tabela[zmienne_parametrowe];
local liczba_przesuniecia=subtab and subtab[3] or 0;
Niewspomniane_w_rozne(zmienne_parametrowe,liczba_przesuniecia);
end;
return klucz,wartosc;
end;
local function Tekst_do_analizy(tekst_do_analizy_przetwarzany,klucz,wartosc)
if((wartosc)and(klucz))then
local przetwarzane,_=mw.ustring.gsub(tekst_do_analizy_przetwarzany,klucz,wartosc);
return przetwarzane;
end;
return "";
end;
local lancuch_zaanalizowany=tekst_do_analizy;
for zmienne_parametrowe,_ in pairs(tabela_wszystkich_parametrow)do
local lokalizacja=mw.ustring.match(tekst_do_analizy,"{{{%s*"..zmienne_parametrowe.."%s*{{%s*".._i.._i.."+%s*}}");
if(lokalizacja)then
zmienne_parametrowe=mw.text.trim(zmienne_parametrowe);
local czy_ze_spacja,czy_z_jedynka=czy_parametry_ze_spacja_i_jedynka(zmienne_parametrowe);
local klucz,wartosc=Analiza_zmiennej_parametrowej(zmienne_parametrowe,licznik,czy_ze_spacja,czy_z_jedynka);
if(wytnij_ujemne)then break;end;
lancuch_zaanalizowany=Tekst_do_analizy(lancuch_zaanalizowany,klucz,wartosc);
end;
end;
if(not wytnij_ujemne)then
local zmienna_numerowana_wikikodu=mw.ustring.match(tekst_do_analizy,"{{{%s*{{%s*".._i.."+%s*}}");
czy=czy_zero_element or czy or ((not zmienna_numerowana_wikikodu)and(mw.ustring.match(tekst_do_analizy,"{{%s*".._i.."%s*}}")))or((zmienna_numerowana_wikikodu)and(pf.args[licznik]));
local klucz="{{%s*".._i.."%s*}}";
local wartosc=licznik;
lancuch_zaanalizowany=Tekst_do_analizy(lancuch_zaanalizowany,klucz,wartosc);
czy_niepuste=czy_zero_element
or czy_niepuste
or (wytnij and parametry_modul["CzyTakCiąg"](pf.args[licznik]))
or (wytnij_puste and not wytnij and parametry_modul.CzyTak(pf.args[licznik]));
local czy_jest=parametry_modul.CzyJestTakiElementNumerowanyTabeli(tabela_zaznacz,licznik);
if((pokolei and (not czy_jest)) or (czy and (not wytnij)and(not wytnij_puste)) or (((wytnij)or(wytnij_puste))and(czy_niepuste)) or ((not pokolei)and(czy_jest)))then
tab_lancuch[#tab_lancuch+1]=lancuch_zaanalizowany;
maksimum=math.max(maksimum,licznik);
minimum=math.min(minimum or licznik,licznik);
end;
end;
end;
lancuch_znakow=BudowaSzereguZDanych(frame,tab_lancuch,minimum or 0,maksimum);
end;
Analizuj_z_rozne(tabela);
end;
if(#lancuch_znakow==0)then return gdy_nic;end;
local przetworzony_wikikod=not parametry_modul.CzyTak(frame.args["nie rozwiń"]) and pf:preprocess(lancuch_znakow) or lancuch_znakow;
return przetworzony_wikikod;
end;
p.PowtarzajOdDo=function(frame)
local start=tonumber(frame.args["start"]);
local koniec=tonumber(frame.args["koniec"]);
local krok=tonumber(frame.args["krok"]) or 1;
local parametry_modul=require("Module:Parametry")
local lacznik=frame.args["łącznik"] or (parametry_modul.CzyTak(frame.args["nowa linia"]) and "\n" or "");
if((not start)or(not koniec))then return "";end;
if(krok==0)then return "";end;
if(((start>koniec)and(krok>0))or((start<koniec)and(krok<0)))then return "";end;
local kod=frame.args[1];
tabela_mikroszablonow={
["{{start}}"]=start,
["{{koniec}}"]=koniec,
["{{krok}}"]=krok,
}
kod=mw.ustring.gsub(kod,"{{[^{}]+}}",tabela_mikroszablonow);
local lancuch="";
local licznik=start;
local kodprzeskok=frame.args["przeskok"];
local pf=frame:getParent();
while licznik<=koniec do
local przeskok;
if(kodprzeskok)then
local _;
przeskok,_=mw.ustring.gsub(kodprzeskok,"{{_}}",licznik);
przeskok=pf:preprocess(przeskok);
end;
local kod2,_=mw.ustring.gsub(kod,"{{_}}",licznik);
lancuch=lancuch..((lancuch~="")and lacznik or "")..kod2;
licznik=licznik+krok+(tonumber(przeskok) or 0);
end;
local przetworzony_wikikod=not parametry_modul.CzyTak(frame.args["nie rozwiń"]) and pf:preprocess(lancuch) or lancuch;
return przetworzony_wikikod;
end;
p["PrzetwarzajIterującCiąg"]=function(frame)
local poziom=frame.args["ciąg"];
poziom=mw.text.trim(poziom);
local tab_poziom=mw.text.split(poziom,"%s*;%s*",false);
local len_tab_poziom=#tab_poziom;
local start=1;local koniec=len_tab_poziom;local krok=1;
tabela_mikroszablonow={
["{{start}}"]=start,
["{{koniec}}"]=koniec,
["{{krok}}"]=krok,
}
local parametry_modul=require("Module:Parametry");
local lacznik=frame.args["łącznik"] or (parametry_modul.CzyTak(frame.args["nowa linia"]) and "\n" or "");
local kod=frame.args[1];
kod=mw.ustring.gsub(kod,"{{[^{}]+}}",tabela_mikroszablonow);
local lancuch="";
local licznik=start;
local kodprzeskok=frame.args["przeskok"];
if(kodprzeskok)then
kodprzeskok=mw.ustring.gsub(kodprzeskok,"{{[^{}]+}}",tabela_mikroszablonow);
end;
local pf=frame:getParent();
while licznik<=koniec do
local przeskok;
local tabela_microszablonow2={
["{{_}}"]=licznik,
["{{ciąg}}"]=tab_poziom[licznik];
};
if(kodprzeskok)then
przeskok=mw.ustring.gsub(kodprzeskok,"{{[^{}]+}}",tabela_microszablonow2);
przeskok=pf:preprocess(przeskok);
end;
local kod2,_=mw.ustring.gsub(kod,"{{[^{}]+}}",tabela_microszablonow2);
lancuch=lancuch..((lancuch~="")and lacznik or "")..kod2;
licznik=licznik+krok+(tonumber(przeskok) or 0);
end;
local przetworzony_wikikod=not parametry_modul.CzyTak(frame.args["nie rozwiń"]) and pf:preprocess(lancuch) or lancuch;
return przetworzony_wikikod;
end;
p["PowtarzajWedług"] = function(frame)
local start=tonumber(frame.args["start"]) or 1;
local wybrany_wzor=frame.args["wzór"];
local parametry_modul=require("Module:Parametry")
local czy_link=parametry_modul.CzyTak(frame.args["link"]);
local liczba_list=p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]{args={["wzór"]=wybrany_wzor,}};
local lancuch="";
local linki_modul=require("Module:S");
for i=start,liczba_list,1 do
local wybrany_link_lub_bez;
local wybrany_link_lub_bez=mw.ustring.gsub(wybrany_wzor,"{{_}}",tostring(i));
if czy_link then
wybrany_link_lub_bez=linki_modul["S"]{[1]=wybrany_link_lub_bez};
end;
lancuch=(lancuch~="")and (lancuch..((i<liczba_list) and ", " or " i ")..wybrany_link_lub_bez) or wybrany_link_lub_bez;
end;
return lancuch;
end;
p["LiczbaPrawychUkośników"] = function(frame)
local nazwa=frame.args[1];
local _,ile=mw.ustring.gsub(nazwa,"/",function(s)return nil;end);
return ile;
end;
p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"] = function(frame)
local start=tonumber(frame.args["start"]) or 1;
licznik=start;
local strona=frame.args["wzór"];
while true do
local strona2,_=mw.ustring.gsub(strona,"{{_}}",licznik);
local title=mw.title.makeTitle('',strona2);
if((not title) or (not title.exists))then
return licznik-1;
end;
licznik=licznik+1;
end;
end;
p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]=function(frame)
local parametry_modul=require("Module:Parametry");
local techniczne_modul=require("Module:Techniczne");
local pf=frame:getParent();
local parametr=frame.args["zmienna"];
local odpowiednik=frame.args["numerowane"];
parametr=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](parametr);
local czy_odpowiednik=parametry_modul.CzyTak(odpowiednik);
local numer=nil;
for name,value in pairs(pf.args)do
local __name=tostring(name);
local __numer=mw.ustring.match(__name,"^"..parametr.."(%d*)$");
__numer=tonumber(__numer) or (((__numer)and(__numer=="")) and 1 or nil);
if((__numer)or((czy_odpowiednik)and(parametry_modul.TypeNumber(name))))then
if(numer)then
numer=math.min(__numer or name,numer);
else
numer=__numer or name;
end;
end;
end;
return numer;
end;
p.IleJestTakichOdpowiednikowychZmiennych=function(frame)
local parametry_modul=require("Module:Parametry");
local techniczne_modul=require("Module:Techniczne");
local pf=frame:getParent();
local parametr=frame.args["zmienna"];
local odpowiednik=frame.args["numerowane"];
parametr=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](parametr);
local czy_odpowiednik=parametry_modul.CzyTak(odpowiednik);
local numer=0;
local tab={};
for name,value in pairs(pf.args)do
local __name=tostring(name);
local __numer=mw.ustring.match(__name,"^"..parametr.."(%d*)$");
if((not tab[name])and((__numer)or((czy_odpowiednik)and(parametry_modul.TypeNumber(name)))))then
numer=numer+1;
tab[tonumber(__numer) or(((__numer)and(__numer==""))and 1 or nil) or name]=true;
end;
end;
return numer;
end;
p["Parametr w tablicy nazw"]=function(frame)
local zmienna_z_argumentami=frame.args["parametry"];
if(not zmienna_z_argumentami)then return;end;
local jedna_pozycja=frame.args["pozycja"];
if(not jedna_pozycja)then return;end;
local parametry_modul=require("Module:Parametry");
jedna_pozycja=parametry_modul["Odstępy"]{[1]=jedna_pozycja,[2]="tak"};
if(jedna_pozycja=="")then return;end;
local od_duzej=parametry_modul.CzyTak(frame.args["od dużej"]);
jedna_pozycja=od_duzej and mw.getContentLanguage():ucfirst(jedna_pozycja) or jedna_pozycja;
local iter=mw.text.gsplit(zmienna_z_argumentami,";",true);
local tablica={};
for pozycja in iter do
pozycja=parametry_modul["Odstępy"]{[1]=pozycja,[2]="tak"};
if(pozycja~="")then
tablica[od_duzej and mw.getContentLanguage():ucfirst(pozycja) or pozycja]=true;
end;
end;
return (tablica[jedna_pozycja] and "tak" or nil);
end;
return p;
hpr6li5ixgv5joi577ag8p3vpmkfvu8
553323
553312
2026-08-27T08:54:18Z
Persino
2851
553323
Scribunto
text/plain
local p={};
local function ParserBlokowy(frame, co_ma_wywolac)
local pf=frame:getParent();
local nazwa_szablonu_modulu_lub_parsera="Nazwa";
local szablon_modul_lub_parser=frame.args[nazwa_szablonu_modulu_lub_parsera];
local argumenty_szablonu_modulu_lub_parsera={};
local tabela_by_sprawdzic_czy_powstarzaja_sie_parametry_dzieci_i_rodzica={};
local ramka_dane_modul=mw.loadData("Module:Ramka/dane");
local bez_parametrowa_tablica=ramka_dane_modul.bez_parametrowa_tablica;
local bez_parametrow={};
if(co_ma_wywolac==1)then bez_parametrow["Funkcja"]=true;end;
local parametry_modul=require("Module:Parametry");
local tab_usun_parametry;
local czy_usun=frame.args["usuń z parametrów ramki"];
if(parametry_modul.CzyTak(czy_usun))then
tab_usun_parametry={};
local iter=mw.text.gsplit(czy_usun,";",true);
for name in iter do
name=mw.ustring.gsub(name,"^[%s_]*","");
name=mw.ustring.gsub(name,"[%s_]*$","");
name=tonumber(name) or name;
tab_usun_parametry[name]=true;
end;
end;
for nazwa_parametru,wartosc_parametru in pairs(frame.args) do
if(((not tab_usun_parametry)or(not tab_usun_parametry[nazwa_parametru]))
and((type(nazwa_parametru)=="number")or((type(nazwa_parametru)=="string")and(not bez_parametrow[nazwa_parametru])and(not bez_parametrowa_tablica[nazwa_parametru])))
)then
tabela_by_sprawdzic_czy_powstarzaja_sie_parametry_dzieci_i_rodzica[nazwa_parametru]=nazwa_parametru;
argumenty_szablonu_modulu_lub_parsera[nazwa_parametru]=wartosc_parametru;
end;
end;
local szablonowe_modul=require("Module:Szablonowe");
local tabela_bez_argumentow=p.RozpakujArgumenty(frame.args["bez argumentów rodzica"]);
local zmienna_z_parametrami_rodzica=frame.args["zmienna z parametrami rodzica"];
local czy_przekazac_parametry_rodzica=zmienna_z_parametrami_rodzica and parametry_modul.CzyTak(zmienna_z_parametrami_rodzica) or false;
----
local frame_sprawdzenia_args=frame.args["bez dodatkowych sprawdzeń"];
local bez_dodatkowych_sprawdzen;
local czy_podano_bez_dodatkowych_sprawdzen;
if(frame_sprawdzenia_args)then
czy_podano_bez_dodatkowych_sprawdzen=frame_sprawdzenia_args and true or false;
bez_dodatkowych_sprawdzen=parametry_modul.CzyTak(frame_sprawdzenia_args);
else
local frame_sprawdzenia_pf_args=pf.args["bez dodatkowych sprawdzeń"];
if(frame_sprawdzenia_pf_args)then
czy_podano_bez_dodatkowych_sprawdzen=frame_sprawdzenia_pf_args and true or false;
bez_dodatkowych_sprawdzen=parametry_modul.CzyTak(frame_sprawdzenia_pf_args);
end;
end;
local z_dodatkowymi_sprawdzeniami=not(bez_dodatkowych_sprawdzen);
---
local PakujArgumentyRamki = function(args)
local czy_tylko_ze_zmienna_bez_argumentow_szablonu=args["zmienna z argumentami ramki"];
if(not parametry_modul.CzyTak(czy_tylko_ze_zmienna_bez_argumentow_szablonu))then return args["bez argumentów szablonu"];end;
local tabelka1={};
for nazwa_parametru,_ in pairs(args)do
if((type(nazwa_parametru)=="number")or((type(nazwa_parametru)=="string")and(not bez_parametrow[nazwa_parametru])and(not bez_parametrowa_tablica[nazwa_parametru])))then
tabelka1[nazwa_parametru]=true;
end;
end;
local tabelka2=(args["bez argumentów szablonu"]) and p.RozpakujArgumenty(args["bez argumentów szablonu"]);
local tabelka=parametry_modul["ŁączDwieTabele"](tabelka1,tabelka2);
local tablica_mikroszablonow={
[";"]="{{+}}",
};
local str="";
for name,_ in pairs(tabelka) do
str=str..((str~="")and ";" or "")..mw.ustring.gsub(mw.text.trim(name),".",tablica_mikroszablonow);
end;
return str,tabelka2;
end;
local bez_argumentow_szablonu=nil;
if(czy_przekazac_parametry_rodzica)then
if(z_dodatkowymi_sprawdzeniami)then
local str=p.PakujParametry(pf.args);
argumenty_szablonu_modulu_lub_parsera["parametry rodzica"]=str;
end;
argumenty_szablonu_modulu_lub_parsera["potomek"]="tak";
argumenty_szablonu_modulu_lub_parsera["bez argumentów szablonu"],bez_argumentow_szablonu=PakujArgumentyRamki(frame.args);
if(czy_podano_bez_dodatkowych_sprawdzen)then
argumenty_szablonu_modulu_lub_parsera["bez dodatkowych sprawdzeń"]=bez_dodatkowych_sprawdzen and "tak" or "";
end;
argumenty_szablonu_modulu_lub_parsera["nazwa szablonu rodzica"]=pf.args["nazwa szablonu rodzica"] or szablonowe_modul.NazwaSzablonu(pf:getTitle());
else
local function ZmiennaZNazwaSzablonuRodzica()
local czy_ze_nazwa_szablonu=frame.args["zmienna z nazwą szablonu rodzica"];
if(parametry_modul.CzyTak(czy_ze_nazwa_szablonu))then
argumenty_szablonu_modulu_lub_parsera["nazwa szablonu rodzica"]=pf.args["nazwa szablonu rodzica"] or szablonowe_modul.NazwaSzablonu(pf:getTitle());
end;
end;
local z_argumentami_najwyzszego_rodzica=not parametry_modul.CzyTak(tabela_bez_argumentow["nie potomek"]);
if(z_argumentami_najwyzszego_rodzica)then
local potomek=parametry_modul.CzyTak(pf.args["potomek"]);
if(potomek)then
local parametry_rodzic=pf.args["parametry rodzica"];
if(parametry_rodzic)then
if(z_dodatkowymi_sprawdzeniami)then
argumenty_szablonu_modulu_lub_parsera["parametry rodzica"]=parametry_rodzic;
end;
argumenty_szablonu_modulu_lub_parsera["potomek"]="tak";
argumenty_szablonu_modulu_lub_parsera["bez argumentów szablonu"],bez_argumentow_szablonu=PakujArgumentyRamki(frame.args);
if(czy_podano_bez_dodatkowych_sprawdzen)then
argumenty_szablonu_modulu_lub_parsera["bez dodatkowych sprawdzeń"]=bez_dodatkowych_sprawdzen and "tak" or "";
end;
argumenty_szablonu_modulu_lub_parsera["nazwa szablonu rodzica"]=pf.args["nazwa szablonu rodzica"] or szablonowe_modul.NazwaSzablonu(pf:getTitle());
else
ZmiennaZNazwaSzablonuRodzica();
end;
else
ZmiennaZNazwaSzablonuRodzica();
end;
else
ZmiennaZNazwaSzablonuRodzica()
end;
end;
local czy_bez_argumentow_nienazwanych_rodzica=parametry_modul.CzyTak(frame.args["bez argumentów nienazwanych rodzica"]);
local czy_parametry_pudelka=parametry_modul.CzyTak(frame.args["parametry funkcji modułu pudełek"]);
local czy_parametry_pudelka_podstawowe=parametry_modul.CzyTak(frame.args["parametry podstawowe funkcji modułu pudełek"])
local pudelko_modul=require("Module:Pudełko");
for nazwa_parametru,wartosc_parametru in pairs(pf.args) do
if(((type(nazwa_parametru)=="number")or((type(nazwa_parametru)=="string")and(not bez_parametrow[nazwa_parametru])and(not bez_parametrowa_tablica[nazwa_parametru])))and((not bez_argumentow_szablonu)or(not bez_argumentow_szablonu[nazwa_parametru])))then
if((not tabela_by_sprawdzic_czy_powstarzaja_sie_parametry_dzieci_i_rodzica[nazwa_parametru])
and(not tabela_bez_argumentow[nazwa_parametru])
and((not czy_bez_argumentow_nienazwanych_rodzica)or((czy_bez_argumentow_nienazwanych_rodzica)and(not tonumber(nazwa_parametru)))
))then
local czy_dodac_do_parametrow;
if czy_parametry_pudelka or czy_parametry_pudelka_podstawowe then
local czy_dodac_do_parametrow=((not czy_parametry_pudelka_podstawowe)
and mw.ustring.match(nazwa_parametru,"^nazwa przestrzeni nazw %d+$")
and not pudelko_modul.CzyNiepoprawnaNazwa(wartosc_parametru))
or (mw.ustring.match(nazwa_parametru,"^nazwa przestrzeni nazw$")
and not pudelko_modul.CzyNiepoprawnaNazwa(wartosc_parametru))
or ((not czy_parametry_pudelka_podstawowe)
and mw.ustring.match(nazwa_parametru,"^nazwa jednostki %d+$")
and wartosc_parametru~=""
and not pudelko_modul.CzyNiepoprawnaNazwa(wartosc_parametru))
or (mw.ustring.match(nazwa_parametru,"^nazwa jednostki$")
and wartosc_parametru~=""
and not pudelko_modul.CzyNiepoprawnaNazwa(wartosc_parametru))
or ((not czy_parametry_pudelka_podstawowe)
and mw.ustring.match(nazwa_parametru,"^typ jednostki %d+$")
and wartosc_parametru~=""
and not pudelko_modul.CzyNiepoprawnaNazwa(wartosc_parametru))
or (mw.ustring.match(nazwa_parametru,"^typ jednostki$")
and wartosc_parametru~=""
and not pudelko_modul.CzyNiepoprawnaNazwa(wartosc_parametru));
if(czy_dodac_do_parametrow)then
argumenty_szablonu_modulu_lub_parsera[nazwa_parametru]=wartosc_parametru;
end;
else
argumenty_szablonu_modulu_lub_parsera[nazwa_parametru]=wartosc_parametru;
end;
end;
end;
end;
if(co_ma_wywolac==0)then
return pf:expandTemplate{title=szablon_modul_lub_parser,args=argumenty_szablonu_modulu_lub_parsera};
elseif(co_ma_wywolac==1)then
local frame2=pf:newChild{args=argumenty_szablonu_modulu_lub_parsera};
local funkcja=frame.args["Funkcja"];
return require("Module:"..szablon_modul_lub_parser)[funkcja](frame2);
elseif(co_ma_wywolac==2)then
return pf:callParserFunction{name=szablon_modul_lub_parser,args=argumenty_szablonu_modulu_lub_parsera};
else
return pf:expandTemplate{title=szablon_modul_lub_parser,args=argumenty_szablonu_modulu_lub_parsera};
end;
end;
local function BudowaSzereguZDanych(frame,tab_lancuch,minimum,maksimum)
local parametry_modul=require("Module:Parametry");
local czy_akapit=parametry_modul.CzyTak(frame.args["akapit"]);
local akapit=czy_akapit and "\n\n" or "";
local przecinek=parametry_modul.CzyTak(frame.args["przecinek"]) and ", " or "";
local czy_nowa_linia=parametry_modul.CzyTak(frame.args["nowa linia"]);
local nowa_linia=czy_nowa_linia and "\n" or "";
local wyliczanka=parametry_modul.CzyTak(frame.args["wyliczanka"]);
local przecinek_na_poczatku=parametry_modul.CzyTak(frame.args["początek"]);
local myslnik=parametry_modul.CzyTak(frame.args["myślnik"]);
local warunkowe=parametry_modul.CzyTak(frame.args["warunkowe"]);
local lancuch_znakow="";
local koniec=#tab_lancuch;
for i=1,koniec,1 do
local lancuch=tab_lancuch[i];
lancuch=mw.ustring.gsub(lancuch,"{{min}}",minimum);
lancuch=mw.ustring.gsub(lancuch,"{{max}}",maksimum);
if(not wyliczanka)then
lancuch_znakow=lancuch_znakow..((i~=1)and przecinek or ((przecinek_na_poczatku)and przecinek or ((myslnik)and " - " or "")));
else
lancuch_znakow=lancuch_znakow..((i==1)and ((przecinek_na_poczatku)and ", " or "") or ((i<koniec)and ", " or " i "));
end;
lancuch_znakow=lancuch_znakow..((i~=1)and (czy_akapit and akapit or nowa_linia) or "")..lancuch;
end;
if(warunkowe)then
local parametr=parametry_modul.CzyTak(frame.args["parametr"]);
return p.InstrukcjeWarunkowe(lancuch_znakow,true,parametr);
else
return lancuch_znakow;
end;
end;
p.InstrukcjeWarunkowe = function(ciag,derektywy_specjalne,derektywy_parametrowe)
local ciag_warunkowe_fun=function(s)
local function ParserWiki(s,wywolanie)
local czy_parser=mw.ustring.match(s,wywolanie);
if(czy_parser)then
return mw.getCurrentFrame():preprocess(s);
end;
end
return ParserWiki(s,"^({{%s*#if:[^{}]*}})$")
or ParserWiki(s,"^({{%s*#ifeq:[^{}]*}})$")
or ParserWiki(s,"^({{%s*#switch:[^{}]*}})$")
or ParserWiki(s,"^({{%s*#ifexpr:[^{}]*}})$")
or ParserWiki(s,"^({{%s*#expr:[^{}]*}})$")
or ParserWiki(s,"^({{%s*#iferror:[^{}]*}})$")
or ParserWiki(s,"^({{%s*#ifexist:[^{}]*}})$")
or nil;
end;
local ciag,_=mw.ustring.gsub(ciag,"{{[^{}]+}}",ciag_warunkowe_fun);
if(derektywy_specjalne)then
local ramka_dane_modul=mw.loadData("Module:Ramka/dane");
local tab_zamieniane=ramka_dane_modul.tablica_warunkowe_i_parametr;
ciag=mw.ustring.gsub(ciag,"(__[^_]+__)",function(s)
local tab_szablon=tab_zamieniane[s];
if(tab_szablon)then
if(not derektywy_parametrowe)then return tab_szablon[1];end;
return tab_szablon[2];
end;
return nil;
end);
return ciag;
end;
return ciag;
end;
p.RozpakujArgumenty = function(zmienna_z_argumentami)
local tablica_mikroszablonow={
["{{+}}"]=";",
};
local tabela_bez_argumentow={};
local parametry_modul=require("Module:Parametry");
if(parametry_modul.CzyTak(zmienna_z_argumentami))then
local iter=mw.text.gsplit(zmienna_z_argumentami,";",true);
local podlancuch;
for podlancuch in iter do
podlancuch=mw.text.trim(podlancuch);
local liczba=tonumber(podlancuch);
tabela_bez_argumentow[liczba or mw.ustring.gsub(podlancuch,"{{[^{}]+}}",tablica_mikroszablonow)]=true;
end;
end;
return tabela_bez_argumentow;
end;
p.PakujParametry = function(args)
return mw.text.jsonEncode(args,mw.text.JSON_PRESERVE_KEYS);
end;
p.RozpakujParametry = function (zmienna_z_parametrami)
return mw.text.jsonDecode(zmienna_z_parametrami,mw.text.JSON_PRESERVE_KEYS);
end;
p["Rozwiń"] = function(frame)
return frame:getParent():preprocess(frame.args[1]);
end;
p.Log = function(frame)
local parametry_modul=require("Module:Parametry");
local czy_zwracac=parametry_modul.CzyTak(frame.args["wikitext"]);
local wikitekst=frame.args["log"];
mw.log(wikitekst);
return (czy_zwracac and wikitekst or "");
end;
p.Szablon = function(frame)
return ParserBlokowy(frame,0);
end;
p["Moduł"] = function(frame)
return ParserBlokowy(frame, 1);
end;
p.Parser = function(frame)
return ParserBlokowy(frame, 2);
end;
p.Q =function(frame)
local parametry_modul=require("Module:Parametry");
local args_szablon=parametry_modul.PobierzArgsParametry(frame);
local args_ksiazka={};
for name,value in pairs(args_szablon)do
if(not parametry_modul.TypeNumber(name))then
args_ksiazka[name]=value;
elseif(name>1)then
args_ksiazka[name-1]=value;
elseif(name~=1)then
args_ksiazka[name]=value;
end;
end;
if(parametry_modul.CzyTak(frame.args["wyspecjalizowana"]))then
args_ksiazka["wyspecjalizowana"]=nil;
end;
local szablon=args_szablon[1];
local szablon_ksiazka=p["N"]{args={[1]=szablon,}};
local pf=frame:getParent();
return pf:expandTemplate{title=szablon_ksiazka,args=args_ksiazka,};
end;
p.N=function(frame)
local parametr=frame.args[1];
local parametry_modul=require("Module:Parametry");
local parametr_p=tonumber(frame.args["p"]) or 0;
local parametr_n=parametry_modul.CzyTak(frame.args["n"]);
local szablon=parametry_modul["CzyTakCiąg"](parametr) and parametr or ((parametr_p==1) and "Nieznany moduł" or ((parametr_p==2) and "Nieznana kategoria" or "Nieznany szablon"));
szablon=parametry_modul["Odstępy"]{[1]=szablon,[2]="tak",};
szablon=mw.getContentLanguage():ucfirst(szablon);
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
local przestrzen=((parametr_p==1) and nazwy_np_modul.Module or ((parametr_p==2) and nazwy_np_modul.Category or nazwy_np_modul.Template));
local szablon_ksiazka=przestrzen..":Książka:"..szablon;
local parametr_k=parametry_modul.CzyTak(frame.args["k"]);
if(not parametr_k)then
local techniczne_modul=require("Module:Techniczne");
local liczba_title,tab_title=techniczne_modul.PoliczZbiory{[1]=szablon_ksiazka,tekst=true,};
szablon_ksiazka=((liczba_title>0)and (szablon_ksiazka) or (przestrzen..":"..szablon));
end;
if(parametr_n)then
local nazwy_modul=require("Module:Nazwy");
szablon_ksiazka=nazwy_modul["NAZWASTRONY"]{nazwa=szablon_ksiazka,};
end;
return szablon_ksiazka;
end;
p.A=function(frame)
local parametr=frame.args[1];
local parametry_modul=require("Module:Parametry");
local parametr_p=parametry_modul.CzyTak(frame.args["p"]);
local przestrzen;
if(parametr_p)then
local tabela_nazw={};
local nazwy_modul=require("Module:Nazwy");
przestrzen=nazwy_modul["NAZWAPRZESTRZENI"](parametr,tabela_nazw);
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
if((przestrzen~=nazwy_np_modul.Template)and(przestrzen~=nazwy_np_modul.Module)and(przestrzen~=nazwy_np_modul.Category))then
return parametr;
end;
parametr=nazwy_modul["NAZWASTRONY"](parametr,tabela_nazw);
end;
parametr=mw.ustring.gsub(parametr,"^[Kk]siążka:","");
parametr=(parametr_p and ((przestrzen~="") and (przestrzen..":") or "") or "")..parametr;
return parametr;
end;
p.Powtarzaj = function(frame)
local pf=frame:getParent();
local parametry_modul=require("Moduł:Parametry");
local czy_parametry=parametry_modul.CzyTak(frame.args["parametry"]);
local tabela={};
local zacznij_nazwane;
local parametry_modul=require("Module:Parametry");
if(czy_parametry)then
local FormatujTabela=function(parametr_tab)
return{
parametry_modul.CzyTak(parametr_tab[1]),
parametry_modul.CzyTak(parametr_tab[2]),
tonumber(parametr_tab[3]) or 0,
tonumber(parametr_tab[4]),
tonumber(parametr_tab[5]),
};
end;
local WstawDoTabeli=function(znaczenia_parametr)
local parametr,wartosc=mw.ustring.match(znaczenia_parametr,"%s*([%w_%-][%w%s_%-]-)%s*=%s*(.-)%s*$");
if(parametr and wartosc)then
if((not tonumber(parametr))and(not tabela[parametr]))then
local parametr_tab=mw.text.split(wartosc,"%s*,%s*",false);
tabela[parametr]=FormatujTabela(parametr_tab);
end;
else
if((not tonumber(znaczenia_parametr))and(not tabela[znaczenia_parametr]))then
tabela[znaczenia_parametr]={};
end;
end;
end;
local iter=mw.text.gsplit(mw.text.trim(frame.args["parametry"]),"%s*;%s*",false);
local czy=true;
for znaczenia_parametr in iter do
znaczenia_parametr=mw.text.trim(znaczenia_parametr);
local czy_nie_omijac=parametry_modul.CzyTak(znaczenia_parametr);
if(czy_nie_omijac)then
if(czy)then
zacznij_nazwane=tonumber(znaczenia_parametr);
czy=false;
if(not zacznij_nazwane)then
zacznij_nazwane=0;
WstawDoTabeli(znaczenia_parametr);
end;
else
WstawDoTabeli(znaczenia_parametr);
end;
end;
end;
end;
local tabela_dodatkowe={};
local czy_dodatkowe=parametry_modul.CzyTak(frame.args["dodatkowe"]);
if(czy_dodatkowe)then
local iter=mw.text.gsplit(mw.text.trim(frame.args["dodatkowe"]),"%s*;%s*",false);
for name in iter do
tabela_dodatkowe[name]=true;
end;
end;
if(not zacznij_nazwane)then zacznij_nazwane=0;end;
local function LiczbaZmiennychOOgolniePodstawieParametru(podstawa_parametru_wyszukiwana)
local args=pf.args;
local maksymalna_liczba_nazwy_danego_parametru=0;
for nazwa_parametru, wartosc_parametru in pairs(args)do
local czy_jedynka=false;
if(type(nazwa_parametru)=="string")then
local nazwa_podstawy_parametru,spacja,liczba=mw.ustring.match(nazwa_parametru,"^([%a%-%s]*[%a%-])(%s?)(%d+)$");
if(not nazwa_podstawy_parametru and not spacja and not liczba)then
nazwa_podstawy_parametru=nazwa_parametru;
spacja="";
liczba=1;
czy_jedynka=true;
end;
local subtab=tabela[nazwa_podstawy_parametru];
if(subtab)then
local nie_spacja_parametru=subtab[1];
local czy_z_jedynka=subtab[2];
liczba=tonumber(liczba) or 0;
if((not nie_spacja_parametru and (((spacja==" ")and ((liczba>1)or((not czy_jedynka)and(czy_z_jedynka))or((not czy_z_jedynka)and(not czy_jedynka)))) or(((not czy_z_jedynka)and(czy_jedynka))and(spacja=="" and liczba==1))))
or (nie_spacja_parametru and (((spacja=="")and ((liczba>1)or((not czy_jedynka)and(czy_z_jedynka))or((not czy_z_jedynka)and(not czy_jedynka)))) or(((not czy_z_jedynka)and(czy_jedynka))and(spacja=="" and liczba==1))))
)then
if(((podstawa_parametru_wyszukiwana) and (nazwa_podstawy_parametru==podstawa_parametru_wyszukiwana))or(not podstawa_parametru_wyszukiwana))then
maksymalna_liczba_nazwy_danego_parametru=math.max(maksymalna_liczba_nazwy_danego_parametru,liczba);
end;
end;
end;
end;
end;
return maksymalna_liczba_nazwy_danego_parametru;
end;
local MaksymalnyLiczonyNumerElementowPodanychPodstawNazwyParametrow=function()
local maksimum_all=0;
for wartosc_parametru,dane_parametru in pairs(tabela)do
if(parametry_modul.TypeString(wartosc_parametru))then
if(not tabela_dodatkowe[wartosc_parametru])then
local maksymalna_liczba_nazwy_danego_parametru=LiczbaZmiennychOOgolniePodstawieParametru(wartosc_parametru);
local maksimum=maksymalna_liczba_nazwy_danego_parametru-(dane_parametru[3] or 0);
maksimum_all=math.max(maksimum-zacznij_nazwane,maksimum_all);
end;
end;
end;
return maksimum_all;
end;
local zacznij_na_poczatku,skoncz_na_koncu;
local tekst_do_analizy=frame.args[1];
if(not frame.args[1])then return "(brak parametru do analizy)";end;
local czy_tekst=parametry_modul.CzyTak(tekst_do_analizy);
if(not czy_tekst)then return "(parametr do analizy pusty)";end;
local start=frame.args["start"];
local koniec=frame.args["koniec"];
local czy_start=parametry_modul.CzyTak(start);
local czy_koniec=parametry_modul.CzyTak(koniec);
local zaznacz=frame.args["zaznacz"];
local tabela_zaznacz={};
if(zaznacz)then
local iter=mw.text.gsplit(zaznacz,"%s*;%s*",false)
for liczba in iter do
tabela_zaznacz[#tabela_zaznacz+1]=tonumber(liczba) or 0;
end;
end;
local czy_rozne=parametry_modul.CzyTak(frame.args["różne"]);
local czy_ma_nazwane;
local function Wylicz_skoncz_na_koncu()
czy_ma_nazwane=parametry_modul["CzySąElementyNazwaneTablicy"](tabela);
if(czy_ma_nazwane)then
if(czy_rozne)then
local maks_numer=parametry_modul.CzyTak(frame.args["maksimum numeracyjne"]);
if(not maks_numer)then
return math.max(MaksymalnyLiczonyNumerElementowPodanychPodstawNazwyParametrow(),parametry_modul.MaksymalnaLiczbaParametruNienazwanegoTablicy(pf.args));
else
return parametry_modul.MaksymalnaLiczbaParametruNienazwanegoTablicy(pf.args);
end;
else
return MaksymalnyLiczonyNumerElementowPodanychPodstawNazwyParametrow();
end;
else
return parametry_modul.MaksymalnaLiczbaParametruNienazwanegoTablicy(pf.args);
end;
end;
local skoncz_na_koncu_wyliczona=Wylicz_skoncz_na_koncu();
if(not czy_koniec)then
skoncz_na_koncu=skoncz_na_koncu_wyliczona;
else
skoncz_na_koncu=math.max(math.min(skoncz_na_koncu_wyliczona, tonumber(koniec) or 0),0);
end;
zacznij_na_poczatku=math.max(tonumber(start) or 1,1);
if(zacznij_na_poczatku==0)then return "(początek jest ustawiony na zero)";end;
for name, tab_par in pairs(tabela)do
local _4=tab_par[4];local _5=tab_par[5];
if(_4)then zacznij_na_poczatku=math.max(math.min(zacznij_na_poczatku,_4 or 1),1);end;
if(_5)then skoncz_na_koncu=math.max(math.max(skoncz_na_koncu,_5 or 0),0);end;
end;
local czy_niepodane=parametry_modul.CzyTak(frame.args["niepodane"]);
local czy_zero_element=false;
if(czy_niepodane)then
if(zacznij_na_poczatku>skoncz_na_koncu)then
skoncz_na_koncu=zacznij_na_poczatku;
czy_zero_element=true;
end;
end;
local lancuch_znakow="";
local gdy_nic=parametry_modul.CzyTak(frame.args["nic"])and frame.args["nic"] or "";
if(zacznij_na_poczatku>skoncz_na_koncu)then return gdy_nic;end;
local pokolei=parametry_modul.CzyTak(frame.args["po kolei"]);
local wytnij=parametry_modul.CzyTak(frame.args["wytnij"]);
local wytnij_puste=parametry_modul.CzyTak(frame.args["wytnij puste"]);
local nie_wytnij_nazwane=parametry_modul.CzyTak(frame.args["nie wytnij nazwane"]);
local _i=parametry_modul.CzyTak(frame.args["znacznik"])and frame.args["znacznik"] or "_";
local czy_parametry_ze_spacja_i_jedynka=function(nazwa_parametru)
local parametr_tab=tabela[nazwa_parametru];
if(parametr_tab)then
return (not parametr_tab[1]),parametr_tab[2];
end;
return true,false;
end;
if(not czy_rozne)then
if(czy_ma_nazwane)then
local function Analizuj_dla_bez_rozne(tabela_wszystkich_parametrow)
local tab_lancuch={};
local maksimum=0;
local minimum;
for licznik=zacznij_na_poczatku,skoncz_na_koncu,1 do
local lancuch=tekst_do_analizy;
local czy=nil;
local wytnij_ujemne;
for zmienne_parametrowe,_ in pairs(tabela_wszystkich_parametrow)do
if(zmienne_parametrowe)then
local subtab=tabela[zmienne_parametrowe];
local liczba_przesuniecia=subtab and subtab[3] or 0;
local liczba=licznik+liczba_przesuniecia+zacznij_nazwane;
----
if(liczba<1)then wytnij_ujemne=true;end;
if(liczba>0)then
local ze_spacja,czy_z_jedynka=czy_parametry_ze_spacja_i_jedynka(zmienne_parametrowe);
local element=pf.args[zmienne_parametrowe..((ze_spacja)and " " or "")..licznik];
local czy_jedynka=(licznik==1)and ((element and(not wytnij)) or((wytnij)and (parametry_modul.CzyTak(element))));
local wartosc_elementu=((czy_z_jedynka) and element or ((not czy_z_jedynka)and((licznik>1)and element or ((licznik==1)and(czy_jedynka and element or pf.args[zmienne_parametrowe])))));
czy=czy or (((wartosc_elementu) and ((not wytnij)and(not wytnij_puste)))
or ((wytnij)and (parametry_modul["CzyTakCiąg"](wartosc_elementu)))
or ((wytnij_puste and not wytnij)and (parametry_modul.CzyTak(wartosc_elementu))));
local tabelka_szablonow={
["{{".._i.."}}"]=licznik,
["{{".._i.._i.."}}"]=(czy_z_jedynka and licznik or ((licznik>1) and licznik or (czy_jedynka and 1 or ""))),
};
local function fun_tabelka_szablonow(ciag)
local ciag_strip=mw.ustring.gsub(ciag,"{{%s*(%S+)%s*}}","{{%1}}");
return tabelka_szablonow[ciag_strip] or ciag;
end;
lancuch=mw.ustring.gsub(lancuch,"{{%s*".._i.."+%s*}}",fun_tabelka_szablonow);
end;
end;
end;
if(not wytnij_ujemne)then
local czy_jest=parametry_modul.CzyJestTakiElementNumerowanyTabeli(tabela_zaznacz,licznik);
czy=czy or czy_zero_element;
if((pokolei and (not czy_jest)) or czy or ((not pokolei)and(czy_jest)))then
tab_lancuch[#tab_lancuch+1]=lancuch;
maksimum=math.max(maksimum,licznik);
minimum=math.min(minimum or licznik,licznik);
end;
end;
end
lancuch_znakow=BudowaSzereguZDanych(frame,tab_lancuch,minimum or 0,maksimum);
end;
Analizuj_dla_bez_rozne(tabela);
else
local tab_lancuch={};
local maksimum=0;
local minimum;
for licznik=zacznij_na_poczatku,skoncz_na_koncu,1 do
local element=pf.args[licznik]
local czy=czy_zero_element
or (((element)and ((not wytnij)and(not wytnij_puste)))
or((wytnij)and(parametry_modul["CzyTakCiąg"](element)))
or((wytnij_puste and not wytnij)and(parametry_modul.CzyTak(element))));
local czy_jest=parametry_modul.CzyJestTakiElementNumerowanyTabeli(tabela_zaznacz,licznik);
if((pokolei and (not czy_jest)) or czy or ((not pokolei)and(czy_jest)))then
tab_lancuch[#tab_lancuch+1]=mw.ustring.gsub(tekst_do_analizy,"{{%s*".._i.."+%s*}}",licznik);
maksimum=math.max(maksimum,licznik);
minimum=math.min(minimum or licznik,licznik);
end;
end;
lancuch_znakow=BudowaSzereguZDanych(frame, tab_lancuch,minimum or 0,maksimum);
end;
else
local function Analizuj_z_rozne(tabela_wszystkich_parametrow)
local tab_lancuch={};
local maksimum=0;
local minimum;
for licznik=zacznij_na_poczatku,skoncz_na_koncu,1 do
local czy=false;
local czy_niepuste=false;
local wytnij_ujemne=false;
local function Analiza_zmiennej_parametrowej(zmienne_parametrowe,licznik,czy_ze_spacja,czy_z_jedynka)
local wartosc,klucz;
if(zmienne_parametrowe)then
local function Niewspomniane_w_rozne(zmienne_parametrowe,liczba_przesuniecia)
local liczba=licznik+liczba_przesuniecia+zacznij_nazwane;
if(liczba<1)then wytnij_ujemne=true;end;
if(liczba>0)then
local element=pf.args[zmienne_parametrowe..((czy_ze_spacja)and " " or "")..liczba];
local czy_jedynka=(liczba==1)and element;
local wartosc_elementu=((czy_z_jedynka) and element or ((not czy_z_jedynka)and((liczba>1)and element or ((liczba==1)and(czy_jedynka and element or pf.args[zmienne_parametrowe])))));
czy_niepuste=czy_niepuste
or ((not nie_wytnij_nazwane)and((wytnij and parametry_modul["CzyTakCiąg"](wartosc_elementu))
or (wytnij_puste and not wytnij and parametry_modul.CzyTak(wartosc_elementu))) or (nie_wytnij_nazwane and wartosc_elementu));
czy=czy or wartosc_elementu;
wartosc="{{{"..zmienne_parametrowe..(czy_z_jedynka and (((czy_ze_spacja)and " " or "")..liczba) or ((liczba>1) and (((czy_ze_spacja)and " " or "")..liczba) or (czy_jedynka and (((czy_ze_spacja)and " " or "")..1) or "")));
klucz="{{{%s*"..zmienne_parametrowe..((czy_ze_spacja)and "%s+" or "").."{{%s*".._i.._i.."+%s*}}";
end;
end;
local subtab=tabela[zmienne_parametrowe];
local liczba_przesuniecia=subtab and subtab[3] or 0;
Niewspomniane_w_rozne(zmienne_parametrowe,liczba_przesuniecia);
end;
return klucz,wartosc;
end;
local function Tekst_do_analizy(tekst_do_analizy_przetwarzany,klucz,wartosc)
if((wartosc)and(klucz))then
local przetwarzane,_=mw.ustring.gsub(tekst_do_analizy_przetwarzany,klucz,wartosc);
return przetwarzane;
end;
return "";
end;
local lancuch_zaanalizowany=tekst_do_analizy;
for zmienne_parametrowe,_ in pairs(tabela_wszystkich_parametrow)do
local lokalizacja=mw.ustring.match(tekst_do_analizy,"{{{%s*"..zmienne_parametrowe.."%s*{{%s*".._i.._i.."+%s*}}");
if(lokalizacja)then
zmienne_parametrowe=mw.text.trim(zmienne_parametrowe);
local czy_ze_spacja,czy_z_jedynka=czy_parametry_ze_spacja_i_jedynka(zmienne_parametrowe);
local klucz,wartosc=Analiza_zmiennej_parametrowej(zmienne_parametrowe,licznik,czy_ze_spacja,czy_z_jedynka);
if(wytnij_ujemne)then break;end;
lancuch_zaanalizowany=Tekst_do_analizy(lancuch_zaanalizowany,klucz,wartosc);
end;
end;
if(not wytnij_ujemne)then
local zmienna_numerowana_wikikodu=mw.ustring.match(tekst_do_analizy,"{{{%s*{{%s*".._i.."+%s*}}");
czy=czy_zero_element or czy or ((not zmienna_numerowana_wikikodu)and(mw.ustring.match(tekst_do_analizy,"{{%s*".._i.."%s*}}")))or((zmienna_numerowana_wikikodu)and(pf.args[licznik]));
local klucz="{{%s*".._i.."%s*}}";
local wartosc=licznik;
lancuch_zaanalizowany=Tekst_do_analizy(lancuch_zaanalizowany,klucz,wartosc);
czy_niepuste=czy_zero_element
or czy_niepuste
or (wytnij and parametry_modul["CzyTakCiąg"](pf.args[licznik]))
or (wytnij_puste and not wytnij and parametry_modul.CzyTak(pf.args[licznik]));
local czy_jest=parametry_modul.CzyJestTakiElementNumerowanyTabeli(tabela_zaznacz,licznik);
if((pokolei and (not czy_jest)) or (czy and (not wytnij)and(not wytnij_puste)) or (((wytnij)or(wytnij_puste))and(czy_niepuste)) or ((not pokolei)and(czy_jest)))then
tab_lancuch[#tab_lancuch+1]=lancuch_zaanalizowany;
maksimum=math.max(maksimum,licznik);
minimum=math.min(minimum or licznik,licznik);
end;
end;
end;
lancuch_znakow=BudowaSzereguZDanych(frame,tab_lancuch,minimum or 0,maksimum);
end;
Analizuj_z_rozne(tabela);
end;
if(#lancuch_znakow==0)then return gdy_nic;end;
local przetworzony_wikikod=not parametry_modul.CzyTak(frame.args["nie rozwiń"]) and pf:preprocess(lancuch_znakow) or lancuch_znakow;
return przetworzony_wikikod;
end;
p.PowtarzajOdDo=function(frame)
local start=tonumber(frame.args["start"]);
local koniec=tonumber(frame.args["koniec"]);
local krok=tonumber(frame.args["krok"]) or 1;
local parametry_modul=require("Module:Parametry")
local lacznik=frame.args["łącznik"] or (parametry_modul.CzyTak(frame.args["nowa linia"]) and "\n" or "");
if((not start)or(not koniec))then return "";end;
if(krok==0)then return "";end;
if(((start>koniec)and(krok>0))or((start<koniec)and(krok<0)))then return "";end;
local kod=frame.args[1];
tabela_mikroszablonow={
["{{start}}"]=start,
["{{koniec}}"]=koniec,
["{{krok}}"]=krok,
}
kod=mw.ustring.gsub(kod,"{{[^{}]+}}",tabela_mikroszablonow);
local lancuch="";
local licznik=start;
local kodprzeskok=frame.args["przeskok"];
local pf=frame:getParent();
while licznik<=koniec do
local przeskok;
if(kodprzeskok)then
local _;
przeskok,_=mw.ustring.gsub(kodprzeskok,"{{_}}",licznik);
przeskok=pf:preprocess(przeskok);
end;
local kod2,_=mw.ustring.gsub(kod,"{{_}}",licznik);
lancuch=lancuch..((lancuch~="")and lacznik or "")..kod2;
licznik=licznik+krok+(tonumber(przeskok) or 0);
end;
local przetworzony_wikikod=not parametry_modul.CzyTak(frame.args["nie rozwiń"]) and pf:preprocess(lancuch) or lancuch;
return przetworzony_wikikod;
end;
p["PrzetwarzajIterującCiąg"]=function(frame)
local poziom=frame.args["ciąg"];
poziom=mw.text.trim(poziom);
local tab_poziom=mw.text.split(poziom,"%s*;%s*",false);
local len_tab_poziom=#tab_poziom;
local start=1;local koniec=len_tab_poziom;local krok=1;
tabela_mikroszablonow={
["{{start}}"]=start,
["{{koniec}}"]=koniec,
["{{krok}}"]=krok,
}
local parametry_modul=require("Module:Parametry");
local lacznik=frame.args["łącznik"] or (parametry_modul.CzyTak(frame.args["nowa linia"]) and "\n" or "");
local kod=frame.args[1];
kod=mw.ustring.gsub(kod,"{{[^{}]+}}",tabela_mikroszablonow);
local lancuch="";
local licznik=start;
local kodprzeskok=frame.args["przeskok"];
if(kodprzeskok)then
kodprzeskok=mw.ustring.gsub(kodprzeskok,"{{[^{}]+}}",tabela_mikroszablonow);
end;
local pf=frame:getParent();
while licznik<=koniec do
local przeskok;
local tabela_microszablonow2={
["{{_}}"]=licznik,
["{{ciąg}}"]=tab_poziom[licznik];
};
if(kodprzeskok)then
przeskok=mw.ustring.gsub(kodprzeskok,"{{[^{}]+}}",tabela_microszablonow2);
przeskok=pf:preprocess(przeskok);
end;
local kod2,_=mw.ustring.gsub(kod,"{{[^{}]+}}",tabela_microszablonow2);
lancuch=lancuch..((lancuch~="")and lacznik or "")..kod2;
licznik=licznik+krok+(tonumber(przeskok) or 0);
end;
local przetworzony_wikikod=not parametry_modul.CzyTak(frame.args["nie rozwiń"]) and pf:preprocess(lancuch) or lancuch;
return przetworzony_wikikod;
end;
p["PowtarzajWedług"] = function(frame)
local start=tonumber(frame.args["start"]) or 1;
local wybrany_wzor=frame.args["wzór"];
local parametry_modul=require("Module:Parametry")
local czy_link=parametry_modul.CzyTak(frame.args["link"]);
local liczba_list=p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]{args={["wzór"]=wybrany_wzor,}};
local lancuch="";
local linki_modul=require("Module:S");
for i=start,liczba_list,1 do
local wybrany_link_lub_bez;
local wybrany_link_lub_bez=mw.ustring.gsub(wybrany_wzor,"{{_}}",tostring(i));
if czy_link then
wybrany_link_lub_bez=linki_modul["S"]{[1]=wybrany_link_lub_bez};
end;
lancuch=(lancuch~="")and (lancuch..((i<liczba_list) and ", " or " i ")..wybrany_link_lub_bez) or wybrany_link_lub_bez;
end;
return lancuch;
end;
p["LiczbaPrawychUkośników"] = function(frame)
local nazwa=frame.args[1];
local _,ile=mw.ustring.gsub(nazwa,"/",function(s)return nil;end);
return ile;
end;
p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"] = function(frame)
local start=tonumber(frame.args["start"]) or 1;
licznik=start;
local strona=frame.args["wzór"];
while true do
local strona2,_=mw.ustring.gsub(strona,"{{_}}",licznik);
local title=mw.title.makeTitle('',strona2);
if((not title) or (not title.exists))then
return licznik-1;
end;
licznik=licznik+1;
end;
end;
p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]=function(frame)
local parametry_modul=require("Module:Parametry");
local techniczne_modul=require("Module:Techniczne");
local pf=frame:getParent();
local parametr=frame.args["zmienna"];
local numerowane=frame.args["numerowane"];
parametr=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](parametr);
local czy_numerowane=parametry_modul.CzyTak(numerowane);
local numer=nil;
for name,value in pairs(pf.args)do
local __name=tostring(name);
local __numer=mw.ustring.match(__name,"^"..parametr.."(%d*)$");
__numer=tonumber(__numer) or (((__numer)and(__numer=="")) and 1 or nil);
if((__numer)or((czy_numerowane)and(parametry_modul.TypeNumber(name))))then
if(numer)then
numer=math.min(__numer or name,numer);
else
numer=__numer or name;
end;
end;
end;
return numer;
end;
p.IleJestTakichOdpowiednikowychZmiennych=function(frame)
local parametry_modul=require("Module:Parametry");
local techniczne_modul=require("Module:Techniczne");
local pf=frame:getParent();
local parametr=frame.args["zmienna"];
local numerowane=frame.args["numerowane"];
parametr=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](parametr);
local czy_numerowane=parametry_modul.CzyTak(numerowane);
local numer=0;
local tab={};
for name,value in pairs(pf.args)do
local __name=tostring(name);
local __numer=mw.ustring.match(__name,"^"..parametr.."(%d*)$");
if((not tab[name])and((__numer)or((czy_numerowane)and(parametry_modul.TypeNumber(name)))))then
numer=numer+1;
tab[tonumber(__numer) or(((__numer)and(__numer==""))and 1 or nil) or name]=true;
end;
end;
return numer;
end;
p["Parametr w tablicy nazw"]=function(frame)
local zmienna_z_argumentami=frame.args["parametry"];
if(not zmienna_z_argumentami)then return;end;
local jedna_pozycja=frame.args["pozycja"];
if(not jedna_pozycja)then return;end;
local parametry_modul=require("Module:Parametry");
jedna_pozycja=parametry_modul["Odstępy"]{[1]=jedna_pozycja,[2]="tak"};
if(jedna_pozycja=="")then return;end;
local od_duzej=parametry_modul.CzyTak(frame.args["od dużej"]);
jedna_pozycja=od_duzej and mw.getContentLanguage():ucfirst(jedna_pozycja) or jedna_pozycja;
local iter=mw.text.gsplit(zmienna_z_argumentami,";",true);
local tablica={};
for pozycja in iter do
pozycja=parametry_modul["Odstępy"]{[1]=pozycja,[2]="tak"};
if(pozycja~="")then
tablica[od_duzej and mw.getContentLanguage():ucfirst(pozycja) or pozycja]=true;
end;
end;
return (tablica[jedna_pozycja] and "tak" or nil);
end;
return p;
ss7fr01whglv485q11h7y0mcemgewhu
Moduł:Parametry
828
45669
553302
544828
2026-08-27T07:01:21Z
Persino
2851
553302
Scribunto
text/plain
local p={};
p["LiczbaElementówNumerowanychTablicy"]=function(tabela, wliczac,mnoga)
local liczba_elementow_ponumerowanych_w_tablicy=0;
local czy_tylko_niepuste_wliczac=p.CzyTak(wliczac);
local czy_mnoga=p.CzyTak(mnoga);
for _1,_2 in ipairs(tabela)do
if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(p.CzyTak(_2))))then
liczba_elementow_ponumerowanych_w_tablicy=liczba_elementow_ponumerowanych_w_tablicy+1;
if((czy_mnoga)and(liczba_elementow_ponumerowanych_w_tablicy>1))then return liczba_elementow_ponumerowanych_w_tablicy;end;
end;
end;
return liczba_elementow_ponumerowanych_w_tablicy;
end;
p["LiczbaElementówNumerowanychSzablonu"]=function(frame)
local parametry_modul=require("Module:Parametry");
return parametry_modul["LiczbaElementówNumerowanychTablicy"](frame:getParent().args,frame.args["niepuste"],frame.args["mnoga"]);
end;
p["LiczbaElementówNienazwanychTablicy"] = function(tabela,wliczac,mnoga)
local czy_tylko_niepuste_wliczac=p.CzyTak(wliczac);
local czy_mnoga=p.CzyTak(mnoga);
local liczba_elementow_nienazwanych_w_tablicy=0;
for _1,_2 in pairs(tabela)do
if(type(_1)=="number")then
if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(p.CzyTak(_2))))then
liczba_elementow_nienazwanych_w_tablicy=liczba_elementow_nienazwanych_w_tablicy+1;
if((czy_mnoga)and(liczba_elementow_nienazwanych_w_tablicy>1))then return liczba_elementow_nienazwanych_w_tablicy;end;
end;
end;
end;
return liczba_elementow_nienazwanych_w_tablicy;
end;
p["LiczbaParametrówNienazwanychSzablonu"] = function (frame)
return p["LiczbaElementówNienazwanychTablicy"](frame:getParent().args,frame.args["niepuste"],frame.args["mnoga"])
end;
p["LiczbaElementówTablicy"]=function(tabela,wliczac)
local czy_tylko_niepuste_wliczac=p.CzyTak(wliczac);
local liczba_elementow_w_tablicy=0;
for _1,_2 in pairs(tabela)do
if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(p.CzyTak(_2))))then
liczba_elementow_w_tablicy=liczba_elementow_w_tablicy+1;
end;
end;
return liczba_elementow_w_tablicy;
end;
p["LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy"]=function(tabela,przedrostek,wliczac,czy_formy_numerkowe)
local czy_tylko_niepuste_wliczac=p.CzyTak(wliczac);
local liczba_elementow_w_tablicy=0;
local techniczne_modul=require("Module:Techniczne");
local wzor="^"..techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](przedrostek).."(%d+)$";
for _1,_2 in pairs(tabela)do
local string_liczba=tonumber(_1) or nil;
local czy_liczba=((string_liczba)and(czy_formy_numerkowe or p.TypeNumber(_1))and(string_liczba>0));
local zmienna=czy_liczba and przedrostek.._1 or nil;
local element=(czy_liczba and tabela[zmienna] or nil)
or (czy_liczba
and tabela[_1]
or (mw.ustring.match(tostring(_1),wzor) and tabela[_1] or nil)
);
if(element)then
if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(element~="")))then
liczba_elementow_w_tablicy=liczba_elementow_w_tablicy+1;
end;
end;
end;
return liczba_elementow_w_tablicy;
end;
function p.MaksymalnaLiczbaParametruNienazwanegoSzablonu(frame)
return p.MaksymalnaLiczbaParametruNienazwanegoTablicy(frame:getParent().args,frame.args["niepuste"]);
end;
function p.MaksymalnaLiczbaParametruNienazwanegoTablicy(tabela, wliczac)
local czy_tylko_niepuste_wliczac=p.CzyTak(wliczac);
local liczba_elementow_ponumerowanych_w_tablicy=0;
for _1,_2 in pairs(tabela)do
if(type(_1)=="number")then
if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(p.CzyTak(_2))))then
liczba_elementow_ponumerowanych_w_tablicy=math.max(liczba_elementow_ponumerowanych_w_tablicy,_1);
end;
end;
end;
return (liczba_elementow_ponumerowanych_w_tablicy)and liczba_elementow_ponumerowanych_w_tablicy or 0;
end;
function p.MinimalnaLiczbaParametruNienazwanegoSzablonu(frame)
return p.MinimalnaLiczbaParametruNienazwanegoTablicy(frame:getParent().args,frame.args["niepuste"]);
end;
function p.MinimalnaLiczbaParametruNienazwanegoTablicy(tabela,wliczac)
local czy_tylko_niepuste_wliczac=p.CzyTak(wliczac);
local liczba_elementow_ponumerowanych_w_tablicy;
for _1,_2 in pairs(tabela)do
if(type(_1)=="number")then
if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(p.CzyTak(_2))))then
if(not liczba_elementow_ponumerowanych_w_tablicy)then
liczba_elementow_ponumerowanych_w_tablicy=_1;
else
liczba_elementow_ponumerowanych_w_tablicy=math.min(liczba_elementow_ponumerowanych_w_tablicy,_1);
end;
end;
end;
end;
return (liczba_elementow_ponumerowanych_w_tablicy)and liczba_elementow_ponumerowanych_w_tablicy or 1;
end;
function p.MinimalnyIMaksymalnyNumerParametru(tabela,nazwa_parametru_okreslona, czy_od_zera)
local liczba_maksimum=0;
local liczba_minimum;
for nazwa_parametru,wartosc_parametru in pairs(tabela)do
local liczba_z_parametru=mw.ustring.match(nazwa_parametru,"^"..nazwa_parametru_okreslona.."%s(%d+)$")
if(liczba_z_parametru)then
local liczba=tonumber(liczba_z_parametru) or (czy_od_zera and 0 or 1);
liczba=(liczba>0)and liczba or (czy_od_zera and 0 or 1);
liczba_maksimum=math.max(liczba_maksimum,liczba);
if(not liczba_minimum)then
liczba_minimum=liczba;
else
liczba_minimum=math.min(liczba_minimum,liczba);
end;
elseif(nazwa_parametru_okreslona==nazwa_parametru)then
liczba_maksimum=math.max(liczba_maksimum,(czy_od_zera and 0 or 1));
if(not liczba_minimum)then
liczba_minimum=czy_od_zera and 0 or 1;
else
liczba_minimum=math.min(liczba_minimum,czy_od_zera and 0 or 1);
end;
end;
end;
if(not liczba_minimum)then liczba_minimum=1;end;
return liczba_minimum,liczba_maksimum;
end;
p["CzySąParametryNumerowaneSzablonu"] = function(frame)
local czy_sa_elementy_tablicy=require("Module:Parametry")["CzySąElementyNumerowaneTablicy"](frame:getParent().args,frame.args["niepuste"]);
if(czy_sa_elementy_tablicy)then return "tak";end;
return;
end;
p["CzySąElementyNumerowaneTablicy"]=function(tabela,wliczac)
local czy_tylko_niepuste_wliczac=p.CzyTak(wliczac);
for _1,_2 in ipairs(tabela)do
if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(p.CzyTak(_2))))then
return true;
end;
end;
return false;
end;
p["CzySąParametryNienazwaneSzablonu"] = function(frame)
local czy_sa_elementy_tablicy=require("Module:Parametry")["CzySąElementyNienazwaneTablicy"](frame:getParent().args,frame.args["niepuste"]);
if(czy_sa_elementy_tablicy)then return "tak";end;
return;
end;
p["CzySąElementyNienazwaneTablicy"]=function(tabela,wliczac)
local czy_tylko_niepuste_wliczac=p.CzyTak(wliczac);
for _1,_2 in pairs(tabela)do
if(type(_1)=="number")then
if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(p.CzyTak(_2))))then
return true;
end;
end;
end;
return false;
end;
p["CzySąParametryNazwaneSzablonu"] = function(frame)
local czy_sa_elementy_tablicy=require("Module:Parametry")["CzySąElementyNazwaneTablicy"](frame:getParent().args,frame.args["niepuste"]);
if(czy_sa_elementy_tablicy)then return "tak";end;
return;
end;
p["CzySąElementyNazwaneTablicy"]=function(tabela,wliczac)
local czy_tylko_niepuste_wliczac=p.CzyTak(wliczac);
for _1,_2 in pairs(tabela)do
if(type(_1)~="number")then
if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(p.CzyTak(_2))))then
return true;
end;
end;
end;
return false;
end;
p["CzySąParametrySzablonu"] = function(frame)
local czy_sa_elementy_tablicy=require("Module:Parametry")["CzySąElementyTablicy"](frame:getParent().args,frame.args["niepuste"]);
if(czy_sa_elementy_tablicy)then return "tak";end;
return;
end;
p["CzySąElementyTablicy"]=function(tabela,wliczac)
local czy_tylko_niepuste_wliczac=p.CzyTak(wliczac);
for _1,_2 in pairs(tabela)do
if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(p.CzyTak(_2))))then
return true;
end;
end;
return false;
end;
p["CzyCoNajwyżejJedenNumerowanyParametrSzablonu"] = function (frame)
local parametry_modul=require("Module:Parametry");
local czy_jest_taki_element=parametry_modul["CzyCoNajwyżejJedenNumerowanyElementTablicy"](frame:getParent().args,frame.args["niepuste"]);
if(czy_jest_taki_element)then return "tak";end;
end;
p["CzyCoNajwyżejJedenNumerowanyElementTablicy"] = function (args,wliczac)
local czy_tylko_niepuste_wliczac=p.CzyTak(wliczac);
local i=1;
local czy=false;
for _1,_2 in pairs(args)do
if(type(_1)=="number")then
if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(p.CzyTak(_2))))then
if(_1==1)then czy=true;end;
if(i>1)then
return false;
else
i=i+1;
end;
end;
end;
end;
if((czy)or(i==1))then return true;end;
return false;
end;
p["KopiujTabelęŁańcuchów"]=function(args)
local args2={};
local wzor_temp=args["wzór"];local wzor_wszystko=args["wzór wszystko"];
local podstawienie_temp=args.podstawienie;local podstawienie_wszystko=args["podstawienie wszystko"];
local wzor2_temp=args["wzór 2"];local wzor_wszystko_2=args["wzór wszystko 2"];
local przedrostek_temp=args.przedrostek;local przedrostek_wszystko=args["przedrostek wszystko"];
local przyrostek_temp=args.przyrostek;local przyrostek_wszystko=args["przyrostek wszystko"];
for name,value in pairs(args.tabela)do
local wzor=wzor_temp and wzor_temp[name] or wzor_wszystko;
local podstawienie=wzor and (podstawienie_temp and podstawienie_temp[name] or podstawienie_wszystko) or nil;
if(wzor and podstawienie)then value=mw.ustring.gsub(value,wzor,podstawienie);end;
local wzor2=wzor2_temp and wzor2_temp[name] or wzor_wszystko_2;
if(wzor2)then value=mw.ustring.match(value,wzor2);end;
if(value)then
local przedrostek=przedrostek_temp and przedrostek_temp[name] or przedrostek_wszystko;
local przyrostek=przyrostek_temp and przyrostek_temp[name] or przyrostek_wszystko;
args2[name]=(przedrostek or '')..value..(przyrostek or '');
end;
end;
return args2;
end;
p["KopiujTabelęElementów"]=function(tabelka,wliczac_1,wliczac_2)
local czy_tylko_niepuste_wliczac_1=p.CzyTak(wliczac_1);
local czy_tylko_niepuste_wliczac_2=p.CzyTak(wliczac_2);
local tabelka2={};
for name,value in pairs(tabelka)do
if(((not czy_tylko_niepuste_wliczac_1)or((czy_tylko_niepuste_wliczac_1)and(p.CzyTak(name))))and((not czy_tylko_niepuste_wliczac_2)or((czy_tylko_niepuste_wliczac_2)and(p.CzyTak(value)))))then
tabelka2[name]=value;
end;
end;
return tabelka2;
end;
p["KopiujTabelęElementówBezTablicyKluczy"]=function(tabelka,tabelka2,wliczac_1,wliczac_2)
local czy_tylko_niepuste_wliczac_1=p.CzyTak(wliczac_1);
local czy_tylko_niepuste_wliczac_2=p.CzyTak(wliczac_2);
local tabelka3={};
for name,value in pairs(tabelka)do
if(((not czy_tylko_niepuste_wliczac_1)or((czy_tylko_niepuste_wliczac_1)and(p.CzyTak(name))))and((not czy_tylko_niepuste_wliczac_2)or((czy_tylko_niepuste_wliczac_2)and(p.CzyTak(value)))))then
local czy=p.CzyJestTakiKluczTabeli(tabelka2,name);
if(not czy)then
tabelka3[name]=value;
end;
end;
end;
return tabelka3;
end;
p["KopiujRekurencyjnieTabelęElementów"]=function(tabelka,wliczac_1,wliczac_2)
local czy_tylko_niepuste_wliczac_1=p.CzyTak(wliczac_1);
local czy_tylko_niepuste_wliczac_2=p.CzyTak(wliczac_2);
local szablonowe_potrzebne_modul=require("Module:Szablonowe/Potrzebne");
local szablonowe_modul=require("Module:Szablonowe");
local kopiuj_metatable=function(value,funkcja,funkcja2)
local __metatabelka=getmetatable(value);
if(__metatabelka)then
if(__metatabelka.KopiujMetaTabela)then
__metatabelka.KopiujMetaTabela(value,funkcja,funkcja2)
else
funkcja(value,true);
end;
else
funkcja(value,true);
end;
end;
local function kopiuj(tabelka,tabelka_nowa)
local tabelka2=tabelka_nowa or {};
for name,value in pairs(tabelka)do
if(((not czy_tylko_niepuste_wliczac_1)or((czy_tylko_niepuste_wliczac_1)and(p.CzyTak(name))))and((not czy_tylko_niepuste_wliczac_2)or((czy_tylko_niepuste_wliczac_2)and(p.CzyTak(value)))))then
if(type(value)=="table")then
kopiuj_metatable(value,function(value,jak)
if(jak)then
tabelka2[name]=kopiuj(value);
else
tabelka2[name]=value;
end;
end,kopiuj);
else
tabelka2[name]=value;
end;
end;
end;
return tabelka2;
end;
local tabela_kopiuj={};
kopiuj_metatable(tabelka,function(value,jak)
if(jak)then
tabela_kopiuj=kopiuj(value);
else
tabela_kopiuj=value;
end;
end,kopiuj);
return tabela_kopiuj;
end;
p["NazwanyLiczbą"] = function(frame)
local pf=frame:getParent()
local numer_parametru=frame.args[1]
if(numer_parametru)then
numer_parametru=tonumber(numer_parametru);
if(numer_parametru and pf.args[numer_parametru])then
return "tak"
end
end;
return;
end
p["NazwanyCiągiem"] = function (frame)
local pf=frame:getParent()
local klucz_parametru=frame.args[1]
if(klucz_parametru)then
local klucz_parametru_do_liczby=tonumber(klucz_parametru);
if((not klucz_parametru_do_liczby)and(pf.args[klucz_parametru]))then
return "tak"
end
end;
return;
end;
function p.Nazwane(frame)
local pf = frame:getParent()
for _, nazwa_parametru in ipairs(frame.args)do
local wartosc_parametru_nazwanego=pf.args[mw.text.trim(nazwa_parametru)]
if(wartosc_parametru_nazwanego)then return "tak" end
end
return;
end
function p.Nienazwane(frame)
local pf = frame:getParent()
for _, wartosc_parametru in ipairs(frame.args)do
wartosc_parametru=mw.text.trim(wartosc_parametru)
for name, wartosc_parametru2 in pairs(pf.args) do
if(type(name)=="number")then
if(mw.text.trim(wartosc_parametru2)==wartosc_parametru)then
return "tak"
end
end;
end
end
return;
end
function p.Numerowane(frame)
local pf = frame:getParent()
for _, wartosc_parametru in ipairs(frame.args)do
wartosc_parametru=mw.text.trim(wartosc_parametru)
for _, wartosc_parametru2 in ipairs(pf.args) do
if(mw.text.trim(wartosc_parametru2)==wartosc_parametru)then
return "tak"
end
end
end
return;
end
p["Odstępy"] = function(frame)
local PobierzParametr=p.PobierzParametr(frame);
local nazwa=PobierzParametr(1) or PobierzParametr("nazwa");
local czy=PobierzParametr(2) or PobierzParametr("wewnątrz");
local dolny_myslnik=PobierzParametr(3) or PobierzParametr("dolny-myślnik");
local odstep_spacje=PobierzParametr(4) or PobierzParametr("spacje");
if(not p.CzyTak(nazwa))then return nazwa;end;
local m_=(p.CzyTak(odstep_spacje) and "" or "_");
nazwa=mw.ustring.gsub(nazwa,"^[%s"..m_.."]+","");
nazwa=mw.ustring.gsub(nazwa,"[%s"..m_.."]+$","")
if(p.CzyTak(czy))then
nazwa=mw.ustring.gsub(nazwa,"[%s"..m_.."]+",(p.CzyTak(dolny_myslnik) and "_" or " "));
end;
return nazwa;
end;
function p.DodajElementDoZbioru(tabela,wartosc)
if(wartosc==nil)then return; end;
if(type(tabela)~="table")then return;end;
for _,element_tabeli in pairs(tabela)do
if(element_tabeli==wartosc)then
return false;
end;
end;
table.insert(tabela,wartosc);
return true;
end;
function p.CzyJestTakiElementNumerowanyTabeli(tabela,wartosc)
if(wartosc==nil)then return;end;
if(type(tabela)~="table")then return;end;
for _, element_tabeli in ipairs(tabela)do
if(element_tabeli==wartosc)then
return true;
end;
end;
return false;
end;
function p.CzyJestTakiElementNienazwanyTabeli(tabela,wartosc)
if(wartosc==nil)then return;end;
if(type(tabela)~="table")then return;end;
for name,value in pairs(tabela)do
if(type(name)=="number")then
if(value==wartosc)then
return true;
end;
end;
end;
return false;
end;
function p.CzyJestTakiKluczTabeli(tabela,klucz)
if(klucz==nil)then return;end;
if(type(tabela)~="table")then return;end;
local wartosc=tabela[klucz];
if(wartosc~=nil)then return true;end;
return false;
end;
function p.CzyJestTakiElementTabeli(tabela,klucz,wartosc)
if((klucz==nil)or(wartosc==nil))then return;end;
if(type(tabela)~="table")then return;end;
for __klucz, __wartosc in pairs(tabela)do
if((__klucz==klucz)and(__wartosc==wartosc))then
return true;
end;
end;
return false;
end;
p["ŁączDwieTabele"] = function (tabelka1,tabelka2)
local parametry_modul=require("Module:Parametry");
return (tabelka2 and parametry_modul["CzySąElementyTablicy"](tabelka2))
and ((tabelka1 and parametry_modul["CzySąElementyTablicy"](tabelka1))
and parametry_modul["ŁączNumerowaneTabele"]{[1]=tabelka1,[2]=tabelka2,}
or tabelka2)
or tabelka1;
end;
p["ŁączZbioryElementówNumerowanychDwóchTabel"]=function(tabelka1,tabelka2)
local parametry_modul=require("Module:Parametry");
return (tabelka1 and parametry_modul["CzySąElementyNumerowaneTablicy"](tabelka1))and ((tabelka2 and parametry_modul["CzySąElementyNumerowaneTablicy"](tabelka2))and parametry_modul["ŁączZbioryNumerowanychElementówNumerowanychTabel"]{[1]=tabelka1,[2]=tabelka2} or tabelka1) or tabelka2;
end;
p["ŁączZbioryElementówNienazwanychDwóchTabel"]=function(tabelka1,tabelka2)
local parametry_modul=require("Module:Parametry");
return (tabelka1 and parametry_modul["CzySąElementyNienazwaneTablicy"](tabelka1))and ((tabelka2 and parametry_modul["CzySąElementyNienazwaneTablicy"](tabelka2))and parametry_modul["ŁączZbioryNienazwanychElementówNumerowanychTabel"]{[1]=tabelka1,[2]=tabelka2} or tabelka1) or tabelka2;
end;
p["ŁączZbioryElementówNazwanychDwóchTabel"]=function(tabelka1,tabelka2)
local parametry_modul=require("Module:Parametry");
return (tabelka1 and parametry_modul["CzySąElementyNazwaneTablicy"](tabelka1))and ((tabelka2 and parametry_modul["CzySąElementyNazwaneTablicy"](tabelka2))and parametry_modul["ŁączZbioryNazwanychElementówNumerowanychTabel"]{[1]=tabelka1,[2]=tabelka2} or tabelka1) or tabelka2;
end;
p["ŁączZbioryNumerowanychElementówNienazwanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=false,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,};
return parametry_modul["ŁączTabele"](args,args2);
end;
p["ŁączZbioryNienazwanychElementówNienazwanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,};
return parametry_modul["ŁączTabele"](args,args2);
end;
p["ŁączZbioryNazwanychElementówNienazwanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=true,};
return parametry_modul["ŁączTabele"](args,args2);
end;
p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=false,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,};
return parametry_modul["ŁączTabele"](args,args2);
end;
p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,};
return parametry_modul["ŁączTabele"](args,args2);
end;
p["ŁączZbioryNazwanychElementówNumerowanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=true,};
return parametry_modul["ŁączTabele"](args,args2);
end;
p["ŁączNumerowaneTabele"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=false,NazwijElementyNumerowane=true,};
return parametry_modul["ŁączTabele"](args,args2);
end;
p["ŁączNienazwaneTabele"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=false,NazwijElementyNumerowane=true,};
return parametry_modul["ŁączTabele"](args,args2);
end;
p["ŁączTabele"] = function(args,args2)
local tabela={};
local par1=(args2.CzyPairsTablic)and pairs or ipairs;
local czy_number_nie_tylko_tablic=(not args2.CzyPairsTablic)and true or false;
local par2=(args2["CzyPairsElementówTablic"])and pairs or ipairs;
local czy_number_nie_tylko_elementow_tablic=(not args2["CzyPairsElementówTablic"])and true or false;
local czy_nazwane=(args2.CzyNazwaneElementyTabel)and true or false;
local czy_nie_tylko_nazwane=(not args2.CzyTylkoNazwaneElementyTabel)and true or false;
local nazwij_elementy_numerowane=(args2.NazwijElementyNumerowane) and true or false;
for licznik, args_tabeli in par1(args)do
if(((czy_number_nie_tylko_tablic)or(type(licznik)=="number"))and(type(args_tabeli)=="table"))then
for name,value in par2(args_tabeli)do
if((czy_nie_tylko_nazwane)and((czy_number_nie_tylko_elementow_tablic)or(type(name)=="number")))then
if(nazwij_elementy_numerowane)then
if(not tabela[name])then tabela[name]=value;end;
else
table.insert(tabela,value);
end;
elseif((czy_nazwane)and(czy_nie_tylko_nazwane or ((not czy_nie_tylko_nazwane)and(type(name)~="number"))))then
if(not tabela[name])then tabela[name]=value;end;
end;
end;
end;
end;
return tabela;
end;
p["UsuńElementyTabeli"]=function(tabelka_1,tabelka_2)
if(not tabelka_1)then return nil;end;
if(not tabelka_2)then return tabelka_1;end;
for name,_ in pairs(tabelka_1)do
if(tabelka_2[name]~=nil)then
tabelka_1[name]=nil;
end;
end;
return tabelka_1;
end;
p["TwórzTabelęBezPowtarzającychKluczyTabel"]=function(args)
local tabela_poczatkowa=args[1];
local tabela={};
local lens=#args;
for name,value in pairs(tabela_poczatkowa)do
local yes=false;
for i=2,lens,1 do
if(args[i][name]~=nil)then
yes=true;
break;
end;
end;
if(not yes)then
tabela[name]=value;
end;
end;
return tabela;
end;
function p.TypeTable(zmienna)
return (type(zmienna)=="table");
end;
function p.TypeFunction(zmienna)
return (type(zmienna)=="function");
end;
function p.TypeString(zmienna)
return (type(zmienna)=="string");
end;
function p.TypeBoolean(zmienna)
return (type(zmienna)=="boolean");
end;
function p.TypeNumber(zmienna)
return (type(zmienna)=="number");
end;
function p.TypeNil(zmienna)
return (zmienna==nil);
end;
local function CzyTakSilnik(args,funkcja)
local parametry_modul=require("Module:Parametry");
local parametr=p.CzyTak(args[2]) and require("Module:"..args[2])[args[1]] or args[1];
local argsfun;
if(p.CzyTak(args[2]))then
for name,value in pairs(args)do
local typen=(type(name)=="number");
if(((typen)and((name~=1)and(name~=2)))or(not typen))then
if(not argsfun)then argsfun={};end;
argsfun[(typen and name>2) and (name-2) or name]=value;
end;
end;
else
parametr=tonumber(parametr) or parametr;
if(type(parametr)=="string")then
local parametr2=parametry_modul["Odstępy"](parametr);
if(parametr2=="true")then
parametr=true;
elseif(parametr2=="false")then
parametr=false;
elseif(parametr2=="nil")then
parametr=nil;
else
parametr=tonumber(parametr2) or parametr;
end;
end;
end;
return (parametry_modul[funkcja]{[1]=parametr,[2]=argsfun,})and "tak" or nil;
end;
p["CzyTakCiąg"]=function(...)
local frame_parametry={...};
local frame=(#frame_parametry>1)and frame_parametry or frame_parametry[1];
local czy_table=p.TypeTable(frame);
if((czy_table and (not frame.getParent)) or (not czy_table))then
local PobierzParametr=p.PobierzParametr(frame);
local ciag=PobierzParametr("ciąg") or PobierzParametr(1);
local parametry=PobierzParametr("parametry") or PobierzParametr(2);
local parametry_modul=require("Module:Parametry");
return ciag and p.CzyTak{[1]=(p.TypeString(ciag) and parametry_modul["Odstępy"]{[1]=ciag,[2]="tak",} or ciag),[2]=parametry,} or false;
else
local args=p.PobierzArgsParametry(frame);
return CzyTakSilnik(args,"CzyTakCiąg");
end;
end;
function p.CzyTak(...)
local frame_parametry={...};
local frame=(#frame_parametry>1)and frame_parametry or frame_parametry[1];
local czy_table=p.TypeTable(frame);
if((czy_table and (not frame.getParent)) or (not czy_table))then
local PobierzParametr=p.PobierzParametr(frame);
local zmienna;local parametry;
if(czy_table)then
local zmienna_temp=PobierzParametr("zmienna") or PobierzParametr(1);
zmienna=zmienna_temp or frame;
parametry=zmienna_temp and (PobierzParametr("parametry") or PobierzParametr(2)) or nil;
else
zmienna=frame;
parametry=nil;
end;
if(zmienna~=nil)then
if(p.TypeString(zmienna))then
if(zmienna~="")then
return "tak";
else
return nil;
end;
elseif(p.TypeNumber(zmienna))then
if(zmienna~=0)then
return "tak";
else
return nil;
end;
elseif(p.TypeBoolean(zmienna))then
return (zmienna and "tak" or nil);
elseif(p.TypeTable(zmienna))then
local parametry_modul=require("Module:Parametry");
return (parametry_modul["CzySąElementyTablicy"](zmienna) and "tak" or nil);
elseif(p.TypeFunction(zmienna))then
return (zmienna(parametry) and "tak" or nil);
else
return nil;
end;
else
return nil;
end;
else
local args=p.PobierzArgsParametry(frame);
return CzyTakSilnik(args,"CzyTak");
end;
end;
function p.PobierzFrameEwentualnieParent(frame)
return (frame.getParent and (p.CzyTak(frame.args["wyspecjalizowana"]) and frame or frame:getParent()) or frame);
end;
function p.PobierzArgsParametry(frame, czy_nie_tablica_jako_tablica)
local TempFunc=function(frame)
local pf=p.PobierzFrameEwentualnieParent(frame);
local args=pf.args;
if(p.TypeTable(args))then
return args;
else
return nil;
end;
end;
if(not p.TypeNil(frame))then
return p.TypeTable(frame) and (TempFunc(frame) or frame) or ((czy_nie_tablica_jako_tablica)and {frame,} or frame);
else
return {};
end;
end;
function p.PobierzParametryRamki(frame)
local TempFun1=function(tablica)
return function(nazwa)
return tablica[nazwa];
end;
end;
local TempFun2=function(wartosc)
local tak=true;
return function(nazwa)
if(tak)then
tak=false;
return wartosc;
end;
return nil;
end;
end;
local tablica_parametrow_ramki=p.TypeTable(frame) and (p.TypeTable(frame.args) and TempFun1(frame.args) or TempFun1(frame)) or TempFun2(frame);
return function(nazwa)
return tablica_parametrow_ramki(nazwa);
end;
end;
function p.PobierzElementNumerowanyZFrameLubTablicy(frame)
local tablica_parametrow_funkcji=p.TypeTable(frame[1]) and p.TypeTable(frame[1].args)and frame[1].args or frame;
return function(nazwa)
local wartosc=tablica_parametrow_funkcji[nazwa];
return wartosc;
end;
end;
function p.PobierzParametr(frame,czy_frame_lub_parent,czy_frame)
local __pobierz_parametr_table_args=nil;
if(not p.TypeNil(frame))then
if(p.TypeTable(frame))then
local tak_frame_lub_parent=p.CzyTak(czy_frame_lub_parent);
if((not tak_frame_lub_parent)or(not frame.getParent))then
local __pobierz_parametr_table_args_temp=p.CzyTak(czy_frame) and frame.args or p.PobierzArgsParametry(frame);
__pobierz_parametr_table_args=function(nazwa)
return __pobierz_parametr_table_args_temp[nazwa or 1],1;
end;
elseif(tak_frame_lub_parent)then
local pf=(frame.getParent)and frame:getParent() or nil;
__pobierz_parametr_table_args=function(nazwa)
local wartosc=frame.args[nazwa or 1] or (pf and pf.args[nazwa or 1] or nil);
return wartosc,2;
end;
end;
else
local tak=true;
__pobierz_parametr_table_args=function(nazwa)
if(tak)then
tak=false;
return frame,0;
end;
return nil,0;
end;
end;
else
__pobierz_parametr_table_args=function(nazwa)
return nil,0;
end;
end;
return function(nazwa)
return __pobierz_parametr_table_args(nazwa);
end;
end;
function p.And(frame)
local czy="tak";
local parametry_modul=require("Module:Parametry");
local wartosc_uzyskana=nil;
for _,wartosc in ipairs(frame.args)do
czy=czy and parametry_modul["CzyTakCiąg"](wartosc);
if(not czy)then return nil;end;
wartosc_uzyskana=wartosc;
end;
return czy and wartosc_uzyskana or nil;
end;
function p.Or(frame)
local czy=nil;
for _,wartosc in ipairs(frame.args)do
czy=czy or p["CzyTakCiąg"](wartosc);
if(czy)then return wartosc;end;
end;
return nil;
end;
function p.Not(frame)
local parametry_modul=require("Module:Parametry");
return (not parametry_modul["CzyTakCiąg"](frame.args[1]))and "tak" or nil;
end;
function p.Mniejszy(frame)
local wyraz1=tonumber(frame.args[1]) or 0;
local wyraz2=tonumber(frame.args[2]) or 0;
if(wyraz1<wyraz2)then
return "tak";
end;
return;
end;
function p.IlePodano(frame)
local args=frame.args;
local args2=frame:getParent().args;
local licznik=0;
for _,name in pairs(args)do
if(args2[name])then
licznik=licznik+1;
end;
end;
return licznik;
end;
p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter={};
function p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter.__index(t,klucz)
local html_modul=require("Module:Html");
klucz=html_modul.DecodeKoduHTMLZnaku(klucz);
klucz=p["Odstępy"]{[1]=klucz,[2]="tak",};
klucz=mw.ustring.lower(klucz);
return rawget(t,klucz);
end;
function p.IteratorPoNumerowanychElementachTablicy(t)
local i=1;
return function()
local v=t[i];
if(v~=nil)then i=i+1;end;
return v;
end;
end;
p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu=function(tabela,funkcja)
local keys={};
for name,_ in next,tabela do
table.insert(keys,name);
end;
table.sort(keys,funkcja);
return function(tablica,klucz)
if(klucz==nil)then return keys[1];end;
for k,_ in ipairs(keys)do
if(keys[k]==klucz)then
return keys[k+1];
end;
end;
end;
end;
function p.Max(...)
local frame={...};
local PobierzElement=p.PobierzElementNumerowanyZFrameLubTablicy(frame);
local parametr1=tonumber(PobierzElement(1));
local parametr2=tonumber(PobierzElement(2));
return math.max(parametr1,parametr2);
end;
function p.Min(...)
local frame={...};
local PobierzElement=p.PobierzElementNumerowanyZFrameLubTablicy(frame);
local parametr1=tonumber(PobierzElement(1));
local parametr2=tonumber(PobierzElement(2));
return math.min(parametr1,parametr2);
end;
return p;
26okzzxk6m0mc0lpl4o74x1qe7w01bl
553306
553302
2026-08-27T08:11:36Z
Persino
2851
553306
Scribunto
text/plain
local p={};
p["LiczbaElementówNumerowanychTablicy"]=function(tabela, wliczac,mnoga)
local liczba_elementow_ponumerowanych_w_tablicy=0;
local czy_tylko_niepuste_wliczac=p.CzyTak(wliczac);
local czy_mnoga=p.CzyTak(mnoga);
for _1,_2 in ipairs(tabela)do
if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(p.CzyTak(_2))))then
liczba_elementow_ponumerowanych_w_tablicy=liczba_elementow_ponumerowanych_w_tablicy+1;
if((czy_mnoga)and(liczba_elementow_ponumerowanych_w_tablicy>1))then return liczba_elementow_ponumerowanych_w_tablicy;end;
end;
end;
return liczba_elementow_ponumerowanych_w_tablicy;
end;
p["LiczbaElementówNumerowanychSzablonu"]=function(frame)
local parametry_modul=require("Module:Parametry");
return parametry_modul["LiczbaElementówNumerowanychTablicy"](frame:getParent().args,frame.args["niepuste"],frame.args["mnoga"]);
end;
p["LiczbaElementówNienazwanychTablicy"] = function(tabela,wliczac,mnoga)
local czy_tylko_niepuste_wliczac=p.CzyTak(wliczac);
local czy_mnoga=p.CzyTak(mnoga);
local liczba_elementow_nienazwanych_w_tablicy=0;
for _1,_2 in pairs(tabela)do
if(type(_1)=="number")then
if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(p.CzyTak(_2))))then
liczba_elementow_nienazwanych_w_tablicy=liczba_elementow_nienazwanych_w_tablicy+1;
if((czy_mnoga)and(liczba_elementow_nienazwanych_w_tablicy>1))then return liczba_elementow_nienazwanych_w_tablicy;end;
end;
end;
end;
return liczba_elementow_nienazwanych_w_tablicy;
end;
p["LiczbaParametrówNienazwanychSzablonu"] = function (frame)
return p["LiczbaElementówNienazwanychTablicy"](frame:getParent().args,frame.args["niepuste"],frame.args["mnoga"])
end;
p["LiczbaElementówTablicy"]=function(tabela,wliczac)
local czy_tylko_niepuste_wliczac=p.CzyTak(wliczac);
local liczba_elementow_w_tablicy=0;
for _1,_2 in pairs(tabela)do
if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(p.CzyTak(_2))))then
liczba_elementow_w_tablicy=liczba_elementow_w_tablicy+1;
end;
end;
return liczba_elementow_w_tablicy;
end;
p["LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy"]=function(tabela,przedrostek,wliczac,czy_formy_numerkowe)
local czy_tylko_niepuste_wliczac=p.CzyTak(wliczac);
local liczba_elementow_w_tablicy=0;
local techniczne_modul=require("Module:Techniczne");
local wzor="^"..techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](przedrostek).."(%d+)$";
for _1,_2 in pairs(tabela)do
local string_liczba=tonumber(_1) or nil;
local czy_liczba=((string_liczba)and(czy_formy_numerkowe or p.TypeNumber(_1))and(string_liczba>0));
local zmienna=czy_liczba and przedrostek.._1 or nil;
local element=(czy_liczba and tabela[zmienna] or nil)
or (czy_liczba
and tabela[_1]
or (mw.ustring.match(tostring(_1),wzor) and tabela[_1] or nil)
);
if(element)then
if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(element~="")))then
liczba_elementow_w_tablicy=liczba_elementow_w_tablicy+1;
end;
end;
end;
return liczba_elementow_w_tablicy;
end;
function p.MaksymalnaLiczbaParametruNienazwanegoSzablonu(frame)
return p.MaksymalnaLiczbaParametruNienazwanegoTablicy(frame:getParent().args,frame.args["niepuste"]);
end;
function p.MaksymalnaLiczbaParametruNienazwanegoTablicy(tabela, wliczac)
local czy_tylko_niepuste_wliczac=p.CzyTak(wliczac);
local liczba_elementow_ponumerowanych_w_tablicy=0;
for _1,_2 in pairs(tabela)do
if(type(_1)=="number")then
if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(p.CzyTak(_2))))then
liczba_elementow_ponumerowanych_w_tablicy=math.max(liczba_elementow_ponumerowanych_w_tablicy,_1);
end;
end;
end;
return (liczba_elementow_ponumerowanych_w_tablicy)and liczba_elementow_ponumerowanych_w_tablicy or 0;
end;
function p.MinimalnaLiczbaParametruNienazwanegoSzablonu(frame)
return p.MinimalnaLiczbaParametruNienazwanegoTablicy(frame:getParent().args,frame.args["niepuste"]);
end;
function p.MinimalnaLiczbaParametruNienazwanegoTablicy(tabela,wliczac)
local czy_tylko_niepuste_wliczac=p.CzyTak(wliczac);
local liczba_elementow_ponumerowanych_w_tablicy;
for _1,_2 in pairs(tabela)do
if(type(_1)=="number")then
if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(p.CzyTak(_2))))then
if(not liczba_elementow_ponumerowanych_w_tablicy)then
liczba_elementow_ponumerowanych_w_tablicy=_1;
else
liczba_elementow_ponumerowanych_w_tablicy=math.min(liczba_elementow_ponumerowanych_w_tablicy,_1);
end;
end;
end;
end;
return (liczba_elementow_ponumerowanych_w_tablicy)and liczba_elementow_ponumerowanych_w_tablicy or 1;
end;
function p.MinimalnyIMaksymalnyNumerParametruPodstawyTabeli(tabela,nazwa_parametru_okreslona, czy_od_zera)
local liczba_maksimum=0;
local liczba_minimum;
for nazwa_parametru,wartosc_parametru in pairs(tabela)do
local liczba_z_parametru=mw.ustring.match(nazwa_parametru,"^"..nazwa_parametru_okreslona.."%s(%d+)$")
if(liczba_z_parametru)then
local liczba=tonumber(liczba_z_parametru) or (czy_od_zera and 0 or 1);
liczba=(liczba>0)and liczba or (czy_od_zera and 0 or 1);
liczba_maksimum=math.max(liczba_maksimum,liczba);
if(not liczba_minimum)then
liczba_minimum=liczba;
else
liczba_minimum=math.min(liczba_minimum,liczba);
end;
elseif(nazwa_parametru_okreslona==nazwa_parametru)then
liczba_maksimum=math.max(liczba_maksimum,(czy_od_zera and 0 or 1));
if(not liczba_minimum)then
liczba_minimum=czy_od_zera and 0 or 1;
else
liczba_minimum=math.min(liczba_minimum,czy_od_zera and 0 or 1);
end;
end;
end;
if(not liczba_minimum)then liczba_minimum=1;end;
return liczba_minimum,liczba_maksimum;
end;
p["CzySąParametryNumerowaneSzablonu"] = function(frame)
local czy_sa_elementy_tablicy=require("Module:Parametry")["CzySąElementyNumerowaneTablicy"](frame:getParent().args,frame.args["niepuste"]);
if(czy_sa_elementy_tablicy)then return "tak";end;
return;
end;
p["CzySąElementyNumerowaneTablicy"]=function(tabela,wliczac)
local czy_tylko_niepuste_wliczac=p.CzyTak(wliczac);
for _1,_2 in ipairs(tabela)do
if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(p.CzyTak(_2))))then
return true;
end;
end;
return false;
end;
p["CzySąParametryNienazwaneSzablonu"] = function(frame)
local czy_sa_elementy_tablicy=require("Module:Parametry")["CzySąElementyNienazwaneTablicy"](frame:getParent().args,frame.args["niepuste"]);
if(czy_sa_elementy_tablicy)then return "tak";end;
return;
end;
p["CzySąElementyNienazwaneTablicy"]=function(tabela,wliczac)
local czy_tylko_niepuste_wliczac=p.CzyTak(wliczac);
for _1,_2 in pairs(tabela)do
if(type(_1)=="number")then
if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(p.CzyTak(_2))))then
return true;
end;
end;
end;
return false;
end;
p["CzySąParametryNazwaneSzablonu"] = function(frame)
local czy_sa_elementy_tablicy=require("Module:Parametry")["CzySąElementyNazwaneTablicy"](frame:getParent().args,frame.args["niepuste"]);
if(czy_sa_elementy_tablicy)then return "tak";end;
return;
end;
p["CzySąElementyNazwaneTablicy"]=function(tabela,wliczac)
local czy_tylko_niepuste_wliczac=p.CzyTak(wliczac);
for _1,_2 in pairs(tabela)do
if(type(_1)~="number")then
if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(p.CzyTak(_2))))then
return true;
end;
end;
end;
return false;
end;
p["CzySąParametrySzablonu"] = function(frame)
local czy_sa_elementy_tablicy=require("Module:Parametry")["CzySąElementyTablicy"](frame:getParent().args,frame.args["niepuste"]);
if(czy_sa_elementy_tablicy)then return "tak";end;
return;
end;
p["CzySąElementyTablicy"]=function(tabela,wliczac)
local czy_tylko_niepuste_wliczac=p.CzyTak(wliczac);
for _1,_2 in pairs(tabela)do
if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(p.CzyTak(_2))))then
return true;
end;
end;
return false;
end;
p["CzyCoNajwyżejJedenNumerowanyParametrSzablonu"] = function (frame)
local parametry_modul=require("Module:Parametry");
local czy_jest_taki_element=parametry_modul["CzyCoNajwyżejJedenNumerowanyElementTablicy"](frame:getParent().args,frame.args["niepuste"]);
if(czy_jest_taki_element)then return "tak";end;
end;
p["CzyCoNajwyżejJedenNumerowanyElementTablicy"] = function (args,wliczac)
local czy_tylko_niepuste_wliczac=p.CzyTak(wliczac);
local i=1;
local czy=false;
for _1,_2 in pairs(args)do
if(type(_1)=="number")then
if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(p.CzyTak(_2))))then
if(_1==1)then czy=true;end;
if(i>1)then
return false;
else
i=i+1;
end;
end;
end;
end;
if((czy)or(i==1))then return true;end;
return false;
end;
p["KopiujTabelęŁańcuchów"]=function(args)
local args2={};
local wzor_temp=args["wzór"];local wzor_wszystko=args["wzór wszystko"];
local podstawienie_temp=args.podstawienie;local podstawienie_wszystko=args["podstawienie wszystko"];
local wzor2_temp=args["wzór 2"];local wzor_wszystko_2=args["wzór wszystko 2"];
local przedrostek_temp=args.przedrostek;local przedrostek_wszystko=args["przedrostek wszystko"];
local przyrostek_temp=args.przyrostek;local przyrostek_wszystko=args["przyrostek wszystko"];
for name,value in pairs(args.tabela)do
local wzor=wzor_temp and wzor_temp[name] or wzor_wszystko;
local podstawienie=wzor and (podstawienie_temp and podstawienie_temp[name] or podstawienie_wszystko) or nil;
if(wzor and podstawienie)then value=mw.ustring.gsub(value,wzor,podstawienie);end;
local wzor2=wzor2_temp and wzor2_temp[name] or wzor_wszystko_2;
if(wzor2)then value=mw.ustring.match(value,wzor2);end;
if(value)then
local przedrostek=przedrostek_temp and przedrostek_temp[name] or przedrostek_wszystko;
local przyrostek=przyrostek_temp and przyrostek_temp[name] or przyrostek_wszystko;
args2[name]=(przedrostek or '')..value..(przyrostek or '');
end;
end;
return args2;
end;
p["KopiujTabelęElementów"]=function(tabelka,wliczac_1,wliczac_2)
local czy_tylko_niepuste_wliczac_1=p.CzyTak(wliczac_1);
local czy_tylko_niepuste_wliczac_2=p.CzyTak(wliczac_2);
local tabelka2={};
for name,value in pairs(tabelka)do
if(((not czy_tylko_niepuste_wliczac_1)or((czy_tylko_niepuste_wliczac_1)and(p.CzyTak(name))))and((not czy_tylko_niepuste_wliczac_2)or((czy_tylko_niepuste_wliczac_2)and(p.CzyTak(value)))))then
tabelka2[name]=value;
end;
end;
return tabelka2;
end;
p["KopiujTabelęElementówBezTablicyKluczy"]=function(tabelka,tabelka2,wliczac_1,wliczac_2)
local czy_tylko_niepuste_wliczac_1=p.CzyTak(wliczac_1);
local czy_tylko_niepuste_wliczac_2=p.CzyTak(wliczac_2);
local tabelka3={};
for name,value in pairs(tabelka)do
if(((not czy_tylko_niepuste_wliczac_1)or((czy_tylko_niepuste_wliczac_1)and(p.CzyTak(name))))and((not czy_tylko_niepuste_wliczac_2)or((czy_tylko_niepuste_wliczac_2)and(p.CzyTak(value)))))then
local czy=p.CzyJestTakiKluczTabeli(tabelka2,name);
if(not czy)then
tabelka3[name]=value;
end;
end;
end;
return tabelka3;
end;
p["KopiujRekurencyjnieTabelęElementów"]=function(tabelka,wliczac_1,wliczac_2)
local czy_tylko_niepuste_wliczac_1=p.CzyTak(wliczac_1);
local czy_tylko_niepuste_wliczac_2=p.CzyTak(wliczac_2);
local szablonowe_potrzebne_modul=require("Module:Szablonowe/Potrzebne");
local szablonowe_modul=require("Module:Szablonowe");
local kopiuj_metatable=function(value,funkcja,funkcja2)
local __metatabelka=getmetatable(value);
if(__metatabelka)then
if(__metatabelka.KopiujMetaTabela)then
__metatabelka.KopiujMetaTabela(value,funkcja,funkcja2)
else
funkcja(value,true);
end;
else
funkcja(value,true);
end;
end;
local function kopiuj(tabelka,tabelka_nowa)
local tabelka2=tabelka_nowa or {};
for name,value in pairs(tabelka)do
if(((not czy_tylko_niepuste_wliczac_1)or((czy_tylko_niepuste_wliczac_1)and(p.CzyTak(name))))and((not czy_tylko_niepuste_wliczac_2)or((czy_tylko_niepuste_wliczac_2)and(p.CzyTak(value)))))then
if(type(value)=="table")then
kopiuj_metatable(value,function(value,jak)
if(jak)then
tabelka2[name]=kopiuj(value);
else
tabelka2[name]=value;
end;
end,kopiuj);
else
tabelka2[name]=value;
end;
end;
end;
return tabelka2;
end;
local tabela_kopiuj={};
kopiuj_metatable(tabelka,function(value,jak)
if(jak)then
tabela_kopiuj=kopiuj(value);
else
tabela_kopiuj=value;
end;
end,kopiuj);
return tabela_kopiuj;
end;
p["NazwanyLiczbą"] = function(frame)
local pf=frame:getParent()
local numer_parametru=frame.args[1]
if(numer_parametru)then
numer_parametru=tonumber(numer_parametru);
if(numer_parametru and pf.args[numer_parametru])then
return "tak"
end
end;
return;
end
p["NazwanyCiągiem"] = function (frame)
local pf=frame:getParent()
local klucz_parametru=frame.args[1]
if(klucz_parametru)then
local klucz_parametru_do_liczby=tonumber(klucz_parametru);
if((not klucz_parametru_do_liczby)and(pf.args[klucz_parametru]))then
return "tak"
end
end;
return;
end;
function p.Nazwane(frame)
local pf = frame:getParent()
for _, nazwa_parametru in ipairs(frame.args)do
local wartosc_parametru_nazwanego=pf.args[mw.text.trim(nazwa_parametru)]
if(wartosc_parametru_nazwanego)then return "tak" end
end
return;
end
function p.Nienazwane(frame)
local pf = frame:getParent()
for _, wartosc_parametru in ipairs(frame.args)do
wartosc_parametru=mw.text.trim(wartosc_parametru)
for name, wartosc_parametru2 in pairs(pf.args) do
if(type(name)=="number")then
if(mw.text.trim(wartosc_parametru2)==wartosc_parametru)then
return "tak"
end
end;
end
end
return;
end
function p.Numerowane(frame)
local pf = frame:getParent()
for _, wartosc_parametru in ipairs(frame.args)do
wartosc_parametru=mw.text.trim(wartosc_parametru)
for _, wartosc_parametru2 in ipairs(pf.args) do
if(mw.text.trim(wartosc_parametru2)==wartosc_parametru)then
return "tak"
end
end
end
return;
end
p["Odstępy"] = function(frame)
local PobierzParametr=p.PobierzParametr(frame);
local nazwa=PobierzParametr(1) or PobierzParametr("nazwa");
local czy=PobierzParametr(2) or PobierzParametr("wewnątrz");
local dolny_myslnik=PobierzParametr(3) or PobierzParametr("dolny-myślnik");
local odstep_spacje=PobierzParametr(4) or PobierzParametr("spacje");
if(not p.CzyTak(nazwa))then return nazwa;end;
local m_=(p.CzyTak(odstep_spacje) and "" or "_");
nazwa=mw.ustring.gsub(nazwa,"^[%s"..m_.."]+","");
nazwa=mw.ustring.gsub(nazwa,"[%s"..m_.."]+$","")
if(p.CzyTak(czy))then
nazwa=mw.ustring.gsub(nazwa,"[%s"..m_.."]+",(p.CzyTak(dolny_myslnik) and "_" or " "));
end;
return nazwa;
end;
function p.DodajElementDoZbioru(tabela,wartosc)
if(wartosc==nil)then return; end;
if(type(tabela)~="table")then return;end;
for _,element_tabeli in pairs(tabela)do
if(element_tabeli==wartosc)then
return false;
end;
end;
table.insert(tabela,wartosc);
return true;
end;
function p.CzyJestTakiElementNumerowanyTabeli(tabela,wartosc)
if(wartosc==nil)then return;end;
if(type(tabela)~="table")then return;end;
for _, element_tabeli in ipairs(tabela)do
if(element_tabeli==wartosc)then
return true;
end;
end;
return false;
end;
function p.CzyJestTakiElementNienazwanyTabeli(tabela,wartosc)
if(wartosc==nil)then return;end;
if(type(tabela)~="table")then return;end;
for name,value in pairs(tabela)do
if(type(name)=="number")then
if(value==wartosc)then
return true;
end;
end;
end;
return false;
end;
function p.CzyJestTakiKluczTabeli(tabela,klucz)
if(klucz==nil)then return;end;
if(type(tabela)~="table")then return;end;
local wartosc=tabela[klucz];
if(wartosc~=nil)then return true;end;
return false;
end;
function p.CzyJestTakiElementTabeli(tabela,klucz,wartosc)
if((klucz==nil)or(wartosc==nil))then return;end;
if(type(tabela)~="table")then return;end;
for __klucz, __wartosc in pairs(tabela)do
if((__klucz==klucz)and(__wartosc==wartosc))then
return true;
end;
end;
return false;
end;
p["ŁączDwieTabele"] = function (tabelka1,tabelka2)
local parametry_modul=require("Module:Parametry");
return (tabelka2 and parametry_modul["CzySąElementyTablicy"](tabelka2))
and ((tabelka1 and parametry_modul["CzySąElementyTablicy"](tabelka1))
and parametry_modul["ŁączNumerowaneTabele"]{[1]=tabelka1,[2]=tabelka2,}
or tabelka2)
or tabelka1;
end;
p["ŁączZbioryElementówNumerowanychDwóchTabel"]=function(tabelka1,tabelka2)
local parametry_modul=require("Module:Parametry");
return (tabelka1 and parametry_modul["CzySąElementyNumerowaneTablicy"](tabelka1))and ((tabelka2 and parametry_modul["CzySąElementyNumerowaneTablicy"](tabelka2))and parametry_modul["ŁączZbioryNumerowanychElementówNumerowanychTabel"]{[1]=tabelka1,[2]=tabelka2} or tabelka1) or tabelka2;
end;
p["ŁączZbioryElementówNienazwanychDwóchTabel"]=function(tabelka1,tabelka2)
local parametry_modul=require("Module:Parametry");
return (tabelka1 and parametry_modul["CzySąElementyNienazwaneTablicy"](tabelka1))and ((tabelka2 and parametry_modul["CzySąElementyNienazwaneTablicy"](tabelka2))and parametry_modul["ŁączZbioryNienazwanychElementówNumerowanychTabel"]{[1]=tabelka1,[2]=tabelka2} or tabelka1) or tabelka2;
end;
p["ŁączZbioryElementówNazwanychDwóchTabel"]=function(tabelka1,tabelka2)
local parametry_modul=require("Module:Parametry");
return (tabelka1 and parametry_modul["CzySąElementyNazwaneTablicy"](tabelka1))and ((tabelka2 and parametry_modul["CzySąElementyNazwaneTablicy"](tabelka2))and parametry_modul["ŁączZbioryNazwanychElementówNumerowanychTabel"]{[1]=tabelka1,[2]=tabelka2} or tabelka1) or tabelka2;
end;
p["ŁączZbioryNumerowanychElementówNienazwanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=false,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,};
return parametry_modul["ŁączTabele"](args,args2);
end;
p["ŁączZbioryNienazwanychElementówNienazwanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,};
return parametry_modul["ŁączTabele"](args,args2);
end;
p["ŁączZbioryNazwanychElementówNienazwanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=true,};
return parametry_modul["ŁączTabele"](args,args2);
end;
p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=false,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,};
return parametry_modul["ŁączTabele"](args,args2);
end;
p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,};
return parametry_modul["ŁączTabele"](args,args2);
end;
p["ŁączZbioryNazwanychElementówNumerowanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=true,};
return parametry_modul["ŁączTabele"](args,args2);
end;
p["ŁączNumerowaneTabele"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=false,NazwijElementyNumerowane=true,};
return parametry_modul["ŁączTabele"](args,args2);
end;
p["ŁączNienazwaneTabele"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=false,NazwijElementyNumerowane=true,};
return parametry_modul["ŁączTabele"](args,args2);
end;
p["ŁączTabele"] = function(args,args2)
local tabela={};
local par1=(args2.CzyPairsTablic)and pairs or ipairs;
local czy_number_nie_tylko_tablic=(not args2.CzyPairsTablic)and true or false;
local par2=(args2["CzyPairsElementówTablic"])and pairs or ipairs;
local czy_number_nie_tylko_elementow_tablic=(not args2["CzyPairsElementówTablic"])and true or false;
local czy_nazwane=(args2.CzyNazwaneElementyTabel)and true or false;
local czy_nie_tylko_nazwane=(not args2.CzyTylkoNazwaneElementyTabel)and true or false;
local nazwij_elementy_numerowane=(args2.NazwijElementyNumerowane) and true or false;
for licznik, args_tabeli in par1(args)do
if(((czy_number_nie_tylko_tablic)or(type(licznik)=="number"))and(type(args_tabeli)=="table"))then
for name,value in par2(args_tabeli)do
if((czy_nie_tylko_nazwane)and((czy_number_nie_tylko_elementow_tablic)or(type(name)=="number")))then
if(nazwij_elementy_numerowane)then
if(not tabela[name])then tabela[name]=value;end;
else
table.insert(tabela,value);
end;
elseif((czy_nazwane)and(czy_nie_tylko_nazwane or ((not czy_nie_tylko_nazwane)and(type(name)~="number"))))then
if(not tabela[name])then tabela[name]=value;end;
end;
end;
end;
end;
return tabela;
end;
p["UsuńElementyTabeli"]=function(tabelka_1,tabelka_2)
if(not tabelka_1)then return nil;end;
if(not tabelka_2)then return tabelka_1;end;
for name,_ in pairs(tabelka_1)do
if(tabelka_2[name]~=nil)then
tabelka_1[name]=nil;
end;
end;
return tabelka_1;
end;
p["TwórzTabelęBezPowtarzającychKluczyTabel"]=function(args)
local tabela_poczatkowa=args[1];
local tabela={};
local lens=#args;
for name,value in pairs(tabela_poczatkowa)do
local yes=false;
for i=2,lens,1 do
if(args[i][name]~=nil)then
yes=true;
break;
end;
end;
if(not yes)then
tabela[name]=value;
end;
end;
return tabela;
end;
function p.TypeTable(zmienna)
return (type(zmienna)=="table");
end;
function p.TypeFunction(zmienna)
return (type(zmienna)=="function");
end;
function p.TypeString(zmienna)
return (type(zmienna)=="string");
end;
function p.TypeBoolean(zmienna)
return (type(zmienna)=="boolean");
end;
function p.TypeNumber(zmienna)
return (type(zmienna)=="number");
end;
function p.TypeNil(zmienna)
return (zmienna==nil);
end;
local function CzyTakSilnik(args,funkcja)
local parametry_modul=require("Module:Parametry");
local parametr=p.CzyTak(args[2]) and require("Module:"..args[2])[args[1]] or args[1];
local argsfun;
if(p.CzyTak(args[2]))then
for name,value in pairs(args)do
local typen=(type(name)=="number");
if(((typen)and((name~=1)and(name~=2)))or(not typen))then
if(not argsfun)then argsfun={};end;
argsfun[(typen and name>2) and (name-2) or name]=value;
end;
end;
else
parametr=tonumber(parametr) or parametr;
if(type(parametr)=="string")then
local parametr2=parametry_modul["Odstępy"](parametr);
if(parametr2=="true")then
parametr=true;
elseif(parametr2=="false")then
parametr=false;
elseif(parametr2=="nil")then
parametr=nil;
else
parametr=tonumber(parametr2) or parametr;
end;
end;
end;
return (parametry_modul[funkcja]{[1]=parametr,[2]=argsfun,})and "tak" or nil;
end;
p["CzyTakCiąg"]=function(...)
local frame_parametry={...};
local frame=(#frame_parametry>1)and frame_parametry or frame_parametry[1];
local czy_table=p.TypeTable(frame);
if((czy_table and (not frame.getParent)) or (not czy_table))then
local PobierzParametr=p.PobierzParametr(frame);
local ciag=PobierzParametr("ciąg") or PobierzParametr(1);
local parametry=PobierzParametr("parametry") or PobierzParametr(2);
local parametry_modul=require("Module:Parametry");
return ciag and p.CzyTak{[1]=(p.TypeString(ciag) and parametry_modul["Odstępy"]{[1]=ciag,[2]="tak",} or ciag),[2]=parametry,} or false;
else
local args=p.PobierzArgsParametry(frame);
return CzyTakSilnik(args,"CzyTakCiąg");
end;
end;
function p.CzyTak(...)
local frame_parametry={...};
local frame=(#frame_parametry>1)and frame_parametry or frame_parametry[1];
local czy_table=p.TypeTable(frame);
if((czy_table and (not frame.getParent)) or (not czy_table))then
local PobierzParametr=p.PobierzParametr(frame);
local zmienna;local parametry;
if(czy_table)then
local zmienna_temp=PobierzParametr("zmienna") or PobierzParametr(1);
zmienna=zmienna_temp or frame;
parametry=zmienna_temp and (PobierzParametr("parametry") or PobierzParametr(2)) or nil;
else
zmienna=frame;
parametry=nil;
end;
if(zmienna~=nil)then
if(p.TypeString(zmienna))then
if(zmienna~="")then
return "tak";
else
return nil;
end;
elseif(p.TypeNumber(zmienna))then
if(zmienna~=0)then
return "tak";
else
return nil;
end;
elseif(p.TypeBoolean(zmienna))then
return (zmienna and "tak" or nil);
elseif(p.TypeTable(zmienna))then
local parametry_modul=require("Module:Parametry");
return (parametry_modul["CzySąElementyTablicy"](zmienna) and "tak" or nil);
elseif(p.TypeFunction(zmienna))then
return (zmienna(parametry) and "tak" or nil);
else
return nil;
end;
else
return nil;
end;
else
local args=p.PobierzArgsParametry(frame);
return CzyTakSilnik(args,"CzyTak");
end;
end;
function p.PobierzFrameEwentualnieParent(frame)
return (frame.getParent and (p.CzyTak(frame.args["wyspecjalizowana"]) and frame or frame:getParent()) or frame);
end;
function p.PobierzArgsParametry(frame, czy_nie_tablica_jako_tablica)
local TempFunc=function(frame)
local pf=p.PobierzFrameEwentualnieParent(frame);
local args=pf.args;
if(p.TypeTable(args))then
return args;
else
return nil;
end;
end;
if(not p.TypeNil(frame))then
return p.TypeTable(frame) and (TempFunc(frame) or frame) or ((czy_nie_tablica_jako_tablica)and {frame,} or frame);
else
return {};
end;
end;
function p.PobierzParametryRamki(frame)
local TempFun1=function(tablica)
return function(nazwa)
return tablica[nazwa];
end;
end;
local TempFun2=function(wartosc)
local tak=true;
return function(nazwa)
if(tak)then
tak=false;
return wartosc;
end;
return nil;
end;
end;
local tablica_parametrow_ramki=p.TypeTable(frame) and (p.TypeTable(frame.args) and TempFun1(frame.args) or TempFun1(frame)) or TempFun2(frame);
return function(nazwa)
return tablica_parametrow_ramki(nazwa);
end;
end;
function p.PobierzElementNumerowanyZFrameLubTablicy(frame)
local tablica_parametrow_funkcji=p.TypeTable(frame[1]) and p.TypeTable(frame[1].args)and frame[1].args or frame;
return function(nazwa)
local wartosc=tablica_parametrow_funkcji[nazwa];
return wartosc;
end;
end;
function p.PobierzParametr(frame,czy_frame_lub_parent,czy_frame)
local __pobierz_parametr_table_args=nil;
if(not p.TypeNil(frame))then
if(p.TypeTable(frame))then
local tak_frame_lub_parent=p.CzyTak(czy_frame_lub_parent);
if((not tak_frame_lub_parent)or(not frame.getParent))then
local __pobierz_parametr_table_args_temp=p.CzyTak(czy_frame) and frame.args or p.PobierzArgsParametry(frame);
__pobierz_parametr_table_args=function(nazwa)
return __pobierz_parametr_table_args_temp[nazwa or 1],1;
end;
elseif(tak_frame_lub_parent)then
local pf=(frame.getParent)and frame:getParent() or nil;
__pobierz_parametr_table_args=function(nazwa)
local wartosc=frame.args[nazwa or 1] or (pf and pf.args[nazwa or 1] or nil);
return wartosc,2;
end;
end;
else
local tak=true;
__pobierz_parametr_table_args=function(nazwa)
if(tak)then
tak=false;
return frame,0;
end;
return nil,0;
end;
end;
else
__pobierz_parametr_table_args=function(nazwa)
return nil,0;
end;
end;
return function(nazwa)
return __pobierz_parametr_table_args(nazwa);
end;
end;
function p.And(frame)
local czy="tak";
local parametry_modul=require("Module:Parametry");
local wartosc_uzyskana=nil;
for _,wartosc in ipairs(frame.args)do
czy=czy and parametry_modul["CzyTakCiąg"](wartosc);
if(not czy)then return nil;end;
wartosc_uzyskana=wartosc;
end;
return czy and wartosc_uzyskana or nil;
end;
function p.Or(frame)
local czy=nil;
for _,wartosc in ipairs(frame.args)do
czy=czy or p["CzyTakCiąg"](wartosc);
if(czy)then return wartosc;end;
end;
return nil;
end;
function p.Not(frame)
local parametry_modul=require("Module:Parametry");
return (not parametry_modul["CzyTakCiąg"](frame.args[1]))and "tak" or nil;
end;
function p.Mniejszy(frame)
local wyraz1=tonumber(frame.args[1]) or 0;
local wyraz2=tonumber(frame.args[2]) or 0;
if(wyraz1<wyraz2)then
return "tak";
end;
return;
end;
function p.IlePodano(frame)
local args=frame.args;
local args2=frame:getParent().args;
local licznik=0;
for _,name in pairs(args)do
if(args2[name])then
licznik=licznik+1;
end;
end;
return licznik;
end;
p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter={};
function p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter.__index(t,klucz)
local html_modul=require("Module:Html");
klucz=html_modul.DecodeKoduHTMLZnaku(klucz);
klucz=p["Odstępy"]{[1]=klucz,[2]="tak",};
klucz=mw.ustring.lower(klucz);
return rawget(t,klucz);
end;
function p.IteratorPoNumerowanychElementachTablicy(t)
local i=1;
return function()
local v=t[i];
if(v~=nil)then i=i+1;end;
return v;
end;
end;
p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu=function(tabela,funkcja)
local keys={};
for name,_ in next,tabela do
table.insert(keys,name);
end;
table.sort(keys,funkcja);
return function(tablica,klucz)
if(klucz==nil)then return keys[1];end;
for k,_ in ipairs(keys)do
if(keys[k]==klucz)then
return keys[k+1];
end;
end;
end;
end;
function p.Max(...)
local frame={...};
local PobierzElement=p.PobierzElementNumerowanyZFrameLubTablicy(frame);
local parametr1=tonumber(PobierzElement(1));
local parametr2=tonumber(PobierzElement(2));
return math.max(parametr1,parametr2);
end;
function p.Min(...)
local frame={...};
local PobierzElement=p.PobierzElementNumerowanyZFrameLubTablicy(frame);
local parametr1=tonumber(PobierzElement(1));
local parametr2=tonumber(PobierzElement(2));
return math.min(parametr1,parametr2);
end;
return p;
8zxb1uzwmpifbcpn14gdqipj6q3hbja
553326
553306
2026-08-27T09:09:43Z
Persino
2851
553326
Scribunto
text/plain
local p={};
p["LiczbaElementówNumerowanychTablicy"]=function(tabela, wliczac,mnoga)
local liczba_elementow_ponumerowanych_w_tablicy=0;
local czy_tylko_niepuste_wliczac=p.CzyTak(wliczac);
local czy_mnoga=p.CzyTak(mnoga);
for _1,_2 in ipairs(tabela)do
if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(p.CzyTak(_2))))then
liczba_elementow_ponumerowanych_w_tablicy=liczba_elementow_ponumerowanych_w_tablicy+1;
if((czy_mnoga)and(liczba_elementow_ponumerowanych_w_tablicy>1))then return liczba_elementow_ponumerowanych_w_tablicy;end;
end;
end;
return liczba_elementow_ponumerowanych_w_tablicy;
end;
p["LiczbaElementówNumerowanychSzablonu"]=function(frame)
local parametry_modul=require("Module:Parametry");
return parametry_modul["LiczbaElementówNumerowanychTablicy"](frame:getParent().args,frame.args["niepuste"],frame.args["mnoga"]);
end;
p["LiczbaElementówNienazwanychTablicy"] = function(tabela,wliczac,mnoga)
local czy_tylko_niepuste_wliczac=p.CzyTak(wliczac);
local czy_mnoga=p.CzyTak(mnoga);
local liczba_elementow_nienazwanych_w_tablicy=0;
for _1,_2 in pairs(tabela)do
if(type(_1)=="number")then
if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(p.CzyTak(_2))))then
liczba_elementow_nienazwanych_w_tablicy=liczba_elementow_nienazwanych_w_tablicy+1;
if((czy_mnoga)and(liczba_elementow_nienazwanych_w_tablicy>1))then return liczba_elementow_nienazwanych_w_tablicy;end;
end;
end;
end;
return liczba_elementow_nienazwanych_w_tablicy;
end;
p["LiczbaParametrówNienazwanychSzablonu"] = function (frame)
return p["LiczbaElementówNienazwanychTablicy"](frame:getParent().args,frame.args["niepuste"],frame.args["mnoga"])
end;
p["LiczbaElementówTablicy"]=function(tabela,wliczac)
local czy_tylko_niepuste_wliczac=p.CzyTak(wliczac);
local liczba_elementow_w_tablicy=0;
for _1,_2 in pairs(tabela)do
if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(p.CzyTak(_2))))then
liczba_elementow_w_tablicy=liczba_elementow_w_tablicy+1;
end;
end;
return liczba_elementow_w_tablicy;
end;
p["LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy"]=function(tabela,przedrostek,wliczac,czy_formy_numerkowe)
local czy_tylko_niepuste_wliczac=p.CzyTak(wliczac);
local liczba_elementow_w_tablicy=0;
local techniczne_modul=require("Module:Techniczne");
local wzor="^"..techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](przedrostek).."(%d+)$";
for _1,_2 in pairs(tabela)do
local string_liczba=tonumber(_1) or nil;
local czy_liczba=((string_liczba)and(czy_formy_numerkowe or p.TypeNumber(_1))and(string_liczba>0));
local zmienna=czy_liczba and przedrostek.._1 or nil;
local element=(czy_liczba and tabela[zmienna] or nil)
or (czy_liczba
and tabela[_1]
or (mw.ustring.match(tostring(_1),wzor) and tabela[_1] or nil)
);
if(element)then
if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(element~="")))then
liczba_elementow_w_tablicy=liczba_elementow_w_tablicy+1;
end;
end;
end;
return liczba_elementow_w_tablicy;
end;
function p.MaksymalnaLiczbaParametruNienazwanegoSzablonu(frame)
return p.MaksymalnaLiczbaParametruNienazwanegoTablicy(frame:getParent().args,frame.args["niepuste"]);
end;
function p.MaksymalnaLiczbaParametruNienazwanegoTablicy(tabela, wliczac)
local czy_tylko_niepuste_wliczac=p.CzyTak(wliczac);
local liczba_elementow_ponumerowanych_w_tablicy=0;
for _1,_2 in pairs(tabela)do
if(type(_1)=="number")then
if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(p.CzyTak(_2))))then
liczba_elementow_ponumerowanych_w_tablicy=math.max(liczba_elementow_ponumerowanych_w_tablicy,_1);
end;
end;
end;
return (liczba_elementow_ponumerowanych_w_tablicy)and liczba_elementow_ponumerowanych_w_tablicy or 0;
end;
function p.MinimalnaLiczbaParametruNienazwanegoSzablonu(frame)
return p.MinimalnaLiczbaParametruNienazwanegoTablicy(frame:getParent().args,frame.args["niepuste"]);
end;
function p.MinimalnaLiczbaParametruNienazwanegoTablicy(tabela,wliczac)
local czy_tylko_niepuste_wliczac=p.CzyTak(wliczac);
local liczba_elementow_ponumerowanych_w_tablicy;
for _1,_2 in pairs(tabela)do
if(type(_1)=="number")then
if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(p.CzyTak(_2))))then
if(not liczba_elementow_ponumerowanych_w_tablicy)then
liczba_elementow_ponumerowanych_w_tablicy=_1;
else
liczba_elementow_ponumerowanych_w_tablicy=math.min(liczba_elementow_ponumerowanych_w_tablicy,_1);
end;
end;
end;
end;
return (liczba_elementow_ponumerowanych_w_tablicy)and liczba_elementow_ponumerowanych_w_tablicy or 1;
end;
function p.MinimalnyIMaksymalnyNumerPodstawyParametruTabeli(tabela,nazwa_parametru_okreslona, czy_od_zera)
local liczba_maksimum=0;
local liczba_minimum;
for nazwa_parametru,wartosc_parametru in pairs(tabela)do
local liczba_z_parametru=mw.ustring.match(nazwa_parametru,"^"..nazwa_parametru_okreslona.."%s(%d+)$")
if(liczba_z_parametru)then
local liczba=tonumber(liczba_z_parametru) or (czy_od_zera and 0 or 1);
liczba=(liczba>0)and liczba or (czy_od_zera and 0 or 1);
liczba_maksimum=math.max(liczba_maksimum,liczba);
if(not liczba_minimum)then
liczba_minimum=liczba;
else
liczba_minimum=math.min(liczba_minimum,liczba);
end;
elseif(nazwa_parametru_okreslona==nazwa_parametru)then
liczba_maksimum=math.max(liczba_maksimum,(czy_od_zera and 0 or 1));
if(not liczba_minimum)then
liczba_minimum=czy_od_zera and 0 or 1;
else
liczba_minimum=math.min(liczba_minimum,czy_od_zera and 0 or 1);
end;
end;
end;
if(not liczba_minimum)then liczba_minimum=1;end;
return liczba_minimum,liczba_maksimum;
end;
p["CzySąParametryNumerowaneSzablonu"] = function(frame)
local czy_sa_elementy_tablicy=require("Module:Parametry")["CzySąElementyNumerowaneTablicy"](frame:getParent().args,frame.args["niepuste"]);
if(czy_sa_elementy_tablicy)then return "tak";end;
return;
end;
p["CzySąElementyNumerowaneTablicy"]=function(tabela,wliczac)
local czy_tylko_niepuste_wliczac=p.CzyTak(wliczac);
for _1,_2 in ipairs(tabela)do
if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(p.CzyTak(_2))))then
return true;
end;
end;
return false;
end;
p["CzySąParametryNienazwaneSzablonu"] = function(frame)
local czy_sa_elementy_tablicy=require("Module:Parametry")["CzySąElementyNienazwaneTablicy"](frame:getParent().args,frame.args["niepuste"]);
if(czy_sa_elementy_tablicy)then return "tak";end;
return;
end;
p["CzySąElementyNienazwaneTablicy"]=function(tabela,wliczac)
local czy_tylko_niepuste_wliczac=p.CzyTak(wliczac);
for _1,_2 in pairs(tabela)do
if(type(_1)=="number")then
if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(p.CzyTak(_2))))then
return true;
end;
end;
end;
return false;
end;
p["CzySąParametryNazwaneSzablonu"] = function(frame)
local czy_sa_elementy_tablicy=require("Module:Parametry")["CzySąElementyNazwaneTablicy"](frame:getParent().args,frame.args["niepuste"]);
if(czy_sa_elementy_tablicy)then return "tak";end;
return;
end;
p["CzySąElementyNazwaneTablicy"]=function(tabela,wliczac)
local czy_tylko_niepuste_wliczac=p.CzyTak(wliczac);
for _1,_2 in pairs(tabela)do
if(type(_1)~="number")then
if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(p.CzyTak(_2))))then
return true;
end;
end;
end;
return false;
end;
p["CzySąParametrySzablonu"] = function(frame)
local czy_sa_elementy_tablicy=require("Module:Parametry")["CzySąElementyTablicy"](frame:getParent().args,frame.args["niepuste"]);
if(czy_sa_elementy_tablicy)then return "tak";end;
return;
end;
p["CzySąElementyTablicy"]=function(tabela,wliczac)
local czy_tylko_niepuste_wliczac=p.CzyTak(wliczac);
for _1,_2 in pairs(tabela)do
if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(p.CzyTak(_2))))then
return true;
end;
end;
return false;
end;
p["CzyCoNajwyżejJedenNumerowanyParametrSzablonu"] = function (frame)
local parametry_modul=require("Module:Parametry");
local czy_jest_taki_element=parametry_modul["CzyCoNajwyżejJedenNumerowanyElementTablicy"](frame:getParent().args,frame.args["niepuste"]);
if(czy_jest_taki_element)then return "tak";end;
end;
p["CzyCoNajwyżejJedenNumerowanyElementTablicy"] = function (args,wliczac)
local czy_tylko_niepuste_wliczac=p.CzyTak(wliczac);
local i=1;
local czy=false;
for _1,_2 in pairs(args)do
if(type(_1)=="number")then
if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(p.CzyTak(_2))))then
if(_1==1)then czy=true;end;
if(i>1)then
return false;
else
i=i+1;
end;
end;
end;
end;
if((czy)or(i==1))then return true;end;
return false;
end;
p["KopiujTabelęŁańcuchów"]=function(args)
local args2={};
local wzor_temp=args["wzór"];local wzor_wszystko=args["wzór wszystko"];
local podstawienie_temp=args.podstawienie;local podstawienie_wszystko=args["podstawienie wszystko"];
local wzor2_temp=args["wzór 2"];local wzor_wszystko_2=args["wzór wszystko 2"];
local przedrostek_temp=args.przedrostek;local przedrostek_wszystko=args["przedrostek wszystko"];
local przyrostek_temp=args.przyrostek;local przyrostek_wszystko=args["przyrostek wszystko"];
for name,value in pairs(args.tabela)do
local wzor=wzor_temp and wzor_temp[name] or wzor_wszystko;
local podstawienie=wzor and (podstawienie_temp and podstawienie_temp[name] or podstawienie_wszystko) or nil;
if(wzor and podstawienie)then value=mw.ustring.gsub(value,wzor,podstawienie);end;
local wzor2=wzor2_temp and wzor2_temp[name] or wzor_wszystko_2;
if(wzor2)then value=mw.ustring.match(value,wzor2);end;
if(value)then
local przedrostek=przedrostek_temp and przedrostek_temp[name] or przedrostek_wszystko;
local przyrostek=przyrostek_temp and przyrostek_temp[name] or przyrostek_wszystko;
args2[name]=(przedrostek or '')..value..(przyrostek or '');
end;
end;
return args2;
end;
p["KopiujTabelęElementów"]=function(tabelka,wliczac_1,wliczac_2)
local czy_tylko_niepuste_wliczac_1=p.CzyTak(wliczac_1);
local czy_tylko_niepuste_wliczac_2=p.CzyTak(wliczac_2);
local tabelka2={};
for name,value in pairs(tabelka)do
if(((not czy_tylko_niepuste_wliczac_1)or((czy_tylko_niepuste_wliczac_1)and(p.CzyTak(name))))and((not czy_tylko_niepuste_wliczac_2)or((czy_tylko_niepuste_wliczac_2)and(p.CzyTak(value)))))then
tabelka2[name]=value;
end;
end;
return tabelka2;
end;
p["KopiujTabelęElementówBezTablicyKluczy"]=function(tabelka,tabelka2,wliczac_1,wliczac_2)
local czy_tylko_niepuste_wliczac_1=p.CzyTak(wliczac_1);
local czy_tylko_niepuste_wliczac_2=p.CzyTak(wliczac_2);
local tabelka3={};
for name,value in pairs(tabelka)do
if(((not czy_tylko_niepuste_wliczac_1)or((czy_tylko_niepuste_wliczac_1)and(p.CzyTak(name))))and((not czy_tylko_niepuste_wliczac_2)or((czy_tylko_niepuste_wliczac_2)and(p.CzyTak(value)))))then
local czy=p.CzyJestTakiKluczTabeli(tabelka2,name);
if(not czy)then
tabelka3[name]=value;
end;
end;
end;
return tabelka3;
end;
p["KopiujRekurencyjnieTabelęElementów"]=function(tabelka,wliczac_1,wliczac_2)
local czy_tylko_niepuste_wliczac_1=p.CzyTak(wliczac_1);
local czy_tylko_niepuste_wliczac_2=p.CzyTak(wliczac_2);
local szablonowe_potrzebne_modul=require("Module:Szablonowe/Potrzebne");
local szablonowe_modul=require("Module:Szablonowe");
local kopiuj_metatable=function(value,funkcja,funkcja2)
local __metatabelka=getmetatable(value);
if(__metatabelka)then
if(__metatabelka.KopiujMetaTabela)then
__metatabelka.KopiujMetaTabela(value,funkcja,funkcja2)
else
funkcja(value,true);
end;
else
funkcja(value,true);
end;
end;
local function kopiuj(tabelka,tabelka_nowa)
local tabelka2=tabelka_nowa or {};
for name,value in pairs(tabelka)do
if(((not czy_tylko_niepuste_wliczac_1)or((czy_tylko_niepuste_wliczac_1)and(p.CzyTak(name))))and((not czy_tylko_niepuste_wliczac_2)or((czy_tylko_niepuste_wliczac_2)and(p.CzyTak(value)))))then
if(type(value)=="table")then
kopiuj_metatable(value,function(value,jak)
if(jak)then
tabelka2[name]=kopiuj(value);
else
tabelka2[name]=value;
end;
end,kopiuj);
else
tabelka2[name]=value;
end;
end;
end;
return tabelka2;
end;
local tabela_kopiuj={};
kopiuj_metatable(tabelka,function(value,jak)
if(jak)then
tabela_kopiuj=kopiuj(value);
else
tabela_kopiuj=value;
end;
end,kopiuj);
return tabela_kopiuj;
end;
p["NazwanyLiczbą"] = function(frame)
local pf=frame:getParent()
local numer_parametru=frame.args[1]
if(numer_parametru)then
numer_parametru=tonumber(numer_parametru);
if(numer_parametru and pf.args[numer_parametru])then
return "tak"
end
end;
return;
end
p["NazwanyCiągiem"] = function (frame)
local pf=frame:getParent()
local klucz_parametru=frame.args[1]
if(klucz_parametru)then
local klucz_parametru_do_liczby=tonumber(klucz_parametru);
if((not klucz_parametru_do_liczby)and(pf.args[klucz_parametru]))then
return "tak"
end
end;
return;
end;
function p.Nazwane(frame)
local pf = frame:getParent()
for _, nazwa_parametru in ipairs(frame.args)do
local wartosc_parametru_nazwanego=pf.args[mw.text.trim(nazwa_parametru)]
if(wartosc_parametru_nazwanego)then return "tak" end
end
return;
end
function p.Nienazwane(frame)
local pf = frame:getParent()
for _, wartosc_parametru in ipairs(frame.args)do
wartosc_parametru=mw.text.trim(wartosc_parametru)
for name, wartosc_parametru2 in pairs(pf.args) do
if(type(name)=="number")then
if(mw.text.trim(wartosc_parametru2)==wartosc_parametru)then
return "tak"
end
end;
end
end
return;
end
function p.Numerowane(frame)
local pf = frame:getParent()
for _, wartosc_parametru in ipairs(frame.args)do
wartosc_parametru=mw.text.trim(wartosc_parametru)
for _, wartosc_parametru2 in ipairs(pf.args) do
if(mw.text.trim(wartosc_parametru2)==wartosc_parametru)then
return "tak"
end
end
end
return;
end
p["Odstępy"] = function(frame)
local PobierzParametr=p.PobierzParametr(frame);
local nazwa=PobierzParametr(1) or PobierzParametr("nazwa");
local czy=PobierzParametr(2) or PobierzParametr("wewnątrz");
local dolny_myslnik=PobierzParametr(3) or PobierzParametr("dolny-myślnik");
local odstep_spacje=PobierzParametr(4) or PobierzParametr("spacje");
if(not p.CzyTak(nazwa))then return nazwa;end;
local m_=(p.CzyTak(odstep_spacje) and "" or "_");
nazwa=mw.ustring.gsub(nazwa,"^[%s"..m_.."]+","");
nazwa=mw.ustring.gsub(nazwa,"[%s"..m_.."]+$","")
if(p.CzyTak(czy))then
nazwa=mw.ustring.gsub(nazwa,"[%s"..m_.."]+",(p.CzyTak(dolny_myslnik) and "_" or " "));
end;
return nazwa;
end;
function p.DodajElementDoZbioru(tabela,wartosc)
if(wartosc==nil)then return; end;
if(type(tabela)~="table")then return;end;
for _,element_tabeli in pairs(tabela)do
if(element_tabeli==wartosc)then
return false;
end;
end;
table.insert(tabela,wartosc);
return true;
end;
function p.CzyJestTakiElementNumerowanyTabeli(tabela,wartosc)
if(wartosc==nil)then return;end;
if(type(tabela)~="table")then return;end;
for _, element_tabeli in ipairs(tabela)do
if(element_tabeli==wartosc)then
return true;
end;
end;
return false;
end;
function p.CzyJestTakiElementNienazwanyTabeli(tabela,wartosc)
if(wartosc==nil)then return;end;
if(type(tabela)~="table")then return;end;
for name,value in pairs(tabela)do
if(type(name)=="number")then
if(value==wartosc)then
return true;
end;
end;
end;
return false;
end;
function p.CzyJestTakiKluczTabeli(tabela,klucz)
if(klucz==nil)then return;end;
if(type(tabela)~="table")then return;end;
local wartosc=tabela[klucz];
if(wartosc~=nil)then return true;end;
return false;
end;
function p.CzyJestTakiElementTabeli(tabela,klucz,wartosc)
if((klucz==nil)or(wartosc==nil))then return;end;
if(type(tabela)~="table")then return;end;
for __klucz, __wartosc in pairs(tabela)do
if((__klucz==klucz)and(__wartosc==wartosc))then
return true;
end;
end;
return false;
end;
p["ŁączDwieTabele"] = function (tabelka1,tabelka2)
local parametry_modul=require("Module:Parametry");
return (tabelka2 and parametry_modul["CzySąElementyTablicy"](tabelka2))
and ((tabelka1 and parametry_modul["CzySąElementyTablicy"](tabelka1))
and parametry_modul["ŁączNumerowaneTabele"]{[1]=tabelka1,[2]=tabelka2,}
or tabelka2)
or tabelka1;
end;
p["ŁączZbioryElementówNumerowanychDwóchTabel"]=function(tabelka1,tabelka2)
local parametry_modul=require("Module:Parametry");
return (tabelka1 and parametry_modul["CzySąElementyNumerowaneTablicy"](tabelka1))and ((tabelka2 and parametry_modul["CzySąElementyNumerowaneTablicy"](tabelka2))and parametry_modul["ŁączZbioryNumerowanychElementówNumerowanychTabel"]{[1]=tabelka1,[2]=tabelka2} or tabelka1) or tabelka2;
end;
p["ŁączZbioryElementówNienazwanychDwóchTabel"]=function(tabelka1,tabelka2)
local parametry_modul=require("Module:Parametry");
return (tabelka1 and parametry_modul["CzySąElementyNienazwaneTablicy"](tabelka1))and ((tabelka2 and parametry_modul["CzySąElementyNienazwaneTablicy"](tabelka2))and parametry_modul["ŁączZbioryNienazwanychElementówNumerowanychTabel"]{[1]=tabelka1,[2]=tabelka2} or tabelka1) or tabelka2;
end;
p["ŁączZbioryElementówNazwanychDwóchTabel"]=function(tabelka1,tabelka2)
local parametry_modul=require("Module:Parametry");
return (tabelka1 and parametry_modul["CzySąElementyNazwaneTablicy"](tabelka1))and ((tabelka2 and parametry_modul["CzySąElementyNazwaneTablicy"](tabelka2))and parametry_modul["ŁączZbioryNazwanychElementówNumerowanychTabel"]{[1]=tabelka1,[2]=tabelka2} or tabelka1) or tabelka2;
end;
p["ŁączZbioryNumerowanychElementówNienazwanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=false,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,};
return parametry_modul["ŁączTabele"](args,args2);
end;
p["ŁączZbioryNienazwanychElementówNienazwanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,};
return parametry_modul["ŁączTabele"](args,args2);
end;
p["ŁączZbioryNazwanychElementówNienazwanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=true,};
return parametry_modul["ŁączTabele"](args,args2);
end;
p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=false,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,};
return parametry_modul["ŁączTabele"](args,args2);
end;
p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,};
return parametry_modul["ŁączTabele"](args,args2);
end;
p["ŁączZbioryNazwanychElementówNumerowanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=true,};
return parametry_modul["ŁączTabele"](args,args2);
end;
p["ŁączNumerowaneTabele"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=false,NazwijElementyNumerowane=true,};
return parametry_modul["ŁączTabele"](args,args2);
end;
p["ŁączNienazwaneTabele"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=false,NazwijElementyNumerowane=true,};
return parametry_modul["ŁączTabele"](args,args2);
end;
p["ŁączTabele"] = function(args,args2)
local tabela={};
local par1=(args2.CzyPairsTablic)and pairs or ipairs;
local czy_number_nie_tylko_tablic=(not args2.CzyPairsTablic)and true or false;
local par2=(args2["CzyPairsElementówTablic"])and pairs or ipairs;
local czy_number_nie_tylko_elementow_tablic=(not args2["CzyPairsElementówTablic"])and true or false;
local czy_nazwane=(args2.CzyNazwaneElementyTabel)and true or false;
local czy_nie_tylko_nazwane=(not args2.CzyTylkoNazwaneElementyTabel)and true or false;
local nazwij_elementy_numerowane=(args2.NazwijElementyNumerowane) and true or false;
for licznik, args_tabeli in par1(args)do
if(((czy_number_nie_tylko_tablic)or(type(licznik)=="number"))and(type(args_tabeli)=="table"))then
for name,value in par2(args_tabeli)do
if((czy_nie_tylko_nazwane)and((czy_number_nie_tylko_elementow_tablic)or(type(name)=="number")))then
if(nazwij_elementy_numerowane)then
if(not tabela[name])then tabela[name]=value;end;
else
table.insert(tabela,value);
end;
elseif((czy_nazwane)and(czy_nie_tylko_nazwane or ((not czy_nie_tylko_nazwane)and(type(name)~="number"))))then
if(not tabela[name])then tabela[name]=value;end;
end;
end;
end;
end;
return tabela;
end;
p["UsuńElementyTabeli"]=function(tabelka_1,tabelka_2)
if(not tabelka_1)then return nil;end;
if(not tabelka_2)then return tabelka_1;end;
for name,_ in pairs(tabelka_1)do
if(tabelka_2[name]~=nil)then
tabelka_1[name]=nil;
end;
end;
return tabelka_1;
end;
p["TwórzTabelęBezPowtarzającychKluczyTabel"]=function(args)
local tabela_poczatkowa=args[1];
local tabela={};
local lens=#args;
for name,value in pairs(tabela_poczatkowa)do
local yes=false;
for i=2,lens,1 do
if(args[i][name]~=nil)then
yes=true;
break;
end;
end;
if(not yes)then
tabela[name]=value;
end;
end;
return tabela;
end;
function p.TypeTable(zmienna)
return (type(zmienna)=="table");
end;
function p.TypeFunction(zmienna)
return (type(zmienna)=="function");
end;
function p.TypeString(zmienna)
return (type(zmienna)=="string");
end;
function p.TypeBoolean(zmienna)
return (type(zmienna)=="boolean");
end;
function p.TypeNumber(zmienna)
return (type(zmienna)=="number");
end;
function p.TypeNil(zmienna)
return (zmienna==nil);
end;
local function CzyTakSilnik(args,funkcja)
local parametry_modul=require("Module:Parametry");
local parametr=p.CzyTak(args[2]) and require("Module:"..args[2])[args[1]] or args[1];
local argsfun;
if(p.CzyTak(args[2]))then
for name,value in pairs(args)do
local typen=(type(name)=="number");
if(((typen)and((name~=1)and(name~=2)))or(not typen))then
if(not argsfun)then argsfun={};end;
argsfun[(typen and name>2) and (name-2) or name]=value;
end;
end;
else
parametr=tonumber(parametr) or parametr;
if(type(parametr)=="string")then
local parametr2=parametry_modul["Odstępy"](parametr);
if(parametr2=="true")then
parametr=true;
elseif(parametr2=="false")then
parametr=false;
elseif(parametr2=="nil")then
parametr=nil;
else
parametr=tonumber(parametr2) or parametr;
end;
end;
end;
return (parametry_modul[funkcja]{[1]=parametr,[2]=argsfun,})and "tak" or nil;
end;
p["CzyTakCiąg"]=function(...)
local frame_parametry={...};
local frame=(#frame_parametry>1)and frame_parametry or frame_parametry[1];
local czy_table=p.TypeTable(frame);
if((czy_table and (not frame.getParent)) or (not czy_table))then
local PobierzParametr=p.PobierzParametr(frame);
local ciag=PobierzParametr("ciąg") or PobierzParametr(1);
local parametry=PobierzParametr("parametry") or PobierzParametr(2);
local parametry_modul=require("Module:Parametry");
return ciag and p.CzyTak{[1]=(p.TypeString(ciag) and parametry_modul["Odstępy"]{[1]=ciag,[2]="tak",} or ciag),[2]=parametry,} or false;
else
local args=p.PobierzArgsParametry(frame);
return CzyTakSilnik(args,"CzyTakCiąg");
end;
end;
function p.CzyTak(...)
local frame_parametry={...};
local frame=(#frame_parametry>1)and frame_parametry or frame_parametry[1];
local czy_table=p.TypeTable(frame);
if((czy_table and (not frame.getParent)) or (not czy_table))then
local PobierzParametr=p.PobierzParametr(frame);
local zmienna;local parametry;
if(czy_table)then
local zmienna_temp=PobierzParametr("zmienna") or PobierzParametr(1);
zmienna=zmienna_temp or frame;
parametry=zmienna_temp and (PobierzParametr("parametry") or PobierzParametr(2)) or nil;
else
zmienna=frame;
parametry=nil;
end;
if(zmienna~=nil)then
if(p.TypeString(zmienna))then
if(zmienna~="")then
return "tak";
else
return nil;
end;
elseif(p.TypeNumber(zmienna))then
if(zmienna~=0)then
return "tak";
else
return nil;
end;
elseif(p.TypeBoolean(zmienna))then
return (zmienna and "tak" or nil);
elseif(p.TypeTable(zmienna))then
local parametry_modul=require("Module:Parametry");
return (parametry_modul["CzySąElementyTablicy"](zmienna) and "tak" or nil);
elseif(p.TypeFunction(zmienna))then
return (zmienna(parametry) and "tak" or nil);
else
return nil;
end;
else
return nil;
end;
else
local args=p.PobierzArgsParametry(frame);
return CzyTakSilnik(args,"CzyTak");
end;
end;
function p.PobierzFrameEwentualnieParent(frame)
return (frame.getParent and (p.CzyTak(frame.args["wyspecjalizowana"]) and frame or frame:getParent()) or frame);
end;
function p.PobierzArgsParametry(frame, czy_nie_tablica_jako_tablica)
local TempFunc=function(frame)
local pf=p.PobierzFrameEwentualnieParent(frame);
local args=pf.args;
if(p.TypeTable(args))then
return args;
else
return nil;
end;
end;
if(not p.TypeNil(frame))then
return p.TypeTable(frame) and (TempFunc(frame) or frame) or ((czy_nie_tablica_jako_tablica)and {frame,} or frame);
else
return {};
end;
end;
function p.PobierzParametryRamki(frame)
local TempFun1=function(tablica)
return function(nazwa)
return tablica[nazwa];
end;
end;
local TempFun2=function(wartosc)
local tak=true;
return function(nazwa)
if(tak)then
tak=false;
return wartosc;
end;
return nil;
end;
end;
local tablica_parametrow_ramki=p.TypeTable(frame) and (p.TypeTable(frame.args) and TempFun1(frame.args) or TempFun1(frame)) or TempFun2(frame);
return function(nazwa)
return tablica_parametrow_ramki(nazwa);
end;
end;
function p.PobierzElementNumerowanyZFrameLubTablicy(frame)
local tablica_parametrow_funkcji=p.TypeTable(frame[1]) and p.TypeTable(frame[1].args)and frame[1].args or frame;
return function(nazwa)
local wartosc=tablica_parametrow_funkcji[nazwa];
return wartosc;
end;
end;
function p.PobierzParametr(frame,czy_frame_lub_parent,czy_frame)
local __pobierz_parametr_table_args=nil;
if(not p.TypeNil(frame))then
if(p.TypeTable(frame))then
local tak_frame_lub_parent=p.CzyTak(czy_frame_lub_parent);
if((not tak_frame_lub_parent)or(not frame.getParent))then
local __pobierz_parametr_table_args_temp=p.CzyTak(czy_frame) and frame.args or p.PobierzArgsParametry(frame);
__pobierz_parametr_table_args=function(nazwa)
return __pobierz_parametr_table_args_temp[nazwa or 1],1;
end;
elseif(tak_frame_lub_parent)then
local pf=(frame.getParent)and frame:getParent() or nil;
__pobierz_parametr_table_args=function(nazwa)
local wartosc=frame.args[nazwa or 1] or (pf and pf.args[nazwa or 1] or nil);
return wartosc,2;
end;
end;
else
local tak=true;
__pobierz_parametr_table_args=function(nazwa)
if(tak)then
tak=false;
return frame,0;
end;
return nil,0;
end;
end;
else
__pobierz_parametr_table_args=function(nazwa)
return nil,0;
end;
end;
return function(nazwa)
return __pobierz_parametr_table_args(nazwa);
end;
end;
function p.And(frame)
local czy="tak";
local parametry_modul=require("Module:Parametry");
local wartosc_uzyskana=nil;
for _,wartosc in ipairs(frame.args)do
czy=czy and parametry_modul["CzyTakCiąg"](wartosc);
if(not czy)then return nil;end;
wartosc_uzyskana=wartosc;
end;
return czy and wartosc_uzyskana or nil;
end;
function p.Or(frame)
local czy=nil;
for _,wartosc in ipairs(frame.args)do
czy=czy or p["CzyTakCiąg"](wartosc);
if(czy)then return wartosc;end;
end;
return nil;
end;
function p.Not(frame)
local parametry_modul=require("Module:Parametry");
return (not parametry_modul["CzyTakCiąg"](frame.args[1]))and "tak" or nil;
end;
function p.Mniejszy(frame)
local wyraz1=tonumber(frame.args[1]) or 0;
local wyraz2=tonumber(frame.args[2]) or 0;
if(wyraz1<wyraz2)then
return "tak";
end;
return;
end;
function p.IlePodano(frame)
local args=frame.args;
local args2=frame:getParent().args;
local licznik=0;
for _,name in pairs(args)do
if(args2[name])then
licznik=licznik+1;
end;
end;
return licznik;
end;
p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter={};
function p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter.__index(t,klucz)
local html_modul=require("Module:Html");
klucz=html_modul.DecodeKoduHTMLZnaku(klucz);
klucz=p["Odstępy"]{[1]=klucz,[2]="tak",};
klucz=mw.ustring.lower(klucz);
return rawget(t,klucz);
end;
function p.IteratorPoNumerowanychElementachTablicy(t)
local i=1;
return function()
local v=t[i];
if(v~=nil)then i=i+1;end;
return v;
end;
end;
p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu=function(tabela,funkcja)
local keys={};
for name,_ in next,tabela do
table.insert(keys,name);
end;
table.sort(keys,funkcja);
return function(tablica,klucz)
if(klucz==nil)then return keys[1];end;
for k,_ in ipairs(keys)do
if(keys[k]==klucz)then
return keys[k+1];
end;
end;
end;
end;
function p.Max(...)
local frame={...};
local PobierzElement=p.PobierzElementNumerowanyZFrameLubTablicy(frame);
local parametr1=tonumber(PobierzElement(1));
local parametr2=tonumber(PobierzElement(2));
return math.max(parametr1,parametr2);
end;
function p.Min(...)
local frame={...};
local PobierzElement=p.PobierzElementNumerowanyZFrameLubTablicy(frame);
local parametr1=tonumber(PobierzElement(1));
local parametr2=tonumber(PobierzElement(2));
return math.min(parametr1,parametr2);
end;
return p;
60ccll9q9spa72gqpa0w2u7pmwv3w6c
553329
553326
2026-08-27T09:17:46Z
Persino
2851
553329
Scribunto
text/plain
local p={};
p["LiczbaElementówNumerowanychTablicy"]=function(tabela, wliczac,mnoga)
local liczba_elementow_ponumerowanych_w_tablicy=0;
local czy_tylko_niepuste_wliczac=p.CzyTak(wliczac);
local czy_mnoga=p.CzyTak(mnoga);
for _1,_2 in ipairs(tabela)do
if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(p.CzyTak(_2))))then
liczba_elementow_ponumerowanych_w_tablicy=liczba_elementow_ponumerowanych_w_tablicy+1;
if((czy_mnoga)and(liczba_elementow_ponumerowanych_w_tablicy>1))then return liczba_elementow_ponumerowanych_w_tablicy;end;
end;
end;
return liczba_elementow_ponumerowanych_w_tablicy;
end;
p["LiczbaElementówNumerowanychSzablonu"]=function(frame)
local parametry_modul=require("Module:Parametry");
return parametry_modul["LiczbaElementówNumerowanychTablicy"](frame:getParent().args,frame.args["niepuste"],frame.args["mnoga"]);
end;
p["LiczbaElementówNienazwanychTablicy"] = function(tabela,wliczac,mnoga)
local czy_tylko_niepuste_wliczac=p.CzyTak(wliczac);
local czy_mnoga=p.CzyTak(mnoga);
local liczba_elementow_nienazwanych_w_tablicy=0;
for _1,_2 in pairs(tabela)do
if(type(_1)=="number")then
if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(p.CzyTak(_2))))then
liczba_elementow_nienazwanych_w_tablicy=liczba_elementow_nienazwanych_w_tablicy+1;
if((czy_mnoga)and(liczba_elementow_nienazwanych_w_tablicy>1))then return liczba_elementow_nienazwanych_w_tablicy;end;
end;
end;
end;
return liczba_elementow_nienazwanych_w_tablicy;
end;
p["LiczbaParametrówNienazwanychSzablonu"] = function (frame)
return p["LiczbaElementówNienazwanychTablicy"](frame:getParent().args,frame.args["niepuste"],frame.args["mnoga"])
end;
p["LiczbaElementówTablicy"]=function(tabela,wliczac)
local czy_tylko_niepuste_wliczac=p.CzyTak(wliczac);
local liczba_elementow_w_tablicy=0;
for _1,_2 in pairs(tabela)do
if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(p.CzyTak(_2))))then
liczba_elementow_w_tablicy=liczba_elementow_w_tablicy+1;
end;
end;
return liczba_elementow_w_tablicy;
end;
p["LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy"]=function(tabela,przedrostek,wliczac,czy_formy_numerkowe)
local czy_tylko_niepuste_wliczac=p.CzyTak(wliczac);
local liczba_elementow_w_tablicy=0;
local techniczne_modul=require("Module:Techniczne");
local wzor="^"..techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](przedrostek).."(%d+)$";
for _1,_2 in pairs(tabela)do
local string_liczba=tonumber(_1) or nil;
local czy_liczba=((string_liczba)and(czy_formy_numerkowe or p.TypeNumber(_1))and(string_liczba>0));
local zmienna=czy_liczba and przedrostek.._1 or nil;
local element=(czy_liczba and tabela[zmienna] or nil)
or (czy_liczba
and tabela[_1]
or (mw.ustring.match(tostring(_1),wzor) and tabela[_1] or nil)
);
if(element)then
if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(element~="")))then
liczba_elementow_w_tablicy=liczba_elementow_w_tablicy+1;
end;
end;
end;
return liczba_elementow_w_tablicy;
end;
function p.MaksymalnaLiczbaParametruNienazwanegoSzablonu(frame)
return p.MaksymalnaLiczbaParametruNienazwanegoTablicy(frame:getParent().args,frame.args["niepuste"]);
end;
function p.MaksymalnaLiczbaParametruNienazwanegoTablicy(tabela, wliczac)
local czy_tylko_niepuste_wliczac=p.CzyTak(wliczac);
local liczba_elementow_ponumerowanych_w_tablicy=0;
for _1,_2 in pairs(tabela)do
if(type(_1)=="number")then
if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(p.CzyTak(_2))))then
liczba_elementow_ponumerowanych_w_tablicy=math.max(liczba_elementow_ponumerowanych_w_tablicy,_1);
end;
end;
end;
return (liczba_elementow_ponumerowanych_w_tablicy)and liczba_elementow_ponumerowanych_w_tablicy or 0;
end;
function p.MinimalnaLiczbaParametruNienazwanegoSzablonu(frame)
return p.MinimalnaLiczbaParametruNienazwanegoTablicy(frame:getParent().args,frame.args["niepuste"]);
end;
function p.MinimalnaLiczbaParametruNienazwanegoTablicy(tabela,wliczac)
local czy_tylko_niepuste_wliczac=p.CzyTak(wliczac);
local liczba_elementow_ponumerowanych_w_tablicy;
for _1,_2 in pairs(tabela)do
if(type(_1)=="number")then
if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(p.CzyTak(_2))))then
if(not liczba_elementow_ponumerowanych_w_tablicy)then
liczba_elementow_ponumerowanych_w_tablicy=_1;
else
liczba_elementow_ponumerowanych_w_tablicy=math.min(liczba_elementow_ponumerowanych_w_tablicy,_1);
end;
end;
end;
end;
return (liczba_elementow_ponumerowanych_w_tablicy)and liczba_elementow_ponumerowanych_w_tablicy or 1;
end;
function p.MinimalnyIMaksymalnyNumerPodstawyParametruTabeli(tabela,podstawa_parametru, czy_od_zera)
local liczba_maksimum=0;
local liczba_minimum;
for nazwa_parametru,wartosc_parametru in pairs(tabela)do
local liczba_z_parametru=mw.ustring.match(nazwa_parametru,"^"..podstawa_parametru.."%s(%d+)$")
if(liczba_z_parametru)then
local liczba=tonumber(liczba_z_parametru) or (czy_od_zera and 0 or 1);
liczba=(liczba>0)and liczba or (czy_od_zera and 0 or 1);
liczba_maksimum=math.max(liczba_maksimum,liczba);
if(not liczba_minimum)then
liczba_minimum=liczba;
else
liczba_minimum=math.min(liczba_minimum,liczba);
end;
elseif(podstawa_parametru==nazwa_parametru)then
liczba_maksimum=math.max(liczba_maksimum,(czy_od_zera and 0 or 1));
if(not liczba_minimum)then
liczba_minimum=czy_od_zera and 0 or 1;
else
liczba_minimum=math.min(liczba_minimum,czy_od_zera and 0 or 1);
end;
end;
end;
if(not liczba_minimum)then liczba_minimum=1;end;
return liczba_minimum,liczba_maksimum;
end;
p["CzySąParametryNumerowaneSzablonu"] = function(frame)
local czy_sa_elementy_tablicy=require("Module:Parametry")["CzySąElementyNumerowaneTablicy"](frame:getParent().args,frame.args["niepuste"]);
if(czy_sa_elementy_tablicy)then return "tak";end;
return;
end;
p["CzySąElementyNumerowaneTablicy"]=function(tabela,wliczac)
local czy_tylko_niepuste_wliczac=p.CzyTak(wliczac);
for _1,_2 in ipairs(tabela)do
if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(p.CzyTak(_2))))then
return true;
end;
end;
return false;
end;
p["CzySąParametryNienazwaneSzablonu"] = function(frame)
local czy_sa_elementy_tablicy=require("Module:Parametry")["CzySąElementyNienazwaneTablicy"](frame:getParent().args,frame.args["niepuste"]);
if(czy_sa_elementy_tablicy)then return "tak";end;
return;
end;
p["CzySąElementyNienazwaneTablicy"]=function(tabela,wliczac)
local czy_tylko_niepuste_wliczac=p.CzyTak(wliczac);
for _1,_2 in pairs(tabela)do
if(type(_1)=="number")then
if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(p.CzyTak(_2))))then
return true;
end;
end;
end;
return false;
end;
p["CzySąParametryNazwaneSzablonu"] = function(frame)
local czy_sa_elementy_tablicy=require("Module:Parametry")["CzySąElementyNazwaneTablicy"](frame:getParent().args,frame.args["niepuste"]);
if(czy_sa_elementy_tablicy)then return "tak";end;
return;
end;
p["CzySąElementyNazwaneTablicy"]=function(tabela,wliczac)
local czy_tylko_niepuste_wliczac=p.CzyTak(wliczac);
for _1,_2 in pairs(tabela)do
if(type(_1)~="number")then
if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(p.CzyTak(_2))))then
return true;
end;
end;
end;
return false;
end;
p["CzySąParametrySzablonu"] = function(frame)
local czy_sa_elementy_tablicy=require("Module:Parametry")["CzySąElementyTablicy"](frame:getParent().args,frame.args["niepuste"]);
if(czy_sa_elementy_tablicy)then return "tak";end;
return;
end;
p["CzySąElementyTablicy"]=function(tabela,wliczac)
local czy_tylko_niepuste_wliczac=p.CzyTak(wliczac);
for _1,_2 in pairs(tabela)do
if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(p.CzyTak(_2))))then
return true;
end;
end;
return false;
end;
p["CzyCoNajwyżejJedenNumerowanyParametrSzablonu"] = function (frame)
local parametry_modul=require("Module:Parametry");
local czy_jest_taki_element=parametry_modul["CzyCoNajwyżejJedenNumerowanyElementTablicy"](frame:getParent().args,frame.args["niepuste"]);
if(czy_jest_taki_element)then return "tak";end;
end;
p["CzyCoNajwyżejJedenNumerowanyElementTablicy"] = function (args,wliczac)
local czy_tylko_niepuste_wliczac=p.CzyTak(wliczac);
local i=1;
local czy=false;
for _1,_2 in pairs(args)do
if(type(_1)=="number")then
if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(p.CzyTak(_2))))then
if(_1==1)then czy=true;end;
if(i>1)then
return false;
else
i=i+1;
end;
end;
end;
end;
if((czy)or(i==1))then return true;end;
return false;
end;
p["KopiujTabelęŁańcuchów"]=function(args)
local args2={};
local wzor_temp=args["wzór"];local wzor_wszystko=args["wzór wszystko"];
local podstawienie_temp=args.podstawienie;local podstawienie_wszystko=args["podstawienie wszystko"];
local wzor2_temp=args["wzór 2"];local wzor_wszystko_2=args["wzór wszystko 2"];
local przedrostek_temp=args.przedrostek;local przedrostek_wszystko=args["przedrostek wszystko"];
local przyrostek_temp=args.przyrostek;local przyrostek_wszystko=args["przyrostek wszystko"];
for name,value in pairs(args.tabela)do
local wzor=wzor_temp and wzor_temp[name] or wzor_wszystko;
local podstawienie=wzor and (podstawienie_temp and podstawienie_temp[name] or podstawienie_wszystko) or nil;
if(wzor and podstawienie)then value=mw.ustring.gsub(value,wzor,podstawienie);end;
local wzor2=wzor2_temp and wzor2_temp[name] or wzor_wszystko_2;
if(wzor2)then value=mw.ustring.match(value,wzor2);end;
if(value)then
local przedrostek=przedrostek_temp and przedrostek_temp[name] or przedrostek_wszystko;
local przyrostek=przyrostek_temp and przyrostek_temp[name] or przyrostek_wszystko;
args2[name]=(przedrostek or '')..value..(przyrostek or '');
end;
end;
return args2;
end;
p["KopiujTabelęElementów"]=function(tabelka,wliczac_1,wliczac_2)
local czy_tylko_niepuste_wliczac_1=p.CzyTak(wliczac_1);
local czy_tylko_niepuste_wliczac_2=p.CzyTak(wliczac_2);
local tabelka2={};
for name,value in pairs(tabelka)do
if(((not czy_tylko_niepuste_wliczac_1)or((czy_tylko_niepuste_wliczac_1)and(p.CzyTak(name))))and((not czy_tylko_niepuste_wliczac_2)or((czy_tylko_niepuste_wliczac_2)and(p.CzyTak(value)))))then
tabelka2[name]=value;
end;
end;
return tabelka2;
end;
p["KopiujTabelęElementówBezTablicyKluczy"]=function(tabelka,tabelka2,wliczac_1,wliczac_2)
local czy_tylko_niepuste_wliczac_1=p.CzyTak(wliczac_1);
local czy_tylko_niepuste_wliczac_2=p.CzyTak(wliczac_2);
local tabelka3={};
for name,value in pairs(tabelka)do
if(((not czy_tylko_niepuste_wliczac_1)or((czy_tylko_niepuste_wliczac_1)and(p.CzyTak(name))))and((not czy_tylko_niepuste_wliczac_2)or((czy_tylko_niepuste_wliczac_2)and(p.CzyTak(value)))))then
local czy=p.CzyJestTakiKluczTabeli(tabelka2,name);
if(not czy)then
tabelka3[name]=value;
end;
end;
end;
return tabelka3;
end;
p["KopiujRekurencyjnieTabelęElementów"]=function(tabelka,wliczac_1,wliczac_2)
local czy_tylko_niepuste_wliczac_1=p.CzyTak(wliczac_1);
local czy_tylko_niepuste_wliczac_2=p.CzyTak(wliczac_2);
local szablonowe_potrzebne_modul=require("Module:Szablonowe/Potrzebne");
local szablonowe_modul=require("Module:Szablonowe");
local kopiuj_metatable=function(value,funkcja,funkcja2)
local __metatabelka=getmetatable(value);
if(__metatabelka)then
if(__metatabelka.KopiujMetaTabela)then
__metatabelka.KopiujMetaTabela(value,funkcja,funkcja2)
else
funkcja(value,true);
end;
else
funkcja(value,true);
end;
end;
local function kopiuj(tabelka,tabelka_nowa)
local tabelka2=tabelka_nowa or {};
for name,value in pairs(tabelka)do
if(((not czy_tylko_niepuste_wliczac_1)or((czy_tylko_niepuste_wliczac_1)and(p.CzyTak(name))))and((not czy_tylko_niepuste_wliczac_2)or((czy_tylko_niepuste_wliczac_2)and(p.CzyTak(value)))))then
if(type(value)=="table")then
kopiuj_metatable(value,function(value,jak)
if(jak)then
tabelka2[name]=kopiuj(value);
else
tabelka2[name]=value;
end;
end,kopiuj);
else
tabelka2[name]=value;
end;
end;
end;
return tabelka2;
end;
local tabela_kopiuj={};
kopiuj_metatable(tabelka,function(value,jak)
if(jak)then
tabela_kopiuj=kopiuj(value);
else
tabela_kopiuj=value;
end;
end,kopiuj);
return tabela_kopiuj;
end;
p["NazwanyLiczbą"] = function(frame)
local pf=frame:getParent()
local numer_parametru=frame.args[1]
if(numer_parametru)then
numer_parametru=tonumber(numer_parametru);
if(numer_parametru and pf.args[numer_parametru])then
return "tak"
end
end;
return;
end
p["NazwanyCiągiem"] = function (frame)
local pf=frame:getParent()
local klucz_parametru=frame.args[1]
if(klucz_parametru)then
local klucz_parametru_do_liczby=tonumber(klucz_parametru);
if((not klucz_parametru_do_liczby)and(pf.args[klucz_parametru]))then
return "tak"
end
end;
return;
end;
function p.Nazwane(frame)
local pf = frame:getParent()
for _, nazwa_parametru in ipairs(frame.args)do
local wartosc_parametru_nazwanego=pf.args[mw.text.trim(nazwa_parametru)]
if(wartosc_parametru_nazwanego)then return "tak" end
end
return;
end
function p.Nienazwane(frame)
local pf = frame:getParent()
for _, wartosc_parametru in ipairs(frame.args)do
wartosc_parametru=mw.text.trim(wartosc_parametru)
for name, wartosc_parametru2 in pairs(pf.args) do
if(type(name)=="number")then
if(mw.text.trim(wartosc_parametru2)==wartosc_parametru)then
return "tak"
end
end;
end
end
return;
end
function p.Numerowane(frame)
local pf = frame:getParent()
for _, wartosc_parametru in ipairs(frame.args)do
wartosc_parametru=mw.text.trim(wartosc_parametru)
for _, wartosc_parametru2 in ipairs(pf.args) do
if(mw.text.trim(wartosc_parametru2)==wartosc_parametru)then
return "tak"
end
end
end
return;
end
p["Odstępy"] = function(frame)
local PobierzParametr=p.PobierzParametr(frame);
local nazwa=PobierzParametr(1) or PobierzParametr("nazwa");
local czy=PobierzParametr(2) or PobierzParametr("wewnątrz");
local dolny_myslnik=PobierzParametr(3) or PobierzParametr("dolny-myślnik");
local odstep_spacje=PobierzParametr(4) or PobierzParametr("spacje");
if(not p.CzyTak(nazwa))then return nazwa;end;
local m_=(p.CzyTak(odstep_spacje) and "" or "_");
nazwa=mw.ustring.gsub(nazwa,"^[%s"..m_.."]+","");
nazwa=mw.ustring.gsub(nazwa,"[%s"..m_.."]+$","")
if(p.CzyTak(czy))then
nazwa=mw.ustring.gsub(nazwa,"[%s"..m_.."]+",(p.CzyTak(dolny_myslnik) and "_" or " "));
end;
return nazwa;
end;
function p.DodajElementDoZbioru(tabela,wartosc)
if(wartosc==nil)then return; end;
if(type(tabela)~="table")then return;end;
for _,element_tabeli in pairs(tabela)do
if(element_tabeli==wartosc)then
return false;
end;
end;
table.insert(tabela,wartosc);
return true;
end;
function p.CzyJestTakiElementNumerowanyTabeli(tabela,wartosc)
if(wartosc==nil)then return;end;
if(type(tabela)~="table")then return;end;
for _, element_tabeli in ipairs(tabela)do
if(element_tabeli==wartosc)then
return true;
end;
end;
return false;
end;
function p.CzyJestTakiElementNienazwanyTabeli(tabela,wartosc)
if(wartosc==nil)then return;end;
if(type(tabela)~="table")then return;end;
for name,value in pairs(tabela)do
if(type(name)=="number")then
if(value==wartosc)then
return true;
end;
end;
end;
return false;
end;
function p.CzyJestTakiKluczTabeli(tabela,klucz)
if(klucz==nil)then return;end;
if(type(tabela)~="table")then return;end;
local wartosc=tabela[klucz];
if(wartosc~=nil)then return true;end;
return false;
end;
function p.CzyJestTakiElementTabeli(tabela,klucz,wartosc)
if((klucz==nil)or(wartosc==nil))then return;end;
if(type(tabela)~="table")then return;end;
for __klucz, __wartosc in pairs(tabela)do
if((__klucz==klucz)and(__wartosc==wartosc))then
return true;
end;
end;
return false;
end;
p["ŁączDwieTabele"] = function (tabelka1,tabelka2)
local parametry_modul=require("Module:Parametry");
return (tabelka2 and parametry_modul["CzySąElementyTablicy"](tabelka2))
and ((tabelka1 and parametry_modul["CzySąElementyTablicy"](tabelka1))
and parametry_modul["ŁączNumerowaneTabele"]{[1]=tabelka1,[2]=tabelka2,}
or tabelka2)
or tabelka1;
end;
p["ŁączZbioryElementówNumerowanychDwóchTabel"]=function(tabelka1,tabelka2)
local parametry_modul=require("Module:Parametry");
return (tabelka1 and parametry_modul["CzySąElementyNumerowaneTablicy"](tabelka1))and ((tabelka2 and parametry_modul["CzySąElementyNumerowaneTablicy"](tabelka2))and parametry_modul["ŁączZbioryNumerowanychElementówNumerowanychTabel"]{[1]=tabelka1,[2]=tabelka2} or tabelka1) or tabelka2;
end;
p["ŁączZbioryElementówNienazwanychDwóchTabel"]=function(tabelka1,tabelka2)
local parametry_modul=require("Module:Parametry");
return (tabelka1 and parametry_modul["CzySąElementyNienazwaneTablicy"](tabelka1))and ((tabelka2 and parametry_modul["CzySąElementyNienazwaneTablicy"](tabelka2))and parametry_modul["ŁączZbioryNienazwanychElementówNumerowanychTabel"]{[1]=tabelka1,[2]=tabelka2} or tabelka1) or tabelka2;
end;
p["ŁączZbioryElementówNazwanychDwóchTabel"]=function(tabelka1,tabelka2)
local parametry_modul=require("Module:Parametry");
return (tabelka1 and parametry_modul["CzySąElementyNazwaneTablicy"](tabelka1))and ((tabelka2 and parametry_modul["CzySąElementyNazwaneTablicy"](tabelka2))and parametry_modul["ŁączZbioryNazwanychElementówNumerowanychTabel"]{[1]=tabelka1,[2]=tabelka2} or tabelka1) or tabelka2;
end;
p["ŁączZbioryNumerowanychElementówNienazwanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=false,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,};
return parametry_modul["ŁączTabele"](args,args2);
end;
p["ŁączZbioryNienazwanychElementówNienazwanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,};
return parametry_modul["ŁączTabele"](args,args2);
end;
p["ŁączZbioryNazwanychElementówNienazwanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=true,};
return parametry_modul["ŁączTabele"](args,args2);
end;
p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=false,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,};
return parametry_modul["ŁączTabele"](args,args2);
end;
p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,};
return parametry_modul["ŁączTabele"](args,args2);
end;
p["ŁączZbioryNazwanychElementówNumerowanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=true,};
return parametry_modul["ŁączTabele"](args,args2);
end;
p["ŁączNumerowaneTabele"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=false,NazwijElementyNumerowane=true,};
return parametry_modul["ŁączTabele"](args,args2);
end;
p["ŁączNienazwaneTabele"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=false,NazwijElementyNumerowane=true,};
return parametry_modul["ŁączTabele"](args,args2);
end;
p["ŁączTabele"] = function(args,args2)
local tabela={};
local par1=(args2.CzyPairsTablic)and pairs or ipairs;
local czy_number_nie_tylko_tablic=(not args2.CzyPairsTablic)and true or false;
local par2=(args2["CzyPairsElementówTablic"])and pairs or ipairs;
local czy_number_nie_tylko_elementow_tablic=(not args2["CzyPairsElementówTablic"])and true or false;
local czy_nazwane=(args2.CzyNazwaneElementyTabel)and true or false;
local czy_nie_tylko_nazwane=(not args2.CzyTylkoNazwaneElementyTabel)and true or false;
local nazwij_elementy_numerowane=(args2.NazwijElementyNumerowane) and true or false;
for licznik, args_tabeli in par1(args)do
if(((czy_number_nie_tylko_tablic)or(type(licznik)=="number"))and(type(args_tabeli)=="table"))then
for name,value in par2(args_tabeli)do
if((czy_nie_tylko_nazwane)and((czy_number_nie_tylko_elementow_tablic)or(type(name)=="number")))then
if(nazwij_elementy_numerowane)then
if(not tabela[name])then tabela[name]=value;end;
else
table.insert(tabela,value);
end;
elseif((czy_nazwane)and(czy_nie_tylko_nazwane or ((not czy_nie_tylko_nazwane)and(type(name)~="number"))))then
if(not tabela[name])then tabela[name]=value;end;
end;
end;
end;
end;
return tabela;
end;
p["UsuńElementyTabeli"]=function(tabelka_1,tabelka_2)
if(not tabelka_1)then return nil;end;
if(not tabelka_2)then return tabelka_1;end;
for name,_ in pairs(tabelka_1)do
if(tabelka_2[name]~=nil)then
tabelka_1[name]=nil;
end;
end;
return tabelka_1;
end;
p["TwórzTabelęBezPowtarzającychKluczyTabel"]=function(args)
local tabela_poczatkowa=args[1];
local tabela={};
local lens=#args;
for name,value in pairs(tabela_poczatkowa)do
local yes=false;
for i=2,lens,1 do
if(args[i][name]~=nil)then
yes=true;
break;
end;
end;
if(not yes)then
tabela[name]=value;
end;
end;
return tabela;
end;
function p.TypeTable(zmienna)
return (type(zmienna)=="table");
end;
function p.TypeFunction(zmienna)
return (type(zmienna)=="function");
end;
function p.TypeString(zmienna)
return (type(zmienna)=="string");
end;
function p.TypeBoolean(zmienna)
return (type(zmienna)=="boolean");
end;
function p.TypeNumber(zmienna)
return (type(zmienna)=="number");
end;
function p.TypeNil(zmienna)
return (zmienna==nil);
end;
local function CzyTakSilnik(args,funkcja)
local parametry_modul=require("Module:Parametry");
local parametr=p.CzyTak(args[2]) and require("Module:"..args[2])[args[1]] or args[1];
local argsfun;
if(p.CzyTak(args[2]))then
for name,value in pairs(args)do
local typen=(type(name)=="number");
if(((typen)and((name~=1)and(name~=2)))or(not typen))then
if(not argsfun)then argsfun={};end;
argsfun[(typen and name>2) and (name-2) or name]=value;
end;
end;
else
parametr=tonumber(parametr) or parametr;
if(type(parametr)=="string")then
local parametr2=parametry_modul["Odstępy"](parametr);
if(parametr2=="true")then
parametr=true;
elseif(parametr2=="false")then
parametr=false;
elseif(parametr2=="nil")then
parametr=nil;
else
parametr=tonumber(parametr2) or parametr;
end;
end;
end;
return (parametry_modul[funkcja]{[1]=parametr,[2]=argsfun,})and "tak" or nil;
end;
p["CzyTakCiąg"]=function(...)
local frame_parametry={...};
local frame=(#frame_parametry>1)and frame_parametry or frame_parametry[1];
local czy_table=p.TypeTable(frame);
if((czy_table and (not frame.getParent)) or (not czy_table))then
local PobierzParametr=p.PobierzParametr(frame);
local ciag=PobierzParametr("ciąg") or PobierzParametr(1);
local parametry=PobierzParametr("parametry") or PobierzParametr(2);
local parametry_modul=require("Module:Parametry");
return ciag and p.CzyTak{[1]=(p.TypeString(ciag) and parametry_modul["Odstępy"]{[1]=ciag,[2]="tak",} or ciag),[2]=parametry,} or false;
else
local args=p.PobierzArgsParametry(frame);
return CzyTakSilnik(args,"CzyTakCiąg");
end;
end;
function p.CzyTak(...)
local frame_parametry={...};
local frame=(#frame_parametry>1)and frame_parametry or frame_parametry[1];
local czy_table=p.TypeTable(frame);
if((czy_table and (not frame.getParent)) or (not czy_table))then
local PobierzParametr=p.PobierzParametr(frame);
local zmienna;local parametry;
if(czy_table)then
local zmienna_temp=PobierzParametr("zmienna") or PobierzParametr(1);
zmienna=zmienna_temp or frame;
parametry=zmienna_temp and (PobierzParametr("parametry") or PobierzParametr(2)) or nil;
else
zmienna=frame;
parametry=nil;
end;
if(zmienna~=nil)then
if(p.TypeString(zmienna))then
if(zmienna~="")then
return "tak";
else
return nil;
end;
elseif(p.TypeNumber(zmienna))then
if(zmienna~=0)then
return "tak";
else
return nil;
end;
elseif(p.TypeBoolean(zmienna))then
return (zmienna and "tak" or nil);
elseif(p.TypeTable(zmienna))then
local parametry_modul=require("Module:Parametry");
return (parametry_modul["CzySąElementyTablicy"](zmienna) and "tak" or nil);
elseif(p.TypeFunction(zmienna))then
return (zmienna(parametry) and "tak" or nil);
else
return nil;
end;
else
return nil;
end;
else
local args=p.PobierzArgsParametry(frame);
return CzyTakSilnik(args,"CzyTak");
end;
end;
function p.PobierzFrameEwentualnieParent(frame)
return (frame.getParent and (p.CzyTak(frame.args["wyspecjalizowana"]) and frame or frame:getParent()) or frame);
end;
function p.PobierzArgsParametry(frame, czy_nie_tablica_jako_tablica)
local TempFunc=function(frame)
local pf=p.PobierzFrameEwentualnieParent(frame);
local args=pf.args;
if(p.TypeTable(args))then
return args;
else
return nil;
end;
end;
if(not p.TypeNil(frame))then
return p.TypeTable(frame) and (TempFunc(frame) or frame) or ((czy_nie_tablica_jako_tablica)and {frame,} or frame);
else
return {};
end;
end;
function p.PobierzParametryRamki(frame)
local TempFun1=function(tablica)
return function(nazwa)
return tablica[nazwa];
end;
end;
local TempFun2=function(wartosc)
local tak=true;
return function(nazwa)
if(tak)then
tak=false;
return wartosc;
end;
return nil;
end;
end;
local tablica_parametrow_ramki=p.TypeTable(frame) and (p.TypeTable(frame.args) and TempFun1(frame.args) or TempFun1(frame)) or TempFun2(frame);
return function(nazwa)
return tablica_parametrow_ramki(nazwa);
end;
end;
function p.PobierzElementNumerowanyZFrameLubTablicy(frame)
local tablica_parametrow_funkcji=p.TypeTable(frame[1]) and p.TypeTable(frame[1].args)and frame[1].args or frame;
return function(nazwa)
local wartosc=tablica_parametrow_funkcji[nazwa];
return wartosc;
end;
end;
function p.PobierzParametr(frame,czy_frame_lub_parent,czy_frame)
local __pobierz_parametr_table_args=nil;
if(not p.TypeNil(frame))then
if(p.TypeTable(frame))then
local tak_frame_lub_parent=p.CzyTak(czy_frame_lub_parent);
if((not tak_frame_lub_parent)or(not frame.getParent))then
local __pobierz_parametr_table_args_temp=p.CzyTak(czy_frame) and frame.args or p.PobierzArgsParametry(frame);
__pobierz_parametr_table_args=function(nazwa)
return __pobierz_parametr_table_args_temp[nazwa or 1],1;
end;
elseif(tak_frame_lub_parent)then
local pf=(frame.getParent)and frame:getParent() or nil;
__pobierz_parametr_table_args=function(nazwa)
local wartosc=frame.args[nazwa or 1] or (pf and pf.args[nazwa or 1] or nil);
return wartosc,2;
end;
end;
else
local tak=true;
__pobierz_parametr_table_args=function(nazwa)
if(tak)then
tak=false;
return frame,0;
end;
return nil,0;
end;
end;
else
__pobierz_parametr_table_args=function(nazwa)
return nil,0;
end;
end;
return function(nazwa)
return __pobierz_parametr_table_args(nazwa);
end;
end;
function p.And(frame)
local czy="tak";
local parametry_modul=require("Module:Parametry");
local wartosc_uzyskana=nil;
for _,wartosc in ipairs(frame.args)do
czy=czy and parametry_modul["CzyTakCiąg"](wartosc);
if(not czy)then return nil;end;
wartosc_uzyskana=wartosc;
end;
return czy and wartosc_uzyskana or nil;
end;
function p.Or(frame)
local czy=nil;
for _,wartosc in ipairs(frame.args)do
czy=czy or p["CzyTakCiąg"](wartosc);
if(czy)then return wartosc;end;
end;
return nil;
end;
function p.Not(frame)
local parametry_modul=require("Module:Parametry");
return (not parametry_modul["CzyTakCiąg"](frame.args[1]))and "tak" or nil;
end;
function p.Mniejszy(frame)
local wyraz1=tonumber(frame.args[1]) or 0;
local wyraz2=tonumber(frame.args[2]) or 0;
if(wyraz1<wyraz2)then
return "tak";
end;
return;
end;
function p.IlePodano(frame)
local args=frame.args;
local args2=frame:getParent().args;
local licznik=0;
for _,name in pairs(args)do
if(args2[name])then
licznik=licznik+1;
end;
end;
return licznik;
end;
p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter={};
function p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter.__index(t,klucz)
local html_modul=require("Module:Html");
klucz=html_modul.DecodeKoduHTMLZnaku(klucz);
klucz=p["Odstępy"]{[1]=klucz,[2]="tak",};
klucz=mw.ustring.lower(klucz);
return rawget(t,klucz);
end;
function p.IteratorPoNumerowanychElementachTablicy(t)
local i=1;
return function()
local v=t[i];
if(v~=nil)then i=i+1;end;
return v;
end;
end;
p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu=function(tabela,funkcja)
local keys={};
for name,_ in next,tabela do
table.insert(keys,name);
end;
table.sort(keys,funkcja);
return function(tablica,klucz)
if(klucz==nil)then return keys[1];end;
for k,_ in ipairs(keys)do
if(keys[k]==klucz)then
return keys[k+1];
end;
end;
end;
end;
function p.Max(...)
local frame={...};
local PobierzElement=p.PobierzElementNumerowanyZFrameLubTablicy(frame);
local parametr1=tonumber(PobierzElement(1));
local parametr2=tonumber(PobierzElement(2));
return math.max(parametr1,parametr2);
end;
function p.Min(...)
local frame={...};
local PobierzElement=p.PobierzElementNumerowanyZFrameLubTablicy(frame);
local parametr1=tonumber(PobierzElement(1));
local parametr2=tonumber(PobierzElement(2));
return math.min(parametr1,parametr2);
end;
return p;
dupqvfl1xg41xe2f8ba7vym6dvan7rq
553330
553329
2026-08-27T09:24:48Z
Persino
2851
553330
Scribunto
text/plain
local p={};
p["LiczbaElementówNumerowanychTablicy"]=function(tabela, niepuste_wliczac,mnoga)
local liczba_elementow_ponumerowanych_w_tablicy=0;
local czy_tylko_niepuste_wliczac=p.CzyTak(niepuste_wliczac);
local czy_mnoga=p.CzyTak(mnoga);
for _1,_2 in ipairs(tabela)do
if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(p.CzyTak(_2))))then
liczba_elementow_ponumerowanych_w_tablicy=liczba_elementow_ponumerowanych_w_tablicy+1;
if((czy_mnoga)and(liczba_elementow_ponumerowanych_w_tablicy>1))then return liczba_elementow_ponumerowanych_w_tablicy;end;
end;
end;
return liczba_elementow_ponumerowanych_w_tablicy;
end;
p["LiczbaElementówNumerowanychSzablonu"]=function(frame)
local parametry_modul=require("Module:Parametry");
return parametry_modul["LiczbaElementówNumerowanychTablicy"](frame:getParent().args,frame.args["niepuste"],frame.args["mnoga"]);
end;
p["LiczbaElementówNienazwanychTablicy"] = function(tabela,niepuste_wliczac,mnoga)
local czy_tylko_niepuste_wliczac=p.CzyTak(niepuste_wliczac);
local czy_mnoga=p.CzyTak(mnoga);
local liczba_elementow_nienazwanych_w_tablicy=0;
for _1,_2 in pairs(tabela)do
if(type(_1)=="number")then
if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(p.CzyTak(_2))))then
liczba_elementow_nienazwanych_w_tablicy=liczba_elementow_nienazwanych_w_tablicy+1;
if((czy_mnoga)and(liczba_elementow_nienazwanych_w_tablicy>1))then return liczba_elementow_nienazwanych_w_tablicy;end;
end;
end;
end;
return liczba_elementow_nienazwanych_w_tablicy;
end;
p["LiczbaParametrówNienazwanychSzablonu"] = function (frame)
return p["LiczbaElementówNienazwanychTablicy"](frame:getParent().args,frame.args["niepuste"],frame.args["mnoga"])
end;
p["LiczbaElementówTablicy"]=function(tabela,niepuste_wliczac)
local czy_tylko_niepuste_wliczac=p.CzyTak(niepuste_wliczac);
local liczba_elementow_w_tablicy=0;
for _1,_2 in pairs(tabela)do
if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(p.CzyTak(_2))))then
liczba_elementow_w_tablicy=liczba_elementow_w_tablicy+1;
end;
end;
return liczba_elementow_w_tablicy;
end;
p["LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy"]=function(tabela,przedrostek,niepuste_wliczac,czy_formy_numerkowe)
local czy_tylko_niepuste_wliczac=p.CzyTak(niepuste_wliczac);
local liczba_elementow_w_tablicy=0;
local techniczne_modul=require("Module:Techniczne");
local wzor="^"..techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](przedrostek).."(%d+)$";
for _1,_2 in pairs(tabela)do
local string_liczba=tonumber(_1) or nil;
local czy_liczba=((string_liczba)and(czy_formy_numerkowe or p.TypeNumber(_1))and(string_liczba>0));
local zmienna=czy_liczba and przedrostek.._1 or nil;
local element=(czy_liczba and tabela[zmienna] or nil)
or (czy_liczba
and tabela[_1]
or (mw.ustring.match(tostring(_1),wzor) and tabela[_1] or nil)
);
if(element)then
if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(element~="")))then
liczba_elementow_w_tablicy=liczba_elementow_w_tablicy+1;
end;
end;
end;
return liczba_elementow_w_tablicy;
end;
function p.MaksymalnaLiczbaParametruNienazwanegoSzablonu(frame)
return p.MaksymalnaLiczbaParametruNienazwanegoTablicy(frame:getParent().args,frame.args["niepuste"]);
end;
function p.MaksymalnaLiczbaParametruNienazwanegoTablicy(tabela, niepuste_wliczac)
local czy_tylko_niepuste_wliczac=p.CzyTak(niepuste_wliczac);
local liczba_elementow_ponumerowanych_w_tablicy=0;
for _1,_2 in pairs(tabela)do
if(type(_1)=="number")then
if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(p.CzyTak(_2))))then
liczba_elementow_ponumerowanych_w_tablicy=math.max(liczba_elementow_ponumerowanych_w_tablicy,_1);
end;
end;
end;
return (liczba_elementow_ponumerowanych_w_tablicy)and liczba_elementow_ponumerowanych_w_tablicy or 0;
end;
function p.MinimalnaLiczbaParametruNienazwanegoSzablonu(frame)
return p.MinimalnaLiczbaParametruNienazwanegoTablicy(frame:getParent().args,frame.args["niepuste"]);
end;
function p.MinimalnaLiczbaParametruNienazwanegoTablicy(tabela,niepuste_wliczac)
local czy_tylko_niepuste_wliczac=p.CzyTak(niepuste_wliczac);
local liczba_elementow_ponumerowanych_w_tablicy;
for _1,_2 in pairs(tabela)do
if(type(_1)=="number")then
if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(p.CzyTak(_2))))then
if(not liczba_elementow_ponumerowanych_w_tablicy)then
liczba_elementow_ponumerowanych_w_tablicy=_1;
else
liczba_elementow_ponumerowanych_w_tablicy=math.min(liczba_elementow_ponumerowanych_w_tablicy,_1);
end;
end;
end;
end;
return (liczba_elementow_ponumerowanych_w_tablicy)and liczba_elementow_ponumerowanych_w_tablicy or 1;
end;
function p.MinimalnyIMaksymalnyNumerPodstawyParametruTabeli(tabela,podstawa_parametru, czy_od_zera)
local liczba_maksimum=0;
local liczba_minimum;
for nazwa_parametru,wartosc_parametru in pairs(tabela)do
local liczba_z_parametru=mw.ustring.match(nazwa_parametru,"^"..podstawa_parametru.."%s(%d+)$")
if(liczba_z_parametru)then
local liczba=tonumber(liczba_z_parametru) or (czy_od_zera and 0 or 1);
liczba=(liczba>0)and liczba or (czy_od_zera and 0 or 1);
liczba_maksimum=math.max(liczba_maksimum,liczba);
if(not liczba_minimum)then
liczba_minimum=liczba;
else
liczba_minimum=math.min(liczba_minimum,liczba);
end;
elseif(podstawa_parametru==nazwa_parametru)then
liczba_maksimum=math.max(liczba_maksimum,(czy_od_zera and 0 or 1));
if(not liczba_minimum)then
liczba_minimum=czy_od_zera and 0 or 1;
else
liczba_minimum=math.min(liczba_minimum,czy_od_zera and 0 or 1);
end;
end;
end;
if(not liczba_minimum)then liczba_minimum=1;end;
return liczba_minimum,liczba_maksimum;
end;
p["CzySąParametryNumerowaneSzablonu"] = function(frame)
local czy_sa_elementy_tablicy=require("Module:Parametry")["CzySąElementyNumerowaneTablicy"](frame:getParent().args,frame.args["niepuste"]);
if(czy_sa_elementy_tablicy)then return "tak";end;
return;
end;
p["CzySąElementyNumerowaneTablicy"]=function(tabela,niepuste_wliczac)
local czy_tylko_niepuste_wliczac=p.CzyTak(niepuste_wliczac);
for _1,_2 in ipairs(tabela)do
if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(p.CzyTak(_2))))then
return true;
end;
end;
return false;
end;
p["CzySąParametryNienazwaneSzablonu"] = function(frame)
local czy_sa_elementy_tablicy=require("Module:Parametry")["CzySąElementyNienazwaneTablicy"](frame:getParent().args,frame.args["niepuste"]);
if(czy_sa_elementy_tablicy)then return "tak";end;
return;
end;
p["CzySąElementyNienazwaneTablicy"]=function(tabela,niepuste_wliczac)
local czy_tylko_niepuste_wliczac=p.CzyTak(niepuste_wliczac);
for _1,_2 in pairs(tabela)do
if(type(_1)=="number")then
if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(p.CzyTak(_2))))then
return true;
end;
end;
end;
return false;
end;
p["CzySąParametryNazwaneSzablonu"] = function(frame)
local czy_sa_elementy_tablicy=require("Module:Parametry")["CzySąElementyNazwaneTablicy"](frame:getParent().args,frame.args["niepuste"]);
if(czy_sa_elementy_tablicy)then return "tak";end;
return;
end;
p["CzySąElementyNazwaneTablicy"]=function(tabela,niepuste_wliczac)
local czy_tylko_niepuste_wliczac=p.CzyTak(niepuste_wliczac);
for _1,_2 in pairs(tabela)do
if(type(_1)~="number")then
if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(p.CzyTak(_2))))then
return true;
end;
end;
end;
return false;
end;
p["CzySąParametrySzablonu"] = function(frame)
local czy_sa_elementy_tablicy=require("Module:Parametry")["CzySąElementyTablicy"](frame:getParent().args,frame.args["niepuste"]);
if(czy_sa_elementy_tablicy)then return "tak";end;
return;
end;
p["CzySąElementyTablicy"]=function(tabela,niepuste_wliczac)
local czy_tylko_niepuste_wliczac=p.CzyTak(niepuste_wliczac);
for _1,_2 in pairs(tabela)do
if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(p.CzyTak(_2))))then
return true;
end;
end;
return false;
end;
p["CzyCoNajwyżejJedenNumerowanyParametrSzablonu"] = function (frame)
local parametry_modul=require("Module:Parametry");
local czy_jest_taki_element=parametry_modul["CzyCoNajwyżejJedenNumerowanyElementTablicy"](frame:getParent().args,frame.args["niepuste"]);
if(czy_jest_taki_element)then return "tak";end;
end;
p["CzyCoNajwyżejJedenNumerowanyElementTablicy"] = function (args,niepuste_wliczac)
local czy_tylko_niepuste_wliczac=p.CzyTak(niepuste_wliczac);
local i=1;
local czy=false;
for _1,_2 in pairs(args)do
if(type(_1)=="number")then
if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(p.CzyTak(_2))))then
if(_1==1)then czy=true;end;
if(i>1)then
return false;
else
i=i+1;
end;
end;
end;
end;
if((czy)or(i==1))then return true;end;
return false;
end;
p["KopiujTabelęŁańcuchów"]=function(args)
local args2={};
local wzor_temp=args["wzór"];local wzor_wszystko=args["wzór wszystko"];
local podstawienie_temp=args.podstawienie;local podstawienie_wszystko=args["podstawienie wszystko"];
local wzor2_temp=args["wzór 2"];local wzor_wszystko_2=args["wzór wszystko 2"];
local przedrostek_temp=args.przedrostek;local przedrostek_wszystko=args["przedrostek wszystko"];
local przyrostek_temp=args.przyrostek;local przyrostek_wszystko=args["przyrostek wszystko"];
for name,value in pairs(args.tabela)do
local wzor=wzor_temp and wzor_temp[name] or wzor_wszystko;
local podstawienie=wzor and (podstawienie_temp and podstawienie_temp[name] or podstawienie_wszystko) or nil;
if(wzor and podstawienie)then value=mw.ustring.gsub(value,wzor,podstawienie);end;
local wzor2=wzor2_temp and wzor2_temp[name] or wzor_wszystko_2;
if(wzor2)then value=mw.ustring.match(value,wzor2);end;
if(value)then
local przedrostek=przedrostek_temp and przedrostek_temp[name] or przedrostek_wszystko;
local przyrostek=przyrostek_temp and przyrostek_temp[name] or przyrostek_wszystko;
args2[name]=(przedrostek or '')..value..(przyrostek or '');
end;
end;
return args2;
end;
p["KopiujTabelęElementów"]=function(tabelka,niepuste_wliczac_nazwy,niepuste_wliczac_wartosci)
local czy_tylko_niepuste_wliczac_nazwy=p.CzyTak(niepuste_wliczac_nazwy);
local czy_tylko_niepuste_wliczac_wartosci=p.CzyTak(niepuste_wliczac_wartosci);
local tabelka2={};
for name,value in pairs(tabelka)do
if(((not czy_tylko_niepuste_wliczac_nazwy)or((czy_tylko_niepuste_wliczac_nazwy)and(p.CzyTak(name))))and((not czy_tylko_niepuste_wliczac_wartosci)or((czy_tylko_niepuste_wliczac_wartosci)and(p.CzyTak(value)))))then
tabelka2[name]=value;
end;
end;
return tabelka2;
end;
p["KopiujTabelęElementówBezTablicyKluczy"]=function(tabelka,tabelka2,niepuste_wliczac_nazwy,niepuste_wliczac_wartosci)
local czy_tylko_niepuste_wliczac_nazwy=p.CzyTak(niepuste_wliczac_nazwy);
local czy_tylko_niepuste_wliczac_wartosci=p.CzyTak(niepuste_wliczac_wartosci);
local tabelka3={};
for name,value in pairs(tabelka)do
if(((not czy_tylko_niepuste_wliczac_nazwy)or((czy_tylko_niepuste_wliczac_nazwy)and(p.CzyTak(name))))and((not czy_tylko_niepuste_wliczac_wartosci)or((czy_tylko_niepuste_wliczac_wartosci)and(p.CzyTak(value)))))then
local czy=p.CzyJestTakiKluczTabeli(tabelka2,name);
if(not czy)then
tabelka3[name]=value;
end;
end;
end;
return tabelka3;
end;
p["KopiujRekurencyjnieTabelęElementów"]=function(tabelka,niepuste_wliczac_nazwy,niepuste_wliczac_wartosci)
local czy_tylko_niepuste_wliczac_nazwy=p.CzyTak(niepuste_wliczac_nazwy);
local czy_tylko_niepuste_wliczac_wartosci=p.CzyTak(niepuste_wliczac_wartosci);
local szablonowe_potrzebne_modul=require("Module:Szablonowe/Potrzebne");
local szablonowe_modul=require("Module:Szablonowe");
local kopiuj_metatable=function(value,funkcja,funkcja2)
local __metatabelka=getmetatable(value);
if(__metatabelka)then
if(__metatabelka.KopiujMetaTabela)then
__metatabelka.KopiujMetaTabela(value,funkcja,funkcja2)
else
funkcja(value,true);
end;
else
funkcja(value,true);
end;
end;
local function kopiuj(tabelka,tabelka_nowa)
local tabelka2=tabelka_nowa or {};
for name,value in pairs(tabelka)do
if(((not czy_tylko_niepuste_wliczac_nazwy)or((czy_tylko_niepuste_wliczac_nazwy)and(p.CzyTak(name))))and((not czy_tylko_niepuste_wliczac_wartosci)or((czy_tylko_niepuste_wliczac_wartosci)and(p.CzyTak(value)))))then
if(type(value)=="table")then
kopiuj_metatable(value,function(value,jak)
if(jak)then
tabelka2[name]=kopiuj(value);
else
tabelka2[name]=value;
end;
end,kopiuj);
else
tabelka2[name]=value;
end;
end;
end;
return tabelka2;
end;
local tabela_kopiuj={};
kopiuj_metatable(tabelka,function(value,jak)
if(jak)then
tabela_kopiuj=kopiuj(value);
else
tabela_kopiuj=value;
end;
end,kopiuj);
return tabela_kopiuj;
end;
p["NazwanyLiczbą"] = function(frame)
local pf=frame:getParent()
local numer_parametru=frame.args[1]
if(numer_parametru)then
numer_parametru=tonumber(numer_parametru);
if(numer_parametru and pf.args[numer_parametru])then
return "tak"
end
end;
return;
end
p["NazwanyCiągiem"] = function (frame)
local pf=frame:getParent()
local klucz_parametru=frame.args[1]
if(klucz_parametru)then
local klucz_parametru_do_liczby=tonumber(klucz_parametru);
if((not klucz_parametru_do_liczby)and(pf.args[klucz_parametru]))then
return "tak"
end
end;
return;
end;
function p.Nazwane(frame)
local pf = frame:getParent()
for _, nazwa_parametru in ipairs(frame.args)do
local wartosc_parametru_nazwanego=pf.args[mw.text.trim(nazwa_parametru)]
if(wartosc_parametru_nazwanego)then return "tak" end
end
return;
end
function p.Nienazwane(frame)
local pf = frame:getParent()
for _, wartosc_parametru in ipairs(frame.args)do
wartosc_parametru=mw.text.trim(wartosc_parametru)
for name, wartosc_parametru2 in pairs(pf.args) do
if(type(name)=="number")then
if(mw.text.trim(wartosc_parametru2)==wartosc_parametru)then
return "tak"
end
end;
end
end
return;
end
function p.Numerowane(frame)
local pf = frame:getParent()
for _, wartosc_parametru in ipairs(frame.args)do
wartosc_parametru=mw.text.trim(wartosc_parametru)
for _, wartosc_parametru2 in ipairs(pf.args) do
if(mw.text.trim(wartosc_parametru2)==wartosc_parametru)then
return "tak"
end
end
end
return;
end
p["Odstępy"] = function(frame)
local PobierzParametr=p.PobierzParametr(frame);
local nazwa=PobierzParametr(1) or PobierzParametr("nazwa");
local czy=PobierzParametr(2) or PobierzParametr("wewnątrz");
local dolny_myslnik=PobierzParametr(3) or PobierzParametr("dolny-myślnik");
local odstep_spacje=PobierzParametr(4) or PobierzParametr("spacje");
if(not p.CzyTak(nazwa))then return nazwa;end;
local m_=(p.CzyTak(odstep_spacje) and "" or "_");
nazwa=mw.ustring.gsub(nazwa,"^[%s"..m_.."]+","");
nazwa=mw.ustring.gsub(nazwa,"[%s"..m_.."]+$","")
if(p.CzyTak(czy))then
nazwa=mw.ustring.gsub(nazwa,"[%s"..m_.."]+",(p.CzyTak(dolny_myslnik) and "_" or " "));
end;
return nazwa;
end;
function p.DodajElementDoZbioru(tabela,wartosc)
if(wartosc==nil)then return; end;
if(type(tabela)~="table")then return;end;
for _,element_tabeli in pairs(tabela)do
if(element_tabeli==wartosc)then
return false;
end;
end;
table.insert(tabela,wartosc);
return true;
end;
function p.CzyJestTakiElementNumerowanyTabeli(tabela,wartosc)
if(wartosc==nil)then return;end;
if(type(tabela)~="table")then return;end;
for _, element_tabeli in ipairs(tabela)do
if(element_tabeli==wartosc)then
return true;
end;
end;
return false;
end;
function p.CzyJestTakiElementNienazwanyTabeli(tabela,wartosc)
if(wartosc==nil)then return;end;
if(type(tabela)~="table")then return;end;
for name,value in pairs(tabela)do
if(type(name)=="number")then
if(value==wartosc)then
return true;
end;
end;
end;
return false;
end;
function p.CzyJestTakiKluczTabeli(tabela,klucz)
if(klucz==nil)then return;end;
if(type(tabela)~="table")then return;end;
local wartosc=tabela[klucz];
if(wartosc~=nil)then return true;end;
return false;
end;
function p.CzyJestTakiElementTabeli(tabela,klucz,wartosc)
if((klucz==nil)or(wartosc==nil))then return;end;
if(type(tabela)~="table")then return;end;
for __klucz, __wartosc in pairs(tabela)do
if((__klucz==klucz)and(__wartosc==wartosc))then
return true;
end;
end;
return false;
end;
p["ŁączDwieTabele"] = function (tabelka1,tabelka2)
local parametry_modul=require("Module:Parametry");
return (tabelka2 and parametry_modul["CzySąElementyTablicy"](tabelka2))
and ((tabelka1 and parametry_modul["CzySąElementyTablicy"](tabelka1))
and parametry_modul["ŁączNumerowaneTabele"]{[1]=tabelka1,[2]=tabelka2,}
or tabelka2)
or tabelka1;
end;
p["ŁączZbioryElementówNumerowanychDwóchTabel"]=function(tabelka1,tabelka2)
local parametry_modul=require("Module:Parametry");
return (tabelka1 and parametry_modul["CzySąElementyNumerowaneTablicy"](tabelka1))and ((tabelka2 and parametry_modul["CzySąElementyNumerowaneTablicy"](tabelka2))and parametry_modul["ŁączZbioryNumerowanychElementówNumerowanychTabel"]{[1]=tabelka1,[2]=tabelka2} or tabelka1) or tabelka2;
end;
p["ŁączZbioryElementówNienazwanychDwóchTabel"]=function(tabelka1,tabelka2)
local parametry_modul=require("Module:Parametry");
return (tabelka1 and parametry_modul["CzySąElementyNienazwaneTablicy"](tabelka1))and ((tabelka2 and parametry_modul["CzySąElementyNienazwaneTablicy"](tabelka2))and parametry_modul["ŁączZbioryNienazwanychElementówNumerowanychTabel"]{[1]=tabelka1,[2]=tabelka2} or tabelka1) or tabelka2;
end;
p["ŁączZbioryElementówNazwanychDwóchTabel"]=function(tabelka1,tabelka2)
local parametry_modul=require("Module:Parametry");
return (tabelka1 and parametry_modul["CzySąElementyNazwaneTablicy"](tabelka1))and ((tabelka2 and parametry_modul["CzySąElementyNazwaneTablicy"](tabelka2))and parametry_modul["ŁączZbioryNazwanychElementówNumerowanychTabel"]{[1]=tabelka1,[2]=tabelka2} or tabelka1) or tabelka2;
end;
p["ŁączZbioryNumerowanychElementówNienazwanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=false,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,};
return parametry_modul["ŁączTabele"](args,args2);
end;
p["ŁączZbioryNienazwanychElementówNienazwanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,};
return parametry_modul["ŁączTabele"](args,args2);
end;
p["ŁączZbioryNazwanychElementówNienazwanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=true,};
return parametry_modul["ŁączTabele"](args,args2);
end;
p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=false,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,};
return parametry_modul["ŁączTabele"](args,args2);
end;
p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,};
return parametry_modul["ŁączTabele"](args,args2);
end;
p["ŁączZbioryNazwanychElementówNumerowanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=true,};
return parametry_modul["ŁączTabele"](args,args2);
end;
p["ŁączNumerowaneTabele"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=false,NazwijElementyNumerowane=true,};
return parametry_modul["ŁączTabele"](args,args2);
end;
p["ŁączNienazwaneTabele"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=false,NazwijElementyNumerowane=true,};
return parametry_modul["ŁączTabele"](args,args2);
end;
p["ŁączTabele"] = function(args,args2)
local tabela={};
local par1=(args2.CzyPairsTablic)and pairs or ipairs;
local czy_number_nie_tylko_tablic=(not args2.CzyPairsTablic)and true or false;
local par2=(args2["CzyPairsElementówTablic"])and pairs or ipairs;
local czy_number_nie_tylko_elementow_tablic=(not args2["CzyPairsElementówTablic"])and true or false;
local czy_nazwane=(args2.CzyNazwaneElementyTabel)and true or false;
local czy_nie_tylko_nazwane=(not args2.CzyTylkoNazwaneElementyTabel)and true or false;
local nazwij_elementy_numerowane=(args2.NazwijElementyNumerowane) and true or false;
for licznik, args_tabeli in par1(args)do
if(((czy_number_nie_tylko_tablic)or(type(licznik)=="number"))and(type(args_tabeli)=="table"))then
for name,value in par2(args_tabeli)do
if((czy_nie_tylko_nazwane)and((czy_number_nie_tylko_elementow_tablic)or(type(name)=="number")))then
if(nazwij_elementy_numerowane)then
if(not tabela[name])then tabela[name]=value;end;
else
table.insert(tabela,value);
end;
elseif((czy_nazwane)and(czy_nie_tylko_nazwane or ((not czy_nie_tylko_nazwane)and(type(name)~="number"))))then
if(not tabela[name])then tabela[name]=value;end;
end;
end;
end;
end;
return tabela;
end;
p["UsuńElementyTabeli"]=function(tabelka_1,tabelka_2)
if(not tabelka_1)then return nil;end;
if(not tabelka_2)then return tabelka_1;end;
for name,_ in pairs(tabelka_1)do
if(tabelka_2[name]~=nil)then
tabelka_1[name]=nil;
end;
end;
return tabelka_1;
end;
p["TwórzTabelęBezPowtarzającychKluczyTabel"]=function(args)
local tabela_poczatkowa=args[1];
local tabela={};
local lens=#args;
for name,value in pairs(tabela_poczatkowa)do
local yes=false;
for i=2,lens,1 do
if(args[i][name]~=nil)then
yes=true;
break;
end;
end;
if(not yes)then
tabela[name]=value;
end;
end;
return tabela;
end;
function p.TypeTable(zmienna)
return (type(zmienna)=="table");
end;
function p.TypeFunction(zmienna)
return (type(zmienna)=="function");
end;
function p.TypeString(zmienna)
return (type(zmienna)=="string");
end;
function p.TypeBoolean(zmienna)
return (type(zmienna)=="boolean");
end;
function p.TypeNumber(zmienna)
return (type(zmienna)=="number");
end;
function p.TypeNil(zmienna)
return (zmienna==nil);
end;
local function CzyTakSilnik(args,funkcja)
local parametry_modul=require("Module:Parametry");
local parametr=p.CzyTak(args[2]) and require("Module:"..args[2])[args[1]] or args[1];
local argsfun;
if(p.CzyTak(args[2]))then
for name,value in pairs(args)do
local typen=(type(name)=="number");
if(((typen)and((name~=1)and(name~=2)))or(not typen))then
if(not argsfun)then argsfun={};end;
argsfun[(typen and name>2) and (name-2) or name]=value;
end;
end;
else
parametr=tonumber(parametr) or parametr;
if(type(parametr)=="string")then
local parametr2=parametry_modul["Odstępy"](parametr);
if(parametr2=="true")then
parametr=true;
elseif(parametr2=="false")then
parametr=false;
elseif(parametr2=="nil")then
parametr=nil;
else
parametr=tonumber(parametr2) or parametr;
end;
end;
end;
return (parametry_modul[funkcja]{[1]=parametr,[2]=argsfun,})and "tak" or nil;
end;
p["CzyTakCiąg"]=function(...)
local frame_parametry={...};
local frame=(#frame_parametry>1)and frame_parametry or frame_parametry[1];
local czy_table=p.TypeTable(frame);
if((czy_table and (not frame.getParent)) or (not czy_table))then
local PobierzParametr=p.PobierzParametr(frame);
local ciag=PobierzParametr("ciąg") or PobierzParametr(1);
local parametry=PobierzParametr("parametry") or PobierzParametr(2);
local parametry_modul=require("Module:Parametry");
return ciag and p.CzyTak{[1]=(p.TypeString(ciag) and parametry_modul["Odstępy"]{[1]=ciag,[2]="tak",} or ciag),[2]=parametry,} or false;
else
local args=p.PobierzArgsParametry(frame);
return CzyTakSilnik(args,"CzyTakCiąg");
end;
end;
function p.CzyTak(...)
local frame_parametry={...};
local frame=(#frame_parametry>1)and frame_parametry or frame_parametry[1];
local czy_table=p.TypeTable(frame);
if((czy_table and (not frame.getParent)) or (not czy_table))then
local PobierzParametr=p.PobierzParametr(frame);
local zmienna;local parametry;
if(czy_table)then
local zmienna_temp=PobierzParametr("zmienna") or PobierzParametr(1);
zmienna=zmienna_temp or frame;
parametry=zmienna_temp and (PobierzParametr("parametry") or PobierzParametr(2)) or nil;
else
zmienna=frame;
parametry=nil;
end;
if(zmienna~=nil)then
if(p.TypeString(zmienna))then
if(zmienna~="")then
return "tak";
else
return nil;
end;
elseif(p.TypeNumber(zmienna))then
if(zmienna~=0)then
return "tak";
else
return nil;
end;
elseif(p.TypeBoolean(zmienna))then
return (zmienna and "tak" or nil);
elseif(p.TypeTable(zmienna))then
local parametry_modul=require("Module:Parametry");
return (parametry_modul["CzySąElementyTablicy"](zmienna) and "tak" or nil);
elseif(p.TypeFunction(zmienna))then
return (zmienna(parametry) and "tak" or nil);
else
return nil;
end;
else
return nil;
end;
else
local args=p.PobierzArgsParametry(frame);
return CzyTakSilnik(args,"CzyTak");
end;
end;
function p.PobierzFrameEwentualnieParent(frame)
return (frame.getParent and (p.CzyTak(frame.args["wyspecjalizowana"]) and frame or frame:getParent()) or frame);
end;
function p.PobierzArgsParametry(frame, czy_nie_tablica_jako_tablica)
local TempFunc=function(frame)
local pf=p.PobierzFrameEwentualnieParent(frame);
local args=pf.args;
if(p.TypeTable(args))then
return args;
else
return nil;
end;
end;
if(not p.TypeNil(frame))then
return p.TypeTable(frame) and (TempFunc(frame) or frame) or ((czy_nie_tablica_jako_tablica)and {frame,} or frame);
else
return {};
end;
end;
function p.PobierzParametryRamki(frame)
local TempFun1=function(tablica)
return function(nazwa)
return tablica[nazwa];
end;
end;
local TempFun2=function(wartosc)
local tak=true;
return function(nazwa)
if(tak)then
tak=false;
return wartosc;
end;
return nil;
end;
end;
local tablica_parametrow_ramki=p.TypeTable(frame) and (p.TypeTable(frame.args) and TempFun1(frame.args) or TempFun1(frame)) or TempFun2(frame);
return function(nazwa)
return tablica_parametrow_ramki(nazwa);
end;
end;
function p.PobierzElementNumerowanyZFrameLubTablicy(frame)
local tablica_parametrow_funkcji=p.TypeTable(frame[1]) and p.TypeTable(frame[1].args)and frame[1].args or frame;
return function(nazwa)
local wartosc=tablica_parametrow_funkcji[nazwa];
return wartosc;
end;
end;
function p.PobierzParametr(frame,czy_frame_lub_parent,czy_frame)
local __pobierz_parametr_table_args=nil;
if(not p.TypeNil(frame))then
if(p.TypeTable(frame))then
local tak_frame_lub_parent=p.CzyTak(czy_frame_lub_parent);
if((not tak_frame_lub_parent)or(not frame.getParent))then
local __pobierz_parametr_table_args_temp=p.CzyTak(czy_frame) and frame.args or p.PobierzArgsParametry(frame);
__pobierz_parametr_table_args=function(nazwa)
return __pobierz_parametr_table_args_temp[nazwa or 1],1;
end;
elseif(tak_frame_lub_parent)then
local pf=(frame.getParent)and frame:getParent() or nil;
__pobierz_parametr_table_args=function(nazwa)
local wartosc=frame.args[nazwa or 1] or (pf and pf.args[nazwa or 1] or nil);
return wartosc,2;
end;
end;
else
local tak=true;
__pobierz_parametr_table_args=function(nazwa)
if(tak)then
tak=false;
return frame,0;
end;
return nil,0;
end;
end;
else
__pobierz_parametr_table_args=function(nazwa)
return nil,0;
end;
end;
return function(nazwa)
return __pobierz_parametr_table_args(nazwa);
end;
end;
function p.And(frame)
local czy="tak";
local parametry_modul=require("Module:Parametry");
local wartosc_uzyskana=nil;
for _,wartosc in ipairs(frame.args)do
czy=czy and parametry_modul["CzyTakCiąg"](wartosc);
if(not czy)then return nil;end;
wartosc_uzyskana=wartosc;
end;
return czy and wartosc_uzyskana or nil;
end;
function p.Or(frame)
local czy=nil;
for _,wartosc in ipairs(frame.args)do
czy=czy or p["CzyTakCiąg"](wartosc);
if(czy)then return wartosc;end;
end;
return nil;
end;
function p.Not(frame)
local parametry_modul=require("Module:Parametry");
return (not parametry_modul["CzyTakCiąg"](frame.args[1]))and "tak" or nil;
end;
function p.Mniejszy(frame)
local wyraz1=tonumber(frame.args[1]) or 0;
local wyraz2=tonumber(frame.args[2]) or 0;
if(wyraz1<wyraz2)then
return "tak";
end;
return;
end;
function p.IlePodano(frame)
local args=frame.args;
local args2=frame:getParent().args;
local licznik=0;
for _,name in pairs(args)do
if(args2[name])then
licznik=licznik+1;
end;
end;
return licznik;
end;
p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter={};
function p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter.__index(t,klucz)
local html_modul=require("Module:Html");
klucz=html_modul.DecodeKoduHTMLZnaku(klucz);
klucz=p["Odstępy"]{[1]=klucz,[2]="tak",};
klucz=mw.ustring.lower(klucz);
return rawget(t,klucz);
end;
function p.IteratorPoNumerowanychElementachTablicy(t)
local i=1;
return function()
local v=t[i];
if(v~=nil)then i=i+1;end;
return v;
end;
end;
p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu=function(tabela,funkcja)
local keys={};
for name,_ in next,tabela do
table.insert(keys,name);
end;
table.sort(keys,funkcja);
return function(tablica,klucz)
if(klucz==nil)then return keys[1];end;
for k,_ in ipairs(keys)do
if(keys[k]==klucz)then
return keys[k+1];
end;
end;
end;
end;
function p.Max(...)
local frame={...};
local PobierzElement=p.PobierzElementNumerowanyZFrameLubTablicy(frame);
local parametr1=tonumber(PobierzElement(1));
local parametr2=tonumber(PobierzElement(2));
return math.max(parametr1,parametr2);
end;
function p.Min(...)
local frame={...};
local PobierzElement=p.PobierzElementNumerowanyZFrameLubTablicy(frame);
local parametr1=tonumber(PobierzElement(1));
local parametr2=tonumber(PobierzElement(2));
return math.min(parametr1,parametr2);
end;
return p;
0rd9kjjrganjz38oj27nrb0yirhlcf4
Moduł:Pudełko/ParametryCechy
828
53912
553307
541965
2026-08-27T08:11:39Z
Persino
2851
553307
Scribunto
text/plain
local p={};
p["Parametry ogólnego pudełka"] = function (frame,__funkcja)
local pf=frame:getParent();
local parametry_modul=require("Module:Parametry");
local function Kody(czy)
local pf=frame:getParent();
local numer_jednostki=frame.args["numer jednostki"] or frame.args["i"] or pf.args["numer jednostki"] or pf.args["i"];
numer_jednostki=tonumber(numer_jednostki);
if(not czy)then if(not numer_jednostki)then return;end;end;
numer_jednostki=numer_jednostki or 0;
local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne");
local kod_jezyka,kod_projektu=pudelko_pomocne_modul.Wikikody_kontenera(frame,numer_jednostki);
if(czy)then return kod_jezyka,kod_projektu;end;
local wiki_modul=require("Module:Wiki")
local biezaca_wiki=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,};
if(biezaca_wiki)then return;end;
return kod_jezyka,kod_projektu;
end;
if(parametry_modul.CzyTak(pf.args["obsługiwana przestrzeń nazw"]))then
local nazwa_przestrzeni_nazw=pf.args["nazwa przestrzeni nazw"];
if(not nazwa_przestrzeni_nazw)then nazwa_przestrzeni_nazw="(main)";end;
local kod_jezyka,kod_projektu=Kody();
local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne");
local obslugiwane=pudelko_pomocne_modul.Czy_przestrzen_nazw_jest_obslugiwana(frame,nazwa_przestrzeni_nazw,kod_jezyka,kod_projektu);
if(obslugiwane)then return "tak";else return "";end;
end;
if(parametry_modul.CzyTak(pf.args["pierwsza nieobsługiwana przestrzeń nazw"]))then
local kod_jezyka,kod_projektu=Kody();
local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne");
if(not kod_jezyka and not kod_projektu)then
for _, tablica_zmiennych in pairs(mw.site.namespaces)do
local nazwa_przestrzeni_nazw=tablica_zmiennych.name;
nazwa_przestrzeni_nazw=require("Module:Nazwy").Np{nazwa=nazwa_przestrzeni_nazw,przedmiotowa="tak"};
local obslugiwane=pudelko_pomocne_modul.Czy_przestrzen_nazw_jest_obslugiwana(frame,nazwa_przestrzeni_nazw);
if(not obslugiwane)then return nazwa_przestrzeni_nazw;end;
end;
else
local nazwy_modul=require("Module:Nazwy");
local namespaces=nazwy_modul.NpDane{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["uchwyt"]="tak",}
for _,tablica_zmiennych in pairs(namespaces)do
local nazwa_przestrzeni_nazw=tablica_zmiennych[1];
local obslugiwane=pudelko_pomocne_modul.Czy_przestrzen_nazw_jest_obslugiwana(frame,nazwa_przestrzeni_nazw,kod_jezyka,kod_projektu);
if(not obslugiwane)then return nazwa_przestrzeni_nazw;end;
end;
end;
return "";
end;
if(parametry_modul.CzyTak(pf.args["pierwsza obsługiwana przestrzeń nazw"]))then
local kod_jezyka,kod_projektu=Kody();
local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne");
if(not kod_jezyka and not kod_projektu)then
for _, tablica_zmiennych in pairs(mw.site.namespaces)do
local nazwa_przestrzeni_nazw=tablica_zmiennych.name;
local obslugiwane=pudelko_pomocne_modul.Czy_przestrzen_nazw_jest_obslugiwana(frame,nazwa_przestrzeni_nazw);
if(obslugiwane)then return nazwa_przestrzeni_nazw;end;
end;
else
local nazwy_modul=require("Module:Nazwy");
local namespaces=nazwy_modul.NpDane{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["uchwyt"]="tak",}
for _, tablica_zmiennych in pairs(namespaces)do
for i=1,2,1 do
local nazwa_przestrzeni_nazw=tablica_zmiennych[i];
local obslugiwane=pudelko_pomocne_modul.Czy_przestrzen_nazw_jest_obslugiwana(frame,nazwa_przestrzeni_nazw,kod_jezyka,kod_projektu);
if(obslugiwane)then return nazwa_przestrzeni_nazw;end;
end;
end;
end;
return "";
end;
if(parametry_modul.CzyTak(pf.args["pierwsza obsługiwana niegłówna przestrzeń nazw"]))then
local kod_jezyka,kod_projektu=Kody();
local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne");
if(not kod_jezyka and not kod_projektu)then
for _, tablica_zmiennych in pairs(mw.site.namespaces)do
local nazwa_przestrzeni_nazw=tablica_zmiennych.name;
if(nazwa_przestrzeni_nazw~="")then
local obslugiwane=pudelko_pomocne_modul.Czy_przestrzen_nazw_jest_obslugiwana(frame,nazwa_przestrzeni_nazw);
if(obslugiwane)then return nazwa_przestrzeni_nazw;end;
end;
end;
else
local nazwy_modul=require("Module:Nazwy");
local namespaces=nazwy_modul.NpDane{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["uchwyt"]="tak",}
for _, tablica_zmiennych in pairs(namespaces)do
for i=1,2,1 do
local nazwa_przestrzeni_nazw=tablica_zmiennych[i];
if(nazwa_przestrzeni_nazw~="")then
local obslugiwane=pudelko_pomocne_modul.Czy_przestrzen_nazw_jest_obslugiwana(frame,nazwa_przestrzeni_nazw,kod_jezyka,kod_projektu);
if(obslugiwane)then return nazwa_przestrzeni_nazw;end;
end;
end;
end;
end;
return "";
end;
if(parametry_modul.CzyTak(pf.args["pierwsza obsługiwana użytkowa niegłówna cechowa przestrzeń nazw"]))then
local kod_jezyka,kod_projektu=Kody();
local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne");
local nazwa_cechy;local wartosc_cechy;
if(__funkcja=="Przedmiotowe błędy pudełka")then
nazwa_cechy="przedmiotowa";
wartosc_cechy="tak";
elseif(__funkcja=="Dyskusyjne błędy pudełka")then
nazwa_cechy="dyskusja";
wartosc_cechy="tak";
elseif(__funkcja=="Błędy pudełka")then
nazwa_cechy="przedmiotowa";
wartosc_cechy=nil;
else
nazwa_cechy="przedmiotowa";
wartosc_cechy=nil;
end;
if(not kod_jezyka and not kod_projektu)then
local nazwy_modul=require("Module:Nazwy");
for _, tablica_zmiennych in pairs(mw.site.namespaces)do
local nazwa_przestrzeni_nazw=tablica_zmiennych.subject.name;
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
if((nazwa_przestrzeni_nazw~=nazwy_np_modul.Main)and(nazwa_przestrzeni_nazw~=nazwy_np_modul.User))then
local obslugiwane=pudelko_pomocne_modul.Czy_przestrzen_nazw_jest_obslugiwana(frame,nazwa_przestrzeni_nazw);
if(obslugiwane)then return nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,[nazwa_cechy]=wartosc_cechy,};end;
end;
end;
local obslugiwane=pudelko_pomocne_modul.Czy_przestrzen_nazw_jest_obslugiwana(frame,"User");
if(obslugiwane)then
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
return nazwy_modul.Np{nazwa=nazwy_np_modul.User,[nazwa_cechy]=wartosc_cechy,};
end;
else
local nazwy_modul=require("Module:Nazwy");
local namespaces=nazwy_modul.NpDane{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["uchwyt"]="tak",}
for _, tablica_zmiennych in pairs(namespaces)do
local nazwa_przestrzeni_nazw=tablica_zmiennych[1];
local main=nazwy_modul.NpDane{["nazwa"]="",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,};
local user=nazwy_modul.NpDane{["nazwa"]="User",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,};
if((nazwa_przestrzeni_nazw~=main)and(nazwa_przestrzeni_nazw~=user))then
local obslugiwane=pudelko_pomocne_modul.Czy_przestrzen_nazw_jest_obslugiwana(frame,nazwa_przestrzeni_nazw,kod_jezyka,kod_projektu);
if(obslugiwane)then return nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,[nazwa_cechy]=wartosc_cechy,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,};end;
end;
end;
local obslugiwane=pudelko_pomocne_modul.Czy_przestrzen_nazw_jest_obslugiwana(frame,"User",kod_jezyka,kod_projektu);
if(obslugiwane)then
local user=nazwy_modul.NpDane{["nazwa"]="User",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,[nazwa_cechy]=wartosc_cechy,};
return user;
end;
end;
local nazwy_modul=require("Module:Nazwy");
if(not kod_jezyka and not kod_projektu)then
return nazwy_modul.Np{nazwa="(main)",[nazwa_cechy]=wartosc_cechy,};
else
return nazwy_modul.NpDane{["nazwa"]="(main)",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,[nazwa_cechy]=wartosc_cechy,};
end;
end;
if(parametry_modul.CzyTak(pf.args["nieobsługiwana strona główna projektu"]))then
local nieobslugiwane_strony_glowne=parametry_modul.CzyTak(frame.args["nieobsługiwane strony główne"]);
local nieobslugiwana_strona_glowna_projektu=nieobslugiwane_strony_glowne or parametry_modul.CzyTak(frame.args["nieobsługiwana strona główna projektu"]);
if(parametry_modul.CzyTak(nieobslugiwana_strona_glowna_projektu))then return "tak";end;
local kod_jezyka,kod_projektu=Kody(true);
local numer_jednostki=frame.args["numer jednostki"] or frame.args["i"] or pf.args["numer jednostki"] or pf.args["i"];
numer_jednostki=tonumber(numer_jednostki) or 0;
local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne");
local nazwa_strony_glownej_projektu_z_wikidanych=pudelko_pomocne_modul.Nazwa_strony_bazowej_projektu_z_wikidanych(kod_jezyka,kod_projektu);
local projekt=pudelko_pomocne_modul.Nazwa_strony_bazowej_projektu_ze_zmiennej(frame,numer_jednostki,kod_jezyka,kod_projektu);
projekt=(not projekt)and nazwa_strony_glownej_projektu_z_wikidanych or projekt;
local nazwy_modul=require("Module:Nazwy");
local nazwa_przestrzeni_nazw_projektu=nazwy_modul["NAZWAPRZESTRZENI"]{[1]=projekt,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}
local obslugiwane=pudelko_pomocne_modul.Czy_przestrzen_nazw_jest_obslugiwana(frame,nazwa_przestrzeni_nazw_projektu,kod_jezyka,kod_projektu);
if(not obslugiwane)then return "tak";else return "";end;
end;
if(parametry_modul.CzyTak(pf.args["nieobsługiwana strona główna dla dzieci"]))then
local nieobslugiwane_strony_glowne=parametry_modul.CzyTak(frame.args["nieobsługiwane strony główne"]);
local nieobslugiwana_strona_glowna_dla_dzieci=nieobslugiwane_strony_glowne or parametry_modul.CzyTak(frame.args["nieobsługiwana strona główna dla dzieci"]);
if(parametry_modul.CzyTak(nieobslugiwana_strona_glowna_dla_dzieci))then return "tak";end;
local kod_jezyka,kod_projektu=Kody(true);
local numer_jednostki=frame.args["numer jednostki"] or frame.args["i"] or pf.args["numer jednostki"] or pf.args["i"];
numer_jednostki=tonumber(numer_jednostki) or 0;
local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne");
local nazwa_strony_glownej_wikijuniora=pudelko_pomocne_modul.Nazwa_strony_bazowej_dla_dzieci_z_wikidanych(kod_jezyka);
local junior=pudelko_pomocne_modul.Nazwa_strony_bazowej_dla_dzieci_ze_zmiennej(frame,numer_jednostki,kod_jezyka,kod_projektu);
junior=(not junior)and nazwa_strony_glownej_wikijuniora or junior;
local nazwy_modul=require("Module:Nazwy");
local nazwa_przestrzeni_nazw_dla_dzieci=nazwy_modul["NAZWAPRZESTRZENI"]{[1]=junior,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}
local obslugiwane=pudelko_pomocne_modul.Czy_przestrzen_nazw_jest_obslugiwana(frame,nazwa_przestrzeni_nazw_dla_dzieci,kod_jezyka,kod_projektu);
if(not obslugiwane)then return "tak";else return "";end;
end;
if(parametry_modul.CzyTak(pf.args["nieobsługiwane strony główne użytkowników"]))then
local nieobslugiwane_strony_glowne=parametry_modul.CzyTak(frame.args["nieobsługiwane strony główne"]);
local nieobslugiwana_strony_glowne_uzytkownikow=nieobslugiwane_strony_glowne or parametry_modul.CzyTak(frame.args["nieobsługiwane strony główne użytkowników"]);
local parametry_modul=require("Module:Parametry");
local kod_jezyka,kod_projektu=Kody();
local user;
if(not kod_jezyka and not kod_projektu)then
local polskie_nazwy_przestrzeni_nazw=mw.loadData("Module:Nazwy/Np");
user=polskie_nazwy_przestrzeni_nazw.User;
else
local nazwy_modul=require("Module:Nazwy");
local user=nazwy_modul.NpDane{nazwa="User",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,};
end;
local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne");
local obslugiwane=pudelko_pomocne_modul.Czy_przestrzen_nazw_jest_obslugiwana(frame,user,kod_jezyka,kod_projektu);
if((parametry_modul.CzyTak(nieobslugiwana_strony_glowne_uzytkownikow))or(not obslugiwane))then
return "tak";
else
return "";
end;
end;
if(parametry_modul.CzyTak(pf.args["obsługiwany brudnopis projektu"]))then
local kod_jezyka,kod_projektu=Kody();
local project;
if(not kod_jezyka and not kod_projektu)then
local polskie_nazwy_przestrzeni_nazw=mw.loadData("Module:Nazwy/Np");
project=polskie_nazwy_przestrzeni_nazw.Wikibooks;
else
local nazwy_modul=require("Module:Nazwy");
project=nazwy_modul.NpDane{nazwa="Project",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,};
end
local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne");
local obslugiwane=pudelko_pomocne_modul.Czy_przestrzen_nazw_jest_obslugiwana(frame,project,kod_jezyka,kod_projektu);
local brudnopis_wikibooks=frame.args["obsługiwany brudnopis projektu"];
local parametry_modul=require("Module:Parametry");
if((obslugiwane)or(parametry_modul.CzyTak(brudnopis_wikibooks)))then
return "tak";
else
return "";
end;
end;
if(parametry_modul.CzyTak(pf.args["obsługiwany brudnopis szablonu"]))then
local kod_jezyka,kod_projektu=Kody();
local template;
if(not kod_jezyka and not kod_projektu)then
local polskie_nazwy_przestrzeni_nazw=mw.loadData("Module:Nazwy/Np");
template=polskie_nazwy_przestrzeni_nazw.Template;
else
local nazwy_modul=require("Module:Nazwy");
template=nazwy_modul.NpDane{nazwa="Template",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,};
end
local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne");
local obslugiwane=pudelko_pomocne_modul.Czy_przestrzen_nazw_jest_obslugiwana(frame,template,kod_jezyka,kod_projektu);
local brudnopis_szablon=frame.args["obsługiwany brudnopis szablonu"];
local parametry_modul=require("Module:Parametry");
if((obslugiwane)or(parametry_modul.CzyTak(brudnopis_szablon)))then
return "tak";
else
return "";
end;
end;
if(parametry_modul.CzyTak(pf.args["obsługiwany brudnopis modułu"]))then
local kod_jezyka,kod_projektu=Kody();
local modul;
if(not kod_jezyka and not kod_projektu)then
local polskie_nazwy_przestrzeni_nazw=mw.loadData("Module:Nazwy/Np");
modul=polskie_nazwy_przestrzeni_nazw.Module;
else
local nazwy_modul=require("Module:Nazwy");
modul=nazwy_modul.NpDane{nazwa="Module",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,};
end
local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne");
local obslugiwane=pudelko_pomocne_modul.Czy_przestrzen_nazw_jest_obslugiwana(frame,modul,kod_jezyka,kod_projektu);
local brudnopis_modulu=frame.args["obsługiwany brudnopis modułu"];
local parametry_modul=require("Module:Parametry");
if((obslugiwane)or(parametry_modul.CzyTak(brudnopis_modulu)))then
return "tak";
else
return "";
end;
end;
if(parametry_modul.CzyTak(pf.args["nieobsługiwane strony brudnopisu szablonów"]))then
local nieobslugiwane_strony_brudnopisu_szablonow=frame.args["nieobsługiwane strony brudnopisu szablonów"];
local nieobslugiwane_strony_jednostek_programowych=frame.args["nieobsługiwane strony jednostek programowych"];
local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne");
local polskie_nazwy_przestrzeni_nazw=mw.loadData("Module:Nazwy/Np");
local obslugiwane=pudelko_pomocne_modul.Czy_przestrzen_nazw_jest_obslugiwana(frame,polskie_nazwy_przestrzeni_nazw.Template);
if(not obslugiwane or parametry_modul.CzyTak(nieobslugiwane_strony_brudnopisu_szablonow) or parametry_modul.CzyTak(nieobslugiwane_strony_jednostek_programowych))then
return "tak";
else
return "";
end;
end;
if(parametry_modul.CzyTak(pf.args["nieobsługiwane strony brudnopisu opisu szablonów"]))then
local parametry_modul=require("Module:Parametry");
local nieobslugiwane_strony_brudnopisu_opisu_szablonow=frame.args["nieobsługiwane strony brudnopisu opisu szablonów"];
local nieobslugiwane_strony_opisu_jednostek_programowych=frame.args["nieobsługiwane strony opisu jednostek programowych"];
local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne");
local polskie_nazwy_przestrzeni_nazw=mw.loadData("Module:Nazwy/Np");
local obslugiwane=pudelko_pomocne_modul.Czy_przestrzen_nazw_jest_obslugiwana(frame,polskie_nazwy_przestrzeni_nazw.Template);
if(not obslugiwane or parametry_modul.CzyTak(nieobslugiwane_strony_brudnopisu_opisu_szablonow) or parametry_modul.CzyTak(nieobslugiwane_strony_opisu_jednostek_programowych))then
return "tak";
else
return "";
end;
end;
if(parametry_modul.CzyTak(pf.args["nieobsługiwane strony brudnopisu modułów"]))then
local nieobslugiwane_strony_brudnopisu_modolow=frame.args["nieobsługiwane strony brudnopisu modułów"];
local nieobslugiwane_strony_jednostek_programowych=frame.args["nieobsługiwane strony jednostek programowych"];
local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne");
local polskie_nazwy_przestrzeni_nazw=mw.loadData("Module:Nazwy/Np");
local obslugiwane=pudelko_pomocne_modul.Czy_przestrzen_nazw_jest_obslugiwana(frame,polskie_nazwy_przestrzeni_nazw.Module);
if(not obslugiwane or parametry_modul.CzyTak(nieobslugiwane_strony_brudnopisu_modolow) or parametry_modul.CzyTak(nieobslugiwane_strony_jednostek_programowych))then
return "tak";
else
return "";
end;
end;
if(parametry_modul.CzyTak(pf.args["nieobsługiwane strony brudnopisu opisu modułów"]))then
local parametry_modul=require("Module:Parametry");
local nieobslugiwane_strony_brudnopisu_opisu_modolow=frame.args["nieobsługiwane strony brudnopisu opisu modułów"];
local nieobslugiwane_strony_opisu_jednostek_programowych=frame.args["nieobsługiwane strony opisu jednostek programowych"];
local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne");
local polskie_nazwy_przestrzeni_nazw=mw.loadData("Module:Nazwy/Np");
local obslugiwane=pudelko_pomocne_modul.Czy_przestrzen_nazw_jest_obslugiwana(frame,polskie_nazwy_przestrzeni_nazw.Module);
if(not obslugiwane or parametry_modul.CzyTak(nieobslugiwane_strony_brudnopisu_opisu_modolow) or parametry_modul.CzyTak(nieobslugiwane_strony_opisu_jednostek_programowych))then
return "tak";
else
return "";
end;
end;
--[[]]
if(parametry_modul.CzyTak(pf.args["nieobsługiwane strony szablonów"]))then
local polskie_nazwy_przestrzeni_nazw=mw.loadData("Module:Nazwy/Np");
local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne");
local obslugiwane=pudelko_pomocne_modul.Czy_przestrzen_nazw_jest_obslugiwana(frame,polskie_nazwy_przestrzeni_nazw.Template);
local nieobslugiwane_strony_szablonow=frame.args["nieobsługiwane strony szablonów"];
local nieobslugiwane_strony_jednostek_programowych=frame.args["nieobsługiwane strony jednostek programowych"];
if(not obslugiwane)or (parametry_modul.CzyTak(nieobslugiwane_strony_szablonow) or parametry_modul.CzyTak(nieobslugiwane_strony_jednostek_programowych))then
return "tak";
else
return "";
end;
end;
if(parametry_modul.CzyTak(pf.args["nieobsługiwane strony opisu szablonów"]))then
local polskie_nazwy_przestrzeni_nazw=mw.loadData("Module:Nazwy/Np");
local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne");
local obslugiwane=pudelko_pomocne_modul.Czy_przestrzen_nazw_jest_obslugiwana(frame,polskie_nazwy_przestrzeni_nazw.Template);
local nieobslugiwane_strony_opisu_szablonow=frame.args["nieobsługiwane strony opisu szablonów"];
local nieobslugiwane_strony_opisu_jednostek_programowych=frame.args["nieobsługiwane strony opisu jednostek programowych"];
if(not obslugiwane)or (parametry_modul.CzyTak(nieobslugiwane_strony_opisu_szablonow) or parametry_modul.CzyTak(nieobslugiwane_strony_opisu_jednostek_programowych))then
return "tak";
else
return "";
end;
end;
if(parametry_modul.CzyTak(pf.args["nieobsługiwane strony modułów"]))then
local polskie_nazwy_przestrzeni_nazw=mw.loadData("Module:Nazwy/Np");
local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne");
local obslugiwane=pudelko_pomocne_modul.Czy_przestrzen_nazw_jest_obslugiwana(frame,polskie_nazwy_przestrzeni_nazw.Module);
local nieobslugiwane_strony_modolow=frame.args["nieobsługiwane strony modułów"];
local nieobslugiwane_strony_jednostek_programowych=frame.args["nieobsługiwane strony jednostek programowych"];
if(not obslugiwane)or (parametry_modul.CzyTak(nieobslugiwane_strony_modolow) or parametry_modul.CzyTak(nieobslugiwane_strony_jednostek_programowych))then
return "tak";
else
return "";
end;
end;
if(parametry_modul.CzyTak(pf.args["nieobsługiwane strony opisu modułów"]))then
local polskie_nazwy_przestrzeni_nazw=mw.loadData("Module:Nazwy/Np");
local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne");
local obslugiwane=pudelko_pomocne_modul.Czy_przestrzen_nazw_jest_obslugiwana(frame,polskie_nazwy_przestrzeni_nazw.Module);
local nieobslugiwane_strony_opisu_modolow=frame.args["nieobsługiwane strony opisu modułów"];
local nieobslugiwane_strony_opisu_jednostek_programowych=frame.args["nieobsługiwane strony opisu jednostek programowych"];
if((not obslugiwane)or(parametry_modul.CzyTak(nieobslugiwane_strony_opisu_modolow) or parametry_modul.CzyTak(nieobslugiwane_strony_opisu_jednostek_programowych)))then
return "tak";
else
return "";
end;
end;
if(parametry_modul.CzyTak(pf.args["dodatkowy parametr"]))then
local dodatkowy_parametr=pf.args["parametr"];
if(parametry_modul.CzyTak(frame.args[dodatkowy_parametr]))then
return "tak";
else
return "";
end;
end;
if(parametry_modul.CzyTak(pf.args["maksymalny numer argumentu nienazwanego"]))then
local maksymalny_numer_argumentu_nienazwanego=frame.args["maksymalny numer argumentu nienazwanego"];
if(parametry_modul.CzyTak(maksymalny_numer_argumentu_nienazwanego))then
return tonumber(maksymalny_numer_argumentu_nienazwanego) or 0;
else
return 0;
end;
end;
if(parametry_modul.CzyTak(pf.args["zwracane kategorie błędu"]))then
local dodatek_do_kategorii=pf.args["dodatek"]
local strings="";
local minimum_z_numerem_dodatkowego_warunku,maksimum_z_numerem_dodatkowego_warunku=parametry_modul.MinimalnyIMaksymalnyNumerParametruPodstawyTabeli(frame.args,"pierwszy człon kategorii błędu");
for licznik=minimum_z_numerem_dodatkowego_warunku,maksimum_z_numerem_dodatkowego_warunku,1 do
local wartosc_parametru=(licznik>1)and frame.args["pierwszy człon kategorii błędu "..licznik]or((licznik==1)and(frame.args["pierwszy człon kategorii błędu 1"] or frame.args["pierwszy człon kategorii błędu"]));
if((wartosc_parametru)and(wartosc_parametru~=""))then
strings=strings..((strings~="")and ", " or "").."[[:Category:"..wartosc_parametru.." - "..dodatek_do_kategorii.."|"..wartosc_parametru.." - "..dodatek_do_kategorii.."]]";
end;
end;
return strings;
end;
if(parametry_modul.CzyTak(pf.args["parametry"]))then
if(parametry_modul.CzyTak(frame.args["parametry"]))then
return frame.args["parametry"];
end;
return "";
end;
if(parametry_modul.CzyTak(pf.args["dodatkowa informacja"]))then
if(parametry_modul.CzyTak(frame.args["dodatkowa informacja"]))then
return frame.args["dodatkowa informacja"];
end;
return "";
end;
if(parametry_modul.CzyTak(pf.args["najniższy numer dodatkowego warunku"]))then
local minimum_z_numerem_dodatkowego_warunku,_=parametry_modul.MinimalnyIMaksymalnyNumerParametruPodstawyTabeli(frame.args,"dodatkowy warunek");
return minimum_z_numerem_dodatkowego_warunku;
end;
if(parametry_modul.CzyTak(pf.args["najwyższy numer dodatkowego warunku"]))then
local _,maksimum_z_numerem_dodatkowego_warunku=parametry_modul.MinimalnyIMaksymalnyNumerParametruPodstawyTabeli(frame.args,"dodatkowy warunek");
return maksimum_z_numerem_dodatkowego_warunku;
end;
if(parametry_modul.CzyTak(pf.args["parametry dodatkowego warunku"]))then
local numer_parametru_dodatkowego=tonumber(pf.args["numer parametru dodatkowego"]);
if(numer_parametru_dodatkowego)then
local parametr_dodatkowy_numer=(numer_parametru_dodatkowego==1)and (frame.args["parametry przykładowe dodatkowego warunku 1"] or frame.args["parametry przykładowe dodatkowego warunku"])or ((numer_parametru_dodatkowego>1)and frame.args["parametry przykładowe dodatkowego warunku "..numer_parametru_dodatkowego]);
return parametr_dodatkowy_numer;
end;
return "";
end;
if(parametry_modul.CzyTak(pf.args["kategorie parametrów dodatkowych"]))then
local numer_parametru_dodatkowego=tonumber(pf.args["numer parametru dodatkowego"]);
if(numer_parametru_dodatkowego)then
local dodatek_kategorii=((numer_parametru_dodatkowego==1)
and(frame.args["dodatkowy warunek 1"] or frame.args["dodatkowy warunek"]))
or ((numer_parametru_dodatkowego>1)and (frame.args["dodatkowy warunek "..numer_parametru_dodatkowego]));
if(not dodatek_kategorii)then return "";end;
local dodatek_kategorii=((numer_parametru_dodatkowego==1)
and(frame.args["dodatek kategorii błędu dodatkowego warunku 1"] or frame.args["dodatek kategorii błędu dodatkowego warunku"]))
or ((numer_parametru_dodatkowego>1)and (frame.args["dodatek kategorii błędu dodatkowego warunku "..numer_parametru_dodatkowego]));
if(not dodatek_kategorii)then dodatek_kategorii="błędne wywołania";end;
local cala_kategoria="";
local minimum_z_numerem_dodatkowego_warunku,maksimum_z_numerem_dodatkowego_warunku=parametry_modul.MinimalnyIMaksymalnyNumerParametruPodstawyTabeli(frame.args,"pierwszy człon kategorii błędu");
for licznik=minimum_z_numerem_dodatkowego_warunku,maksimum_z_numerem_dodatkowego_warunku,1 do
local wartosc_parametru=(licznik>1)and frame.args["pierwszy człon kategorii błędu "..licznik]or(frame.args["pierwszy człon kategorii błędu 1"] or frame.args["pierwszy człon kategorii błędu"]);
if((wartosc_parametru)and(wartosc_parametru~=""))then
cala_kategoria=cala_kategoria..((cala_kategoria~="")and ", " or "").."[[:Category:"..wartosc_parametru.." - "..dodatek_kategorii.."|"..wartosc_parametru.." - "..dodatek_kategorii.."]]";
end;
end;
return cala_kategoria;
end;
end;
if(parametry_modul.CzyTak(pf.args["istnieje taki parametr dodatkowego warunku"]))then
local numer_parametru_dodatkowego=tonumber(pf.args["numer parametru dodatkowego"]) or 1;
local czy_istnieje;
if(numer_parametru_dodatkowego==1)then czy_istnieje=frame.args["dodatkowy warunek 1"] or frame.args["dodatkowy warunek"];
else czy_istnieje=frame.args["dodatkowy warunek "..numer_parametru_dodatkowego];end;
return (require("Module:Parametry").CzyTak(czy_istnieje))and "tak" or "";
end;
end;
return p;
l2dbu34ow7zsnjxo4cqe4hzzhj8lj0p
553325
553307
2026-08-27T09:09:39Z
Persino
2851
553325
Scribunto
text/plain
local p={};
p["Parametry ogólnego pudełka"] = function (frame,__funkcja)
local pf=frame:getParent();
local parametry_modul=require("Module:Parametry");
local function Kody(czy)
local pf=frame:getParent();
local numer_jednostki=frame.args["numer jednostki"] or frame.args["i"] or pf.args["numer jednostki"] or pf.args["i"];
numer_jednostki=tonumber(numer_jednostki);
if(not czy)then if(not numer_jednostki)then return;end;end;
numer_jednostki=numer_jednostki or 0;
local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne");
local kod_jezyka,kod_projektu=pudelko_pomocne_modul.Wikikody_kontenera(frame,numer_jednostki);
if(czy)then return kod_jezyka,kod_projektu;end;
local wiki_modul=require("Module:Wiki")
local biezaca_wiki=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,};
if(biezaca_wiki)then return;end;
return kod_jezyka,kod_projektu;
end;
if(parametry_modul.CzyTak(pf.args["obsługiwana przestrzeń nazw"]))then
local nazwa_przestrzeni_nazw=pf.args["nazwa przestrzeni nazw"];
if(not nazwa_przestrzeni_nazw)then nazwa_przestrzeni_nazw="(main)";end;
local kod_jezyka,kod_projektu=Kody();
local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne");
local obslugiwane=pudelko_pomocne_modul.Czy_przestrzen_nazw_jest_obslugiwana(frame,nazwa_przestrzeni_nazw,kod_jezyka,kod_projektu);
if(obslugiwane)then return "tak";else return "";end;
end;
if(parametry_modul.CzyTak(pf.args["pierwsza nieobsługiwana przestrzeń nazw"]))then
local kod_jezyka,kod_projektu=Kody();
local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne");
if(not kod_jezyka and not kod_projektu)then
for _, tablica_zmiennych in pairs(mw.site.namespaces)do
local nazwa_przestrzeni_nazw=tablica_zmiennych.name;
nazwa_przestrzeni_nazw=require("Module:Nazwy").Np{nazwa=nazwa_przestrzeni_nazw,przedmiotowa="tak"};
local obslugiwane=pudelko_pomocne_modul.Czy_przestrzen_nazw_jest_obslugiwana(frame,nazwa_przestrzeni_nazw);
if(not obslugiwane)then return nazwa_przestrzeni_nazw;end;
end;
else
local nazwy_modul=require("Module:Nazwy");
local namespaces=nazwy_modul.NpDane{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["uchwyt"]="tak",}
for _,tablica_zmiennych in pairs(namespaces)do
local nazwa_przestrzeni_nazw=tablica_zmiennych[1];
local obslugiwane=pudelko_pomocne_modul.Czy_przestrzen_nazw_jest_obslugiwana(frame,nazwa_przestrzeni_nazw,kod_jezyka,kod_projektu);
if(not obslugiwane)then return nazwa_przestrzeni_nazw;end;
end;
end;
return "";
end;
if(parametry_modul.CzyTak(pf.args["pierwsza obsługiwana przestrzeń nazw"]))then
local kod_jezyka,kod_projektu=Kody();
local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne");
if(not kod_jezyka and not kod_projektu)then
for _, tablica_zmiennych in pairs(mw.site.namespaces)do
local nazwa_przestrzeni_nazw=tablica_zmiennych.name;
local obslugiwane=pudelko_pomocne_modul.Czy_przestrzen_nazw_jest_obslugiwana(frame,nazwa_przestrzeni_nazw);
if(obslugiwane)then return nazwa_przestrzeni_nazw;end;
end;
else
local nazwy_modul=require("Module:Nazwy");
local namespaces=nazwy_modul.NpDane{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["uchwyt"]="tak",}
for _, tablica_zmiennych in pairs(namespaces)do
for i=1,2,1 do
local nazwa_przestrzeni_nazw=tablica_zmiennych[i];
local obslugiwane=pudelko_pomocne_modul.Czy_przestrzen_nazw_jest_obslugiwana(frame,nazwa_przestrzeni_nazw,kod_jezyka,kod_projektu);
if(obslugiwane)then return nazwa_przestrzeni_nazw;end;
end;
end;
end;
return "";
end;
if(parametry_modul.CzyTak(pf.args["pierwsza obsługiwana niegłówna przestrzeń nazw"]))then
local kod_jezyka,kod_projektu=Kody();
local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne");
if(not kod_jezyka and not kod_projektu)then
for _, tablica_zmiennych in pairs(mw.site.namespaces)do
local nazwa_przestrzeni_nazw=tablica_zmiennych.name;
if(nazwa_przestrzeni_nazw~="")then
local obslugiwane=pudelko_pomocne_modul.Czy_przestrzen_nazw_jest_obslugiwana(frame,nazwa_przestrzeni_nazw);
if(obslugiwane)then return nazwa_przestrzeni_nazw;end;
end;
end;
else
local nazwy_modul=require("Module:Nazwy");
local namespaces=nazwy_modul.NpDane{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["uchwyt"]="tak",}
for _, tablica_zmiennych in pairs(namespaces)do
for i=1,2,1 do
local nazwa_przestrzeni_nazw=tablica_zmiennych[i];
if(nazwa_przestrzeni_nazw~="")then
local obslugiwane=pudelko_pomocne_modul.Czy_przestrzen_nazw_jest_obslugiwana(frame,nazwa_przestrzeni_nazw,kod_jezyka,kod_projektu);
if(obslugiwane)then return nazwa_przestrzeni_nazw;end;
end;
end;
end;
end;
return "";
end;
if(parametry_modul.CzyTak(pf.args["pierwsza obsługiwana użytkowa niegłówna cechowa przestrzeń nazw"]))then
local kod_jezyka,kod_projektu=Kody();
local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne");
local nazwa_cechy;local wartosc_cechy;
if(__funkcja=="Przedmiotowe błędy pudełka")then
nazwa_cechy="przedmiotowa";
wartosc_cechy="tak";
elseif(__funkcja=="Dyskusyjne błędy pudełka")then
nazwa_cechy="dyskusja";
wartosc_cechy="tak";
elseif(__funkcja=="Błędy pudełka")then
nazwa_cechy="przedmiotowa";
wartosc_cechy=nil;
else
nazwa_cechy="przedmiotowa";
wartosc_cechy=nil;
end;
if(not kod_jezyka and not kod_projektu)then
local nazwy_modul=require("Module:Nazwy");
for _, tablica_zmiennych in pairs(mw.site.namespaces)do
local nazwa_przestrzeni_nazw=tablica_zmiennych.subject.name;
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
if((nazwa_przestrzeni_nazw~=nazwy_np_modul.Main)and(nazwa_przestrzeni_nazw~=nazwy_np_modul.User))then
local obslugiwane=pudelko_pomocne_modul.Czy_przestrzen_nazw_jest_obslugiwana(frame,nazwa_przestrzeni_nazw);
if(obslugiwane)then return nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,[nazwa_cechy]=wartosc_cechy,};end;
end;
end;
local obslugiwane=pudelko_pomocne_modul.Czy_przestrzen_nazw_jest_obslugiwana(frame,"User");
if(obslugiwane)then
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
return nazwy_modul.Np{nazwa=nazwy_np_modul.User,[nazwa_cechy]=wartosc_cechy,};
end;
else
local nazwy_modul=require("Module:Nazwy");
local namespaces=nazwy_modul.NpDane{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["uchwyt"]="tak",}
for _, tablica_zmiennych in pairs(namespaces)do
local nazwa_przestrzeni_nazw=tablica_zmiennych[1];
local main=nazwy_modul.NpDane{["nazwa"]="",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,};
local user=nazwy_modul.NpDane{["nazwa"]="User",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,};
if((nazwa_przestrzeni_nazw~=main)and(nazwa_przestrzeni_nazw~=user))then
local obslugiwane=pudelko_pomocne_modul.Czy_przestrzen_nazw_jest_obslugiwana(frame,nazwa_przestrzeni_nazw,kod_jezyka,kod_projektu);
if(obslugiwane)then return nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,[nazwa_cechy]=wartosc_cechy,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,};end;
end;
end;
local obslugiwane=pudelko_pomocne_modul.Czy_przestrzen_nazw_jest_obslugiwana(frame,"User",kod_jezyka,kod_projektu);
if(obslugiwane)then
local user=nazwy_modul.NpDane{["nazwa"]="User",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,[nazwa_cechy]=wartosc_cechy,};
return user;
end;
end;
local nazwy_modul=require("Module:Nazwy");
if(not kod_jezyka and not kod_projektu)then
return nazwy_modul.Np{nazwa="(main)",[nazwa_cechy]=wartosc_cechy,};
else
return nazwy_modul.NpDane{["nazwa"]="(main)",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,[nazwa_cechy]=wartosc_cechy,};
end;
end;
if(parametry_modul.CzyTak(pf.args["nieobsługiwana strona główna projektu"]))then
local nieobslugiwane_strony_glowne=parametry_modul.CzyTak(frame.args["nieobsługiwane strony główne"]);
local nieobslugiwana_strona_glowna_projektu=nieobslugiwane_strony_glowne or parametry_modul.CzyTak(frame.args["nieobsługiwana strona główna projektu"]);
if(parametry_modul.CzyTak(nieobslugiwana_strona_glowna_projektu))then return "tak";end;
local kod_jezyka,kod_projektu=Kody(true);
local numer_jednostki=frame.args["numer jednostki"] or frame.args["i"] or pf.args["numer jednostki"] or pf.args["i"];
numer_jednostki=tonumber(numer_jednostki) or 0;
local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne");
local nazwa_strony_glownej_projektu_z_wikidanych=pudelko_pomocne_modul.Nazwa_strony_bazowej_projektu_z_wikidanych(kod_jezyka,kod_projektu);
local projekt=pudelko_pomocne_modul.Nazwa_strony_bazowej_projektu_ze_zmiennej(frame,numer_jednostki,kod_jezyka,kod_projektu);
projekt=(not projekt)and nazwa_strony_glownej_projektu_z_wikidanych or projekt;
local nazwy_modul=require("Module:Nazwy");
local nazwa_przestrzeni_nazw_projektu=nazwy_modul["NAZWAPRZESTRZENI"]{[1]=projekt,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}
local obslugiwane=pudelko_pomocne_modul.Czy_przestrzen_nazw_jest_obslugiwana(frame,nazwa_przestrzeni_nazw_projektu,kod_jezyka,kod_projektu);
if(not obslugiwane)then return "tak";else return "";end;
end;
if(parametry_modul.CzyTak(pf.args["nieobsługiwana strona główna dla dzieci"]))then
local nieobslugiwane_strony_glowne=parametry_modul.CzyTak(frame.args["nieobsługiwane strony główne"]);
local nieobslugiwana_strona_glowna_dla_dzieci=nieobslugiwane_strony_glowne or parametry_modul.CzyTak(frame.args["nieobsługiwana strona główna dla dzieci"]);
if(parametry_modul.CzyTak(nieobslugiwana_strona_glowna_dla_dzieci))then return "tak";end;
local kod_jezyka,kod_projektu=Kody(true);
local numer_jednostki=frame.args["numer jednostki"] or frame.args["i"] or pf.args["numer jednostki"] or pf.args["i"];
numer_jednostki=tonumber(numer_jednostki) or 0;
local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne");
local nazwa_strony_glownej_wikijuniora=pudelko_pomocne_modul.Nazwa_strony_bazowej_dla_dzieci_z_wikidanych(kod_jezyka);
local junior=pudelko_pomocne_modul.Nazwa_strony_bazowej_dla_dzieci_ze_zmiennej(frame,numer_jednostki,kod_jezyka,kod_projektu);
junior=(not junior)and nazwa_strony_glownej_wikijuniora or junior;
local nazwy_modul=require("Module:Nazwy");
local nazwa_przestrzeni_nazw_dla_dzieci=nazwy_modul["NAZWAPRZESTRZENI"]{[1]=junior,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}
local obslugiwane=pudelko_pomocne_modul.Czy_przestrzen_nazw_jest_obslugiwana(frame,nazwa_przestrzeni_nazw_dla_dzieci,kod_jezyka,kod_projektu);
if(not obslugiwane)then return "tak";else return "";end;
end;
if(parametry_modul.CzyTak(pf.args["nieobsługiwane strony główne użytkowników"]))then
local nieobslugiwane_strony_glowne=parametry_modul.CzyTak(frame.args["nieobsługiwane strony główne"]);
local nieobslugiwana_strony_glowne_uzytkownikow=nieobslugiwane_strony_glowne or parametry_modul.CzyTak(frame.args["nieobsługiwane strony główne użytkowników"]);
local parametry_modul=require("Module:Parametry");
local kod_jezyka,kod_projektu=Kody();
local user;
if(not kod_jezyka and not kod_projektu)then
local polskie_nazwy_przestrzeni_nazw=mw.loadData("Module:Nazwy/Np");
user=polskie_nazwy_przestrzeni_nazw.User;
else
local nazwy_modul=require("Module:Nazwy");
local user=nazwy_modul.NpDane{nazwa="User",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,};
end;
local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne");
local obslugiwane=pudelko_pomocne_modul.Czy_przestrzen_nazw_jest_obslugiwana(frame,user,kod_jezyka,kod_projektu);
if((parametry_modul.CzyTak(nieobslugiwana_strony_glowne_uzytkownikow))or(not obslugiwane))then
return "tak";
else
return "";
end;
end;
if(parametry_modul.CzyTak(pf.args["obsługiwany brudnopis projektu"]))then
local kod_jezyka,kod_projektu=Kody();
local project;
if(not kod_jezyka and not kod_projektu)then
local polskie_nazwy_przestrzeni_nazw=mw.loadData("Module:Nazwy/Np");
project=polskie_nazwy_przestrzeni_nazw.Wikibooks;
else
local nazwy_modul=require("Module:Nazwy");
project=nazwy_modul.NpDane{nazwa="Project",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,};
end
local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne");
local obslugiwane=pudelko_pomocne_modul.Czy_przestrzen_nazw_jest_obslugiwana(frame,project,kod_jezyka,kod_projektu);
local brudnopis_wikibooks=frame.args["obsługiwany brudnopis projektu"];
local parametry_modul=require("Module:Parametry");
if((obslugiwane)or(parametry_modul.CzyTak(brudnopis_wikibooks)))then
return "tak";
else
return "";
end;
end;
if(parametry_modul.CzyTak(pf.args["obsługiwany brudnopis szablonu"]))then
local kod_jezyka,kod_projektu=Kody();
local template;
if(not kod_jezyka and not kod_projektu)then
local polskie_nazwy_przestrzeni_nazw=mw.loadData("Module:Nazwy/Np");
template=polskie_nazwy_przestrzeni_nazw.Template;
else
local nazwy_modul=require("Module:Nazwy");
template=nazwy_modul.NpDane{nazwa="Template",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,};
end
local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne");
local obslugiwane=pudelko_pomocne_modul.Czy_przestrzen_nazw_jest_obslugiwana(frame,template,kod_jezyka,kod_projektu);
local brudnopis_szablon=frame.args["obsługiwany brudnopis szablonu"];
local parametry_modul=require("Module:Parametry");
if((obslugiwane)or(parametry_modul.CzyTak(brudnopis_szablon)))then
return "tak";
else
return "";
end;
end;
if(parametry_modul.CzyTak(pf.args["obsługiwany brudnopis modułu"]))then
local kod_jezyka,kod_projektu=Kody();
local modul;
if(not kod_jezyka and not kod_projektu)then
local polskie_nazwy_przestrzeni_nazw=mw.loadData("Module:Nazwy/Np");
modul=polskie_nazwy_przestrzeni_nazw.Module;
else
local nazwy_modul=require("Module:Nazwy");
modul=nazwy_modul.NpDane{nazwa="Module",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,};
end
local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne");
local obslugiwane=pudelko_pomocne_modul.Czy_przestrzen_nazw_jest_obslugiwana(frame,modul,kod_jezyka,kod_projektu);
local brudnopis_modulu=frame.args["obsługiwany brudnopis modułu"];
local parametry_modul=require("Module:Parametry");
if((obslugiwane)or(parametry_modul.CzyTak(brudnopis_modulu)))then
return "tak";
else
return "";
end;
end;
if(parametry_modul.CzyTak(pf.args["nieobsługiwane strony brudnopisu szablonów"]))then
local nieobslugiwane_strony_brudnopisu_szablonow=frame.args["nieobsługiwane strony brudnopisu szablonów"];
local nieobslugiwane_strony_jednostek_programowych=frame.args["nieobsługiwane strony jednostek programowych"];
local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne");
local polskie_nazwy_przestrzeni_nazw=mw.loadData("Module:Nazwy/Np");
local obslugiwane=pudelko_pomocne_modul.Czy_przestrzen_nazw_jest_obslugiwana(frame,polskie_nazwy_przestrzeni_nazw.Template);
if(not obslugiwane or parametry_modul.CzyTak(nieobslugiwane_strony_brudnopisu_szablonow) or parametry_modul.CzyTak(nieobslugiwane_strony_jednostek_programowych))then
return "tak";
else
return "";
end;
end;
if(parametry_modul.CzyTak(pf.args["nieobsługiwane strony brudnopisu opisu szablonów"]))then
local parametry_modul=require("Module:Parametry");
local nieobslugiwane_strony_brudnopisu_opisu_szablonow=frame.args["nieobsługiwane strony brudnopisu opisu szablonów"];
local nieobslugiwane_strony_opisu_jednostek_programowych=frame.args["nieobsługiwane strony opisu jednostek programowych"];
local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne");
local polskie_nazwy_przestrzeni_nazw=mw.loadData("Module:Nazwy/Np");
local obslugiwane=pudelko_pomocne_modul.Czy_przestrzen_nazw_jest_obslugiwana(frame,polskie_nazwy_przestrzeni_nazw.Template);
if(not obslugiwane or parametry_modul.CzyTak(nieobslugiwane_strony_brudnopisu_opisu_szablonow) or parametry_modul.CzyTak(nieobslugiwane_strony_opisu_jednostek_programowych))then
return "tak";
else
return "";
end;
end;
if(parametry_modul.CzyTak(pf.args["nieobsługiwane strony brudnopisu modułów"]))then
local nieobslugiwane_strony_brudnopisu_modolow=frame.args["nieobsługiwane strony brudnopisu modułów"];
local nieobslugiwane_strony_jednostek_programowych=frame.args["nieobsługiwane strony jednostek programowych"];
local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne");
local polskie_nazwy_przestrzeni_nazw=mw.loadData("Module:Nazwy/Np");
local obslugiwane=pudelko_pomocne_modul.Czy_przestrzen_nazw_jest_obslugiwana(frame,polskie_nazwy_przestrzeni_nazw.Module);
if(not obslugiwane or parametry_modul.CzyTak(nieobslugiwane_strony_brudnopisu_modolow) or parametry_modul.CzyTak(nieobslugiwane_strony_jednostek_programowych))then
return "tak";
else
return "";
end;
end;
if(parametry_modul.CzyTak(pf.args["nieobsługiwane strony brudnopisu opisu modułów"]))then
local parametry_modul=require("Module:Parametry");
local nieobslugiwane_strony_brudnopisu_opisu_modolow=frame.args["nieobsługiwane strony brudnopisu opisu modułów"];
local nieobslugiwane_strony_opisu_jednostek_programowych=frame.args["nieobsługiwane strony opisu jednostek programowych"];
local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne");
local polskie_nazwy_przestrzeni_nazw=mw.loadData("Module:Nazwy/Np");
local obslugiwane=pudelko_pomocne_modul.Czy_przestrzen_nazw_jest_obslugiwana(frame,polskie_nazwy_przestrzeni_nazw.Module);
if(not obslugiwane or parametry_modul.CzyTak(nieobslugiwane_strony_brudnopisu_opisu_modolow) or parametry_modul.CzyTak(nieobslugiwane_strony_opisu_jednostek_programowych))then
return "tak";
else
return "";
end;
end;
--[[]]
if(parametry_modul.CzyTak(pf.args["nieobsługiwane strony szablonów"]))then
local polskie_nazwy_przestrzeni_nazw=mw.loadData("Module:Nazwy/Np");
local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne");
local obslugiwane=pudelko_pomocne_modul.Czy_przestrzen_nazw_jest_obslugiwana(frame,polskie_nazwy_przestrzeni_nazw.Template);
local nieobslugiwane_strony_szablonow=frame.args["nieobsługiwane strony szablonów"];
local nieobslugiwane_strony_jednostek_programowych=frame.args["nieobsługiwane strony jednostek programowych"];
if(not obslugiwane)or (parametry_modul.CzyTak(nieobslugiwane_strony_szablonow) or parametry_modul.CzyTak(nieobslugiwane_strony_jednostek_programowych))then
return "tak";
else
return "";
end;
end;
if(parametry_modul.CzyTak(pf.args["nieobsługiwane strony opisu szablonów"]))then
local polskie_nazwy_przestrzeni_nazw=mw.loadData("Module:Nazwy/Np");
local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne");
local obslugiwane=pudelko_pomocne_modul.Czy_przestrzen_nazw_jest_obslugiwana(frame,polskie_nazwy_przestrzeni_nazw.Template);
local nieobslugiwane_strony_opisu_szablonow=frame.args["nieobsługiwane strony opisu szablonów"];
local nieobslugiwane_strony_opisu_jednostek_programowych=frame.args["nieobsługiwane strony opisu jednostek programowych"];
if(not obslugiwane)or (parametry_modul.CzyTak(nieobslugiwane_strony_opisu_szablonow) or parametry_modul.CzyTak(nieobslugiwane_strony_opisu_jednostek_programowych))then
return "tak";
else
return "";
end;
end;
if(parametry_modul.CzyTak(pf.args["nieobsługiwane strony modułów"]))then
local polskie_nazwy_przestrzeni_nazw=mw.loadData("Module:Nazwy/Np");
local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne");
local obslugiwane=pudelko_pomocne_modul.Czy_przestrzen_nazw_jest_obslugiwana(frame,polskie_nazwy_przestrzeni_nazw.Module);
local nieobslugiwane_strony_modolow=frame.args["nieobsługiwane strony modułów"];
local nieobslugiwane_strony_jednostek_programowych=frame.args["nieobsługiwane strony jednostek programowych"];
if(not obslugiwane)or (parametry_modul.CzyTak(nieobslugiwane_strony_modolow) or parametry_modul.CzyTak(nieobslugiwane_strony_jednostek_programowych))then
return "tak";
else
return "";
end;
end;
if(parametry_modul.CzyTak(pf.args["nieobsługiwane strony opisu modułów"]))then
local polskie_nazwy_przestrzeni_nazw=mw.loadData("Module:Nazwy/Np");
local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne");
local obslugiwane=pudelko_pomocne_modul.Czy_przestrzen_nazw_jest_obslugiwana(frame,polskie_nazwy_przestrzeni_nazw.Module);
local nieobslugiwane_strony_opisu_modolow=frame.args["nieobsługiwane strony opisu modułów"];
local nieobslugiwane_strony_opisu_jednostek_programowych=frame.args["nieobsługiwane strony opisu jednostek programowych"];
if((not obslugiwane)or(parametry_modul.CzyTak(nieobslugiwane_strony_opisu_modolow) or parametry_modul.CzyTak(nieobslugiwane_strony_opisu_jednostek_programowych)))then
return "tak";
else
return "";
end;
end;
if(parametry_modul.CzyTak(pf.args["dodatkowy parametr"]))then
local dodatkowy_parametr=pf.args["parametr"];
if(parametry_modul.CzyTak(frame.args[dodatkowy_parametr]))then
return "tak";
else
return "";
end;
end;
if(parametry_modul.CzyTak(pf.args["maksymalny numer argumentu nienazwanego"]))then
local maksymalny_numer_argumentu_nienazwanego=frame.args["maksymalny numer argumentu nienazwanego"];
if(parametry_modul.CzyTak(maksymalny_numer_argumentu_nienazwanego))then
return tonumber(maksymalny_numer_argumentu_nienazwanego) or 0;
else
return 0;
end;
end;
if(parametry_modul.CzyTak(pf.args["zwracane kategorie błędu"]))then
local dodatek_do_kategorii=pf.args["dodatek"]
local strings="";
local minimum_z_numerem_dodatkowego_warunku,maksimum_z_numerem_dodatkowego_warunku=parametry_modul.MinimalnyIMaksymalnyNumerPodstawyParametruTabeli(frame.args,"pierwszy człon kategorii błędu");
for licznik=minimum_z_numerem_dodatkowego_warunku,maksimum_z_numerem_dodatkowego_warunku,1 do
local wartosc_parametru=(licznik>1)and frame.args["pierwszy człon kategorii błędu "..licznik]or((licznik==1)and(frame.args["pierwszy człon kategorii błędu 1"] or frame.args["pierwszy człon kategorii błędu"]));
if((wartosc_parametru)and(wartosc_parametru~=""))then
strings=strings..((strings~="")and ", " or "").."[[:Category:"..wartosc_parametru.." - "..dodatek_do_kategorii.."|"..wartosc_parametru.." - "..dodatek_do_kategorii.."]]";
end;
end;
return strings;
end;
if(parametry_modul.CzyTak(pf.args["parametry"]))then
if(parametry_modul.CzyTak(frame.args["parametry"]))then
return frame.args["parametry"];
end;
return "";
end;
if(parametry_modul.CzyTak(pf.args["dodatkowa informacja"]))then
if(parametry_modul.CzyTak(frame.args["dodatkowa informacja"]))then
return frame.args["dodatkowa informacja"];
end;
return "";
end;
if(parametry_modul.CzyTak(pf.args["najniższy numer dodatkowego warunku"]))then
local minimum_z_numerem_dodatkowego_warunku,_=parametry_modul.MinimalnyIMaksymalnyNumerPodstawyParametruTabeli(frame.args,"dodatkowy warunek");
return minimum_z_numerem_dodatkowego_warunku;
end;
if(parametry_modul.CzyTak(pf.args["najwyższy numer dodatkowego warunku"]))then
local _,maksimum_z_numerem_dodatkowego_warunku=parametry_modul.MinimalnyIMaksymalnyNumerPodstawyParametruTabeli(frame.args,"dodatkowy warunek");
return maksimum_z_numerem_dodatkowego_warunku;
end;
if(parametry_modul.CzyTak(pf.args["parametry dodatkowego warunku"]))then
local numer_parametru_dodatkowego=tonumber(pf.args["numer parametru dodatkowego"]);
if(numer_parametru_dodatkowego)then
local parametr_dodatkowy_numer=(numer_parametru_dodatkowego==1)and (frame.args["parametry przykładowe dodatkowego warunku 1"] or frame.args["parametry przykładowe dodatkowego warunku"])or ((numer_parametru_dodatkowego>1)and frame.args["parametry przykładowe dodatkowego warunku "..numer_parametru_dodatkowego]);
return parametr_dodatkowy_numer;
end;
return "";
end;
if(parametry_modul.CzyTak(pf.args["kategorie parametrów dodatkowych"]))then
local numer_parametru_dodatkowego=tonumber(pf.args["numer parametru dodatkowego"]);
if(numer_parametru_dodatkowego)then
local dodatek_kategorii=((numer_parametru_dodatkowego==1)
and(frame.args["dodatkowy warunek 1"] or frame.args["dodatkowy warunek"]))
or ((numer_parametru_dodatkowego>1)and (frame.args["dodatkowy warunek "..numer_parametru_dodatkowego]));
if(not dodatek_kategorii)then return "";end;
local dodatek_kategorii=((numer_parametru_dodatkowego==1)
and(frame.args["dodatek kategorii błędu dodatkowego warunku 1"] or frame.args["dodatek kategorii błędu dodatkowego warunku"]))
or ((numer_parametru_dodatkowego>1)and (frame.args["dodatek kategorii błędu dodatkowego warunku "..numer_parametru_dodatkowego]));
if(not dodatek_kategorii)then dodatek_kategorii="błędne wywołania";end;
local cala_kategoria="";
local minimum_z_numerem_dodatkowego_warunku,maksimum_z_numerem_dodatkowego_warunku=parametry_modul.MinimalnyIMaksymalnyNumerPodstawyParametruTabeli(frame.args,"pierwszy człon kategorii błędu");
for licznik=minimum_z_numerem_dodatkowego_warunku,maksimum_z_numerem_dodatkowego_warunku,1 do
local wartosc_parametru=(licznik>1)and frame.args["pierwszy człon kategorii błędu "..licznik]or(frame.args["pierwszy człon kategorii błędu 1"] or frame.args["pierwszy człon kategorii błędu"]);
if((wartosc_parametru)and(wartosc_parametru~=""))then
cala_kategoria=cala_kategoria..((cala_kategoria~="")and ", " or "").."[[:Category:"..wartosc_parametru.." - "..dodatek_kategorii.."|"..wartosc_parametru.." - "..dodatek_kategorii.."]]";
end;
end;
return cala_kategoria;
end;
end;
if(parametry_modul.CzyTak(pf.args["istnieje taki parametr dodatkowego warunku"]))then
local numer_parametru_dodatkowego=tonumber(pf.args["numer parametru dodatkowego"]) or 1;
local czy_istnieje;
if(numer_parametru_dodatkowego==1)then czy_istnieje=frame.args["dodatkowy warunek 1"] or frame.args["dodatkowy warunek"];
else czy_istnieje=frame.args["dodatkowy warunek "..numer_parametru_dodatkowego];end;
return (require("Module:Parametry").CzyTak(czy_istnieje))and "tak" or "";
end;
end;
return p;
chzpn6mo5e9xq70po2c43brbff8j3a5
Moduł:Pudełko/Potrzebne
828
58908
553308
541903
2026-08-27T08:11:42Z
Persino
2851
553308
Scribunto
text/plain
local p={}
function p.Problemy_kontenerowe_szablonowe(frame, kod_liczbowy_przestrzeni_nazw)
local pf=frame:getParent();
local parametry_modul=require("Module:Parametry");
local zkategoria=not parametry_modul.CzyTak(frame.args["bez kategorii"] or pf.args["bez kategorii"]);
local brudnopis_wikibooks=parametry_modul.CzyTak(frame.args["obsługiwany brudnopis projektu"]);
local brudnopis_modul=parametry_modul.CzyTak(frame.args["obsługiwany brudnopis modułu"]);
local brudnopis_szablon=parametry_modul.CzyTak(frame.args["obsługiwany brudnopis szablonu"]);
local nieobslugiwane_strony_glowne=parametry_modul.CzyTak(frame.args["nieobsługiwane strony główne"]);
local nieobslugiwane_strony_szablonow=parametry_modul.CzyTak(frame.args["nieobsługiwane strony szablonów"]);
local nieobslugiwane_strony_opisu_szablonow=parametry_modul.CzyTak(frame.args["nieobsługiwane strony opisu szablonów"]);
local nieobslugiwane_strony_modulow=parametry_modul.CzyTak(frame.args["nieobsługiwane strony modułów"]);
local nieobslugiwane_strony_opisu_modulow=parametry_modul.CzyTak(frame.args["nieobsługiwane strony opisu szablonów"]);
local nieobslugiwane_strony_brudnopisu_szablonow=parametry_modul.CzyTak(frame.args["nieobsługiwane strony brudnopisu szablonów"]);
local nieobslugiwane_strony_brudnopisu_opisu_szablonow=parametry_modul.CzyTak(frame.args["nieobsługiwane strony brudnopisu opisu szablonów"]);
local nieobslugiwane_strony_brudnopisu_modulow=parametry_modul.CzyTak(frame.args["nieobsługiwane strony brudnopisu modułów"]);
local nieobslugiwane_strony_brudnopisu_opisu_modulow=parametry_modul.CzyTak(frame.args["nieobsługiwane strona brudnopisu opisu modułów"]);
local nieobslugiwane_strony_jednostek_programowych=parametry_modul.CzyTak(frame.args["nieobsługiwane strony jednostek programowych"]);
local nieobslugiwane_strony_opisu_jednostek_programowych=parametry_modul.CzyTak(frame.args["nieobsługiwane strony opisu jednostek programowych"]);
local nieobslugiwana_strony_glowne_uzytkownikow=nieobslugiwane_strony_glowne or parametry_modul.CzyTak(frame.args["nieobsługiwane strony główne użytkowników"]);
local nieobslugiwana_strona_glowna_projektu=nieobslugiwane_strony_glowne or parametry_modul.CzyTak(frame.args["nieobsługiwana strona główna projektu"]);
local nieobslugiwana_strona_glowna_dla_dzieci=nieobslugiwane_strony_glowne or parametry_modul.CzyTak(frame.args["nieobsługiwana strona główna dla dzieci"]);
local obslugiwane_niebiezace_wiki=parametry_modul.CzyTak(frame.args["obsługiwane niebieżące wiki"]);
local nieobslugiwane_polskie_wiki=parametry_modul.CzyTak(frame.args["nieobsługiwane polskie wiki"]);
local nieobslugiwane_lokalne_wiki=parametry_modul.CzyTak(frame.args["nieobsługiwane lokalne wiki"]);
local podkategoria_niebiezace_wiki;
local wskazuje_wiki;
local nazwij_jednostka=parametry_modul.CzyTak(frame.args["nazwij jednostką"] or pf.args["nazwij jednostką"]);
local wylocz_niezaleznosc_od_nazwij_jednostka=parametry_modul.CzyTak(frame.args["wyłącz niezależność od nazwij jednostką"]);
local w_user_jako_strony_uzykownika=parametry_modul.CzyTak(frame.args["obsługiwane indywidua użytkownika jako normalne strony"]);
local pudelko_modul=require("Module:Pudełko");
local lancuch_bledow={};
local tablica_lancuch_kategorii_bledow={};
local czy_ze_szczegolami=not parametry_modul.CzyTak(frame.args["bez szczegółów"] or pf.args["bez szczegółów"]);
local wiki_modul=require("Module:Wiki");
local kod_jezyka_tego_projektu;
local kod_projektu_tego_projektu;
local pudelko_modul=require("Module:Pudełko");
local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne");
local function AnalizujDane(i)
local kod_jezyka;local kod_projektu;
if(obslugiwane_niebiezace_wiki or nieobslugiwane_polskie_wiki or nieobslugiwane_lokalne_wiki)then
kod_jezyka,kod_projektu=pudelko_pomocne_modul.Wikikody_kontenera(frame,i);
else
kod_jezyka=pudelko_modul["Kod języka tego projektu"]();
kod_projektu=pudelko_modul["Kod projektu tego projektu"]();
end;
if(i>0)then
if(obslugiwane_niebiezace_wiki or nieobslugiwane_polskie_wiki or nieobslugiwane_lokalne_wiki)then
local klucz_projektu2=pudelko_pomocne_modul.Klucz_projektu(frame,i);
local kod_jezyka2=pudelko_pomocne_modul.Kod_jezyka(frame,i);
local kod_projektu2=pudelko_pomocne_modul.Kod_projektu(frame,i);
podkategoria_niebiezace_wiki=podkategoria_niebiezace_wiki
or (obslugiwane_niebiezace_wiki and "bieżące wiki"
or ((nieobslugiwane_polskie_wiki and nieobslugiwane_lokalne_wiki)
and "polskie lub lokalne, wiki"
or ((nieobslugiwane_polskie_wiki and not nieobslugiwane_lokalne_wiki)
and "polskie wiki" or "lokalne wiki"
) or nil));
wskazuje_wiki=wskazuje_wiki
or (obslugiwane_niebiezace_wiki and "niebieżący"
or ((nieobslugiwane_polskie_wiki and nieobslugiwane_lokalne_wiki)
and "niepolski i nielokalny"
or ((nieobslugiwane_polskie_wiki and not nieobslugiwane_lokalne_wiki)
and "niepolski" or "nielokalny"
) or nil));
if(not(klucz_projektu2 or kod_jezyka2 or kod_projektu2))then
if((obslugiwane_niebiezace_wiki)or(nieobslugiwane_polskie_wiki)or(nieobslugiwane_lokalne_wiki))then
if(czy_ze_szczegolami)then
table.insert(lancuch_bledow,"<li>Nie podano, które wiki ma osbługiwać, dla zmiennych o numerze "..i..".</li>");
if(zkategoria)then
parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - "..podkategoria_niebiezace_wiki);
end;
return;
else
return "tak";
end;
end;
else
local wynik=wiki_modul:OddawajDaneKodyWiki(klucz_projektu2,kod_jezyka2,kod_projektu2);
if((type(wynik)=="table") and (wynik[4]) and (wynik[5])) then
if((obslugiwane_niebiezace_wiki)or(nieobslugiwane_polskie_wiki)or(nieobslugiwane_lokalne_wiki))then
local pudelko_modul=require("Module:Pudełko");
local kod_jezyka_tego_projektu=pudelko_modul["Kod języka tego projektu"]();
local kod_projektu_tego_projektu=pudelko_modul["Kod projektu tego projektu"]();
if(parametry_modul.CzyTak(klucz_projektu2))then
if((kod_jezyka)and(kod_projektu))then
if(kod_jezyka==kod_jezyka_tego_projektu)and(kod_projektu==kod_projektu_tego_projektu)then
table.insert(lancuch_bledow,"<li>Podany klucz projektu, a w nim: kod języka i kod projektu, nie wskazują na projekt "..wskazuje_wiki..", dla zmiennych o numerze "..i..".</li>");
--projekt_lokalny_lub_polski_kategorie(podkategoria_niebiezace_wiki);
if(czy_ze_szczegolami)then
if(zkategoria)then
parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - "..podkategoria_niebiezace_wiki);
end;
else
return "tak";
end;
elseif((nieobslugiwane_polskie_wiki and not nieobslugiwane_lokalne_wiki and not obslugiwane_niebiezace_wiki) or (nieobslugiwane_polskie_wiki and nieobslugiwane_lokalne_wiki and not obslugiwane_niebiezace_wiki))and(kod_jezyka==kod_jezyka_tego_projektu)then
table.insert(lancuch_bledow,"<li>Podany klucz projektu: a w nim: kod języka, nie wskazuje na projekt "..wskazuje_wiki..", dla zmiennych o numerze "..i..".</li>");
if(czy_ze_szczegolami)then
if(zkategoria)then
parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - "..podkategoria_niebiezace_wiki);
end;
else
return "tak";
end;
elseif(((not nieobslugiwane_polskie_wiki and nieobslugiwane_lokalne_wiki and not obslugiwane_niebiezace_wiki)or(nieobslugiwane_polskie_wiki and nieobslugiwane_lokalne_wiki and not obslugiwane_niebiezace_wiki))and(kod_projektu==kod_projektu_tego_projektu))then
table.insert(lancuch_bledow,"<li>Podany klucz projektu: a w nim: kod projektu, nie wskazuje na projekt "..wskazuje_wiki..", dla zmiennych o numerze "..i..".</li>");
if(czy_ze_szczegolami)then
if(zkategoria)then
parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - "..podkategoria_niebiezace_wiki);
end;
else
return "tak";
end;
end;
end;
else
if (kod_jezyka2 and kod_projektu2
and ((((kod_jezyka2==kod_jezyka_tego_projektu)and(kod_projektu2~=kod_projektu_tego_projektu))
or(((not nieobslugiwane_polskie_wiki and nieobslugiwane_lokalne_wiki and not obslugiwane_niebiezace_wiki)
or(nieobslugiwane_polskie_wiki and nieobslugiwane_lokalne_wiki and not obslugiwane_niebiezace_wiki))and(kod_jezyka2~=kod_jezyka_tego_projektu)and(kod_projektu2==kod_projektu_tego_projektu))
or(((nieobslugiwane_polskie_wiki and not nieobslugiwane_lokalne_wiki and not obslugiwane_niebiezace_wiki)
or(nieobslugiwane_polskie_wiki and nieobslugiwane_lokalne_wiki and not obslugiwane_niebiezace_wiki)
or obslugiwane_niebiezace_wiki)and(kod_jezyka2==kod_jezyka_tego_projektu)and(kod_projektu2==kod_projektu_tego_projektu))
)
or(((nieobslugiwane_polskie_wiki and not nieobslugiwane_lokalne_wiki and not obslugiwane_niebiezace_wiki)or(nieobslugiwane_polskie_wiki and nieobslugiwane_lokalne_wiki and not obslugiwane_niebiezace_wiki))
and(kod_jezyka2==kod_jezyka_tego_projektu))
or(((not nieobslugiwane_polskie_wiki and nieobslugiwane_lokalne_wiki and not obslugiwane_niebiezace_wiki)or(nieobslugiwane_polskie_wiki and nieobslugiwane_lokalne_wiki and not obslugiwane_niebiezace_wiki))
and(kod_projektu2==kod_projektu_tego_projektu))
))then
table.insert(lancuch_bledow,"<li>Podany: kod języka i kod projektu, nie wskazują na projekt "..wskazuje_wiki..", dla zmiennych o numerze "..i..".</li>");
if(czy_ze_szczegolami)then
if(zkategoria)then
parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - "..podkategoria_niebiezace_wiki);
end;
else
return "tak";
end;
elseif((kod_jezyka2 and not kod_projektu2) and ((((nieobslugiwane_polskie_wiki and not nieobslugiwane_lokalne_wiki and not obslugiwane_niebiezace_wiki)or obslugiwane_niebiezace_wiki)and (kod_jezyka2==kod_jezyka_tego_projektu))or(not nieobslugiwane_polskie_wiki and nieobslugiwane_lokalne_wiki and not obslugiwane_niebiezace_wiki)or(nieobslugiwane_polskie_wiki and nieobslugiwane_lokalne_wiki and not obslugiwane_niebiezace_wiki)))
then
table.insert(lancuch_bledow,"<li>Podany kod języka nie wskazuje na projekt "..wskazuje_wiki..", dla zmiennych o numerze "..i..".</li>");
if(czy_ze_szczegolami)then
if(zkategoria)then
parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - "..podkategoria_niebiezace_wiki);
end;
else
return "tak";
end;
elseif((not kod_jezyka2 and kod_projektu2)and
(((((not nieobslugiwane_polskie_wiki and nieobslugiwane_lokalne_wiki and not obslugiwane_niebiezace_wiki)or obslugiwane_niebiezace_wiki))and (kod_projektu2==kod_projektu_tego_projektu))or(nieobslugiwane_polskie_wiki and not nieobslugiwane_lokalne_wiki and not obslugiwane_niebiezace_wiki)or(nieobslugiwane_polskie_wiki and nieobslugiwane_lokalne_wiki and not obslugiwane_niebiezace_wiki)))
then
table.insert(lancuch_bledow,"<li>Podany kod projektu nie wskazuje na projekt "..wskazuje_wiki..", dla zmiennych o numerze "..i..".</li>");
if(czy_ze_szczegolami)then
if(zkategoria)then
parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - "..podkategoria_niebiezace_wiki);
end;
else
return "tak";
end;
end;
end;
end;
else
if(czy_ze_szczegolami)then
if(wynik[1])then
table.insert(lancuch_bledow,"<li>Podany klucz projektu, jest błędny, dla zmiennych o numerze "..i..".</li>");
elseif(not wynik[4] and not wynik[5])then
table.insert(lancuch_bledow,"<li>Podany: kod języka i kod projektu, są błędne, dla zmiennych o numerze "..i..".</li>");
elseif(not wynik[4])then
table.insert(lancuch_bledow,"<li>Podany kod języka, jest błędny, dla zmiennych o numerze "..i..".</li>");
elseif(not wynik[5])then
table.insert(lancuch_bledow,"<li>Podany kod projektu, jest błędny, dla zmiennych o numerze "..i..".</li>");
end;
if(zkategoria)then
parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - błędne parametry wiki");
end;
else
return "tak";
end;
end;
end;
end;
end;
local obslugiwane1=pudelko_pomocne_modul.Czy_przestrzen_nazw_jest_obslugiwana(frame,"Template",kod_jezyka,kod_projektu);
local obslugiwane2=pudelko_pomocne_modul.Czy_przestrzen_nazw_jest_obslugiwana(frame,"Module",kod_jezyka,kod_projektu);
local nazwa_przestrzeni_nazw,nazwa_jednostki=pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,kod_liczbowy_przestrzeni_nazw,false,i);
local nazwy_modul=require("Module:Nazwy");
local wiki_modul=require("Module:Wiki");
local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,};
local czy_blad_nazwa_przestrzeni_nazw;
if(czy_biezaca)then
czy_blad_nazwa_przestrzeni_nazw=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",};
else
czy_blad_nazwa_przestrzeni_nazw=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",};
end;
if(not czy_blad_nazwa_przestrzeni_nazw)then
if((i==0)or ((i>0)and pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_dodatkowe(frame,i)))then
if(czy_ze_szczegolami)then
table.insert(lancuch_bledow,(i==0)
and "<li>Wartość, nazwy przestrzeni nazw, dla korzystanej jednostki jest nieprawidłowa.</li>"
or "<li>Wartość, nazwy przestrzeni nazw, dla zmiennych o numerze "..i.." jest nieprawidłowa.</li>"
);
if(zkategoria)then
parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - nieprawidłowa nazwa przestrzeni nazw");
end;
else
return "tak";
end;
end;
end;
if(nazwa_jednostki=="")then
if(czy_ze_szczegolami)then
table.insert(lancuch_bledow,(i==0)
and"<li>Wartość, nazwy jednostki, dla korzystanej jednostki jest pusta.</li>"
or"<li>Wartość, nazwy jednostki, dla zmiennych o numerze "..i.." jest pusta.</li>"
);
if(zkategoria)then
parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - pusta nazwa jednostki");
end;
else
return "tak";
end;
end;
local mo,norm_przed_lub_dyskusji;
local nieprawidlowa_niepusta_pelna_nazwa_jednostki=false;
if(czy_blad_nazwa_przestrzeni_nazw)then
if(nazwa_jednostki~="")then
nieprawidlowa_niepusta_pelna_nazwa_jednostki=pudelko_modul.CzyNiepoprawnaNazwa(((parametry_modul.CzyTak(czy_blad_nazwa_przestrzeni_nazw))and czy_blad_nazwa_przestrzeni_nazw..":" or "")..nazwa_jednostki);
mo=(not nieprawidlowa_niepusta_pelna_nazwa_jednostki)and pudelko_pomocne_modul.Typ_jednostki(frame, kod_liczbowy_przestrzeni_nazw,i) or nil;
end;
norm_przed_lub_dyskusji=pudelko_pomocne_modul.Normalna_przedmiotowa_lub_dyskusji_nazwa_przestrzeni_nazw(czy_blad_nazwa_przestrzeni_nazw, kod_liczbowy_przestrzeni_nazw) or nil;
end;
if((czy_blad_nazwa_przestrzeni_nazw)and(nazwa_jednostki~=""))then
if((i==0)or ((i>0)and pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_dodatkowe(frame,i)))then
local obslugiwane=czy_blad_nazwa_przestrzeni_nazw and pudelko_pomocne_modul.Czy_przestrzen_nazw_jest_obslugiwana(frame,czy_blad_nazwa_przestrzeni_nazw,kod_jezyka,kod_projektu);
if((not obslugiwane)and((not mo)or(not(((czy_blad_nazwa_przestrzeni_nazw=="Project")and(brudnopis_wikibooks
and(((mo=="jednostka brudnopisu projektu")or(mo=="strona brudnopisu projektu")or(mo=="podręcznik brudnopisu projektu")or(mo=="artykuł brudnopisu projektu"))or(parametry_modul.CzyTak(nazwa_jednostki)and(mw.ustring.match(nazwa_jednostki,"^[Bb]rudnopis/.*"))))))
or((czy_blad_nazwa_przestrzeni_nazw=="Template")and(parametry_modul.CzyTak(brudnopis_szablon)
and(((mo=="strona brudnopisu szablonu")or(mo=="strona brudnopisu opisu szablonu"))or(parametry_modul.CzyTak(nazwa_jednostki)and(mw.ustring.match(nazwa_jednostki,"^[Bb]rudnopis/.*"))))))
or((czy_blad_nazwa_przestrzeni_nazw=="Module")and(parametry_modul.CzyTak(brudnopis_modul)
and(((mo=="strona brudnopisu modułu")or(mo=="strona brudnopisu opisu modułu"))or(parametry_modul.CzyTak(nazwa_jednostki)and(mw.ustring.match(nazwa_jednostki,"^[Bb]rudnopis/.*")))))))))
)then
if(czy_ze_szczegolami)then
table.insert(lancuch_bledow,
(i==0)and"<li>Szablon wartości, nazwy przestrzeni nazw, dla korzystanej jednostki nie obsługuje.</li>"
or"<li>Szablon wartości, nazwy przestrzeni nazw, dla zmiennych o numerze "..i.." nie obsługuje.</li>"
);
if(zkategoria)then
parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - nieobsługiwana przestrzeń nazw");
end;
else
return "tak";
end;
end;
end;
end;
--local nieprawidlowa_niepusta_pelna_nazwa_jednostki=false;
if(czy_blad_nazwa_przestrzeni_nazw and nazwa_jednostki~="")then
if(nieprawidlowa_niepusta_pelna_nazwa_jednostki)then
if(czy_ze_szczegolami)then
table.insert(lancuch_bledow,
(i==0)and"<li>Wartość, nazwy jednostki, dla korzystanej jednostki jest nieprawidłowa.</li>"
or"<li>Wartość, nazwy jednostki, dla zmiennych o numerze "..i.." jest nieprawidłowa.</li>"
);
if(zkategoria)then
parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - nieprawidłowa nazwa jednostki");
end;
else
return "tak";
end;
end;
end;
if(czy_blad_nazwa_przestrzeni_nazw)and(nazwa_jednostki~="")then
if((not nieprawidlowa_niepusta_pelna_nazwa_jednostki)and((czy_blad_nazwa_przestrzeni_nazw=="")and(nazwa_jednostki~="")))then
local nazwy_modul=require("Module:Nazwy");
local nowa_nazwa_przestrzeni_nazw=nazwy_modul["NAZWAPRZESTRZENI"]{nazwa=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,};
if(nowa_nazwa_przestrzeni_nazw~="")then
if(czy_ze_szczegolami)then
table.insert(lancuch_bledow,
(i==0)and"<li>Zmienna <code>nazwa jednostki</code> zawiera w sobie przestrzeń.</li>"
or"<li>Zmienna nienazwana "..i.." zawiera w sobie przestrzeń.</li>"
);
if(zkategoria)then
parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - nazwa jednostki zawierająca w sobie przestrzeń");
end;
else
return "tak";
end;
end;
end;
end;
if((obslugiwane1)and(mo)and(mo=="strona szablonu")and((nieobslugiwane_strony_szablonow)or (nieobslugiwane_strony_jednostek_programowych)))then
if(czy_ze_szczegolami)then
table.insert(lancuch_bledow,
(i==0)and"<li>Strona szablonu jest nieobsługiwana.</li>"
or"<li>Strona szablonu wskazującego na zmienną "..i.." jest nieobsługiwana.</li>"
);
if(zkategoria)then
parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - nieobsługiwana strona szablonu");
end;
else
return "tak";
end;
end;
if((obslugiwane1)and(mo)and(mo=="strona opisu szablonu")and((nieobslugiwane_strony_opisu_szablonow)or (nieobslugiwane_strony_opisu_jednostek_programowych)))then
if(czy_ze_szczegolami)then
table.insert(lancuch_bledow,
(i==0)and"<li>Strona opisu szablonu jest nieobsługiwana.</li>"
or"<li>Strona opisu szablonu wskazującego na zmienną "..i.." jest nieobsługiwana.</li>"
);
if(zkategoria)then
parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - nieobsługiwana strona opisu szablonu");
end;
else
return "tak";
end;
end;
if((obslugiwane2)and(mo)and(mo=="strona modułu")and((nieobslugiwane_strony_modulow)or (nieobslugiwane_strony_jednostek_programowych)))then
if(czy_ze_szczegolami)then
table.insert(lancuch_bledow,
(i==0)and"<li>Strona modułu jest nieobsługiwana.</li>"
or"<li>Strona modułu wskazującego na zmienną "..i.." jest nieobsługiwana.</li>"
);
if(zkategoria)then
parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - nieobsługiwana strona modułu");
end;
else
return "tak";
end;
end;
if((obslugiwane2)and(mo)and(mo=="strona opisu modułu")and((nieobslugiwane_strony_opisu_modulow)or (nieobslugiwane_strony_opisu_jednostek_programowych)))then
if(czy_ze_szczegolami)then
table.insert(lancuch_bledow,
(i==0)and"<li>Strona opisu modułu jest nieobsługiwana.</li>"
or"<li>Strona opisu modułu wskazującego na zmienną "..i.." jest nieobsługiwana.</li>"
);
if(zkategoria)then
parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - nieobsługiwana strona opisu modułu");
end;
else
return "tak";
end;
end;
if((mo)and(mo=="strona brudnopisu szablonu")and((nieobslugiwane_strony_brudnopisu_szablonow)or (nieobslugiwane_strony_jednostek_programowych)))then
if(czy_ze_szczegolami)then
table.insert(lancuch_bledow,
(i==0)and"<li>Strona brudnopisu szablonu jest nieobsługiwana.</li>"
or"<li>Strona brudnopisu szablonu wskazującego na zmienną "..i.." jest nieobsługiwana.</li>"
);
if(zkategoria)then
parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - nieobsługiwana strona brudnopisu szablonu");
end;
else
return "tak";
end;
end;
if((mo)and(mo=="strona brudnopisu opisu szablonu")and((nieobslugiwane_strony_brudnopisu_opisu_szablonow)or (nieobslugiwane_strony_opisu_jednostek_programowych)))then
if(czy_ze_szczegolami)then
table.insert(lancuch_bledow,
(i==0)and"<li>Strona brudnopisu opisu szablonu jest nieobsługiwana.</li>"
or"<li>Strona brudnopisu opisu szablonu wskazującego na zmienną "..i.." jest nieobsługiwana.</li>"
);
if(zkategoria)then
parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - nieobsługiwana strona brudnopisu opisu szablonu");
end;
else
return "tak";
end;
end;
if((mo)and(mo=="strona brudnopisu modułu")and((nieobslugiwane_strony_brudnopisu_modulow)or (nieobslugiwane_strony_jednostek_programowych)))then
if(czy_ze_szczegolami)then
table.insert(lancuch_bledow,
(i==0)and"<li>Strona brudnopisu modulu jest nieobsługiwana.</li>"
or"<li>Strona brudnopisu modułu wskazującego na zmienną "..i.." jest nieobsługiwana.</li>"
);
if(zkategoria)then
parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - nieobsługiwana strona brudnopisu modułu");
end;
else
return "tak";
end;
end;
if((mo)and(mo=="strona brudnopisu opisu modułu")and((nieobslugiwane_strony_brudnopisu_opisu_modulow)or (nieobslugiwane_strony_opisu_jednostek_programowych)))then
if(czy_ze_szczegolami)then
table.insert(lancuch_bledow,
(i==0)and"<li>Strona brudnopisu opisu modułu jest nieobsługiwana.</li>"
or"<li>Strona brudnopisu opisu modułu wskazującego na zmienną "..i.." jest nieobsługiwana.</li>"
);
if(zkategoria)then
parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - nieobsługiwana strona brudnopisu opisu modułu");
end;
else
return "tak";
end;
end;
if(((i>0)and(frame.args["strona główna projektu "..i] or pf.args["strona główna projektu "..i]))
or ((i==0)and(frame.args["strona główna projektu"] or pf.args["strona główna projektu"])))then
local projekt=pudelko_pomocne_modul.Nazwa_strony_bazowej_projektu_ze_zmiennej(frame,i,kod_jezyka,kod_projektu);
local nazwa_strony_glownej_projektu_z_wikidanych=pudelko_pomocne_modul.Nazwa_strony_bazowej_projektu_z_wikidanych(kod_jezyka,kod_projektu);
projekt=(not projekt)and nazwa_strony_glownej_projektu_z_wikidanych or projekt;
local dowolna_nazwa_strony_glownej_projektu=parametry_modul.CzyTak(frame.args["dowolna nazwa strony głównej projektu"]);
if(projekt)then
if(projekt=="")then
if(czy_ze_szczegolami)then
table.insert(lancuch_bledow,
(i==0)and"<li>Wartość nazwy, strony głównej projektu, dla zmiennej <code>strona główna projektu</code> jest pusta.</li>"
or "<li>Wartość nazwy, strony głównej projektu, dla zmiennej <code>strona główna projektu .."..i.."</code> jest pusta.</li>"
);
if(zkategoria)then
parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - pusta nazwa strony głównej projektu");
end;
else
return "tak";
end;
elseif((not dowolna_nazwa_strony_glownej_projektu)and(not mw.ustring.match(projekt,"^[^/]+$")))then
if(czy_ze_szczegolami)then
table.insert(lancuch_bledow,
(i==0)and"<li>Wartość nazwy, strony głównej projektu, dla zmiennej <code>strona główna projektu</code> zawiera prawe ukośniki.</li>"
or "<li>Wartość nazwy, strony głównej projektu, dla zmiennej <code>strona główna projektu "..i.."</code> zawiera prawe ukośniki</li>"
);
if(zkategoria)then
parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - nieprawidłowa nazwa strony głównej projektu");
end;
else
return "tak";
end;
elseif(pudelko_modul.CzyNiepoprawnaNazwa(projekt))then
if(czy_ze_szczegolami)then
table.insert(lancuch_bledow,
(i==0)and"<li>Wartość nazwy, strony głównej projektu, w zmiennej <code>strona główna projektu</code> ma nazwę niepustą nieprawidłową.</li>"
or "<li>Wartość nazwy, strony głównej projektu, w zmiennej <code>strona główna projektu "..i.."</code> ma nazwę niepustą nieprawidłową.</li>"
);
if(zkategoria)then
parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - nieprawidłowa nazwa strony głównej projektu");
end;
else
return "tak";
end;
end;
end;
end;
local typ=frame.args["typ jednostki"..((i)and((i~=0))and (" "..i) or "")] or pf.args["typ jednostki"..((i)and((i~=0))and (" "..i) or "")];
if((czy_blad_nazwa_przestrzeni_nazw)and(nazwa_jednostki~="")and(not nieprawidlowa_niepusta_pelna_nazwa_jednostki))then
if(nieobslugiwana_strona_glowna_projektu)then
if(mo=="strona główna projektu")then
if(czy_ze_szczegolami)then
if(typ~="strona główna projektu")then
table.insert(lancuch_bledow,
(i==0)and"<li>Wstawiono szablon na stronę główną projektu.</li>"
or ((frame.args["strona główna projektu "..i]
or pf.args["strona główna projektu "..i])and"<li>Szablon, wskazuje na stronę główna projektu, według zmiennej <code>strona główna projektu "..i.."</code>, dla zmiennych o numerze "..i..".</li>"
or"<li>Szablon, wskazuje na stronę główną projektu, dla zmiennych o numerze "..i..".</li>"
));
else
table.insert(lancuch_bledow,(i==0)and "<li>Wstawiono szablon, na stronę, z ustawioną wartością <code>typ jednostki = strona główna projektu</code>.</li>"
or"<li>Wstawiono szablon, na stronę, z ustawioną wartością <code>typ jednostki "..i.." = strona główna projektu</code>.</li>"
);
end;
if(zkategoria)then
parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - nieobsługiwana strona główna projektu");
end;
else
return "tak";
end;
end;
end;
end;
if(kod_projektu==require("Module:Pudełko")["Kod projektu tego projektu"]())then
if(((i>0)and(frame.args["strona główna dla dzieci "..i] or pf.args["strona główna dla dzieci "..i]))
or ((i==0)and(frame.args["strona główna dla dzieci"] or pf.args["strona główna dla dzieci"])))then
local junior=pudelko_pomocne_modul.Nazwa_strony_bazowej_dla_dzieci_ze_zmiennej(frame,i,kod_jezyka,kod_projektu);
local nazwa_strony_glownej_wikijuniora_z_wikidanych=pudelko_pomocne_modul.Nazwa_strony_bazowej_dla_dzieci_z_wikidanych(kod_jezyka)
junior=(not junior)and nazwa_strony_glownej_wikijuniora_z_wikidanych or junior;
local dowolna_nazwa_strony_glownej_wikijuniora=parametry_modul.CzyTak(frame.args["dowolna nazwa strony głównej dla dzieci"]);
if(junior)then
if(junior=="")then
if(czy_ze_szczegolami)then
table.insert(lancuch_bledow,
(i==0)and"<li>Wartość nazwy, strony głównej dla dzieci, w zmiennej <code>strona główna dla dzieci</code> jest pusta.</li>"
or "<li>Wartość nazwy, strony głównej dla dzieci, w zmiennej <code>strona główna dla dzieci .."..i.."</code> jest pusta.</li>"
);
if(zkategoria)then
parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - pusta nazwa strony głównej dla dzieci");
end;
else
return "tak";
end;
elseif((not dowolna_nazwa_strony_glownej_wikijuniora)and(not mw.ustring.match(junior,"^[^/]+$")))then
if(czy_ze_szczegolami)then
table.insert(lancuch_bledow,
(i==0)and"<li>Wartość nazwy, strony głównej dla dzieci, w zmiennej <code>strona główna dla dzieci</code> zawiera prawe ukośniki.</li>"
or"<li>Wartość nazwy, strony głównej dla dzieci, w zmiennej <code>strona główna dla dzieci "..i.."</code> zawiera prawe ukośniki.</li>"
);
if(zkategoria)then
parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - nieprawidłowa nazwa strony głównej dla dzieci");
end;
else
return "tak";
end;
elseif(pudelko_modul.CzyNiepoprawnaNazwa(junior))then
if(czy_ze_szczegolami)then
table.insert(lancuch_bledow,
(i==0)and"<li>Wartość nazwy, strony głównej dla dzieci, w zmiennej <code>strona główna dla dzieci</code> ma nazwę niepustą nieprawidłową.</li>"
or"<li>Wartość nazwy, strony głównej dla dzieci, w zmiennej <code>strona główna dla dzieci "..i.."</code> ma nazwę niepustą nieprawidłową.</li>"
);
if(zkategoria)then
parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - nieprawidłowa nazwa strony głównej dla dzieci");
end;
else
return "tak";
end;
end;
end;
end;
if((czy_blad_nazwa_przestrzeni_nazw)and(nazwa_jednostki~="")and(not nieprawidlowa_niepusta_pelna_nazwa_jednostki))then
if(nieobslugiwana_strona_glowna_dla_dzieci)then
if(mo=="strona główna dla dzieci")then
if(czy_ze_szczegolami)then
if(typ~="strona główna dla dzieci")then
table.insert(lancuch_bledow,
(i==0)and"<li>Wstawiono szablon na stronę główną dla dzieci.</li>"
or ((frame.args["strona główna dla dzieci "..i]
or pf.args["strona główna dla dzieci "..i])and"<li>Szablon, wskazuje na stronę główną dla dzieci, według zmiennej <code>strona główna dla dzieci .."..i..", dla zmiennych o numerze "..i..".</code>.</li>"
or"<li>Szablon, wskazuje na stronę główną dla dzieci, dla zmiennych o numerze "..i..".</li>"
));
else
table.insert(lancuch_bledow,(i==0)and "<li>Wstawiono szablon, na stronę, z ustawioną wartością <code>typ jednostki = strona główna dla dzieci</code>.</li>"
or"<li>Wstawiono szablon, na stronę, z ustawioną wartością <code>typ jednostki "..i.." = strona główna dla dzieci</code>.</li>"
);
end
if(zkategoria)then
parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - nieobsługiwana strona główna dla dzieci");
end;
else
return "tak";
end;
end;
end;
end;
end;
local obslugiwane3=(czy_blad_nazwa_przestrzeni_nazw)and((norm_przed_lub_dyskusji=="User") and pudelko_pomocne_modul.Czy_przestrzen_nazw_jest_obslugiwana(frame,"User",kod_jezyka,kod_projektu));
if((czy_blad_nazwa_przestrzeni_nazw)and(nazwa_jednostki~="")and(not nieprawidlowa_niepusta_pelna_nazwa_jednostki)and(obslugiwane3))then
if(nieobslugiwana_strony_glowne_uzytkownikow)then
if(mo=="strona główna użytkownika")then
if(czy_ze_szczegolami)then
table.insert(lancuch_bledow,
(i==0)and "<li>Wstawiono szablon na stronę główną użytkownika.</li>"
or"<li>Szablon, wskazuje na stronę główną użytkownika, dla zmiennych o numerze "..i..".</li>"
);
if(zkategoria)then
parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - nieobsługiwana strona główna użytkownika");
end;
else
return "tak";
end;
elseif((mo~="jednostka użytkownika")and(mo~="podręcznik użytkownika")and(mo~="artykuł użytkownika")and(mo~="strona główna użytkownika")and((mo~="strona użytkownika")or(w_user_jako_strony_uzykownika)))then
if(czy_ze_szczegolami)then
if(mw.ustring.match(nazwa_jednostki,"^[^/]+$"))then
table.insert(lancuch_bledow,
(i==0)and "<li>Wstawiono szablon na stronę główną użytkownika.</li>"
or"<li>Szablon, wskazuje na stronę główną użytkownika, dla zmiennych o numerze "..i..".</li>"
);
if(zkategoria)then
parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - nieobsługiwana strona główna użytkownika");
end;
end;
else
return "tak";
end;
end;
end;
end;
if((not nieprawidlowa_niepusta_pelna_nazwa_jednostki)
and((not wylocz_niezaleznosc_od_nazwij_jednostka)or(not nazwij_jednostka))
and(((i>0)and((frame.args["typ jednostki "..i])or(pf.args["typ jednostki "..i])or(pf.args["typ jednostki"])))
or ((i==0)and((frame.args["typ jednostki"])or (pf.args["typ jednostki"]))))
)then
local typ_i=(i>0)and((frame.args["typ jednostki "..i])or(pf.args["typ jednostki "..i])) or nil;
if(mo=="(błąd typu jednostki)")then
if(czy_ze_szczegolami)then
table.insert(lancuch_bledow,
(i==0)and"<li>Podana wartość zmiennej <code>typ jednostki</code> jest nieprawidłowa.</li>"
or (typ_i and "<li>Podana wartość zmiennej <code>typ jednostki "..i.."</code> jest nieprawidłowa.</li>"
or "<li>Podana wartość zmiennej <code>typ jednostki</code> dla zmiennych o numerze "..i.." jest nieprawidłowa.</li>")
);
if(zkategoria)then
parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - nieprawidłowa wartość typu jednostki");
end;
else
return "tak";
end;
elseif(mo=="(błąd niezgodności)")then
if(czy_ze_szczegolami)then
table.insert(lancuch_bledow,
(i==0)and"<li>Podana wartość zmiennej <code>typ jednostki</code> jest niezgodna z podaną zmienną: <code>nazwą przestrzeni nazw</code>.</li>"
or (typ_i and ("<li>Podana wartość zmiennej <code>typ jednostki "..i.."</code> jest niezgodna z podaną: <code>nazwą przestrzeni nazw "..i.."</code>.</li>")
or("<li>Podana wartość zmiennej <code>typ jednostki</code> dla zmiennych o numerze "..i.." jest niezgodna z podaną: <code>nazwą przestrzeni nazw "..i.."</code>.</li>"))
);
if(zkategoria)then
parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - niezgodna wartość typu jednostki");
end;
else
return "tak";
end;
elseif(mo=="(błąd parametrów pudełkowych)")then
if(czy_ze_szczegolami)then
table.insert(lancuch_bledow,
(i==0)and"<li>Podana wartość zmiennej <code>typ jednostki</code> jest niezgodna z podanymi parametrami pudełkowymi.</li>"
or (typ_i and "<li>Podana wartość zmiennej <code>typ jednostki "..i.."</code> jest niezgodna z podanymi parametrami pudełkowymi.</li>"
or "<li>Podana wartość zmiennej <code>typ jednostki</code> dla zmiennych o numerze "..i.." jest niezgodna z podanymi parametrami pudełkowymi.</li>")
);
if(zkategoria)then
parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - niezgodne parametry pudełkowe");
end;
else
return "tak";
end;
end;
end;
if(not czy_ze_szczegolami)then return "";end;
end;
local num=frame.args["nazwy jednostki numerowane"];
if(parametry_modul.CzyTak(num))then
AnalizujDane(0);
local maksymalny_numer_elementu_nienazwanego=frame.args["maksymalny numer argumentu nienazwanego"];
local czy_maksymalny_numer_elementu_nienazwanego=parametry_modul.CzyTak(maksymalny_numer_elementu_nienazwanego);
local num2;
if(czy_maksymalny_numer_elementu_nienazwanego)then
num2=tonumber(maksymalny_numer_elementu_nienazwanego) or 0;
else
num2=0;
end;
local minimum_z_numerem_dodatkowego_warunku,maksimum_z_numerem_dodatkowego_warunku=parametry_modul.MinimalnyIMaksymalnyNumerParametruPodstawyTabeli(frame.args,"nazwa jednostki",true);
minimum_z_numerem_dodatkowego_warunku=minimum_z_numerem_dodatkowego_warunku or 0;
minimum_z_numerem_dodatkowego_warunku=(minimum_z_numerem_dodatkowego_warunku>0)and minimum_z_numerem_dodatkowego_warunku or 1;
maksimum_z_numerem_dodatkowego_warunku=math.max(maksimum_z_numerem_dodatkowego_warunku,parametry_modul.MaksymalnaLiczbaParametruNienazwanegoTablicy(pf.args));
if(pf.args["cel"])then maksimum_z_numerem_dodatkowego_warunku=math.max(1,maksimum_z_numerem_dodatkowego_warunku);end;
minimum_z_numerem_dodatkowego_warunku=math.min(minimum_z_numerem_dodatkowego_warunku,parametry_modul.MinimalnaLiczbaParametruNienazwanegoTablicy(pf.args));
if(pf.args["cel"])then minimum_z_numerem_dodatkowego_warunku=math.min(1,minimum_z_numerem_dodatkowego_warunku);end;
if(czy_maksymalny_numer_elementu_nienazwanego)then
if(num2>0)then
if(maksimum_z_numerem_dodatkowego_warunku>0)then
if(minimum_z_numerem_dodatkowego_warunku>num2)then
maksimum_z_numerem_dodatkowego_warunku=0;
elseif(maksimum_z_numerem_dodatkowego_warunku>=num2)then
for i=num2,1,-1 do
local wartosc_parametru=(i>=1)
and frame.args["nazwa jednostki "..tostring(i)]
or ((i==1)and pf.args["cel"] or pf.args[i]);
if(wartosc_parametru)then
maksimum_z_numerem_dodatkowego_warunku=i;
break;
end;
end;
end;
end;
end;
end;
local tabelka_braku_zmiennych={};
for i=1,maksimum_z_numerem_dodatkowego_warunku,1 do
local wartosc_parametru=(i>=1)
and frame.args["nazwa jednostki "..tostring(i)]
or ((i==1)and pf.args["cel"] or pf.args[i]);
if(not wartosc_parametru)then
if(czy_ze_szczegolami)then
tabelka_braku_zmiennych[#tabelka_braku_zmiennych+1]=i;
else
return "tak";
end;
else
local wynik=AnalizujDane(i);
if((not czy_ze_szczegolami)and(wynik~=""))then return wynik;end;
end;
end;
if(czy_ze_szczegolami)then
if(parametry_modul["CzySąElementyNumerowaneTablicy"](tabelka_braku_zmiennych))then
local str_braku_parametru="";
for i,wartosc in ipairs(tabelka_braku_zmiennych)do
str_braku_parametru=str_braku_parametru..((str_braku_parametru=="")and "" or ((tabelka_braku_zmiennych[i+1])and ", " or " i "))..wartosc;
end;
table.insert(lancuch_bledow,"<li>Brak parametrów o numerach: "..str_braku_parametru..", w obsługiwanym zakresie zmiennych.</li>");
if(zkategoria)then
parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - brak parametrów");
end;
end;
end;
else
local wynik=AnalizujDane(0);
if((not czy_ze_szczegolami)and(wynik~=""))then return wynik;end;
end;
--local lancuch_kategorii_bledow_zlaczony=table.concat(lancuch_kategorii_bledow,"");
local minimum_z_numerem_dodatkowego_warunku,maksimum_z_numerem_dodatkowego_warunku=parametry_modul.MinimalnyIMaksymalnyNumerParametruPodstawyTabeli(frame.args,"dodatkowy warunek");
for i=minimum_z_numerem_dodatkowego_warunku, maksimum_z_numerem_dodatkowego_warunku,1 do
local wartosc_parametru=(i>1)and frame.args["dodatkowy warunek "..i] or ((i==1)and frame.args["dodatkowy warunek 1"] or frame.args["dodatkowy warunek"]);
if(parametry_modul.CzyTak(wartosc_parametru))then
if(czy_ze_szczegolami)then
local bledy_dodatkowego_warunku=frame.args["błędy dodatkowego warunku "..i];
if(parametry_modul.CzyTak(bledy_dodatkowego_warunku))then
local bledy_w_postaci_kategorii="<li>"..bledy_dodatkowego_warunku.."</li>";
table.insert(lancuch_bledow,bledy_dodatkowego_warunku);
if(zkategoria)then
local bledy_w_postaci_kategorii=frame.args["dodatek kategorii błędu dodatkowego warunku "..i];
if(parametry_modul.CzyTak(bledy_w_postaci_kategorii))then
local bledy_w_postaci_kategorii="{{pierwszy człon kategorii błędu}} - "..bledy_w_postaci_kategorii;
parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,bledy_w_postaci_kategorii);
else
parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - błędne wywołania");
end;
end;
else
table.insert(lancuch_bledow,"<li>Błąd wywołania szablonu.</li>");
if(zkategoria)then
local bledy_w_postaci_kategorii=frame.args["dodatek kategorii błędu dodatkowego warunku"];
if(parametry_modul.CzyTak(bledy_w_postaci_kategorii))then
local bledy_w_postaci_kategorii="{{pierwszy człon kategorii błędu}} - "..bledy_w_postaci_kategorii;
parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,bledy_w_postaci_kategorii);
else
parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - błędne wywołania");
end;
end;
end;
else
return "tak";
end;
end;
end;
if(not czy_ze_szczegolami)then return "";end;
local templates={};
--templates["{{Category}}"]="Category";
local lancuch_kategorii_bledow_zlaczony2="";
local minimum_z_numerem_dodatkowego_warunku,maksimum_z_numerem_dodatkowego_warunku=parametry_modul.MinimalnyIMaksymalnyNumerParametruPodstawyTabeli(frame.args,"pierwszy człon kategorii błędu");
if(#tablica_lancuch_kategorii_bledow>0)then
local wszystkie_bledy={};
--wszystkie_bledy[1]="Szablon";
for i=minimum_z_numerem_dodatkowego_warunku,maksimum_z_numerem_dodatkowego_warunku,1 do
local pierwszy_czlon_kategorii_bledow=(i>1)and frame.args["pierwszy człon kategorii błędu "..i] or (frame.args["pierwszy człon kategorii błędu "..1] or frame.args["pierwszy człon kategorii błędu"] );
templates["{{pierwszy człon kategorii błędu}}"]=pierwszy_czlon_kategorii_bledow;
for _,kategoria in ipairs(tablica_lancuch_kategorii_bledow) do
parametry_modul.DodajElementDoZbioru(wszystkie_bledy,mw.ustring.gsub(kategoria,"{{[%w%s]+}}",templates));
end;
end;
--lancuch_kategorii_bledow_zlaczony2=string.gsub(lancuch_kategorii_bledow_zlaczony2,"%[%[Category:","{{#invoke:Ramka|Szablon|parametry funkcji modułu pudełek=tak|Nazwa=Kategoria|");
--lancuch_kategorii_bledow_zlaczony2=string.gsub(lancuch_kategorii_bledow_zlaczony2,"%]%]","}}");
wszystkie_bledy["parametry podstawowe funkcji modułu pudełek"]="tak";
wszystkie_bledy["Nazwa"]="Kategorie";
local frame2=frame:getParent():newChild{title="#invoke:Ramka",args=wszystkie_bledy,};
local ramka_modul=require("Module:Ramka");
lancuch_kategorii_bledow_zlaczony2=ramka_modul["Szablon"](frame2);
end;
local lancuch=table.concat(lancuch_bledow,"")..lancuch_kategorii_bledow_zlaczony2;
if(lancuch~="")then lancuch="<ul>"..lancuch.."</ul>";end;
return lancuch;
end;
function p.Cecha_kontenerowa_szablonowa(frame,__funkcja)
local parametry_modul=require("Module:Parametry");
local parametry_pudelka=frame:getParent().args["parametry pudełka"]
if(parametry_modul.CzyTak(parametry_pudelka))then
return require("Module:Pudełko/ParametryCechy")["Parametry ogólnego pudełka"](frame,__funkcja);
end;
local funkcja=frame.args["funkcja cechowania"];
if(not parametry_modul.CzyTak(funkcja))then funkcja=__funkcja;end;
local modul=frame.args["moduł"];
if(not parametry_modul.CzyTak(modul))then modul="Pudełko";end;
local cecha=require("Module:"..modul)[funkcja](frame);
return cecha;
end;
function p.Generalny_kontener_szablonowy(frame)
local pf=frame.getParent and frame:getParent() or {args={}};
local parametry_modul=require("Module:Parametry");
local parametry_pudelka=pf.args["parametry pudełka"]
if(parametry_modul.CzyTak(parametry_pudelka))then
return frame.args["cecha"] or "";
end;
local alternatywny_szablon=frame.args["alternatywny szablon"];
if(parametry_modul.CzyTak(alternatywny_szablon))then return alternatywny_szablon; end
local cecha;
local bez_bledu=parametry_modul.CzyTak(frame.args["bez błędu"] or pf.args["bez błędu"]);
local czy_ogolne_pudelko;
if(not bez_bledu)then cecha=frame.args["cecha"] or ""; czy_ogolne_pudelko=(cecha=="");else czy_ogolne_pudelko=true;end;
if(czy_ogolne_pudelko)then
local warunek_niealternatywnego_wywolania=frame.args["warunek niealternatywnego wywołania"];
if((warunek_niealternatywnego_wywolania)and(warunek_niealternatywnego_wywolania==""))then
local alternatywne_wywolanie=frame.args["alternatywne wywołanie"];
if(alternatywne_wywolanie)then
return alternatywne_wywolanie;
end;
end;
end;
local szablon=frame.args["szablon"];
local pudelko;local grafika;local grafika_prawo;local typ;local ponizej;local styl_tekstu;local styl_ponizej;
local nazwa_przestrzeni_nazw=frame.args["nazwa przestrzeni nazw"];
local komunikat=frame.args["własny komunikat"];
local szablon2=(parametry_modul.CzyTak(szablon)) and szablon or require("Module:Nazwy")["NAZWASTRONY"](pf:getTitle());
local czy_komunikat=parametry_modul.CzyTak(komunikat);
local funkcja_komunikatu;
local wynik_komunikatu;
local tekst;
local klasa;local styl;
if(czy_komunikat)then
local modul=frame.args["moduł"];
if(not parametry_modul.CzyTak(modul))then modul="Pudełko";end;
funkcja_komunikatu=require("Module:"..modul)[komunikat];
end;
if(czy_ogolne_pudelko)then
----
local czy_wybor;
local wybor=frame.args["wybór"];
if((wybor)and(wybor~=""))then
wybor=string.match(wybor,"^(%d+)$") or nil;
czy_wybor=wybor and (tonumber(wybor)>0) or nil;
wybor=czy_wybor and wybor or nil;
end;
if(funkcja_komunikatu)then
wynik_komunikatu=funkcja_komunikatu(frame,wybor);
end;
----
pudelko=(czy_wybor and frame.args["nazwa "..wybor] or frame.args["nazwa"]) or "mbox";
grafika=czy_wybor and frame.args["grafika "..wybor] or frame.args["grafika"];
grafika_prawo=czy_wybor and frame.args["grafika prawo "..wybor] or frame.args["grafika prawo"];
typ=czy_wybor and frame.args["typ "..wybor] or frame.args["typ"];
typ=parametry_modul.CzyTak(typ) and typ or "zawartość";
if(not wynik_komunikatu)then
tekst=czy_wybor and (frame.args["tekst "..wybor] or frame.args["treść "..wybor]) or (frame.args["tekst"] or frame.args["treść"]) or "";
end;
local parametry=czy_wybor and frame.args["parametry "..wybor] or frame.args["parametry"] or "";
klasa=czy_wybor and frame.args["klasa "..wybor] or frame.args["klasa"];
styl=czy_wybor and frame.args["styl "..wybor] or frame.args["styl"];
styl_tekstu=czy_wybor and frame.args["styl tekstu "..wybor] or frame.args["styl tekstu"];
styl_ponizej=czy_wybor and frame.args["styl poniżej "..wybor] or frame.args["styl poniżej"];
local kategorie=czy_wybor and frame.args["kategorie "..wybor] or frame.args["kategorie"] or "";
ponizej=czy_wybor and frame.args["poniżej "..wybor] or frame.args["poniżej"];
tekst=(wynik_komunikatu or tekst)..parametry..kategorie;
else
pudelko="ombox";
grafika="poważny";
typ="poważny";
local czy_ze_szczegolami=not parametry_modul.CzyTak(frame.args["bez szczegółów"] or pf.args["bez szczegółów"]);
if(czy_ze_szczegolami)then
tekst="'''Szablon ".."{{[[Template:"..szablon2.."|"..szablon2.."]]}} zgłosił następujące błędy:'''"..cecha;
else
tekst="Szablon '''".."{{[[Template:"..szablon2.."|"..szablon2.."]]}}''' jest w stanie błędu, popraw parametry szablonu!";
end;
if(funkcja_komunikatu)then
wynik_komunikatu=funkcja_komunikatu{args={tekst=tekst,},};
end;
end;
local argumenty={
["klasa"]=klasa,
["styl"]=styl,
["nazwa przestrzeni nazw"]=nazwa_przestrzeni_nazw,
["typ"]=typ,
["grafika"]=grafika,
["grafika prawo"]=grafika_prawo,
["styl tekstu"]=styl_tekstu,
["tekst"]=(czy_komunikat) and ((funkcja_komunikatu)and wynik_komunikatu or tekst)or tekst,
["poniżej"]=ponizej,
["styl poniżej"]=styl_ponizej,
};
return pf:expandTemplate{title=pudelko,args=argumenty};
end;
return p;
flyoy5w7h898iwf8juk6asz5f0jcyd5
553324
553308
2026-08-27T09:09:36Z
Persino
2851
553324
Scribunto
text/plain
local p={}
function p.Problemy_kontenerowe_szablonowe(frame, kod_liczbowy_przestrzeni_nazw)
local pf=frame:getParent();
local parametry_modul=require("Module:Parametry");
local zkategoria=not parametry_modul.CzyTak(frame.args["bez kategorii"] or pf.args["bez kategorii"]);
local brudnopis_wikibooks=parametry_modul.CzyTak(frame.args["obsługiwany brudnopis projektu"]);
local brudnopis_modul=parametry_modul.CzyTak(frame.args["obsługiwany brudnopis modułu"]);
local brudnopis_szablon=parametry_modul.CzyTak(frame.args["obsługiwany brudnopis szablonu"]);
local nieobslugiwane_strony_glowne=parametry_modul.CzyTak(frame.args["nieobsługiwane strony główne"]);
local nieobslugiwane_strony_szablonow=parametry_modul.CzyTak(frame.args["nieobsługiwane strony szablonów"]);
local nieobslugiwane_strony_opisu_szablonow=parametry_modul.CzyTak(frame.args["nieobsługiwane strony opisu szablonów"]);
local nieobslugiwane_strony_modulow=parametry_modul.CzyTak(frame.args["nieobsługiwane strony modułów"]);
local nieobslugiwane_strony_opisu_modulow=parametry_modul.CzyTak(frame.args["nieobsługiwane strony opisu szablonów"]);
local nieobslugiwane_strony_brudnopisu_szablonow=parametry_modul.CzyTak(frame.args["nieobsługiwane strony brudnopisu szablonów"]);
local nieobslugiwane_strony_brudnopisu_opisu_szablonow=parametry_modul.CzyTak(frame.args["nieobsługiwane strony brudnopisu opisu szablonów"]);
local nieobslugiwane_strony_brudnopisu_modulow=parametry_modul.CzyTak(frame.args["nieobsługiwane strony brudnopisu modułów"]);
local nieobslugiwane_strony_brudnopisu_opisu_modulow=parametry_modul.CzyTak(frame.args["nieobsługiwane strona brudnopisu opisu modułów"]);
local nieobslugiwane_strony_jednostek_programowych=parametry_modul.CzyTak(frame.args["nieobsługiwane strony jednostek programowych"]);
local nieobslugiwane_strony_opisu_jednostek_programowych=parametry_modul.CzyTak(frame.args["nieobsługiwane strony opisu jednostek programowych"]);
local nieobslugiwana_strony_glowne_uzytkownikow=nieobslugiwane_strony_glowne or parametry_modul.CzyTak(frame.args["nieobsługiwane strony główne użytkowników"]);
local nieobslugiwana_strona_glowna_projektu=nieobslugiwane_strony_glowne or parametry_modul.CzyTak(frame.args["nieobsługiwana strona główna projektu"]);
local nieobslugiwana_strona_glowna_dla_dzieci=nieobslugiwane_strony_glowne or parametry_modul.CzyTak(frame.args["nieobsługiwana strona główna dla dzieci"]);
local obslugiwane_niebiezace_wiki=parametry_modul.CzyTak(frame.args["obsługiwane niebieżące wiki"]);
local nieobslugiwane_polskie_wiki=parametry_modul.CzyTak(frame.args["nieobsługiwane polskie wiki"]);
local nieobslugiwane_lokalne_wiki=parametry_modul.CzyTak(frame.args["nieobsługiwane lokalne wiki"]);
local podkategoria_niebiezace_wiki;
local wskazuje_wiki;
local nazwij_jednostka=parametry_modul.CzyTak(frame.args["nazwij jednostką"] or pf.args["nazwij jednostką"]);
local wylocz_niezaleznosc_od_nazwij_jednostka=parametry_modul.CzyTak(frame.args["wyłącz niezależność od nazwij jednostką"]);
local w_user_jako_strony_uzykownika=parametry_modul.CzyTak(frame.args["obsługiwane indywidua użytkownika jako normalne strony"]);
local pudelko_modul=require("Module:Pudełko");
local lancuch_bledow={};
local tablica_lancuch_kategorii_bledow={};
local czy_ze_szczegolami=not parametry_modul.CzyTak(frame.args["bez szczegółów"] or pf.args["bez szczegółów"]);
local wiki_modul=require("Module:Wiki");
local kod_jezyka_tego_projektu;
local kod_projektu_tego_projektu;
local pudelko_modul=require("Module:Pudełko");
local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne");
local function AnalizujDane(i)
local kod_jezyka;local kod_projektu;
if(obslugiwane_niebiezace_wiki or nieobslugiwane_polskie_wiki or nieobslugiwane_lokalne_wiki)then
kod_jezyka,kod_projektu=pudelko_pomocne_modul.Wikikody_kontenera(frame,i);
else
kod_jezyka=pudelko_modul["Kod języka tego projektu"]();
kod_projektu=pudelko_modul["Kod projektu tego projektu"]();
end;
if(i>0)then
if(obslugiwane_niebiezace_wiki or nieobslugiwane_polskie_wiki or nieobslugiwane_lokalne_wiki)then
local klucz_projektu2=pudelko_pomocne_modul.Klucz_projektu(frame,i);
local kod_jezyka2=pudelko_pomocne_modul.Kod_jezyka(frame,i);
local kod_projektu2=pudelko_pomocne_modul.Kod_projektu(frame,i);
podkategoria_niebiezace_wiki=podkategoria_niebiezace_wiki
or (obslugiwane_niebiezace_wiki and "bieżące wiki"
or ((nieobslugiwane_polskie_wiki and nieobslugiwane_lokalne_wiki)
and "polskie lub lokalne, wiki"
or ((nieobslugiwane_polskie_wiki and not nieobslugiwane_lokalne_wiki)
and "polskie wiki" or "lokalne wiki"
) or nil));
wskazuje_wiki=wskazuje_wiki
or (obslugiwane_niebiezace_wiki and "niebieżący"
or ((nieobslugiwane_polskie_wiki and nieobslugiwane_lokalne_wiki)
and "niepolski i nielokalny"
or ((nieobslugiwane_polskie_wiki and not nieobslugiwane_lokalne_wiki)
and "niepolski" or "nielokalny"
) or nil));
if(not(klucz_projektu2 or kod_jezyka2 or kod_projektu2))then
if((obslugiwane_niebiezace_wiki)or(nieobslugiwane_polskie_wiki)or(nieobslugiwane_lokalne_wiki))then
if(czy_ze_szczegolami)then
table.insert(lancuch_bledow,"<li>Nie podano, które wiki ma osbługiwać, dla zmiennych o numerze "..i..".</li>");
if(zkategoria)then
parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - "..podkategoria_niebiezace_wiki);
end;
return;
else
return "tak";
end;
end;
else
local wynik=wiki_modul:OddawajDaneKodyWiki(klucz_projektu2,kod_jezyka2,kod_projektu2);
if((type(wynik)=="table") and (wynik[4]) and (wynik[5])) then
if((obslugiwane_niebiezace_wiki)or(nieobslugiwane_polskie_wiki)or(nieobslugiwane_lokalne_wiki))then
local pudelko_modul=require("Module:Pudełko");
local kod_jezyka_tego_projektu=pudelko_modul["Kod języka tego projektu"]();
local kod_projektu_tego_projektu=pudelko_modul["Kod projektu tego projektu"]();
if(parametry_modul.CzyTak(klucz_projektu2))then
if((kod_jezyka)and(kod_projektu))then
if(kod_jezyka==kod_jezyka_tego_projektu)and(kod_projektu==kod_projektu_tego_projektu)then
table.insert(lancuch_bledow,"<li>Podany klucz projektu, a w nim: kod języka i kod projektu, nie wskazują na projekt "..wskazuje_wiki..", dla zmiennych o numerze "..i..".</li>");
--projekt_lokalny_lub_polski_kategorie(podkategoria_niebiezace_wiki);
if(czy_ze_szczegolami)then
if(zkategoria)then
parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - "..podkategoria_niebiezace_wiki);
end;
else
return "tak";
end;
elseif((nieobslugiwane_polskie_wiki and not nieobslugiwane_lokalne_wiki and not obslugiwane_niebiezace_wiki) or (nieobslugiwane_polskie_wiki and nieobslugiwane_lokalne_wiki and not obslugiwane_niebiezace_wiki))and(kod_jezyka==kod_jezyka_tego_projektu)then
table.insert(lancuch_bledow,"<li>Podany klucz projektu: a w nim: kod języka, nie wskazuje na projekt "..wskazuje_wiki..", dla zmiennych o numerze "..i..".</li>");
if(czy_ze_szczegolami)then
if(zkategoria)then
parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - "..podkategoria_niebiezace_wiki);
end;
else
return "tak";
end;
elseif(((not nieobslugiwane_polskie_wiki and nieobslugiwane_lokalne_wiki and not obslugiwane_niebiezace_wiki)or(nieobslugiwane_polskie_wiki and nieobslugiwane_lokalne_wiki and not obslugiwane_niebiezace_wiki))and(kod_projektu==kod_projektu_tego_projektu))then
table.insert(lancuch_bledow,"<li>Podany klucz projektu: a w nim: kod projektu, nie wskazuje na projekt "..wskazuje_wiki..", dla zmiennych o numerze "..i..".</li>");
if(czy_ze_szczegolami)then
if(zkategoria)then
parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - "..podkategoria_niebiezace_wiki);
end;
else
return "tak";
end;
end;
end;
else
if (kod_jezyka2 and kod_projektu2
and ((((kod_jezyka2==kod_jezyka_tego_projektu)and(kod_projektu2~=kod_projektu_tego_projektu))
or(((not nieobslugiwane_polskie_wiki and nieobslugiwane_lokalne_wiki and not obslugiwane_niebiezace_wiki)
or(nieobslugiwane_polskie_wiki and nieobslugiwane_lokalne_wiki and not obslugiwane_niebiezace_wiki))and(kod_jezyka2~=kod_jezyka_tego_projektu)and(kod_projektu2==kod_projektu_tego_projektu))
or(((nieobslugiwane_polskie_wiki and not nieobslugiwane_lokalne_wiki and not obslugiwane_niebiezace_wiki)
or(nieobslugiwane_polskie_wiki and nieobslugiwane_lokalne_wiki and not obslugiwane_niebiezace_wiki)
or obslugiwane_niebiezace_wiki)and(kod_jezyka2==kod_jezyka_tego_projektu)and(kod_projektu2==kod_projektu_tego_projektu))
)
or(((nieobslugiwane_polskie_wiki and not nieobslugiwane_lokalne_wiki and not obslugiwane_niebiezace_wiki)or(nieobslugiwane_polskie_wiki and nieobslugiwane_lokalne_wiki and not obslugiwane_niebiezace_wiki))
and(kod_jezyka2==kod_jezyka_tego_projektu))
or(((not nieobslugiwane_polskie_wiki and nieobslugiwane_lokalne_wiki and not obslugiwane_niebiezace_wiki)or(nieobslugiwane_polskie_wiki and nieobslugiwane_lokalne_wiki and not obslugiwane_niebiezace_wiki))
and(kod_projektu2==kod_projektu_tego_projektu))
))then
table.insert(lancuch_bledow,"<li>Podany: kod języka i kod projektu, nie wskazują na projekt "..wskazuje_wiki..", dla zmiennych o numerze "..i..".</li>");
if(czy_ze_szczegolami)then
if(zkategoria)then
parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - "..podkategoria_niebiezace_wiki);
end;
else
return "tak";
end;
elseif((kod_jezyka2 and not kod_projektu2) and ((((nieobslugiwane_polskie_wiki and not nieobslugiwane_lokalne_wiki and not obslugiwane_niebiezace_wiki)or obslugiwane_niebiezace_wiki)and (kod_jezyka2==kod_jezyka_tego_projektu))or(not nieobslugiwane_polskie_wiki and nieobslugiwane_lokalne_wiki and not obslugiwane_niebiezace_wiki)or(nieobslugiwane_polskie_wiki and nieobslugiwane_lokalne_wiki and not obslugiwane_niebiezace_wiki)))
then
table.insert(lancuch_bledow,"<li>Podany kod języka nie wskazuje na projekt "..wskazuje_wiki..", dla zmiennych o numerze "..i..".</li>");
if(czy_ze_szczegolami)then
if(zkategoria)then
parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - "..podkategoria_niebiezace_wiki);
end;
else
return "tak";
end;
elseif((not kod_jezyka2 and kod_projektu2)and
(((((not nieobslugiwane_polskie_wiki and nieobslugiwane_lokalne_wiki and not obslugiwane_niebiezace_wiki)or obslugiwane_niebiezace_wiki))and (kod_projektu2==kod_projektu_tego_projektu))or(nieobslugiwane_polskie_wiki and not nieobslugiwane_lokalne_wiki and not obslugiwane_niebiezace_wiki)or(nieobslugiwane_polskie_wiki and nieobslugiwane_lokalne_wiki and not obslugiwane_niebiezace_wiki)))
then
table.insert(lancuch_bledow,"<li>Podany kod projektu nie wskazuje na projekt "..wskazuje_wiki..", dla zmiennych o numerze "..i..".</li>");
if(czy_ze_szczegolami)then
if(zkategoria)then
parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - "..podkategoria_niebiezace_wiki);
end;
else
return "tak";
end;
end;
end;
end;
else
if(czy_ze_szczegolami)then
if(wynik[1])then
table.insert(lancuch_bledow,"<li>Podany klucz projektu, jest błędny, dla zmiennych o numerze "..i..".</li>");
elseif(not wynik[4] and not wynik[5])then
table.insert(lancuch_bledow,"<li>Podany: kod języka i kod projektu, są błędne, dla zmiennych o numerze "..i..".</li>");
elseif(not wynik[4])then
table.insert(lancuch_bledow,"<li>Podany kod języka, jest błędny, dla zmiennych o numerze "..i..".</li>");
elseif(not wynik[5])then
table.insert(lancuch_bledow,"<li>Podany kod projektu, jest błędny, dla zmiennych o numerze "..i..".</li>");
end;
if(zkategoria)then
parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - błędne parametry wiki");
end;
else
return "tak";
end;
end;
end;
end;
end;
local obslugiwane1=pudelko_pomocne_modul.Czy_przestrzen_nazw_jest_obslugiwana(frame,"Template",kod_jezyka,kod_projektu);
local obslugiwane2=pudelko_pomocne_modul.Czy_przestrzen_nazw_jest_obslugiwana(frame,"Module",kod_jezyka,kod_projektu);
local nazwa_przestrzeni_nazw,nazwa_jednostki=pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,kod_liczbowy_przestrzeni_nazw,false,i);
local nazwy_modul=require("Module:Nazwy");
local wiki_modul=require("Module:Wiki");
local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,};
local czy_blad_nazwa_przestrzeni_nazw;
if(czy_biezaca)then
czy_blad_nazwa_przestrzeni_nazw=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",};
else
czy_blad_nazwa_przestrzeni_nazw=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",};
end;
if(not czy_blad_nazwa_przestrzeni_nazw)then
if((i==0)or ((i>0)and pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_dodatkowe(frame,i)))then
if(czy_ze_szczegolami)then
table.insert(lancuch_bledow,(i==0)
and "<li>Wartość, nazwy przestrzeni nazw, dla korzystanej jednostki jest nieprawidłowa.</li>"
or "<li>Wartość, nazwy przestrzeni nazw, dla zmiennych o numerze "..i.." jest nieprawidłowa.</li>"
);
if(zkategoria)then
parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - nieprawidłowa nazwa przestrzeni nazw");
end;
else
return "tak";
end;
end;
end;
if(nazwa_jednostki=="")then
if(czy_ze_szczegolami)then
table.insert(lancuch_bledow,(i==0)
and"<li>Wartość, nazwy jednostki, dla korzystanej jednostki jest pusta.</li>"
or"<li>Wartość, nazwy jednostki, dla zmiennych o numerze "..i.." jest pusta.</li>"
);
if(zkategoria)then
parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - pusta nazwa jednostki");
end;
else
return "tak";
end;
end;
local mo,norm_przed_lub_dyskusji;
local nieprawidlowa_niepusta_pelna_nazwa_jednostki=false;
if(czy_blad_nazwa_przestrzeni_nazw)then
if(nazwa_jednostki~="")then
nieprawidlowa_niepusta_pelna_nazwa_jednostki=pudelko_modul.CzyNiepoprawnaNazwa(((parametry_modul.CzyTak(czy_blad_nazwa_przestrzeni_nazw))and czy_blad_nazwa_przestrzeni_nazw..":" or "")..nazwa_jednostki);
mo=(not nieprawidlowa_niepusta_pelna_nazwa_jednostki)and pudelko_pomocne_modul.Typ_jednostki(frame, kod_liczbowy_przestrzeni_nazw,i) or nil;
end;
norm_przed_lub_dyskusji=pudelko_pomocne_modul.Normalna_przedmiotowa_lub_dyskusji_nazwa_przestrzeni_nazw(czy_blad_nazwa_przestrzeni_nazw, kod_liczbowy_przestrzeni_nazw) or nil;
end;
if((czy_blad_nazwa_przestrzeni_nazw)and(nazwa_jednostki~=""))then
if((i==0)or ((i>0)and pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_dodatkowe(frame,i)))then
local obslugiwane=czy_blad_nazwa_przestrzeni_nazw and pudelko_pomocne_modul.Czy_przestrzen_nazw_jest_obslugiwana(frame,czy_blad_nazwa_przestrzeni_nazw,kod_jezyka,kod_projektu);
if((not obslugiwane)and((not mo)or(not(((czy_blad_nazwa_przestrzeni_nazw=="Project")and(brudnopis_wikibooks
and(((mo=="jednostka brudnopisu projektu")or(mo=="strona brudnopisu projektu")or(mo=="podręcznik brudnopisu projektu")or(mo=="artykuł brudnopisu projektu"))or(parametry_modul.CzyTak(nazwa_jednostki)and(mw.ustring.match(nazwa_jednostki,"^[Bb]rudnopis/.*"))))))
or((czy_blad_nazwa_przestrzeni_nazw=="Template")and(parametry_modul.CzyTak(brudnopis_szablon)
and(((mo=="strona brudnopisu szablonu")or(mo=="strona brudnopisu opisu szablonu"))or(parametry_modul.CzyTak(nazwa_jednostki)and(mw.ustring.match(nazwa_jednostki,"^[Bb]rudnopis/.*"))))))
or((czy_blad_nazwa_przestrzeni_nazw=="Module")and(parametry_modul.CzyTak(brudnopis_modul)
and(((mo=="strona brudnopisu modułu")or(mo=="strona brudnopisu opisu modułu"))or(parametry_modul.CzyTak(nazwa_jednostki)and(mw.ustring.match(nazwa_jednostki,"^[Bb]rudnopis/.*")))))))))
)then
if(czy_ze_szczegolami)then
table.insert(lancuch_bledow,
(i==0)and"<li>Szablon wartości, nazwy przestrzeni nazw, dla korzystanej jednostki nie obsługuje.</li>"
or"<li>Szablon wartości, nazwy przestrzeni nazw, dla zmiennych o numerze "..i.." nie obsługuje.</li>"
);
if(zkategoria)then
parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - nieobsługiwana przestrzeń nazw");
end;
else
return "tak";
end;
end;
end;
end;
--local nieprawidlowa_niepusta_pelna_nazwa_jednostki=false;
if(czy_blad_nazwa_przestrzeni_nazw and nazwa_jednostki~="")then
if(nieprawidlowa_niepusta_pelna_nazwa_jednostki)then
if(czy_ze_szczegolami)then
table.insert(lancuch_bledow,
(i==0)and"<li>Wartość, nazwy jednostki, dla korzystanej jednostki jest nieprawidłowa.</li>"
or"<li>Wartość, nazwy jednostki, dla zmiennych o numerze "..i.." jest nieprawidłowa.</li>"
);
if(zkategoria)then
parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - nieprawidłowa nazwa jednostki");
end;
else
return "tak";
end;
end;
end;
if(czy_blad_nazwa_przestrzeni_nazw)and(nazwa_jednostki~="")then
if((not nieprawidlowa_niepusta_pelna_nazwa_jednostki)and((czy_blad_nazwa_przestrzeni_nazw=="")and(nazwa_jednostki~="")))then
local nazwy_modul=require("Module:Nazwy");
local nowa_nazwa_przestrzeni_nazw=nazwy_modul["NAZWAPRZESTRZENI"]{nazwa=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,};
if(nowa_nazwa_przestrzeni_nazw~="")then
if(czy_ze_szczegolami)then
table.insert(lancuch_bledow,
(i==0)and"<li>Zmienna <code>nazwa jednostki</code> zawiera w sobie przestrzeń.</li>"
or"<li>Zmienna nienazwana "..i.." zawiera w sobie przestrzeń.</li>"
);
if(zkategoria)then
parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - nazwa jednostki zawierająca w sobie przestrzeń");
end;
else
return "tak";
end;
end;
end;
end;
if((obslugiwane1)and(mo)and(mo=="strona szablonu")and((nieobslugiwane_strony_szablonow)or (nieobslugiwane_strony_jednostek_programowych)))then
if(czy_ze_szczegolami)then
table.insert(lancuch_bledow,
(i==0)and"<li>Strona szablonu jest nieobsługiwana.</li>"
or"<li>Strona szablonu wskazującego na zmienną "..i.." jest nieobsługiwana.</li>"
);
if(zkategoria)then
parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - nieobsługiwana strona szablonu");
end;
else
return "tak";
end;
end;
if((obslugiwane1)and(mo)and(mo=="strona opisu szablonu")and((nieobslugiwane_strony_opisu_szablonow)or (nieobslugiwane_strony_opisu_jednostek_programowych)))then
if(czy_ze_szczegolami)then
table.insert(lancuch_bledow,
(i==0)and"<li>Strona opisu szablonu jest nieobsługiwana.</li>"
or"<li>Strona opisu szablonu wskazującego na zmienną "..i.." jest nieobsługiwana.</li>"
);
if(zkategoria)then
parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - nieobsługiwana strona opisu szablonu");
end;
else
return "tak";
end;
end;
if((obslugiwane2)and(mo)and(mo=="strona modułu")and((nieobslugiwane_strony_modulow)or (nieobslugiwane_strony_jednostek_programowych)))then
if(czy_ze_szczegolami)then
table.insert(lancuch_bledow,
(i==0)and"<li>Strona modułu jest nieobsługiwana.</li>"
or"<li>Strona modułu wskazującego na zmienną "..i.." jest nieobsługiwana.</li>"
);
if(zkategoria)then
parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - nieobsługiwana strona modułu");
end;
else
return "tak";
end;
end;
if((obslugiwane2)and(mo)and(mo=="strona opisu modułu")and((nieobslugiwane_strony_opisu_modulow)or (nieobslugiwane_strony_opisu_jednostek_programowych)))then
if(czy_ze_szczegolami)then
table.insert(lancuch_bledow,
(i==0)and"<li>Strona opisu modułu jest nieobsługiwana.</li>"
or"<li>Strona opisu modułu wskazującego na zmienną "..i.." jest nieobsługiwana.</li>"
);
if(zkategoria)then
parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - nieobsługiwana strona opisu modułu");
end;
else
return "tak";
end;
end;
if((mo)and(mo=="strona brudnopisu szablonu")and((nieobslugiwane_strony_brudnopisu_szablonow)or (nieobslugiwane_strony_jednostek_programowych)))then
if(czy_ze_szczegolami)then
table.insert(lancuch_bledow,
(i==0)and"<li>Strona brudnopisu szablonu jest nieobsługiwana.</li>"
or"<li>Strona brudnopisu szablonu wskazującego na zmienną "..i.." jest nieobsługiwana.</li>"
);
if(zkategoria)then
parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - nieobsługiwana strona brudnopisu szablonu");
end;
else
return "tak";
end;
end;
if((mo)and(mo=="strona brudnopisu opisu szablonu")and((nieobslugiwane_strony_brudnopisu_opisu_szablonow)or (nieobslugiwane_strony_opisu_jednostek_programowych)))then
if(czy_ze_szczegolami)then
table.insert(lancuch_bledow,
(i==0)and"<li>Strona brudnopisu opisu szablonu jest nieobsługiwana.</li>"
or"<li>Strona brudnopisu opisu szablonu wskazującego na zmienną "..i.." jest nieobsługiwana.</li>"
);
if(zkategoria)then
parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - nieobsługiwana strona brudnopisu opisu szablonu");
end;
else
return "tak";
end;
end;
if((mo)and(mo=="strona brudnopisu modułu")and((nieobslugiwane_strony_brudnopisu_modulow)or (nieobslugiwane_strony_jednostek_programowych)))then
if(czy_ze_szczegolami)then
table.insert(lancuch_bledow,
(i==0)and"<li>Strona brudnopisu modulu jest nieobsługiwana.</li>"
or"<li>Strona brudnopisu modułu wskazującego na zmienną "..i.." jest nieobsługiwana.</li>"
);
if(zkategoria)then
parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - nieobsługiwana strona brudnopisu modułu");
end;
else
return "tak";
end;
end;
if((mo)and(mo=="strona brudnopisu opisu modułu")and((nieobslugiwane_strony_brudnopisu_opisu_modulow)or (nieobslugiwane_strony_opisu_jednostek_programowych)))then
if(czy_ze_szczegolami)then
table.insert(lancuch_bledow,
(i==0)and"<li>Strona brudnopisu opisu modułu jest nieobsługiwana.</li>"
or"<li>Strona brudnopisu opisu modułu wskazującego na zmienną "..i.." jest nieobsługiwana.</li>"
);
if(zkategoria)then
parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - nieobsługiwana strona brudnopisu opisu modułu");
end;
else
return "tak";
end;
end;
if(((i>0)and(frame.args["strona główna projektu "..i] or pf.args["strona główna projektu "..i]))
or ((i==0)and(frame.args["strona główna projektu"] or pf.args["strona główna projektu"])))then
local projekt=pudelko_pomocne_modul.Nazwa_strony_bazowej_projektu_ze_zmiennej(frame,i,kod_jezyka,kod_projektu);
local nazwa_strony_glownej_projektu_z_wikidanych=pudelko_pomocne_modul.Nazwa_strony_bazowej_projektu_z_wikidanych(kod_jezyka,kod_projektu);
projekt=(not projekt)and nazwa_strony_glownej_projektu_z_wikidanych or projekt;
local dowolna_nazwa_strony_glownej_projektu=parametry_modul.CzyTak(frame.args["dowolna nazwa strony głównej projektu"]);
if(projekt)then
if(projekt=="")then
if(czy_ze_szczegolami)then
table.insert(lancuch_bledow,
(i==0)and"<li>Wartość nazwy, strony głównej projektu, dla zmiennej <code>strona główna projektu</code> jest pusta.</li>"
or "<li>Wartość nazwy, strony głównej projektu, dla zmiennej <code>strona główna projektu .."..i.."</code> jest pusta.</li>"
);
if(zkategoria)then
parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - pusta nazwa strony głównej projektu");
end;
else
return "tak";
end;
elseif((not dowolna_nazwa_strony_glownej_projektu)and(not mw.ustring.match(projekt,"^[^/]+$")))then
if(czy_ze_szczegolami)then
table.insert(lancuch_bledow,
(i==0)and"<li>Wartość nazwy, strony głównej projektu, dla zmiennej <code>strona główna projektu</code> zawiera prawe ukośniki.</li>"
or "<li>Wartość nazwy, strony głównej projektu, dla zmiennej <code>strona główna projektu "..i.."</code> zawiera prawe ukośniki</li>"
);
if(zkategoria)then
parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - nieprawidłowa nazwa strony głównej projektu");
end;
else
return "tak";
end;
elseif(pudelko_modul.CzyNiepoprawnaNazwa(projekt))then
if(czy_ze_szczegolami)then
table.insert(lancuch_bledow,
(i==0)and"<li>Wartość nazwy, strony głównej projektu, w zmiennej <code>strona główna projektu</code> ma nazwę niepustą nieprawidłową.</li>"
or "<li>Wartość nazwy, strony głównej projektu, w zmiennej <code>strona główna projektu "..i.."</code> ma nazwę niepustą nieprawidłową.</li>"
);
if(zkategoria)then
parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - nieprawidłowa nazwa strony głównej projektu");
end;
else
return "tak";
end;
end;
end;
end;
local typ=frame.args["typ jednostki"..((i)and((i~=0))and (" "..i) or "")] or pf.args["typ jednostki"..((i)and((i~=0))and (" "..i) or "")];
if((czy_blad_nazwa_przestrzeni_nazw)and(nazwa_jednostki~="")and(not nieprawidlowa_niepusta_pelna_nazwa_jednostki))then
if(nieobslugiwana_strona_glowna_projektu)then
if(mo=="strona główna projektu")then
if(czy_ze_szczegolami)then
if(typ~="strona główna projektu")then
table.insert(lancuch_bledow,
(i==0)and"<li>Wstawiono szablon na stronę główną projektu.</li>"
or ((frame.args["strona główna projektu "..i]
or pf.args["strona główna projektu "..i])and"<li>Szablon, wskazuje na stronę główna projektu, według zmiennej <code>strona główna projektu "..i.."</code>, dla zmiennych o numerze "..i..".</li>"
or"<li>Szablon, wskazuje na stronę główną projektu, dla zmiennych o numerze "..i..".</li>"
));
else
table.insert(lancuch_bledow,(i==0)and "<li>Wstawiono szablon, na stronę, z ustawioną wartością <code>typ jednostki = strona główna projektu</code>.</li>"
or"<li>Wstawiono szablon, na stronę, z ustawioną wartością <code>typ jednostki "..i.." = strona główna projektu</code>.</li>"
);
end;
if(zkategoria)then
parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - nieobsługiwana strona główna projektu");
end;
else
return "tak";
end;
end;
end;
end;
if(kod_projektu==require("Module:Pudełko")["Kod projektu tego projektu"]())then
if(((i>0)and(frame.args["strona główna dla dzieci "..i] or pf.args["strona główna dla dzieci "..i]))
or ((i==0)and(frame.args["strona główna dla dzieci"] or pf.args["strona główna dla dzieci"])))then
local junior=pudelko_pomocne_modul.Nazwa_strony_bazowej_dla_dzieci_ze_zmiennej(frame,i,kod_jezyka,kod_projektu);
local nazwa_strony_glownej_wikijuniora_z_wikidanych=pudelko_pomocne_modul.Nazwa_strony_bazowej_dla_dzieci_z_wikidanych(kod_jezyka)
junior=(not junior)and nazwa_strony_glownej_wikijuniora_z_wikidanych or junior;
local dowolna_nazwa_strony_glownej_wikijuniora=parametry_modul.CzyTak(frame.args["dowolna nazwa strony głównej dla dzieci"]);
if(junior)then
if(junior=="")then
if(czy_ze_szczegolami)then
table.insert(lancuch_bledow,
(i==0)and"<li>Wartość nazwy, strony głównej dla dzieci, w zmiennej <code>strona główna dla dzieci</code> jest pusta.</li>"
or "<li>Wartość nazwy, strony głównej dla dzieci, w zmiennej <code>strona główna dla dzieci .."..i.."</code> jest pusta.</li>"
);
if(zkategoria)then
parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - pusta nazwa strony głównej dla dzieci");
end;
else
return "tak";
end;
elseif((not dowolna_nazwa_strony_glownej_wikijuniora)and(not mw.ustring.match(junior,"^[^/]+$")))then
if(czy_ze_szczegolami)then
table.insert(lancuch_bledow,
(i==0)and"<li>Wartość nazwy, strony głównej dla dzieci, w zmiennej <code>strona główna dla dzieci</code> zawiera prawe ukośniki.</li>"
or"<li>Wartość nazwy, strony głównej dla dzieci, w zmiennej <code>strona główna dla dzieci "..i.."</code> zawiera prawe ukośniki.</li>"
);
if(zkategoria)then
parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - nieprawidłowa nazwa strony głównej dla dzieci");
end;
else
return "tak";
end;
elseif(pudelko_modul.CzyNiepoprawnaNazwa(junior))then
if(czy_ze_szczegolami)then
table.insert(lancuch_bledow,
(i==0)and"<li>Wartość nazwy, strony głównej dla dzieci, w zmiennej <code>strona główna dla dzieci</code> ma nazwę niepustą nieprawidłową.</li>"
or"<li>Wartość nazwy, strony głównej dla dzieci, w zmiennej <code>strona główna dla dzieci "..i.."</code> ma nazwę niepustą nieprawidłową.</li>"
);
if(zkategoria)then
parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - nieprawidłowa nazwa strony głównej dla dzieci");
end;
else
return "tak";
end;
end;
end;
end;
if((czy_blad_nazwa_przestrzeni_nazw)and(nazwa_jednostki~="")and(not nieprawidlowa_niepusta_pelna_nazwa_jednostki))then
if(nieobslugiwana_strona_glowna_dla_dzieci)then
if(mo=="strona główna dla dzieci")then
if(czy_ze_szczegolami)then
if(typ~="strona główna dla dzieci")then
table.insert(lancuch_bledow,
(i==0)and"<li>Wstawiono szablon na stronę główną dla dzieci.</li>"
or ((frame.args["strona główna dla dzieci "..i]
or pf.args["strona główna dla dzieci "..i])and"<li>Szablon, wskazuje na stronę główną dla dzieci, według zmiennej <code>strona główna dla dzieci .."..i..", dla zmiennych o numerze "..i..".</code>.</li>"
or"<li>Szablon, wskazuje na stronę główną dla dzieci, dla zmiennych o numerze "..i..".</li>"
));
else
table.insert(lancuch_bledow,(i==0)and "<li>Wstawiono szablon, na stronę, z ustawioną wartością <code>typ jednostki = strona główna dla dzieci</code>.</li>"
or"<li>Wstawiono szablon, na stronę, z ustawioną wartością <code>typ jednostki "..i.." = strona główna dla dzieci</code>.</li>"
);
end
if(zkategoria)then
parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - nieobsługiwana strona główna dla dzieci");
end;
else
return "tak";
end;
end;
end;
end;
end;
local obslugiwane3=(czy_blad_nazwa_przestrzeni_nazw)and((norm_przed_lub_dyskusji=="User") and pudelko_pomocne_modul.Czy_przestrzen_nazw_jest_obslugiwana(frame,"User",kod_jezyka,kod_projektu));
if((czy_blad_nazwa_przestrzeni_nazw)and(nazwa_jednostki~="")and(not nieprawidlowa_niepusta_pelna_nazwa_jednostki)and(obslugiwane3))then
if(nieobslugiwana_strony_glowne_uzytkownikow)then
if(mo=="strona główna użytkownika")then
if(czy_ze_szczegolami)then
table.insert(lancuch_bledow,
(i==0)and "<li>Wstawiono szablon na stronę główną użytkownika.</li>"
or"<li>Szablon, wskazuje na stronę główną użytkownika, dla zmiennych o numerze "..i..".</li>"
);
if(zkategoria)then
parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - nieobsługiwana strona główna użytkownika");
end;
else
return "tak";
end;
elseif((mo~="jednostka użytkownika")and(mo~="podręcznik użytkownika")and(mo~="artykuł użytkownika")and(mo~="strona główna użytkownika")and((mo~="strona użytkownika")or(w_user_jako_strony_uzykownika)))then
if(czy_ze_szczegolami)then
if(mw.ustring.match(nazwa_jednostki,"^[^/]+$"))then
table.insert(lancuch_bledow,
(i==0)and "<li>Wstawiono szablon na stronę główną użytkownika.</li>"
or"<li>Szablon, wskazuje na stronę główną użytkownika, dla zmiennych o numerze "..i..".</li>"
);
if(zkategoria)then
parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - nieobsługiwana strona główna użytkownika");
end;
end;
else
return "tak";
end;
end;
end;
end;
if((not nieprawidlowa_niepusta_pelna_nazwa_jednostki)
and((not wylocz_niezaleznosc_od_nazwij_jednostka)or(not nazwij_jednostka))
and(((i>0)and((frame.args["typ jednostki "..i])or(pf.args["typ jednostki "..i])or(pf.args["typ jednostki"])))
or ((i==0)and((frame.args["typ jednostki"])or (pf.args["typ jednostki"]))))
)then
local typ_i=(i>0)and((frame.args["typ jednostki "..i])or(pf.args["typ jednostki "..i])) or nil;
if(mo=="(błąd typu jednostki)")then
if(czy_ze_szczegolami)then
table.insert(lancuch_bledow,
(i==0)and"<li>Podana wartość zmiennej <code>typ jednostki</code> jest nieprawidłowa.</li>"
or (typ_i and "<li>Podana wartość zmiennej <code>typ jednostki "..i.."</code> jest nieprawidłowa.</li>"
or "<li>Podana wartość zmiennej <code>typ jednostki</code> dla zmiennych o numerze "..i.." jest nieprawidłowa.</li>")
);
if(zkategoria)then
parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - nieprawidłowa wartość typu jednostki");
end;
else
return "tak";
end;
elseif(mo=="(błąd niezgodności)")then
if(czy_ze_szczegolami)then
table.insert(lancuch_bledow,
(i==0)and"<li>Podana wartość zmiennej <code>typ jednostki</code> jest niezgodna z podaną zmienną: <code>nazwą przestrzeni nazw</code>.</li>"
or (typ_i and ("<li>Podana wartość zmiennej <code>typ jednostki "..i.."</code> jest niezgodna z podaną: <code>nazwą przestrzeni nazw "..i.."</code>.</li>")
or("<li>Podana wartość zmiennej <code>typ jednostki</code> dla zmiennych o numerze "..i.." jest niezgodna z podaną: <code>nazwą przestrzeni nazw "..i.."</code>.</li>"))
);
if(zkategoria)then
parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - niezgodna wartość typu jednostki");
end;
else
return "tak";
end;
elseif(mo=="(błąd parametrów pudełkowych)")then
if(czy_ze_szczegolami)then
table.insert(lancuch_bledow,
(i==0)and"<li>Podana wartość zmiennej <code>typ jednostki</code> jest niezgodna z podanymi parametrami pudełkowymi.</li>"
or (typ_i and "<li>Podana wartość zmiennej <code>typ jednostki "..i.."</code> jest niezgodna z podanymi parametrami pudełkowymi.</li>"
or "<li>Podana wartość zmiennej <code>typ jednostki</code> dla zmiennych o numerze "..i.." jest niezgodna z podanymi parametrami pudełkowymi.</li>")
);
if(zkategoria)then
parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - niezgodne parametry pudełkowe");
end;
else
return "tak";
end;
end;
end;
if(not czy_ze_szczegolami)then return "";end;
end;
local num=frame.args["nazwy jednostki numerowane"];
if(parametry_modul.CzyTak(num))then
AnalizujDane(0);
local maksymalny_numer_elementu_nienazwanego=frame.args["maksymalny numer argumentu nienazwanego"];
local czy_maksymalny_numer_elementu_nienazwanego=parametry_modul.CzyTak(maksymalny_numer_elementu_nienazwanego);
local num2;
if(czy_maksymalny_numer_elementu_nienazwanego)then
num2=tonumber(maksymalny_numer_elementu_nienazwanego) or 0;
else
num2=0;
end;
local minimum_z_numerem_dodatkowego_warunku,maksimum_z_numerem_dodatkowego_warunku=parametry_modul.MinimalnyIMaksymalnyNumerPodstawyParametruTabeli(frame.args,"nazwa jednostki",true);
minimum_z_numerem_dodatkowego_warunku=minimum_z_numerem_dodatkowego_warunku or 0;
minimum_z_numerem_dodatkowego_warunku=(minimum_z_numerem_dodatkowego_warunku>0)and minimum_z_numerem_dodatkowego_warunku or 1;
maksimum_z_numerem_dodatkowego_warunku=math.max(maksimum_z_numerem_dodatkowego_warunku,parametry_modul.MaksymalnaLiczbaParametruNienazwanegoTablicy(pf.args));
if(pf.args["cel"])then maksimum_z_numerem_dodatkowego_warunku=math.max(1,maksimum_z_numerem_dodatkowego_warunku);end;
minimum_z_numerem_dodatkowego_warunku=math.min(minimum_z_numerem_dodatkowego_warunku,parametry_modul.MinimalnaLiczbaParametruNienazwanegoTablicy(pf.args));
if(pf.args["cel"])then minimum_z_numerem_dodatkowego_warunku=math.min(1,minimum_z_numerem_dodatkowego_warunku);end;
if(czy_maksymalny_numer_elementu_nienazwanego)then
if(num2>0)then
if(maksimum_z_numerem_dodatkowego_warunku>0)then
if(minimum_z_numerem_dodatkowego_warunku>num2)then
maksimum_z_numerem_dodatkowego_warunku=0;
elseif(maksimum_z_numerem_dodatkowego_warunku>=num2)then
for i=num2,1,-1 do
local wartosc_parametru=(i>=1)
and frame.args["nazwa jednostki "..tostring(i)]
or ((i==1)and pf.args["cel"] or pf.args[i]);
if(wartosc_parametru)then
maksimum_z_numerem_dodatkowego_warunku=i;
break;
end;
end;
end;
end;
end;
end;
local tabelka_braku_zmiennych={};
for i=1,maksimum_z_numerem_dodatkowego_warunku,1 do
local wartosc_parametru=(i>=1)
and frame.args["nazwa jednostki "..tostring(i)]
or ((i==1)and pf.args["cel"] or pf.args[i]);
if(not wartosc_parametru)then
if(czy_ze_szczegolami)then
tabelka_braku_zmiennych[#tabelka_braku_zmiennych+1]=i;
else
return "tak";
end;
else
local wynik=AnalizujDane(i);
if((not czy_ze_szczegolami)and(wynik~=""))then return wynik;end;
end;
end;
if(czy_ze_szczegolami)then
if(parametry_modul["CzySąElementyNumerowaneTablicy"](tabelka_braku_zmiennych))then
local str_braku_parametru="";
for i,wartosc in ipairs(tabelka_braku_zmiennych)do
str_braku_parametru=str_braku_parametru..((str_braku_parametru=="")and "" or ((tabelka_braku_zmiennych[i+1])and ", " or " i "))..wartosc;
end;
table.insert(lancuch_bledow,"<li>Brak parametrów o numerach: "..str_braku_parametru..", w obsługiwanym zakresie zmiennych.</li>");
if(zkategoria)then
parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - brak parametrów");
end;
end;
end;
else
local wynik=AnalizujDane(0);
if((not czy_ze_szczegolami)and(wynik~=""))then return wynik;end;
end;
--local lancuch_kategorii_bledow_zlaczony=table.concat(lancuch_kategorii_bledow,"");
local minimum_z_numerem_dodatkowego_warunku,maksimum_z_numerem_dodatkowego_warunku=parametry_modul.MinimalnyIMaksymalnyNumerPodstawyParametruTabeli(frame.args,"dodatkowy warunek");
for i=minimum_z_numerem_dodatkowego_warunku, maksimum_z_numerem_dodatkowego_warunku,1 do
local wartosc_parametru=(i>1)and frame.args["dodatkowy warunek "..i] or ((i==1)and frame.args["dodatkowy warunek 1"] or frame.args["dodatkowy warunek"]);
if(parametry_modul.CzyTak(wartosc_parametru))then
if(czy_ze_szczegolami)then
local bledy_dodatkowego_warunku=frame.args["błędy dodatkowego warunku "..i];
if(parametry_modul.CzyTak(bledy_dodatkowego_warunku))then
local bledy_w_postaci_kategorii="<li>"..bledy_dodatkowego_warunku.."</li>";
table.insert(lancuch_bledow,bledy_dodatkowego_warunku);
if(zkategoria)then
local bledy_w_postaci_kategorii=frame.args["dodatek kategorii błędu dodatkowego warunku "..i];
if(parametry_modul.CzyTak(bledy_w_postaci_kategorii))then
local bledy_w_postaci_kategorii="{{pierwszy człon kategorii błędu}} - "..bledy_w_postaci_kategorii;
parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,bledy_w_postaci_kategorii);
else
parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - błędne wywołania");
end;
end;
else
table.insert(lancuch_bledow,"<li>Błąd wywołania szablonu.</li>");
if(zkategoria)then
local bledy_w_postaci_kategorii=frame.args["dodatek kategorii błędu dodatkowego warunku"];
if(parametry_modul.CzyTak(bledy_w_postaci_kategorii))then
local bledy_w_postaci_kategorii="{{pierwszy człon kategorii błędu}} - "..bledy_w_postaci_kategorii;
parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,bledy_w_postaci_kategorii);
else
parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - błędne wywołania");
end;
end;
end;
else
return "tak";
end;
end;
end;
if(not czy_ze_szczegolami)then return "";end;
local templates={};
--templates["{{Category}}"]="Category";
local lancuch_kategorii_bledow_zlaczony2="";
local minimum_z_numerem_dodatkowego_warunku,maksimum_z_numerem_dodatkowego_warunku=parametry_modul.MinimalnyIMaksymalnyNumerPodstawyParametruTabeli(frame.args,"pierwszy człon kategorii błędu");
if(#tablica_lancuch_kategorii_bledow>0)then
local wszystkie_bledy={};
--wszystkie_bledy[1]="Szablon";
for i=minimum_z_numerem_dodatkowego_warunku,maksimum_z_numerem_dodatkowego_warunku,1 do
local pierwszy_czlon_kategorii_bledow=(i>1)and frame.args["pierwszy człon kategorii błędu "..i] or (frame.args["pierwszy człon kategorii błędu "..1] or frame.args["pierwszy człon kategorii błędu"] );
templates["{{pierwszy człon kategorii błędu}}"]=pierwszy_czlon_kategorii_bledow;
for _,kategoria in ipairs(tablica_lancuch_kategorii_bledow) do
parametry_modul.DodajElementDoZbioru(wszystkie_bledy,mw.ustring.gsub(kategoria,"{{[%w%s]+}}",templates));
end;
end;
--lancuch_kategorii_bledow_zlaczony2=string.gsub(lancuch_kategorii_bledow_zlaczony2,"%[%[Category:","{{#invoke:Ramka|Szablon|parametry funkcji modułu pudełek=tak|Nazwa=Kategoria|");
--lancuch_kategorii_bledow_zlaczony2=string.gsub(lancuch_kategorii_bledow_zlaczony2,"%]%]","}}");
wszystkie_bledy["parametry podstawowe funkcji modułu pudełek"]="tak";
wszystkie_bledy["Nazwa"]="Kategorie";
local frame2=frame:getParent():newChild{title="#invoke:Ramka",args=wszystkie_bledy,};
local ramka_modul=require("Module:Ramka");
lancuch_kategorii_bledow_zlaczony2=ramka_modul["Szablon"](frame2);
end;
local lancuch=table.concat(lancuch_bledow,"")..lancuch_kategorii_bledow_zlaczony2;
if(lancuch~="")then lancuch="<ul>"..lancuch.."</ul>";end;
return lancuch;
end;
function p.Cecha_kontenerowa_szablonowa(frame,__funkcja)
local parametry_modul=require("Module:Parametry");
local parametry_pudelka=frame:getParent().args["parametry pudełka"]
if(parametry_modul.CzyTak(parametry_pudelka))then
return require("Module:Pudełko/ParametryCechy")["Parametry ogólnego pudełka"](frame,__funkcja);
end;
local funkcja=frame.args["funkcja cechowania"];
if(not parametry_modul.CzyTak(funkcja))then funkcja=__funkcja;end;
local modul=frame.args["moduł"];
if(not parametry_modul.CzyTak(modul))then modul="Pudełko";end;
local cecha=require("Module:"..modul)[funkcja](frame);
return cecha;
end;
function p.Generalny_kontener_szablonowy(frame)
local pf=frame.getParent and frame:getParent() or {args={}};
local parametry_modul=require("Module:Parametry");
local parametry_pudelka=pf.args["parametry pudełka"]
if(parametry_modul.CzyTak(parametry_pudelka))then
return frame.args["cecha"] or "";
end;
local alternatywny_szablon=frame.args["alternatywny szablon"];
if(parametry_modul.CzyTak(alternatywny_szablon))then return alternatywny_szablon; end
local cecha;
local bez_bledu=parametry_modul.CzyTak(frame.args["bez błędu"] or pf.args["bez błędu"]);
local czy_ogolne_pudelko;
if(not bez_bledu)then cecha=frame.args["cecha"] or ""; czy_ogolne_pudelko=(cecha=="");else czy_ogolne_pudelko=true;end;
if(czy_ogolne_pudelko)then
local warunek_niealternatywnego_wywolania=frame.args["warunek niealternatywnego wywołania"];
if((warunek_niealternatywnego_wywolania)and(warunek_niealternatywnego_wywolania==""))then
local alternatywne_wywolanie=frame.args["alternatywne wywołanie"];
if(alternatywne_wywolanie)then
return alternatywne_wywolanie;
end;
end;
end;
local szablon=frame.args["szablon"];
local pudelko;local grafika;local grafika_prawo;local typ;local ponizej;local styl_tekstu;local styl_ponizej;
local nazwa_przestrzeni_nazw=frame.args["nazwa przestrzeni nazw"];
local komunikat=frame.args["własny komunikat"];
local szablon2=(parametry_modul.CzyTak(szablon)) and szablon or require("Module:Nazwy")["NAZWASTRONY"](pf:getTitle());
local czy_komunikat=parametry_modul.CzyTak(komunikat);
local funkcja_komunikatu;
local wynik_komunikatu;
local tekst;
local klasa;local styl;
if(czy_komunikat)then
local modul=frame.args["moduł"];
if(not parametry_modul.CzyTak(modul))then modul="Pudełko";end;
funkcja_komunikatu=require("Module:"..modul)[komunikat];
end;
if(czy_ogolne_pudelko)then
----
local czy_wybor;
local wybor=frame.args["wybór"];
if((wybor)and(wybor~=""))then
wybor=string.match(wybor,"^(%d+)$") or nil;
czy_wybor=wybor and (tonumber(wybor)>0) or nil;
wybor=czy_wybor and wybor or nil;
end;
if(funkcja_komunikatu)then
wynik_komunikatu=funkcja_komunikatu(frame,wybor);
end;
----
pudelko=(czy_wybor and frame.args["nazwa "..wybor] or frame.args["nazwa"]) or "mbox";
grafika=czy_wybor and frame.args["grafika "..wybor] or frame.args["grafika"];
grafika_prawo=czy_wybor and frame.args["grafika prawo "..wybor] or frame.args["grafika prawo"];
typ=czy_wybor and frame.args["typ "..wybor] or frame.args["typ"];
typ=parametry_modul.CzyTak(typ) and typ or "zawartość";
if(not wynik_komunikatu)then
tekst=czy_wybor and (frame.args["tekst "..wybor] or frame.args["treść "..wybor]) or (frame.args["tekst"] or frame.args["treść"]) or "";
end;
local parametry=czy_wybor and frame.args["parametry "..wybor] or frame.args["parametry"] or "";
klasa=czy_wybor and frame.args["klasa "..wybor] or frame.args["klasa"];
styl=czy_wybor and frame.args["styl "..wybor] or frame.args["styl"];
styl_tekstu=czy_wybor and frame.args["styl tekstu "..wybor] or frame.args["styl tekstu"];
styl_ponizej=czy_wybor and frame.args["styl poniżej "..wybor] or frame.args["styl poniżej"];
local kategorie=czy_wybor and frame.args["kategorie "..wybor] or frame.args["kategorie"] or "";
ponizej=czy_wybor and frame.args["poniżej "..wybor] or frame.args["poniżej"];
tekst=(wynik_komunikatu or tekst)..parametry..kategorie;
else
pudelko="ombox";
grafika="poważny";
typ="poważny";
local czy_ze_szczegolami=not parametry_modul.CzyTak(frame.args["bez szczegółów"] or pf.args["bez szczegółów"]);
if(czy_ze_szczegolami)then
tekst="'''Szablon ".."{{[[Template:"..szablon2.."|"..szablon2.."]]}} zgłosił następujące błędy:'''"..cecha;
else
tekst="Szablon '''".."{{[[Template:"..szablon2.."|"..szablon2.."]]}}''' jest w stanie błędu, popraw parametry szablonu!";
end;
if(funkcja_komunikatu)then
wynik_komunikatu=funkcja_komunikatu{args={tekst=tekst,},};
end;
end;
local argumenty={
["klasa"]=klasa,
["styl"]=styl,
["nazwa przestrzeni nazw"]=nazwa_przestrzeni_nazw,
["typ"]=typ,
["grafika"]=grafika,
["grafika prawo"]=grafika_prawo,
["styl tekstu"]=styl_tekstu,
["tekst"]=(czy_komunikat) and ((funkcja_komunikatu)and wynik_komunikatu or tekst)or tekst,
["poniżej"]=ponizej,
["styl poniżej"]=styl_ponizej,
};
return pf:expandTemplate{title=pudelko,args=argumenty};
end;
return p;
8e50m4eqpdydhttquky6bni30caa2jx
Wikibooks:Mechanizm MediaWiki
4
60755
553281
553275
2026-08-26T18:31:57Z
Persino
2851
553281
wikitext
text/x-wiki
<noinclude><!--
-->{{StandardowaStronaStart
| nagłówek = {{Rozdział|Pomoc Wikibooks|Mechanizm MediaWiki - Wstęp}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Rozdział|Koniec}}
}}</noinclude>{{Spis treści}}
Przedstawimy tutaj problemy z mechanizmem MediaWiki, poczynając od opisu szablonów i modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w zastosowaniach również do wikikodu, na polskim {{NS|pk=mj|w=tak|l=tak}}.
== Szablony ==
Przedstawiamy tutaj w dwóch formach opis wszystkich szablonów, dostępnych na polskim {{NS|pk=mj|l=tak}}, w postaci listy.
=== Opis wizualny ===
* {{lr|Szablony}} - strona główna zbioru wszystkich szablonów, opisu ich, wizualnego i opisowego.
** {{lru|Szablony/Ogólne}}, {{lru|Szablony/Informacje}}, {{lru|Szablony/PrzypisStrona}}, {{lru|Szablony/Podręcznikowe}}, {{lru|Szablony/Książkowe}}, {{lru|Szablony/Tekst}}, {{lru|Szablony/Zawartość}}, {{lru|Szablony/Nagłówki}}, {{lru|Szablony/Przekierowania}}, {{lru|Szablony/Języki}}, {{lru|Szablony/Liczby}}, {{lru|Szablony/Kategorie}}, {{lru|Szablony/Opisy}}, {{lru|Szablony/Znaczniki}}, {{lru|Szablony/Szablony opływania}}, {{lru|Szablony/Stronicowe}}, {{lru|Szablony/Kontenerowe}}, {{lru|Szablony/Elastyczne}}, {{lr|Szablony/Infoboksy/Prolog|Infoboksy - Prolog}}, {{lr|Szablony/Infoboksy/Tom I|Infoboksy - Tom I}}, {{lr|Szablony/Infoboksy/Tom II|Infoboksy - Tom II}}, {{lr|Szablony/Infoboksy/Tom III|Infoboksy - Tom III}}, {{lr|Szablony/Infoboksy/Tom IV|Infoboksy - Tom IV}}, {{lr|Szablony/Infoboksy/Tom V|Infoboksy - Tom V}}, {{lr|Szablony/Infoboksy/Tom VI|Infoboksy - Tom VI}}, {{lr|Szablony/Infoboksy/Komponenty|Infoboksy - Komponenty}}, {{lr|Szablony/Infoboksy/Komponenty (organizmy żywe)|Infoboksy - Komponenty (organizmy żywe)}}, {{lru|Szablony/Porządkowe}}, {{lru|Szablony/Źródła artykułów}}, {{lru|Szablony/Linki}}, {{lru|Szablony/Linki inteligentne}}, {{lru|Szablony/Do usunięcia}}, {{lru|Szablony/Nawigacja}}, {{lru|Szablony/Media}}, {{lru|Szablony/Grafika}}, {{lru|Szablony/Licencjonowanie}}, {{lru|Szablony/Techniczne}}, {{lru|Szablony/Wikipedysta}}, {{lru|Szablony/Dyskusja Wikipedysty}}, {{lru|Szablony/MediaWiki}} i {{lru|Szablony/Systemowe}}.
=== Opis tekstowy ===
* {{lp|Spis treści}} - spis treści pomocy, nie tylko szablonów, czy modułów.
** {{lp|Spis treści/Szablony/Tom I|Szablony - Tom I}}, {{lp|Spis treści/Szablony/Tom II|Szablony - Tom II}}, {{lp|Spis treści/Szablony/Tom III|Szablony - Tom III}} i {{lp|Spis treści/Szablony/Tom IV|Szablony - Tom IV}}.
== Moduły {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ==
{{Osobny artykuł|{{Ns:Project}}:Moduły|obserwowane=Moduły}}
* Moduły podstawowe
** {{m|Parametry}} ({{lru|Moduły/Parametry}}), {{m|Html}} ({{lru|Moduły/Html}}), {{m|Nazwy}} ({{lru|Moduły/Nazwy}}), {{m|Książkowe}} ({{lru|Moduły/Książkowe}}), {{m|Pudełko}} ({{lru|Moduły/Pudełko}}), {{m|Ramka}} ({{lru|Moduły/Ramka}}), {{m|Specjalne}} ({{lru|Moduły/Specjalne}}), {{m|StronicowyParser}} ({{lru|Moduły/StronicowyParser}}), {{m|Szeregi}} ({{lru|Moduły/Szeregi}}), {{m|Szablonowe}} ({{lru|Moduły/Szablonowe}}), {{m|Techniczne}} ({{lru|Moduły/Techniczne}}), {{m|Wiki}} ({{lru|Moduły/Wiki}}).
* Moduły standardowe
** {{m|Kategorie}} ({{lru|Moduły/Kategorie}}), {{m|Linki}} ({{lru|Moduły/Linki}}), {{m|Łatki}} ({{lru|Moduły/Łatki}}), {{m|Skrót}} ({{lru|Moduły/Skrót}}), {{m|Sprawdź}} ({{lru|Moduły/Sprawdź}}).
* Specjalistyczne
** {{m|Tabela}} ({{lru|Moduły/Tabela}}), {{m|Sekcja referencyjna}} ({{lru|Moduły/Sekcja referencyjna}}), {{m|Licencja}} ({{lru|Moduły/Licencja}}), {{m|Przypisy}} ({{lru|Moduły/Przypisy}}), {{m|Dopracować}} ({{lru|Moduły/Dopracować}}).
{{BrClear}}
<noinclude><!--
-->{{StandardowaStronaKoniec}}<!--
-->{{Kategoria|Pomoc - Problemy wywołań mechanizmu MediaWiki|sortuj spacją=tak}}<!--
--></noinclude>
stx54xy9dua55b40u0ehd850v8j5eej
Wikibooks:Moduły
4
60758
553282
553271
2026-08-26T18:35:20Z
Persino
2851
/* Spis treści */
553282
wikitext
text/x-wiki
<noinclude><!--
-->{{StandardowaStronaStart
| nagłówek = {{Rozdział|Pomoc Wikibooks|Mechanizm MediaWiki - Moduły}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Rozdział|Koniec}}
}}</noinclude>{{Spis treści|limit=3}}
{{Dopracować|język|styl|wikikod|format|Po ukończeniu opisu wszystkich modułów zostanie sprawdzona jego merytoryczna poprawność.}}
Strona zawiera opis technologii, programowania pomocniczego wikikodu i poszczególnych modułów, bez jego pod. To jest ogólny spis i opis wszystkich podstawowych, i nie tylko, modułów, a w poszczególnych podmodułach, ewentualnie, możemy wejść do dalszych spisów, tzn. do ich, tzw. tomów, itp., lub do bezpośredniego opisu poszczególnych funkcji.
== Technologia modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ==
Przedstawimy tu technologię programowania języka pomocniczego wikikodu '''Mechanizmu MediaWiki'''.
=== Wywołania ===
Parametry podobnie się pisze w wikikodzie i wywołuje jak szablony, tylko z tą różnicą, że w nazwie szablonu jest na samym początku: {{Code|#invoke:}}, co po nim następuje w niej nazwa modułu bez przedrostka {{Code|{{Np|Module|link=tak}}:}}, a pierwszy parametr, który nie jest liczony, jako zmienna, tylko następna z kolei, jest nazwą funkcji w tablicy eksportu. Wtedy jest wywoływany moduł, a w niej ściśle określona funkcja z parametrami jej ramki. Parametrami funkcji też mogą być parametry szablonu rodzica, w której wywoływana jest ta ona.
=== Parametry ===
Moduły wywoływa się przez, np. formę: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''}}}}, lub przez: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|Parametr 1|Parametr 2|...}}}}, albo: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|Parametr 1 {{=}} Wartość 1|Parametr 2 {{=}} Wartość 2|...}}}}, lub w postaci mieszanej: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|...|Parametr n {{=}} Wartość n|...|Parametr m|...}}}}, itp..
== Spis treści ==
{{Osobny artykuł|Wikibooks:Mechanizm MediaWiki|obserwowane=Mechanizmy MediaWiki}}
{{Kolumny|2|2=
=== Moduły podstawowe ===
* {{lru|Moduły/Parametry}} ('''spis treści''') - na operacjach z parametrami funkcji języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
* {{lru|Moduły/Html}} - na operacjach specjalnych z tekstami zawierający znaki HTML i na adresach URL.
* {{lru|Moduły/Nazwy}} ('''spis treści''') - operujących na nazwach MediaWiki projektu.
* {{lru|Moduły/Książkowe}} - na nazwach zawierający specjalne znaki HTML i też odkodowanie ich z nich.
* {{lru|Moduły/Pudełko}} ('''spis treści''') - opakowanych wewnątrz wikikodu w szablony, którego wynikiem są różne nazwy.
* {{lru|Moduły/Ramka}} - ramkowanych, w ramach których są wykonywane pewne operacje.
* {{lru|Moduły/Specjalne}} - do specjalnych zastosowań operacji na obiektach.
* {{lru|Moduły/StronicowyParser}} ('''spis treści''') - stronicowego parsera do numeracji obiektów i odniesień do nich, także operowanie na tak zebranych danych.
* {{lru|Moduły/Szeregi}} - do obsługi na tekstach i kolejnych liniach w tekście, a także do wyszukań tam elementów spełniające pewne kryteria funkcyjne.
* {{lru|Moduły/Szablonowe}} - służących do parsowania tekstu nawet z podanych stron.
* {{lru|Moduły/Techniczne}} - do operacji technicznych na tekście.
* {{lru|Moduły/Wiki}} - robiący czynności na obiektach wikidanych.
=== Moduły standardowe ===
* {{lru|Moduły/Kategorie}} - operujących na kategoriach (w przestrzeni {{Np|Category|link=tak}}) lub z tekstem ze zgłoszonymi tymi kategoriami.
* {{lru|Moduły/Linki}} - obsługujących różnego rodzaju linki.
* {{lru|Moduły/Łatki}} - łatające braki w mechanizmie MediaWiki.
* {{lru|Moduły/Skrót}} - łatające szablony: {{s|Kategoria}} i {{s|Kategorie}}, do wywołań w innych szablonach.
* {{lru|Moduły/Sprawdź}} - oferujące sprawdzanie danych uzyskanych ze strony.
=== Specjalistyczne ===
* {{lru|Moduły/Tabela}} - tworzące wiki-tabelę ze sprawdzeniem rodzaju parametrów.
* {{lru|Moduły/Sekcja referencyjna}} - linków inteligentnych sekcji referencyjnej używanej z podaniem nazwy artykułu bez nazwy książki.
* {{lru|Moduły/Licencja}} - wyświetlania licencji książki z określonym oczekiwanym lub nie nagłówkiem.
* {{lru|Moduły/Przypisy}} - wyświetlania przypisów artykułów lub książki z określonym oczekiwanym lub nie nagłówkiem.
* {{lru|Moduły/Dopracować}} - wyświetlania okienka {{s|mbox}} z komunikatem, w zależności od problemu.
}}
{{BrClear}}
<noinclude><!--
-->{{StandardowaStronaKoniec}}<!--
-->{{Kategorie
| Opisy funkcji, w Lua w Scribunto, w modułach | sortuj spacją 1 = tak
| Pomoc - Problemy wywołań mechanizmu MediaWiki
}}<!--
--></noinclude>
k43gjfyqx7309ov841k4rakq50acm2w
553283
553282
2026-08-26T18:50:48Z
Persino
2851
/* Spis treści */
553283
wikitext
text/x-wiki
<noinclude><!--
-->{{StandardowaStronaStart
| nagłówek = {{Rozdział|Pomoc Wikibooks|Mechanizm MediaWiki - Moduły}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Rozdział|Koniec}}
}}</noinclude>{{Spis treści|limit=3}}
{{Dopracować|język|styl|wikikod|format|Po ukończeniu opisu wszystkich modułów zostanie sprawdzona jego merytoryczna poprawność.}}
Strona zawiera opis technologii, programowania pomocniczego wikikodu i poszczególnych modułów, bez jego pod. To jest ogólny spis i opis wszystkich podstawowych, i nie tylko, modułów, a w poszczególnych podmodułach, ewentualnie, możemy wejść do dalszych spisów, tzn. do ich, tzw. tomów, itp., lub do bezpośredniego opisu poszczególnych funkcji.
== Technologia modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ==
Przedstawimy tu technologię programowania języka pomocniczego wikikodu '''Mechanizmu MediaWiki'''.
=== Wywołania ===
Parametry podobnie się pisze w wikikodzie i wywołuje jak szablony, tylko z tą różnicą, że w nazwie szablonu jest na samym początku: {{Code|#invoke:}}, co po nim następuje w niej nazwa modułu bez przedrostka {{Code|{{Np|Module|link=tak}}:}}, a pierwszy parametr, który nie jest liczony, jako zmienna, tylko następna z kolei, jest nazwą funkcji w tablicy eksportu. Wtedy jest wywoływany moduł, a w niej ściśle określona funkcja z parametrami jej ramki. Parametrami funkcji też mogą być parametry szablonu rodzica, w której wywoływana jest ta ona.
=== Parametry ===
Moduły wywoływa się przez, np. formę: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''}}}}, lub przez: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|Parametr 1|Parametr 2|...}}}}, albo: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|Parametr 1 {{=}} Wartość 1|Parametr 2 {{=}} Wartość 2|...}}}}, lub w postaci mieszanej: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|...|Parametr n {{=}} Wartość n|...|Parametr m|...}}}}, itp..
== Spis treści ==
{{Osobny artykuł|Wikibooks:Mechanizm MediaWiki|obserwowane=Mechanizmy MediaWiki}}
{{Kolumny|2|2=
=== Moduły podstawowe ===
* {{lru|Moduły/Parametry}}{{r|Spis treści}} - na operacjach z parametrami funkcji języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
* {{lru|Moduły/Html}} - na operacjach specjalnych z tekstami zawierający znaki HTML i na adresach URL.
* {{lru|Moduły/Nazwy}}{{r|Spis treści}} - operujących na nazwach MediaWiki projektu.
* {{lru|Moduły/Książkowe}} - na nazwach zawierający specjalne znaki HTML i też odkodowanie ich z nich.
* {{lru|Moduły/Pudełko}}{{r|Spis treści}} - opakowanych wewnątrz wikikodu w szablony, którego wynikiem są różne nazwy.
* {{lru|Moduły/Ramka}} - ramkowanych, w ramach których są wykonywane pewne operacje.
* {{lru|Moduły/Specjalne}} - do specjalnych zastosowań operacji na obiektach.
* {{lru|Moduły/StronicowyParser}}{{r|Spis treści}} - stronicowego parsera do numeracji obiektów i odniesień do nich, także operowanie na tak zebranych danych.
* {{lru|Moduły/Szeregi}} - do obsługi na tekstach i kolejnych liniach w tekście, a także do wyszukań tam elementów spełniające pewne kryteria funkcyjne.
* {{lru|Moduły/Szablonowe}} - służących do parsowania tekstu nawet z podanych stron.
* {{lru|Moduły/Techniczne}} - do operacji technicznych na tekście.
* {{lru|Moduły/Wiki}} - robiący czynności na obiektach wikidanych.
=== Moduły standardowe ===
* {{lru|Moduły/Kategorie}} - operujących na kategoriach (w przestrzeni {{Np|Category|link=tak}}) lub z tekstem ze zgłoszonymi tymi kategoriami.
* {{lru|Moduły/Linki}} - obsługujących różnego rodzaju linki.
* {{lru|Moduły/Łatki}} - łatające braki w mechanizmie MediaWiki.
* {{lru|Moduły/Skrót}} - łatające szablony: {{s|Kategoria}} i {{s|Kategorie}}, do wywołań w innych szablonach.
* {{lru|Moduły/Sprawdź}} - oferujące sprawdzanie danych uzyskanych ze strony.
=== Specjalistyczne ===
* {{lru|Moduły/Tabela}} - tworzące wiki-tabelę ze sprawdzeniem rodzaju parametrów.
* {{lru|Moduły/Sekcja referencyjna}} - linków inteligentnych sekcji referencyjnej używanej z podaniem nazwy artykułu bez nazwy książki.
* {{lru|Moduły/Licencja}} - wyświetlania licencji książki z określonym oczekiwanym lub nie nagłówkiem.
* {{lru|Moduły/Przypisy}} - wyświetlania przypisów artykułów lub książki z określonym oczekiwanym lub nie nagłówkiem.
* {{lru|Moduły/Dopracować}} - wyświetlania okienka {{s|mbox}} z komunikatem, w zależności od problemu.
}}
{{Przypisy
|{{o|n=Spis treści|o=Opisy modułów posiadające, na ich podstronach, swój spis treści.}}
}}
{{BrClear}}
<noinclude><!--
-->{{StandardowaStronaKoniec}}<!--
-->{{Kategorie
| Opisy funkcji, w Lua w Scribunto, w modułach | sortuj spacją 1 = tak
| Pomoc - Problemy wywołań mechanizmu MediaWiki
}}<!--
--></noinclude>
26e55iu9vz31prg67kj24dxyhehrqmu
553286
553283
2026-08-26T19:02:51Z
Persino
2851
/* Spis treści */
553286
wikitext
text/x-wiki
<noinclude><!--
-->{{StandardowaStronaStart
| nagłówek = {{Rozdział|Pomoc Wikibooks|Mechanizm MediaWiki - Moduły}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Rozdział|Koniec}}
}}</noinclude>{{Spis treści|limit=3}}
{{Dopracować|język|styl|wikikod|format|Po ukończeniu opisu wszystkich modułów zostanie sprawdzona jego merytoryczna poprawność.}}
Strona zawiera opis technologii, programowania pomocniczego wikikodu i poszczególnych modułów, bez jego pod. To jest ogólny spis i opis wszystkich podstawowych, i nie tylko, modułów, a w poszczególnych podmodułach, ewentualnie, możemy wejść do dalszych spisów, tzn. do ich, tzw. tomów, itp., lub do bezpośredniego opisu poszczególnych funkcji.
== Technologia modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ==
Przedstawimy tu technologię programowania języka pomocniczego wikikodu '''Mechanizmu MediaWiki'''.
=== Wywołania ===
Parametry podobnie się pisze w wikikodzie i wywołuje jak szablony, tylko z tą różnicą, że w nazwie szablonu jest na samym początku: {{Code|#invoke:}}, co po nim następuje w niej nazwa modułu bez przedrostka {{Code|{{Np|Module|link=tak}}:}}, a pierwszy parametr, który nie jest liczony, jako zmienna, tylko następna z kolei, jest nazwą funkcji w tablicy eksportu. Wtedy jest wywoływany moduł, a w niej ściśle określona funkcja z parametrami jej ramki. Parametrami funkcji też mogą być parametry szablonu rodzica, w której wywoływana jest ta ona.
=== Parametry ===
Moduły wywoływa się przez, np. formę: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''}}}}, lub przez: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|Parametr 1|Parametr 2|...}}}}, albo: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|Parametr 1 {{=}} Wartość 1|Parametr 2 {{=}} Wartość 2|...}}}}, lub w postaci mieszanej: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|...|Parametr n {{=}} Wartość n|...|Parametr m|...}}}}, itp..
== Spis treści ==
{{Osobny artykuł|Wikibooks:Mechanizm MediaWiki|obserwowane=Mechanizmy MediaWiki}}
{{Kolumny|2|2=
=== Moduły podstawowe ===
* {{lru|Moduły/Parametry}}{{r|Spis treści}} - na operacjach z parametrami funkcji języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
* {{lru|Moduły/Html}} - na operacjach specjalnych z tekstami zawierający znaki HTML i na adresach URL.
* {{lru|Moduły/Nazwy}}{{r|Spis treści}} - operujących na nazwach MediaWiki projektu.
* {{lru|Moduły/Książkowe}} - na nazwach zawierający specjalne znaki HTML i też odkodowanie ich z nich.
* {{lru|Moduły/Pudełko}}{{r|Spis treści}} - opakowanych wewnątrz wikikodu w szablony, którego wynikiem są różne nazwy.
* {{lru|Moduły/Ramka}} - ramkowanych, w ramach których są wykonywane pewne operacje.
* {{lru|Moduły/Specjalne}} - do specjalnych zastosowań operacji na obiektach.
* {{lru|Moduły/StronicowyParser}}{{r|Spis treści}} - stronicowego parsera do numeracji obiektów i odniesień do nich, także operowanie na tak zebranych danych.
* {{lru|Moduły/Szeregi}} - do obsługi na tekstach i kolejnych liniach w tekście, a także do wyszukań tam elementów spełniające pewne kryteria funkcyjne.
* {{lru|Moduły/Szablonowe}} - służących do parsowania tekstu nawet z podanych stron.
* {{lru|Moduły/Techniczne}} - do operacji technicznych na tekście.
* {{lru|Moduły/Wiki}} - robiący czynności na obiektach wikidanych.
=== Moduły standardowe ===
* {{lru|Moduły/Kategorie}} - operujących na kategoriach (w przestrzeni {{Np|Category|link=tak}}) lub z tekstem ze zgłoszonymi tymi kategoriami.
* {{lru|Moduły/Linki}} - obsługujących różnego rodzaju linki.
* {{lru|Moduły/Łatki}} - łatające braki w mechanizmie MediaWiki.
* {{lru|Moduły/Skrót}} - łatające szablony: {{s|Kategoria}} i {{s|Kategorie}}, do wywołań w innych szablonach.
* {{lru|Moduły/Sprawdź}} - oferujące sprawdzanie danych uzyskanych ze strony.
=== Specjalistyczne ===
* {{lru|Moduły/Tabela}} - tworzące wiki-tabelę ze sprawdzeniem rodzaju parametrów.
* {{lru|Moduły/Sekcja referencyjna}} - linków inteligentnych sekcji referencyjnej używanej z podaniem nazwy artykułu bez nazwy książki.
* {{lru|Moduły/Licencja}} - wyświetlania licencji książki z określonym oczekiwanym lub nie nagłówkiem.
* {{lru|Moduły/Przypisy}} - wyświetlania przypisów artykułów lub książki z określonym oczekiwanym lub nie nagłówkiem.
* {{lru|Moduły/Dopracować}} - wyświetlania okienka {{s|mbox}} z komunikatem, w zależności od problemu.
}}
{{Przypisy
|{{o|n=Spis treści|o=Opisy modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}} mechanizmu '''MediaWiki''' posiadające na ich podstronach swój spis treści.}}
}}
{{BrClear}}
<noinclude><!--
-->{{StandardowaStronaKoniec}}<!--
-->{{Kategorie
| Opisy funkcji, w Lua w Scribunto, w modułach | sortuj spacją 1 = tak
| Pomoc - Problemy wywołań mechanizmu MediaWiki
}}<!--
--></noinclude>
jlk1n62vpw4pe6l8crechq6kxiwaek8
553289
553286
2026-08-26T19:11:44Z
Persino
2851
/* Spis treści */
553289
wikitext
text/x-wiki
<noinclude><!--
-->{{StandardowaStronaStart
| nagłówek = {{Rozdział|Pomoc Wikibooks|Mechanizm MediaWiki - Moduły}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Rozdział|Koniec}}
}}</noinclude>{{Spis treści|limit=3}}
{{Dopracować|język|styl|wikikod|format|Po ukończeniu opisu wszystkich modułów zostanie sprawdzona jego merytoryczna poprawność.}}
Strona zawiera opis technologii, programowania pomocniczego wikikodu i poszczególnych modułów, bez jego pod. To jest ogólny spis i opis wszystkich podstawowych, i nie tylko, modułów, a w poszczególnych podmodułach, ewentualnie, możemy wejść do dalszych spisów, tzn. do ich, tzw. tomów, itp., lub do bezpośredniego opisu poszczególnych funkcji.
== Technologia modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ==
Przedstawimy tu technologię programowania języka pomocniczego wikikodu '''Mechanizmu MediaWiki'''.
=== Wywołania ===
Parametry podobnie się pisze w wikikodzie i wywołuje jak szablony, tylko z tą różnicą, że w nazwie szablonu jest na samym początku: {{Code|#invoke:}}, co po nim następuje w niej nazwa modułu bez przedrostka {{Code|{{Np|Module|link=tak}}:}}, a pierwszy parametr, który nie jest liczony, jako zmienna, tylko następna z kolei, jest nazwą funkcji w tablicy eksportu. Wtedy jest wywoływany moduł, a w niej ściśle określona funkcja z parametrami jej ramki. Parametrami funkcji też mogą być parametry szablonu rodzica, w której wywoływana jest ta ona.
=== Parametry ===
Moduły wywoływa się przez, np. formę: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''}}}}, lub przez: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|Parametr 1|Parametr 2|...}}}}, albo: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|Parametr 1 {{=}} Wartość 1|Parametr 2 {{=}} Wartość 2|...}}}}, lub w postaci mieszanej: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|...|Parametr n {{=}} Wartość n|...|Parametr m|...}}}}, itp..
== Spis treści ==
{{Osobny artykuł|Wikibooks:Mechanizm MediaWiki|obserwowane=Mechanizmy MediaWiki}}
{{Kolumny|2|2=
=== Moduły podstawowe ===
* {{lru|Moduły/Parametry}}{{r|Spis treści}} - na operacjach z parametrami funkcji języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
* {{lru|Moduły/Html}} - na operacjach specjalnych z tekstami zawierający znaki HTML i na adresach URL.
* {{lru|Moduły/Nazwy}}{{r|Spis treści}} - operujących na nazwach MediaWiki projektu.
* {{lru|Moduły/Książkowe}} - na nazwach zawierający specjalne znaki HTML i też odkodowanie ich z nich.
* {{lru|Moduły/Pudełko}}{{r|Spis treści}} - opakowanych wewnątrz wikikodu w szablony, którego wynikiem są różne nazwy.
* {{lru|Moduły/Ramka}} - ramkowanych, w ramach których są wykonywane pewne operacje.
* {{lru|Moduły/Specjalne}} - do specjalnych zastosowań operacji na obiektach.
* {{lru|Moduły/StronicowyParser}}{{r|Spis treści}} - stronicowego parsera do numeracji obiektów i odniesień do nich, także operowanie na tak zebranych danych.
* {{lru|Moduły/Szeregi}} - do obsługi na tekstach i kolejnych liniach w tekście, a także do wyszukań tam elementów spełniające pewne kryteria funkcyjne.
* {{lru|Moduły/Szablonowe}} - służących do parsowania tekstu nawet z podanych stron.
* {{lru|Moduły/Techniczne}} - do operacji technicznych na tekście.
* {{lru|Moduły/Wiki}} - robiący czynności na obiektach wikidanych.
=== Moduły standardowe ===
* {{lru|Moduły/Kategorie}} - operujących na kategoriach (w przestrzeni {{Np|Category|link=tak}}) lub z tekstem ze zgłoszonymi tymi kategoriami.
* {{lru|Moduły/Linki}} - obsługujących różnego rodzaju linki.
* {{lru|Moduły/Łatki}} - łatające braki w mechanizmie MediaWiki.
* {{lru|Moduły/Skrót}} - łatające szablony: {{s|Kategoria}} i {{s|Kategorie}}, do wywołań w innych szablonach.
* {{lru|Moduły/Sprawdź}} - oferujące sprawdzanie danych uzyskanych ze strony.
=== Specjalistyczne ===
* {{lru|Moduły/Tabela}} - tworzące wiki-tabelę ze sprawdzeniem rodzaju parametrów.
* {{lru|Moduły/Sekcja referencyjna}} - linków inteligentnych sekcji referencyjnej używanej z podaniem nazwy artykułu bez nazwy książki.
* {{lru|Moduły/Licencja}} - wyświetlania licencji książki z określonym oczekiwanym lub nie nagłówkiem.
* {{lru|Moduły/Przypisy}} - wyświetlania przypisów artykułów lub książki z określonym oczekiwanym lub nie nagłówkiem.
* {{lru|Moduły/Dopracować}} - wyświetlania okienka {{s|mbox}} z komunikatem, w zależności od problemu.
}}
{{Przypisy
|{{o|n=Spis treści|o=Opisy modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}} mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' posiadające na ich podstronach swój spis treści.}}
}}
{{BrClear}}
<noinclude><!--
-->{{StandardowaStronaKoniec}}<!--
-->{{Kategorie
| Opisy funkcji, w Lua w Scribunto, w modułach | sortuj spacją 1 = tak
| Pomoc - Problemy wywołań mechanizmu MediaWiki
}}<!--
--></noinclude>
94f8187athc2iu1iukqao1gj5udfdfc
553291
553289
2026-08-26T19:13:58Z
Persino
2851
/* Spis treści */
553291
wikitext
text/x-wiki
<noinclude><!--
-->{{StandardowaStronaStart
| nagłówek = {{Rozdział|Pomoc Wikibooks|Mechanizm MediaWiki - Moduły}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Rozdział|Koniec}}
}}</noinclude>{{Spis treści|limit=3}}
{{Dopracować|język|styl|wikikod|format|Po ukończeniu opisu wszystkich modułów zostanie sprawdzona jego merytoryczna poprawność.}}
Strona zawiera opis technologii, programowania pomocniczego wikikodu i poszczególnych modułów, bez jego pod. To jest ogólny spis i opis wszystkich podstawowych, i nie tylko, modułów, a w poszczególnych podmodułach, ewentualnie, możemy wejść do dalszych spisów, tzn. do ich, tzw. tomów, itp., lub do bezpośredniego opisu poszczególnych funkcji.
== Technologia modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ==
Przedstawimy tu technologię programowania języka pomocniczego wikikodu '''Mechanizmu MediaWiki'''.
=== Wywołania ===
Parametry podobnie się pisze w wikikodzie i wywołuje jak szablony, tylko z tą różnicą, że w nazwie szablonu jest na samym początku: {{Code|#invoke:}}, co po nim następuje w niej nazwa modułu bez przedrostka {{Code|{{Np|Module|link=tak}}:}}, a pierwszy parametr, który nie jest liczony, jako zmienna, tylko następna z kolei, jest nazwą funkcji w tablicy eksportu. Wtedy jest wywoływany moduł, a w niej ściśle określona funkcja z parametrami jej ramki. Parametrami funkcji też mogą być parametry szablonu rodzica, w której wywoływana jest ta ona.
=== Parametry ===
Moduły wywoływa się przez, np. formę: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''}}}}, lub przez: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|Parametr 1|Parametr 2|...}}}}, albo: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|Parametr 1 {{=}} Wartość 1|Parametr 2 {{=}} Wartość 2|...}}}}, lub w postaci mieszanej: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|...|Parametr n {{=}} Wartość n|...|Parametr m|...}}}}, itp..
== Spis treści ==
{{Osobny artykuł|Wikibooks:Mechanizm MediaWiki|obserwowane=Mechanizmy MediaWiki}}
{{Kolumny|2|2=
=== Moduły podstawowe ===
* {{lru|Moduły/Parametry}}{{r|Spis treści}} - na operacjach z parametrami funkcji języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
* {{lru|Moduły/Html}} - na operacjach specjalnych z tekstami zawierający znaki HTML i na adresach URL.
* {{lru|Moduły/Nazwy}}{{r|Spis treści}} - operujących na nazwach MediaWiki projektu.
* {{lru|Moduły/Książkowe}} - na nazwach zawierający specjalne znaki HTML i też odkodowanie ich z nich.
* {{lru|Moduły/Pudełko}}{{r|Spis treści}} - opakowanych wewnątrz wikikodu w szablony, którego wynikiem są różne nazwy.
* {{lru|Moduły/Ramka}} - ramkowanych, w ramach których są wykonywane pewne operacje.
* {{lru|Moduły/Specjalne}} - do specjalnych zastosowań operacji na obiektach.
* {{lru|Moduły/StronicowyParser}}{{r|Spis treści}} - stronicowego parsera do numeracji obiektów i odniesień do nich, także operowanie na tak zebranych danych.
* {{lru|Moduły/Szeregi}} - do obsługi na tekstach i kolejnych liniach w tekście, a także do wyszukań tam elementów spełniające pewne kryteria funkcyjne.
* {{lru|Moduły/Szablonowe}} - służących do parsowania tekstu nawet z podanych stron.
* {{lru|Moduły/Techniczne}} - do operacji technicznych na tekście.
* {{lru|Moduły/Wiki}} - robiący czynności na obiektach wikidanych.
=== Moduły standardowe ===
* {{lru|Moduły/Kategorie}} - operujących na kategoriach (w przestrzeni {{Np|Category|link=tak}}) lub z tekstem ze zgłoszonymi tymi kategoriami.
* {{lru|Moduły/Linki}} - obsługujących różnego rodzaju linki.
* {{lru|Moduły/Łatki}} - łatające braki w mechanizmie MediaWiki.
* {{lru|Moduły/Skrót}} - łatające szablony: {{s|Kategoria}} i {{s|Kategorie}}, do wywołań w innych szablonach.
* {{lru|Moduły/Sprawdź}} - oferujące sprawdzanie danych uzyskanych ze strony.
=== Specjalistyczne ===
* {{lru|Moduły/Tabela}} - tworzące wiki-tabelę ze sprawdzeniem rodzaju parametrów.
* {{lru|Moduły/Sekcja referencyjna}} - linków inteligentnych sekcji referencyjnej używanej z podaniem nazwy artykułu bez nazwy książki.
* {{lru|Moduły/Licencja}} - wyświetlania licencji książki z określonym oczekiwanym lub nie nagłówkiem.
* {{lru|Moduły/Przypisy}} - wyświetlania przypisów artykułów lub książki z określonym oczekiwanym lub nie nagłówkiem.
* {{lru|Moduły/Dopracować}} - wyświetlania okienka {{s|mbox}} z komunikatem, w zależności od problemu.
}}
== Przypisy ==
{{Przypisy
|{{o|n=Spis treści|o=Opisy modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}} mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' posiadające na ich podstronach swój spis treści.}}
}}
{{BrClear}}
<noinclude><!--
-->{{StandardowaStronaKoniec}}<!--
-->{{Kategorie
| Opisy funkcji, w Lua w Scribunto, w modułach | sortuj spacją 1 = tak
| Pomoc - Problemy wywołań mechanizmu MediaWiki
}}<!--
--></noinclude>
47cr6wbm332uchdj64sl137oc9pfzqr
553293
553291
2026-08-26T19:17:14Z
Persino
2851
/* Przypisy */
553293
wikitext
text/x-wiki
<noinclude><!--
-->{{StandardowaStronaStart
| nagłówek = {{Rozdział|Pomoc Wikibooks|Mechanizm MediaWiki - Moduły}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Rozdział|Koniec}}
}}</noinclude>{{Spis treści|limit=3}}
{{Dopracować|język|styl|wikikod|format|Po ukończeniu opisu wszystkich modułów zostanie sprawdzona jego merytoryczna poprawność.}}
Strona zawiera opis technologii, programowania pomocniczego wikikodu i poszczególnych modułów, bez jego pod. To jest ogólny spis i opis wszystkich podstawowych, i nie tylko, modułów, a w poszczególnych podmodułach, ewentualnie, możemy wejść do dalszych spisów, tzn. do ich, tzw. tomów, itp., lub do bezpośredniego opisu poszczególnych funkcji.
== Technologia modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ==
Przedstawimy tu technologię programowania języka pomocniczego wikikodu '''Mechanizmu MediaWiki'''.
=== Wywołania ===
Parametry podobnie się pisze w wikikodzie i wywołuje jak szablony, tylko z tą różnicą, że w nazwie szablonu jest na samym początku: {{Code|#invoke:}}, co po nim następuje w niej nazwa modułu bez przedrostka {{Code|{{Np|Module|link=tak}}:}}, a pierwszy parametr, który nie jest liczony, jako zmienna, tylko następna z kolei, jest nazwą funkcji w tablicy eksportu. Wtedy jest wywoływany moduł, a w niej ściśle określona funkcja z parametrami jej ramki. Parametrami funkcji też mogą być parametry szablonu rodzica, w której wywoływana jest ta ona.
=== Parametry ===
Moduły wywoływa się przez, np. formę: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''}}}}, lub przez: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|Parametr 1|Parametr 2|...}}}}, albo: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|Parametr 1 {{=}} Wartość 1|Parametr 2 {{=}} Wartość 2|...}}}}, lub w postaci mieszanej: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|...|Parametr n {{=}} Wartość n|...|Parametr m|...}}}}, itp..
== Spis treści ==
{{Osobny artykuł|Wikibooks:Mechanizm MediaWiki|obserwowane=Mechanizmy MediaWiki}}
{{Kolumny|2|2=
=== Moduły podstawowe ===
* {{lru|Moduły/Parametry}}{{r|Spis treści}} - na operacjach z parametrami funkcji języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
* {{lru|Moduły/Html}} - na operacjach specjalnych z tekstami zawierający znaki HTML i na adresach URL.
* {{lru|Moduły/Nazwy}}{{r|Spis treści}} - operujących na nazwach MediaWiki projektu.
* {{lru|Moduły/Książkowe}} - na nazwach zawierający specjalne znaki HTML i też odkodowanie ich z nich.
* {{lru|Moduły/Pudełko}}{{r|Spis treści}} - opakowanych wewnątrz wikikodu w szablony, którego wynikiem są różne nazwy.
* {{lru|Moduły/Ramka}} - ramkowanych, w ramach których są wykonywane pewne operacje.
* {{lru|Moduły/Specjalne}} - do specjalnych zastosowań operacji na obiektach.
* {{lru|Moduły/StronicowyParser}}{{r|Spis treści}} - stronicowego parsera do numeracji obiektów i odniesień do nich, także operowanie na tak zebranych danych.
* {{lru|Moduły/Szeregi}} - do obsługi na tekstach i kolejnych liniach w tekście, a także do wyszukań tam elementów spełniające pewne kryteria funkcyjne.
* {{lru|Moduły/Szablonowe}} - służących do parsowania tekstu nawet z podanych stron.
* {{lru|Moduły/Techniczne}} - do operacji technicznych na tekście.
* {{lru|Moduły/Wiki}} - robiący czynności na obiektach wikidanych.
=== Moduły standardowe ===
* {{lru|Moduły/Kategorie}} - operujących na kategoriach (w przestrzeni {{Np|Category|link=tak}}) lub z tekstem ze zgłoszonymi tymi kategoriami.
* {{lru|Moduły/Linki}} - obsługujących różnego rodzaju linki.
* {{lru|Moduły/Łatki}} - łatające braki w mechanizmie MediaWiki.
* {{lru|Moduły/Skrót}} - łatające szablony: {{s|Kategoria}} i {{s|Kategorie}}, do wywołań w innych szablonach.
* {{lru|Moduły/Sprawdź}} - oferujące sprawdzanie danych uzyskanych ze strony.
=== Specjalistyczne ===
* {{lru|Moduły/Tabela}} - tworzące wiki-tabelę ze sprawdzeniem rodzaju parametrów.
* {{lru|Moduły/Sekcja referencyjna}} - linków inteligentnych sekcji referencyjnej używanej z podaniem nazwy artykułu bez nazwy książki.
* {{lru|Moduły/Licencja}} - wyświetlania licencji książki z określonym oczekiwanym lub nie nagłówkiem.
* {{lru|Moduły/Przypisy}} - wyświetlania przypisów artykułów lub książki z określonym oczekiwanym lub nie nagłówkiem.
* {{lru|Moduły/Dopracować}} - wyświetlania okienka {{s|mbox}} z komunikatem, w zależności od problemu.
}}
== Przypisy ==
{{Przypisy
|{{o|n=Spis treści|o=Opisy modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}} mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' posiadające na ich podstronach swój '''spis treści'''.}}
}}
{{BrClear}}
<noinclude><!--
-->{{StandardowaStronaKoniec}}<!--
-->{{Kategorie
| Opisy funkcji, w Lua w Scribunto, w modułach | sortuj spacją 1 = tak
| Pomoc - Problemy wywołań mechanizmu MediaWiki
}}<!--
--></noinclude>
hsdewlx9m9ehbaxef8msqudd8pg3u7q
553295
553293
2026-08-26T19:24:30Z
Persino
2851
/* Przypisy */
553295
wikitext
text/x-wiki
<noinclude><!--
-->{{StandardowaStronaStart
| nagłówek = {{Rozdział|Pomoc Wikibooks|Mechanizm MediaWiki - Moduły}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Rozdział|Koniec}}
}}</noinclude>{{Spis treści|limit=3}}
{{Dopracować|język|styl|wikikod|format|Po ukończeniu opisu wszystkich modułów zostanie sprawdzona jego merytoryczna poprawność.}}
Strona zawiera opis technologii, programowania pomocniczego wikikodu i poszczególnych modułów, bez jego pod. To jest ogólny spis i opis wszystkich podstawowych, i nie tylko, modułów, a w poszczególnych podmodułach, ewentualnie, możemy wejść do dalszych spisów, tzn. do ich, tzw. tomów, itp., lub do bezpośredniego opisu poszczególnych funkcji.
== Technologia modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ==
Przedstawimy tu technologię programowania języka pomocniczego wikikodu '''Mechanizmu MediaWiki'''.
=== Wywołania ===
Parametry podobnie się pisze w wikikodzie i wywołuje jak szablony, tylko z tą różnicą, że w nazwie szablonu jest na samym początku: {{Code|#invoke:}}, co po nim następuje w niej nazwa modułu bez przedrostka {{Code|{{Np|Module|link=tak}}:}}, a pierwszy parametr, który nie jest liczony, jako zmienna, tylko następna z kolei, jest nazwą funkcji w tablicy eksportu. Wtedy jest wywoływany moduł, a w niej ściśle określona funkcja z parametrami jej ramki. Parametrami funkcji też mogą być parametry szablonu rodzica, w której wywoływana jest ta ona.
=== Parametry ===
Moduły wywoływa się przez, np. formę: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''}}}}, lub przez: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|Parametr 1|Parametr 2|...}}}}, albo: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|Parametr 1 {{=}} Wartość 1|Parametr 2 {{=}} Wartość 2|...}}}}, lub w postaci mieszanej: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|...|Parametr n {{=}} Wartość n|...|Parametr m|...}}}}, itp..
== Spis treści ==
{{Osobny artykuł|Wikibooks:Mechanizm MediaWiki|obserwowane=Mechanizmy MediaWiki}}
{{Kolumny|2|2=
=== Moduły podstawowe ===
* {{lru|Moduły/Parametry}}{{r|Spis treści}} - na operacjach z parametrami funkcji języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
* {{lru|Moduły/Html}} - na operacjach specjalnych z tekstami zawierający znaki HTML i na adresach URL.
* {{lru|Moduły/Nazwy}}{{r|Spis treści}} - operujących na nazwach MediaWiki projektu.
* {{lru|Moduły/Książkowe}} - na nazwach zawierający specjalne znaki HTML i też odkodowanie ich z nich.
* {{lru|Moduły/Pudełko}}{{r|Spis treści}} - opakowanych wewnątrz wikikodu w szablony, którego wynikiem są różne nazwy.
* {{lru|Moduły/Ramka}} - ramkowanych, w ramach których są wykonywane pewne operacje.
* {{lru|Moduły/Specjalne}} - do specjalnych zastosowań operacji na obiektach.
* {{lru|Moduły/StronicowyParser}}{{r|Spis treści}} - stronicowego parsera do numeracji obiektów i odniesień do nich, także operowanie na tak zebranych danych.
* {{lru|Moduły/Szeregi}} - do obsługi na tekstach i kolejnych liniach w tekście, a także do wyszukań tam elementów spełniające pewne kryteria funkcyjne.
* {{lru|Moduły/Szablonowe}} - służących do parsowania tekstu nawet z podanych stron.
* {{lru|Moduły/Techniczne}} - do operacji technicznych na tekście.
* {{lru|Moduły/Wiki}} - robiący czynności na obiektach wikidanych.
=== Moduły standardowe ===
* {{lru|Moduły/Kategorie}} - operujących na kategoriach (w przestrzeni {{Np|Category|link=tak}}) lub z tekstem ze zgłoszonymi tymi kategoriami.
* {{lru|Moduły/Linki}} - obsługujących różnego rodzaju linki.
* {{lru|Moduły/Łatki}} - łatające braki w mechanizmie MediaWiki.
* {{lru|Moduły/Skrót}} - łatające szablony: {{s|Kategoria}} i {{s|Kategorie}}, do wywołań w innych szablonach.
* {{lru|Moduły/Sprawdź}} - oferujące sprawdzanie danych uzyskanych ze strony.
=== Specjalistyczne ===
* {{lru|Moduły/Tabela}} - tworzące wiki-tabelę ze sprawdzeniem rodzaju parametrów.
* {{lru|Moduły/Sekcja referencyjna}} - linków inteligentnych sekcji referencyjnej używanej z podaniem nazwy artykułu bez nazwy książki.
* {{lru|Moduły/Licencja}} - wyświetlania licencji książki z określonym oczekiwanym lub nie nagłówkiem.
* {{lru|Moduły/Przypisy}} - wyświetlania przypisów artykułów lub książki z określonym oczekiwanym lub nie nagłówkiem.
* {{lru|Moduły/Dopracować}} - wyświetlania okienka {{s|mbox}} z komunikatem, w zależności od problemu.
}}
== Przypisy ==
{{Przypisy
|{{o|n=Spis treści|o=Opisy modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}} mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' posiadające na ich podstronach swój '''{{lpg|spis treści}}'''.}}
}}
{{BrClear}}
<noinclude><!--
-->{{StandardowaStronaKoniec}}<!--
-->{{Kategorie
| Opisy funkcji, w Lua w Scribunto, w modułach | sortuj spacją 1 = tak
| Pomoc - Problemy wywołań mechanizmu MediaWiki
}}<!--
--></noinclude>
ht9p0w5v96w6kwa8mrty5d4otbjo2nm
Wikibooks:Moduły/Ramka
4
63231
553319
553269
2026-08-27T08:40:18Z
Persino
2851
/* Parametry niedopowiednikowych zmiennych */
553319
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Ramka}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local ramka_modul=require("Module:Ramka");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
== Funcje lokalne modułu ==
=== {{Code|ParserBlokowy}} ===
Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}} tylko w module {{Code|{{ld2|Ramka}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function ParserBlokowy(frame, co_ma_wywolac)...end;
</syntaxhighlight>
Funkcja przyjmuje tablicę ramki tablicy transportu funkcji i drugi parametr, który mówi, czy ma uwzględniać dany szablon, jeżeli {{Tt|0}}, funkcję modułu, jeżeli {{Tt|1}}, i funkcję parsera, jeżeli: {{Tt|2}}, a {{Tt|3}} i dalej, to już dany szablon.
Tablica ramki może przyjmować ze strony ramki dziecka szablonu, jak i parametry rodzica szablonu, te ramki są:
* Funkcja przyjmuje parametry podstawowe, które piszemy w postaci:
** {{Code|Nazwa}} - jest to nazwa szablonu, modułu, czy parsera,
** {{Code|bez argumentów rodzica}} - tablica parametrów oddzielonych średnikami, których szablon nie przyjmuje,nawet jeżeli one są,
** {{Code|nazwa szablonu rodzica}} - jest to zmienna przechowująca nazwę szablonu rodzica ramki dziecka,
** {{Code|bez argumentów nienazwanych rodzica}} - szablon w ramce nie przyjmuje parametrów nienazwanych podanych w rodzicu ramki,
** {{Code|potomek}} - zmienna mówiąca, że to jest potomek rodzica ramki, jeżeli nie jest podany parametr {{Code|nie potomek}} - dodane przez tę funkcję,
** {{Code|nie potomek}} - zmienna mówiąca, że to nie jest potomek szablonu,
** {{Code|bez argumentów szablonu}} - zmienna oddzielonych średnikami parametrów, których nie wolno uwzględniać w walidacji błędów w {{m|Sprawdź|Parametry}},
** {{Code|bez dodatkowych sprawdzeń}} - nie jest uruchamiana walidacja parametrów szablonu rodzica,
** {{Code|parametry rodzica}} - zmienna przedstawiająca parametry rodzica przekazane do ramki: {{m|Sprawdź|Parametry}} - dodane przez tę funkcję,
** {{Code|zmienna z parametrami rodzica}} - parametr mówiący, czy ma tworzyć zmienne z parametrami rodzica, a jeżeli nie jest on, z zadnych z jego potomków podany, to zmienna ta z parametrami jest przekazywana na kolejnego przodka,
** {{Code|zmienna z argumentami ramki}} - zmienna mówiąca, czy mają być tworzone parametry ramki,które nie są walidowane przez walidację błędów w {{m|Sprawdź|Parametry}}, wtedy te parametry rodzica nie mogą być podane, przy pomocy tej zmiennej zmienne z: {{Code|bez argumentów szablonu}} są łączone z parametrami ramki,
** {{Code|zmienna z nazwą szablonu rodzica}} - parametr, czy ma tworzyć zmienną: {{Code|nazwa szablonu rodzica}},
** {{Code|parametry funkcji modułu pudełek}} - czy do funkcji mają wchodzić niepodstawowe nienazwane parametry modułu pudełek, a nie inne zmienne,
** {{Code|parametry podstawowe funkcji modułu pudełek}} - czy do funkcji mają wchodzić podstawowe parametry funkcji modułu pudełek, a nie inne zmienne,
** {{Code|usuń z parametrów ramki}} - parametr przedstawiający zmienne oddzielone średnikami, których parametrów ramki ma nie uwzględniać.
* {{Code|Funkcja}} - nazwa funkcji w module, który ma wywołać, w przypadku, gdy parametr funkcji {{sr|#ParserBlokowy()|p=Ramka}} ma wartość {{Tt|1}}, czyli wywołujemy funkcję {{sr|#p["Moduł"]()|p=Ramka}}.
Funkcja uruchamia szablon z parametrami rodzica ramki bez parametrów opisanych zmienną: {{Code|bez argumentów szablonu}}, i bez parametrów ramki minus zmienne opisane przez: {{Code|usuń z parametrów ramki}} dla wartości {{Tt|0}}, funkcję modułu ramki dla wartości {{Tt|1}}, funkcję parsera dla {{Tt|2}}, i {{Tt|3}} i dalej funkcję szablonu.
Za pomocą tej funkcji możemy wielopoziomowo wywoływać funkcje przekazując parametry od najwyższego poziomu do najniższego.
Ta funkcję jako do budowy szablonów, definiując też w jednym miejscu walidację błędów, dla przykładu wykorzystano ją w: {{s|Wzór}}, {{s|Wzór2}}, {{s|CentrujWzór}},{{s|CentrujWzór2}}, i inne, czyli uruchamianie szablonów, a uruchamianie funkcji modułu, w tym funkcji {{m|Cytuj|custom}} w szablonie {{s|PrzypisStrona}}.
Przykładem wywołania szablonu jest, która jest w szablonie: {{s|Wzór}}, w którym jest wywoływany inny szablon, tym razem silnik tego szablonu:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Szablon|Nazwa=Wzór/silnik|pozycja numeracji=po prawej|wyrównanie={{{wyrównanie|lewy}}}|bez argumentów szablonu=pozycja numeracji|zmienna z parametrami rodzica=tak}}
</syntaxhighlight>
A przykład wywołania funkcji modułu, która jest w: {{s|PrzypisStrona}}, w którym jest wywoływany funkcja modułu {{m|Cytuj|custom}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Moduł|Nazwa=Cytuj|Funkcja=custom
| url = {{{adres}}}/{{{1|{{{podstrona}}}}}}
| tytuł = {{{2|{{{nazwa}}}}}}
| praca = {{lz
| s = {{Jeśli niepuste|{{{serwis|}}}|{{Dopasuj|ciąg={{{adres}}}|wzór=^(%a+:%/%/[^%/]+)}}}}
| n = {{Dopasuj|ciąg={{Jeśli niepuste|{{{serwis|}}}|{{{adres}}}}}|wzór=^%a+:%/%/([^%/]+)}}
}}
| data = {{#if:{{{data|}}}|{{Czas|Y-m-j|{{{data}}}}}}}
| data dostępu = {{Czas|j.m.Y|{{{data dostępu|}}}}}
}}
</syntaxhighlight>
=== {{Code|BudowaSzereguZDanych}} ===
Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}} tylko w module {{Code|{{ld2|Ramka}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function BudowaSzereguZDanych(frame,tab_lancuch,minimum,maksimum)...end;
</syntaxhighlight>
Funkcja posiada następujące parametry podane w tablicy ramki dla funkcji zwracanej tablicy transportu:
* {{Code|akapit}} - jeśli niepusta, to ona definiuje akapit ze znaków: {{Code|\n\n}},
* {{Code|przecinek}}- drukuje przecinek, jeśli posiada wartość niepustą, ten przecinek jest w postaci: {{Code|", "}}, został on specjalnie objęty w cudzysłowy, aby zilustrować, że po przzecinku znajduje się spacja,
* {{Code|nowa linia}} - w przeciwieństwo do {{Code|akapit}}, pisze jedną nową linię, a nie dwie, jako: {{Code|\n}},
* {{Code|wyliczanka}} - wylicza elementy z przecinkami, stawiając przed ostatnim elementem zamiast jego wyraz wyliczania {{Code|i}},
* {{Code|początek}} - mówi, że na początku musi znajdować się przecinek,
* {{Code|myślnik}} - mówi, że jeśli nie ma początku przecinka, to stawiany jest myślnik, używany zamiast {{Code|poczatek}},
* {{Code|warunkowe}} - instrukcje wikikodu niezawierające we wnętrzu klamerek zostaną rozwinięte,
** {{Code|parametr}} - mówi w derektywach, jeśli niepusty, że derektywy muszą przyjmować wartość w postaci pseudoszablonów, w przeciwnym wypadku jego odpowiednika znaku,
** Funkcja w tym warunku zwraca ciąg znaków rozwiniętego warunku.
Funkcja posiada też mikroszablony:
* {{Code|<nowiki>{{min}}</nowiki>}} - minimalna wartość szeregu zmiennych,
* {{Code|<nowiki>{{max}}</nowiki>}} - a tutaj ich maksymalna.
Te dwie zmienne są podstawiane do uzyskanego ciągu.
Uzyskany tekst jest łączony za pomocą akapitu,a jak nie, to nowych linii, w przeciwnym wypadku jest łączony ciągiem pustym.
Deklaracja, a zarazem definicja funkcji wygląda następująco:
<syntaxhighlight lang="lua">
local function BudowaSzereguZDanych(frame,tab_lancuch,minimum,maksimum)
...
end;
</syntaxhighlight>
* {{Code|frame}} - tablica ramki w tablica transportu funkcji {{lpg|Lua}} w {{lpr|Lua|Scribunto}},
* {{Code|tab_lancuch}} - jest to tablica uzyskanych z innych funkcji wikikodów w tym module,
* {{Code|minimum}} - jak powyżej: {{Code|<nowiki>{{min}}</nowiki>}},
* {{Code|maksimum}} - jak powyżej: {{Code|<nowiki>{{max}}</nowiki>}}.
Funkcja zwraca rozwinięty, co do instrukcji warunkowych bez wewnętrznych klamerek, połączonych podanych łańcuchów odpowiednio w postaci tablicy, do odpowiedniego szeregu, pod którym jest ukryty wikikod.
== {{Code|p.InstrukcjeWarunkowe}} ==
Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
{{Tabela|klasa=wikitable tekst-centruj-td|pozycja=prawo|liczba wierszy=12|liczba kolumn=3
| nagłówek 1 = Derektywa | nagłówek 2 = Odpowiednik znakowych | nagłówek 3 = Pseudoszablon
| komórka 1_1 = __!__ | komórka 1_2 = | | komórka 1_3 = {{s|!}}
| komórka 2_1 = __!!__ | komórka 2_2 = || | komórka 2_3 = {{s|!!}}
| komórka 3_1 = __(__ | komórka 3_2 = { | komórka 3_3 = {{s|(}}
| komórka 4_1 = __((__ | komórka 4_2 = {{ | komórka 4_3 = {{s|((}}
| komórka 5_1 = __(((__ | komórka 5_2 = {{{ | komórka 5_3 = {{s|(((}}
| komórka 6_1 = __)__ | komórka 6_2 = } | komórka 6_3 = {{s|)}}
| komórka 7_1 = __))__ | komórka 7_2 = }} | komórka 7_3 = {{s|))}}
| komórka 8_1 = __)))__ | komórka 8_2 = }}} | komórka 8_3 = {{s|)))}}
| komórka 9_1 = __!(__ | komórka 9_2 = [ | komórka 9_3 = {{s|!(}}
| komórka 10_1 = __!((__ | komórka 10_2 = [[ | komórka 10_3 = {{s|!((}}
| komórka 11_1 = __)!__ | komórka 11_2 = ] | komórka 11_3 = {{s|)!}}
| komórka 12_1 = __))!__ | komórka 12_2 = ]] | komórka 12_3 = {{s|))!}}
}}
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.InstrukcjeWarunkowe = function(ciag,derektywy_specjalne,derektywy_parametrowe)...end;
</syntaxhighlight>
* {{Code|ciag}} - podany ciąg do rozwinięcia z instrukcji warunkowych wewnątrz nie posiadający klamerek,
* {{Code|derektywy_specjalne}} - używa do zastępowania specjalnych derektyw, podane po prawej stronie w ramce pływającej,
* {{Code|derektywy_parametrowe}} - czy używać pseudoszablonów zamiast ich odpowiedników znakowych.
Obsługiwane instrukcje warunkowe: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}.
Ta funkcja jest używana przez funkcję: {{Code|{{sr|#BudowaSzereguZDanych()|p=Ramka}}}}, poprzez funkcję: {{Code|{{sr|#p.Powtarzaj()|p=Ramka}}}}.
Przykłady użycia pośrednio przez tą ostatnią funkcję: ona jest użyta w walidacji błędów {{m|Sprawdź|Parametry}} poprzez: {{m|Ramka|Powtarzaj|...|warunkowe{{=}}tak|...}}, uruchamianą przez: {{m|Ramka|Rozwiń|...}}, na przykładzie w kodzie derektywy:
; Gdzie jest pokazane w wikikodzie definiujących szablony{{dk}}
* {{Code|__!__}} - w: {{s|Kategorie}}, ponieważ ten szablon generuje, dla tego coś w rodzaju {{s|!}}, jest wtedy nie w sposób odróźnić tego od innego tego samego elementu w instrukcjach warunkowych, czyli bezpośrednio wstawienie tego do wikikodu, normalnie powoduje to błędne działanie jego generatora, dlatego trzeba użyć właśnie to.
== Funkcje parametrów i argumentów ==
=== {{Code|p.RozpakujArgumenty}} ===
Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.RozpakujArgumenty = function(zmienna_z_argumentami)...end;
</syntaxhighlight>
Funkcja przyjmuje jeden parametr ze zmiennymi oddzielonych średnikami, je rozpakowuje wyjmując z pól pomiędzy średnikami zmienne, i układa je w tablicy, która jest zwaracana jako parametr, te parametry mogą mięć mikroszablony, które sa zastępowane odpowiednikami znakowymi. Jedynym tego przykładem jest mikrofunkcja {{Code|<nowiki>{{+}}</nowiki>}}, ktora jest zamieniana na średnik.
=== {{Code|p.PakujParametry}} ===
Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja pakuje parametry tablicy {{lpg|Lua}} do tablicy: {{Code|JSON}}, przy pomocy funkcji, którego wynik jest zwracany do tej funkcji:
<syntaxhighlight lang="lua">
p.PakujParametry = function(args)
return mw.text.jsonEncode(args,mw.text.JSON_PRESERVE_KEYS);
end;
</syntaxhighlight>
Ten szablon nazywa parametry jakby nienazwane w tablicy {{Code|JSON}} (tutaj numerowanie jest od zera) z tablicy {{lpg|Lua}} (tutaj od jedynki), do tablicy nazwanej, jak to robi się w {{Lpr|Lua|Scribunto}}.
=== {{Code|p.RozpakujParametry}} ===
Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja rozpakowuje parametry z tablicy: {{Code|JSON}}, do tablicy {{lpg|Lua}}, przy pomocy funkcji, którego wynik jest zwracany do tej funkcji.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.RozpakujParametry = function (zmienna_z_parametrami)
return mw.text.jsonDecode(args,mw.text.JSON_PRESERVE_KEYS);
end;
</syntaxhighlight>
Ten szablon nazywa parametry nienazwane w tablicy {{lpg|Lua}} (tutaj od jedynki) z tablicy {{Code|JSON}} (tutaj numerowanie jest od zera), do tablicy nienazwanej z nazwanej, jak to robi się w {{Lpr|Lua|Scribunto}}.
== {{Code|p["Rozwiń"]}} ==
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["Rozwiń"] = function(frame)...end;
</syntaxhighlight>
Szablon rozwija wikikod podany w zmiennej {{Code|1}}.
* Szablon jest użyty w szablonie: {{s|Wybrane grupy książek}}, która generuje układ wielokolumnowy układ bloków ramkowych przy pomocy funkcji: {{s|Blok ramkowy}} i {{s|Blok ramkowy/Zamknij}},
* Szablon również jest użyty w szablonach: {{s|Osobny artykuł/silnik}}, {{s|Kategoria główna/silnik}}, {{s|Spójrz też/silnik}}, itd..
Przykład wywołania funkcji:
* {{Code|{{m|Ramka|Rozwiń|1{{=}}<wikikod>}}}} - funkcja rozwija podany wikikod podany w zmiennej {{Code|1}}.
Kod tej funkcji bibliotecznej w tym module, tzn.: {{Ld2|Ramka}}, jest:
<syntaxhighlight lang="lua">
p["Rozwiń"] = function(frame)
return frame:getParent():preprocess(frame.args[1]);
end;
</syntaxhighlight>
== {{Code|p.Log}} ==
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Log = function(frame)...end;
</syntaxhighlight>
Szablon wysyła logi do konsoli {{Code|MediaWiki}} w postaci tekstu: ukryty pod zmienna: {{Code|log}}, i ewentualnie zwraca ten tekst, jeżeli zmienna: {{Code|wikitext}}, przyjmuje wartość niepustą, lub jest niepodana.
Przykłady użycia funkcji:
* {{Code|{{m|Ramka|Log|log{{=}}<tekst>|wikitext{{=}}tak}}}}- tutaj funkcja (ramka) wysyła do konsoli tekst ukryty pod zmienną: {{Parametr|log|<tekst>}}, i jednocześnie zwraca jej wartość.
Kod tej funkcji bibliotecznej w tym module, tzn.: {{Ld2|Ramka}}, jest:
<syntaxhighlight lang="lua">
p.Log = function(frame)
local parametry_modul=require("Module:Parametry");
local czy_zwracac=parametry_modul.CzyTak(frame.args["wikitext"]);
local wikitekst=frame.args["log"];
mw.log(wikitekst);
return (czy_zwracac and wikitekst or "");
end;
</syntaxhighlight>
== Funkcje ramki tablicy transportu ==
=== {{Code|p.Szablon}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|0}} symbolizującego rozwijanie szablonu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Szablon = function(frame)
return ParserBlokowy(frame,0);
end;
</syntaxhighlight>
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
=== {{Code|p["Moduł"]}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|1}} symbolizującego rozwijanie funkcji modułu ramki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["Moduł"] = function(frame)
return ParserBlokowy(frame,1);
end;
</syntaxhighlight>
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
=== {{Code|p.Parser}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|2}} symbolizującego rozwijanie funkcji parsera.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Parser = function(frame)
return ParserBlokowy(frame,2);
end;
</syntaxhighlight>
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
== Funkcje książkowe ==
=== {{Code|p.Q}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Q =function(frame)...end;
</syntaxhighlight>
Szablon {{s|Q}} przyjmuje tylko jeden parametr {{Parametr|1}}, którą jest nazwa niepełna szablonu, modułu, czy kategorii. Szablon {{s|T}} podobnie jak poprzedni szablon, tylko dodatkowo dopuszcza parametry szablonu, którego uruchamia z nimi szablon (funkcja) o nazwie uzyskanej z funkcji {{m|Ramka|N}}.
Szablon {{s|Q}} parametry nienazwane większe od jeden, ale nie pierwszy parametr, jego numer zmniejsza o jeden, a inne pozostawia je w takiej formie, jakim są (nie pierwszy, który nie jest wliczany do parametrów szablonu). W ten sposób wywołujemy szablon podany jako pierwszy parametr tego szablonu z tymi tak uzyskanymi parametrami.
==== Przykłady użycia funkcji {{s|Ramka|Q}}, a zarazem szablonu {{s|Q}} ====
* {{Code|{{s|Q|Unicode-c|wstecz{{=}}13|dalej{{=}}15}}}} →
{{OverflowWiersz|{{T|Unicode-c|wstecz=13|dalej=15}}}}
=== {{Code|p.N}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.N=function(frame)...end;
</syntaxhighlight>
Szablon {{s|N}}, a zarazem funkcja {{s|Ramka|N}} ze strony parametrów ramki, przyjmuje tylko jeden parametr {{Parametr|1}}, którą jest nazwa niepełna szablonu, modułu, czy kategorii.
Szablon {{Code|{{s|N|<nazwa strony>|p{{=}}{{!(}}0{{!}}1{{!}}2{{)!}}|n{{=}}tak}}}} przyjmuje parametry oznaczające:
* {{Code|p}}, tzn. {{Parametr|p|0}} lub niepodana, oznacza przestrzeń szablonu, {{Parametr|p|1}} przestrzeń modułu i {{Parametr|p|2}} przestrzeń kategorii.
* {{Code|n}}, gdy pusta lub niepodana oznacza pełną nazwę strony, a gdy jest niepusta, tylko nazwę strony.
==== Przykłady użycia funkcji {{m|Ramka|N}} i szablonu {{s|N}} ====
* {{Code|{{s|N|Unicode-c}}}} → {{Code|{{N|Unicode-c}}}}, {{Code|{{s|N|Unicode-c|n{{=}}tak}}}} → {{Code|{{N|Unicode-c|n=tak}}}}
* {{Code|{{s|N|Unicode-c|p{{=}}0}}}} → {{Code|{{N|Unicode-c|p=0}}}}, {{Code|{{s|N|Unicode-c|p{{=}}0|n{{=}}tak}}}} → {{Code|{{N|Unicode-c|p=0|n=tak}}}}
* {{Code|{{s|N|Zbiór zadań maturalnych|p{{=}}1}}}} → {{Code|{{N|Zbiór zadań maturalnych|p=1}}}}, {{Code|{{s|N|Zbiór zadań maturalnych|p{{=}}1|n{{=}}tak}}}} → {{Code|{{N|Zbiór zadań maturalnych|p=1|n=tak}}}}
* {{Code|{{s|N|Zbiór zadań maturalnych/Szablony|p{{=}}2}}}} → {{Code|{{N|Zbiór zadań maturalnych/Szablony|p=2}}}}, {{Code|{{s|N|Zbiór zadań maturalnych/Szablony|p{{=}}2|n{{=}}tak}}}} → {{Code|{{N|Zbiór zadań maturalnych/Szablony|p=2|n=tak}}}}
=== {{Code|p.A}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.A=function(frame)...end;
</syntaxhighlight>
Szablon {{s|A}}, a zarazem funkcja: {{m|Ramka|A}}, z nazwy szablony (bez przestrzeni nazw) usuwa przedrostek {{Code|Książka:}}.
Szablon {{Code|{{s|Q|<nazwa strony>|p{{=}}{{!(}}0{{!}}1{{!}}2{{)!}}}}}} przyjmuje parametry oznaczające:
* {{Code|p}}, gdy pusta lub niepodana oznacza pełną nazwę strony, a gdy jest niepusta, tylko nazwę strony.
==== Przykład wykorzystania szablonu {{s|A}}, a zarazem funkcji funkcji {{m|Ramka|A}} ====
* {{Code|{{s|A|{{N|Unicode-c|n=tak}}}}}} → {{Code|{{A|{{N|Unicode-c|n=tak}}}}}}, {{Code|{{s|A|{{N|Unicode-c}}|p{{=}}tak}}}} → {{Code|{{A|{{N|Unicode-c}}|p=tak}}}}
== Funkcje powtarzania ==
=== {{Code|p.Powtarzaj}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Powtarzaj = function(frame)...end;
</syntaxhighlight>
Funkcja może przyjmować tylko parametry nienazwane, tylko nazwane, lub nienazwane i nazwane.
Funkcja jako podany parametr pierwszy:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Powtarzaj|1=<wikikod>}}
</syntaxhighlight>
iteruje po podanych parametrach, jako parametry szablonu w zależności od parametrów ramki, zastępując pewne wielkości. Te wielkości to:
* {{Code|{{((}}_{{))}}}} (w nawiasach klamrowych podwójnych jest jeden dolny myślnik) - parametr numerowany przyjmujący wartość numerowaną od więcej od {{Code|1}} lub {{Code|1}},
* {{Code|{{((}}__{{))}}}} (w nawiasach klamrowych podwójnych są dwa dolne myślniki) - parametr numerowany przyjmujący wartość numerowaną od więcej od {{Code|1}} albo {{Code|1}} lub ciąg pusty (wtedy tutaj dla jedynki, jeżeli zmienna: {{Code|<zmienna> 1}} lub {{Code|<zmienna>1}}, istnieje, a teraz dla ciągu pustego, jeżeli zmienna {{Code|<zmienna>}} istnieje), one są podane w zmiennych parametrach szablonach, jeżeli w nich wywołana jest ta ramka wywołującą tę funkcję.
Parametrem określającym, że brane są pod lupę parametry nazwane i nienazwane, jest zmienna {{Code|różne}}, która wtedy ma wskazywać na wartość niepustą.
Najważniejsze parametry, które są to opcjonalne, to są:
* {{Code|start}} - liczba, która wskazuje początek liczenia - domyślna wartość to {{Code|1}},
* {{Code|koniec}} - liczba, która wskazuje koniec liczenia.
Elementy w {{Code|parametry}} mogą modyfikować odpowiednio te parametry podane zaraz powyżej, ale najpierw parametr wskazujący koniec liczenia musi być policzony w pierwszej fazie, a jeżeli nie ma parametrów nazwanych, wtedy liczy się maksimum numeracyjne parametrów numerowanych, a jeżeli są nazwane, a jeżeli {{Code|różne}} nie jest niepuste, to się liczy maksimum parametrów nazwanych, a w przeciwnym wypadku mamy w zależności od parametru: {{Code|maksimum numeracyjne}}, jeżeli niepusty, to liczy się maksimum numeracyjne, w przeciwnie maksimum z maksimum numeracyjnego i parametrów nazwanych (który zależy od parametru przesunięcia dla danego parametru i parametrów ogólnie, wspólny dla wszystkich parametrów - wyjaśnienie poniżej).
To maksimum parametrów nazwanych, dla jakieś podstawy parametrów, jest pomijane, gdy {{Code|dodatkowe}}, która jest zestawem podstaw parametrów oddzielonych średnikami, jest właśnie podany ten parametr w nim. Przykładem jego jest:
{{Pre|{{Parametr|dodatkowe|<zmienna 1>;<zmienna 2>;<zmienna 3>}}}}
Gdzie zamiast zmiennych {{Code|<zmienna 1>,...}} są pewne nazwy baz parametrów nazwowych bez numerka na samym końcu i ewentualnie spacji.
Funkcja przyjmuje ważny parametr {{Code|parametry}} dla parametrów specjalnie nazwanych. Elementy w nim są oddzielone średnikami dla każdej zmiennej z osobna, a dla danej zmiennej zmienne są przedzielone przecinkami.
Na początku tego jest opcjonalny element naturalny wspólny dla wszystkich zmiennych oddzielonych od pozostałych elementów średnikiem, jeżeli istnieją.
Nie licząc wspólnego elementu dla wszystkich parametrów, to dla danej zmiennej liczba maksymalna elementów podanych po kolei jest {{Code|5}}.
Dla danej zmiennej elementy oddzielone przecinkami piszemy w formie:
* element pierwszy, to jest parametr, jeżeli niepusty, określający, że pomiędzy podstawą elementu, a liczbą, ma być zero spacji,
* element drugi, to jest parametr, jeżeli niepusty, określający, że dla pierwszego elementu ma pisać jedynkę zamiast jedynki lub wartości pustej w zależności od istnienia takiej pierwszej zmiennej,
* element trzeci, to jest parametr, jest to liczba przesunięcia, od której ma liczyć parametr nazwany,
* element czwarty, to jest parametr określający, od jakiej liczby ma zaczynać na początku od dodatniego wskaźnika (zmiennej), brana jest liczba minimalna dodatnia, ze wszystkich takich liczb, uwzględniając element, od którego startuje liczenie,
* element piąty, to jest parametr określający, do jakiej liczby ma kończyć iterację dla danego wskaźnika (zmiennej), jako koniec liczenia brana jest liczba maksymalna dodatnia, ze wszystkich takich liczb, uwzględniając na początku policzony powyżej koniec liczenia.
Przykładem tego parametru dla danej zmiennej jest: {{Code|tak,tak,5,3,4}}, a z dodatkiem globalnego przesunięcia dla wszystkich zmiennych: {{Parametr|parametry|5;<zmienna>{{=}}tak,tak,5,3,4}}, a dla wielu zmiennych:
{{Pre|{{Parametr|parametry|5;<zmienna 1>{{=}}tak,tak,5,3,4;<zmienna 2>{{=}}tak,,10,7,9;<zmienna 3>{{=}},tak,8,9,11}}}}
Zamiast wartości: {{Code|zmienna 1>}}, {{Code|<zmienna 2>}} i {{Code|<zmienna 3>}}, są pewne nazwy bazowe parametrów bez numerka na jej końcu. W zmiennej {{Code|parametry}} można nie podawać dalsze elementy po przecinku, jeżeli są puste lub nieważne (nic nie zmieniają) lub można nie podać nic po znaku {{Code|{{=}}}} (a w tym przypadku nawet można nie podawać tego znaku) dla danego problemu funkcji.
Parametrem {{Parametr|1|<wikikod>}},którego wartość, jest wikikodem do iteracji, gdy ten parametr nie jest podany, to funkcja zwraca wartość {{Code|(brak parametru do analizy)}}, a gdy ten parametr jednak jest podany, ale jest ciągiem pustym, wtedy wartość zwracana jest {{Code|(parametr do analizy pusty)}}.
Gdy parametr {{Code|tonumber(frame.args["start"]) or 1}}, jest równy zero, funkcja zwraca błąd: {{Code|(początek jest ustawiony na zero)}}.
A jeżeli zatem żaden parametr nie jest podany, to można użyć argumentu {{Code|niepodane}}, która wygeneruje jeden krok, tylko jeden, iteracji.
Gdy {{Code|nic}} przyjmuje wartość, i gdy pomijamy parametr, lub on przyjmuje wartość pustą, wtedy a funkcja nie może generować żadnego kroku iteracji, to wtedy jest zwracana wartość niepusta {{Code|nic}} lub ciąg pusty.
Parametr {{Code|po kolei}} niepusty powoduje, że zbieranie parametrów odbywa się od pewnego miejsca i idzie w sposób ciągły do góry, co jeden, aż do pewnej granicy.
Parametr {{Code|wytnij}} wycina parametry puste i niepodane, a {{Code|wytnij puste}} tylko puste, ale {{Code|nie wytnij nazwane}} nie wycina parametrów nazwanych.
Znacznik {{Code|_i}} określa symbol, jak ona może być używana do zastępowania zmiennych typu {{Code|<nowiki>{{((}}_i{{))}}</nowiki>}} i {{Code|<nowiki>{{((}}_i_i{{))}}</nowiki>}}, wtedy ich się używa zamiast: {{Code|<nowiki>{{((}}_{{))}}</nowiki>}} i {{Code|<nowiki>{{((}}__{{))}}</nowiki>}}.
W wyniku iteracji otrzymamy tablicę ciągów łańcuchów z wiikodami, wtedy ta funkcja używa funkcji:
{{Pre|lancuch_znakow {{=}} BudowaSzereguZDanych(frame,tab_lancuch,minimum or 0,maksimum);}}
wraz z jego parametrami podane w jego ramce {{Code|frame}}, które jednocześnie sa parametrami {{m|Ramka|Powtarzaj}}, używa do łączenia w pewien określony zbiór uporządkowanych ciągów do jednego łańcucha, który jest zwracany bezpośrednio przez tę funkcję bez rozwijania przy parametrze {{Parametr|nie rozwiń|tak}}, a gdy on nie przyjmuje wartości niepustej, w takim razie on jest rozwijany funkcją {{Code|pf:preprocess(lancuch_znakow)}}, i jest zwracany jako wartość omawianej funkcji.
Funkcja jest używana np. w silnikach szablonów, np.: {{s|Osobny artykuł/silnik}} szablonu {{s|Osobny artykuł}}, jak i jego podobnych szablonów, wykorzystujących ten właśnie silnik. Również przykładem jest: {{s|Kategoria główna/silnik}} szablonu {{s|Kategoria główna}} i innych, którego jest on silnikiem. A nawet podobnie jest z: {{s|Spójrz też/silnik}} szablonu {{s|Spójrz też}}. Podobnie się definiuje inny szablon, który drukuje nierozwinięty wikikod ze składników przy pomocy parametrów, który po włączeniu do większego kodu, dopiero wtedy jest rozwijany, przykładem tego jest: {{s|Wybrane grupy książek}}.
=== {{Code|p.PowtarzajOdDo}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.PowtarzajOdDo=function(frame)...end;
</syntaxhighlight>
Funkcja tworzy wikikod do rozwinięcia, np. przez funkcję {{m|Ramka|Rozwiń}}, lub go rozwija na końcu, na podstawie kolejnych kroków iteracji:
* {{Code|start}} - początek iteracji dokonywany przez ta funkcję,
* {{Code|koniec}} - koniec iteracji dokonywany przez ta funkcję,
* {{Code|krok}} - krok iteracji, co którynumer ma iterować,
* {{Code|łącznik}} - szereg łączących elementy z wikikodem, a jak nie ma tego elementu podanego, to czy ma być oddzielony nową linią na podstawie zmiennej {{Code|nowa linia}}, a jeżeli to nawet nie jest podane, to podany ciąg jest łączony poprzez szereg pusty,
* {{Code|nowa linia}} - szereg mówiący, czy ma łączyć szeregi kodem nową linią, jeżeli {{Code|łącznik}} nie jest podany,
* {{Code|przeskok}} - dodatkowy krok, nie licząc jedynki, jak ma iterować ciąg,
** Ta zmienna w każdym kroku iteracji zależna jest od: {{Code|<nowiki>{{_}}</nowiki>}} i {{Code|<nowiki>{{ciąg}}</nowiki>}}, mówiąca o numerze jego kroku,
* {{Code|nie rozwiń}} - niepusta wartość, wtedy kod nie jest rozwijany, jeśli uzyskany kod nie jest rozwijany, w końcowym etapie można go rozwinąć przy pomocy funkcji {{m|Ramka|Rozwiń}},
* {{Code|1}} - aktualny wikikod ze zmiennymi poniżej przedstawiający aktualny krok iteracji, z którego dla każdego elementu te ciągi są łaczone za pomocą łącznika.
Zmienne w kodzie: {{Code|1}} i {{Code|przeskok}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące:
* {{Code|<nowiki>{{start}}</nowiki>}} - przyjmuje wartość {{Tt|1}},
* {{Code|<nowiki>{{koniec}}</nowiki>}} - przyjmuje wartość, który jest liczbą elementów w ciągu oddzielonych średnikami w zmiennej {{Code|ciąg}},
* {{Code|<nowiki>{{krok}}</nowiki>}} - przyjmuje wartość {{Tt|1}}.
Zmienne inne za każdym krokiem iteracji, z których korzystają: {{Code|1}} i {{Code|przeskok}}:
* {{Code|<nowiki>{{_}}</nowiki>}} - symbol, za którą jest podstawiana liczba przyjmująca aktualną wartość numeru iteracji.
Przykładowym kodem jest kod, którego wikikod znajduje się szablonie w silniku: {{s|Chem/silnik}}, w tym nadrzędnym: {{s|Chem}}, przykłady jego działania:
* {{Code|{{s|Chem|C|n|H|2n + 2}}}} → {{Tt|{{Chem|C|n|H|2n + 2}}}}
* {{Code|{{s|Chem|H|3|O|+}}}} → {{Tt|{{Chem|H|3|O|+}}}}
* {{Code|{{s|Chem|SO|4|2-}}}} → {{Tt|{{Chem|SO|4|2-}}}}
* {{Code|{{s|Chem|4|He}}}} → {{Tt|{{Chem|4|He}}}}
* {{Code|{{s|Chem|4|2|He}}}} → {{Tt|{{Chem|4|2|He}}}}
Na podstawie tej funkcji dokonano w szablonie {{s|Chem}}, że ona może przyjmować dowolną liczbę parametrów numerowanych.
=== {{Code|p["PrzetwarzajIterującCiąg"]}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PrzetwarzajIterującCiąg"]=function(frame)...end;
</syntaxhighlight>
Funkcja do iteracji ciągu z wikikodem i pewnymi zmiennymi.
* {{Code|ciąg}} - lista parametrów oddzielonych średnikami, z którego jest tworzona tablica z elementów pomiędzy srednikami,
* {{Code|łącznik}} - szereg łączących elementy z wikikodem, a jak nie ma tego elementu podanego, to czy ma być oddzielony nową linią na podstawie zmiennej {{Code|nowa linia}}, a jeżeli to nawet nie jest podane, to podany ciąg jest łączony poprzez szereg pusty,
* {{Code|nowa linia}} - szereg mówiący, czy ma łączyć szeregi kodem nową linią, jeżeli {{Code|łącznik}} nie jest podany,
* {{Code|przeskok}} - dodatkowy krok, nie licząc jedynki, jak ma iterować ciąg,
** Ta zmienna w każdym kroku iteracji zależna jest od: {{Code|<nowiki>{{_}}</nowiki>}} i {{Code|<nowiki>{{ciąg}}</nowiki>}}, mówiąca o numerze jego kroku,
* {{Code|nie rozwiń}} - niepusta wartość, wtedy kod nie jest rozwijany, jeśli uzyskany kod nie jest rozwijany, w końcowym etapie można go rozwinąć przy pomocy funkcji {{m|Ramka|Rozwiń}},
* {{Code|1}} - aktualny wikikod ze zmiennymi poniżej przedstawiający aktualny krok iteracji, z którego dla każdego elementu te ciągi są łaczone za pomocą łącznika.
Zmienne w kodzie: {{Code|1}} i {{Code|przeskok}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące:
* {{Code|<nowiki>{{start}}</nowiki>}} - przyjmuje wartość {{Tt|1}},
* {{Code|<nowiki>{{koniec}}</nowiki>}} - przyjmuje wartość, który jest liczbą elementów w ciągu oddzielonych średnikami w zmiennej {{Code|ciąg}},
* {{Code|<nowiki>{{krok}}</nowiki>}} - przyjmuje wartość {{Tt|1}}.
Zmienne inne za każdym krokiem iteracji, z których korzystają: {{Code|1}} i {{Code|przeskok}}:
* {{Code|<nowiki>{{_}}</nowiki>}} - symbol, za którą jest podstawiana liczba przyjmująca aktualną wartość numeru iteracji,
* {{Code|<nowiki>{{ciąg}}</nowiki>}} - jest to wartość pojedynczego elementu w {{Code|ciąg}}.
Przykładowym kodem jest kod, którego część znajduje się tutaj, z szablonu {{s|Status}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|PrzetwarzajIterującCiąg
| ciąg = {{{junior}}}
| przeskok = 0
| 1 = {{((}}#if:{{((}}ciąg{{))}}
{{!}}{{((}}#invoke:Ramka{{!}}Szablon
{{!}}parametry funkcji modułu pudełek{{=}}tak
{{!}}Nazwa{{=}}Kategoria{{!}}Wikijunior:{{((}}ucfirst:{{((}}ciąg{{))}}{{))}}
{{))}}
{{))}}
}}
</syntaxhighlight>
Wartością w tym przypadku zmiennej szablonowej {{Code|<nowiki>{{{junior}}}</nowiki>}} może być: {{Parametr|junior|Owoce;Warzywa}}. Ta funkcja najpierw iteruje po wartości {{Code|Owoce}}, a później po {{Code|Warzywa}}.
Powyższy kod, uzyskany w ten sposób wikikod, jest rozwijany za pomocą funkcji systemowej {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|pf:preprocess(lancuch)}}, jeśli: {{Code|nie rozwiń}}, nie przybiera wartości niepustej.
=== {{Code|p["PowtarzajWedług"]}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PowtarzajWedług"] = function(frame)...end;
</syntaxhighlight>
Funkcja wyszukuje ile jest stron o danym wzorze, np.dla stron o podstawie „{{Ns:Template}}:Polecane książki/”:{{Parametr|wzór|{{Ns:Template}}:Polecane książki/{{((}}_{{))}}}}.
* {{Code|start}} - od jakiej liczby ma liczyć strony (domyślną wartością jest {{Code|1}}, od której zaczyna się liczenie stron o podany wzorze numeracyjnym),
* {{Code|wzór}} - wzór według tego, co ma sprawdzając, czy one pasują do niego.
Parametr {{Code|wzór}} ma w sobie {{font|color=blue|<nowiki>{{_}}</nowiki>}}, za którą podstawiany jest numer w postaci liczby naturalnej innej niż zero.
=== Przykłady użycia ===
Przykład z tą funkcją znajduje się w kodzie w szablonie: {{s|Lista wybranych książek}}, która po wywołaniu wypluwa wynik:
* Szablon wypluwający listę stron według wzoru w postaci tekstu:
** {{Code|{{s|Lista wybranych książek|Polecane książki}}}} → {{Tt|{{Lista wybranych książek|Polecane książki}}}}
** {{Code|{{s|Lista wybranych książek|Nowe podręczniki miesiąca}}}} → {{Tt|{{Lista wybranych książek|Nowe podręczniki miesiąca}}}}
** {{Code|{{s|Lista wybranych książek|Wyróżnienia książek miesiąca}}}} → {{Tt|{{Lista wybranych książek|Wyróżnienia książek miesiąca}}}}
* Szablon wypluwający listę stron według wzoru w postaci linków:
** {{Code|{{s|Lista wybranych książek|Polecane książki|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Polecane książki|link=tak}}}}
** {{Code|{{s|Lista wybranych książek|Nowe podręczniki miesiąca|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Nowe podręczniki miesiąca|link=tak}}}}
** {{Code|{{s|Lista wybranych książek|Wyróżnienia książek miesiąca|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Wyróżnienia książek miesiąca|link=tak}}}}
== {{Code|p["LiczbaPrawychUkośników"]}} ==
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaPrawychUkośników"] = function(frame)...end;
</syntaxhighlight>
Szablon wyszukuje liczbę prawych ukośników w wielopoziomowym adresie strony.
* {{Code|1}} - wielopoziomowy adres z ewentualnie prawymi ukośnikami.
Jeżeli ten adres nie zawiera tych ukośników, to funkcja zwraca wartość {{Tt|0}}.
=== Przykład użycia ===
* {{Code|{{m|Ramka|LiczbaPrawychUkośników|1{{=}}Podstawia/Poziom_1/Poziom_2/Poziom_3/Poziom_4/Poziom_5}}}} → {{Tt|{{#invoke:Ramka|LiczbaPrawychUkośników|1=Podstawia/Poziom_1/Poziom_2/Poziom_3/Poziom_4/Poziom_5}}}}
== {{Code|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}} ==
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"] = function(frame)...end;
</syntaxhighlight>
Funkcja wyszukuje ile jest stron o danym wzorze, np.dla stron o podstawie „{{Ns:Template}}:Polecane książki/”:{{Parametr|wzór|{{Ns:Template}}:Polecane książki/{{((}}_{{))}}}}.
* {{Code|start}} - od jakiej liczby ma liczyć strony (domyślną wartością jest {{Code|1}}, od której zaczyna się liczenie stron o podany wzorze numeracyjnym),
* {{Code|wzór}} - wzór według tego, co ma sprawdzając, czy one pasują do niego.
Parametr {{Code|wzór}} ma w sobie {{font|color=blue|<nowiki>{{_}}</nowiki>}}, za którą podstawiany jest numer w postaci liczby naturalnej innej niż zero.
=== Przykłady użycia ===
Przykład z tą funkcją znajduje się w kodzie w szablonie: {{s|Liczba list wybranych książek}}, która po wywołaniu wypluwa wynik:
* {{Code|{{s|Liczba list wybranych książek|Polecane książki}}}} → {{Tt|{{Liczba list wybranych książek|Polecane książki}}}}
* {{Code|{{s|Liczba list wybranych książek|Nowe podręczniki miesiąca}}}} → {{Tt|{{Liczba list wybranych książek|Nowe podręczniki miesiąca}}}}
* {{Code|{{s|Liczba list wybranych książek|Wyróżnienia książek miesiąca}}}} → {{Tt|{{Liczba list wybranych książek|Wyróżnienia książek miesiąca}}}}
== Parametry niedopowiednikowych zmiennych ==
=== {{Code|p["MinimalnyNumerSpośródNieodpowiednikowychZmiennych"]}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]=function(frame)...end;
</syntaxhighlight>
Szablon szuka minimalny numer wśród zmiennych szablonu, o pewnej podstawie, tego numerowanego, o schemacie: {{Code|<zmienna>(%d*)}}.
* {{Code|zmienna}} - podstawa parametru numerowanego liczbami lub ciągiem pustym,
* {{Code|numerowane}} - czy ma zaufać jej odpowiednikowi nienazwanemu szablonu.
Szablon przekształca wartość parametru {{Code|zmienna}} do czystego tekstu, względem wyrażeń regularnych {{lpr|Lua}}. Parametry: zmienna i odpowiednik, to parametry ramki.
* Popatrz na definicję przykładu - szablonu: {{s|Wikibooks/Przykład/MinimalnyNumerSpośródOdpowiednikowychZmiennych}}.
==== Przykład przy pomocy szablonu z definicją z tą funkcją ====
* {{Code|{{s|Wikibooks/Przykład/MinimalnyNumerSpośródOdpowiednikowychZmiennych|zmienna{{=}}parametr|numerowane{{=}}|parametr3{{=}}tak|parametr5{{=}}tak|subnazwa=tak}}}} → {{Tt|{{Wikibooks/Przykład/MinimalnyNumerSpośródOdpowiednikowychZmiennych|zmienna=parametr|numerowane=|parametr3=tak|parametr5=tak}}}}
=== {{Code|p.IleJestTakichNieodpowiednikowychZmiennych}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.IleJestTakichNieodpowiednikowychZmiennych=function(frame)...end;
</syntaxhighlight>
Funkcja szuka wśród parametrów szablonu, o pewnej podstawie, tego numerowanego, o schemacie: {{Code|<zmienna>(%d*)}}, ile jest takich zmiennych, o tych numerkach, w parametrach szablonu.
* {{Code|zmienna}} - podstawa nazwowa parametru numerowanego,
* {{Code|numerowane}} - czy ma ufać parametrowi nienazwanemu szablonu.
Szablon przekształca wartość parametru {{Code|zmienna}} do czystego tekstu, względem wyrażeń regularnych {{lpg|Lua}}. Parametry: {{Code|zmienna}} i {{Code|odpowiednik}}, to parametry ramki.
* Popatrz na definicję przykładu - szablonu: {{s|Wikibooks/Przykład/IleJestTakichOdpowiednikowychZmiennych}}.
==== Przykład przy pomocy szablonu z definicją z tą funkcją ====
* {{Code|{{s|Wikibooks/Przykład/IleJestTakichOdpowiednikowychZmiennych|zmienna{{=}}parametr|numerowane{{=}}|parametr1{{=}}tak|parametr2{{=}}tak|subnazwa=tak}}}} → {{Tt|{{Wikibooks/Przykład/IleJestTakichOdpowiednikowychZmiennych|zmienna=parametr|numerowane=|parametr1=tak|parametr2=tak}}}}
== {{Code|p["Parametr w tablicy nazw"]}} ==
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["Parametr w tablicy nazw"]=function(frame)...end;
</syntaxhighlight>
Funkcja wywoływana w postaci ramki szuka parametru w tablicy podanych parametrów.
* {{Code|parametry}} - lista parametrów oddzielonych średnikiem,
* {{Code|pozycja}} - szukana lista w tablicy parametrów,
* {{Code|od dużej}} - czy parametr i elementy listy mają być zamieniane od dużej litery.
Funkcja, jeżeli wyszukała w tej tablic parametr (pozycję) zwraca wartość {{Code|tak}}, w przeciwnym wypadku zwraca {{Code|nil}}, wartość języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, która po transformacji na wikikod jest zamieniana na ciąg pusty.
=== Przykłady użycia funkcji ===
* {{Code|{{m|Ramka|Parametr w tablicy nazw|parametry{{=}}parametr1;parametr2;parametr3|pozycja{{=}}parametr2}}}} → {{Tt|{{#invoke:Ramka|Parametr w tablicy nazw|parametry=parametr1;parametr2;parametr3|pozycja=parametr2}}}}
* {{Code|{{m|Ramka|Parametr w tablicy nazw|parametry{{=}}parametr1;parametr2;parametr3|pozycja{{=}}parametr4}}}} → {{Tt|{{#invoke:Ramka|Parametr w tablicy nazw|parametry=parametr1;parametr2;parametr3|pozycja=parametr4}}}}
* {{Code|{{m|Ramka|Parametr w tablicy nazw|parametry{{=}}parametr1;parametr2;parametr3|pozycja{{=}}Parametr2|od dużej{{=}}tak}}}} → {{Tt|{{#invoke:Ramka|Parametr w tablicy nazw|parametry=parametr1;parametr2;parametr3|pozycja=Parametr2|od dużej=tak}}}}
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
ssydfcw72a6xt2osakfcc639anjmo1p
553320
553319
2026-08-27T08:41:15Z
Persino
2851
/* Parametry niedopowiednikowych zmiennych */
553320
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Ramka}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local ramka_modul=require("Module:Ramka");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
== Funcje lokalne modułu ==
=== {{Code|ParserBlokowy}} ===
Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}} tylko w module {{Code|{{ld2|Ramka}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function ParserBlokowy(frame, co_ma_wywolac)...end;
</syntaxhighlight>
Funkcja przyjmuje tablicę ramki tablicy transportu funkcji i drugi parametr, który mówi, czy ma uwzględniać dany szablon, jeżeli {{Tt|0}}, funkcję modułu, jeżeli {{Tt|1}}, i funkcję parsera, jeżeli: {{Tt|2}}, a {{Tt|3}} i dalej, to już dany szablon.
Tablica ramki może przyjmować ze strony ramki dziecka szablonu, jak i parametry rodzica szablonu, te ramki są:
* Funkcja przyjmuje parametry podstawowe, które piszemy w postaci:
** {{Code|Nazwa}} - jest to nazwa szablonu, modułu, czy parsera,
** {{Code|bez argumentów rodzica}} - tablica parametrów oddzielonych średnikami, których szablon nie przyjmuje,nawet jeżeli one są,
** {{Code|nazwa szablonu rodzica}} - jest to zmienna przechowująca nazwę szablonu rodzica ramki dziecka,
** {{Code|bez argumentów nienazwanych rodzica}} - szablon w ramce nie przyjmuje parametrów nienazwanych podanych w rodzicu ramki,
** {{Code|potomek}} - zmienna mówiąca, że to jest potomek rodzica ramki, jeżeli nie jest podany parametr {{Code|nie potomek}} - dodane przez tę funkcję,
** {{Code|nie potomek}} - zmienna mówiąca, że to nie jest potomek szablonu,
** {{Code|bez argumentów szablonu}} - zmienna oddzielonych średnikami parametrów, których nie wolno uwzględniać w walidacji błędów w {{m|Sprawdź|Parametry}},
** {{Code|bez dodatkowych sprawdzeń}} - nie jest uruchamiana walidacja parametrów szablonu rodzica,
** {{Code|parametry rodzica}} - zmienna przedstawiająca parametry rodzica przekazane do ramki: {{m|Sprawdź|Parametry}} - dodane przez tę funkcję,
** {{Code|zmienna z parametrami rodzica}} - parametr mówiący, czy ma tworzyć zmienne z parametrami rodzica, a jeżeli nie jest on, z zadnych z jego potomków podany, to zmienna ta z parametrami jest przekazywana na kolejnego przodka,
** {{Code|zmienna z argumentami ramki}} - zmienna mówiąca, czy mają być tworzone parametry ramki,które nie są walidowane przez walidację błędów w {{m|Sprawdź|Parametry}}, wtedy te parametry rodzica nie mogą być podane, przy pomocy tej zmiennej zmienne z: {{Code|bez argumentów szablonu}} są łączone z parametrami ramki,
** {{Code|zmienna z nazwą szablonu rodzica}} - parametr, czy ma tworzyć zmienną: {{Code|nazwa szablonu rodzica}},
** {{Code|parametry funkcji modułu pudełek}} - czy do funkcji mają wchodzić niepodstawowe nienazwane parametry modułu pudełek, a nie inne zmienne,
** {{Code|parametry podstawowe funkcji modułu pudełek}} - czy do funkcji mają wchodzić podstawowe parametry funkcji modułu pudełek, a nie inne zmienne,
** {{Code|usuń z parametrów ramki}} - parametr przedstawiający zmienne oddzielone średnikami, których parametrów ramki ma nie uwzględniać.
* {{Code|Funkcja}} - nazwa funkcji w module, który ma wywołać, w przypadku, gdy parametr funkcji {{sr|#ParserBlokowy()|p=Ramka}} ma wartość {{Tt|1}}, czyli wywołujemy funkcję {{sr|#p["Moduł"]()|p=Ramka}}.
Funkcja uruchamia szablon z parametrami rodzica ramki bez parametrów opisanych zmienną: {{Code|bez argumentów szablonu}}, i bez parametrów ramki minus zmienne opisane przez: {{Code|usuń z parametrów ramki}} dla wartości {{Tt|0}}, funkcję modułu ramki dla wartości {{Tt|1}}, funkcję parsera dla {{Tt|2}}, i {{Tt|3}} i dalej funkcję szablonu.
Za pomocą tej funkcji możemy wielopoziomowo wywoływać funkcje przekazując parametry od najwyższego poziomu do najniższego.
Ta funkcję jako do budowy szablonów, definiując też w jednym miejscu walidację błędów, dla przykładu wykorzystano ją w: {{s|Wzór}}, {{s|Wzór2}}, {{s|CentrujWzór}},{{s|CentrujWzór2}}, i inne, czyli uruchamianie szablonów, a uruchamianie funkcji modułu, w tym funkcji {{m|Cytuj|custom}} w szablonie {{s|PrzypisStrona}}.
Przykładem wywołania szablonu jest, która jest w szablonie: {{s|Wzór}}, w którym jest wywoływany inny szablon, tym razem silnik tego szablonu:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Szablon|Nazwa=Wzór/silnik|pozycja numeracji=po prawej|wyrównanie={{{wyrównanie|lewy}}}|bez argumentów szablonu=pozycja numeracji|zmienna z parametrami rodzica=tak}}
</syntaxhighlight>
A przykład wywołania funkcji modułu, która jest w: {{s|PrzypisStrona}}, w którym jest wywoływany funkcja modułu {{m|Cytuj|custom}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Moduł|Nazwa=Cytuj|Funkcja=custom
| url = {{{adres}}}/{{{1|{{{podstrona}}}}}}
| tytuł = {{{2|{{{nazwa}}}}}}
| praca = {{lz
| s = {{Jeśli niepuste|{{{serwis|}}}|{{Dopasuj|ciąg={{{adres}}}|wzór=^(%a+:%/%/[^%/]+)}}}}
| n = {{Dopasuj|ciąg={{Jeśli niepuste|{{{serwis|}}}|{{{adres}}}}}|wzór=^%a+:%/%/([^%/]+)}}
}}
| data = {{#if:{{{data|}}}|{{Czas|Y-m-j|{{{data}}}}}}}
| data dostępu = {{Czas|j.m.Y|{{{data dostępu|}}}}}
}}
</syntaxhighlight>
=== {{Code|BudowaSzereguZDanych}} ===
Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}} tylko w module {{Code|{{ld2|Ramka}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function BudowaSzereguZDanych(frame,tab_lancuch,minimum,maksimum)...end;
</syntaxhighlight>
Funkcja posiada następujące parametry podane w tablicy ramki dla funkcji zwracanej tablicy transportu:
* {{Code|akapit}} - jeśli niepusta, to ona definiuje akapit ze znaków: {{Code|\n\n}},
* {{Code|przecinek}}- drukuje przecinek, jeśli posiada wartość niepustą, ten przecinek jest w postaci: {{Code|", "}}, został on specjalnie objęty w cudzysłowy, aby zilustrować, że po przzecinku znajduje się spacja,
* {{Code|nowa linia}} - w przeciwieństwo do {{Code|akapit}}, pisze jedną nową linię, a nie dwie, jako: {{Code|\n}},
* {{Code|wyliczanka}} - wylicza elementy z przecinkami, stawiając przed ostatnim elementem zamiast jego wyraz wyliczania {{Code|i}},
* {{Code|początek}} - mówi, że na początku musi znajdować się przecinek,
* {{Code|myślnik}} - mówi, że jeśli nie ma początku przecinka, to stawiany jest myślnik, używany zamiast {{Code|poczatek}},
* {{Code|warunkowe}} - instrukcje wikikodu niezawierające we wnętrzu klamerek zostaną rozwinięte,
** {{Code|parametr}} - mówi w derektywach, jeśli niepusty, że derektywy muszą przyjmować wartość w postaci pseudoszablonów, w przeciwnym wypadku jego odpowiednika znaku,
** Funkcja w tym warunku zwraca ciąg znaków rozwiniętego warunku.
Funkcja posiada też mikroszablony:
* {{Code|<nowiki>{{min}}</nowiki>}} - minimalna wartość szeregu zmiennych,
* {{Code|<nowiki>{{max}}</nowiki>}} - a tutaj ich maksymalna.
Te dwie zmienne są podstawiane do uzyskanego ciągu.
Uzyskany tekst jest łączony za pomocą akapitu,a jak nie, to nowych linii, w przeciwnym wypadku jest łączony ciągiem pustym.
Deklaracja, a zarazem definicja funkcji wygląda następująco:
<syntaxhighlight lang="lua">
local function BudowaSzereguZDanych(frame,tab_lancuch,minimum,maksimum)
...
end;
</syntaxhighlight>
* {{Code|frame}} - tablica ramki w tablica transportu funkcji {{lpg|Lua}} w {{lpr|Lua|Scribunto}},
* {{Code|tab_lancuch}} - jest to tablica uzyskanych z innych funkcji wikikodów w tym module,
* {{Code|minimum}} - jak powyżej: {{Code|<nowiki>{{min}}</nowiki>}},
* {{Code|maksimum}} - jak powyżej: {{Code|<nowiki>{{max}}</nowiki>}}.
Funkcja zwraca rozwinięty, co do instrukcji warunkowych bez wewnętrznych klamerek, połączonych podanych łańcuchów odpowiednio w postaci tablicy, do odpowiedniego szeregu, pod którym jest ukryty wikikod.
== {{Code|p.InstrukcjeWarunkowe}} ==
Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
{{Tabela|klasa=wikitable tekst-centruj-td|pozycja=prawo|liczba wierszy=12|liczba kolumn=3
| nagłówek 1 = Derektywa | nagłówek 2 = Odpowiednik znakowych | nagłówek 3 = Pseudoszablon
| komórka 1_1 = __!__ | komórka 1_2 = | | komórka 1_3 = {{s|!}}
| komórka 2_1 = __!!__ | komórka 2_2 = || | komórka 2_3 = {{s|!!}}
| komórka 3_1 = __(__ | komórka 3_2 = { | komórka 3_3 = {{s|(}}
| komórka 4_1 = __((__ | komórka 4_2 = {{ | komórka 4_3 = {{s|((}}
| komórka 5_1 = __(((__ | komórka 5_2 = {{{ | komórka 5_3 = {{s|(((}}
| komórka 6_1 = __)__ | komórka 6_2 = } | komórka 6_3 = {{s|)}}
| komórka 7_1 = __))__ | komórka 7_2 = }} | komórka 7_3 = {{s|))}}
| komórka 8_1 = __)))__ | komórka 8_2 = }}} | komórka 8_3 = {{s|)))}}
| komórka 9_1 = __!(__ | komórka 9_2 = [ | komórka 9_3 = {{s|!(}}
| komórka 10_1 = __!((__ | komórka 10_2 = [[ | komórka 10_3 = {{s|!((}}
| komórka 11_1 = __)!__ | komórka 11_2 = ] | komórka 11_3 = {{s|)!}}
| komórka 12_1 = __))!__ | komórka 12_2 = ]] | komórka 12_3 = {{s|))!}}
}}
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.InstrukcjeWarunkowe = function(ciag,derektywy_specjalne,derektywy_parametrowe)...end;
</syntaxhighlight>
* {{Code|ciag}} - podany ciąg do rozwinięcia z instrukcji warunkowych wewnątrz nie posiadający klamerek,
* {{Code|derektywy_specjalne}} - używa do zastępowania specjalnych derektyw, podane po prawej stronie w ramce pływającej,
* {{Code|derektywy_parametrowe}} - czy używać pseudoszablonów zamiast ich odpowiedników znakowych.
Obsługiwane instrukcje warunkowe: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}.
Ta funkcja jest używana przez funkcję: {{Code|{{sr|#BudowaSzereguZDanych()|p=Ramka}}}}, poprzez funkcję: {{Code|{{sr|#p.Powtarzaj()|p=Ramka}}}}.
Przykłady użycia pośrednio przez tą ostatnią funkcję: ona jest użyta w walidacji błędów {{m|Sprawdź|Parametry}} poprzez: {{m|Ramka|Powtarzaj|...|warunkowe{{=}}tak|...}}, uruchamianą przez: {{m|Ramka|Rozwiń|...}}, na przykładzie w kodzie derektywy:
; Gdzie jest pokazane w wikikodzie definiujących szablony{{dk}}
* {{Code|__!__}} - w: {{s|Kategorie}}, ponieważ ten szablon generuje, dla tego coś w rodzaju {{s|!}}, jest wtedy nie w sposób odróźnić tego od innego tego samego elementu w instrukcjach warunkowych, czyli bezpośrednio wstawienie tego do wikikodu, normalnie powoduje to błędne działanie jego generatora, dlatego trzeba użyć właśnie to.
== Funkcje parametrów i argumentów ==
=== {{Code|p.RozpakujArgumenty}} ===
Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.RozpakujArgumenty = function(zmienna_z_argumentami)...end;
</syntaxhighlight>
Funkcja przyjmuje jeden parametr ze zmiennymi oddzielonych średnikami, je rozpakowuje wyjmując z pól pomiędzy średnikami zmienne, i układa je w tablicy, która jest zwaracana jako parametr, te parametry mogą mięć mikroszablony, które sa zastępowane odpowiednikami znakowymi. Jedynym tego przykładem jest mikrofunkcja {{Code|<nowiki>{{+}}</nowiki>}}, ktora jest zamieniana na średnik.
=== {{Code|p.PakujParametry}} ===
Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja pakuje parametry tablicy {{lpg|Lua}} do tablicy: {{Code|JSON}}, przy pomocy funkcji, którego wynik jest zwracany do tej funkcji:
<syntaxhighlight lang="lua">
p.PakujParametry = function(args)
return mw.text.jsonEncode(args,mw.text.JSON_PRESERVE_KEYS);
end;
</syntaxhighlight>
Ten szablon nazywa parametry jakby nienazwane w tablicy {{Code|JSON}} (tutaj numerowanie jest od zera) z tablicy {{lpg|Lua}} (tutaj od jedynki), do tablicy nazwanej, jak to robi się w {{Lpr|Lua|Scribunto}}.
=== {{Code|p.RozpakujParametry}} ===
Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja rozpakowuje parametry z tablicy: {{Code|JSON}}, do tablicy {{lpg|Lua}}, przy pomocy funkcji, którego wynik jest zwracany do tej funkcji.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.RozpakujParametry = function (zmienna_z_parametrami)
return mw.text.jsonDecode(args,mw.text.JSON_PRESERVE_KEYS);
end;
</syntaxhighlight>
Ten szablon nazywa parametry nienazwane w tablicy {{lpg|Lua}} (tutaj od jedynki) z tablicy {{Code|JSON}} (tutaj numerowanie jest od zera), do tablicy nienazwanej z nazwanej, jak to robi się w {{Lpr|Lua|Scribunto}}.
== {{Code|p["Rozwiń"]}} ==
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["Rozwiń"] = function(frame)...end;
</syntaxhighlight>
Szablon rozwija wikikod podany w zmiennej {{Code|1}}.
* Szablon jest użyty w szablonie: {{s|Wybrane grupy książek}}, która generuje układ wielokolumnowy układ bloków ramkowych przy pomocy funkcji: {{s|Blok ramkowy}} i {{s|Blok ramkowy/Zamknij}},
* Szablon również jest użyty w szablonach: {{s|Osobny artykuł/silnik}}, {{s|Kategoria główna/silnik}}, {{s|Spójrz też/silnik}}, itd..
Przykład wywołania funkcji:
* {{Code|{{m|Ramka|Rozwiń|1{{=}}<wikikod>}}}} - funkcja rozwija podany wikikod podany w zmiennej {{Code|1}}.
Kod tej funkcji bibliotecznej w tym module, tzn.: {{Ld2|Ramka}}, jest:
<syntaxhighlight lang="lua">
p["Rozwiń"] = function(frame)
return frame:getParent():preprocess(frame.args[1]);
end;
</syntaxhighlight>
== {{Code|p.Log}} ==
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Log = function(frame)...end;
</syntaxhighlight>
Szablon wysyła logi do konsoli {{Code|MediaWiki}} w postaci tekstu: ukryty pod zmienna: {{Code|log}}, i ewentualnie zwraca ten tekst, jeżeli zmienna: {{Code|wikitext}}, przyjmuje wartość niepustą, lub jest niepodana.
Przykłady użycia funkcji:
* {{Code|{{m|Ramka|Log|log{{=}}<tekst>|wikitext{{=}}tak}}}}- tutaj funkcja (ramka) wysyła do konsoli tekst ukryty pod zmienną: {{Parametr|log|<tekst>}}, i jednocześnie zwraca jej wartość.
Kod tej funkcji bibliotecznej w tym module, tzn.: {{Ld2|Ramka}}, jest:
<syntaxhighlight lang="lua">
p.Log = function(frame)
local parametry_modul=require("Module:Parametry");
local czy_zwracac=parametry_modul.CzyTak(frame.args["wikitext"]);
local wikitekst=frame.args["log"];
mw.log(wikitekst);
return (czy_zwracac and wikitekst or "");
end;
</syntaxhighlight>
== Funkcje ramki tablicy transportu ==
=== {{Code|p.Szablon}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|0}} symbolizującego rozwijanie szablonu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Szablon = function(frame)
return ParserBlokowy(frame,0);
end;
</syntaxhighlight>
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
=== {{Code|p["Moduł"]}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|1}} symbolizującego rozwijanie funkcji modułu ramki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["Moduł"] = function(frame)
return ParserBlokowy(frame,1);
end;
</syntaxhighlight>
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
=== {{Code|p.Parser}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|2}} symbolizującego rozwijanie funkcji parsera.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Parser = function(frame)
return ParserBlokowy(frame,2);
end;
</syntaxhighlight>
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
== Funkcje książkowe ==
=== {{Code|p.Q}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Q =function(frame)...end;
</syntaxhighlight>
Szablon {{s|Q}} przyjmuje tylko jeden parametr {{Parametr|1}}, którą jest nazwa niepełna szablonu, modułu, czy kategorii. Szablon {{s|T}} podobnie jak poprzedni szablon, tylko dodatkowo dopuszcza parametry szablonu, którego uruchamia z nimi szablon (funkcja) o nazwie uzyskanej z funkcji {{m|Ramka|N}}.
Szablon {{s|Q}} parametry nienazwane większe od jeden, ale nie pierwszy parametr, jego numer zmniejsza o jeden, a inne pozostawia je w takiej formie, jakim są (nie pierwszy, który nie jest wliczany do parametrów szablonu). W ten sposób wywołujemy szablon podany jako pierwszy parametr tego szablonu z tymi tak uzyskanymi parametrami.
==== Przykłady użycia funkcji {{s|Ramka|Q}}, a zarazem szablonu {{s|Q}} ====
* {{Code|{{s|Q|Unicode-c|wstecz{{=}}13|dalej{{=}}15}}}} →
{{OverflowWiersz|{{T|Unicode-c|wstecz=13|dalej=15}}}}
=== {{Code|p.N}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.N=function(frame)...end;
</syntaxhighlight>
Szablon {{s|N}}, a zarazem funkcja {{s|Ramka|N}} ze strony parametrów ramki, przyjmuje tylko jeden parametr {{Parametr|1}}, którą jest nazwa niepełna szablonu, modułu, czy kategorii.
Szablon {{Code|{{s|N|<nazwa strony>|p{{=}}{{!(}}0{{!}}1{{!}}2{{)!}}|n{{=}}tak}}}} przyjmuje parametry oznaczające:
* {{Code|p}}, tzn. {{Parametr|p|0}} lub niepodana, oznacza przestrzeń szablonu, {{Parametr|p|1}} przestrzeń modułu i {{Parametr|p|2}} przestrzeń kategorii.
* {{Code|n}}, gdy pusta lub niepodana oznacza pełną nazwę strony, a gdy jest niepusta, tylko nazwę strony.
==== Przykłady użycia funkcji {{m|Ramka|N}} i szablonu {{s|N}} ====
* {{Code|{{s|N|Unicode-c}}}} → {{Code|{{N|Unicode-c}}}}, {{Code|{{s|N|Unicode-c|n{{=}}tak}}}} → {{Code|{{N|Unicode-c|n=tak}}}}
* {{Code|{{s|N|Unicode-c|p{{=}}0}}}} → {{Code|{{N|Unicode-c|p=0}}}}, {{Code|{{s|N|Unicode-c|p{{=}}0|n{{=}}tak}}}} → {{Code|{{N|Unicode-c|p=0|n=tak}}}}
* {{Code|{{s|N|Zbiór zadań maturalnych|p{{=}}1}}}} → {{Code|{{N|Zbiór zadań maturalnych|p=1}}}}, {{Code|{{s|N|Zbiór zadań maturalnych|p{{=}}1|n{{=}}tak}}}} → {{Code|{{N|Zbiór zadań maturalnych|p=1|n=tak}}}}
* {{Code|{{s|N|Zbiór zadań maturalnych/Szablony|p{{=}}2}}}} → {{Code|{{N|Zbiór zadań maturalnych/Szablony|p=2}}}}, {{Code|{{s|N|Zbiór zadań maturalnych/Szablony|p{{=}}2|n{{=}}tak}}}} → {{Code|{{N|Zbiór zadań maturalnych/Szablony|p=2|n=tak}}}}
=== {{Code|p.A}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.A=function(frame)...end;
</syntaxhighlight>
Szablon {{s|A}}, a zarazem funkcja: {{m|Ramka|A}}, z nazwy szablony (bez przestrzeni nazw) usuwa przedrostek {{Code|Książka:}}.
Szablon {{Code|{{s|Q|<nazwa strony>|p{{=}}{{!(}}0{{!}}1{{!}}2{{)!}}}}}} przyjmuje parametry oznaczające:
* {{Code|p}}, gdy pusta lub niepodana oznacza pełną nazwę strony, a gdy jest niepusta, tylko nazwę strony.
==== Przykład wykorzystania szablonu {{s|A}}, a zarazem funkcji funkcji {{m|Ramka|A}} ====
* {{Code|{{s|A|{{N|Unicode-c|n=tak}}}}}} → {{Code|{{A|{{N|Unicode-c|n=tak}}}}}}, {{Code|{{s|A|{{N|Unicode-c}}|p{{=}}tak}}}} → {{Code|{{A|{{N|Unicode-c}}|p=tak}}}}
== Funkcje powtarzania ==
=== {{Code|p.Powtarzaj}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Powtarzaj = function(frame)...end;
</syntaxhighlight>
Funkcja może przyjmować tylko parametry nienazwane, tylko nazwane, lub nienazwane i nazwane.
Funkcja jako podany parametr pierwszy:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Powtarzaj|1=<wikikod>}}
</syntaxhighlight>
iteruje po podanych parametrach, jako parametry szablonu w zależności od parametrów ramki, zastępując pewne wielkości. Te wielkości to:
* {{Code|{{((}}_{{))}}}} (w nawiasach klamrowych podwójnych jest jeden dolny myślnik) - parametr numerowany przyjmujący wartość numerowaną od więcej od {{Code|1}} lub {{Code|1}},
* {{Code|{{((}}__{{))}}}} (w nawiasach klamrowych podwójnych są dwa dolne myślniki) - parametr numerowany przyjmujący wartość numerowaną od więcej od {{Code|1}} albo {{Code|1}} lub ciąg pusty (wtedy tutaj dla jedynki, jeżeli zmienna: {{Code|<zmienna> 1}} lub {{Code|<zmienna>1}}, istnieje, a teraz dla ciągu pustego, jeżeli zmienna {{Code|<zmienna>}} istnieje), one są podane w zmiennych parametrach szablonach, jeżeli w nich wywołana jest ta ramka wywołującą tę funkcję.
Parametrem określającym, że brane są pod lupę parametry nazwane i nienazwane, jest zmienna {{Code|różne}}, która wtedy ma wskazywać na wartość niepustą.
Najważniejsze parametry, które są to opcjonalne, to są:
* {{Code|start}} - liczba, która wskazuje początek liczenia - domyślna wartość to {{Code|1}},
* {{Code|koniec}} - liczba, która wskazuje koniec liczenia.
Elementy w {{Code|parametry}} mogą modyfikować odpowiednio te parametry podane zaraz powyżej, ale najpierw parametr wskazujący koniec liczenia musi być policzony w pierwszej fazie, a jeżeli nie ma parametrów nazwanych, wtedy liczy się maksimum numeracyjne parametrów numerowanych, a jeżeli są nazwane, a jeżeli {{Code|różne}} nie jest niepuste, to się liczy maksimum parametrów nazwanych, a w przeciwnym wypadku mamy w zależności od parametru: {{Code|maksimum numeracyjne}}, jeżeli niepusty, to liczy się maksimum numeracyjne, w przeciwnie maksimum z maksimum numeracyjnego i parametrów nazwanych (który zależy od parametru przesunięcia dla danego parametru i parametrów ogólnie, wspólny dla wszystkich parametrów - wyjaśnienie poniżej).
To maksimum parametrów nazwanych, dla jakieś podstawy parametrów, jest pomijane, gdy {{Code|dodatkowe}}, która jest zestawem podstaw parametrów oddzielonych średnikami, jest właśnie podany ten parametr w nim. Przykładem jego jest:
{{Pre|{{Parametr|dodatkowe|<zmienna 1>;<zmienna 2>;<zmienna 3>}}}}
Gdzie zamiast zmiennych {{Code|<zmienna 1>,...}} są pewne nazwy baz parametrów nazwowych bez numerka na samym końcu i ewentualnie spacji.
Funkcja przyjmuje ważny parametr {{Code|parametry}} dla parametrów specjalnie nazwanych. Elementy w nim są oddzielone średnikami dla każdej zmiennej z osobna, a dla danej zmiennej zmienne są przedzielone przecinkami.
Na początku tego jest opcjonalny element naturalny wspólny dla wszystkich zmiennych oddzielonych od pozostałych elementów średnikiem, jeżeli istnieją.
Nie licząc wspólnego elementu dla wszystkich parametrów, to dla danej zmiennej liczba maksymalna elementów podanych po kolei jest {{Code|5}}.
Dla danej zmiennej elementy oddzielone przecinkami piszemy w formie:
* element pierwszy, to jest parametr, jeżeli niepusty, określający, że pomiędzy podstawą elementu, a liczbą, ma być zero spacji,
* element drugi, to jest parametr, jeżeli niepusty, określający, że dla pierwszego elementu ma pisać jedynkę zamiast jedynki lub wartości pustej w zależności od istnienia takiej pierwszej zmiennej,
* element trzeci, to jest parametr, jest to liczba przesunięcia, od której ma liczyć parametr nazwany,
* element czwarty, to jest parametr określający, od jakiej liczby ma zaczynać na początku od dodatniego wskaźnika (zmiennej), brana jest liczba minimalna dodatnia, ze wszystkich takich liczb, uwzględniając element, od którego startuje liczenie,
* element piąty, to jest parametr określający, do jakiej liczby ma kończyć iterację dla danego wskaźnika (zmiennej), jako koniec liczenia brana jest liczba maksymalna dodatnia, ze wszystkich takich liczb, uwzględniając na początku policzony powyżej koniec liczenia.
Przykładem tego parametru dla danej zmiennej jest: {{Code|tak,tak,5,3,4}}, a z dodatkiem globalnego przesunięcia dla wszystkich zmiennych: {{Parametr|parametry|5;<zmienna>{{=}}tak,tak,5,3,4}}, a dla wielu zmiennych:
{{Pre|{{Parametr|parametry|5;<zmienna 1>{{=}}tak,tak,5,3,4;<zmienna 2>{{=}}tak,,10,7,9;<zmienna 3>{{=}},tak,8,9,11}}}}
Zamiast wartości: {{Code|zmienna 1>}}, {{Code|<zmienna 2>}} i {{Code|<zmienna 3>}}, są pewne nazwy bazowe parametrów bez numerka na jej końcu. W zmiennej {{Code|parametry}} można nie podawać dalsze elementy po przecinku, jeżeli są puste lub nieważne (nic nie zmieniają) lub można nie podać nic po znaku {{Code|{{=}}}} (a w tym przypadku nawet można nie podawać tego znaku) dla danego problemu funkcji.
Parametrem {{Parametr|1|<wikikod>}},którego wartość, jest wikikodem do iteracji, gdy ten parametr nie jest podany, to funkcja zwraca wartość {{Code|(brak parametru do analizy)}}, a gdy ten parametr jednak jest podany, ale jest ciągiem pustym, wtedy wartość zwracana jest {{Code|(parametr do analizy pusty)}}.
Gdy parametr {{Code|tonumber(frame.args["start"]) or 1}}, jest równy zero, funkcja zwraca błąd: {{Code|(początek jest ustawiony na zero)}}.
A jeżeli zatem żaden parametr nie jest podany, to można użyć argumentu {{Code|niepodane}}, która wygeneruje jeden krok, tylko jeden, iteracji.
Gdy {{Code|nic}} przyjmuje wartość, i gdy pomijamy parametr, lub on przyjmuje wartość pustą, wtedy a funkcja nie może generować żadnego kroku iteracji, to wtedy jest zwracana wartość niepusta {{Code|nic}} lub ciąg pusty.
Parametr {{Code|po kolei}} niepusty powoduje, że zbieranie parametrów odbywa się od pewnego miejsca i idzie w sposób ciągły do góry, co jeden, aż do pewnej granicy.
Parametr {{Code|wytnij}} wycina parametry puste i niepodane, a {{Code|wytnij puste}} tylko puste, ale {{Code|nie wytnij nazwane}} nie wycina parametrów nazwanych.
Znacznik {{Code|_i}} określa symbol, jak ona może być używana do zastępowania zmiennych typu {{Code|<nowiki>{{((}}_i{{))}}</nowiki>}} i {{Code|<nowiki>{{((}}_i_i{{))}}</nowiki>}}, wtedy ich się używa zamiast: {{Code|<nowiki>{{((}}_{{))}}</nowiki>}} i {{Code|<nowiki>{{((}}__{{))}}</nowiki>}}.
W wyniku iteracji otrzymamy tablicę ciągów łańcuchów z wiikodami, wtedy ta funkcja używa funkcji:
{{Pre|lancuch_znakow {{=}} BudowaSzereguZDanych(frame,tab_lancuch,minimum or 0,maksimum);}}
wraz z jego parametrami podane w jego ramce {{Code|frame}}, które jednocześnie sa parametrami {{m|Ramka|Powtarzaj}}, używa do łączenia w pewien określony zbiór uporządkowanych ciągów do jednego łańcucha, który jest zwracany bezpośrednio przez tę funkcję bez rozwijania przy parametrze {{Parametr|nie rozwiń|tak}}, a gdy on nie przyjmuje wartości niepustej, w takim razie on jest rozwijany funkcją {{Code|pf:preprocess(lancuch_znakow)}}, i jest zwracany jako wartość omawianej funkcji.
Funkcja jest używana np. w silnikach szablonów, np.: {{s|Osobny artykuł/silnik}} szablonu {{s|Osobny artykuł}}, jak i jego podobnych szablonów, wykorzystujących ten właśnie silnik. Również przykładem jest: {{s|Kategoria główna/silnik}} szablonu {{s|Kategoria główna}} i innych, którego jest on silnikiem. A nawet podobnie jest z: {{s|Spójrz też/silnik}} szablonu {{s|Spójrz też}}. Podobnie się definiuje inny szablon, który drukuje nierozwinięty wikikod ze składników przy pomocy parametrów, który po włączeniu do większego kodu, dopiero wtedy jest rozwijany, przykładem tego jest: {{s|Wybrane grupy książek}}.
=== {{Code|p.PowtarzajOdDo}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.PowtarzajOdDo=function(frame)...end;
</syntaxhighlight>
Funkcja tworzy wikikod do rozwinięcia, np. przez funkcję {{m|Ramka|Rozwiń}}, lub go rozwija na końcu, na podstawie kolejnych kroków iteracji:
* {{Code|start}} - początek iteracji dokonywany przez ta funkcję,
* {{Code|koniec}} - koniec iteracji dokonywany przez ta funkcję,
* {{Code|krok}} - krok iteracji, co którynumer ma iterować,
* {{Code|łącznik}} - szereg łączących elementy z wikikodem, a jak nie ma tego elementu podanego, to czy ma być oddzielony nową linią na podstawie zmiennej {{Code|nowa linia}}, a jeżeli to nawet nie jest podane, to podany ciąg jest łączony poprzez szereg pusty,
* {{Code|nowa linia}} - szereg mówiący, czy ma łączyć szeregi kodem nową linią, jeżeli {{Code|łącznik}} nie jest podany,
* {{Code|przeskok}} - dodatkowy krok, nie licząc jedynki, jak ma iterować ciąg,
** Ta zmienna w każdym kroku iteracji zależna jest od: {{Code|<nowiki>{{_}}</nowiki>}} i {{Code|<nowiki>{{ciąg}}</nowiki>}}, mówiąca o numerze jego kroku,
* {{Code|nie rozwiń}} - niepusta wartość, wtedy kod nie jest rozwijany, jeśli uzyskany kod nie jest rozwijany, w końcowym etapie można go rozwinąć przy pomocy funkcji {{m|Ramka|Rozwiń}},
* {{Code|1}} - aktualny wikikod ze zmiennymi poniżej przedstawiający aktualny krok iteracji, z którego dla każdego elementu te ciągi są łaczone za pomocą łącznika.
Zmienne w kodzie: {{Code|1}} i {{Code|przeskok}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące:
* {{Code|<nowiki>{{start}}</nowiki>}} - przyjmuje wartość {{Tt|1}},
* {{Code|<nowiki>{{koniec}}</nowiki>}} - przyjmuje wartość, który jest liczbą elementów w ciągu oddzielonych średnikami w zmiennej {{Code|ciąg}},
* {{Code|<nowiki>{{krok}}</nowiki>}} - przyjmuje wartość {{Tt|1}}.
Zmienne inne za każdym krokiem iteracji, z których korzystają: {{Code|1}} i {{Code|przeskok}}:
* {{Code|<nowiki>{{_}}</nowiki>}} - symbol, za którą jest podstawiana liczba przyjmująca aktualną wartość numeru iteracji.
Przykładowym kodem jest kod, którego wikikod znajduje się szablonie w silniku: {{s|Chem/silnik}}, w tym nadrzędnym: {{s|Chem}}, przykłady jego działania:
* {{Code|{{s|Chem|C|n|H|2n + 2}}}} → {{Tt|{{Chem|C|n|H|2n + 2}}}}
* {{Code|{{s|Chem|H|3|O|+}}}} → {{Tt|{{Chem|H|3|O|+}}}}
* {{Code|{{s|Chem|SO|4|2-}}}} → {{Tt|{{Chem|SO|4|2-}}}}
* {{Code|{{s|Chem|4|He}}}} → {{Tt|{{Chem|4|He}}}}
* {{Code|{{s|Chem|4|2|He}}}} → {{Tt|{{Chem|4|2|He}}}}
Na podstawie tej funkcji dokonano w szablonie {{s|Chem}}, że ona może przyjmować dowolną liczbę parametrów numerowanych.
=== {{Code|p["PrzetwarzajIterującCiąg"]}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PrzetwarzajIterującCiąg"]=function(frame)...end;
</syntaxhighlight>
Funkcja do iteracji ciągu z wikikodem i pewnymi zmiennymi.
* {{Code|ciąg}} - lista parametrów oddzielonych średnikami, z którego jest tworzona tablica z elementów pomiędzy srednikami,
* {{Code|łącznik}} - szereg łączących elementy z wikikodem, a jak nie ma tego elementu podanego, to czy ma być oddzielony nową linią na podstawie zmiennej {{Code|nowa linia}}, a jeżeli to nawet nie jest podane, to podany ciąg jest łączony poprzez szereg pusty,
* {{Code|nowa linia}} - szereg mówiący, czy ma łączyć szeregi kodem nową linią, jeżeli {{Code|łącznik}} nie jest podany,
* {{Code|przeskok}} - dodatkowy krok, nie licząc jedynki, jak ma iterować ciąg,
** Ta zmienna w każdym kroku iteracji zależna jest od: {{Code|<nowiki>{{_}}</nowiki>}} i {{Code|<nowiki>{{ciąg}}</nowiki>}}, mówiąca o numerze jego kroku,
* {{Code|nie rozwiń}} - niepusta wartość, wtedy kod nie jest rozwijany, jeśli uzyskany kod nie jest rozwijany, w końcowym etapie można go rozwinąć przy pomocy funkcji {{m|Ramka|Rozwiń}},
* {{Code|1}} - aktualny wikikod ze zmiennymi poniżej przedstawiający aktualny krok iteracji, z którego dla każdego elementu te ciągi są łaczone za pomocą łącznika.
Zmienne w kodzie: {{Code|1}} i {{Code|przeskok}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące:
* {{Code|<nowiki>{{start}}</nowiki>}} - przyjmuje wartość {{Tt|1}},
* {{Code|<nowiki>{{koniec}}</nowiki>}} - przyjmuje wartość, który jest liczbą elementów w ciągu oddzielonych średnikami w zmiennej {{Code|ciąg}},
* {{Code|<nowiki>{{krok}}</nowiki>}} - przyjmuje wartość {{Tt|1}}.
Zmienne inne za każdym krokiem iteracji, z których korzystają: {{Code|1}} i {{Code|przeskok}}:
* {{Code|<nowiki>{{_}}</nowiki>}} - symbol, za którą jest podstawiana liczba przyjmująca aktualną wartość numeru iteracji,
* {{Code|<nowiki>{{ciąg}}</nowiki>}} - jest to wartość pojedynczego elementu w {{Code|ciąg}}.
Przykładowym kodem jest kod, którego część znajduje się tutaj, z szablonu {{s|Status}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|PrzetwarzajIterującCiąg
| ciąg = {{{junior}}}
| przeskok = 0
| 1 = {{((}}#if:{{((}}ciąg{{))}}
{{!}}{{((}}#invoke:Ramka{{!}}Szablon
{{!}}parametry funkcji modułu pudełek{{=}}tak
{{!}}Nazwa{{=}}Kategoria{{!}}Wikijunior:{{((}}ucfirst:{{((}}ciąg{{))}}{{))}}
{{))}}
{{))}}
}}
</syntaxhighlight>
Wartością w tym przypadku zmiennej szablonowej {{Code|<nowiki>{{{junior}}}</nowiki>}} może być: {{Parametr|junior|Owoce;Warzywa}}. Ta funkcja najpierw iteruje po wartości {{Code|Owoce}}, a później po {{Code|Warzywa}}.
Powyższy kod, uzyskany w ten sposób wikikod, jest rozwijany za pomocą funkcji systemowej {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|pf:preprocess(lancuch)}}, jeśli: {{Code|nie rozwiń}}, nie przybiera wartości niepustej.
=== {{Code|p["PowtarzajWedług"]}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PowtarzajWedług"] = function(frame)...end;
</syntaxhighlight>
Funkcja wyszukuje ile jest stron o danym wzorze, np.dla stron o podstawie „{{Ns:Template}}:Polecane książki/”:{{Parametr|wzór|{{Ns:Template}}:Polecane książki/{{((}}_{{))}}}}.
* {{Code|start}} - od jakiej liczby ma liczyć strony (domyślną wartością jest {{Code|1}}, od której zaczyna się liczenie stron o podany wzorze numeracyjnym),
* {{Code|wzór}} - wzór według tego, co ma sprawdzając, czy one pasują do niego.
Parametr {{Code|wzór}} ma w sobie {{font|color=blue|<nowiki>{{_}}</nowiki>}}, za którą podstawiany jest numer w postaci liczby naturalnej innej niż zero.
=== Przykłady użycia ===
Przykład z tą funkcją znajduje się w kodzie w szablonie: {{s|Lista wybranych książek}}, która po wywołaniu wypluwa wynik:
* Szablon wypluwający listę stron według wzoru w postaci tekstu:
** {{Code|{{s|Lista wybranych książek|Polecane książki}}}} → {{Tt|{{Lista wybranych książek|Polecane książki}}}}
** {{Code|{{s|Lista wybranych książek|Nowe podręczniki miesiąca}}}} → {{Tt|{{Lista wybranych książek|Nowe podręczniki miesiąca}}}}
** {{Code|{{s|Lista wybranych książek|Wyróżnienia książek miesiąca}}}} → {{Tt|{{Lista wybranych książek|Wyróżnienia książek miesiąca}}}}
* Szablon wypluwający listę stron według wzoru w postaci linków:
** {{Code|{{s|Lista wybranych książek|Polecane książki|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Polecane książki|link=tak}}}}
** {{Code|{{s|Lista wybranych książek|Nowe podręczniki miesiąca|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Nowe podręczniki miesiąca|link=tak}}}}
** {{Code|{{s|Lista wybranych książek|Wyróżnienia książek miesiąca|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Wyróżnienia książek miesiąca|link=tak}}}}
== {{Code|p["LiczbaPrawychUkośników"]}} ==
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaPrawychUkośników"] = function(frame)...end;
</syntaxhighlight>
Szablon wyszukuje liczbę prawych ukośników w wielopoziomowym adresie strony.
* {{Code|1}} - wielopoziomowy adres z ewentualnie prawymi ukośnikami.
Jeżeli ten adres nie zawiera tych ukośników, to funkcja zwraca wartość {{Tt|0}}.
=== Przykład użycia ===
* {{Code|{{m|Ramka|LiczbaPrawychUkośników|1{{=}}Podstawia/Poziom_1/Poziom_2/Poziom_3/Poziom_4/Poziom_5}}}} → {{Tt|{{#invoke:Ramka|LiczbaPrawychUkośników|1=Podstawia/Poziom_1/Poziom_2/Poziom_3/Poziom_4/Poziom_5}}}}
== {{Code|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}} ==
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"] = function(frame)...end;
</syntaxhighlight>
Funkcja wyszukuje ile jest stron o danym wzorze, np.dla stron o podstawie „{{Ns:Template}}:Polecane książki/”:{{Parametr|wzór|{{Ns:Template}}:Polecane książki/{{((}}_{{))}}}}.
* {{Code|start}} - od jakiej liczby ma liczyć strony (domyślną wartością jest {{Code|1}}, od której zaczyna się liczenie stron o podany wzorze numeracyjnym),
* {{Code|wzór}} - wzór według tego, co ma sprawdzając, czy one pasują do niego.
Parametr {{Code|wzór}} ma w sobie {{font|color=blue|<nowiki>{{_}}</nowiki>}}, za którą podstawiany jest numer w postaci liczby naturalnej innej niż zero.
=== Przykłady użycia ===
Przykład z tą funkcją znajduje się w kodzie w szablonie: {{s|Liczba list wybranych książek}}, która po wywołaniu wypluwa wynik:
* {{Code|{{s|Liczba list wybranych książek|Polecane książki}}}} → {{Tt|{{Liczba list wybranych książek|Polecane książki}}}}
* {{Code|{{s|Liczba list wybranych książek|Nowe podręczniki miesiąca}}}} → {{Tt|{{Liczba list wybranych książek|Nowe podręczniki miesiąca}}}}
* {{Code|{{s|Liczba list wybranych książek|Wyróżnienia książek miesiąca}}}} → {{Tt|{{Liczba list wybranych książek|Wyróżnienia książek miesiąca}}}}
== Parametry niedopowiednikowych zmiennych ==
=== {{Code|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]=function(frame)...end;
</syntaxhighlight>
Szablon szuka minimalny numer wśród zmiennych szablonu, o pewnej podstawie, tego numerowanego, o schemacie: {{Code|<zmienna>(%d*)}}.
* {{Code|zmienna}} - podstawa parametru numerowanego liczbami lub ciągiem pustym,
* {{Code|numerowane}} - czy ma zaufać jej odpowiednikowi nienazwanemu szablonu.
Szablon przekształca wartość parametru {{Code|zmienna}} do czystego tekstu, względem wyrażeń regularnych {{lpr|Lua}}. Parametry: zmienna i odpowiednik, to parametry ramki.
* Popatrz na definicję przykładu - szablonu: {{s|Wikibooks/Przykład/MinimalnyNumerSpośródOdpowiednikowychZmiennych}}.
==== Przykład przy pomocy szablonu z definicją z tą funkcją ====
* {{Code|{{s|Wikibooks/Przykład/MinimalnyNumerSpośródOdpowiednikowychZmiennych|zmienna{{=}}parametr|numerowane{{=}}|parametr3{{=}}tak|parametr5{{=}}tak|subnazwa=tak}}}} → {{Tt|{{Wikibooks/Przykład/MinimalnyNumerSpośródOdpowiednikowychZmiennych|zmienna=parametr|numerowane=|parametr3=tak|parametr5=tak}}}}
=== {{Code|p.IleJestTakichOdpowiednikowychZmiennych}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.IleJestTakichNieodpowiednikowychZmiennych=function(frame)...end;
</syntaxhighlight>
Funkcja szuka wśród parametrów szablonu, o pewnej podstawie, tego numerowanego, o schemacie: {{Code|<zmienna>(%d*)}}, ile jest takich zmiennych, o tych numerkach, w parametrach szablonu.
* {{Code|zmienna}} - podstawa nazwowa parametru numerowanego,
* {{Code|numerowane}} - czy ma ufać parametrowi nienazwanemu szablonu.
Szablon przekształca wartość parametru {{Code|zmienna}} do czystego tekstu, względem wyrażeń regularnych {{lpg|Lua}}. Parametry: {{Code|zmienna}} i {{Code|odpowiednik}}, to parametry ramki.
* Popatrz na definicję przykładu - szablonu: {{s|Wikibooks/Przykład/IleJestTakichOdpowiednikowychZmiennych}}.
==== Przykład przy pomocy szablonu z definicją z tą funkcją ====
* {{Code|{{s|Wikibooks/Przykład/IleJestTakichOdpowiednikowychZmiennych|zmienna{{=}}parametr|numerowane{{=}}|parametr1{{=}}tak|parametr2{{=}}tak|subnazwa=tak}}}} → {{Tt|{{Wikibooks/Przykład/IleJestTakichOdpowiednikowychZmiennych|zmienna=parametr|numerowane=|parametr1=tak|parametr2=tak}}}}
== {{Code|p["Parametr w tablicy nazw"]}} ==
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["Parametr w tablicy nazw"]=function(frame)...end;
</syntaxhighlight>
Funkcja wywoływana w postaci ramki szuka parametru w tablicy podanych parametrów.
* {{Code|parametry}} - lista parametrów oddzielonych średnikiem,
* {{Code|pozycja}} - szukana lista w tablicy parametrów,
* {{Code|od dużej}} - czy parametr i elementy listy mają być zamieniane od dużej litery.
Funkcja, jeżeli wyszukała w tej tablic parametr (pozycję) zwraca wartość {{Code|tak}}, w przeciwnym wypadku zwraca {{Code|nil}}, wartość języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, która po transformacji na wikikod jest zamieniana na ciąg pusty.
=== Przykłady użycia funkcji ===
* {{Code|{{m|Ramka|Parametr w tablicy nazw|parametry{{=}}parametr1;parametr2;parametr3|pozycja{{=}}parametr2}}}} → {{Tt|{{#invoke:Ramka|Parametr w tablicy nazw|parametry=parametr1;parametr2;parametr3|pozycja=parametr2}}}}
* {{Code|{{m|Ramka|Parametr w tablicy nazw|parametry{{=}}parametr1;parametr2;parametr3|pozycja{{=}}parametr4}}}} → {{Tt|{{#invoke:Ramka|Parametr w tablicy nazw|parametry=parametr1;parametr2;parametr3|pozycja=parametr4}}}}
* {{Code|{{m|Ramka|Parametr w tablicy nazw|parametry{{=}}parametr1;parametr2;parametr3|pozycja{{=}}Parametr2|od dużej{{=}}tak}}}} → {{Tt|{{#invoke:Ramka|Parametr w tablicy nazw|parametry=parametr1;parametr2;parametr3|pozycja=Parametr2|od dużej=tak}}}}
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
ox77z92tn0y89la7q669r7n0meekhja
553321
553320
2026-08-27T08:42:48Z
Persino
2851
/* {{Code|p.IleJestTakichOdpowiednikowychZmiennych}} */
553321
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Ramka}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local ramka_modul=require("Module:Ramka");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
== Funcje lokalne modułu ==
=== {{Code|ParserBlokowy}} ===
Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}} tylko w module {{Code|{{ld2|Ramka}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function ParserBlokowy(frame, co_ma_wywolac)...end;
</syntaxhighlight>
Funkcja przyjmuje tablicę ramki tablicy transportu funkcji i drugi parametr, który mówi, czy ma uwzględniać dany szablon, jeżeli {{Tt|0}}, funkcję modułu, jeżeli {{Tt|1}}, i funkcję parsera, jeżeli: {{Tt|2}}, a {{Tt|3}} i dalej, to już dany szablon.
Tablica ramki może przyjmować ze strony ramki dziecka szablonu, jak i parametry rodzica szablonu, te ramki są:
* Funkcja przyjmuje parametry podstawowe, które piszemy w postaci:
** {{Code|Nazwa}} - jest to nazwa szablonu, modułu, czy parsera,
** {{Code|bez argumentów rodzica}} - tablica parametrów oddzielonych średnikami, których szablon nie przyjmuje,nawet jeżeli one są,
** {{Code|nazwa szablonu rodzica}} - jest to zmienna przechowująca nazwę szablonu rodzica ramki dziecka,
** {{Code|bez argumentów nienazwanych rodzica}} - szablon w ramce nie przyjmuje parametrów nienazwanych podanych w rodzicu ramki,
** {{Code|potomek}} - zmienna mówiąca, że to jest potomek rodzica ramki, jeżeli nie jest podany parametr {{Code|nie potomek}} - dodane przez tę funkcję,
** {{Code|nie potomek}} - zmienna mówiąca, że to nie jest potomek szablonu,
** {{Code|bez argumentów szablonu}} - zmienna oddzielonych średnikami parametrów, których nie wolno uwzględniać w walidacji błędów w {{m|Sprawdź|Parametry}},
** {{Code|bez dodatkowych sprawdzeń}} - nie jest uruchamiana walidacja parametrów szablonu rodzica,
** {{Code|parametry rodzica}} - zmienna przedstawiająca parametry rodzica przekazane do ramki: {{m|Sprawdź|Parametry}} - dodane przez tę funkcję,
** {{Code|zmienna z parametrami rodzica}} - parametr mówiący, czy ma tworzyć zmienne z parametrami rodzica, a jeżeli nie jest on, z zadnych z jego potomków podany, to zmienna ta z parametrami jest przekazywana na kolejnego przodka,
** {{Code|zmienna z argumentami ramki}} - zmienna mówiąca, czy mają być tworzone parametry ramki,które nie są walidowane przez walidację błędów w {{m|Sprawdź|Parametry}}, wtedy te parametry rodzica nie mogą być podane, przy pomocy tej zmiennej zmienne z: {{Code|bez argumentów szablonu}} są łączone z parametrami ramki,
** {{Code|zmienna z nazwą szablonu rodzica}} - parametr, czy ma tworzyć zmienną: {{Code|nazwa szablonu rodzica}},
** {{Code|parametry funkcji modułu pudełek}} - czy do funkcji mają wchodzić niepodstawowe nienazwane parametry modułu pudełek, a nie inne zmienne,
** {{Code|parametry podstawowe funkcji modułu pudełek}} - czy do funkcji mają wchodzić podstawowe parametry funkcji modułu pudełek, a nie inne zmienne,
** {{Code|usuń z parametrów ramki}} - parametr przedstawiający zmienne oddzielone średnikami, których parametrów ramki ma nie uwzględniać.
* {{Code|Funkcja}} - nazwa funkcji w module, który ma wywołać, w przypadku, gdy parametr funkcji {{sr|#ParserBlokowy()|p=Ramka}} ma wartość {{Tt|1}}, czyli wywołujemy funkcję {{sr|#p["Moduł"]()|p=Ramka}}.
Funkcja uruchamia szablon z parametrami rodzica ramki bez parametrów opisanych zmienną: {{Code|bez argumentów szablonu}}, i bez parametrów ramki minus zmienne opisane przez: {{Code|usuń z parametrów ramki}} dla wartości {{Tt|0}}, funkcję modułu ramki dla wartości {{Tt|1}}, funkcję parsera dla {{Tt|2}}, i {{Tt|3}} i dalej funkcję szablonu.
Za pomocą tej funkcji możemy wielopoziomowo wywoływać funkcje przekazując parametry od najwyższego poziomu do najniższego.
Ta funkcję jako do budowy szablonów, definiując też w jednym miejscu walidację błędów, dla przykładu wykorzystano ją w: {{s|Wzór}}, {{s|Wzór2}}, {{s|CentrujWzór}},{{s|CentrujWzór2}}, i inne, czyli uruchamianie szablonów, a uruchamianie funkcji modułu, w tym funkcji {{m|Cytuj|custom}} w szablonie {{s|PrzypisStrona}}.
Przykładem wywołania szablonu jest, która jest w szablonie: {{s|Wzór}}, w którym jest wywoływany inny szablon, tym razem silnik tego szablonu:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Szablon|Nazwa=Wzór/silnik|pozycja numeracji=po prawej|wyrównanie={{{wyrównanie|lewy}}}|bez argumentów szablonu=pozycja numeracji|zmienna z parametrami rodzica=tak}}
</syntaxhighlight>
A przykład wywołania funkcji modułu, która jest w: {{s|PrzypisStrona}}, w którym jest wywoływany funkcja modułu {{m|Cytuj|custom}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Moduł|Nazwa=Cytuj|Funkcja=custom
| url = {{{adres}}}/{{{1|{{{podstrona}}}}}}
| tytuł = {{{2|{{{nazwa}}}}}}
| praca = {{lz
| s = {{Jeśli niepuste|{{{serwis|}}}|{{Dopasuj|ciąg={{{adres}}}|wzór=^(%a+:%/%/[^%/]+)}}}}
| n = {{Dopasuj|ciąg={{Jeśli niepuste|{{{serwis|}}}|{{{adres}}}}}|wzór=^%a+:%/%/([^%/]+)}}
}}
| data = {{#if:{{{data|}}}|{{Czas|Y-m-j|{{{data}}}}}}}
| data dostępu = {{Czas|j.m.Y|{{{data dostępu|}}}}}
}}
</syntaxhighlight>
=== {{Code|BudowaSzereguZDanych}} ===
Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}} tylko w module {{Code|{{ld2|Ramka}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function BudowaSzereguZDanych(frame,tab_lancuch,minimum,maksimum)...end;
</syntaxhighlight>
Funkcja posiada następujące parametry podane w tablicy ramki dla funkcji zwracanej tablicy transportu:
* {{Code|akapit}} - jeśli niepusta, to ona definiuje akapit ze znaków: {{Code|\n\n}},
* {{Code|przecinek}}- drukuje przecinek, jeśli posiada wartość niepustą, ten przecinek jest w postaci: {{Code|", "}}, został on specjalnie objęty w cudzysłowy, aby zilustrować, że po przzecinku znajduje się spacja,
* {{Code|nowa linia}} - w przeciwieństwo do {{Code|akapit}}, pisze jedną nową linię, a nie dwie, jako: {{Code|\n}},
* {{Code|wyliczanka}} - wylicza elementy z przecinkami, stawiając przed ostatnim elementem zamiast jego wyraz wyliczania {{Code|i}},
* {{Code|początek}} - mówi, że na początku musi znajdować się przecinek,
* {{Code|myślnik}} - mówi, że jeśli nie ma początku przecinka, to stawiany jest myślnik, używany zamiast {{Code|poczatek}},
* {{Code|warunkowe}} - instrukcje wikikodu niezawierające we wnętrzu klamerek zostaną rozwinięte,
** {{Code|parametr}} - mówi w derektywach, jeśli niepusty, że derektywy muszą przyjmować wartość w postaci pseudoszablonów, w przeciwnym wypadku jego odpowiednika znaku,
** Funkcja w tym warunku zwraca ciąg znaków rozwiniętego warunku.
Funkcja posiada też mikroszablony:
* {{Code|<nowiki>{{min}}</nowiki>}} - minimalna wartość szeregu zmiennych,
* {{Code|<nowiki>{{max}}</nowiki>}} - a tutaj ich maksymalna.
Te dwie zmienne są podstawiane do uzyskanego ciągu.
Uzyskany tekst jest łączony za pomocą akapitu,a jak nie, to nowych linii, w przeciwnym wypadku jest łączony ciągiem pustym.
Deklaracja, a zarazem definicja funkcji wygląda następująco:
<syntaxhighlight lang="lua">
local function BudowaSzereguZDanych(frame,tab_lancuch,minimum,maksimum)
...
end;
</syntaxhighlight>
* {{Code|frame}} - tablica ramki w tablica transportu funkcji {{lpg|Lua}} w {{lpr|Lua|Scribunto}},
* {{Code|tab_lancuch}} - jest to tablica uzyskanych z innych funkcji wikikodów w tym module,
* {{Code|minimum}} - jak powyżej: {{Code|<nowiki>{{min}}</nowiki>}},
* {{Code|maksimum}} - jak powyżej: {{Code|<nowiki>{{max}}</nowiki>}}.
Funkcja zwraca rozwinięty, co do instrukcji warunkowych bez wewnętrznych klamerek, połączonych podanych łańcuchów odpowiednio w postaci tablicy, do odpowiedniego szeregu, pod którym jest ukryty wikikod.
== {{Code|p.InstrukcjeWarunkowe}} ==
Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
{{Tabela|klasa=wikitable tekst-centruj-td|pozycja=prawo|liczba wierszy=12|liczba kolumn=3
| nagłówek 1 = Derektywa | nagłówek 2 = Odpowiednik znakowych | nagłówek 3 = Pseudoszablon
| komórka 1_1 = __!__ | komórka 1_2 = | | komórka 1_3 = {{s|!}}
| komórka 2_1 = __!!__ | komórka 2_2 = || | komórka 2_3 = {{s|!!}}
| komórka 3_1 = __(__ | komórka 3_2 = { | komórka 3_3 = {{s|(}}
| komórka 4_1 = __((__ | komórka 4_2 = {{ | komórka 4_3 = {{s|((}}
| komórka 5_1 = __(((__ | komórka 5_2 = {{{ | komórka 5_3 = {{s|(((}}
| komórka 6_1 = __)__ | komórka 6_2 = } | komórka 6_3 = {{s|)}}
| komórka 7_1 = __))__ | komórka 7_2 = }} | komórka 7_3 = {{s|))}}
| komórka 8_1 = __)))__ | komórka 8_2 = }}} | komórka 8_3 = {{s|)))}}
| komórka 9_1 = __!(__ | komórka 9_2 = [ | komórka 9_3 = {{s|!(}}
| komórka 10_1 = __!((__ | komórka 10_2 = [[ | komórka 10_3 = {{s|!((}}
| komórka 11_1 = __)!__ | komórka 11_2 = ] | komórka 11_3 = {{s|)!}}
| komórka 12_1 = __))!__ | komórka 12_2 = ]] | komórka 12_3 = {{s|))!}}
}}
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.InstrukcjeWarunkowe = function(ciag,derektywy_specjalne,derektywy_parametrowe)...end;
</syntaxhighlight>
* {{Code|ciag}} - podany ciąg do rozwinięcia z instrukcji warunkowych wewnątrz nie posiadający klamerek,
* {{Code|derektywy_specjalne}} - używa do zastępowania specjalnych derektyw, podane po prawej stronie w ramce pływającej,
* {{Code|derektywy_parametrowe}} - czy używać pseudoszablonów zamiast ich odpowiedników znakowych.
Obsługiwane instrukcje warunkowe: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}.
Ta funkcja jest używana przez funkcję: {{Code|{{sr|#BudowaSzereguZDanych()|p=Ramka}}}}, poprzez funkcję: {{Code|{{sr|#p.Powtarzaj()|p=Ramka}}}}.
Przykłady użycia pośrednio przez tą ostatnią funkcję: ona jest użyta w walidacji błędów {{m|Sprawdź|Parametry}} poprzez: {{m|Ramka|Powtarzaj|...|warunkowe{{=}}tak|...}}, uruchamianą przez: {{m|Ramka|Rozwiń|...}}, na przykładzie w kodzie derektywy:
; Gdzie jest pokazane w wikikodzie definiujących szablony{{dk}}
* {{Code|__!__}} - w: {{s|Kategorie}}, ponieważ ten szablon generuje, dla tego coś w rodzaju {{s|!}}, jest wtedy nie w sposób odróźnić tego od innego tego samego elementu w instrukcjach warunkowych, czyli bezpośrednio wstawienie tego do wikikodu, normalnie powoduje to błędne działanie jego generatora, dlatego trzeba użyć właśnie to.
== Funkcje parametrów i argumentów ==
=== {{Code|p.RozpakujArgumenty}} ===
Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.RozpakujArgumenty = function(zmienna_z_argumentami)...end;
</syntaxhighlight>
Funkcja przyjmuje jeden parametr ze zmiennymi oddzielonych średnikami, je rozpakowuje wyjmując z pól pomiędzy średnikami zmienne, i układa je w tablicy, która jest zwaracana jako parametr, te parametry mogą mięć mikroszablony, które sa zastępowane odpowiednikami znakowymi. Jedynym tego przykładem jest mikrofunkcja {{Code|<nowiki>{{+}}</nowiki>}}, ktora jest zamieniana na średnik.
=== {{Code|p.PakujParametry}} ===
Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja pakuje parametry tablicy {{lpg|Lua}} do tablicy: {{Code|JSON}}, przy pomocy funkcji, którego wynik jest zwracany do tej funkcji:
<syntaxhighlight lang="lua">
p.PakujParametry = function(args)
return mw.text.jsonEncode(args,mw.text.JSON_PRESERVE_KEYS);
end;
</syntaxhighlight>
Ten szablon nazywa parametry jakby nienazwane w tablicy {{Code|JSON}} (tutaj numerowanie jest od zera) z tablicy {{lpg|Lua}} (tutaj od jedynki), do tablicy nazwanej, jak to robi się w {{Lpr|Lua|Scribunto}}.
=== {{Code|p.RozpakujParametry}} ===
Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja rozpakowuje parametry z tablicy: {{Code|JSON}}, do tablicy {{lpg|Lua}}, przy pomocy funkcji, którego wynik jest zwracany do tej funkcji.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.RozpakujParametry = function (zmienna_z_parametrami)
return mw.text.jsonDecode(args,mw.text.JSON_PRESERVE_KEYS);
end;
</syntaxhighlight>
Ten szablon nazywa parametry nienazwane w tablicy {{lpg|Lua}} (tutaj od jedynki) z tablicy {{Code|JSON}} (tutaj numerowanie jest od zera), do tablicy nienazwanej z nazwanej, jak to robi się w {{Lpr|Lua|Scribunto}}.
== {{Code|p["Rozwiń"]}} ==
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["Rozwiń"] = function(frame)...end;
</syntaxhighlight>
Szablon rozwija wikikod podany w zmiennej {{Code|1}}.
* Szablon jest użyty w szablonie: {{s|Wybrane grupy książek}}, która generuje układ wielokolumnowy układ bloków ramkowych przy pomocy funkcji: {{s|Blok ramkowy}} i {{s|Blok ramkowy/Zamknij}},
* Szablon również jest użyty w szablonach: {{s|Osobny artykuł/silnik}}, {{s|Kategoria główna/silnik}}, {{s|Spójrz też/silnik}}, itd..
Przykład wywołania funkcji:
* {{Code|{{m|Ramka|Rozwiń|1{{=}}<wikikod>}}}} - funkcja rozwija podany wikikod podany w zmiennej {{Code|1}}.
Kod tej funkcji bibliotecznej w tym module, tzn.: {{Ld2|Ramka}}, jest:
<syntaxhighlight lang="lua">
p["Rozwiń"] = function(frame)
return frame:getParent():preprocess(frame.args[1]);
end;
</syntaxhighlight>
== {{Code|p.Log}} ==
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Log = function(frame)...end;
</syntaxhighlight>
Szablon wysyła logi do konsoli {{Code|MediaWiki}} w postaci tekstu: ukryty pod zmienna: {{Code|log}}, i ewentualnie zwraca ten tekst, jeżeli zmienna: {{Code|wikitext}}, przyjmuje wartość niepustą, lub jest niepodana.
Przykłady użycia funkcji:
* {{Code|{{m|Ramka|Log|log{{=}}<tekst>|wikitext{{=}}tak}}}}- tutaj funkcja (ramka) wysyła do konsoli tekst ukryty pod zmienną: {{Parametr|log|<tekst>}}, i jednocześnie zwraca jej wartość.
Kod tej funkcji bibliotecznej w tym module, tzn.: {{Ld2|Ramka}}, jest:
<syntaxhighlight lang="lua">
p.Log = function(frame)
local parametry_modul=require("Module:Parametry");
local czy_zwracac=parametry_modul.CzyTak(frame.args["wikitext"]);
local wikitekst=frame.args["log"];
mw.log(wikitekst);
return (czy_zwracac and wikitekst or "");
end;
</syntaxhighlight>
== Funkcje ramki tablicy transportu ==
=== {{Code|p.Szablon}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|0}} symbolizującego rozwijanie szablonu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Szablon = function(frame)
return ParserBlokowy(frame,0);
end;
</syntaxhighlight>
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
=== {{Code|p["Moduł"]}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|1}} symbolizującego rozwijanie funkcji modułu ramki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["Moduł"] = function(frame)
return ParserBlokowy(frame,1);
end;
</syntaxhighlight>
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
=== {{Code|p.Parser}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|2}} symbolizującego rozwijanie funkcji parsera.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Parser = function(frame)
return ParserBlokowy(frame,2);
end;
</syntaxhighlight>
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
== Funkcje książkowe ==
=== {{Code|p.Q}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Q =function(frame)...end;
</syntaxhighlight>
Szablon {{s|Q}} przyjmuje tylko jeden parametr {{Parametr|1}}, którą jest nazwa niepełna szablonu, modułu, czy kategorii. Szablon {{s|T}} podobnie jak poprzedni szablon, tylko dodatkowo dopuszcza parametry szablonu, którego uruchamia z nimi szablon (funkcja) o nazwie uzyskanej z funkcji {{m|Ramka|N}}.
Szablon {{s|Q}} parametry nienazwane większe od jeden, ale nie pierwszy parametr, jego numer zmniejsza o jeden, a inne pozostawia je w takiej formie, jakim są (nie pierwszy, który nie jest wliczany do parametrów szablonu). W ten sposób wywołujemy szablon podany jako pierwszy parametr tego szablonu z tymi tak uzyskanymi parametrami.
==== Przykłady użycia funkcji {{s|Ramka|Q}}, a zarazem szablonu {{s|Q}} ====
* {{Code|{{s|Q|Unicode-c|wstecz{{=}}13|dalej{{=}}15}}}} →
{{OverflowWiersz|{{T|Unicode-c|wstecz=13|dalej=15}}}}
=== {{Code|p.N}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.N=function(frame)...end;
</syntaxhighlight>
Szablon {{s|N}}, a zarazem funkcja {{s|Ramka|N}} ze strony parametrów ramki, przyjmuje tylko jeden parametr {{Parametr|1}}, którą jest nazwa niepełna szablonu, modułu, czy kategorii.
Szablon {{Code|{{s|N|<nazwa strony>|p{{=}}{{!(}}0{{!}}1{{!}}2{{)!}}|n{{=}}tak}}}} przyjmuje parametry oznaczające:
* {{Code|p}}, tzn. {{Parametr|p|0}} lub niepodana, oznacza przestrzeń szablonu, {{Parametr|p|1}} przestrzeń modułu i {{Parametr|p|2}} przestrzeń kategorii.
* {{Code|n}}, gdy pusta lub niepodana oznacza pełną nazwę strony, a gdy jest niepusta, tylko nazwę strony.
==== Przykłady użycia funkcji {{m|Ramka|N}} i szablonu {{s|N}} ====
* {{Code|{{s|N|Unicode-c}}}} → {{Code|{{N|Unicode-c}}}}, {{Code|{{s|N|Unicode-c|n{{=}}tak}}}} → {{Code|{{N|Unicode-c|n=tak}}}}
* {{Code|{{s|N|Unicode-c|p{{=}}0}}}} → {{Code|{{N|Unicode-c|p=0}}}}, {{Code|{{s|N|Unicode-c|p{{=}}0|n{{=}}tak}}}} → {{Code|{{N|Unicode-c|p=0|n=tak}}}}
* {{Code|{{s|N|Zbiór zadań maturalnych|p{{=}}1}}}} → {{Code|{{N|Zbiór zadań maturalnych|p=1}}}}, {{Code|{{s|N|Zbiór zadań maturalnych|p{{=}}1|n{{=}}tak}}}} → {{Code|{{N|Zbiór zadań maturalnych|p=1|n=tak}}}}
* {{Code|{{s|N|Zbiór zadań maturalnych/Szablony|p{{=}}2}}}} → {{Code|{{N|Zbiór zadań maturalnych/Szablony|p=2}}}}, {{Code|{{s|N|Zbiór zadań maturalnych/Szablony|p{{=}}2|n{{=}}tak}}}} → {{Code|{{N|Zbiór zadań maturalnych/Szablony|p=2|n=tak}}}}
=== {{Code|p.A}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.A=function(frame)...end;
</syntaxhighlight>
Szablon {{s|A}}, a zarazem funkcja: {{m|Ramka|A}}, z nazwy szablony (bez przestrzeni nazw) usuwa przedrostek {{Code|Książka:}}.
Szablon {{Code|{{s|Q|<nazwa strony>|p{{=}}{{!(}}0{{!}}1{{!}}2{{)!}}}}}} przyjmuje parametry oznaczające:
* {{Code|p}}, gdy pusta lub niepodana oznacza pełną nazwę strony, a gdy jest niepusta, tylko nazwę strony.
==== Przykład wykorzystania szablonu {{s|A}}, a zarazem funkcji funkcji {{m|Ramka|A}} ====
* {{Code|{{s|A|{{N|Unicode-c|n=tak}}}}}} → {{Code|{{A|{{N|Unicode-c|n=tak}}}}}}, {{Code|{{s|A|{{N|Unicode-c}}|p{{=}}tak}}}} → {{Code|{{A|{{N|Unicode-c}}|p=tak}}}}
== Funkcje powtarzania ==
=== {{Code|p.Powtarzaj}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Powtarzaj = function(frame)...end;
</syntaxhighlight>
Funkcja może przyjmować tylko parametry nienazwane, tylko nazwane, lub nienazwane i nazwane.
Funkcja jako podany parametr pierwszy:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Powtarzaj|1=<wikikod>}}
</syntaxhighlight>
iteruje po podanych parametrach, jako parametry szablonu w zależności od parametrów ramki, zastępując pewne wielkości. Te wielkości to:
* {{Code|{{((}}_{{))}}}} (w nawiasach klamrowych podwójnych jest jeden dolny myślnik) - parametr numerowany przyjmujący wartość numerowaną od więcej od {{Code|1}} lub {{Code|1}},
* {{Code|{{((}}__{{))}}}} (w nawiasach klamrowych podwójnych są dwa dolne myślniki) - parametr numerowany przyjmujący wartość numerowaną od więcej od {{Code|1}} albo {{Code|1}} lub ciąg pusty (wtedy tutaj dla jedynki, jeżeli zmienna: {{Code|<zmienna> 1}} lub {{Code|<zmienna>1}}, istnieje, a teraz dla ciągu pustego, jeżeli zmienna {{Code|<zmienna>}} istnieje), one są podane w zmiennych parametrach szablonach, jeżeli w nich wywołana jest ta ramka wywołującą tę funkcję.
Parametrem określającym, że brane są pod lupę parametry nazwane i nienazwane, jest zmienna {{Code|różne}}, która wtedy ma wskazywać na wartość niepustą.
Najważniejsze parametry, które są to opcjonalne, to są:
* {{Code|start}} - liczba, która wskazuje początek liczenia - domyślna wartość to {{Code|1}},
* {{Code|koniec}} - liczba, która wskazuje koniec liczenia.
Elementy w {{Code|parametry}} mogą modyfikować odpowiednio te parametry podane zaraz powyżej, ale najpierw parametr wskazujący koniec liczenia musi być policzony w pierwszej fazie, a jeżeli nie ma parametrów nazwanych, wtedy liczy się maksimum numeracyjne parametrów numerowanych, a jeżeli są nazwane, a jeżeli {{Code|różne}} nie jest niepuste, to się liczy maksimum parametrów nazwanych, a w przeciwnym wypadku mamy w zależności od parametru: {{Code|maksimum numeracyjne}}, jeżeli niepusty, to liczy się maksimum numeracyjne, w przeciwnie maksimum z maksimum numeracyjnego i parametrów nazwanych (który zależy od parametru przesunięcia dla danego parametru i parametrów ogólnie, wspólny dla wszystkich parametrów - wyjaśnienie poniżej).
To maksimum parametrów nazwanych, dla jakieś podstawy parametrów, jest pomijane, gdy {{Code|dodatkowe}}, która jest zestawem podstaw parametrów oddzielonych średnikami, jest właśnie podany ten parametr w nim. Przykładem jego jest:
{{Pre|{{Parametr|dodatkowe|<zmienna 1>;<zmienna 2>;<zmienna 3>}}}}
Gdzie zamiast zmiennych {{Code|<zmienna 1>,...}} są pewne nazwy baz parametrów nazwowych bez numerka na samym końcu i ewentualnie spacji.
Funkcja przyjmuje ważny parametr {{Code|parametry}} dla parametrów specjalnie nazwanych. Elementy w nim są oddzielone średnikami dla każdej zmiennej z osobna, a dla danej zmiennej zmienne są przedzielone przecinkami.
Na początku tego jest opcjonalny element naturalny wspólny dla wszystkich zmiennych oddzielonych od pozostałych elementów średnikiem, jeżeli istnieją.
Nie licząc wspólnego elementu dla wszystkich parametrów, to dla danej zmiennej liczba maksymalna elementów podanych po kolei jest {{Code|5}}.
Dla danej zmiennej elementy oddzielone przecinkami piszemy w formie:
* element pierwszy, to jest parametr, jeżeli niepusty, określający, że pomiędzy podstawą elementu, a liczbą, ma być zero spacji,
* element drugi, to jest parametr, jeżeli niepusty, określający, że dla pierwszego elementu ma pisać jedynkę zamiast jedynki lub wartości pustej w zależności od istnienia takiej pierwszej zmiennej,
* element trzeci, to jest parametr, jest to liczba przesunięcia, od której ma liczyć parametr nazwany,
* element czwarty, to jest parametr określający, od jakiej liczby ma zaczynać na początku od dodatniego wskaźnika (zmiennej), brana jest liczba minimalna dodatnia, ze wszystkich takich liczb, uwzględniając element, od którego startuje liczenie,
* element piąty, to jest parametr określający, do jakiej liczby ma kończyć iterację dla danego wskaźnika (zmiennej), jako koniec liczenia brana jest liczba maksymalna dodatnia, ze wszystkich takich liczb, uwzględniając na początku policzony powyżej koniec liczenia.
Przykładem tego parametru dla danej zmiennej jest: {{Code|tak,tak,5,3,4}}, a z dodatkiem globalnego przesunięcia dla wszystkich zmiennych: {{Parametr|parametry|5;<zmienna>{{=}}tak,tak,5,3,4}}, a dla wielu zmiennych:
{{Pre|{{Parametr|parametry|5;<zmienna 1>{{=}}tak,tak,5,3,4;<zmienna 2>{{=}}tak,,10,7,9;<zmienna 3>{{=}},tak,8,9,11}}}}
Zamiast wartości: {{Code|zmienna 1>}}, {{Code|<zmienna 2>}} i {{Code|<zmienna 3>}}, są pewne nazwy bazowe parametrów bez numerka na jej końcu. W zmiennej {{Code|parametry}} można nie podawać dalsze elementy po przecinku, jeżeli są puste lub nieważne (nic nie zmieniają) lub można nie podać nic po znaku {{Code|{{=}}}} (a w tym przypadku nawet można nie podawać tego znaku) dla danego problemu funkcji.
Parametrem {{Parametr|1|<wikikod>}},którego wartość, jest wikikodem do iteracji, gdy ten parametr nie jest podany, to funkcja zwraca wartość {{Code|(brak parametru do analizy)}}, a gdy ten parametr jednak jest podany, ale jest ciągiem pustym, wtedy wartość zwracana jest {{Code|(parametr do analizy pusty)}}.
Gdy parametr {{Code|tonumber(frame.args["start"]) or 1}}, jest równy zero, funkcja zwraca błąd: {{Code|(początek jest ustawiony na zero)}}.
A jeżeli zatem żaden parametr nie jest podany, to można użyć argumentu {{Code|niepodane}}, która wygeneruje jeden krok, tylko jeden, iteracji.
Gdy {{Code|nic}} przyjmuje wartość, i gdy pomijamy parametr, lub on przyjmuje wartość pustą, wtedy a funkcja nie może generować żadnego kroku iteracji, to wtedy jest zwracana wartość niepusta {{Code|nic}} lub ciąg pusty.
Parametr {{Code|po kolei}} niepusty powoduje, że zbieranie parametrów odbywa się od pewnego miejsca i idzie w sposób ciągły do góry, co jeden, aż do pewnej granicy.
Parametr {{Code|wytnij}} wycina parametry puste i niepodane, a {{Code|wytnij puste}} tylko puste, ale {{Code|nie wytnij nazwane}} nie wycina parametrów nazwanych.
Znacznik {{Code|_i}} określa symbol, jak ona może być używana do zastępowania zmiennych typu {{Code|<nowiki>{{((}}_i{{))}}</nowiki>}} i {{Code|<nowiki>{{((}}_i_i{{))}}</nowiki>}}, wtedy ich się używa zamiast: {{Code|<nowiki>{{((}}_{{))}}</nowiki>}} i {{Code|<nowiki>{{((}}__{{))}}</nowiki>}}.
W wyniku iteracji otrzymamy tablicę ciągów łańcuchów z wiikodami, wtedy ta funkcja używa funkcji:
{{Pre|lancuch_znakow {{=}} BudowaSzereguZDanych(frame,tab_lancuch,minimum or 0,maksimum);}}
wraz z jego parametrami podane w jego ramce {{Code|frame}}, które jednocześnie sa parametrami {{m|Ramka|Powtarzaj}}, używa do łączenia w pewien określony zbiór uporządkowanych ciągów do jednego łańcucha, który jest zwracany bezpośrednio przez tę funkcję bez rozwijania przy parametrze {{Parametr|nie rozwiń|tak}}, a gdy on nie przyjmuje wartości niepustej, w takim razie on jest rozwijany funkcją {{Code|pf:preprocess(lancuch_znakow)}}, i jest zwracany jako wartość omawianej funkcji.
Funkcja jest używana np. w silnikach szablonów, np.: {{s|Osobny artykuł/silnik}} szablonu {{s|Osobny artykuł}}, jak i jego podobnych szablonów, wykorzystujących ten właśnie silnik. Również przykładem jest: {{s|Kategoria główna/silnik}} szablonu {{s|Kategoria główna}} i innych, którego jest on silnikiem. A nawet podobnie jest z: {{s|Spójrz też/silnik}} szablonu {{s|Spójrz też}}. Podobnie się definiuje inny szablon, który drukuje nierozwinięty wikikod ze składników przy pomocy parametrów, który po włączeniu do większego kodu, dopiero wtedy jest rozwijany, przykładem tego jest: {{s|Wybrane grupy książek}}.
=== {{Code|p.PowtarzajOdDo}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.PowtarzajOdDo=function(frame)...end;
</syntaxhighlight>
Funkcja tworzy wikikod do rozwinięcia, np. przez funkcję {{m|Ramka|Rozwiń}}, lub go rozwija na końcu, na podstawie kolejnych kroków iteracji:
* {{Code|start}} - początek iteracji dokonywany przez ta funkcję,
* {{Code|koniec}} - koniec iteracji dokonywany przez ta funkcję,
* {{Code|krok}} - krok iteracji, co którynumer ma iterować,
* {{Code|łącznik}} - szereg łączących elementy z wikikodem, a jak nie ma tego elementu podanego, to czy ma być oddzielony nową linią na podstawie zmiennej {{Code|nowa linia}}, a jeżeli to nawet nie jest podane, to podany ciąg jest łączony poprzez szereg pusty,
* {{Code|nowa linia}} - szereg mówiący, czy ma łączyć szeregi kodem nową linią, jeżeli {{Code|łącznik}} nie jest podany,
* {{Code|przeskok}} - dodatkowy krok, nie licząc jedynki, jak ma iterować ciąg,
** Ta zmienna w każdym kroku iteracji zależna jest od: {{Code|<nowiki>{{_}}</nowiki>}} i {{Code|<nowiki>{{ciąg}}</nowiki>}}, mówiąca o numerze jego kroku,
* {{Code|nie rozwiń}} - niepusta wartość, wtedy kod nie jest rozwijany, jeśli uzyskany kod nie jest rozwijany, w końcowym etapie można go rozwinąć przy pomocy funkcji {{m|Ramka|Rozwiń}},
* {{Code|1}} - aktualny wikikod ze zmiennymi poniżej przedstawiający aktualny krok iteracji, z którego dla każdego elementu te ciągi są łaczone za pomocą łącznika.
Zmienne w kodzie: {{Code|1}} i {{Code|przeskok}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące:
* {{Code|<nowiki>{{start}}</nowiki>}} - przyjmuje wartość {{Tt|1}},
* {{Code|<nowiki>{{koniec}}</nowiki>}} - przyjmuje wartość, który jest liczbą elementów w ciągu oddzielonych średnikami w zmiennej {{Code|ciąg}},
* {{Code|<nowiki>{{krok}}</nowiki>}} - przyjmuje wartość {{Tt|1}}.
Zmienne inne za każdym krokiem iteracji, z których korzystają: {{Code|1}} i {{Code|przeskok}}:
* {{Code|<nowiki>{{_}}</nowiki>}} - symbol, za którą jest podstawiana liczba przyjmująca aktualną wartość numeru iteracji.
Przykładowym kodem jest kod, którego wikikod znajduje się szablonie w silniku: {{s|Chem/silnik}}, w tym nadrzędnym: {{s|Chem}}, przykłady jego działania:
* {{Code|{{s|Chem|C|n|H|2n + 2}}}} → {{Tt|{{Chem|C|n|H|2n + 2}}}}
* {{Code|{{s|Chem|H|3|O|+}}}} → {{Tt|{{Chem|H|3|O|+}}}}
* {{Code|{{s|Chem|SO|4|2-}}}} → {{Tt|{{Chem|SO|4|2-}}}}
* {{Code|{{s|Chem|4|He}}}} → {{Tt|{{Chem|4|He}}}}
* {{Code|{{s|Chem|4|2|He}}}} → {{Tt|{{Chem|4|2|He}}}}
Na podstawie tej funkcji dokonano w szablonie {{s|Chem}}, że ona może przyjmować dowolną liczbę parametrów numerowanych.
=== {{Code|p["PrzetwarzajIterującCiąg"]}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PrzetwarzajIterującCiąg"]=function(frame)...end;
</syntaxhighlight>
Funkcja do iteracji ciągu z wikikodem i pewnymi zmiennymi.
* {{Code|ciąg}} - lista parametrów oddzielonych średnikami, z którego jest tworzona tablica z elementów pomiędzy srednikami,
* {{Code|łącznik}} - szereg łączących elementy z wikikodem, a jak nie ma tego elementu podanego, to czy ma być oddzielony nową linią na podstawie zmiennej {{Code|nowa linia}}, a jeżeli to nawet nie jest podane, to podany ciąg jest łączony poprzez szereg pusty,
* {{Code|nowa linia}} - szereg mówiący, czy ma łączyć szeregi kodem nową linią, jeżeli {{Code|łącznik}} nie jest podany,
* {{Code|przeskok}} - dodatkowy krok, nie licząc jedynki, jak ma iterować ciąg,
** Ta zmienna w każdym kroku iteracji zależna jest od: {{Code|<nowiki>{{_}}</nowiki>}} i {{Code|<nowiki>{{ciąg}}</nowiki>}}, mówiąca o numerze jego kroku,
* {{Code|nie rozwiń}} - niepusta wartość, wtedy kod nie jest rozwijany, jeśli uzyskany kod nie jest rozwijany, w końcowym etapie można go rozwinąć przy pomocy funkcji {{m|Ramka|Rozwiń}},
* {{Code|1}} - aktualny wikikod ze zmiennymi poniżej przedstawiający aktualny krok iteracji, z którego dla każdego elementu te ciągi są łaczone za pomocą łącznika.
Zmienne w kodzie: {{Code|1}} i {{Code|przeskok}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące:
* {{Code|<nowiki>{{start}}</nowiki>}} - przyjmuje wartość {{Tt|1}},
* {{Code|<nowiki>{{koniec}}</nowiki>}} - przyjmuje wartość, który jest liczbą elementów w ciągu oddzielonych średnikami w zmiennej {{Code|ciąg}},
* {{Code|<nowiki>{{krok}}</nowiki>}} - przyjmuje wartość {{Tt|1}}.
Zmienne inne za każdym krokiem iteracji, z których korzystają: {{Code|1}} i {{Code|przeskok}}:
* {{Code|<nowiki>{{_}}</nowiki>}} - symbol, za którą jest podstawiana liczba przyjmująca aktualną wartość numeru iteracji,
* {{Code|<nowiki>{{ciąg}}</nowiki>}} - jest to wartość pojedynczego elementu w {{Code|ciąg}}.
Przykładowym kodem jest kod, którego część znajduje się tutaj, z szablonu {{s|Status}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|PrzetwarzajIterującCiąg
| ciąg = {{{junior}}}
| przeskok = 0
| 1 = {{((}}#if:{{((}}ciąg{{))}}
{{!}}{{((}}#invoke:Ramka{{!}}Szablon
{{!}}parametry funkcji modułu pudełek{{=}}tak
{{!}}Nazwa{{=}}Kategoria{{!}}Wikijunior:{{((}}ucfirst:{{((}}ciąg{{))}}{{))}}
{{))}}
{{))}}
}}
</syntaxhighlight>
Wartością w tym przypadku zmiennej szablonowej {{Code|<nowiki>{{{junior}}}</nowiki>}} może być: {{Parametr|junior|Owoce;Warzywa}}. Ta funkcja najpierw iteruje po wartości {{Code|Owoce}}, a później po {{Code|Warzywa}}.
Powyższy kod, uzyskany w ten sposób wikikod, jest rozwijany za pomocą funkcji systemowej {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|pf:preprocess(lancuch)}}, jeśli: {{Code|nie rozwiń}}, nie przybiera wartości niepustej.
=== {{Code|p["PowtarzajWedług"]}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PowtarzajWedług"] = function(frame)...end;
</syntaxhighlight>
Funkcja wyszukuje ile jest stron o danym wzorze, np.dla stron o podstawie „{{Ns:Template}}:Polecane książki/”:{{Parametr|wzór|{{Ns:Template}}:Polecane książki/{{((}}_{{))}}}}.
* {{Code|start}} - od jakiej liczby ma liczyć strony (domyślną wartością jest {{Code|1}}, od której zaczyna się liczenie stron o podany wzorze numeracyjnym),
* {{Code|wzór}} - wzór według tego, co ma sprawdzając, czy one pasują do niego.
Parametr {{Code|wzór}} ma w sobie {{font|color=blue|<nowiki>{{_}}</nowiki>}}, za którą podstawiany jest numer w postaci liczby naturalnej innej niż zero.
=== Przykłady użycia ===
Przykład z tą funkcją znajduje się w kodzie w szablonie: {{s|Lista wybranych książek}}, która po wywołaniu wypluwa wynik:
* Szablon wypluwający listę stron według wzoru w postaci tekstu:
** {{Code|{{s|Lista wybranych książek|Polecane książki}}}} → {{Tt|{{Lista wybranych książek|Polecane książki}}}}
** {{Code|{{s|Lista wybranych książek|Nowe podręczniki miesiąca}}}} → {{Tt|{{Lista wybranych książek|Nowe podręczniki miesiąca}}}}
** {{Code|{{s|Lista wybranych książek|Wyróżnienia książek miesiąca}}}} → {{Tt|{{Lista wybranych książek|Wyróżnienia książek miesiąca}}}}
* Szablon wypluwający listę stron według wzoru w postaci linków:
** {{Code|{{s|Lista wybranych książek|Polecane książki|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Polecane książki|link=tak}}}}
** {{Code|{{s|Lista wybranych książek|Nowe podręczniki miesiąca|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Nowe podręczniki miesiąca|link=tak}}}}
** {{Code|{{s|Lista wybranych książek|Wyróżnienia książek miesiąca|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Wyróżnienia książek miesiąca|link=tak}}}}
== {{Code|p["LiczbaPrawychUkośników"]}} ==
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaPrawychUkośników"] = function(frame)...end;
</syntaxhighlight>
Szablon wyszukuje liczbę prawych ukośników w wielopoziomowym adresie strony.
* {{Code|1}} - wielopoziomowy adres z ewentualnie prawymi ukośnikami.
Jeżeli ten adres nie zawiera tych ukośników, to funkcja zwraca wartość {{Tt|0}}.
=== Przykład użycia ===
* {{Code|{{m|Ramka|LiczbaPrawychUkośników|1{{=}}Podstawia/Poziom_1/Poziom_2/Poziom_3/Poziom_4/Poziom_5}}}} → {{Tt|{{#invoke:Ramka|LiczbaPrawychUkośników|1=Podstawia/Poziom_1/Poziom_2/Poziom_3/Poziom_4/Poziom_5}}}}
== {{Code|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}} ==
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"] = function(frame)...end;
</syntaxhighlight>
Funkcja wyszukuje ile jest stron o danym wzorze, np.dla stron o podstawie „{{Ns:Template}}:Polecane książki/”:{{Parametr|wzór|{{Ns:Template}}:Polecane książki/{{((}}_{{))}}}}.
* {{Code|start}} - od jakiej liczby ma liczyć strony (domyślną wartością jest {{Code|1}}, od której zaczyna się liczenie stron o podany wzorze numeracyjnym),
* {{Code|wzór}} - wzór według tego, co ma sprawdzając, czy one pasują do niego.
Parametr {{Code|wzór}} ma w sobie {{font|color=blue|<nowiki>{{_}}</nowiki>}}, za którą podstawiany jest numer w postaci liczby naturalnej innej niż zero.
=== Przykłady użycia ===
Przykład z tą funkcją znajduje się w kodzie w szablonie: {{s|Liczba list wybranych książek}}, która po wywołaniu wypluwa wynik:
* {{Code|{{s|Liczba list wybranych książek|Polecane książki}}}} → {{Tt|{{Liczba list wybranych książek|Polecane książki}}}}
* {{Code|{{s|Liczba list wybranych książek|Nowe podręczniki miesiąca}}}} → {{Tt|{{Liczba list wybranych książek|Nowe podręczniki miesiąca}}}}
* {{Code|{{s|Liczba list wybranych książek|Wyróżnienia książek miesiąca}}}} → {{Tt|{{Liczba list wybranych książek|Wyróżnienia książek miesiąca}}}}
== Parametry niedopowiednikowych zmiennych ==
=== {{Code|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]=function(frame)...end;
</syntaxhighlight>
Szablon szuka minimalny numer wśród zmiennych szablonu, o pewnej podstawie, tego numerowanego, o schemacie: {{Code|<zmienna>(%d*)}}.
* {{Code|zmienna}} - podstawa parametru numerowanego liczbami lub ciągiem pustym,
* {{Code|numerowane}} - czy ma zaufać jej odpowiednikowi nienazwanemu szablonu.
Szablon przekształca wartość parametru {{Code|zmienna}} do czystego tekstu, względem wyrażeń regularnych {{lpr|Lua}}. Parametry: zmienna i odpowiednik, to parametry ramki.
* Popatrz na definicję przykładu - szablonu: {{s|Wikibooks/Przykład/MinimalnyNumerSpośródOdpowiednikowychZmiennych}}.
==== Przykład przy pomocy szablonu z definicją z tą funkcją ====
* {{Code|{{s|Wikibooks/Przykład/MinimalnyNumerSpośródOdpowiednikowychZmiennych|zmienna{{=}}parametr|numerowane{{=}}|parametr3{{=}}tak|parametr5{{=}}tak|subnazwa=tak}}}} → {{Tt|{{Wikibooks/Przykład/MinimalnyNumerSpośródOdpowiednikowychZmiennych|zmienna=parametr|numerowane=|parametr3=tak|parametr5=tak}}}}
=== {{Code|p.IleJestTakichOdpowiednikowychZmiennych}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.IleJestTakichOdpowiednikowychZmiennych=function(frame)...end;
</syntaxhighlight>
Funkcja szuka wśród parametrów szablonu, o pewnej podstawie, tego numerowanego, o schemacie: {{Code|<zmienna>(%d*)}}, ile jest takich zmiennych, o tych numerkach, w parametrach szablonu.
* {{Code|zmienna}} - podstawa nazwowa parametru numerowanego,
* {{Code|numerowane}} - czy ma ufać parametrowi nienazwanemu szablonu.
Szablon przekształca wartość parametru {{Code|zmienna}} do czystego tekstu, względem wyrażeń regularnych {{lpg|Lua}}. Parametry: {{Code|zmienna}} i {{Code|odpowiednik}}, to parametry ramki.
* Popatrz na definicję przykładu - szablonu: {{s|Wikibooks/Przykład/IleJestTakichOdpowiednikowychZmiennych}}.
==== Przykład przy pomocy szablonu z definicją z tą funkcją ====
* {{Code|{{s|Wikibooks/Przykład/IleJestTakichOdpowiednikowychZmiennych|zmienna{{=}}parametr|numerowane{{=}}|parametr1{{=}}tak|parametr2{{=}}tak|subnazwa=tak}}}} → {{Tt|{{Wikibooks/Przykład/IleJestTakichOdpowiednikowychZmiennych|zmienna=parametr|numerowane=|parametr1=tak|parametr2=tak}}}}
== {{Code|p["Parametr w tablicy nazw"]}} ==
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["Parametr w tablicy nazw"]=function(frame)...end;
</syntaxhighlight>
Funkcja wywoływana w postaci ramki szuka parametru w tablicy podanych parametrów.
* {{Code|parametry}} - lista parametrów oddzielonych średnikiem,
* {{Code|pozycja}} - szukana lista w tablicy parametrów,
* {{Code|od dużej}} - czy parametr i elementy listy mają być zamieniane od dużej litery.
Funkcja, jeżeli wyszukała w tej tablic parametr (pozycję) zwraca wartość {{Code|tak}}, w przeciwnym wypadku zwraca {{Code|nil}}, wartość języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, która po transformacji na wikikod jest zamieniana na ciąg pusty.
=== Przykłady użycia funkcji ===
* {{Code|{{m|Ramka|Parametr w tablicy nazw|parametry{{=}}parametr1;parametr2;parametr3|pozycja{{=}}parametr2}}}} → {{Tt|{{#invoke:Ramka|Parametr w tablicy nazw|parametry=parametr1;parametr2;parametr3|pozycja=parametr2}}}}
* {{Code|{{m|Ramka|Parametr w tablicy nazw|parametry{{=}}parametr1;parametr2;parametr3|pozycja{{=}}parametr4}}}} → {{Tt|{{#invoke:Ramka|Parametr w tablicy nazw|parametry=parametr1;parametr2;parametr3|pozycja=parametr4}}}}
* {{Code|{{m|Ramka|Parametr w tablicy nazw|parametry{{=}}parametr1;parametr2;parametr3|pozycja{{=}}Parametr2|od dużej{{=}}tak}}}} → {{Tt|{{#invoke:Ramka|Parametr w tablicy nazw|parametry=parametr1;parametr2;parametr3|pozycja=Parametr2|od dużej=tak}}}}
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
qih9gij02f1xo12thff825d6ynjte4y
553322
553321
2026-08-27T08:49:32Z
Persino
2851
/* Parametry niedopowiednikowych zmiennych */
553322
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Ramka}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local ramka_modul=require("Module:Ramka");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
== Funcje lokalne modułu ==
=== {{Code|ParserBlokowy}} ===
Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}} tylko w module {{Code|{{ld2|Ramka}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function ParserBlokowy(frame, co_ma_wywolac)...end;
</syntaxhighlight>
Funkcja przyjmuje tablicę ramki tablicy transportu funkcji i drugi parametr, który mówi, czy ma uwzględniać dany szablon, jeżeli {{Tt|0}}, funkcję modułu, jeżeli {{Tt|1}}, i funkcję parsera, jeżeli: {{Tt|2}}, a {{Tt|3}} i dalej, to już dany szablon.
Tablica ramki może przyjmować ze strony ramki dziecka szablonu, jak i parametry rodzica szablonu, te ramki są:
* Funkcja przyjmuje parametry podstawowe, które piszemy w postaci:
** {{Code|Nazwa}} - jest to nazwa szablonu, modułu, czy parsera,
** {{Code|bez argumentów rodzica}} - tablica parametrów oddzielonych średnikami, których szablon nie przyjmuje,nawet jeżeli one są,
** {{Code|nazwa szablonu rodzica}} - jest to zmienna przechowująca nazwę szablonu rodzica ramki dziecka,
** {{Code|bez argumentów nienazwanych rodzica}} - szablon w ramce nie przyjmuje parametrów nienazwanych podanych w rodzicu ramki,
** {{Code|potomek}} - zmienna mówiąca, że to jest potomek rodzica ramki, jeżeli nie jest podany parametr {{Code|nie potomek}} - dodane przez tę funkcję,
** {{Code|nie potomek}} - zmienna mówiąca, że to nie jest potomek szablonu,
** {{Code|bez argumentów szablonu}} - zmienna oddzielonych średnikami parametrów, których nie wolno uwzględniać w walidacji błędów w {{m|Sprawdź|Parametry}},
** {{Code|bez dodatkowych sprawdzeń}} - nie jest uruchamiana walidacja parametrów szablonu rodzica,
** {{Code|parametry rodzica}} - zmienna przedstawiająca parametry rodzica przekazane do ramki: {{m|Sprawdź|Parametry}} - dodane przez tę funkcję,
** {{Code|zmienna z parametrami rodzica}} - parametr mówiący, czy ma tworzyć zmienne z parametrami rodzica, a jeżeli nie jest on, z zadnych z jego potomków podany, to zmienna ta z parametrami jest przekazywana na kolejnego przodka,
** {{Code|zmienna z argumentami ramki}} - zmienna mówiąca, czy mają być tworzone parametry ramki,które nie są walidowane przez walidację błędów w {{m|Sprawdź|Parametry}}, wtedy te parametry rodzica nie mogą być podane, przy pomocy tej zmiennej zmienne z: {{Code|bez argumentów szablonu}} są łączone z parametrami ramki,
** {{Code|zmienna z nazwą szablonu rodzica}} - parametr, czy ma tworzyć zmienną: {{Code|nazwa szablonu rodzica}},
** {{Code|parametry funkcji modułu pudełek}} - czy do funkcji mają wchodzić niepodstawowe nienazwane parametry modułu pudełek, a nie inne zmienne,
** {{Code|parametry podstawowe funkcji modułu pudełek}} - czy do funkcji mają wchodzić podstawowe parametry funkcji modułu pudełek, a nie inne zmienne,
** {{Code|usuń z parametrów ramki}} - parametr przedstawiający zmienne oddzielone średnikami, których parametrów ramki ma nie uwzględniać.
* {{Code|Funkcja}} - nazwa funkcji w module, który ma wywołać, w przypadku, gdy parametr funkcji {{sr|#ParserBlokowy()|p=Ramka}} ma wartość {{Tt|1}}, czyli wywołujemy funkcję {{sr|#p["Moduł"]()|p=Ramka}}.
Funkcja uruchamia szablon z parametrami rodzica ramki bez parametrów opisanych zmienną: {{Code|bez argumentów szablonu}}, i bez parametrów ramki minus zmienne opisane przez: {{Code|usuń z parametrów ramki}} dla wartości {{Tt|0}}, funkcję modułu ramki dla wartości {{Tt|1}}, funkcję parsera dla {{Tt|2}}, i {{Tt|3}} i dalej funkcję szablonu.
Za pomocą tej funkcji możemy wielopoziomowo wywoływać funkcje przekazując parametry od najwyższego poziomu do najniższego.
Ta funkcję jako do budowy szablonów, definiując też w jednym miejscu walidację błędów, dla przykładu wykorzystano ją w: {{s|Wzór}}, {{s|Wzór2}}, {{s|CentrujWzór}},{{s|CentrujWzór2}}, i inne, czyli uruchamianie szablonów, a uruchamianie funkcji modułu, w tym funkcji {{m|Cytuj|custom}} w szablonie {{s|PrzypisStrona}}.
Przykładem wywołania szablonu jest, która jest w szablonie: {{s|Wzór}}, w którym jest wywoływany inny szablon, tym razem silnik tego szablonu:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Szablon|Nazwa=Wzór/silnik|pozycja numeracji=po prawej|wyrównanie={{{wyrównanie|lewy}}}|bez argumentów szablonu=pozycja numeracji|zmienna z parametrami rodzica=tak}}
</syntaxhighlight>
A przykład wywołania funkcji modułu, która jest w: {{s|PrzypisStrona}}, w którym jest wywoływany funkcja modułu {{m|Cytuj|custom}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Moduł|Nazwa=Cytuj|Funkcja=custom
| url = {{{adres}}}/{{{1|{{{podstrona}}}}}}
| tytuł = {{{2|{{{nazwa}}}}}}
| praca = {{lz
| s = {{Jeśli niepuste|{{{serwis|}}}|{{Dopasuj|ciąg={{{adres}}}|wzór=^(%a+:%/%/[^%/]+)}}}}
| n = {{Dopasuj|ciąg={{Jeśli niepuste|{{{serwis|}}}|{{{adres}}}}}|wzór=^%a+:%/%/([^%/]+)}}
}}
| data = {{#if:{{{data|}}}|{{Czas|Y-m-j|{{{data}}}}}}}
| data dostępu = {{Czas|j.m.Y|{{{data dostępu|}}}}}
}}
</syntaxhighlight>
=== {{Code|BudowaSzereguZDanych}} ===
Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}} tylko w module {{Code|{{ld2|Ramka}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function BudowaSzereguZDanych(frame,tab_lancuch,minimum,maksimum)...end;
</syntaxhighlight>
Funkcja posiada następujące parametry podane w tablicy ramki dla funkcji zwracanej tablicy transportu:
* {{Code|akapit}} - jeśli niepusta, to ona definiuje akapit ze znaków: {{Code|\n\n}},
* {{Code|przecinek}}- drukuje przecinek, jeśli posiada wartość niepustą, ten przecinek jest w postaci: {{Code|", "}}, został on specjalnie objęty w cudzysłowy, aby zilustrować, że po przzecinku znajduje się spacja,
* {{Code|nowa linia}} - w przeciwieństwo do {{Code|akapit}}, pisze jedną nową linię, a nie dwie, jako: {{Code|\n}},
* {{Code|wyliczanka}} - wylicza elementy z przecinkami, stawiając przed ostatnim elementem zamiast jego wyraz wyliczania {{Code|i}},
* {{Code|początek}} - mówi, że na początku musi znajdować się przecinek,
* {{Code|myślnik}} - mówi, że jeśli nie ma początku przecinka, to stawiany jest myślnik, używany zamiast {{Code|poczatek}},
* {{Code|warunkowe}} - instrukcje wikikodu niezawierające we wnętrzu klamerek zostaną rozwinięte,
** {{Code|parametr}} - mówi w derektywach, jeśli niepusty, że derektywy muszą przyjmować wartość w postaci pseudoszablonów, w przeciwnym wypadku jego odpowiednika znaku,
** Funkcja w tym warunku zwraca ciąg znaków rozwiniętego warunku.
Funkcja posiada też mikroszablony:
* {{Code|<nowiki>{{min}}</nowiki>}} - minimalna wartość szeregu zmiennych,
* {{Code|<nowiki>{{max}}</nowiki>}} - a tutaj ich maksymalna.
Te dwie zmienne są podstawiane do uzyskanego ciągu.
Uzyskany tekst jest łączony za pomocą akapitu,a jak nie, to nowych linii, w przeciwnym wypadku jest łączony ciągiem pustym.
Deklaracja, a zarazem definicja funkcji wygląda następująco:
<syntaxhighlight lang="lua">
local function BudowaSzereguZDanych(frame,tab_lancuch,minimum,maksimum)
...
end;
</syntaxhighlight>
* {{Code|frame}} - tablica ramki w tablica transportu funkcji {{lpg|Lua}} w {{lpr|Lua|Scribunto}},
* {{Code|tab_lancuch}} - jest to tablica uzyskanych z innych funkcji wikikodów w tym module,
* {{Code|minimum}} - jak powyżej: {{Code|<nowiki>{{min}}</nowiki>}},
* {{Code|maksimum}} - jak powyżej: {{Code|<nowiki>{{max}}</nowiki>}}.
Funkcja zwraca rozwinięty, co do instrukcji warunkowych bez wewnętrznych klamerek, połączonych podanych łańcuchów odpowiednio w postaci tablicy, do odpowiedniego szeregu, pod którym jest ukryty wikikod.
== {{Code|p.InstrukcjeWarunkowe}} ==
Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
{{Tabela|klasa=wikitable tekst-centruj-td|pozycja=prawo|liczba wierszy=12|liczba kolumn=3
| nagłówek 1 = Derektywa | nagłówek 2 = Odpowiednik znakowych | nagłówek 3 = Pseudoszablon
| komórka 1_1 = __!__ | komórka 1_2 = | | komórka 1_3 = {{s|!}}
| komórka 2_1 = __!!__ | komórka 2_2 = || | komórka 2_3 = {{s|!!}}
| komórka 3_1 = __(__ | komórka 3_2 = { | komórka 3_3 = {{s|(}}
| komórka 4_1 = __((__ | komórka 4_2 = {{ | komórka 4_3 = {{s|((}}
| komórka 5_1 = __(((__ | komórka 5_2 = {{{ | komórka 5_3 = {{s|(((}}
| komórka 6_1 = __)__ | komórka 6_2 = } | komórka 6_3 = {{s|)}}
| komórka 7_1 = __))__ | komórka 7_2 = }} | komórka 7_3 = {{s|))}}
| komórka 8_1 = __)))__ | komórka 8_2 = }}} | komórka 8_3 = {{s|)))}}
| komórka 9_1 = __!(__ | komórka 9_2 = [ | komórka 9_3 = {{s|!(}}
| komórka 10_1 = __!((__ | komórka 10_2 = [[ | komórka 10_3 = {{s|!((}}
| komórka 11_1 = __)!__ | komórka 11_2 = ] | komórka 11_3 = {{s|)!}}
| komórka 12_1 = __))!__ | komórka 12_2 = ]] | komórka 12_3 = {{s|))!}}
}}
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.InstrukcjeWarunkowe = function(ciag,derektywy_specjalne,derektywy_parametrowe)...end;
</syntaxhighlight>
* {{Code|ciag}} - podany ciąg do rozwinięcia z instrukcji warunkowych wewnątrz nie posiadający klamerek,
* {{Code|derektywy_specjalne}} - używa do zastępowania specjalnych derektyw, podane po prawej stronie w ramce pływającej,
* {{Code|derektywy_parametrowe}} - czy używać pseudoszablonów zamiast ich odpowiedników znakowych.
Obsługiwane instrukcje warunkowe: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}.
Ta funkcja jest używana przez funkcję: {{Code|{{sr|#BudowaSzereguZDanych()|p=Ramka}}}}, poprzez funkcję: {{Code|{{sr|#p.Powtarzaj()|p=Ramka}}}}.
Przykłady użycia pośrednio przez tą ostatnią funkcję: ona jest użyta w walidacji błędów {{m|Sprawdź|Parametry}} poprzez: {{m|Ramka|Powtarzaj|...|warunkowe{{=}}tak|...}}, uruchamianą przez: {{m|Ramka|Rozwiń|...}}, na przykładzie w kodzie derektywy:
; Gdzie jest pokazane w wikikodzie definiujących szablony{{dk}}
* {{Code|__!__}} - w: {{s|Kategorie}}, ponieważ ten szablon generuje, dla tego coś w rodzaju {{s|!}}, jest wtedy nie w sposób odróźnić tego od innego tego samego elementu w instrukcjach warunkowych, czyli bezpośrednio wstawienie tego do wikikodu, normalnie powoduje to błędne działanie jego generatora, dlatego trzeba użyć właśnie to.
== Funkcje parametrów i argumentów ==
=== {{Code|p.RozpakujArgumenty}} ===
Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.RozpakujArgumenty = function(zmienna_z_argumentami)...end;
</syntaxhighlight>
Funkcja przyjmuje jeden parametr ze zmiennymi oddzielonych średnikami, je rozpakowuje wyjmując z pól pomiędzy średnikami zmienne, i układa je w tablicy, która jest zwaracana jako parametr, te parametry mogą mięć mikroszablony, które sa zastępowane odpowiednikami znakowymi. Jedynym tego przykładem jest mikrofunkcja {{Code|<nowiki>{{+}}</nowiki>}}, ktora jest zamieniana na średnik.
=== {{Code|p.PakujParametry}} ===
Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja pakuje parametry tablicy {{lpg|Lua}} do tablicy: {{Code|JSON}}, przy pomocy funkcji, którego wynik jest zwracany do tej funkcji:
<syntaxhighlight lang="lua">
p.PakujParametry = function(args)
return mw.text.jsonEncode(args,mw.text.JSON_PRESERVE_KEYS);
end;
</syntaxhighlight>
Ten szablon nazywa parametry jakby nienazwane w tablicy {{Code|JSON}} (tutaj numerowanie jest od zera) z tablicy {{lpg|Lua}} (tutaj od jedynki), do tablicy nazwanej, jak to robi się w {{Lpr|Lua|Scribunto}}.
=== {{Code|p.RozpakujParametry}} ===
Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja rozpakowuje parametry z tablicy: {{Code|JSON}}, do tablicy {{lpg|Lua}}, przy pomocy funkcji, którego wynik jest zwracany do tej funkcji.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.RozpakujParametry = function (zmienna_z_parametrami)
return mw.text.jsonDecode(args,mw.text.JSON_PRESERVE_KEYS);
end;
</syntaxhighlight>
Ten szablon nazywa parametry nienazwane w tablicy {{lpg|Lua}} (tutaj od jedynki) z tablicy {{Code|JSON}} (tutaj numerowanie jest od zera), do tablicy nienazwanej z nazwanej, jak to robi się w {{Lpr|Lua|Scribunto}}.
== {{Code|p["Rozwiń"]}} ==
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["Rozwiń"] = function(frame)...end;
</syntaxhighlight>
Szablon rozwija wikikod podany w zmiennej {{Code|1}}.
* Szablon jest użyty w szablonie: {{s|Wybrane grupy książek}}, która generuje układ wielokolumnowy układ bloków ramkowych przy pomocy funkcji: {{s|Blok ramkowy}} i {{s|Blok ramkowy/Zamknij}},
* Szablon również jest użyty w szablonach: {{s|Osobny artykuł/silnik}}, {{s|Kategoria główna/silnik}}, {{s|Spójrz też/silnik}}, itd..
Przykład wywołania funkcji:
* {{Code|{{m|Ramka|Rozwiń|1{{=}}<wikikod>}}}} - funkcja rozwija podany wikikod podany w zmiennej {{Code|1}}.
Kod tej funkcji bibliotecznej w tym module, tzn.: {{Ld2|Ramka}}, jest:
<syntaxhighlight lang="lua">
p["Rozwiń"] = function(frame)
return frame:getParent():preprocess(frame.args[1]);
end;
</syntaxhighlight>
== {{Code|p.Log}} ==
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Log = function(frame)...end;
</syntaxhighlight>
Szablon wysyła logi do konsoli {{Code|MediaWiki}} w postaci tekstu: ukryty pod zmienna: {{Code|log}}, i ewentualnie zwraca ten tekst, jeżeli zmienna: {{Code|wikitext}}, przyjmuje wartość niepustą, lub jest niepodana.
Przykłady użycia funkcji:
* {{Code|{{m|Ramka|Log|log{{=}}<tekst>|wikitext{{=}}tak}}}}- tutaj funkcja (ramka) wysyła do konsoli tekst ukryty pod zmienną: {{Parametr|log|<tekst>}}, i jednocześnie zwraca jej wartość.
Kod tej funkcji bibliotecznej w tym module, tzn.: {{Ld2|Ramka}}, jest:
<syntaxhighlight lang="lua">
p.Log = function(frame)
local parametry_modul=require("Module:Parametry");
local czy_zwracac=parametry_modul.CzyTak(frame.args["wikitext"]);
local wikitekst=frame.args["log"];
mw.log(wikitekst);
return (czy_zwracac and wikitekst or "");
end;
</syntaxhighlight>
== Funkcje ramki tablicy transportu ==
=== {{Code|p.Szablon}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|0}} symbolizującego rozwijanie szablonu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Szablon = function(frame)
return ParserBlokowy(frame,0);
end;
</syntaxhighlight>
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
=== {{Code|p["Moduł"]}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|1}} symbolizującego rozwijanie funkcji modułu ramki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["Moduł"] = function(frame)
return ParserBlokowy(frame,1);
end;
</syntaxhighlight>
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
=== {{Code|p.Parser}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|2}} symbolizującego rozwijanie funkcji parsera.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Parser = function(frame)
return ParserBlokowy(frame,2);
end;
</syntaxhighlight>
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
== Funkcje książkowe ==
=== {{Code|p.Q}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Q =function(frame)...end;
</syntaxhighlight>
Szablon {{s|Q}} przyjmuje tylko jeden parametr {{Parametr|1}}, którą jest nazwa niepełna szablonu, modułu, czy kategorii. Szablon {{s|T}} podobnie jak poprzedni szablon, tylko dodatkowo dopuszcza parametry szablonu, którego uruchamia z nimi szablon (funkcja) o nazwie uzyskanej z funkcji {{m|Ramka|N}}.
Szablon {{s|Q}} parametry nienazwane większe od jeden, ale nie pierwszy parametr, jego numer zmniejsza o jeden, a inne pozostawia je w takiej formie, jakim są (nie pierwszy, który nie jest wliczany do parametrów szablonu). W ten sposób wywołujemy szablon podany jako pierwszy parametr tego szablonu z tymi tak uzyskanymi parametrami.
==== Przykłady użycia funkcji {{s|Ramka|Q}}, a zarazem szablonu {{s|Q}} ====
* {{Code|{{s|Q|Unicode-c|wstecz{{=}}13|dalej{{=}}15}}}} →
{{OverflowWiersz|{{T|Unicode-c|wstecz=13|dalej=15}}}}
=== {{Code|p.N}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.N=function(frame)...end;
</syntaxhighlight>
Szablon {{s|N}}, a zarazem funkcja {{s|Ramka|N}} ze strony parametrów ramki, przyjmuje tylko jeden parametr {{Parametr|1}}, którą jest nazwa niepełna szablonu, modułu, czy kategorii.
Szablon {{Code|{{s|N|<nazwa strony>|p{{=}}{{!(}}0{{!}}1{{!}}2{{)!}}|n{{=}}tak}}}} przyjmuje parametry oznaczające:
* {{Code|p}}, tzn. {{Parametr|p|0}} lub niepodana, oznacza przestrzeń szablonu, {{Parametr|p|1}} przestrzeń modułu i {{Parametr|p|2}} przestrzeń kategorii.
* {{Code|n}}, gdy pusta lub niepodana oznacza pełną nazwę strony, a gdy jest niepusta, tylko nazwę strony.
==== Przykłady użycia funkcji {{m|Ramka|N}} i szablonu {{s|N}} ====
* {{Code|{{s|N|Unicode-c}}}} → {{Code|{{N|Unicode-c}}}}, {{Code|{{s|N|Unicode-c|n{{=}}tak}}}} → {{Code|{{N|Unicode-c|n=tak}}}}
* {{Code|{{s|N|Unicode-c|p{{=}}0}}}} → {{Code|{{N|Unicode-c|p=0}}}}, {{Code|{{s|N|Unicode-c|p{{=}}0|n{{=}}tak}}}} → {{Code|{{N|Unicode-c|p=0|n=tak}}}}
* {{Code|{{s|N|Zbiór zadań maturalnych|p{{=}}1}}}} → {{Code|{{N|Zbiór zadań maturalnych|p=1}}}}, {{Code|{{s|N|Zbiór zadań maturalnych|p{{=}}1|n{{=}}tak}}}} → {{Code|{{N|Zbiór zadań maturalnych|p=1|n=tak}}}}
* {{Code|{{s|N|Zbiór zadań maturalnych/Szablony|p{{=}}2}}}} → {{Code|{{N|Zbiór zadań maturalnych/Szablony|p=2}}}}, {{Code|{{s|N|Zbiór zadań maturalnych/Szablony|p{{=}}2|n{{=}}tak}}}} → {{Code|{{N|Zbiór zadań maturalnych/Szablony|p=2|n=tak}}}}
=== {{Code|p.A}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.A=function(frame)...end;
</syntaxhighlight>
Szablon {{s|A}}, a zarazem funkcja: {{m|Ramka|A}}, z nazwy szablony (bez przestrzeni nazw) usuwa przedrostek {{Code|Książka:}}.
Szablon {{Code|{{s|Q|<nazwa strony>|p{{=}}{{!(}}0{{!}}1{{!}}2{{)!}}}}}} przyjmuje parametry oznaczające:
* {{Code|p}}, gdy pusta lub niepodana oznacza pełną nazwę strony, a gdy jest niepusta, tylko nazwę strony.
==== Przykład wykorzystania szablonu {{s|A}}, a zarazem funkcji funkcji {{m|Ramka|A}} ====
* {{Code|{{s|A|{{N|Unicode-c|n=tak}}}}}} → {{Code|{{A|{{N|Unicode-c|n=tak}}}}}}, {{Code|{{s|A|{{N|Unicode-c}}|p{{=}}tak}}}} → {{Code|{{A|{{N|Unicode-c}}|p=tak}}}}
== Funkcje powtarzania ==
=== {{Code|p.Powtarzaj}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Powtarzaj = function(frame)...end;
</syntaxhighlight>
Funkcja może przyjmować tylko parametry nienazwane, tylko nazwane, lub nienazwane i nazwane.
Funkcja jako podany parametr pierwszy:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Powtarzaj|1=<wikikod>}}
</syntaxhighlight>
iteruje po podanych parametrach, jako parametry szablonu w zależności od parametrów ramki, zastępując pewne wielkości. Te wielkości to:
* {{Code|{{((}}_{{))}}}} (w nawiasach klamrowych podwójnych jest jeden dolny myślnik) - parametr numerowany przyjmujący wartość numerowaną od więcej od {{Code|1}} lub {{Code|1}},
* {{Code|{{((}}__{{))}}}} (w nawiasach klamrowych podwójnych są dwa dolne myślniki) - parametr numerowany przyjmujący wartość numerowaną od więcej od {{Code|1}} albo {{Code|1}} lub ciąg pusty (wtedy tutaj dla jedynki, jeżeli zmienna: {{Code|<zmienna> 1}} lub {{Code|<zmienna>1}}, istnieje, a teraz dla ciągu pustego, jeżeli zmienna {{Code|<zmienna>}} istnieje), one są podane w zmiennych parametrach szablonach, jeżeli w nich wywołana jest ta ramka wywołującą tę funkcję.
Parametrem określającym, że brane są pod lupę parametry nazwane i nienazwane, jest zmienna {{Code|różne}}, która wtedy ma wskazywać na wartość niepustą.
Najważniejsze parametry, które są to opcjonalne, to są:
* {{Code|start}} - liczba, która wskazuje początek liczenia - domyślna wartość to {{Code|1}},
* {{Code|koniec}} - liczba, która wskazuje koniec liczenia.
Elementy w {{Code|parametry}} mogą modyfikować odpowiednio te parametry podane zaraz powyżej, ale najpierw parametr wskazujący koniec liczenia musi być policzony w pierwszej fazie, a jeżeli nie ma parametrów nazwanych, wtedy liczy się maksimum numeracyjne parametrów numerowanych, a jeżeli są nazwane, a jeżeli {{Code|różne}} nie jest niepuste, to się liczy maksimum parametrów nazwanych, a w przeciwnym wypadku mamy w zależności od parametru: {{Code|maksimum numeracyjne}}, jeżeli niepusty, to liczy się maksimum numeracyjne, w przeciwnie maksimum z maksimum numeracyjnego i parametrów nazwanych (który zależy od parametru przesunięcia dla danego parametru i parametrów ogólnie, wspólny dla wszystkich parametrów - wyjaśnienie poniżej).
To maksimum parametrów nazwanych, dla jakieś podstawy parametrów, jest pomijane, gdy {{Code|dodatkowe}}, która jest zestawem podstaw parametrów oddzielonych średnikami, jest właśnie podany ten parametr w nim. Przykładem jego jest:
{{Pre|{{Parametr|dodatkowe|<zmienna 1>;<zmienna 2>;<zmienna 3>}}}}
Gdzie zamiast zmiennych {{Code|<zmienna 1>,...}} są pewne nazwy baz parametrów nazwowych bez numerka na samym końcu i ewentualnie spacji.
Funkcja przyjmuje ważny parametr {{Code|parametry}} dla parametrów specjalnie nazwanych. Elementy w nim są oddzielone średnikami dla każdej zmiennej z osobna, a dla danej zmiennej zmienne są przedzielone przecinkami.
Na początku tego jest opcjonalny element naturalny wspólny dla wszystkich zmiennych oddzielonych od pozostałych elementów średnikiem, jeżeli istnieją.
Nie licząc wspólnego elementu dla wszystkich parametrów, to dla danej zmiennej liczba maksymalna elementów podanych po kolei jest {{Code|5}}.
Dla danej zmiennej elementy oddzielone przecinkami piszemy w formie:
* element pierwszy, to jest parametr, jeżeli niepusty, określający, że pomiędzy podstawą elementu, a liczbą, ma być zero spacji,
* element drugi, to jest parametr, jeżeli niepusty, określający, że dla pierwszego elementu ma pisać jedynkę zamiast jedynki lub wartości pustej w zależności od istnienia takiej pierwszej zmiennej,
* element trzeci, to jest parametr, jest to liczba przesunięcia, od której ma liczyć parametr nazwany,
* element czwarty, to jest parametr określający, od jakiej liczby ma zaczynać na początku od dodatniego wskaźnika (zmiennej), brana jest liczba minimalna dodatnia, ze wszystkich takich liczb, uwzględniając element, od którego startuje liczenie,
* element piąty, to jest parametr określający, do jakiej liczby ma kończyć iterację dla danego wskaźnika (zmiennej), jako koniec liczenia brana jest liczba maksymalna dodatnia, ze wszystkich takich liczb, uwzględniając na początku policzony powyżej koniec liczenia.
Przykładem tego parametru dla danej zmiennej jest: {{Code|tak,tak,5,3,4}}, a z dodatkiem globalnego przesunięcia dla wszystkich zmiennych: {{Parametr|parametry|5;<zmienna>{{=}}tak,tak,5,3,4}}, a dla wielu zmiennych:
{{Pre|{{Parametr|parametry|5;<zmienna 1>{{=}}tak,tak,5,3,4;<zmienna 2>{{=}}tak,,10,7,9;<zmienna 3>{{=}},tak,8,9,11}}}}
Zamiast wartości: {{Code|zmienna 1>}}, {{Code|<zmienna 2>}} i {{Code|<zmienna 3>}}, są pewne nazwy bazowe parametrów bez numerka na jej końcu. W zmiennej {{Code|parametry}} można nie podawać dalsze elementy po przecinku, jeżeli są puste lub nieważne (nic nie zmieniają) lub można nie podać nic po znaku {{Code|{{=}}}} (a w tym przypadku nawet można nie podawać tego znaku) dla danego problemu funkcji.
Parametrem {{Parametr|1|<wikikod>}},którego wartość, jest wikikodem do iteracji, gdy ten parametr nie jest podany, to funkcja zwraca wartość {{Code|(brak parametru do analizy)}}, a gdy ten parametr jednak jest podany, ale jest ciągiem pustym, wtedy wartość zwracana jest {{Code|(parametr do analizy pusty)}}.
Gdy parametr {{Code|tonumber(frame.args["start"]) or 1}}, jest równy zero, funkcja zwraca błąd: {{Code|(początek jest ustawiony na zero)}}.
A jeżeli zatem żaden parametr nie jest podany, to można użyć argumentu {{Code|niepodane}}, która wygeneruje jeden krok, tylko jeden, iteracji.
Gdy {{Code|nic}} przyjmuje wartość, i gdy pomijamy parametr, lub on przyjmuje wartość pustą, wtedy a funkcja nie może generować żadnego kroku iteracji, to wtedy jest zwracana wartość niepusta {{Code|nic}} lub ciąg pusty.
Parametr {{Code|po kolei}} niepusty powoduje, że zbieranie parametrów odbywa się od pewnego miejsca i idzie w sposób ciągły do góry, co jeden, aż do pewnej granicy.
Parametr {{Code|wytnij}} wycina parametry puste i niepodane, a {{Code|wytnij puste}} tylko puste, ale {{Code|nie wytnij nazwane}} nie wycina parametrów nazwanych.
Znacznik {{Code|_i}} określa symbol, jak ona może być używana do zastępowania zmiennych typu {{Code|<nowiki>{{((}}_i{{))}}</nowiki>}} i {{Code|<nowiki>{{((}}_i_i{{))}}</nowiki>}}, wtedy ich się używa zamiast: {{Code|<nowiki>{{((}}_{{))}}</nowiki>}} i {{Code|<nowiki>{{((}}__{{))}}</nowiki>}}.
W wyniku iteracji otrzymamy tablicę ciągów łańcuchów z wiikodami, wtedy ta funkcja używa funkcji:
{{Pre|lancuch_znakow {{=}} BudowaSzereguZDanych(frame,tab_lancuch,minimum or 0,maksimum);}}
wraz z jego parametrami podane w jego ramce {{Code|frame}}, które jednocześnie sa parametrami {{m|Ramka|Powtarzaj}}, używa do łączenia w pewien określony zbiór uporządkowanych ciągów do jednego łańcucha, który jest zwracany bezpośrednio przez tę funkcję bez rozwijania przy parametrze {{Parametr|nie rozwiń|tak}}, a gdy on nie przyjmuje wartości niepustej, w takim razie on jest rozwijany funkcją {{Code|pf:preprocess(lancuch_znakow)}}, i jest zwracany jako wartość omawianej funkcji.
Funkcja jest używana np. w silnikach szablonów, np.: {{s|Osobny artykuł/silnik}} szablonu {{s|Osobny artykuł}}, jak i jego podobnych szablonów, wykorzystujących ten właśnie silnik. Również przykładem jest: {{s|Kategoria główna/silnik}} szablonu {{s|Kategoria główna}} i innych, którego jest on silnikiem. A nawet podobnie jest z: {{s|Spójrz też/silnik}} szablonu {{s|Spójrz też}}. Podobnie się definiuje inny szablon, który drukuje nierozwinięty wikikod ze składników przy pomocy parametrów, który po włączeniu do większego kodu, dopiero wtedy jest rozwijany, przykładem tego jest: {{s|Wybrane grupy książek}}.
=== {{Code|p.PowtarzajOdDo}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.PowtarzajOdDo=function(frame)...end;
</syntaxhighlight>
Funkcja tworzy wikikod do rozwinięcia, np. przez funkcję {{m|Ramka|Rozwiń}}, lub go rozwija na końcu, na podstawie kolejnych kroków iteracji:
* {{Code|start}} - początek iteracji dokonywany przez ta funkcję,
* {{Code|koniec}} - koniec iteracji dokonywany przez ta funkcję,
* {{Code|krok}} - krok iteracji, co którynumer ma iterować,
* {{Code|łącznik}} - szereg łączących elementy z wikikodem, a jak nie ma tego elementu podanego, to czy ma być oddzielony nową linią na podstawie zmiennej {{Code|nowa linia}}, a jeżeli to nawet nie jest podane, to podany ciąg jest łączony poprzez szereg pusty,
* {{Code|nowa linia}} - szereg mówiący, czy ma łączyć szeregi kodem nową linią, jeżeli {{Code|łącznik}} nie jest podany,
* {{Code|przeskok}} - dodatkowy krok, nie licząc jedynki, jak ma iterować ciąg,
** Ta zmienna w każdym kroku iteracji zależna jest od: {{Code|<nowiki>{{_}}</nowiki>}} i {{Code|<nowiki>{{ciąg}}</nowiki>}}, mówiąca o numerze jego kroku,
* {{Code|nie rozwiń}} - niepusta wartość, wtedy kod nie jest rozwijany, jeśli uzyskany kod nie jest rozwijany, w końcowym etapie można go rozwinąć przy pomocy funkcji {{m|Ramka|Rozwiń}},
* {{Code|1}} - aktualny wikikod ze zmiennymi poniżej przedstawiający aktualny krok iteracji, z którego dla każdego elementu te ciągi są łaczone za pomocą łącznika.
Zmienne w kodzie: {{Code|1}} i {{Code|przeskok}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące:
* {{Code|<nowiki>{{start}}</nowiki>}} - przyjmuje wartość {{Tt|1}},
* {{Code|<nowiki>{{koniec}}</nowiki>}} - przyjmuje wartość, który jest liczbą elementów w ciągu oddzielonych średnikami w zmiennej {{Code|ciąg}},
* {{Code|<nowiki>{{krok}}</nowiki>}} - przyjmuje wartość {{Tt|1}}.
Zmienne inne za każdym krokiem iteracji, z których korzystają: {{Code|1}} i {{Code|przeskok}}:
* {{Code|<nowiki>{{_}}</nowiki>}} - symbol, za którą jest podstawiana liczba przyjmująca aktualną wartość numeru iteracji.
Przykładowym kodem jest kod, którego wikikod znajduje się szablonie w silniku: {{s|Chem/silnik}}, w tym nadrzędnym: {{s|Chem}}, przykłady jego działania:
* {{Code|{{s|Chem|C|n|H|2n + 2}}}} → {{Tt|{{Chem|C|n|H|2n + 2}}}}
* {{Code|{{s|Chem|H|3|O|+}}}} → {{Tt|{{Chem|H|3|O|+}}}}
* {{Code|{{s|Chem|SO|4|2-}}}} → {{Tt|{{Chem|SO|4|2-}}}}
* {{Code|{{s|Chem|4|He}}}} → {{Tt|{{Chem|4|He}}}}
* {{Code|{{s|Chem|4|2|He}}}} → {{Tt|{{Chem|4|2|He}}}}
Na podstawie tej funkcji dokonano w szablonie {{s|Chem}}, że ona może przyjmować dowolną liczbę parametrów numerowanych.
=== {{Code|p["PrzetwarzajIterującCiąg"]}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PrzetwarzajIterującCiąg"]=function(frame)...end;
</syntaxhighlight>
Funkcja do iteracji ciągu z wikikodem i pewnymi zmiennymi.
* {{Code|ciąg}} - lista parametrów oddzielonych średnikami, z którego jest tworzona tablica z elementów pomiędzy srednikami,
* {{Code|łącznik}} - szereg łączących elementy z wikikodem, a jak nie ma tego elementu podanego, to czy ma być oddzielony nową linią na podstawie zmiennej {{Code|nowa linia}}, a jeżeli to nawet nie jest podane, to podany ciąg jest łączony poprzez szereg pusty,
* {{Code|nowa linia}} - szereg mówiący, czy ma łączyć szeregi kodem nową linią, jeżeli {{Code|łącznik}} nie jest podany,
* {{Code|przeskok}} - dodatkowy krok, nie licząc jedynki, jak ma iterować ciąg,
** Ta zmienna w każdym kroku iteracji zależna jest od: {{Code|<nowiki>{{_}}</nowiki>}} i {{Code|<nowiki>{{ciąg}}</nowiki>}}, mówiąca o numerze jego kroku,
* {{Code|nie rozwiń}} - niepusta wartość, wtedy kod nie jest rozwijany, jeśli uzyskany kod nie jest rozwijany, w końcowym etapie można go rozwinąć przy pomocy funkcji {{m|Ramka|Rozwiń}},
* {{Code|1}} - aktualny wikikod ze zmiennymi poniżej przedstawiający aktualny krok iteracji, z którego dla każdego elementu te ciągi są łaczone za pomocą łącznika.
Zmienne w kodzie: {{Code|1}} i {{Code|przeskok}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące:
* {{Code|<nowiki>{{start}}</nowiki>}} - przyjmuje wartość {{Tt|1}},
* {{Code|<nowiki>{{koniec}}</nowiki>}} - przyjmuje wartość, który jest liczbą elementów w ciągu oddzielonych średnikami w zmiennej {{Code|ciąg}},
* {{Code|<nowiki>{{krok}}</nowiki>}} - przyjmuje wartość {{Tt|1}}.
Zmienne inne za każdym krokiem iteracji, z których korzystają: {{Code|1}} i {{Code|przeskok}}:
* {{Code|<nowiki>{{_}}</nowiki>}} - symbol, za którą jest podstawiana liczba przyjmująca aktualną wartość numeru iteracji,
* {{Code|<nowiki>{{ciąg}}</nowiki>}} - jest to wartość pojedynczego elementu w {{Code|ciąg}}.
Przykładowym kodem jest kod, którego część znajduje się tutaj, z szablonu {{s|Status}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|PrzetwarzajIterującCiąg
| ciąg = {{{junior}}}
| przeskok = 0
| 1 = {{((}}#if:{{((}}ciąg{{))}}
{{!}}{{((}}#invoke:Ramka{{!}}Szablon
{{!}}parametry funkcji modułu pudełek{{=}}tak
{{!}}Nazwa{{=}}Kategoria{{!}}Wikijunior:{{((}}ucfirst:{{((}}ciąg{{))}}{{))}}
{{))}}
{{))}}
}}
</syntaxhighlight>
Wartością w tym przypadku zmiennej szablonowej {{Code|<nowiki>{{{junior}}}</nowiki>}} może być: {{Parametr|junior|Owoce;Warzywa}}. Ta funkcja najpierw iteruje po wartości {{Code|Owoce}}, a później po {{Code|Warzywa}}.
Powyższy kod, uzyskany w ten sposób wikikod, jest rozwijany za pomocą funkcji systemowej {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|pf:preprocess(lancuch)}}, jeśli: {{Code|nie rozwiń}}, nie przybiera wartości niepustej.
=== {{Code|p["PowtarzajWedług"]}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PowtarzajWedług"] = function(frame)...end;
</syntaxhighlight>
Funkcja wyszukuje ile jest stron o danym wzorze, np.dla stron o podstawie „{{Ns:Template}}:Polecane książki/”:{{Parametr|wzór|{{Ns:Template}}:Polecane książki/{{((}}_{{))}}}}.
* {{Code|start}} - od jakiej liczby ma liczyć strony (domyślną wartością jest {{Code|1}}, od której zaczyna się liczenie stron o podany wzorze numeracyjnym),
* {{Code|wzór}} - wzór według tego, co ma sprawdzając, czy one pasują do niego.
Parametr {{Code|wzór}} ma w sobie {{font|color=blue|<nowiki>{{_}}</nowiki>}}, za którą podstawiany jest numer w postaci liczby naturalnej innej niż zero.
=== Przykłady użycia ===
Przykład z tą funkcją znajduje się w kodzie w szablonie: {{s|Lista wybranych książek}}, która po wywołaniu wypluwa wynik:
* Szablon wypluwający listę stron według wzoru w postaci tekstu:
** {{Code|{{s|Lista wybranych książek|Polecane książki}}}} → {{Tt|{{Lista wybranych książek|Polecane książki}}}}
** {{Code|{{s|Lista wybranych książek|Nowe podręczniki miesiąca}}}} → {{Tt|{{Lista wybranych książek|Nowe podręczniki miesiąca}}}}
** {{Code|{{s|Lista wybranych książek|Wyróżnienia książek miesiąca}}}} → {{Tt|{{Lista wybranych książek|Wyróżnienia książek miesiąca}}}}
* Szablon wypluwający listę stron według wzoru w postaci linków:
** {{Code|{{s|Lista wybranych książek|Polecane książki|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Polecane książki|link=tak}}}}
** {{Code|{{s|Lista wybranych książek|Nowe podręczniki miesiąca|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Nowe podręczniki miesiąca|link=tak}}}}
** {{Code|{{s|Lista wybranych książek|Wyróżnienia książek miesiąca|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Wyróżnienia książek miesiąca|link=tak}}}}
== {{Code|p["LiczbaPrawychUkośników"]}} ==
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaPrawychUkośników"] = function(frame)...end;
</syntaxhighlight>
Szablon wyszukuje liczbę prawych ukośników w wielopoziomowym adresie strony.
* {{Code|1}} - wielopoziomowy adres z ewentualnie prawymi ukośnikami.
Jeżeli ten adres nie zawiera tych ukośników, to funkcja zwraca wartość {{Tt|0}}.
=== Przykład użycia ===
* {{Code|{{m|Ramka|LiczbaPrawychUkośników|1{{=}}Podstawia/Poziom_1/Poziom_2/Poziom_3/Poziom_4/Poziom_5}}}} → {{Tt|{{#invoke:Ramka|LiczbaPrawychUkośników|1=Podstawia/Poziom_1/Poziom_2/Poziom_3/Poziom_4/Poziom_5}}}}
== {{Code|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}} ==
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"] = function(frame)...end;
</syntaxhighlight>
Funkcja wyszukuje ile jest stron o danym wzorze, np.dla stron o podstawie „{{Ns:Template}}:Polecane książki/”:{{Parametr|wzór|{{Ns:Template}}:Polecane książki/{{((}}_{{))}}}}.
* {{Code|start}} - od jakiej liczby ma liczyć strony (domyślną wartością jest {{Code|1}}, od której zaczyna się liczenie stron o podany wzorze numeracyjnym),
* {{Code|wzór}} - wzór według tego, co ma sprawdzając, czy one pasują do niego.
Parametr {{Code|wzór}} ma w sobie {{font|color=blue|<nowiki>{{_}}</nowiki>}}, za którą podstawiany jest numer w postaci liczby naturalnej innej niż zero.
=== Przykłady użycia ===
Przykład z tą funkcją znajduje się w kodzie w szablonie: {{s|Liczba list wybranych książek}}, która po wywołaniu wypluwa wynik:
* {{Code|{{s|Liczba list wybranych książek|Polecane książki}}}} → {{Tt|{{Liczba list wybranych książek|Polecane książki}}}}
* {{Code|{{s|Liczba list wybranych książek|Nowe podręczniki miesiąca}}}} → {{Tt|{{Liczba list wybranych książek|Nowe podręczniki miesiąca}}}}
* {{Code|{{s|Liczba list wybranych książek|Wyróżnienia książek miesiąca}}}} → {{Tt|{{Liczba list wybranych książek|Wyróżnienia książek miesiąca}}}}
== Parametry odpowiednikowych zmiennych ==
=== {{Code|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]=function(frame)...end;
</syntaxhighlight>
Szablon szuka minimalny numer wśród zmiennych szablonu, o pewnej podstawie, tego numerowanego, o schemacie: {{Code|<zmienna>(%d*)}}.
* {{Code|zmienna}} - podstawa parametru numerowanego liczbami lub ciągiem pustym,
* {{Code|numerowane}} - czy ma wliczać parametry numerowane do tego numeru.
Szablon przekształca wartość parametru {{Code|zmienna}} do czystego tekstu, względem wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Parametry: {{Code|zmienna}} i {{Code|numerowane}}, to parametry ramki.
* Popatrz na definicję przykładu - szablonu: {{s|Wikibooks/Przykład/MinimalnyNumerSpośródOdpowiednikowychZmiennych}}.
==== Przykład przy pomocy szablonu z definicją z tą funkcją ====
* {{Code|{{s|Wikibooks/Przykład/MinimalnyNumerSpośródOdpowiednikowychZmiennych|zmienna{{=}}parametr|numerowane{{=}}|parametr3{{=}}tak|parametr5{{=}}tak|subnazwa=tak}}}} → {{Tt|{{Wikibooks/Przykład/MinimalnyNumerSpośródOdpowiednikowychZmiennych|zmienna=parametr|numerowane=|parametr3=tak|parametr5=tak}}}}
=== {{Code|p.IleJestTakichOdpowiednikowychZmiennych}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.IleJestTakichOdpowiednikowychZmiennych=function(frame)...end;
</syntaxhighlight>
Funkcja szuka wśród parametrów szablonu, o pewnej podstawie, tego numerowanego, o schemacie: {{Code|<zmienna>(%d*)}}, ile jest takich zmiennych, o tych numerkach, w parametrach szablonu.
* {{Code|zmienna}} - podstawa nazwowa parametru numerowanego,
* {{Code|numerowane}} - czy ma wliczać parametry numerowane do tej liczby.
Szablon przekształca wartość parametru {{Code|zmienna}} do czystego tekstu, względem wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Parametry: {{Code|zmienna}} i {{Code|numerowane}}, to parametry ramki.
* Popatrz na definicję przykładu - szablonu: {{s|Wikibooks/Przykład/IleJestTakichOdpowiednikowychZmiennych}}.
==== Przykład przy pomocy szablonu z definicją z tą funkcją ====
* {{Code|{{s|Wikibooks/Przykład/IleJestTakichOdpowiednikowychZmiennych|zmienna{{=}}parametr|numerowane{{=}}|parametr1{{=}}tak|parametr2{{=}}tak|subnazwa=tak}}}} → {{Tt|{{Wikibooks/Przykład/IleJestTakichOdpowiednikowychZmiennych|zmienna=parametr|numerowane=|parametr1=tak|parametr2=tak}}}}
== {{Code|p["Parametr w tablicy nazw"]}} ==
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["Parametr w tablicy nazw"]=function(frame)...end;
</syntaxhighlight>
Funkcja wywoływana w postaci ramki szuka parametru w tablicy podanych parametrów.
* {{Code|parametry}} - lista parametrów oddzielonych średnikiem,
* {{Code|pozycja}} - szukana lista w tablicy parametrów,
* {{Code|od dużej}} - czy parametr i elementy listy mają być zamieniane od dużej litery.
Funkcja, jeżeli wyszukała w tej tablic parametr (pozycję) zwraca wartość {{Code|tak}}, w przeciwnym wypadku zwraca {{Code|nil}}, wartość języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, która po transformacji na wikikod jest zamieniana na ciąg pusty.
=== Przykłady użycia funkcji ===
* {{Code|{{m|Ramka|Parametr w tablicy nazw|parametry{{=}}parametr1;parametr2;parametr3|pozycja{{=}}parametr2}}}} → {{Tt|{{#invoke:Ramka|Parametr w tablicy nazw|parametry=parametr1;parametr2;parametr3|pozycja=parametr2}}}}
* {{Code|{{m|Ramka|Parametr w tablicy nazw|parametry{{=}}parametr1;parametr2;parametr3|pozycja{{=}}parametr4}}}} → {{Tt|{{#invoke:Ramka|Parametr w tablicy nazw|parametry=parametr1;parametr2;parametr3|pozycja=parametr4}}}}
* {{Code|{{m|Ramka|Parametr w tablicy nazw|parametry{{=}}parametr1;parametr2;parametr3|pozycja{{=}}Parametr2|od dużej{{=}}tak}}}} → {{Tt|{{#invoke:Ramka|Parametr w tablicy nazw|parametry=parametr1;parametr2;parametr3|pozycja=Parametr2|od dużej=tak}}}}
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
ozeo1rf9f4kpoztwcdlzpywcc5bwv9x
Szablon:Wikibooks/Przykład/IleJestTakichOdpowiednikowychZmiennych
10
63236
553317
534822
2026-08-27T08:33:46Z
Persino
2851
553317
wikitext
text/x-wiki
<includeonly>{{#invoke:Ramka|IleJestTakichOdpowiednikowychZmiennych|zmienna={{{zmienna}}}|numerowane={{{odpowiednik|}}}}}</includeonly><noinclude>{{Dokumentacja|zawartość=Jest to szablon przykład ilustrujący działanie funkcji {{m|Ramka|IleJestTakichOdpowiednikowychZmiennych}} w dokumentacji modułu {{ld2|Ramka}}.}}</noinclude>
ccfet3dhvuy1x3475a2y45oz7pdg9l7
553318
553317
2026-08-27T08:34:12Z
Persino
2851
Persino przeniósł(-osła) stronę [[Szablon:Wikibooks/Przykład/IleJestTakichNieodpowiednikowychZmiennych]] do [[Szablon:Wikibooks/Przykład/IleJestTakichOdpowiednikowychZmiennych]], bez pozostawienia przekierowania pod starym tytułem
553317
wikitext
text/x-wiki
<includeonly>{{#invoke:Ramka|IleJestTakichOdpowiednikowychZmiennych|zmienna={{{zmienna}}}|numerowane={{{odpowiednik|}}}}}</includeonly><noinclude>{{Dokumentacja|zawartość=Jest to szablon przykład ilustrujący działanie funkcji {{m|Ramka|IleJestTakichOdpowiednikowychZmiennych}} w dokumentacji modułu {{ld2|Ramka}}.}}</noinclude>
ccfet3dhvuy1x3475a2y45oz7pdg9l7
553334
553318
2026-08-27T10:20:22Z
Persino
2851
553334
wikitext
text/x-wiki
<includeonly>{{#invoke:Ramka|IleJestTakichOdpowiednikowychZmiennych|zmienna={{{zmienna}}}|numerowane={{{numerowane|}}}}}</includeonly><noinclude>{{Dokumentacja|zawartość=Jest to szablon przykład ilustrujący działanie funkcji {{m|Ramka|IleJestTakichOdpowiednikowychZmiennych}} w dokumentacji modułu {{ld2|Ramka}}.}}</noinclude>
ej06jdoetjl80fmfhg857fwl3w03bup
Szablon:Wikibooks/Przykład/MinimalnyNumerSpośródOdpowiednikowychZmiennych
10
63237
553315
534831
2026-08-27T08:31:59Z
Persino
2851
553315
wikitext
text/x-wiki
<includeonly>{{#invoke:Ramka|MinimalnyNumerSpośródOdpowiednikowychZmiennych|zmienna={{{zmienna}}}|numerowane={{{odpowiednik|}}}}}</includeonly><noinclude>{{Dokumentacja|zawartość=Jest to szablon przykład ilustrujący działanie funkcji {{m|Ramka|MinimalnyNumerSpośródOdpowiednikowychZmiennych}} w dokumentacji modułu {{ld2|Ramka}}.}}</noinclude>
37o6yu01kuzdt1fap0j7ac89uz0mecb
553316
553315
2026-08-27T08:32:19Z
Persino
2851
Persino przeniósł(-osła) stronę [[Szablon:Wikibooks/Przykład/MinimalnyNumerSpośródNieodpowiednikowychZmiennych]] do [[Szablon:Wikibooks/Przykład/MinimalnyNumerSpośródOdpowiednikowychZmiennych]], bez pozostawienia przekierowania pod starym tytułem
553315
wikitext
text/x-wiki
<includeonly>{{#invoke:Ramka|MinimalnyNumerSpośródOdpowiednikowychZmiennych|zmienna={{{zmienna}}}|numerowane={{{odpowiednik|}}}}}</includeonly><noinclude>{{Dokumentacja|zawartość=Jest to szablon przykład ilustrujący działanie funkcji {{m|Ramka|MinimalnyNumerSpośródOdpowiednikowychZmiennych}} w dokumentacji modułu {{ld2|Ramka}}.}}</noinclude>
37o6yu01kuzdt1fap0j7ac89uz0mecb
553333
553316
2026-08-27T10:19:50Z
Persino
2851
553333
wikitext
text/x-wiki
<includeonly>{{#invoke:Ramka|MinimalnyNumerSpośródOdpowiednikowychZmiennych|zmienna={{{zmienna}}}|numerowane={{{numerowane|}}}}}</includeonly><noinclude>{{Dokumentacja|zawartość=Jest to szablon przykład ilustrujący działanie funkcji {{m|Ramka|MinimalnyNumerSpośródOdpowiednikowychZmiennych}} w dokumentacji modułu {{ld2|Ramka}}.}}</noinclude>
90zah0spxm3a7nm78xpdiv066iozcwv
Wikibooks:Moduły/Parametry
4
63291
553296
553210
2026-08-26T23:50:52Z
Persino
2851
553296
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł: {{ld2|Parametry}}, służy do operowania na wszelkiego rodzaju parametrach, modyfikowaniu ich, a nawet podawania z funkcji z tablicy ramki tablicy transportu tego modułu, i innych funkcji z innych modułów, które wykorzystują funkcje parametru tego modułu.
Będziemy mówili, że zbiór jest ponumerowany, gdy ma elementy nienazwane od jeden zwyż, bez przerw, do pewnego końca, wtedy jest to sekwencja w języku {{lpg|Lua}}, a jeżeli ona nie jest ponumerowana, to ma tylko elementy nienazwane, czyli wtedy nie jest sekwencją. Zbiór z elementami nienazwanymi (nazwane liczbami naturalnymi) może zawierać czasami elementy nazwane, ktorego nazwy nie są już takie, zwykle je się oznacza łańcuchami znakowymi, a w języku {{lpg|Lua}} to są po prostu elementy typu: {{Code|string}}, a liczby naturalne typu: {{Code|number}}.
== Spis treści ==
{{Kolumny|2|2=
=== {{lru|Moduły/Parametry/Tom I}} - Funkcje liczb elementów w tabeli ===
Funkcje liczenia elementów, numerowanych i nienazwanych, także wszystkich, tabel. Uwzględnione są w tym normalne tabele, jak i tabele parametrów szablonu.
=== {{lru|Moduły/Parametry/Tom II}} - Funkcje minimalnej i maksymalnej wartości w tabeli ===
Funkcje liczenia minimalnej i maksymalnej wartości numeru, czyli wartości numerycznej klucza elementu, w normalnej tabeli i tabeli parametrów szablonów, a funkcje jednoczesnego liczenia jednocześnie tych dwóch wartości, dla tabel nazwanych kluczy, ale te one mają w sobie numerki, ale kolejność w nich, względem nich, takich zmiennych, może mieć w sobie przerwy.
=== {{lru|Moduły/Parametry/Tom III}} - Funkcje, czy są takie parametry ===
Funkcje badania tabel, czy posiadają one parametry, nazwane lub nienazwane (w szczególności numerowane), jak i parametry dowolnego typu.
=== {{lru|Moduły/Parametry/Tom IV}} - Funkcje kopiowania tabel ===
Funkcje pozwalające kopiowanie elementów nazwanych o łańcuchach znakowych kluczy z modyfikacją ich wartości, kopiowane normalne - niedokładne, i rekurencyjne tabel - dokładne, czy kopiowanie bez pewnych kluczy tabeli pierwotnej.
=== {{lru|Moduły/Parametry/Tom V}} - Funkcje istnienia parametrów ===
Funkcje istnienia parametrów, wskazujące, czy istnieją w szablonie pewne elementy wskazane w ramce, tzn.: mogący mieć jeden parametr nazwany liczbą (czyli nienazwany, wskazujący, czy występuje parametr w szablonie o tym numerze) lub ciągiem (nazwany, niebędący liczbą, mówiący, czy o tym kluczu, będący łańcuchem znakowym), czy jakikolwiek normalne wielowartościowe funkcje parametrów, numerowanych i nienazwanych, czy nazwanych, czyli kolejno, czy występują takie jakieś, z któreś podanych elementów o ich wartościach.
=== {{lru|Moduły/Parametry/Tom VI}} - Funkcje manipulowania formatami łańcuchów znakowych ===
Funkcje do manipulowania formatami łańcuchów znakowych, więc to są funkcje modyfikujące łańcuchy znaków, trimujące, jak i usuwające powtarzające się odstępy, w nich, w tym również dolne myślniki, jeżeli tak procedurę ustawiono.
=== {{lru|Moduły/Parametry/Tom VII}} - Funkcje dodawania lub usuwania elementu do tabeli zbioru ===
Funkcje dodawania lub usuwania elementu z tabeli zbioru elementów, tu są procedury dodające elementy do niego, te elementy są ponumerowane. Wartości kluczy tych elementow tam nie są ważne.
=== {{lru|Moduły/Parametry/Tom VIII}} - Funkcje istnienia elementów tabeli ===
Funkcje sprawdzające, czy istnieje taki parametr numerowany lub nienazwany, o pewnej wartości, sprawdza, czy istnieje taki klucz, a nawet, czy w tabeli element pod tych kluczem ma taką wartość.
=== {{lru|Moduły/Parametry/Tom IX}} - Łączenie wielu tabel ===
Funkcje łączenia wielu tabel przeróżnego typu, traktująca elementy nienazwane jako elementy zbioru lub nie, inne jako nowe elementy w nowej tabeli, w zależności od funkcji lub jej ustawień.
=== {{lru|Moduły/Parametry/Tom X}} - Funkcje dodawania lub usuwania elementów z tabeli o takich kluczach ===
Funkcje usuwania elementów z pierwszej tabeli o takich kluczach, które są w nazwach drugiej.
=== {{lru|Moduły/Parametry/Tom XI}} - Tworzenie tabeli ===
Funkcje tworzenia nowej tabeli, bez powtarzających sie kluczy drugiej.
=== {{lru|Moduły/Parametry/Tom XII}} - Funkcje typu ===
Funkcje typu, czyli wskazujące, jakiego typu są podane elementy, obsługiwane rodzaje to: {{Code|table}}, {{Code|function}}, {{Code|string}}, {{Code|boolean}}, {{Code|number}} i {{Code|nil}}.
=== {{lru|Moduły/Parametry/Tom XIII}} - Funkcje prawdy i fałszu ===
Funkcje prawdy i fałszu, czyli procedury sprawdzające, czy podane elementy, czy są puste, czy nie, lub wskazujące, czy składają się z samych znaków odstępów, wtedy są niepuste, względem jednych procedur są uznawane jakby były puste, a względem innych są traktowane jak niepuste, co ogólnie dla wszystkich przypadków, według miary niepustosci, te funkcje zwracają prawdę, a dla tego przeciwnego fałsz.
=== {{lru|Moduły/Parametry/Tom XIV}} - Funkcje parametrów ===
Funkcje parametrów, czyli procedury wydobywające parametry w odpowiedni sposób od szablonu rodzica, a nawet przystosowane jednocześnie, by wydobywały, czasami argumenty z ramki, też są one od wydostawania się wartości o pewnych nazwach z tabel.
=== {{lru|Moduły/Parametry/Tom XV}} - Funkcje wartości logicznej ===
Funkcje wartości logicznej, występujące w logice, tzn.: '''and''', '''or''' i '''not''', przyjmujące wiele lub jedną zmienną.
=== {{lru|Moduły/Parametry/Tom XVI}} - Funkcje porównań ===
Funkcje porównań, czyli procedury wskazujące, czy parametry są w jakiej relacji względem siebie.
=== {{lru|Moduły/Parametry/Tom XVII}} - Ile jest podanych elementów w szablonie według parametrów ramki ===
Ile jest podanych elementów w szablonie według parametrów ramki. Ramka może przyjmować wiele numerowanych elementów, które mogą być kluczami parametrów szablonów, funkcja wskazuję, ile jest podanych takich argumentów w parametrach szablonu.
=== {{lru|Moduły/Parametry/Tom XVIII}} - Metafunkcje i metatabele ===
Metafunkcje i metatabele, czyli funkcje definiujące metatabelki i w nich metafunkcje, czyli takie specjalne tabele i w nich funkcje, które można przyłączać do innych tabel.
=== {{lru|Moduły/Parametry/Tom XIX}} - Iteratory ===
Iteratory, różnego typu, zwracające kolejno elementy w kolejności numerowanej - gdy nazwy są liczbami naturalnymi, ponumerowanymi po kolei, lub alfabetycznie - gdy nazwy są łańcuchami znakowymi. Gdy nazwy są takie i takie, w tabelach, to iteratory ich elementów można wykorzystywać zarówno do tego pierwszego lub drugiego typu.
=== {{lru|Moduły/Parametry/Tom XX}} - Funkcje wartości minimalnej i maksymalnej ===
Funkcje wartości minimalnej i maksymalnej, z dwóch parametrów, a nawet liczb, czy podanych w różnych jednostkach bezwzględny miar w informatyce, w określaniu np. szerokosci.
}}
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
6baja8se5sa73zjq3kpxj419127xkjx
553297
553296
2026-08-26T23:51:44Z
Persino
2851
553297
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł: {{ld2|Parametry}}, służy do operowania na wszelkiego rodzaju parametrach, modyfikowaniu ich, a nawet podawania z funkcji z tablicy ramki tablicy transportu tego modułu, i innych funkcji z innych modułów, które wykorzystują funkcje parametru tego modułu.
Będziemy mówili, że zbiór jest ponumerowany, gdy ma elementy nienazwane od jeden zwyż, bez przerw, do pewnego końca, wtedy jest to sekwencja w języku {{lpg|Lua}}, a jeżeli ona nie jest ponumerowana, to ma tylko elementy nienazwane, czyli wtedy nie jest sekwencją. Zbiór z elementami nienazwanymi (nazwane liczbami naturalnymi) może zawierać czasami elementy nazwane, ktorego nazwy nie są już takie, zwykle je się oznacza łańcuchami znakowymi, a w języku {{lpg|Lua}} to są po prostu elementy typu: {{Code|string}}, a liczby naturalne typu: {{Code|number}}.
== Spis treści ==
{{Kolumny|2|2=
=== {{lru|Moduły/Parametry/Tom I}} - Funkcje liczb elementów w tabeli ===
Funkcje liczenia elementów, numerowanych i nienazwanych, także wszystkich, elementów tabeli. Uwzględnione są w tym normalne tabele, jak i tabele parametrów szablonu.
=== {{lru|Moduły/Parametry/Tom II}} - Funkcje minimalnej i maksymalnej wartości w tabeli ===
Funkcje liczenia minimalnej i maksymalnej wartości numeru, czyli wartości numerycznej klucza elementu, w normalnej tabeli i tabeli parametrów szablonów, a funkcje jednoczesnego liczenia jednocześnie tych dwóch wartości, dla tabel nazwanych kluczy, ale te one mają w sobie numerki, ale kolejność w nich, względem nich, takich zmiennych, może mieć w sobie przerwy.
=== {{lru|Moduły/Parametry/Tom III}} - Funkcje, czy są takie parametry ===
Funkcje badania tabel, czy posiadają one parametry, nazwane lub nienazwane (w szczególności numerowane), jak i parametry dowolnego typu.
=== {{lru|Moduły/Parametry/Tom IV}} - Funkcje kopiowania tabel ===
Funkcje pozwalające kopiowanie elementów nazwanych o łańcuchach znakowych kluczy z modyfikacją ich wartości, kopiowane normalne - niedokładne, i rekurencyjne tabel - dokładne, czy kopiowanie bez pewnych kluczy tabeli pierwotnej.
=== {{lru|Moduły/Parametry/Tom V}} - Funkcje istnienia parametrów ===
Funkcje istnienia parametrów, wskazujące, czy istnieją w szablonie pewne elementy wskazane w ramce, tzn.: mogący mieć jeden parametr nazwany liczbą (czyli nienazwany, wskazujący, czy występuje parametr w szablonie o tym numerze) lub ciągiem (nazwany, niebędący liczbą, mówiący, czy o tym kluczu, będący łańcuchem znakowym), czy jakikolwiek normalne wielowartościowe funkcje parametrów, numerowanych i nienazwanych, czy nazwanych, czyli kolejno, czy występują takie jakieś, z któreś podanych elementów o ich wartościach.
=== {{lru|Moduły/Parametry/Tom VI}} - Funkcje manipulowania formatami łańcuchów znakowych ===
Funkcje do manipulowania formatami łańcuchów znakowych, więc to są funkcje modyfikujące łańcuchy znaków, trimujące, jak i usuwające powtarzające się odstępy, w nich, w tym również dolne myślniki, jeżeli tak procedurę ustawiono.
=== {{lru|Moduły/Parametry/Tom VII}} - Funkcje dodawania lub usuwania elementu do tabeli zbioru ===
Funkcje dodawania lub usuwania elementu z tabeli zbioru elementów, tu są procedury dodające elementy do niego, te elementy są ponumerowane. Wartości kluczy tych elementow tam nie są ważne.
=== {{lru|Moduły/Parametry/Tom VIII}} - Funkcje istnienia elementów tabeli ===
Funkcje sprawdzające, czy istnieje taki parametr numerowany lub nienazwany, o pewnej wartości, sprawdza, czy istnieje taki klucz, a nawet, czy w tabeli element pod tych kluczem ma taką wartość.
=== {{lru|Moduły/Parametry/Tom IX}} - Łączenie wielu tabel ===
Funkcje łączenia wielu tabel przeróżnego typu, traktująca elementy nienazwane jako elementy zbioru lub nie, inne jako nowe elementy w nowej tabeli, w zależności od funkcji lub jej ustawień.
=== {{lru|Moduły/Parametry/Tom X}} - Funkcje dodawania lub usuwania elementów z tabeli o takich kluczach ===
Funkcje usuwania elementów z pierwszej tabeli o takich kluczach, które są w nazwach drugiej.
=== {{lru|Moduły/Parametry/Tom XI}} - Tworzenie tabeli ===
Funkcje tworzenia nowej tabeli, bez powtarzających sie kluczy drugiej.
=== {{lru|Moduły/Parametry/Tom XII}} - Funkcje typu ===
Funkcje typu, czyli wskazujące, jakiego typu są podane elementy, obsługiwane rodzaje to: {{Code|table}}, {{Code|function}}, {{Code|string}}, {{Code|boolean}}, {{Code|number}} i {{Code|nil}}.
=== {{lru|Moduły/Parametry/Tom XIII}} - Funkcje prawdy i fałszu ===
Funkcje prawdy i fałszu, czyli procedury sprawdzające, czy podane elementy, czy są puste, czy nie, lub wskazujące, czy składają się z samych znaków odstępów, wtedy są niepuste, względem jednych procedur są uznawane jakby były puste, a względem innych są traktowane jak niepuste, co ogólnie dla wszystkich przypadków, według miary niepustosci, te funkcje zwracają prawdę, a dla tego przeciwnego fałsz.
=== {{lru|Moduły/Parametry/Tom XIV}} - Funkcje parametrów ===
Funkcje parametrów, czyli procedury wydobywające parametry w odpowiedni sposób od szablonu rodzica, a nawet przystosowane jednocześnie, by wydobywały, czasami argumenty z ramki, też są one od wydostawania się wartości o pewnych nazwach z tabel.
=== {{lru|Moduły/Parametry/Tom XV}} - Funkcje wartości logicznej ===
Funkcje wartości logicznej, występujące w logice, tzn.: '''and''', '''or''' i '''not''', przyjmujące wiele lub jedną zmienną.
=== {{lru|Moduły/Parametry/Tom XVI}} - Funkcje porównań ===
Funkcje porównań, czyli procedury wskazujące, czy parametry są w jakiej relacji względem siebie.
=== {{lru|Moduły/Parametry/Tom XVII}} - Ile jest podanych elementów w szablonie według parametrów ramki ===
Ile jest podanych elementów w szablonie według parametrów ramki. Ramka może przyjmować wiele numerowanych elementów, które mogą być kluczami parametrów szablonów, funkcja wskazuję, ile jest podanych takich argumentów w parametrach szablonu.
=== {{lru|Moduły/Parametry/Tom XVIII}} - Metafunkcje i metatabele ===
Metafunkcje i metatabele, czyli funkcje definiujące metatabelki i w nich metafunkcje, czyli takie specjalne tabele i w nich funkcje, które można przyłączać do innych tabel.
=== {{lru|Moduły/Parametry/Tom XIX}} - Iteratory ===
Iteratory, różnego typu, zwracające kolejno elementy w kolejności numerowanej - gdy nazwy są liczbami naturalnymi, ponumerowanymi po kolei, lub alfabetycznie - gdy nazwy są łańcuchami znakowymi. Gdy nazwy są takie i takie, w tabelach, to iteratory ich elementów można wykorzystywać zarówno do tego pierwszego lub drugiego typu.
=== {{lru|Moduły/Parametry/Tom XX}} - Funkcje wartości minimalnej i maksymalnej ===
Funkcje wartości minimalnej i maksymalnej, z dwóch parametrów, a nawet liczb, czy podanych w różnych jednostkach bezwzględny miar w informatyce, w określaniu np. szerokosci.
}}
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
6ysz82pcpqdtdztg4mgvq1z188bfsh6
553298
553297
2026-08-27T00:09:59Z
Persino
2851
/* */
553298
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł: {{ld2|Parametry}}, służy do operowania na wszelkiego rodzaju parametrach, modyfikowaniu ich, a nawet podawania normalnych tabelek lub ich z funkcji, z tablicy ramki tablicy transportu tego modułu, i innych funkcji z innych modułów, bądź własnych, które wykorzystują funkcje parametru tego modułu lub bezpośrednio wydobywają odpowiednie tabele z nich.
Będziemy mówili, że zbiór jest ponumerowany, gdy ma elementy nienazwane od jeden zwyż, bez przerw, do pewnego końca, wtedy jest to sekwencja w języku {{lpg|Lua}}, a jeżeli ona nie jest ponumerowana, to ma tylko elementy nienazwane, czyli wtedy nie jest sekwencją. Zbiór z elementami nienazwanymi (nazwane liczbami naturalnymi) może zawierać czasami elementy nazwane, ktorego nazwy nie są już takie, zwykle je się oznacza łańcuchami znakowymi, a w języku {{lpg|Lua}}, to są po prostu elementy typu: {{Code|string}}, a pozycje nienazwane, czy numerowane, to są oznaczanie liczbami naturalnymi typu: {{Code|number}}.
== Spis treści ==
{{Kolumny|2|2=
=== {{lru|Moduły/Parametry/Tom I}} - Funkcje liczb elementów w tabeli ===
Funkcje liczenia elementów, numerowanych i nienazwanych, także wszystkich, elementów tabeli. Uwzględnione są w tym normalne tabele, jak i tabele parametrów szablonu.
=== {{lru|Moduły/Parametry/Tom II}} - Funkcje minimalnej i maksymalnej wartości w tabeli ===
Funkcje liczenia minimalnej i maksymalnej wartości numeru, czyli wartości numerycznej klucza elementu, w normalnej tabeli i tabeli parametrów szablonów, a funkcje jednoczesnego liczenia jednocześnie tych dwóch wartości, dla tabel nazwanych kluczy, ale te one mają w sobie numerki, ale kolejność w nich, względem nich, takich zmiennych, może mieć w sobie przerwy.
=== {{lru|Moduły/Parametry/Tom III}} - Funkcje, czy są takie parametry ===
Funkcje badania tabel, czy posiadają one parametry, nazwane lub nienazwane (w szczególności numerowane), jak i parametry dowolnego typu.
=== {{lru|Moduły/Parametry/Tom IV}} - Funkcje kopiowania tabel ===
Funkcje pozwalające kopiowanie elementów nazwanych o łańcuchach znakowych kluczy z modyfikacją ich wartości, kopiowane normalne - niedokładne, i rekurencyjne tabel - dokładne, czy kopiowanie bez pewnych kluczy tabeli pierwotnej.
=== {{lru|Moduły/Parametry/Tom V}} - Funkcje istnienia parametrów ===
Funkcje istnienia parametrów, wskazujące, czy istnieją w szablonie pewne elementy wskazane w ramce, tzn.: mogący mieć jeden parametr nazwany liczbą (czyli nienazwany, wskazujący, czy występuje parametr w szablonie o tym numerze) lub ciągiem (nazwany, niebędący liczbą, mówiący, czy o tym kluczu, będący łańcuchem znakowym), czy jakikolwiek normalne wielowartościowe funkcje parametrów, numerowanych i nienazwanych, czy nazwanych, czyli kolejno, czy występują takie jakieś, z któreś podanych elementów o ich wartościach.
=== {{lru|Moduły/Parametry/Tom VI}} - Funkcje manipulowania formatami łańcuchów znakowych ===
Funkcje do manipulowania formatami łańcuchów znakowych, więc to są funkcje modyfikujące łańcuchy znaków, trimujące, jak i usuwające powtarzające się odstępy, w nich, w tym również dolne myślniki, jeżeli tak procedurę ustawiono.
=== {{lru|Moduły/Parametry/Tom VII}} - Funkcje dodawania lub usuwania elementu do tabeli zbioru ===
Funkcje dodawania lub usuwania elementu z tabeli zbioru elementów, tu są procedury dodające elementy do niego, te elementy są ponumerowane. Wartości kluczy tych elementow tam nie są ważne.
=== {{lru|Moduły/Parametry/Tom VIII}} - Funkcje istnienia elementów tabeli ===
Funkcje sprawdzające, czy istnieje taki parametr numerowany lub nienazwany, o pewnej wartości, sprawdza, czy istnieje taki klucz, a nawet, czy w tabeli element pod tych kluczem ma taką wartość.
=== {{lru|Moduły/Parametry/Tom IX}} - Łączenie wielu tabel ===
Funkcje łączenia wielu tabel przeróżnego typu, traktująca elementy nienazwane jako elementy zbioru lub nie, inne jako nowe elementy w nowej tabeli, w zależności od funkcji lub jej ustawień.
=== {{lru|Moduły/Parametry/Tom X}} - Funkcje dodawania lub usuwania elementów z tabeli o takich kluczach ===
Funkcje usuwania elementów z pierwszej tabeli o takich kluczach, które są w nazwach drugiej.
=== {{lru|Moduły/Parametry/Tom XI}} - Tworzenie tabeli ===
Funkcje tworzenia nowej tabeli, bez powtarzających sie kluczy drugiej.
=== {{lru|Moduły/Parametry/Tom XII}} - Funkcje typu ===
Funkcje typu, czyli wskazujące, jakiego typu są podane elementy, obsługiwane rodzaje to: {{Code|table}}, {{Code|function}}, {{Code|string}}, {{Code|boolean}}, {{Code|number}} i {{Code|nil}}.
=== {{lru|Moduły/Parametry/Tom XIII}} - Funkcje prawdy i fałszu ===
Funkcje prawdy i fałszu, czyli procedury sprawdzające, czy podane elementy, czy są puste, czy nie, lub wskazujące, czy składają się z samych znaków odstępów, wtedy są niepuste, względem jednych procedur są uznawane jakby były puste, a względem innych są traktowane jak niepuste, co ogólnie dla wszystkich przypadków, według miary niepustosci, te funkcje zwracają prawdę, a dla tego przeciwnego fałsz.
=== {{lru|Moduły/Parametry/Tom XIV}} - Funkcje parametrów ===
Funkcje parametrów, czyli procedury wydobywające parametry w odpowiedni sposób od szablonu rodzica, a nawet przystosowane jednocześnie, by wydobywały, czasami argumenty z ramki, też są one od wydostawania się wartości o pewnych nazwach z tabel.
=== {{lru|Moduły/Parametry/Tom XV}} - Funkcje wartości logicznej ===
Funkcje wartości logicznej, występujące w logice, tzn.: '''and''', '''or''' i '''not''', przyjmujące wiele lub jedną zmienną.
=== {{lru|Moduły/Parametry/Tom XVI}} - Funkcje porównań ===
Funkcje porównań, czyli procedury wskazujące, czy parametry są w jakiej relacji względem siebie.
=== {{lru|Moduły/Parametry/Tom XVII}} - Ile jest podanych elementów w szablonie według parametrów ramki ===
Ile jest podanych elementów w szablonie według parametrów ramki. Ramka może przyjmować wiele numerowanych elementów, które mogą być kluczami parametrów szablonów, funkcja wskazuję, ile jest podanych takich argumentów w parametrach szablonu.
=== {{lru|Moduły/Parametry/Tom XVIII}} - Metafunkcje i metatabele ===
Metafunkcje i metatabele, czyli funkcje definiujące metatabelki i w nich metafunkcje, czyli takie specjalne tabele i w nich funkcje, które można przyłączać do innych tabel.
=== {{lru|Moduły/Parametry/Tom XIX}} - Iteratory ===
Iteratory, różnego typu, zwracające kolejno elementy w kolejności numerowanej - gdy nazwy są liczbami naturalnymi, ponumerowanymi po kolei, lub alfabetycznie - gdy nazwy są łańcuchami znakowymi. Gdy nazwy są takie i takie, w tabelach, to iteratory ich elementów można wykorzystywać zarówno do tego pierwszego lub drugiego typu.
=== {{lru|Moduły/Parametry/Tom XX}} - Funkcje wartości minimalnej i maksymalnej ===
Funkcje wartości minimalnej i maksymalnej, z dwóch parametrów, a nawet liczb, czy podanych w różnych jednostkach bezwzględny miar w informatyce, w określaniu np. szerokosci.
}}
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
agew8739rnk0cwcn1s7dj1my2ci8ecd
553299
553298
2026-08-27T00:18:35Z
Persino
2851
/* */
553299
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł: {{ld2|Parametry}}, służy do operowania na wszelkiego rodzaju parametrach, modyfikowaniu ich, a nawet podawania normalnych tabelek lub ich z funkcji, jako argument, z tablicy ramki tablicy transportu tego modułu, lub innych funkcji z innych modułów, bądź własnych, które wykorzystują funkcje parametru tego modułu.
Będziemy mówili, że zbiór jest ponumerowany, gdy ma elementy nienazwane od jeden zwyż, bez przerw, do pewnego końca, wtedy jest to sekwencja w języku {{lpg|Lua}}, a jeżeli ona nie jest ponumerowana, to ma tylko elementy nienazwane, czyli wtedy nie jest sekwencją. Zbiór z elementami nienazwanymi (nazwane liczbami naturalnymi) może zawierać czasami elementy nazwane, ktorego nazwy nie są już takie, zwykle je się oznacza łańcuchami znakowymi, a w języku {{lpg|Lua}}, to są po prostu elementy typu: {{Code|string}}, a pozycje nienazwane, czy numerowane, to są oznaczanie liczbami naturalnymi typu: {{Code|number}}.
== Spis treści ==
{{Kolumny|2|2=
=== {{lru|Moduły/Parametry/Tom I}} - Funkcje liczb elementów w tabeli ===
Funkcje liczenia elementów, numerowanych i nienazwanych, także wszystkich, elementów tabeli. Uwzględnione są w tym normalne tabele, jak i tabele parametrów szablonu.
=== {{lru|Moduły/Parametry/Tom II}} - Funkcje minimalnej i maksymalnej wartości w tabeli ===
Funkcje liczenia minimalnej i maksymalnej wartości numeru, czyli wartości numerycznej klucza elementu, w normalnej tabeli i tabeli parametrów szablonów, a funkcje jednoczesnego liczenia jednocześnie tych dwóch wartości, dla tabel nazwanych kluczy, ale te one mają w sobie numerki, ale kolejność w nich, względem nich, takich zmiennych, może mieć w sobie przerwy.
=== {{lru|Moduły/Parametry/Tom III}} - Funkcje, czy są takie parametry ===
Funkcje badania tabel, czy posiadają one parametry, nazwane lub nienazwane (w szczególności numerowane), jak i parametry dowolnego typu.
=== {{lru|Moduły/Parametry/Tom IV}} - Funkcje kopiowania tabel ===
Funkcje pozwalające kopiowanie elementów nazwanych o łańcuchach znakowych kluczy z modyfikacją ich wartości, kopiowane normalne - niedokładne, i rekurencyjne tabel - dokładne, czy kopiowanie bez pewnych kluczy tabeli pierwotnej.
=== {{lru|Moduły/Parametry/Tom V}} - Funkcje istnienia parametrów ===
Funkcje istnienia parametrów, wskazujące, czy istnieją w szablonie pewne elementy wskazane w ramce, tzn.: mogący mieć jeden parametr nazwany liczbą (czyli nienazwany, wskazujący, czy występuje parametr w szablonie o tym numerze) lub ciągiem (nazwany, niebędący liczbą, mówiący, czy o tym kluczu, będący łańcuchem znakowym), czy jakikolwiek normalne wielowartościowe funkcje parametrów, numerowanych i nienazwanych, czy nazwanych, czyli kolejno, czy występują takie jakieś, z któreś podanych elementów o ich wartościach.
=== {{lru|Moduły/Parametry/Tom VI}} - Funkcje manipulowania formatami łańcuchów znakowych ===
Funkcje do manipulowania formatami łańcuchów znakowych, więc to są funkcje modyfikujące łańcuchy znaków, trimujące, jak i usuwające powtarzające się odstępy, w nich, w tym również dolne myślniki, jeżeli tak procedurę ustawiono.
=== {{lru|Moduły/Parametry/Tom VII}} - Funkcje dodawania lub usuwania elementu do tabeli zbioru ===
Funkcje dodawania lub usuwania elementu z tabeli zbioru elementów, tu są procedury dodające elementy do niego, te elementy są ponumerowane. Wartości kluczy tych elementow tam nie są ważne.
=== {{lru|Moduły/Parametry/Tom VIII}} - Funkcje istnienia elementów tabeli ===
Funkcje sprawdzające, czy istnieje taki parametr numerowany lub nienazwany, o pewnej wartości, sprawdza, czy istnieje taki klucz, a nawet, czy w tabeli element pod tych kluczem ma taką wartość.
=== {{lru|Moduły/Parametry/Tom IX}} - Łączenie wielu tabel ===
Funkcje łączenia wielu tabel przeróżnego typu, traktująca elementy nienazwane jako elementy zbioru lub nie, inne jako nowe elementy w nowej tabeli, w zależności od funkcji lub jej ustawień.
=== {{lru|Moduły/Parametry/Tom X}} - Funkcje dodawania lub usuwania elementów z tabeli o takich kluczach ===
Funkcje usuwania elementów z pierwszej tabeli o takich kluczach, które są w nazwach drugiej.
=== {{lru|Moduły/Parametry/Tom XI}} - Tworzenie tabeli ===
Funkcje tworzenia nowej tabeli, bez powtarzających sie kluczy drugiej.
=== {{lru|Moduły/Parametry/Tom XII}} - Funkcje typu ===
Funkcje typu, czyli wskazujące, jakiego typu są podane elementy, obsługiwane rodzaje to: {{Code|table}}, {{Code|function}}, {{Code|string}}, {{Code|boolean}}, {{Code|number}} i {{Code|nil}}.
=== {{lru|Moduły/Parametry/Tom XIII}} - Funkcje prawdy i fałszu ===
Funkcje prawdy i fałszu, czyli procedury sprawdzające, czy podane elementy, czy są puste, czy nie, lub wskazujące, czy składają się z samych znaków odstępów, wtedy są niepuste, względem jednych procedur są uznawane jakby były puste, a względem innych są traktowane jak niepuste, co ogólnie dla wszystkich przypadków, według miary niepustosci, te funkcje zwracają prawdę, a dla tego przeciwnego fałsz.
=== {{lru|Moduły/Parametry/Tom XIV}} - Funkcje parametrów ===
Funkcje parametrów, czyli procedury wydobywające parametry w odpowiedni sposób od szablonu rodzica, a nawet przystosowane jednocześnie, by wydobywały, czasami argumenty z ramki, też są one od wydostawania się wartości o pewnych nazwach z tabel.
=== {{lru|Moduły/Parametry/Tom XV}} - Funkcje wartości logicznej ===
Funkcje wartości logicznej, występujące w logice, tzn.: '''and''', '''or''' i '''not''', przyjmujące wiele lub jedną zmienną.
=== {{lru|Moduły/Parametry/Tom XVI}} - Funkcje porównań ===
Funkcje porównań, czyli procedury wskazujące, czy parametry są w jakiej relacji względem siebie.
=== {{lru|Moduły/Parametry/Tom XVII}} - Ile jest podanych elementów w szablonie według parametrów ramki ===
Ile jest podanych elementów w szablonie według parametrów ramki. Ramka może przyjmować wiele numerowanych elementów, które mogą być kluczami parametrów szablonów, funkcja wskazuję, ile jest podanych takich argumentów w parametrach szablonu.
=== {{lru|Moduły/Parametry/Tom XVIII}} - Metafunkcje i metatabele ===
Metafunkcje i metatabele, czyli funkcje definiujące metatabelki i w nich metafunkcje, czyli takie specjalne tabele i w nich funkcje, które można przyłączać do innych tabel.
=== {{lru|Moduły/Parametry/Tom XIX}} - Iteratory ===
Iteratory, różnego typu, zwracające kolejno elementy w kolejności numerowanej - gdy nazwy są liczbami naturalnymi, ponumerowanymi po kolei, lub alfabetycznie - gdy nazwy są łańcuchami znakowymi. Gdy nazwy są takie i takie, w tabelach, to iteratory ich elementów można wykorzystywać zarówno do tego pierwszego lub drugiego typu.
=== {{lru|Moduły/Parametry/Tom XX}} - Funkcje wartości minimalnej i maksymalnej ===
Funkcje wartości minimalnej i maksymalnej, z dwóch parametrów, a nawet liczb, czy podanych w różnych jednostkach bezwzględny miar w informatyce, w określaniu np. szerokosci.
}}
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
8iovia98mt8umym2y8ciyennbzjf29n
553300
553299
2026-08-27T00:28:29Z
Persino
2851
/* Spis treści */
553300
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł: {{ld2|Parametry}}, służy do operowania na wszelkiego rodzaju parametrach, modyfikowaniu ich, a nawet podawania normalnych tabelek lub ich z funkcji, jako argument, z tablicy ramki tablicy transportu tego modułu, lub innych funkcji z innych modułów, bądź własnych, które wykorzystują funkcje parametru tego modułu.
Będziemy mówili, że zbiór jest ponumerowany, gdy ma elementy nienazwane od jeden zwyż, bez przerw, do pewnego końca, wtedy jest to sekwencja w języku {{lpg|Lua}}, a jeżeli ona nie jest ponumerowana, to ma tylko elementy nienazwane, czyli wtedy nie jest sekwencją. Zbiór z elementami nienazwanymi (nazwane liczbami naturalnymi) może zawierać czasami elementy nazwane, ktorego nazwy nie są już takie, zwykle je się oznacza łańcuchami znakowymi, a w języku {{lpg|Lua}}, to są po prostu elementy typu: {{Code|string}}, a pozycje nienazwane, czy numerowane, to są oznaczanie liczbami naturalnymi typu: {{Code|number}}.
== Spis treści ==
{{Kolumny|2|2=
=== {{lru|Moduły/Parametry/Tom I}} - Funkcje liczb elementów w tabeli ===
Funkcje liczenia elementów, numerowanych i nienazwanych, także wszystkich, elementów tabeli. Uwzględnione są w tym normalne tabele, jak i tabele parametrów szablonu.
=== {{lru|Moduły/Parametry/Tom II}} - Funkcje minimalnej i maksymalnej wartości w tabeli ===
Funkcje liczenia minimalnej i maksymalnej wartości numeru, czyli wartości numerycznej klucza elementu, w normalnej tabeli i tabeli parametrów szablonów, a funkcje jednoczesnego liczenia jednocześnie tych dwóch wartości, dla tabel nazwanych kluczy, ale te one mają w sobie numerki, ale kolejność w nich, względem nich, takich zmiennych, może mieć w sobie przerwy.
=== {{lru|Moduły/Parametry/Tom III}} - Funkcje, czy są takie parametry ===
Funkcje badania tabel, czy posiadają one parametry, nazwane lub nienazwane (w szczególności numerowane), jak i parametry dowolnego typu.
=== {{lru|Moduły/Parametry/Tom IV}} - Funkcje kopiowania tabel ===
Funkcje pozwalające kopiowanie elementów nazwanych o łańcuchach znakowych kluczy z modyfikacją ich wartości, kopiowane normalne - niedokładne, i rekurencyjne tabel - dokładne, czy kopiowanie bez pewnych kluczy tabeli pierwotnej.
=== {{lru|Moduły/Parametry/Tom V}} - Funkcje istnienia parametrów ===
Funkcje istnienia parametrów, wskazujące, czy istnieją w szablonie pewne elementy wskazane w ramce, tzn.: mogący mieć jeden parametr nazwany liczbą (czyli nienazwany, wskazujący, czy występuje parametr w szablonie o tym numerze) lub ciągiem (nazwany, niebędący liczbą, mówiący, czy o tym kluczu, będący łańcuchem znakowym), czy jakikolwiek normalne wielowartościowe funkcje parametrów, numerowanych i nienazwanych, czy nazwanych, czyli kolejno, czy występują takie jakieś, z któreś podanych elementów o ich wartościach.
=== {{lru|Moduły/Parametry/Tom VI}} - Funkcje manipulowania formatami łańcuchów znakowych ===
Funkcje do manipulowania formatami łańcuchów znakowych, więc to są funkcje modyfikujące łańcuchy znaków, trimujące, jak i usuwające powtarzające się odstępy, w nich, w tym również dolne myślniki, jeżeli tak procedurę ustawiono.
=== {{lru|Moduły/Parametry/Tom VII}} - Funkcje dodawania lub usuwania elementu do tabeli zbioru ===
Funkcje dodawania lub usuwania elementu z tabeli zbioru elementów, tu są procedury dodające elementy do niego, te elementy są ponumerowane. Nazwy kluczy tych elementow tam nie są ważne.
=== {{lru|Moduły/Parametry/Tom VIII}} - Funkcje istnienia elementów tabeli ===
Funkcje sprawdzające, czy istnieje taki parametr numerowany lub nienazwany, o pewnej wartości, sprawdza, czy istnieje taki klucz, a nawet, czy w tabeli element pod tych kluczem ma taką wartość.
=== {{lru|Moduły/Parametry/Tom IX}} - Łączenie wielu tabel ===
Funkcje łączenia wielu tabel przeróżnego typu, traktująca elementy nienazwane jako elementy zbioru lub nie, inne jako nowe elementy w nowej tabeli, w zależności od funkcji lub jej ustawień.
=== {{lru|Moduły/Parametry/Tom X}} - Funkcje dodawania lub usuwania elementów z tabeli o takich kluczach ===
Funkcje usuwania elementów z pierwszej tabeli o takich kluczach, które są w nazwach drugiej.
=== {{lru|Moduły/Parametry/Tom XI}} - Tworzenie tabeli ===
Funkcje tworzenia nowej tabeli, bez powtarzających sie kluczy drugiej.
=== {{lru|Moduły/Parametry/Tom XII}} - Funkcje typu ===
Funkcje typu, czyli wskazujące, jakiego typu są podane elementy, obsługiwane rodzaje to: {{Code|table}}, {{Code|function}}, {{Code|string}}, {{Code|boolean}}, {{Code|number}} i {{Code|nil}}.
=== {{lru|Moduły/Parametry/Tom XIII}} - Funkcje prawdy i fałszu ===
Funkcje prawdy i fałszu, czyli procedury sprawdzające, czy podane elementy, czy są puste, czy nie, lub wskazujące, czy składają się z samych znaków odstępów, wtedy są niepuste, względem jednych procedur są uznawane jakby były puste, a względem innych są traktowane jak niepuste, co ogólnie dla wszystkich przypadków, według miary niepustosci, te funkcje zwracają prawdę, a dla tego przeciwnego fałsz.
=== {{lru|Moduły/Parametry/Tom XIV}} - Funkcje parametrów ===
Funkcje parametrów, czyli procedury wydobywające parametry w odpowiedni sposób od szablonu rodzica, a nawet przystosowane jednocześnie, by wydobywały, czasami argumenty z ramki, też są one od wydostawania się wartości o pewnych nazwach z tabel.
=== {{lru|Moduły/Parametry/Tom XV}} - Funkcje wartości logicznej ===
Funkcje wartości logicznej, występujące w logice, tzn.: '''and''', '''or''' i '''not''', przyjmujące wiele lub jedną zmienną.
=== {{lru|Moduły/Parametry/Tom XVI}} - Funkcje porównań ===
Funkcje porównań, czyli procedury wskazujące, czy parametry są w jakiej relacji względem siebie.
=== {{lru|Moduły/Parametry/Tom XVII}} - Ile jest podanych elementów w szablonie według parametrów ramki ===
Ile jest podanych elementów w szablonie według parametrów ramki. Ramka może przyjmować wiele numerowanych elementów, które mogą być kluczami parametrów szablonów, funkcja wskazuję, ile jest podanych takich argumentów w parametrach szablonu.
=== {{lru|Moduły/Parametry/Tom XVIII}} - Metafunkcje i metatabele ===
Metafunkcje i metatabele, czyli funkcje definiujące metatabelki i w nich metafunkcje, czyli takie specjalne tabele i w nich funkcje, które można przyłączać do innych tabel.
=== {{lru|Moduły/Parametry/Tom XIX}} - Iteratory ===
Iteratory, różnego typu, zwracające kolejno elementy w kolejności numerowanej - gdy nazwy są liczbami naturalnymi, ponumerowanymi po kolei, lub alfabetycznie - gdy nazwy są łańcuchami znakowymi. Gdy nazwy są takie i takie, w tabelach, to iteratory ich elementów można wykorzystywać zarówno do tego pierwszego lub drugiego typu.
=== {{lru|Moduły/Parametry/Tom XX}} - Funkcje wartości minimalnej i maksymalnej ===
Funkcje wartości minimalnej i maksymalnej, z dwóch parametrów, a nawet liczb, czy podanych w różnych jednostkach bezwzględny miar w informatyce, w określaniu np. szerokosci.
}}
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
jlp7m0a7tg2asg5uzp9kyyn71znvmf1
553301
553300
2026-08-27T00:29:21Z
Persino
2851
/* Spis treści */
553301
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł: {{ld2|Parametry}}, służy do operowania na wszelkiego rodzaju parametrach, modyfikowaniu ich, a nawet podawania normalnych tabelek lub ich z funkcji, jako argument, z tablicy ramki tablicy transportu tego modułu, lub innych funkcji z innych modułów, bądź własnych, które wykorzystują funkcje parametru tego modułu.
Będziemy mówili, że zbiór jest ponumerowany, gdy ma elementy nienazwane od jeden zwyż, bez przerw, do pewnego końca, wtedy jest to sekwencja w języku {{lpg|Lua}}, a jeżeli ona nie jest ponumerowana, to ma tylko elementy nienazwane, czyli wtedy nie jest sekwencją. Zbiór z elementami nienazwanymi (nazwane liczbami naturalnymi) może zawierać czasami elementy nazwane, ktorego nazwy nie są już takie, zwykle je się oznacza łańcuchami znakowymi, a w języku {{lpg|Lua}}, to są po prostu elementy typu: {{Code|string}}, a pozycje nienazwane, czy numerowane, to są oznaczanie liczbami naturalnymi typu: {{Code|number}}.
== Spis treści ==
{{Kolumny|2|2=
=== {{lru|Moduły/Parametry/Tom I}} - Funkcje liczb elementów w tabeli ===
Funkcje liczenia elementów, numerowanych i nienazwanych, także wszystkich, elementów tabeli. Uwzględnione są w tym normalne tabele, jak i tabele parametrów szablonu.
=== {{lru|Moduły/Parametry/Tom II}} - Funkcje minimalnej i maksymalnej wartości w tabeli ===
Funkcje liczenia minimalnej i maksymalnej wartości numeru, czyli wartości numerycznej klucza elementu, w normalnej tabeli i tabeli parametrów szablonów, a funkcje jednoczesnego liczenia jednocześnie tych dwóch wartości, dla tabel nazwanych kluczy, ale te one mają w sobie numerki, ale kolejność w nich, względem nich, takich zmiennych, może mieć w sobie przerwy.
=== {{lru|Moduły/Parametry/Tom III}} - Funkcje, czy są takie parametry ===
Funkcje badania tabel, czy posiadają one parametry, nazwane lub nienazwane (w szczególności numerowane), jak i parametry dowolnego typu.
=== {{lru|Moduły/Parametry/Tom IV}} - Funkcje kopiowania tabel ===
Funkcje pozwalające kopiowanie elementów nazwanych o łańcuchach znakowych kluczy z modyfikacją ich wartości, kopiowane normalne - niedokładne, i rekurencyjne tabel - dokładne, czy kopiowanie bez pewnych kluczy tabeli pierwotnej.
=== {{lru|Moduły/Parametry/Tom V}} - Funkcje istnienia parametrów ===
Funkcje istnienia parametrów, wskazujące, czy istnieją w szablonie pewne elementy wskazane w ramce, tzn.: mogący mieć jeden parametr nazwany liczbą (czyli nienazwany, wskazujący, czy występuje parametr w szablonie o tym numerze) lub ciągiem (nazwany, niebędący liczbą, mówiący, czy o tym kluczu, będący łańcuchem znakowym), czy jakikolwiek normalne wielowartościowe funkcje parametrów, numerowanych i nienazwanych, czy nazwanych, czyli kolejno, czy występują takie jakieś, z któreś podanych elementów o ich wartościach.
=== {{lru|Moduły/Parametry/Tom VI}} - Funkcje manipulowania formatami łańcuchów znakowych ===
Funkcje do manipulowania formatami łańcuchów znakowych, więc to są funkcje modyfikujące łańcuchy znaków, trimujące, jak i usuwające powtarzające się odstępy, w nich, w tym również dolne myślniki, jeżeli tak procedurę ustawiono.
=== {{lru|Moduły/Parametry/Tom VII}} - Funkcje dodawania lub usuwania elementu do tabeli zbioru ===
Funkcje dodawania lub usuwania elementu z tabeli zbioru elementów, tu są procedury dodające elementy do niego, te elementy są ponumerowane. Nazwy kluczy tych elementów tam nie są ważne.
=== {{lru|Moduły/Parametry/Tom VIII}} - Funkcje istnienia elementów tabeli ===
Funkcje sprawdzające, czy istnieje taki parametr numerowany lub nienazwany, o pewnej wartości, sprawdza, czy istnieje taki klucz, a nawet, czy w tabeli element pod tych kluczem ma taką wartość.
=== {{lru|Moduły/Parametry/Tom IX}} - Łączenie wielu tabel ===
Funkcje łączenia wielu tabel przeróżnego typu, traktująca elementy nienazwane jako elementy zbioru lub nie, inne jako nowe elementy w nowej tabeli, w zależności od funkcji lub jej ustawień.
=== {{lru|Moduły/Parametry/Tom X}} - Funkcje dodawania lub usuwania elementów z tabeli o takich kluczach ===
Funkcje usuwania elementów z pierwszej tabeli o takich kluczach, które są w nazwach drugiej.
=== {{lru|Moduły/Parametry/Tom XI}} - Tworzenie tabeli ===
Funkcje tworzenia nowej tabeli, bez powtarzających sie kluczy drugiej.
=== {{lru|Moduły/Parametry/Tom XII}} - Funkcje typu ===
Funkcje typu, czyli wskazujące, jakiego typu są podane elementy, obsługiwane rodzaje to: {{Code|table}}, {{Code|function}}, {{Code|string}}, {{Code|boolean}}, {{Code|number}} i {{Code|nil}}.
=== {{lru|Moduły/Parametry/Tom XIII}} - Funkcje prawdy i fałszu ===
Funkcje prawdy i fałszu, czyli procedury sprawdzające, czy podane elementy, czy są puste, czy nie, lub wskazujące, czy składają się z samych znaków odstępów, wtedy są niepuste, względem jednych procedur są uznawane jakby były puste, a względem innych są traktowane jak niepuste, co ogólnie dla wszystkich przypadków, według miary niepustosci, te funkcje zwracają prawdę, a dla tego przeciwnego fałsz.
=== {{lru|Moduły/Parametry/Tom XIV}} - Funkcje parametrów ===
Funkcje parametrów, czyli procedury wydobywające parametry w odpowiedni sposób od szablonu rodzica, a nawet przystosowane jednocześnie, by wydobywały, czasami argumenty z ramki, też są one od wydostawania się wartości o pewnych nazwach z tabel.
=== {{lru|Moduły/Parametry/Tom XV}} - Funkcje wartości logicznej ===
Funkcje wartości logicznej, występujące w logice, tzn.: '''and''', '''or''' i '''not''', przyjmujące wiele lub jedną zmienną.
=== {{lru|Moduły/Parametry/Tom XVI}} - Funkcje porównań ===
Funkcje porównań, czyli procedury wskazujące, czy parametry są w jakiej relacji względem siebie.
=== {{lru|Moduły/Parametry/Tom XVII}} - Ile jest podanych elementów w szablonie według parametrów ramki ===
Ile jest podanych elementów w szablonie według parametrów ramki. Ramka może przyjmować wiele numerowanych elementów, które mogą być kluczami parametrów szablonów, funkcja wskazuję, ile jest podanych takich argumentów w parametrach szablonu.
=== {{lru|Moduły/Parametry/Tom XVIII}} - Metafunkcje i metatabele ===
Metafunkcje i metatabele, czyli funkcje definiujące metatabelki i w nich metafunkcje, czyli takie specjalne tabele i w nich funkcje, które można przyłączać do innych tabel.
=== {{lru|Moduły/Parametry/Tom XIX}} - Iteratory ===
Iteratory, różnego typu, zwracające kolejno elementy w kolejności numerowanej - gdy nazwy są liczbami naturalnymi, ponumerowanymi po kolei, lub alfabetycznie - gdy nazwy są łańcuchami znakowymi. Gdy nazwy są takie i takie, w tabelach, to iteratory ich elementów można wykorzystywać zarówno do tego pierwszego lub drugiego typu.
=== {{lru|Moduły/Parametry/Tom XX}} - Funkcje wartości minimalnej i maksymalnej ===
Funkcje wartości minimalnej i maksymalnej, z dwóch parametrów, a nawet liczb, czy podanych w różnych jednostkach bezwzględny miar w informatyce, w określaniu np. szerokosci.
}}
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
sbb8rkfg6on3z40bdcxxhw4bdj1fzyk
Wikibooks:Moduły/StronicowyParser
4
63511
553284
552802
2026-08-26T18:55:00Z
Persino
2851
/* Spis treści */
553284
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Funkcje stronicowego parsera służące do analizu uchwytów i ich numerowania, do przydzielenia uchwytom, pewnych rozdziałów, czy nawet pobieranie, za pomocą uchwytów. Też służy do ładowania spisów treści przy pomocy jego funkcji.
== Spis treści ==
* {{lr|Moduły/StronicowyParser/Moduł główny|StronicowyParser}} - procedur stronicowego parsera do numeracji obiektów i odniesień do nich, także operowanie na tak zebranych danych, uruchamiane w stronicowych szablonach, które są zawarte w podkategoriach: {{lk2|Szablony stronicowe}},
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy}}{{r|Spis treści}} {{Patrz|AnalizaSpisuRzeczy}} - funkcje do wydzielania z wikikodu strony rozdziału danego spisu jego głównej części, ktorym jest właściwy spis treści strony, tym spisem treści nie muszą być rozdziały i artykuły w rozdziale: '''Spis treści''', czy: '''SPIS RZECZY''', wraz z tym nim, te rozdziały spisu mogą być różnie znormowane,
* {{lru|Moduły/StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}} - zawiera funkcje do analizy spisów i całej strony z drugiej strony, jak i tworzenia tablicy nagłówków, z ich identyfikatorami '''id''',
* {{lru|Moduły/StronicowyParser/Kategorie}} - zwraca kategorie, tylko raz przetworzone i policzone, zgłaszane przez {{Code|{{m|StronicowyParser|WstawKategorie}}}},
* {{lru|Moduły/StronicowyParser/NumerLubNazwaArtykułówKsiążek}} - funkcje pobierania, na podstawie nazwy nagłówka lub artykułu książki, zależnie od ustawień, jego numeru, lub odwrotnie,
* {{lru|Moduły/StronicowyParser/NumerLubNazwaNagłówkówKsiążek}} - funkcje pobierania, na podstawie nazwy nagłówka, jego numeru, lub odwrotnie,
* {{lru|Moduły/StronicowyParser/NumerObiektu}} - funkcje numerowania uchwytów, przypisywanie uchwytom linków do nagłówków lub uchwytom zawartości tekstów,
* {{lru|Moduły/StronicowyParser/NumeracjaObiektówStron}} - funkcja odpowiednio ustawia dane, jaka jest numeracja, jeśli w ogóle istnieje, danego typu obiektu, sprawdza, czy uchwyt obiektu się powtarza, przy numeracji uwzględniany jest numer artykułu.
* {{lru|Moduły/StronicowyParser/Potrzebne}} -
* {{lru|Moduły/StronicowyParser/Pomocne}} -
* {{lru|Moduły/StronicowyParser/Problemy}} - funkcje sprawdzania, czy jest taki, i dodawania, problemów do tablicy,
* {{lru|Moduły/StronicowyParser/Rozdziały}}{{r|Spis treści}} - funkcje, do przygotowania tekstów spisów treści, do dalszej obróbki przez funkcje z: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}, funkcje stąd korzystają z funkcji modułu: {{LinkPatrz|AnalizaSpisuRzeczy}}, do wydzielenia z całego spisu jego fragmentu, aby dało się go łatwo podzielić na nagłówki, z ich parametrami, i ich teksty rozdziałów, robione jest to poprzez funkcję główna z: {{LinkPatrz|ZbieranieDanychStron}},
* {{lru|Moduły/StronicowyParser/SpisTreści}}{{r|Spis treści}} - spis treści dla jego podmodułów,
* {{lru|Moduły/StronicowyParser/StronaSubst}} - strona, a w niej funkcje, do sprawdzania, czy dana podana strona jest stroną zbiorczą, ładuje kod strony zbiorczej dla szablonów {{s|StronaSubst}} i {{s|KsiążkaSubst}}, także przygotowuje wpisy do spisu treści {{s|Spis treści}} ({{s|Spis treści zwinięty}}), czy {{s|TOC}}, a nawet {{s|TOC limit}}
* {{lru|Moduły/StronicowyParser/Tekst}} - są to funkcje do ładowania tekstu stron, nawet jego w sposób rekurencyjny,
* {{lru|Moduły/StronicowyParser/ZbieranieDanychStron}}{{r|Spis treści}} {{Patrz|ZbieranieDanychStron}} - moduł do zbierania informacji o aktualnej stronie, nie spisie treści, co do uchwytów pewnych obiektów i dalszych informacji o nich,
* {{lru|Moduły/StronicowyParser/SzablonyTekstu}} - funkcje aktualizowania informacji specjalne dla szablonów {{s|PobierzŚródtekst}} na podstawie informacji w szablonach {{s|Śródtekst}} w tym samym lub na innej stronie artykułu książki, czy na innej stronie nieartykularnej (książkowej),
* {{lru|Moduły/StronicowyParser/informacje}} - moduł ładujący informacje o danej stronie, dołączony raz na całą nią,
* {{lru|Moduły/StronicowyParser/obiekty}} - zestaw stałych tablicowych ładowanych raz na całą stronę.
{{Przypisy
|{{o|n=Spis treści|o=Opisy modułów posiadające, na ich podstronach, swój spis treści.}}
}}
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
lyijn396m140l6vrj7z6ddvezdoxfj3
553285
553284
2026-08-26T18:59:47Z
Persino
2851
/* Spis treści */
553285
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Funkcje stronicowego parsera służące do analizu uchwytów i ich numerowania, do przydzielenia uchwytom, pewnych rozdziałów, czy nawet pobieranie, za pomocą uchwytów. Też służy do ładowania spisów treści przy pomocy jego funkcji.
== Spis treści ==
* {{lr|Moduły/StronicowyParser/Moduł główny|StronicowyParser}} - procedur stronicowego parsera do numeracji obiektów i odniesień do nich, także operowanie na tak zebranych danych, uruchamiane w stronicowych szablonach, które są zawarte w podkategoriach: {{lk2|Szablony stronicowe}},
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy}}{{r|Spis treści}} {{Patrz|AnalizaSpisuRzeczy}} - funkcje do wydzielania z wikikodu strony rozdziału danego spisu jego głównej części, ktorym jest właściwy spis treści strony, tym spisem treści nie muszą być rozdziały i artykuły w rozdziale: '''Spis treści''', czy: '''SPIS RZECZY''', wraz z tym nim, te rozdziały spisu mogą być różnie znormowane,
* {{lru|Moduły/StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}} - zawiera funkcje do analizy spisów i całej strony z drugiej strony, jak i tworzenia tablicy nagłówków, z ich identyfikatorami '''id''',
* {{lru|Moduły/StronicowyParser/Kategorie}} - zwraca kategorie, tylko raz przetworzone i policzone, zgłaszane przez {{Code|{{m|StronicowyParser|WstawKategorie}}}},
* {{lru|Moduły/StronicowyParser/NumerLubNazwaArtykułówKsiążek}} - funkcje pobierania, na podstawie nazwy nagłówka lub artykułu książki, zależnie od ustawień, jego numeru, lub odwrotnie,
* {{lru|Moduły/StronicowyParser/NumerLubNazwaNagłówkówKsiążek}} - funkcje pobierania, na podstawie nazwy nagłówka, jego numeru, lub odwrotnie,
* {{lru|Moduły/StronicowyParser/NumerObiektu}} - funkcje numerowania uchwytów, przypisywanie uchwytom linków do nagłówków lub uchwytom zawartości tekstów,
* {{lru|Moduły/StronicowyParser/NumeracjaObiektówStron}} - funkcja odpowiednio ustawia dane, jaka jest numeracja, jeśli w ogóle istnieje, danego typu obiektu, sprawdza, czy uchwyt obiektu się powtarza, przy numeracji uwzględniany jest numer artykułu.
* {{lru|Moduły/StronicowyParser/Potrzebne}} -
* {{lru|Moduły/StronicowyParser/Pomocne}} -
* {{lru|Moduły/StronicowyParser/Problemy}} - funkcje sprawdzania, czy jest taki, i dodawania, problemów do tablicy,
* {{lru|Moduły/StronicowyParser/Rozdziały}}{{r|Spis treści}} - funkcje, do przygotowania tekstów spisów treści, do dalszej obróbki przez funkcje z: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}, funkcje stąd korzystają z funkcji modułu: {{LinkPatrz|AnalizaSpisuRzeczy}}, do wydzielenia z całego spisu jego fragmentu, aby dało się go łatwo podzielić na nagłówki, z ich parametrami, i ich teksty rozdziałów, robione jest to poprzez funkcję główna z: {{LinkPatrz|ZbieranieDanychStron}},
* {{lru|Moduły/StronicowyParser/SpisTreści}}{{r|Spis treści}} - spis treści dla jego podmodułów,
* {{lru|Moduły/StronicowyParser/StronaSubst}} - strona, a w niej funkcje, do sprawdzania, czy dana podana strona jest stroną zbiorczą, ładuje kod strony zbiorczej dla szablonów {{s|StronaSubst}} i {{s|KsiążkaSubst}}, także przygotowuje wpisy do spisu treści {{s|Spis treści}} ({{s|Spis treści zwinięty}}), czy {{s|TOC}}, a nawet {{s|TOC limit}}
* {{lru|Moduły/StronicowyParser/Tekst}} - są to funkcje do ładowania tekstu stron, nawet jego w sposób rekurencyjny,
* {{lru|Moduły/StronicowyParser/ZbieranieDanychStron}}{{r|Spis treści}} {{Patrz|ZbieranieDanychStron}} - moduł do zbierania informacji o aktualnej stronie, nie spisie treści, co do uchwytów pewnych obiektów i dalszych informacji o nich,
* {{lru|Moduły/StronicowyParser/SzablonyTekstu}} - funkcje aktualizowania informacji specjalne dla szablonów {{s|PobierzŚródtekst}} na podstawie informacji w szablonach {{s|Śródtekst}} w tym samym lub na innej stronie artykułu książki, czy na innej stronie nieartykularnej (książkowej),
* {{lru|Moduły/StronicowyParser/informacje}} - moduł ładujący informacje o danej stronie, dołączony raz na całą nią,
* {{lru|Moduły/StronicowyParser/obiekty}} - zestaw stałych tablicowych ładowanych raz na całą stronę.
{{Przypisy
|{{o|n=Spis treści|o=Opisy, modułów mechanizmu '''MediaWiki''' w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, posiadające, na ich podstronach, swój spis treści.}}
}}
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
jiwjijys5o3k5w9koiasga2c9n0lfmf
553287
553285
2026-08-26T19:03:27Z
Persino
2851
/* Spis treści */
553287
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Funkcje stronicowego parsera służące do analizu uchwytów i ich numerowania, do przydzielenia uchwytom, pewnych rozdziałów, czy nawet pobieranie, za pomocą uchwytów. Też służy do ładowania spisów treści przy pomocy jego funkcji.
== Spis treści ==
* {{lr|Moduły/StronicowyParser/Moduł główny|StronicowyParser}} - procedur stronicowego parsera do numeracji obiektów i odniesień do nich, także operowanie na tak zebranych danych, uruchamiane w stronicowych szablonach, które są zawarte w podkategoriach: {{lk2|Szablony stronicowe}},
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy}}{{r|Spis treści}} {{Patrz|AnalizaSpisuRzeczy}} - funkcje do wydzielania z wikikodu strony rozdziału danego spisu jego głównej części, ktorym jest właściwy spis treści strony, tym spisem treści nie muszą być rozdziały i artykuły w rozdziale: '''Spis treści''', czy: '''SPIS RZECZY''', wraz z tym nim, te rozdziały spisu mogą być różnie znormowane,
* {{lru|Moduły/StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}} - zawiera funkcje do analizy spisów i całej strony z drugiej strony, jak i tworzenia tablicy nagłówków, z ich identyfikatorami '''id''',
* {{lru|Moduły/StronicowyParser/Kategorie}} - zwraca kategorie, tylko raz przetworzone i policzone, zgłaszane przez {{Code|{{m|StronicowyParser|WstawKategorie}}}},
* {{lru|Moduły/StronicowyParser/NumerLubNazwaArtykułówKsiążek}} - funkcje pobierania, na podstawie nazwy nagłówka lub artykułu książki, zależnie od ustawień, jego numeru, lub odwrotnie,
* {{lru|Moduły/StronicowyParser/NumerLubNazwaNagłówkówKsiążek}} - funkcje pobierania, na podstawie nazwy nagłówka, jego numeru, lub odwrotnie,
* {{lru|Moduły/StronicowyParser/NumerObiektu}} - funkcje numerowania uchwytów, przypisywanie uchwytom linków do nagłówków lub uchwytom zawartości tekstów,
* {{lru|Moduły/StronicowyParser/NumeracjaObiektówStron}} - funkcja odpowiednio ustawia dane, jaka jest numeracja, jeśli w ogóle istnieje, danego typu obiektu, sprawdza, czy uchwyt obiektu się powtarza, przy numeracji uwzględniany jest numer artykułu.
* {{lru|Moduły/StronicowyParser/Potrzebne}} -
* {{lru|Moduły/StronicowyParser/Pomocne}} -
* {{lru|Moduły/StronicowyParser/Problemy}} - funkcje sprawdzania, czy jest taki, i dodawania, problemów do tablicy,
* {{lru|Moduły/StronicowyParser/Rozdziały}}{{r|Spis treści}} - funkcje, do przygotowania tekstów spisów treści, do dalszej obróbki przez funkcje z: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}, funkcje stąd korzystają z funkcji modułu: {{LinkPatrz|AnalizaSpisuRzeczy}}, do wydzielenia z całego spisu jego fragmentu, aby dało się go łatwo podzielić na nagłówki, z ich parametrami, i ich teksty rozdziałów, robione jest to poprzez funkcję główna z: {{LinkPatrz|ZbieranieDanychStron}},
* {{lru|Moduły/StronicowyParser/SpisTreści}}{{r|Spis treści}} - spis treści dla jego podmodułów,
* {{lru|Moduły/StronicowyParser/StronaSubst}} - strona, a w niej funkcje, do sprawdzania, czy dana podana strona jest stroną zbiorczą, ładuje kod strony zbiorczej dla szablonów {{s|StronaSubst}} i {{s|KsiążkaSubst}}, także przygotowuje wpisy do spisu treści {{s|Spis treści}} ({{s|Spis treści zwinięty}}), czy {{s|TOC}}, a nawet {{s|TOC limit}}
* {{lru|Moduły/StronicowyParser/Tekst}} - są to funkcje do ładowania tekstu stron, nawet jego w sposób rekurencyjny,
* {{lru|Moduły/StronicowyParser/ZbieranieDanychStron}}{{r|Spis treści}} {{Patrz|ZbieranieDanychStron}} - moduł do zbierania informacji o aktualnej stronie, nie spisie treści, co do uchwytów pewnych obiektów i dalszych informacji o nich,
* {{lru|Moduły/StronicowyParser/SzablonyTekstu}} - funkcje aktualizowania informacji specjalne dla szablonów {{s|PobierzŚródtekst}} na podstawie informacji w szablonach {{s|Śródtekst}} w tym samym lub na innej stronie artykułu książki, czy na innej stronie nieartykularnej (książkowej),
* {{lru|Moduły/StronicowyParser/informacje}} - moduł ładujący informacje o danej stronie, dołączony raz na całą nią,
* {{lru|Moduły/StronicowyParser/obiekty}} - zestaw stałych tablicowych ładowanych raz na całą stronę.
{{Przypisy
|{{o|n=Spis treści|o=Opisy modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}} mechanizmu '''MediaWiki''' posiadające na ich podstronach swój spis treści.}}
}}
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
69dp1qozras3cujffildryhra4yinzn
553288
553287
2026-08-26T19:11:09Z
Persino
2851
/* Spis treści */
553288
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Funkcje stronicowego parsera służące do analizu uchwytów i ich numerowania, do przydzielenia uchwytom, pewnych rozdziałów, czy nawet pobieranie, za pomocą uchwytów. Też służy do ładowania spisów treści przy pomocy jego funkcji.
== Spis treści ==
* {{lr|Moduły/StronicowyParser/Moduł główny|StronicowyParser}} - procedur stronicowego parsera do numeracji obiektów i odniesień do nich, także operowanie na tak zebranych danych, uruchamiane w stronicowych szablonach, które są zawarte w podkategoriach: {{lk2|Szablony stronicowe}},
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy}}{{r|Spis treści}} {{Patrz|AnalizaSpisuRzeczy}} - funkcje do wydzielania z wikikodu strony rozdziału danego spisu jego głównej części, ktorym jest właściwy spis treści strony, tym spisem treści nie muszą być rozdziały i artykuły w rozdziale: '''Spis treści''', czy: '''SPIS RZECZY''', wraz z tym nim, te rozdziały spisu mogą być różnie znormowane,
* {{lru|Moduły/StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}} - zawiera funkcje do analizy spisów i całej strony z drugiej strony, jak i tworzenia tablicy nagłówków, z ich identyfikatorami '''id''',
* {{lru|Moduły/StronicowyParser/Kategorie}} - zwraca kategorie, tylko raz przetworzone i policzone, zgłaszane przez {{Code|{{m|StronicowyParser|WstawKategorie}}}},
* {{lru|Moduły/StronicowyParser/NumerLubNazwaArtykułówKsiążek}} - funkcje pobierania, na podstawie nazwy nagłówka lub artykułu książki, zależnie od ustawień, jego numeru, lub odwrotnie,
* {{lru|Moduły/StronicowyParser/NumerLubNazwaNagłówkówKsiążek}} - funkcje pobierania, na podstawie nazwy nagłówka, jego numeru, lub odwrotnie,
* {{lru|Moduły/StronicowyParser/NumerObiektu}} - funkcje numerowania uchwytów, przypisywanie uchwytom linków do nagłówków lub uchwytom zawartości tekstów,
* {{lru|Moduły/StronicowyParser/NumeracjaObiektówStron}} - funkcja odpowiednio ustawia dane, jaka jest numeracja, jeśli w ogóle istnieje, danego typu obiektu, sprawdza, czy uchwyt obiektu się powtarza, przy numeracji uwzględniany jest numer artykułu.
* {{lru|Moduły/StronicowyParser/Potrzebne}} -
* {{lru|Moduły/StronicowyParser/Pomocne}} -
* {{lru|Moduły/StronicowyParser/Problemy}} - funkcje sprawdzania, czy jest taki, i dodawania, problemów do tablicy,
* {{lru|Moduły/StronicowyParser/Rozdziały}}{{r|Spis treści}} - funkcje, do przygotowania tekstów spisów treści, do dalszej obróbki przez funkcje z: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}, funkcje stąd korzystają z funkcji modułu: {{LinkPatrz|AnalizaSpisuRzeczy}}, do wydzielenia z całego spisu jego fragmentu, aby dało się go łatwo podzielić na nagłówki, z ich parametrami, i ich teksty rozdziałów, robione jest to poprzez funkcję główna z: {{LinkPatrz|ZbieranieDanychStron}},
* {{lru|Moduły/StronicowyParser/SpisTreści}}{{r|Spis treści}} - spis treści dla jego podmodułów,
* {{lru|Moduły/StronicowyParser/StronaSubst}} - strona, a w niej funkcje, do sprawdzania, czy dana podana strona jest stroną zbiorczą, ładuje kod strony zbiorczej dla szablonów {{s|StronaSubst}} i {{s|KsiążkaSubst}}, także przygotowuje wpisy do spisu treści {{s|Spis treści}} ({{s|Spis treści zwinięty}}), czy {{s|TOC}}, a nawet {{s|TOC limit}}
* {{lru|Moduły/StronicowyParser/Tekst}} - są to funkcje do ładowania tekstu stron, nawet jego w sposób rekurencyjny,
* {{lru|Moduły/StronicowyParser/ZbieranieDanychStron}}{{r|Spis treści}} {{Patrz|ZbieranieDanychStron}} - moduł do zbierania informacji o aktualnej stronie, nie spisie treści, co do uchwytów pewnych obiektów i dalszych informacji o nich,
* {{lru|Moduły/StronicowyParser/SzablonyTekstu}} - funkcje aktualizowania informacji specjalne dla szablonów {{s|PobierzŚródtekst}} na podstawie informacji w szablonach {{s|Śródtekst}} w tym samym lub na innej stronie artykułu książki, czy na innej stronie nieartykularnej (książkowej),
* {{lru|Moduły/StronicowyParser/informacje}} - moduł ładujący informacje o danej stronie, dołączony raz na całą nią,
* {{lru|Moduły/StronicowyParser/obiekty}} - zestaw stałych tablicowych ładowanych raz na całą stronę.
{{Przypisy
|{{o|n=Spis treści|o=Opisy modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}} mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' posiadające na ich podstronach swój spis treści.}}
}}
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
9wqdf0ndeqv2hwk8gvk0xuxy219yq5q
553290
553288
2026-08-26T19:13:23Z
Persino
2851
/* Spis treści */
553290
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Funkcje stronicowego parsera służące do analizu uchwytów i ich numerowania, do przydzielenia uchwytom, pewnych rozdziałów, czy nawet pobieranie, za pomocą uchwytów. Też służy do ładowania spisów treści przy pomocy jego funkcji.
== Spis treści ==
* {{lr|Moduły/StronicowyParser/Moduł główny|StronicowyParser}} - procedur stronicowego parsera do numeracji obiektów i odniesień do nich, także operowanie na tak zebranych danych, uruchamiane w stronicowych szablonach, które są zawarte w podkategoriach: {{lk2|Szablony stronicowe}},
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy}}{{r|Spis treści}} {{Patrz|AnalizaSpisuRzeczy}} - funkcje do wydzielania z wikikodu strony rozdziału danego spisu jego głównej części, ktorym jest właściwy spis treści strony, tym spisem treści nie muszą być rozdziały i artykuły w rozdziale: '''Spis treści''', czy: '''SPIS RZECZY''', wraz z tym nim, te rozdziały spisu mogą być różnie znormowane,
* {{lru|Moduły/StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}} - zawiera funkcje do analizy spisów i całej strony z drugiej strony, jak i tworzenia tablicy nagłówków, z ich identyfikatorami '''id''',
* {{lru|Moduły/StronicowyParser/Kategorie}} - zwraca kategorie, tylko raz przetworzone i policzone, zgłaszane przez {{Code|{{m|StronicowyParser|WstawKategorie}}}},
* {{lru|Moduły/StronicowyParser/NumerLubNazwaArtykułówKsiążek}} - funkcje pobierania, na podstawie nazwy nagłówka lub artykułu książki, zależnie od ustawień, jego numeru, lub odwrotnie,
* {{lru|Moduły/StronicowyParser/NumerLubNazwaNagłówkówKsiążek}} - funkcje pobierania, na podstawie nazwy nagłówka, jego numeru, lub odwrotnie,
* {{lru|Moduły/StronicowyParser/NumerObiektu}} - funkcje numerowania uchwytów, przypisywanie uchwytom linków do nagłówków lub uchwytom zawartości tekstów,
* {{lru|Moduły/StronicowyParser/NumeracjaObiektówStron}} - funkcja odpowiednio ustawia dane, jaka jest numeracja, jeśli w ogóle istnieje, danego typu obiektu, sprawdza, czy uchwyt obiektu się powtarza, przy numeracji uwzględniany jest numer artykułu.
* {{lru|Moduły/StronicowyParser/Potrzebne}} -
* {{lru|Moduły/StronicowyParser/Pomocne}} -
* {{lru|Moduły/StronicowyParser/Problemy}} - funkcje sprawdzania, czy jest taki, i dodawania, problemów do tablicy,
* {{lru|Moduły/StronicowyParser/Rozdziały}}{{r|Spis treści}} - funkcje, do przygotowania tekstów spisów treści, do dalszej obróbki przez funkcje z: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}, funkcje stąd korzystają z funkcji modułu: {{LinkPatrz|AnalizaSpisuRzeczy}}, do wydzielenia z całego spisu jego fragmentu, aby dało się go łatwo podzielić na nagłówki, z ich parametrami, i ich teksty rozdziałów, robione jest to poprzez funkcję główna z: {{LinkPatrz|ZbieranieDanychStron}},
* {{lru|Moduły/StronicowyParser/SpisTreści}}{{r|Spis treści}} - spis treści dla jego podmodułów,
* {{lru|Moduły/StronicowyParser/StronaSubst}} - strona, a w niej funkcje, do sprawdzania, czy dana podana strona jest stroną zbiorczą, ładuje kod strony zbiorczej dla szablonów {{s|StronaSubst}} i {{s|KsiążkaSubst}}, także przygotowuje wpisy do spisu treści {{s|Spis treści}} ({{s|Spis treści zwinięty}}), czy {{s|TOC}}, a nawet {{s|TOC limit}}
* {{lru|Moduły/StronicowyParser/Tekst}} - są to funkcje do ładowania tekstu stron, nawet jego w sposób rekurencyjny,
* {{lru|Moduły/StronicowyParser/ZbieranieDanychStron}}{{r|Spis treści}} {{Patrz|ZbieranieDanychStron}} - moduł do zbierania informacji o aktualnej stronie, nie spisie treści, co do uchwytów pewnych obiektów i dalszych informacji o nich,
* {{lru|Moduły/StronicowyParser/SzablonyTekstu}} - funkcje aktualizowania informacji specjalne dla szablonów {{s|PobierzŚródtekst}} na podstawie informacji w szablonach {{s|Śródtekst}} w tym samym lub na innej stronie artykułu książki, czy na innej stronie nieartykularnej (książkowej),
* {{lru|Moduły/StronicowyParser/informacje}} - moduł ładujący informacje o danej stronie, dołączony raz na całą nią,
* {{lru|Moduły/StronicowyParser/obiekty}} - zestaw stałych tablicowych ładowanych raz na całą stronę.
== Przypisy ==
{{Przypisy
|{{o|n=Spis treści|o=Opisy modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}} mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' posiadające na ich podstronach swój spis treści.}}
}}
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
e61uqqcpdxaid32z9cykw18fpmq0f84
553292
553290
2026-08-26T19:15:57Z
Persino
2851
/* Przypisy */
553292
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Funkcje stronicowego parsera służące do analizu uchwytów i ich numerowania, do przydzielenia uchwytom, pewnych rozdziałów, czy nawet pobieranie, za pomocą uchwytów. Też służy do ładowania spisów treści przy pomocy jego funkcji.
== Spis treści ==
* {{lr|Moduły/StronicowyParser/Moduł główny|StronicowyParser}} - procedur stronicowego parsera do numeracji obiektów i odniesień do nich, także operowanie na tak zebranych danych, uruchamiane w stronicowych szablonach, które są zawarte w podkategoriach: {{lk2|Szablony stronicowe}},
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy}}{{r|Spis treści}} {{Patrz|AnalizaSpisuRzeczy}} - funkcje do wydzielania z wikikodu strony rozdziału danego spisu jego głównej części, ktorym jest właściwy spis treści strony, tym spisem treści nie muszą być rozdziały i artykuły w rozdziale: '''Spis treści''', czy: '''SPIS RZECZY''', wraz z tym nim, te rozdziały spisu mogą być różnie znormowane,
* {{lru|Moduły/StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}} - zawiera funkcje do analizy spisów i całej strony z drugiej strony, jak i tworzenia tablicy nagłówków, z ich identyfikatorami '''id''',
* {{lru|Moduły/StronicowyParser/Kategorie}} - zwraca kategorie, tylko raz przetworzone i policzone, zgłaszane przez {{Code|{{m|StronicowyParser|WstawKategorie}}}},
* {{lru|Moduły/StronicowyParser/NumerLubNazwaArtykułówKsiążek}} - funkcje pobierania, na podstawie nazwy nagłówka lub artykułu książki, zależnie od ustawień, jego numeru, lub odwrotnie,
* {{lru|Moduły/StronicowyParser/NumerLubNazwaNagłówkówKsiążek}} - funkcje pobierania, na podstawie nazwy nagłówka, jego numeru, lub odwrotnie,
* {{lru|Moduły/StronicowyParser/NumerObiektu}} - funkcje numerowania uchwytów, przypisywanie uchwytom linków do nagłówków lub uchwytom zawartości tekstów,
* {{lru|Moduły/StronicowyParser/NumeracjaObiektówStron}} - funkcja odpowiednio ustawia dane, jaka jest numeracja, jeśli w ogóle istnieje, danego typu obiektu, sprawdza, czy uchwyt obiektu się powtarza, przy numeracji uwzględniany jest numer artykułu.
* {{lru|Moduły/StronicowyParser/Potrzebne}} -
* {{lru|Moduły/StronicowyParser/Pomocne}} -
* {{lru|Moduły/StronicowyParser/Problemy}} - funkcje sprawdzania, czy jest taki, i dodawania, problemów do tablicy,
* {{lru|Moduły/StronicowyParser/Rozdziały}}{{r|Spis treści}} - funkcje, do przygotowania tekstów spisów treści, do dalszej obróbki przez funkcje z: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}, funkcje stąd korzystają z funkcji modułu: {{LinkPatrz|AnalizaSpisuRzeczy}}, do wydzielenia z całego spisu jego fragmentu, aby dało się go łatwo podzielić na nagłówki, z ich parametrami, i ich teksty rozdziałów, robione jest to poprzez funkcję główna z: {{LinkPatrz|ZbieranieDanychStron}},
* {{lru|Moduły/StronicowyParser/SpisTreści}}{{r|Spis treści}} - spis treści dla jego podmodułów,
* {{lru|Moduły/StronicowyParser/StronaSubst}} - strona, a w niej funkcje, do sprawdzania, czy dana podana strona jest stroną zbiorczą, ładuje kod strony zbiorczej dla szablonów {{s|StronaSubst}} i {{s|KsiążkaSubst}}, także przygotowuje wpisy do spisu treści {{s|Spis treści}} ({{s|Spis treści zwinięty}}), czy {{s|TOC}}, a nawet {{s|TOC limit}}
* {{lru|Moduły/StronicowyParser/Tekst}} - są to funkcje do ładowania tekstu stron, nawet jego w sposób rekurencyjny,
* {{lru|Moduły/StronicowyParser/ZbieranieDanychStron}}{{r|Spis treści}} {{Patrz|ZbieranieDanychStron}} - moduł do zbierania informacji o aktualnej stronie, nie spisie treści, co do uchwytów pewnych obiektów i dalszych informacji o nich,
* {{lru|Moduły/StronicowyParser/SzablonyTekstu}} - funkcje aktualizowania informacji specjalne dla szablonów {{s|PobierzŚródtekst}} na podstawie informacji w szablonach {{s|Śródtekst}} w tym samym lub na innej stronie artykułu książki, czy na innej stronie nieartykularnej (książkowej),
* {{lru|Moduły/StronicowyParser/informacje}} - moduł ładujący informacje o danej stronie, dołączony raz na całą nią,
* {{lru|Moduły/StronicowyParser/obiekty}} - zestaw stałych tablicowych ładowanych raz na całą stronę.
== Przypisy ==
{{Przypisy
|{{o|n=Spis treści|o=Opisy modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}} mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' posiadające na ich podstronach swój '''spis treści'''.}}
}}
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
6fu9cqysni9mcf8cyz32uadjhay4qro
553294
553292
2026-08-26T19:21:56Z
Persino
2851
553294
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Funkcje stronicowego parsera służące do analizu uchwytów i ich numerowania, do przydzielenia uchwytom, pewnych rozdziałów, czy nawet pobieranie, za pomocą uchwytów. Też służy do ładowania spisów treści przy pomocy jego funkcji.
== Spis treści ==
* {{lr|Moduły/StronicowyParser/Moduł główny|StronicowyParser}} - procedur stronicowego parsera do numeracji obiektów i odniesień do nich, także operowanie na tak zebranych danych, uruchamiane w stronicowych szablonach, które są zawarte w podkategoriach: {{lk2|Szablony stronicowe}},
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy}}{{r|Spis treści}} {{Patrz|AnalizaSpisuRzeczy}} - funkcje do wydzielania z wikikodu strony rozdziału danego spisu jego głównej części, ktorym jest właściwy spis treści strony, tym spisem treści nie muszą być rozdziały i artykuły w rozdziale: '''Spis treści''', czy: '''SPIS RZECZY''', wraz z tym nim, te rozdziały spisu mogą być różnie znormowane,
* {{lru|Moduły/StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}} - zawiera funkcje do analizy spisów i całej strony z drugiej strony, jak i tworzenia tablicy nagłówków, z ich identyfikatorami '''id''',
* {{lru|Moduły/StronicowyParser/Kategorie}} - zwraca kategorie, tylko raz przetworzone i policzone, zgłaszane przez {{Code|{{m|StronicowyParser|WstawKategorie}}}},
* {{lru|Moduły/StronicowyParser/NumerLubNazwaArtykułówKsiążek}} - funkcje pobierania, na podstawie nazwy nagłówka lub artykułu książki, zależnie od ustawień, jego numeru, lub odwrotnie,
* {{lru|Moduły/StronicowyParser/NumerLubNazwaNagłówkówKsiążek}} - funkcje pobierania, na podstawie nazwy nagłówka, jego numeru, lub odwrotnie,
* {{lru|Moduły/StronicowyParser/NumerObiektu}} - funkcje numerowania uchwytów, przypisywanie uchwytom linków do nagłówków lub uchwytom zawartości tekstów,
* {{lru|Moduły/StronicowyParser/NumeracjaObiektówStron}} - funkcja odpowiednio ustawia dane, jaka jest numeracja, jeśli w ogóle istnieje, danego typu obiektu, sprawdza, czy uchwyt obiektu się powtarza, przy numeracji uwzględniany jest numer artykułu.
* {{lru|Moduły/StronicowyParser/Potrzebne}} -
* {{lru|Moduły/StronicowyParser/Pomocne}} -
* {{lru|Moduły/StronicowyParser/Problemy}} - funkcje sprawdzania, czy jest taki, i dodawania, problemów do tablicy,
* {{lru|Moduły/StronicowyParser/Rozdziały}}{{r|Spis treści}} - funkcje, do przygotowania tekstów spisów treści, do dalszej obróbki przez funkcje z: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}, funkcje stąd korzystają z funkcji modułu: {{LinkPatrz|AnalizaSpisuRzeczy}}, do wydzielenia z całego spisu jego fragmentu, aby dało się go łatwo podzielić na nagłówki, z ich parametrami, i ich teksty rozdziałów, robione jest to poprzez funkcję główna z: {{LinkPatrz|ZbieranieDanychStron}},
* {{lru|Moduły/StronicowyParser/SpisTreści}}{{r|Spis treści}} - spis treści dla jego podmodułów,
* {{lru|Moduły/StronicowyParser/StronaSubst}} - strona, a w niej funkcje, do sprawdzania, czy dana podana strona jest stroną zbiorczą, ładuje kod strony zbiorczej dla szablonów {{s|StronaSubst}} i {{s|KsiążkaSubst}}, także przygotowuje wpisy do spisu treści {{s|Spis treści}} ({{s|Spis treści zwinięty}}), czy {{s|TOC}}, a nawet {{s|TOC limit}}
* {{lru|Moduły/StronicowyParser/Tekst}} - są to funkcje do ładowania tekstu stron, nawet jego w sposób rekurencyjny,
* {{lru|Moduły/StronicowyParser/ZbieranieDanychStron}}{{r|Spis treści}} {{Patrz|ZbieranieDanychStron}} - moduł do zbierania informacji o aktualnej stronie, nie spisie treści, co do uchwytów pewnych obiektów i dalszych informacji o nich,
* {{lru|Moduły/StronicowyParser/SzablonyTekstu}} - funkcje aktualizowania informacji specjalne dla szablonów {{s|PobierzŚródtekst}} na podstawie informacji w szablonach {{s|Śródtekst}} w tym samym lub na innej stronie artykułu książki, czy na innej stronie nieartykularnej (książkowej),
* {{lru|Moduły/StronicowyParser/informacje}} - moduł ładujący informacje o danej stronie, dołączony raz na całą nią,
* {{lru|Moduły/StronicowyParser/obiekty}} - zestaw stałych tablicowych ładowanych raz na całą stronę.
== Przypisy ==
{{Przypisy
|{{o|n=Spis treści|o=Opisy modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}} mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' posiadające na ich podstronach swój '''{{lpg|spis treści}}'''.}}
}}
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
8dscecg3pwqrnj0tirn30923a55wyq4
Wikibooks:Moduły/Parametry/Tom I
4
63967
553303
553027
2026-08-27T07:18:03Z
Persino
2851
553303
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Są tutaj przedstawione funkcje liczb elementów w tabeli lub szablonów, w wersji mnogiej lub normalnej.
== {{Code|p["LiczbaElementówNumerowanychTablicy"]}} ==
Funkcja liczy liczbę numerowanych elementów tablicy od {{Code|1}}, one nie mogą mieć miedzy sobą przerw, zaczynające się właśnie od niej, czyli: {{Code|1,2,3,4,...}}. Można podać, czy oczekujemy wartości tylko niepustych. Można wskazać, czy liczba elementów jest mnoga (większa od {{Code|1}}, ale równa {{Code|2}}, w tym przypadku, a jeżeli nie jest taka, to zrzucony wynik jest {{Code|0}}, {{Code|1}}, ale nie {{Code|2}}).
Ona liczy liczbę parametrów numerowanych niepustych, tzn. elementy tam są od {{Code|1}}, bez przerw, a jeżeli są przerwy, jeżeli taki przykład sformułować, to do jej pierwszej, a w tym przypadku nie ma takich.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaElementówNumerowanychTablicy"]=function(tabela, wliczac,mnoga)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela, na którym operujemy,
* {{Code|wliczac}} - czy szukamy niepuste elementy numerowane tabeli, jeżeli {{Code|true}},
* {{Code|mnoga}} - czy liczba tych numerowanych elementów jest mnoga, jeżeli {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela={"nazwa1","nazwa2","nazwa3","nazwa4","nazwa5","nazwa6","nazwa7","nazwa8","nazwa9",};
local parametry_modul=require("Module:Parametry");
local liczba_elementow_nienazwanych_tablicy=parametry_modul["LiczbaElementówNumerowanychTablicy"](tabela,true,false);
</syntaxhighlight>
Wynik tej funkcji jest {{Code|9}}, ponieważ ma on mnóstwo parametrów nienazwanych, które jednocześnie są numerowane, czyli są one od {{Code|1}} i ciągną się bez przerw, aż do pewnej liczby.
Powyższe wywołanie liczy liczbę parametrów numerowanych niepustych.
== {{Code|p["LiczbaElementówNumerowanychSzablonu"]}} ==
Funkcja wywoływana w ramce w wikikodzie, wykorzystująca funkcję z definicji: {{Code|{{sr|#p["LiczbaElementówNumerowanychTablicy"]|p=Parametry}}}}, i robiąca to samo, co ona, tylko wykorzystywana na innym poziomie, tzn. jako wywołana ramka w szablonie, a nie powinna być uruchamiana w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
<syntaxhighlight lang="lua">
p["LiczbaElementówNumerowanychSzablonu"]=function(frame)...end;
</syntaxhighlight>
Parametrami funkcji ramki tablicy transportu, które z dwóch odpowiadają parametrom: {{Code|wliczac}} i {{Code|mnoga}}, wykorzystywanej funkcji, są kolejno:
* {{Code|niepuste}} - czy szukamy niepuste elementy numerowane parametrów szablonu, w którym ta ramka została wywołana, w postaci tej funkcji, jeżeli ta zmienna niepusta,
* {{Code|mnoga}} - czy liczba takich wyszukań jest mnoga, jeżeli niepusta.
Odpowiednikiem zmiennej {{Code|tabela}}:
* {{Code|frame:getParent().args}} - czyli parametry szablonu rodzica, policzona za pomocą tablicy ramki, jej funkcji, tablicy transportu.
Funkcje wywołuje się w ramce w szablonie, jako dziecko, w postaci, np., gdy rozważamy parametry niepuste szablonu, z ustawionym niepustym parametrem mnogości, wtedy ona powinna zwrócić liczbę {{Code|0}}, {{Code|1}} lub {{Code|2}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|LiczbaElementówNumerowanychSzablonu|niepuste=tak|mnoga=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1|nazwa2|nazwa3|nazwa4|nazwa5|nazwa6|nazwa7|nazwa8|nazwa9}}
</syntaxhighlight>
Powyższe wywołanie zrzuca wynik wyliczony, a ponieważ ustawiony został parametr mnogości w dziecku tego szablonu, wtedy zwraca liczbę {{Code|2}}, a gdyby nie był, to zobaczylibyśmy liczbę tych elementów.
Jak można zauważyć, że ma on parametry numerowane (zaczynające się od jedynki), które można znaleźć w parametrach szablonu, jeżeli tam w ogóle istnieją.
== {{Code|p["LiczbaElementówNienazwanychTablicy"]}} ==
Funkcja liczy liczbę nienazwanych elementów niekoniecznie od {{Code|1}}, ale mogą zaczynać się od pewnej liczby, mogą między sobą, nie zawsze, mieć przerwy, np. mogą być podane tak: {{Code|3,10,15,..}}. Można podać, czy oczekujemy wartości tylko niepustych. Można wskazać, czy liczba elementów jest mnoga (większa od {{Code|1}}, ale równa {{Code|2}}, w tym przypadku, a jeżeli nie jest taka, to zrzucony wynik jest {{Code|0}}, {{Code|1}}, ale nie {{Code|2}}).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaElementówNienazwanychTablicy"]=function(tabela, wliczac,mnoga)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela, na którym operujemy,
* {{Code|wliczac}} - czy szukamy niepuste elementy numerowane tabeli, ma wartosć nieodpowiadająca {{Code|false}},
* {{Code|mnoga}} - czy liczba tych numerowanych elementów jest mnoga, wartość jak powyżej.
Funkcja z użytym parametrem {{Code|mnoga}} z wartością {{Code|true}} jest taka, że zawsze zwracana jest wartość {{Code|2}} przez nią.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela={[2]="nazwa1",[10]="nazwa2",[15]="nazwa3",[18]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local liczba_elementow_nienazwanych_tablicy=parametry_modul["LiczbaElementówNienazwanychTablicy"](tabela,true,false);
</syntaxhighlight>
Wynik tej funkcji jest {{Code|4}}, bo taka jest liczba parametrów nienazwanych, ale nie numerowanych.
Powyższe wywołanie liczy liczbę parametrów nienazwanych niepustych.
== {{Code|p["LiczbaParametrówNienazwanychSzablonu"]}} ==
Funkcja wywoływana w ramce w wikikodzie, wykorzystująca funkcję z definicji: {{Code|{{sr|#p["LiczbaElementówNienazwanychTablicy"]|p=Parametry}}}}, i robiąca to samo, co ona, tylko wykorzystywana na innym poziomie, tzn. jako wywołana ramka w szablonie, a nie powinna być uruchamiana w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaParametrówNienazwanychSzablonu"]=function(frame)...end;
</syntaxhighlight>
Parametrami funkcji tablicy ramki, odpowiedniki parametrów: {{Code|wliczac}} i {{Code|mnoga}} funkcji wykorzystywanej z definicji, są kolejno:
* {{Code|niepuste}} - czy szukamy niepuste elementy numerowane parametrów szablonu, w którym ta ramka została wywołana, w postaci tej funkcji, jeżeli ten argument niepusty,
* {{Code|mnoga}} - czy liczba takich wyszukań jest mnoga, jeżeli niepusty.
Odpowiednikiem parametru {{Code|tabela}} jest:
* {{Code|frame:getParent().args}} - czyli parametry szablonu rodzica, policzona za pomocą tablicy ramki, jej funkcji, tablicy transportu.
Funkcje wywołuje się w ramce w szablonie, jako dziecko, w postaci, np., gdy rozważamy parametry niepuste szablonu, z ustawieniem parametrem mnogości, wtedy funkcja ta powinna zwrócić liczbę {{Code|0}}, {{Code|1}} lub {{Code|2}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|LiczbaParametrówNienazwanychSzablonu|niepuste=tak|mnoga=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|2=nazwa1|10=nazwa2|15=nazwa3|18=nazwa4}}
</syntaxhighlight>
Powyższe wywołanie liczy liczbę parametrów nienazwanych niepustych w liczbie mnogie, tzn. gdy ten parametr jest podany. Powyższa funkcja zrzuca wynik wyliczony, ze względu na to ustawienie w dziecku, jako liczbę {{Code|2}}, a nie {{Code|4}}.
== {{Code|p["LiczbaElementówTablicy"]}} ==
Funkcja liczy liczbę nienazwanych (numerowanych) i nazwanych elementów tablicy. Można podać, czy oczekujemy wartości tylko niepustych.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaElementówTablicy"]=function(tabela,wliczac)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela do rozważań na problemy tej funkcji,
* {{Code|wliczac}} - czy ma liczyć liczbę elementów niepustych, jeżeli {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela={ 10, nazwa = 5, parametr = "tak", };
local parametry_modul=require("Module:Parametry");
local liczba_elementow_tablicy=parametry_modul["LiczbaElementówTablicy"](tabela,true);
</syntaxhighlight>
Policzona liczba elementów {{Code|liczba_elementow_tablicy}} jest {{Code|3}}.
Powyższe wywołanie liczy liczbę wszystkich parametrów niepustych w podanej tablicy.
== {{Code|p["LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy"]}} ==
Funkcja liczy liczbę nienazwanych elementów od {{Code|1}}, ale mogą zaczynać się od pewnej liczby, mogą między sobą mieć przerwy, np.: {{Code|3,10,15,..}}, liczbę elementów tablicy odpowiednio skonstruowanych, charakterystycznych dla tej funkcji. Można podać, czy oczekujemy wartości tylko niepustych.
Można wskazać, czy liczba elementów jest mnoga (większa od {{Code|1}}, ale równa {{Code|2}}, a jeżeli nie jest taka, to wtedy {{Code|0}} lub {{Code|1}}). Należy też podać niepusty przedrostek, niebędący liczbą zakodowaną w łańcuchu. Należy wskazać funkcji, czy oczekujemy formy numerkowe, ale nie muszą to być liczby, ale mogą być one łańcuchami numerkowymi, a jeżeli nie są takie, to one muszą być w postaci czystych liczb, a w przypadku form, które po przekształceniu na liczbę funkcją {{Code|tonumber}} stają się normalnymi liczbami {{lpg|Lua}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy"]=function(tabela,przedrostek,wliczac,czy_formy_numerkowe)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela, na którym operujemy,
* {{Code|przedrostek}} - niepusty, niebędący liczbą łańcuchową, przedrostek, który ma być przed liczbą,
* {{Code|wliczac}} - czy szukamy niepuste elementy numerowane tabeli,
* {{Code|czy_formy_numerkowe}} - czy wyszukiwane liczby przy pomocy funkcji {{Code|pairs}}, czy są czystymi liczbami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja liczy liczbę parametrów nienazwanych i nazwanych, ale z podanym przedrostkiem, lub nie, skonstruowanych z tych pierwszych.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela={[2]="wartość1", [10]="wartosć2", [15]="wartość3", ["18"]="wartość4", ["nazwa2"] = "wartosc5", ["nazwa10"] = "wartość6", ["nazwa18"] = "wartość7", };
local parametry_modul=require("Module:Parametry");
local liczba_elementow_nienazwanych_z_przedrostkiem_lub_nie_w_tablicy=parametry_modul["LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy"](tabela,"nazwa",true,false);
</syntaxhighlight>
Funkcja w postaci wartości {{Code|liczba_elementow_nienazwanych_z_przedrostkiem_lub_nie_w_tablicy}} zwróci liczbę {{Code|6}}, a nie {{Code|7}}, bo element {{Code|["18"]{{=}}"wartość4"}}, a w niej łańcuch znakowy klucza jest jedynie formą numerkową, a nie liczbą.
Powyższe wywołanie liczy liczbę parametrów nazwanych niepustych z przedrostkiem, lub czysto numerkowych - nienazwanych, ale nie również form numerkowych (szeregi), czyli zapisanych w postaci łańcucha znaków, nie jako typ {{LzLua|number}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
r0u4l2bhojmynv4pembjz41a0k1l9v4
553304
553303
2026-08-27T07:27:21Z
Persino
2851
/* {{Code|p["LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy"]}} */
553304
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Są tutaj przedstawione funkcje liczb elementów w tabeli lub szablonów, w wersji mnogiej lub normalnej.
== {{Code|p["LiczbaElementówNumerowanychTablicy"]}} ==
Funkcja liczy liczbę numerowanych elementów tablicy od {{Code|1}}, one nie mogą mieć miedzy sobą przerw, zaczynające się właśnie od niej, czyli: {{Code|1,2,3,4,...}}. Można podać, czy oczekujemy wartości tylko niepustych. Można wskazać, czy liczba elementów jest mnoga (większa od {{Code|1}}, ale równa {{Code|2}}, w tym przypadku, a jeżeli nie jest taka, to zrzucony wynik jest {{Code|0}}, {{Code|1}}, ale nie {{Code|2}}).
Ona liczy liczbę parametrów numerowanych niepustych, tzn. elementy tam są od {{Code|1}}, bez przerw, a jeżeli są przerwy, jeżeli taki przykład sformułować, to do jej pierwszej, a w tym przypadku nie ma takich.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaElementówNumerowanychTablicy"]=function(tabela, wliczac,mnoga)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela, na którym operujemy,
* {{Code|wliczac}} - czy szukamy niepuste elementy numerowane tabeli, jeżeli {{Code|true}},
* {{Code|mnoga}} - czy liczba tych numerowanych elementów jest mnoga, jeżeli {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela={"nazwa1","nazwa2","nazwa3","nazwa4","nazwa5","nazwa6","nazwa7","nazwa8","nazwa9",};
local parametry_modul=require("Module:Parametry");
local liczba_elementow_nienazwanych_tablicy=parametry_modul["LiczbaElementówNumerowanychTablicy"](tabela,true,false);
</syntaxhighlight>
Wynik tej funkcji jest {{Code|9}}, ponieważ ma on mnóstwo parametrów nienazwanych, które jednocześnie są numerowane, czyli są one od {{Code|1}} i ciągną się bez przerw, aż do pewnej liczby.
Powyższe wywołanie liczy liczbę parametrów numerowanych niepustych.
== {{Code|p["LiczbaElementówNumerowanychSzablonu"]}} ==
Funkcja wywoływana w ramce w wikikodzie, wykorzystująca funkcję z definicji: {{Code|{{sr|#p["LiczbaElementówNumerowanychTablicy"]|p=Parametry}}}}, i robiąca to samo, co ona, tylko wykorzystywana na innym poziomie, tzn. jako wywołana ramka w szablonie, a nie powinna być uruchamiana w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
<syntaxhighlight lang="lua">
p["LiczbaElementówNumerowanychSzablonu"]=function(frame)...end;
</syntaxhighlight>
Parametrami funkcji ramki tablicy transportu, które z dwóch odpowiadają parametrom: {{Code|wliczac}} i {{Code|mnoga}}, wykorzystywanej funkcji, są kolejno:
* {{Code|niepuste}} - czy szukamy niepuste elementy numerowane parametrów szablonu, w którym ta ramka została wywołana, w postaci tej funkcji, jeżeli ta zmienna niepusta,
* {{Code|mnoga}} - czy liczba takich wyszukań jest mnoga, jeżeli niepusta.
Odpowiednikiem zmiennej {{Code|tabela}}:
* {{Code|frame:getParent().args}} - czyli parametry szablonu rodzica, policzona za pomocą tablicy ramki, jej funkcji, tablicy transportu.
Funkcje wywołuje się w ramce w szablonie, jako dziecko, w postaci, np., gdy rozważamy parametry niepuste szablonu, z ustawionym niepustym parametrem mnogości, wtedy ona powinna zwrócić liczbę {{Code|0}}, {{Code|1}} lub {{Code|2}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|LiczbaElementówNumerowanychSzablonu|niepuste=tak|mnoga=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1|nazwa2|nazwa3|nazwa4|nazwa5|nazwa6|nazwa7|nazwa8|nazwa9}}
</syntaxhighlight>
Powyższe wywołanie zrzuca wynik wyliczony, a ponieważ ustawiony został parametr mnogości w dziecku tego szablonu, wtedy zwraca liczbę {{Code|2}}, a gdyby nie był, to zobaczylibyśmy liczbę tych elementów.
Jak można zauważyć, że ma on parametry numerowane (zaczynające się od jedynki), które można znaleźć w parametrach szablonu, jeżeli tam w ogóle istnieją.
== {{Code|p["LiczbaElementówNienazwanychTablicy"]}} ==
Funkcja liczy liczbę nienazwanych elementów niekoniecznie od {{Code|1}}, ale mogą zaczynać się od pewnej liczby, mogą między sobą, nie zawsze, mieć przerwy, np. mogą być podane tak: {{Code|3,10,15,..}}. Można podać, czy oczekujemy wartości tylko niepustych. Można wskazać, czy liczba elementów jest mnoga (większa od {{Code|1}}, ale równa {{Code|2}}, w tym przypadku, a jeżeli nie jest taka, to zrzucony wynik jest {{Code|0}}, {{Code|1}}, ale nie {{Code|2}}).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaElementówNienazwanychTablicy"]=function(tabela, wliczac,mnoga)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela, na którym operujemy,
* {{Code|wliczac}} - czy szukamy niepuste elementy numerowane tabeli, ma wartosć nieodpowiadająca {{Code|false}},
* {{Code|mnoga}} - czy liczba tych numerowanych elementów jest mnoga, wartość jak powyżej.
Funkcja z użytym parametrem {{Code|mnoga}} z wartością {{Code|true}} jest taka, że zawsze zwracana jest wartość {{Code|2}} przez nią.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela={[2]="nazwa1",[10]="nazwa2",[15]="nazwa3",[18]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local liczba_elementow_nienazwanych_tablicy=parametry_modul["LiczbaElementówNienazwanychTablicy"](tabela,true,false);
</syntaxhighlight>
Wynik tej funkcji jest {{Code|4}}, bo taka jest liczba parametrów nienazwanych, ale nie numerowanych.
Powyższe wywołanie liczy liczbę parametrów nienazwanych niepustych.
== {{Code|p["LiczbaParametrówNienazwanychSzablonu"]}} ==
Funkcja wywoływana w ramce w wikikodzie, wykorzystująca funkcję z definicji: {{Code|{{sr|#p["LiczbaElementówNienazwanychTablicy"]|p=Parametry}}}}, i robiąca to samo, co ona, tylko wykorzystywana na innym poziomie, tzn. jako wywołana ramka w szablonie, a nie powinna być uruchamiana w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaParametrówNienazwanychSzablonu"]=function(frame)...end;
</syntaxhighlight>
Parametrami funkcji tablicy ramki, odpowiedniki parametrów: {{Code|wliczac}} i {{Code|mnoga}} funkcji wykorzystywanej z definicji, są kolejno:
* {{Code|niepuste}} - czy szukamy niepuste elementy numerowane parametrów szablonu, w którym ta ramka została wywołana, w postaci tej funkcji, jeżeli ten argument niepusty,
* {{Code|mnoga}} - czy liczba takich wyszukań jest mnoga, jeżeli niepusty.
Odpowiednikiem parametru {{Code|tabela}} jest:
* {{Code|frame:getParent().args}} - czyli parametry szablonu rodzica, policzona za pomocą tablicy ramki, jej funkcji, tablicy transportu.
Funkcje wywołuje się w ramce w szablonie, jako dziecko, w postaci, np., gdy rozważamy parametry niepuste szablonu, z ustawieniem parametrem mnogości, wtedy funkcja ta powinna zwrócić liczbę {{Code|0}}, {{Code|1}} lub {{Code|2}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|LiczbaParametrówNienazwanychSzablonu|niepuste=tak|mnoga=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|2=nazwa1|10=nazwa2|15=nazwa3|18=nazwa4}}
</syntaxhighlight>
Powyższe wywołanie liczy liczbę parametrów nienazwanych niepustych w liczbie mnogie, tzn. gdy ten parametr jest podany. Powyższa funkcja zrzuca wynik wyliczony, ze względu na to ustawienie w dziecku, jako liczbę {{Code|2}}, a nie {{Code|4}}.
== {{Code|p["LiczbaElementówTablicy"]}} ==
Funkcja liczy liczbę nienazwanych (numerowanych) i nazwanych elementów tablicy. Można podać, czy oczekujemy wartości tylko niepustych.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaElementówTablicy"]=function(tabela,wliczac)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela do rozważań na problemy tej funkcji,
* {{Code|wliczac}} - czy ma liczyć liczbę elementów niepustych, jeżeli {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela={ 10, nazwa = 5, parametr = "tak", };
local parametry_modul=require("Module:Parametry");
local liczba_elementow_tablicy=parametry_modul["LiczbaElementówTablicy"](tabela,true);
</syntaxhighlight>
Policzona liczba elementów {{Code|liczba_elementow_tablicy}} jest {{Code|3}}.
Powyższe wywołanie liczy liczbę wszystkich parametrów niepustych w podanej tablicy.
== {{Code|p["LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy"]}} ==
Funkcja liczy liczbę nienazwanych elementów od {{Code|1}}, ale mogą zaczynać się od pewnej liczby, mogą między sobą mieć przerwy, np.: {{Code|3,10,15,..}}, liczbę elementów tablicy odpowiednio skonstruowanych, charakterystycznych dla tej funkcji. Można podać, czy oczekujemy wartości tylko niepustych.
Można wskazać, czy liczba elementów jest mnoga (większa od {{Code|1}}, wtedy ta funkcja zwraca wynik {{Code|2}}, a jeżeli nie jest taka, to wtedy zwracany wynik jest {{Code|0}} lub {{Code|1}}). Należy też podać niepusty przedrostek, niebędący liczbą zakodowaną w łańcuchu znakowym. Należy wskazać w funkcji, czy oczekujemy formy numerkowe, ale nie muszą to być liczby, ale mogą być one łańcuchami znakowymi, a jeżeli nie są takie, to one muszą być w postaci czystych liczb. Definicja form numerkowych jest taka, że one po przekształceniu na liczbę funkcją {{LzLua|tonumber}} stają się normalnymi liczbami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy"]=function(tabela,przedrostek,wliczac,czy_formy_numerkowe)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela, na którym operujemy,
* {{Code|przedrostek}} - niepusty, niebędący liczbą łańcuchową, przedrostek, który ma być przed liczbą,
* {{Code|wliczac}} - czy szukamy niepuste elementy numerowane tabeli,
* {{Code|czy_formy_numerkowe}} - czy wyszukiwane liczby przy pomocy funkcji {{Code|pairs}}, czy są czystymi liczbami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja liczy liczbę parametrów nienazwanych i nazwanych, ale z podanym przedrostkiem, lub nie, skonstruowanych z tych pierwszych.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela={[2]="wartość1", [10]="wartosć2", [15]="wartość3", ["18"]="wartość4", ["nazwa2"] = "wartosc5", ["nazwa10"] = "wartość6", ["nazwa18"] = "wartość7", };
local parametry_modul=require("Module:Parametry");
local liczba_elementow_nienazwanych_z_przedrostkiem_lub_nie_w_tablicy=parametry_modul["LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy"](tabela,"nazwa",true,false);
</syntaxhighlight>
Funkcja w postaci wartości {{Code|liczba_elementow_nienazwanych_z_przedrostkiem_lub_nie_w_tablicy}} zwróci liczbę {{Code|6}}, a nie {{Code|7}}, bo element {{Code|["18"]{{=}}"wartość4"}}, a w niej łańcuch znakowy klucza jest jedynie formą numerkową, a nie liczbą.
Powyższe wywołanie liczy liczbę parametrów nazwanych niepustych z przedrostkiem, lub czysto numerkowych - nienazwanych, ale nie również form numerkowych (szeregi), czyli zapisanych w postaci łańcucha znaków, nie jako typ {{LzLua|number}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
fwafzvbhs454mv0lvcz23wiwixheb0s
553305
553304
2026-08-27T07:37:52Z
Persino
2851
/* {{Code|p["LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy"]}} */
553305
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Są tutaj przedstawione funkcje liczb elementów w tabeli lub szablonów, w wersji mnogiej lub normalnej.
== {{Code|p["LiczbaElementówNumerowanychTablicy"]}} ==
Funkcja liczy liczbę numerowanych elementów tablicy od {{Code|1}}, one nie mogą mieć miedzy sobą przerw, zaczynające się właśnie od niej, czyli: {{Code|1,2,3,4,...}}. Można podać, czy oczekujemy wartości tylko niepustych. Można wskazać, czy liczba elementów jest mnoga (większa od {{Code|1}}, ale równa {{Code|2}}, w tym przypadku, a jeżeli nie jest taka, to zrzucony wynik jest {{Code|0}}, {{Code|1}}, ale nie {{Code|2}}).
Ona liczy liczbę parametrów numerowanych niepustych, tzn. elementy tam są od {{Code|1}}, bez przerw, a jeżeli są przerwy, jeżeli taki przykład sformułować, to do jej pierwszej, a w tym przypadku nie ma takich.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaElementówNumerowanychTablicy"]=function(tabela, wliczac,mnoga)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela, na którym operujemy,
* {{Code|wliczac}} - czy szukamy niepuste elementy numerowane tabeli, jeżeli {{Code|true}},
* {{Code|mnoga}} - czy liczba tych numerowanych elementów jest mnoga, jeżeli {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela={"nazwa1","nazwa2","nazwa3","nazwa4","nazwa5","nazwa6","nazwa7","nazwa8","nazwa9",};
local parametry_modul=require("Module:Parametry");
local liczba_elementow_nienazwanych_tablicy=parametry_modul["LiczbaElementówNumerowanychTablicy"](tabela,true,false);
</syntaxhighlight>
Wynik tej funkcji jest {{Code|9}}, ponieważ ma on mnóstwo parametrów nienazwanych, które jednocześnie są numerowane, czyli są one od {{Code|1}} i ciągną się bez przerw, aż do pewnej liczby.
Powyższe wywołanie liczy liczbę parametrów numerowanych niepustych.
== {{Code|p["LiczbaElementówNumerowanychSzablonu"]}} ==
Funkcja wywoływana w ramce w wikikodzie, wykorzystująca funkcję z definicji: {{Code|{{sr|#p["LiczbaElementówNumerowanychTablicy"]|p=Parametry}}}}, i robiąca to samo, co ona, tylko wykorzystywana na innym poziomie, tzn. jako wywołana ramka w szablonie, a nie powinna być uruchamiana w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
<syntaxhighlight lang="lua">
p["LiczbaElementówNumerowanychSzablonu"]=function(frame)...end;
</syntaxhighlight>
Parametrami funkcji ramki tablicy transportu, które z dwóch odpowiadają parametrom: {{Code|wliczac}} i {{Code|mnoga}}, wykorzystywanej funkcji, są kolejno:
* {{Code|niepuste}} - czy szukamy niepuste elementy numerowane parametrów szablonu, w którym ta ramka została wywołana, w postaci tej funkcji, jeżeli ta zmienna niepusta,
* {{Code|mnoga}} - czy liczba takich wyszukań jest mnoga, jeżeli niepusta.
Odpowiednikiem zmiennej {{Code|tabela}}:
* {{Code|frame:getParent().args}} - czyli parametry szablonu rodzica, policzona za pomocą tablicy ramki, jej funkcji, tablicy transportu.
Funkcje wywołuje się w ramce w szablonie, jako dziecko, w postaci, np., gdy rozważamy parametry niepuste szablonu, z ustawionym niepustym parametrem mnogości, wtedy ona powinna zwrócić liczbę {{Code|0}}, {{Code|1}} lub {{Code|2}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|LiczbaElementówNumerowanychSzablonu|niepuste=tak|mnoga=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1|nazwa2|nazwa3|nazwa4|nazwa5|nazwa6|nazwa7|nazwa8|nazwa9}}
</syntaxhighlight>
Powyższe wywołanie zrzuca wynik wyliczony, a ponieważ ustawiony został parametr mnogości w dziecku tego szablonu, wtedy zwraca liczbę {{Code|2}}, a gdyby nie był, to zobaczylibyśmy liczbę tych elementów.
Jak można zauważyć, że ma on parametry numerowane (zaczynające się od jedynki), które można znaleźć w parametrach szablonu, jeżeli tam w ogóle istnieją.
== {{Code|p["LiczbaElementówNienazwanychTablicy"]}} ==
Funkcja liczy liczbę nienazwanych elementów niekoniecznie od {{Code|1}}, ale mogą zaczynać się od pewnej liczby, mogą między sobą, nie zawsze, mieć przerwy, np. mogą być podane tak: {{Code|3,10,15,..}}. Można podać, czy oczekujemy wartości tylko niepustych. Można wskazać, czy liczba elementów jest mnoga (większa od {{Code|1}}, ale równa {{Code|2}}, w tym przypadku, a jeżeli nie jest taka, to zrzucony wynik jest {{Code|0}}, {{Code|1}}, ale nie {{Code|2}}).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaElementówNienazwanychTablicy"]=function(tabela, wliczac,mnoga)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela, na którym operujemy,
* {{Code|wliczac}} - czy szukamy niepuste elementy numerowane tabeli, ma wartosć nieodpowiadająca {{Code|false}},
* {{Code|mnoga}} - czy liczba tych numerowanych elementów jest mnoga, wartość jak powyżej.
Funkcja z użytym parametrem {{Code|mnoga}} z wartością {{Code|true}} jest taka, że zawsze zwracana jest wartość {{Code|2}} przez nią.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela={[2]="nazwa1",[10]="nazwa2",[15]="nazwa3",[18]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local liczba_elementow_nienazwanych_tablicy=parametry_modul["LiczbaElementówNienazwanychTablicy"](tabela,true,false);
</syntaxhighlight>
Wynik tej funkcji jest {{Code|4}}, bo taka jest liczba parametrów nienazwanych, ale nie numerowanych.
Powyższe wywołanie liczy liczbę parametrów nienazwanych niepustych.
== {{Code|p["LiczbaParametrówNienazwanychSzablonu"]}} ==
Funkcja wywoływana w ramce w wikikodzie, wykorzystująca funkcję z definicji: {{Code|{{sr|#p["LiczbaElementówNienazwanychTablicy"]|p=Parametry}}}}, i robiąca to samo, co ona, tylko wykorzystywana na innym poziomie, tzn. jako wywołana ramka w szablonie, a nie powinna być uruchamiana w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaParametrówNienazwanychSzablonu"]=function(frame)...end;
</syntaxhighlight>
Parametrami funkcji tablicy ramki, odpowiedniki parametrów: {{Code|wliczac}} i {{Code|mnoga}} funkcji wykorzystywanej z definicji, są kolejno:
* {{Code|niepuste}} - czy szukamy niepuste elementy numerowane parametrów szablonu, w którym ta ramka została wywołana, w postaci tej funkcji, jeżeli ten argument niepusty,
* {{Code|mnoga}} - czy liczba takich wyszukań jest mnoga, jeżeli niepusty.
Odpowiednikiem parametru {{Code|tabela}} jest:
* {{Code|frame:getParent().args}} - czyli parametry szablonu rodzica, policzona za pomocą tablicy ramki, jej funkcji, tablicy transportu.
Funkcje wywołuje się w ramce w szablonie, jako dziecko, w postaci, np., gdy rozważamy parametry niepuste szablonu, z ustawieniem parametrem mnogości, wtedy funkcja ta powinna zwrócić liczbę {{Code|0}}, {{Code|1}} lub {{Code|2}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|LiczbaParametrówNienazwanychSzablonu|niepuste=tak|mnoga=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|2=nazwa1|10=nazwa2|15=nazwa3|18=nazwa4}}
</syntaxhighlight>
Powyższe wywołanie liczy liczbę parametrów nienazwanych niepustych w liczbie mnogie, tzn. gdy ten parametr jest podany. Powyższa funkcja zrzuca wynik wyliczony, ze względu na to ustawienie w dziecku, jako liczbę {{Code|2}}, a nie {{Code|4}}.
== {{Code|p["LiczbaElementówTablicy"]}} ==
Funkcja liczy liczbę nienazwanych (numerowanych) i nazwanych elementów tablicy. Można podać, czy oczekujemy wartości tylko niepustych.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaElementówTablicy"]=function(tabela,wliczac)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela do rozważań na problemy tej funkcji,
* {{Code|wliczac}} - czy ma liczyć liczbę elementów niepustych, jeżeli {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela={ 10, nazwa = 5, parametr = "tak", };
local parametry_modul=require("Module:Parametry");
local liczba_elementow_tablicy=parametry_modul["LiczbaElementówTablicy"](tabela,true);
</syntaxhighlight>
Policzona liczba elementów {{Code|liczba_elementow_tablicy}} jest {{Code|3}}.
Powyższe wywołanie liczy liczbę wszystkich parametrów niepustych w podanej tablicy.
== {{Code|p["LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy"]}} ==
Funkcja liczy liczbę nienazwanych elementów od {{Code|1}}, ale mogą zaczynać się od pewnej liczby, mogą między sobą mieć przerwy, np.: {{Code|3,10,15,..}}, liczbę elementów tablicy odpowiednio skonstruowanych, charakterystycznych dla tej funkcji. Można podać, czy oczekujemy wartości tylko niepustych.
Można wskazać, czy liczba elementów jest mnoga (większa od {{Code|1}}, wtedy ta funkcja zwraca wynik {{Code|2}}, a jeżeli nie jest taka, to wtedy zwracany wynik jest {{Code|0}} lub {{Code|1}}). Należy też podać niepusty przedrostek, niebędący liczbą zakodowaną w łańcuchu znakowym. Należy wskazać w funkcji, czy oczekujemy formy numerkowe, ale nie muszą to być liczby, ale mogą być one łańcuchami znakowymi, a jeżeli nie są takie, to one muszą być w postaci czystych liczb. Definicja form numerkowych jest taka, że one po przekształceniu na liczbę funkcją {{LzLua|tonumber}} stają się normalnymi liczbami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy"]=function(tabela,przedrostek,wliczac,czy_formy_numerkowe)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela, na którym operujemy,
* {{Code|przedrostek}} - niepusty, niebędący liczbą łańcuchową, przedrostek, który ma być przed liczbą,
* {{Code|wliczac}} - czy szukamy niepuste elementy numerowane tabeli,
* {{Code|czy_formy_numerkowe}} - czy wyszukiwane liczby przy pomocy funkcji {{Code|pairs}}, czy są czystymi liczbami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja liczy liczbę parametrów nienazwanych i nazwanych, ale z podanym przedrostkiem, lub nie, skonstruowanych z tych pierwszych.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela={[2]="wartość1", [10]="wartosć2", [15]="wartość3", ["18"]="wartość4", ["nazwa2"] = "wartosc5", ["nazwa10"] = "wartość6", ["nazwa18"] = "wartość7", };
local parametry_modul=require("Module:Parametry");
local liczba_elementow_nienazwanych_z_przedrostkiem_lub_nie_w_tablicy=parametry_modul["LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy"](tabela,"nazwa",true,false);
</syntaxhighlight>
Funkcja w postaci wartości {{Code|liczba_elementow_nienazwanych_z_przedrostkiem_lub_nie_w_tablicy}} zwróci liczbę {{Code|6}}, a nie {{Code|7}}, bo element {{Code|["18"]{{=}}"wartość4"}}, a w niej łańcuch znakowy klucza jest jedynie formą numerkową, a nie liczbą.
Powyższe wywołanie liczy liczbę parametrów nazwanych niepustych z przedrostkiem, lub czysto numerkowych - nienazwanych, ale nie również form numerkowych (szeregi), czyli zapisanych w postaci łańcucha znaków, nie jako typu {{Code|number}} wskazaną przez obudowaną funkcję {{LzLua|type}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
ikprnv6j1uh5xq37mji9r08tjqsrfiw
Wikibooks:Moduły/Parametry/Tom II
4
63968
553309
553028
2026-08-27T08:14:40Z
Persino
2851
/* {{Code|p.MinimalnyIMaksymalnyNumerParametru}} */
553309
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Są tutaj przedstawione funkcje liczenia minimalnej i maksymalnej wartości w tabeli lub szablonie.
== {{Code|p.MaksymalnaLiczbaParametruNienazwanegoSzablonu}} ==
Funkcja wywołana w ramce szablonu, który może nawet liczyć, i nie tylko, parametry niepuste, jeżeli to w nim wskazano w ramce dziecka szablonu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.MaksymalnaLiczbaParametruNienazwanegoSzablonu=function(frame)...end;
</syntaxhighlight>
Funkcja ma parametry, które przyjmuje, jako parametry dziecka ramki, też zbiera zmienne rodzica:
* {{Code|niepuste}} - niepuste, wtedy w liczy tylko elementy szablonu niepuste, tylko je wykorzystuje do rozważań,
* {{Code|frame:getParent().args}} - parametry szablonu rodzica dziecka ramki, w którym on został wywołany.
Przykład wywołania ramki dziecka w szablonie rodzica jest:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|MaksymalnaLiczbaParametruNienazwanegoSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|4=nazwa1|5=nazwa2|10=nazwa3|20=nazwa4}}
</syntaxhighlight>
Szablon zrzuci wynik {{Code|20}}, ponieważ ta nazwa (klucz) parametru jest największa.
Funkcja wykorzystuje do swojego działania: {{Code|{{sr|#p.MaksymalnaLiczbaParametruNienazwanegoTablicy|p=Parametry}}}}, który robi to samo, co podana funkcja, tylko jest inne obrazowanie zmiennych.
== {{Code|p.MaksymalnaLiczbaParametruNienazwanegoTablicy}} ==
Funkcja liczy maksymalny numer parametru nienazwanego, określony liczbą, mający w sobie, niekoniecznie, przerwy, nie zawsze zaczynający się od jedynki.
Jeżeli funkcja nie znalazłażadnego takiego elementu, to zwracana wtedy jest wartość {{Code|0}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.MaksymalnaLiczbaParametruNienazwanegoTablicy=function(tabela, wliczac)...end;
</syntaxhighlight>
Funkcja ma zmienne, które przyjmuje w wywołaniu funkcyjnym:
* {{Code|tabela}} - rozważana tabela, podana jako pierwszy argument funkcji,
* {{Code|wliczac}} - czy ma uwzględniać w swoich rozważaniach, podczas liczenia podanej tabeli, w nim elementy niepuste.
Przykładem wywołania jest dla parametrów niepustych tablicy:
<syntaxhighlight lang="lua">
local tabela={[4]="nazwa1",[5]="nazwa2",[10]="nazwa3",[20]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local maksymalna_wartosc_parametru_nienazwanego=parametry_modul.MaksymalnaLiczbaParametruNienazwanegoTablicy(tabela,true);
</syntaxhighlight>
Funkcja zwróci wynik o wartości, w parametrze: {{Code|maksymalna_wartosc_parametru_nienazwanego}} równej: {{Code|20}}.
== {{Code|p.MinimalnaLiczbaParametruNienazwanegoSzablonu}} ==
Funkcja wywołana w ramce szablonu, który może nawet liczyć, i nie tylko, parametry niepuste, jeżeli to w nim wskazano w ramce dziecka szablonu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.MaksymalnaLiczbaParametruNienazwanegoSzablonu=function(frame)...end;
</syntaxhighlight>
Funkcja ma parametry, które przyjmuje jako parametry dziecka ramki, też zbiera zmienne rodzica:
* {{Code|niepuste}} - niepuste, wtedy w liczy tylko elementy szablonu niepuste, tylko je wykorzystuje do rozważań,
* {{Code|frame:getParent().args}} - parametry szablonu rodzica dziecka ramki, w której on został wywołany.
Przykład wywołania ramki dziecka w szablonie rodzica jest:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|MinimalnaLiczbaParametruNienazwanegoSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|4=nazwa1|5=nazwa2|150nazwa3|20=nazwa4}}
</syntaxhighlight>
Szablon zrzuci liczbę {{Code|4}}, ponieważ ta nazwa parametru najmniejsza.
Funkcja wykorzystuje do swojego działania: {{Code|{{sr|#p.MinimalnaLiczbaParametruNienazwanegoTablicy|p=Parametry}}}}, który robi to samo, co podana funkcja, tylko jest inne obrazowanie zmiennych.
== {{Code|p.MinimalnaLiczbaParametruNienazwanegoTablicy}} ==
Funkcja liczy minimalny numer parametru nienazwanego, określony liczbą, mający w sobie, niekoniecznie mający przerwy, nie zawsze zaczynający się od jedynki, nie zawsze zaczynający się jedynki.
Jeżeli funkcja nie znalazłażadnego takiego elementu, to zwracana wtedy jest wartość {{Code|1}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.MinimalnaLiczbaParametruNienazwanegoTablicy=function(tabela, wliczac)...end;
</syntaxhighlight>
Funkcja ma zmienne, które przyjmuje w wywołaniu funkcyjnym:
* {{Code|tabela}} - rozważana tabela, podana jako pierwszy argument funkcji,
* {{Code|wliczac}} - czy ma uwzględniać w swoich rozważaniach, podczas liczenia podanej tabeli, jego elementy niepuste.
Przykładem wywołania jest dla parametrów niepustych tablicy:
<syntaxhighlight lang="lua">
local tabela={[4]="nazwa1",[5]="nazwa2",[10]="nazwa3",[20]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local minimalna_wartosc_parametru_nienazwanego=parametry_modul.MinimalnaLiczbaParametruNienazwanegoTablicy(tabela,true);
</syntaxhighlight>
Funkcja zwróci wynik o wartości, w parametrze: {{Code|minimalna_wartosc_parametru_nienazwanego}} równej: {{Code|4}}.
== {{Code|p.MinimalnyIMaksymalnyNumerParametru}} ==
Funkcja liczy minimalny i maksymalny numer parametru nazwanego, o pewnej podanej podstawie, numerowany liczbą po spacji, będąca liczbą naturalną, lub bez numerka, numerowanie tych argumentów może mieć przerwy, może liczyć jako od {{Code|0}} lub {{Code|1}}, w zależności od drugiego argumentu.
Jeśli funkcja nie znalazła zadnego takiego elementu, to wtedy dwie wartości, zwracane przez tę funkcję, minimalna przyjmuje wartość {{Code|1}}, a maksymalna {{Code|0}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.MinimalnyIMaksymalnyNumerParametruPodstawyTabeli(tabela,nazwa_parametru_okreslona, czy_od_zera)...end;
</syntaxhighlight>
Funkcja ma zmienne, które przyjmuje w wywołaniu funkcyjnym:
* {{Code|tabela}} - rozważana tabela, podana jako pierwszy argument funkcji,
* {{Code|nazwa_parametru_okreslona}} - podstawa parametrów numerowanych, np. mogący być: {{Code|nazwa 1}},
* {{Code|czy_od_zera}} - czy parametr bez numerka ma liczyć jako {{Code|0}}, jeśli {{Code|true}}, w przeciwnym wypadku jest liczony on jako {{Code|1}}.
Przykładem wywołania jest dla parametrów o nazwach niepustych w tablicy:
<syntaxhighlight lang="lua">
local tabela={["nazwa 4"]="tak",["nazwa 5"]="tak",["nazwa 10"]="tak",["nazwa 20"]="tak",};
local parametry_modul=require("Module:Parametry");
local minimalna_wartosc,maksymalna_wartosc=parametry_modul.MinimalnyIMaksymalnyNumerParametruPodstawyTabeli(tabela,"nazwa",false);
</syntaxhighlight>
Funkcja zwróci wynik o wartości, w parametrach: {{Code|minimalna_wartosc}} i {{Code|maksimum_wartosc}}, mający kolejno wartości liczbowe: {{Code|4}} i {{Code|20}}. Jest to minmalna i maksymalna wartość dla liczb po spacji siedzące przy podstawach parametrów, która jest podana w parametrze drugim funkcji.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
gvdl68dm6ydu862d2do32ssxydjrvez
553311
553309
2026-08-27T08:22:18Z
Persino
2851
/* {{Code|p.MinimalnyIMaksymalnyNumerParametru}} */
553311
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Są tutaj przedstawione funkcje liczenia minimalnej i maksymalnej wartości w tabeli lub szablonie.
== {{Code|p.MaksymalnaLiczbaParametruNienazwanegoSzablonu}} ==
Funkcja wywołana w ramce szablonu, który może nawet liczyć, i nie tylko, parametry niepuste, jeżeli to w nim wskazano w ramce dziecka szablonu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.MaksymalnaLiczbaParametruNienazwanegoSzablonu=function(frame)...end;
</syntaxhighlight>
Funkcja ma parametry, które przyjmuje, jako parametry dziecka ramki, też zbiera zmienne rodzica:
* {{Code|niepuste}} - niepuste, wtedy w liczy tylko elementy szablonu niepuste, tylko je wykorzystuje do rozważań,
* {{Code|frame:getParent().args}} - parametry szablonu rodzica dziecka ramki, w którym on został wywołany.
Przykład wywołania ramki dziecka w szablonie rodzica jest:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|MaksymalnaLiczbaParametruNienazwanegoSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|4=nazwa1|5=nazwa2|10=nazwa3|20=nazwa4}}
</syntaxhighlight>
Szablon zrzuci wynik {{Code|20}}, ponieważ ta nazwa (klucz) parametru jest największa.
Funkcja wykorzystuje do swojego działania: {{Code|{{sr|#p.MaksymalnaLiczbaParametruNienazwanegoTablicy|p=Parametry}}}}, który robi to samo, co podana funkcja, tylko jest inne obrazowanie zmiennych.
== {{Code|p.MaksymalnaLiczbaParametruNienazwanegoTablicy}} ==
Funkcja liczy maksymalny numer parametru nienazwanego, określony liczbą, mający w sobie, niekoniecznie, przerwy, nie zawsze zaczynający się od jedynki.
Jeżeli funkcja nie znalazłażadnego takiego elementu, to zwracana wtedy jest wartość {{Code|0}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.MaksymalnaLiczbaParametruNienazwanegoTablicy=function(tabela, wliczac)...end;
</syntaxhighlight>
Funkcja ma zmienne, które przyjmuje w wywołaniu funkcyjnym:
* {{Code|tabela}} - rozważana tabela, podana jako pierwszy argument funkcji,
* {{Code|wliczac}} - czy ma uwzględniać w swoich rozważaniach, podczas liczenia podanej tabeli, w nim elementy niepuste.
Przykładem wywołania jest dla parametrów niepustych tablicy:
<syntaxhighlight lang="lua">
local tabela={[4]="nazwa1",[5]="nazwa2",[10]="nazwa3",[20]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local maksymalna_wartosc_parametru_nienazwanego=parametry_modul.MaksymalnaLiczbaParametruNienazwanegoTablicy(tabela,true);
</syntaxhighlight>
Funkcja zwróci wynik o wartości, w parametrze: {{Code|maksymalna_wartosc_parametru_nienazwanego}} równej: {{Code|20}}.
== {{Code|p.MinimalnaLiczbaParametruNienazwanegoSzablonu}} ==
Funkcja wywołana w ramce szablonu, który może nawet liczyć, i nie tylko, parametry niepuste, jeżeli to w nim wskazano w ramce dziecka szablonu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.MaksymalnaLiczbaParametruNienazwanegoSzablonu=function(frame)...end;
</syntaxhighlight>
Funkcja ma parametry, które przyjmuje jako parametry dziecka ramki, też zbiera zmienne rodzica:
* {{Code|niepuste}} - niepuste, wtedy w liczy tylko elementy szablonu niepuste, tylko je wykorzystuje do rozważań,
* {{Code|frame:getParent().args}} - parametry szablonu rodzica dziecka ramki, w której on został wywołany.
Przykład wywołania ramki dziecka w szablonie rodzica jest:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|MinimalnaLiczbaParametruNienazwanegoSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|4=nazwa1|5=nazwa2|150nazwa3|20=nazwa4}}
</syntaxhighlight>
Szablon zrzuci liczbę {{Code|4}}, ponieważ ta nazwa parametru najmniejsza.
Funkcja wykorzystuje do swojego działania: {{Code|{{sr|#p.MinimalnaLiczbaParametruNienazwanegoTablicy|p=Parametry}}}}, który robi to samo, co podana funkcja, tylko jest inne obrazowanie zmiennych.
== {{Code|p.MinimalnaLiczbaParametruNienazwanegoTablicy}} ==
Funkcja liczy minimalny numer parametru nienazwanego, określony liczbą, mający w sobie, niekoniecznie mający przerwy, nie zawsze zaczynający się od jedynki, nie zawsze zaczynający się jedynki.
Jeżeli funkcja nie znalazłażadnego takiego elementu, to zwracana wtedy jest wartość {{Code|1}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.MinimalnaLiczbaParametruNienazwanegoTablicy=function(tabela, wliczac)...end;
</syntaxhighlight>
Funkcja ma zmienne, które przyjmuje w wywołaniu funkcyjnym:
* {{Code|tabela}} - rozważana tabela, podana jako pierwszy argument funkcji,
* {{Code|wliczac}} - czy ma uwzględniać w swoich rozważaniach, podczas liczenia podanej tabeli, jego elementy niepuste.
Przykładem wywołania jest dla parametrów niepustych tablicy:
<syntaxhighlight lang="lua">
local tabela={[4]="nazwa1",[5]="nazwa2",[10]="nazwa3",[20]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local minimalna_wartosc_parametru_nienazwanego=parametry_modul.MinimalnaLiczbaParametruNienazwanegoTablicy(tabela,true);
</syntaxhighlight>
Funkcja zwróci wynik o wartości, w parametrze: {{Code|minimalna_wartosc_parametru_nienazwanego}} równej: {{Code|4}}.
== {{Code|p.MinimalnyIMaksymalnyNumerParametruPodstawyTabeli}} ==
Funkcja liczy minimalny i maksymalny numer parametru nazwanego, o pewnej podanej podstawie, numerowany liczbą po spacji, będąca liczbą naturalną, lub bez numerka, numerowanie tych argumentów może mieć przerwy, może liczyć jako od {{Code|0}} lub {{Code|1}}, w zależności od drugiego argumentu.
Jeśli funkcja nie znalazła zadnego takiego elementu, to wtedy dwie wartości, zwracane przez tę funkcję, minimalna przyjmuje wartość {{Code|1}}, a maksymalna {{Code|0}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.MinimalnyIMaksymalnyNumerParametruPodstawyTabeli(tabela,nazwa_parametru_okreslona, czy_od_zera)...end;
</syntaxhighlight>
Funkcja ma zmienne, które przyjmuje w wywołaniu funkcyjnym:
* {{Code|tabela}} - rozważana tabela, podana jako pierwszy argument funkcji,
* {{Code|nazwa_parametru_okreslona}} - podstawa parametrów numerowanych, np. mogący być: {{Code|nazwa 1}},
* {{Code|czy_od_zera}} - czy parametr bez numerka ma liczyć jako {{Code|0}}, jeśli {{Code|true}}, w przeciwnym wypadku jest liczony on jako {{Code|1}}.
Przykładem wywołania jest dla parametrów o nazwach niepustych w tablicy:
<syntaxhighlight lang="lua">
local tabela={["nazwa 4"]="tak",["nazwa 5"]="tak",["nazwa 10"]="tak",["nazwa 20"]="tak",};
local parametry_modul=require("Module:Parametry");
local minimalna_wartosc,maksymalna_wartosc=parametry_modul.MinimalnyIMaksymalnyNumerParametruPodstawyTabeli(tabela,"nazwa",false);
</syntaxhighlight>
Funkcja zwróci wynik o wartości, w parametrach: {{Code|minimalna_wartosc}} i {{Code|maksimum_wartosc}}, mający kolejno wartości liczbowe: {{Code|4}} i {{Code|20}}. Jest to minmalna i maksymalna wartość dla liczb po spacji siedzące przy podstawach parametrów, która jest podana w parametrze drugim funkcji.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
9ipwa9g31vr76kfssbs2akkttiecbj9
553327
553311
2026-08-27T09:11:42Z
Persino
2851
/* {{Code|p.MinimalnyIMaksymalnyNumerParametruPodstawyTabeli}} */
553327
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Są tutaj przedstawione funkcje liczenia minimalnej i maksymalnej wartości w tabeli lub szablonie.
== {{Code|p.MaksymalnaLiczbaParametruNienazwanegoSzablonu}} ==
Funkcja wywołana w ramce szablonu, który może nawet liczyć, i nie tylko, parametry niepuste, jeżeli to w nim wskazano w ramce dziecka szablonu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.MaksymalnaLiczbaParametruNienazwanegoSzablonu=function(frame)...end;
</syntaxhighlight>
Funkcja ma parametry, które przyjmuje, jako parametry dziecka ramki, też zbiera zmienne rodzica:
* {{Code|niepuste}} - niepuste, wtedy w liczy tylko elementy szablonu niepuste, tylko je wykorzystuje do rozważań,
* {{Code|frame:getParent().args}} - parametry szablonu rodzica dziecka ramki, w którym on został wywołany.
Przykład wywołania ramki dziecka w szablonie rodzica jest:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|MaksymalnaLiczbaParametruNienazwanegoSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|4=nazwa1|5=nazwa2|10=nazwa3|20=nazwa4}}
</syntaxhighlight>
Szablon zrzuci wynik {{Code|20}}, ponieważ ta nazwa (klucz) parametru jest największa.
Funkcja wykorzystuje do swojego działania: {{Code|{{sr|#p.MaksymalnaLiczbaParametruNienazwanegoTablicy|p=Parametry}}}}, który robi to samo, co podana funkcja, tylko jest inne obrazowanie zmiennych.
== {{Code|p.MaksymalnaLiczbaParametruNienazwanegoTablicy}} ==
Funkcja liczy maksymalny numer parametru nienazwanego, określony liczbą, mający w sobie, niekoniecznie, przerwy, nie zawsze zaczynający się od jedynki.
Jeżeli funkcja nie znalazłażadnego takiego elementu, to zwracana wtedy jest wartość {{Code|0}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.MaksymalnaLiczbaParametruNienazwanegoTablicy=function(tabela, wliczac)...end;
</syntaxhighlight>
Funkcja ma zmienne, które przyjmuje w wywołaniu funkcyjnym:
* {{Code|tabela}} - rozważana tabela, podana jako pierwszy argument funkcji,
* {{Code|wliczac}} - czy ma uwzględniać w swoich rozważaniach, podczas liczenia podanej tabeli, w nim elementy niepuste.
Przykładem wywołania jest dla parametrów niepustych tablicy:
<syntaxhighlight lang="lua">
local tabela={[4]="nazwa1",[5]="nazwa2",[10]="nazwa3",[20]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local maksymalna_wartosc_parametru_nienazwanego=parametry_modul.MaksymalnaLiczbaParametruNienazwanegoTablicy(tabela,true);
</syntaxhighlight>
Funkcja zwróci wynik o wartości, w parametrze: {{Code|maksymalna_wartosc_parametru_nienazwanego}} równej: {{Code|20}}.
== {{Code|p.MinimalnaLiczbaParametruNienazwanegoSzablonu}} ==
Funkcja wywołana w ramce szablonu, który może nawet liczyć, i nie tylko, parametry niepuste, jeżeli to w nim wskazano w ramce dziecka szablonu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.MaksymalnaLiczbaParametruNienazwanegoSzablonu=function(frame)...end;
</syntaxhighlight>
Funkcja ma parametry, które przyjmuje jako parametry dziecka ramki, też zbiera zmienne rodzica:
* {{Code|niepuste}} - niepuste, wtedy w liczy tylko elementy szablonu niepuste, tylko je wykorzystuje do rozważań,
* {{Code|frame:getParent().args}} - parametry szablonu rodzica dziecka ramki, w której on został wywołany.
Przykład wywołania ramki dziecka w szablonie rodzica jest:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|MinimalnaLiczbaParametruNienazwanegoSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|4=nazwa1|5=nazwa2|150nazwa3|20=nazwa4}}
</syntaxhighlight>
Szablon zrzuci liczbę {{Code|4}}, ponieważ ta nazwa parametru najmniejsza.
Funkcja wykorzystuje do swojego działania: {{Code|{{sr|#p.MinimalnaLiczbaParametruNienazwanegoTablicy|p=Parametry}}}}, który robi to samo, co podana funkcja, tylko jest inne obrazowanie zmiennych.
== {{Code|p.MinimalnaLiczbaParametruNienazwanegoTablicy}} ==
Funkcja liczy minimalny numer parametru nienazwanego, określony liczbą, mający w sobie, niekoniecznie mający przerwy, nie zawsze zaczynający się od jedynki, nie zawsze zaczynający się jedynki.
Jeżeli funkcja nie znalazłażadnego takiego elementu, to zwracana wtedy jest wartość {{Code|1}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.MinimalnaLiczbaParametruNienazwanegoTablicy=function(tabela, wliczac)...end;
</syntaxhighlight>
Funkcja ma zmienne, które przyjmuje w wywołaniu funkcyjnym:
* {{Code|tabela}} - rozważana tabela, podana jako pierwszy argument funkcji,
* {{Code|wliczac}} - czy ma uwzględniać w swoich rozważaniach, podczas liczenia podanej tabeli, jego elementy niepuste.
Przykładem wywołania jest dla parametrów niepustych tablicy:
<syntaxhighlight lang="lua">
local tabela={[4]="nazwa1",[5]="nazwa2",[10]="nazwa3",[20]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local minimalna_wartosc_parametru_nienazwanego=parametry_modul.MinimalnaLiczbaParametruNienazwanegoTablicy(tabela,true);
</syntaxhighlight>
Funkcja zwróci wynik o wartości, w parametrze: {{Code|minimalna_wartosc_parametru_nienazwanego}} równej: {{Code|4}}.
== {{Code|p.MinimalnyIMaksymalnyNumerPodstawyParametruTabeli}} ==
Funkcja liczy minimalny i maksymalny numer parametru nazwanego, o pewnej podanej podstawie, numerowany liczbą po spacji, będąca liczbą naturalną, lub bez numerka, numerowanie tych argumentów może mieć przerwy, może liczyć jako od {{Code|0}} lub {{Code|1}}, w zależności od drugiego argumentu.
Jeśli funkcja nie znalazła zadnego takiego elementu, to wtedy dwie wartości, zwracane przez tę funkcję, minimalna przyjmuje wartość {{Code|1}}, a maksymalna {{Code|0}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.MinimalnyIMaksymalnyNumerPodstawyParametruTabeli(tabela,nazwa_parametru_okreslona, czy_od_zera)...end;
</syntaxhighlight>
Funkcja ma zmienne, które przyjmuje w wywołaniu funkcyjnym:
* {{Code|tabela}} - rozważana tabela, podana jako pierwszy argument funkcji,
* {{Code|nazwa_parametru_okreslona}} - podstawa parametrów numerowanych, np. mogący być: {{Code|nazwa 1}},
* {{Code|czy_od_zera}} - czy parametr bez numerka ma liczyć jako {{Code|0}}, jeśli {{Code|true}}, w przeciwnym wypadku jest liczony on jako {{Code|1}}.
Przykładem wywołania jest dla parametrów o nazwach niepustych w tablicy:
<syntaxhighlight lang="lua">
local tabela={["nazwa 4"]="tak",["nazwa 5"]="tak",["nazwa 10"]="tak",["nazwa 20"]="tak",};
local parametry_modul=require("Module:Parametry");
local minimalna_wartosc,maksymalna_wartosc=parametry_modul.MinimalnyIMaksymalnyNumerPodstawyParametruTabeli(tabela,"nazwa",false);
</syntaxhighlight>
Funkcja zwróci wynik o wartości, w parametrach: {{Code|minimalna_wartosc}} i {{Code|maksimum_wartosc}}, mający kolejno wartości liczbowe: {{Code|4}} i {{Code|20}}. Jest to minmalna i maksymalna wartość dla liczb po spacji siedzące przy podstawach parametrów, która jest podana w parametrze drugim funkcji.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
52ug8inp7r6qyzoftyy9ub5bqnrbecq
553328
553327
2026-08-27T09:14:48Z
Persino
2851
/* {{Code|p.MinimalnyIMaksymalnyNumerPodstawyParametruTabeli}} */
553328
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Są tutaj przedstawione funkcje liczenia minimalnej i maksymalnej wartości w tabeli lub szablonie.
== {{Code|p.MaksymalnaLiczbaParametruNienazwanegoSzablonu}} ==
Funkcja wywołana w ramce szablonu, który może nawet liczyć, i nie tylko, parametry niepuste, jeżeli to w nim wskazano w ramce dziecka szablonu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.MaksymalnaLiczbaParametruNienazwanegoSzablonu=function(frame)...end;
</syntaxhighlight>
Funkcja ma parametry, które przyjmuje, jako parametry dziecka ramki, też zbiera zmienne rodzica:
* {{Code|niepuste}} - niepuste, wtedy w liczy tylko elementy szablonu niepuste, tylko je wykorzystuje do rozważań,
* {{Code|frame:getParent().args}} - parametry szablonu rodzica dziecka ramki, w którym on został wywołany.
Przykład wywołania ramki dziecka w szablonie rodzica jest:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|MaksymalnaLiczbaParametruNienazwanegoSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|4=nazwa1|5=nazwa2|10=nazwa3|20=nazwa4}}
</syntaxhighlight>
Szablon zrzuci wynik {{Code|20}}, ponieważ ta nazwa (klucz) parametru jest największa.
Funkcja wykorzystuje do swojego działania: {{Code|{{sr|#p.MaksymalnaLiczbaParametruNienazwanegoTablicy|p=Parametry}}}}, który robi to samo, co podana funkcja, tylko jest inne obrazowanie zmiennych.
== {{Code|p.MaksymalnaLiczbaParametruNienazwanegoTablicy}} ==
Funkcja liczy maksymalny numer parametru nienazwanego, określony liczbą, mający w sobie, niekoniecznie, przerwy, nie zawsze zaczynający się od jedynki.
Jeżeli funkcja nie znalazłażadnego takiego elementu, to zwracana wtedy jest wartość {{Code|0}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.MaksymalnaLiczbaParametruNienazwanegoTablicy=function(tabela, wliczac)...end;
</syntaxhighlight>
Funkcja ma zmienne, które przyjmuje w wywołaniu funkcyjnym:
* {{Code|tabela}} - rozważana tabela, podana jako pierwszy argument funkcji,
* {{Code|wliczac}} - czy ma uwzględniać w swoich rozważaniach, podczas liczenia podanej tabeli, w nim elementy niepuste.
Przykładem wywołania jest dla parametrów niepustych tablicy:
<syntaxhighlight lang="lua">
local tabela={[4]="nazwa1",[5]="nazwa2",[10]="nazwa3",[20]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local maksymalna_wartosc_parametru_nienazwanego=parametry_modul.MaksymalnaLiczbaParametruNienazwanegoTablicy(tabela,true);
</syntaxhighlight>
Funkcja zwróci wynik o wartości, w parametrze: {{Code|maksymalna_wartosc_parametru_nienazwanego}} równej: {{Code|20}}.
== {{Code|p.MinimalnaLiczbaParametruNienazwanegoSzablonu}} ==
Funkcja wywołana w ramce szablonu, który może nawet liczyć, i nie tylko, parametry niepuste, jeżeli to w nim wskazano w ramce dziecka szablonu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.MaksymalnaLiczbaParametruNienazwanegoSzablonu=function(frame)...end;
</syntaxhighlight>
Funkcja ma parametry, które przyjmuje jako parametry dziecka ramki, też zbiera zmienne rodzica:
* {{Code|niepuste}} - niepuste, wtedy w liczy tylko elementy szablonu niepuste, tylko je wykorzystuje do rozważań,
* {{Code|frame:getParent().args}} - parametry szablonu rodzica dziecka ramki, w której on został wywołany.
Przykład wywołania ramki dziecka w szablonie rodzica jest:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|MinimalnaLiczbaParametruNienazwanegoSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|4=nazwa1|5=nazwa2|150nazwa3|20=nazwa4}}
</syntaxhighlight>
Szablon zrzuci liczbę {{Code|4}}, ponieważ ta nazwa parametru najmniejsza.
Funkcja wykorzystuje do swojego działania: {{Code|{{sr|#p.MinimalnaLiczbaParametruNienazwanegoTablicy|p=Parametry}}}}, który robi to samo, co podana funkcja, tylko jest inne obrazowanie zmiennych.
== {{Code|p.MinimalnaLiczbaParametruNienazwanegoTablicy}} ==
Funkcja liczy minimalny numer parametru nienazwanego, określony liczbą, mający w sobie, niekoniecznie mający przerwy, nie zawsze zaczynający się od jedynki, nie zawsze zaczynający się jedynki.
Jeżeli funkcja nie znalazłażadnego takiego elementu, to zwracana wtedy jest wartość {{Code|1}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.MinimalnaLiczbaParametruNienazwanegoTablicy=function(tabela, wliczac)...end;
</syntaxhighlight>
Funkcja ma zmienne, które przyjmuje w wywołaniu funkcyjnym:
* {{Code|tabela}} - rozważana tabela, podana jako pierwszy argument funkcji,
* {{Code|wliczac}} - czy ma uwzględniać w swoich rozważaniach, podczas liczenia podanej tabeli, jego elementy niepuste.
Przykładem wywołania jest dla parametrów niepustych tablicy:
<syntaxhighlight lang="lua">
local tabela={[4]="nazwa1",[5]="nazwa2",[10]="nazwa3",[20]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local minimalna_wartosc_parametru_nienazwanego=parametry_modul.MinimalnaLiczbaParametruNienazwanegoTablicy(tabela,true);
</syntaxhighlight>
Funkcja zwróci wynik o wartości, w parametrze: {{Code|minimalna_wartosc_parametru_nienazwanego}} równej: {{Code|4}}.
== {{Code|p.MinimalnyIMaksymalnyNumerPodstawyParametruTabeli}} ==
Funkcja liczy minimalny i maksymalny numer parametru nazwanego, o pewnej podanej podstawie, numerowany liczbą po spacji, będąca liczbą naturalną, lub bez numerka, numerowanie tych argumentów może mieć przerwy, może liczyć jako od {{Code|0}} lub {{Code|1}}, w zależności od drugiego argumentu.
Jeśli funkcja nie znalazła zadnego takiego elementu, to wtedy dwie wartości, zwracane przez tę funkcję, minimalna przyjmuje wartość {{Code|1}}, a maksymalna {{Code|0}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.MinimalnyIMaksymalnyNumerPodstawyParametruTabeli(tabela,podstawa_parametru, czy_od_zera)...end;
</syntaxhighlight>
Funkcja ma zmienne, które przyjmuje w wywołaniu funkcyjnym:
* {{Code|tabela}} - rozważana tabela, podana jako pierwszy argument funkcji,
* {{Code|podstawa_parametru}} - podstawa parametrów numerowanych, np. mogący być: {{Code|nazwa 1}},
* {{Code|czy_od_zera}} - czy parametr bez numerka ma liczyć jako {{Code|0}}, jeśli {{Code|true}}, w przeciwnym wypadku jest liczony on jako {{Code|1}}.
Przykładem wywołania jest dla parametrów o nazwach niepustych w tablicy:
<syntaxhighlight lang="lua">
local tabela={["nazwa 4"]="tak",["nazwa 5"]="tak",["nazwa 10"]="tak",["nazwa 20"]="tak",};
local parametry_modul=require("Module:Parametry");
local minimalna_wartosc,maksymalna_wartosc=parametry_modul.MinimalnyIMaksymalnyNumerPodstawyParametruTabeli(tabela,"nazwa",false);
</syntaxhighlight>
Funkcja zwróci wynik o wartości, w parametrach: {{Code|minimalna_wartosc}} i {{Code|maksimum_wartosc}}, mający kolejno wartości liczbowe: {{Code|4}} i {{Code|20}}. Jest to minmalna i maksymalna wartość dla liczb po spacji siedzące przy podstawach parametrów, która jest podana w parametrze drugim funkcji.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
g7mqdkxqsp5s6hb8z10q9ex2vrax9wo
Śpiewnik/A lulu, a lulu
0
63989
553280
553276
2026-08-26T18:12:33Z
Ashaio
4702
lit.
553280
wikitext
text/x-wiki
{{T|Śpiewnik/NawigacjaOpis}}
== Muzyka ==
'''Autor:''' nieznany (melodia ludowa)
'''Opracowanie:''' Oskar Kolberg (1814–1890)
<score raw="1" vorbis="1">
\version "2.19.0"
\header{
title = "A lulu, lu lulu"
poet = "Słowa: autor nieznany (kołysanka ludowa)"
composer = "Muzyka: autor nieznany (melodia ludowa, Krzeszowice)"
arranger = "Opracowanie: Oskar Kolberg (1814–1890)"
tagline = ""
}
\score{
\new Staff \with {midiInstrument = "pan flute"} \relative f'{
\clef treble
\key f \major
\time 2/4
% \tempo 4 = 100
\autoBeamOff
a8^\mf c c4 |
<< {\voiceOne \stemUp c8 bes4} \new Voice {\voiceTwo \stemDown g8 bes4} >> \oneVoice \stemNeutral g8 | %%%
bes8 d d4 |
<< {\voiceOne \stemUp d8 c4 } \new Voice {\voiceTwo \stemDown a8 c4} >> \oneVoice \stemNeutral a8 | %%%
c8. <a f>16 <a f>4 |
\grace {bes16} bes8 <g c,>4 \grace {bes16} bes8 | %%%
\grace {bes8} d8. c16 bes4 |
e,8 f4 f8 |
% ---
\set Staff.midiInstrument = "fiddle"
a8[ f'] f4 |
\grace {e8} f8 d4 bes8 |
d8[ f] f4 |
\grace {e8} f8 c4 << {\voiceOne \stemUp f8} \new Voice {\voiceTwo a,8} >> \oneVoice \stemNeutral |
<f a>8.\>[ d'16] c4 |
a16[ bes] g4 g8 |
d'8.[ c16] bes4 |
e,8 f4.\! \bar "|."
}
\addlyrics{ \small {
A lu -- lu, lu lu lu,
Ko -- lib -- ka z_mar -- mu -- ru,
Pie -- lusz -- ki z_rą -- be -- czku,
Lu -- laj a -- nio -- łe -- czku.
} }
\midi{ \tempo 4=70}
\layout{}
}
</score>
'''Źródło:''' Oskar Kolberg, ''[https://polona.pl/item-view/f92ae25f-266a-4649-94bf-c907958a2fbc?page=447 Lud : jego zwyczaje, sposób życia, mowa, podania, przysłowia, obrzędy, gusła, zabawy, pieśni, muzyka i tańce. Ser. 6, Krakowskie. Cz. 2]''. Kraków, 1873. S. 428 (pieśń 687).
== Tekst ==
'''Autor:''' nieznany (kołysanka ludowa)
'''Opracowanie:''' Oskar Kolberg (1814–1890)
{{Kolumny|2|
<poem>
1. A lulu, lu lulu,
Kolibka z marmuru,
Pieluszki z rąbeczku,
Lulaj aniołeczku.
2. Czerwone jagody
Spadają do wody,
Jużem przekonany,
Że nie mam urody.
3. Choć urody nie mam,
Jestem se poczciwy,
Będę Boga prosić,
To będę szczęśliwy.
4. Choć urody nie mam,
Majątku niewiele,
I tak was nie proszę
O nic przyjaciele.
</poem>
}}
'''Źródło:''' Oskar Kolberg, ''[https://polona.pl/item-view/f92ae25f-266a-4649-94bf-c907958a2fbc?page=447 Lud : jego zwyczaje, sposób życia, mowa, podania, przysłowia, obrzędy, gusła, zabawy, pieśni, muzyka i tańce. Ser. 6, Krakowskie. Cz. 2]''. Kraków, 1873. S. 428 (pieśń 687).
== Zobacz też ==
* ''[https://bibliotekapiosenki.pl/utwory/Kolysanka_(A_lulu_lulu_lu_kolebka_z_marmuru_) Kołysanka (A lulu lulu lu kolebka z marmuru)]'' w serwisie ''[https://bibliotekapiosenki.pl/ Cyfrowa Biblioteka Polskiej Piosenki]''
* ''[https://bibliotekapiosenki.pl/utwory/A_luli A luli]'' w serwisie ''[https://bibliotekapiosenki.pl/ Cyfrowa Biblioteka Polskiej Piosenki]''
018tt61wdntm9mn951x9q7205wjjjc0