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 "&nbsp;- " or ""))); else lancuch_znakow=lancuch_znakow..((i==1)and ((przecinek_na_poczatku)and ", " or "") or ((i<koniec)and ", " or "&nbsp;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 "&nbsp;- " or ""))); else lancuch_znakow=lancuch_znakow..((i==1)and ((przecinek_na_poczatku)and ", " or "") or ((i<koniec)and ", " or "&nbsp;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 "&nbsp;- " or ""))); else lancuch_znakow=lancuch_znakow..((i==1)and ((przecinek_na_poczatku)and ", " or "") or ((i<koniec)and ", " or "&nbsp;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 = &#124; | komórka 1_3 = {{s|!}} | komórka 2_1 = __!!__ | komórka 2_2 = &#124;&#124; | komórka 2_3 = {{s|!!}} | komórka 3_1 = __(__ | komórka 3_2 = &#123; | komórka 3_3 = {{s|(}} | komórka 4_1 = __((__ | komórka 4_2 = &#123;&#123; | komórka 4_3 = {{s|((}} | komórka 5_1 = __(((__ | komórka 5_2 = &#123;&#123;&#123; | komórka 5_3 = {{s|(((}} | komórka 6_1 = __)__ | komórka 6_2 = &#125; | komórka 6_3 = {{s|)}} | komórka 7_1 = __))__ | komórka 7_2 = &#125;&#125; | komórka 7_3 = {{s|))}} | komórka 8_1 = __)))__ | komórka 8_2 = &#125;&#125;&#125; | komórka 8_3 = {{s|)))}} | komórka 9_1 = __!(__ | komórka 9_2 = &#91; | komórka 9_3 = {{s|!(}} | komórka 10_1 = __!((__ | komórka 10_2 = &#91;&#91; | komórka 10_3 = {{s|!((}} | komórka 11_1 = __)!__ | komórka 11_2 = &#93; | komórka 11_3 = {{s|)!}} | komórka 12_1 = __))!__ | komórka 12_2 = &#93;&#93; | 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&nbsp;+&nbsp;2}}}} → {{Tt|{{Chem|C|n|H|2n&nbsp;+&nbsp;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 = &#124; | komórka 1_3 = {{s|!}} | komórka 2_1 = __!!__ | komórka 2_2 = &#124;&#124; | komórka 2_3 = {{s|!!}} | komórka 3_1 = __(__ | komórka 3_2 = &#123; | komórka 3_3 = {{s|(}} | komórka 4_1 = __((__ | komórka 4_2 = &#123;&#123; | komórka 4_3 = {{s|((}} | komórka 5_1 = __(((__ | komórka 5_2 = &#123;&#123;&#123; | komórka 5_3 = {{s|(((}} | komórka 6_1 = __)__ | komórka 6_2 = &#125; | komórka 6_3 = {{s|)}} | komórka 7_1 = __))__ | komórka 7_2 = &#125;&#125; | komórka 7_3 = {{s|))}} | komórka 8_1 = __)))__ | komórka 8_2 = &#125;&#125;&#125; | komórka 8_3 = {{s|)))}} | komórka 9_1 = __!(__ | komórka 9_2 = &#91; | komórka 9_3 = {{s|!(}} | komórka 10_1 = __!((__ | komórka 10_2 = &#91;&#91; | komórka 10_3 = {{s|!((}} | komórka 11_1 = __)!__ | komórka 11_2 = &#93; | komórka 11_3 = {{s|)!}} | komórka 12_1 = __))!__ | komórka 12_2 = &#93;&#93; | 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&nbsp;+&nbsp;2}}}} → {{Tt|{{Chem|C|n|H|2n&nbsp;+&nbsp;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 = &#124; | komórka 1_3 = {{s|!}} | komórka 2_1 = __!!__ | komórka 2_2 = &#124;&#124; | komórka 2_3 = {{s|!!}} | komórka 3_1 = __(__ | komórka 3_2 = &#123; | komórka 3_3 = {{s|(}} | komórka 4_1 = __((__ | komórka 4_2 = &#123;&#123; | komórka 4_3 = {{s|((}} | komórka 5_1 = __(((__ | komórka 5_2 = &#123;&#123;&#123; | komórka 5_3 = {{s|(((}} | komórka 6_1 = __)__ | komórka 6_2 = &#125; | komórka 6_3 = {{s|)}} | komórka 7_1 = __))__ | komórka 7_2 = &#125;&#125; | komórka 7_3 = {{s|))}} | komórka 8_1 = __)))__ | komórka 8_2 = &#125;&#125;&#125; | komórka 8_3 = {{s|)))}} | komórka 9_1 = __!(__ | komórka 9_2 = &#91; | komórka 9_3 = {{s|!(}} | komórka 10_1 = __!((__ | komórka 10_2 = &#91;&#91; | komórka 10_3 = {{s|!((}} | komórka 11_1 = __)!__ | komórka 11_2 = &#93; | komórka 11_3 = {{s|)!}} | komórka 12_1 = __))!__ | komórka 12_2 = &#93;&#93; | 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&nbsp;+&nbsp;2}}}} → {{Tt|{{Chem|C|n|H|2n&nbsp;+&nbsp;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 = &#124; | komórka 1_3 = {{s|!}} | komórka 2_1 = __!!__ | komórka 2_2 = &#124;&#124; | komórka 2_3 = {{s|!!}} | komórka 3_1 = __(__ | komórka 3_2 = &#123; | komórka 3_3 = {{s|(}} | komórka 4_1 = __((__ | komórka 4_2 = &#123;&#123; | komórka 4_3 = {{s|((}} | komórka 5_1 = __(((__ | komórka 5_2 = &#123;&#123;&#123; | komórka 5_3 = {{s|(((}} | komórka 6_1 = __)__ | komórka 6_2 = &#125; | komórka 6_3 = {{s|)}} | komórka 7_1 = __))__ | komórka 7_2 = &#125;&#125; | komórka 7_3 = {{s|))}} | komórka 8_1 = __)))__ | komórka 8_2 = &#125;&#125;&#125; | komórka 8_3 = {{s|)))}} | komórka 9_1 = __!(__ | komórka 9_2 = &#91; | komórka 9_3 = {{s|!(}} | komórka 10_1 = __!((__ | komórka 10_2 = &#91;&#91; | komórka 10_3 = {{s|!((}} | komórka 11_1 = __)!__ | komórka 11_2 = &#93; | komórka 11_3 = {{s|)!}} | komórka 12_1 = __))!__ | komórka 12_2 = &#93;&#93; | 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&nbsp;+&nbsp;2}}}} → {{Tt|{{Chem|C|n|H|2n&nbsp;+&nbsp;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.&nbsp;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.&nbsp;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