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 MediaWiki:Scribunto-doc-page-show 8 33746 553512 531754 2026-08-30T06:08:41Z Persino 2851 553512 wikitext text/x-wiki {{#switch:{{NAMESPACE}} | {{Ns:Module}} = {{Dokumentacja|$1}} {{#switch:<!-- -->{{#invoke:Parametry|Or |{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Brudnopis)/}} |{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład)/}} }} | Brudnopis = {{Kategoria|Moduły, z opisami, brudnopisu}} | Wikibooks/Przykład = {{Kategoria|Szablony, moduły Lua w Scribunto, przykładów stron projektu}} | #default = {{Kategoria|Moduły z opisami}} }} | #default = {{Dokumentacja|zawartość=To jest strona komunikatu dla modułów z opisem, by wyświetlić jego jawny istniejący opis o adresie: Module:$1/opis, na stronie danego modułu. Zobacz też komunikaty: {{s|int:Scribunto-doc-page-header}} i {{s|int:Scribunto-doc-page-does-not-exist}}.}} }} i5xhapgtftvllz4p7encnoa8s5k37rn 553513 553512 2026-08-30T06:13:02Z Persino 2851 553513 wikitext text/x-wiki {{#switch:{{NAMESPACE}} | {{Ns:Module}} = {{Dokumentacja|$1}} {{#switch:<!-- -->{{#invoke:Parametry|Or |{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Brudnopis)/}} |{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład)/}} }} | Brudnopis = {{Kategoria|Moduły, z opisami, brudnopisu}} | Wikibooks/Przykład = {{Kategoria|Szablony, opisy modułów Lua w Scribunto, przykładów stron projektu}} | #default = {{Kategoria|Moduły z opisami}} }} | #default = {{Dokumentacja|zawartość=To jest strona komunikatu dla modułów z opisem, by wyświetlić jego jawny istniejący opis o adresie: Module:$1/opis, na stronie danego modułu. Zobacz też komunikaty: {{s|int:Scribunto-doc-page-header}} i {{s|int:Scribunto-doc-page-does-not-exist}}.}} }} hhfrpuekgkgb8t60isv7nsraosqjujg 553517 553513 2026-08-30T06:21:32Z Persino 2851 553517 wikitext text/x-wiki {{#switch:{{NAMESPACE}} | {{Ns:Module}} = {{Dokumentacja|$1}} {{#switch:<!-- -->{{#invoke:Parametry|Or |{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Brudnopis)/}} |{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład)/}} }} | Brudnopis = {{Kategoria|Moduły, z opisami, brudnopisu}} | Wikibooks/Przykład = {{Kategoria|Szablony, moduły Lua w Scribunto, z opisami, przykładów stron projektu}} | #default = {{Kategoria|Moduły z opisami}} }} | #default = {{Dokumentacja|zawartość=To jest strona komunikatu dla modułów z opisem, by wyświetlić jego jawny istniejący opis o adresie: Module:$1/opis, na stronie danego modułu. Zobacz też komunikaty: {{s|int:Scribunto-doc-page-header}} i {{s|int:Scribunto-doc-page-does-not-exist}}.}} }} blsnbggyeg9y5n4gke9vwze34c7slbo MediaWiki:Scribunto-doc-page-does-not-exist 8 33747 553516 531758 2026-08-30T06:21:25Z Persino 2851 553516 wikitext text/x-wiki {{#switch:{{NAMESPACE}} | {{Ns:Module}} = {{#if:{{#invoke:Łatki|contentMatch|^%s*return%s+require%s*%(%s*"(.-)"%s*%)}} |{{Ombox|typ=wiadomość|grafika={{Ikona|stop}}|tekst=To jest moduł przekierowujący, który wskazuje na {{lo|{{#invoke:Łatki|contentMatch|^%s*return%s+require%s*%(%s*"(.-)"%s*%)}}}}.}} }}<!-- -->{{#switch:{{#invoke:Parametry|Or |{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Mapa/dane)/}} |{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(ISBN)/}} |{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład)/}} |{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Brudnopis)/}} |{{PAGENAME}} }} | Mapa/dane = {{Dokumentacja | zawartość = {{Ombox|tekst = Ten moduł jest szablonem z danymi do '''{{lpw2|Szablony lokalizacyjne}}'''.{{Br}}Opis pochodzi z {{m|Mapa/doc}}.}}<!-- --><templatestyles src="Moduł:Infobox/styles.css" />{{#invoke:Mapa/doc|opis}} }}{{Kategoria|Szablony lokalizacyjne - podmoduły modułu Mapa}} | ISBN = {{#if:{{Dopasuj|ciąg={{SUBPAGENAME}}|wzór=^{{!(}}0-9{{)!}}+X?$}} |{{Dokumentacja |zawartość = {{Ombox|tekst = Ten moduł jest szablonem deklarującym formalnie błędny numer [{{lpg|International Standard Book Number|ISBN}}.}}{{#invoke:ISBN|opis}}}}{{Kategoria|Błędny numer ISBN}} |{{Dokumentacja}}{{Kategoria|ISBN}} }} | Wikibooks/Przykład = {{Dokumentacja|zawartość=Moduły przykładów potrzebne do zaprezentowania idei działania, czy opisy, sformułowanych na polskim {{NAZWASERWISU|link=tak|wikipedia=tak|po=ie}} funkcji na stronach przestrzeni: {{Np|Module|link=tak}}, jak one działają, do czego służą, jakie przyjmują parametry, i co się z nimi robi.}}{{Kategoria|Szablony, moduły Lua w Scribunto, bez opisów, przykładów stron projektu}} | Brudnopis = ''Dokumentacja dla tego modułu może zostać utworzona pod nazwą [[:$1]]''.{{Kategoria|Moduły, bez opisów, brudnopisu}} | #default = {{Dokumentacja}}{{Kategoria|Moduły bez opisów}} }} | #default = {{Dokumentacja|zawartość=To jest strona komunikatu dla modułów bez opisu, by wyświetlić jego automatyczny opis ustawiony na tej stronie za pomocą pewnych szablonów, czy modułów. Zobacz też komunikaty: {{s|int:Scribunto-doc-page-show}} i {{s|int:Scribunto-doc-page-header}}.}} }} 7wz21mbpft4xyx4fb8yatttn2mnjbdg Moduł:Parametry 828 45669 553522 553330 2026-08-30T08:05:24Z Persino 2851 553522 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 local klucz=keys[1]; return klucz,tablica[klucz]; end; for k,_ in ipairs(keys)do if(keys[k]==klucz)then local klucz=keys[k+1]; return klucz,tablica[klucz]; 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; exdyyisiupqykwozf1qzywggho4ql46 Szablon:ŹródłoKodu/opis 10 51885 553540 498695 2026-08-30T10:35:31Z Persino 2851 /* Możliwe szablony pochodne */ 553540 wikitext text/x-wiki {{Podstrona dokumentacji}} <!-- DODAWAJ KATEGORIE NA DOLE STRONY --> == Użycie == Szablon służy do wyświetlania w ramce, dla przykładu {{Code|język{{=}}xml}}, znaczników {{Code|<nowiki><syntaxhighlight lang="xml">{{{1}}}</syntaxhighlight></nowiki>}}, pokolorowanego kodu w różnych językach komputerowych, nawet znacznikowych. W przypadku znaczników XML interpretowanych przez {{Code|wiki}} należy używać szablonów {{s|Mniejszy}} i {{s|Większy}}, (w przypadku znaczników tu omawianych) oraz {{s|{{=}}}} (we wszystkich przypadkach przed zabezpieczeniem przy pierwszym tym znaku w danym polu parametru, by część poprzedzająca nie była interpretowana jako parametr, a część następująca po nim jako wartość), jak np. dla kodu: {{Code|{{Mniejszy}}ref name{{=}}"Nazwa przypisu"{{Większy}}W przypisie może być cokolwiek{{Mniejszy}}/ref{{Większy}}}}, np. tworząc kod: {{Pre|{{s|ŹródłoKodu|język{{=}}xml| {{s|Mniejszy}}ref name{{s|{{=}}}}"Nazwa przypisu"{{s|Większy}}W przypisie może być cokolwiek{{s|Mniejszy}}/ref{{s|Większy}} {{s|Mniejszy}}ref name{{s|{{=}}}}"Wydawca: Jakiś tytuł"{{s|Większy}}Franciszka Tłumacząca, ''Przypisy często zawierają odniesienia do literatury lub źródeł internetowych''{{s|Mniejszy}}/ref{{s|Większy}} }}}} A jego wywołanie jest takie: {{ŹródłoKodu|język=xml| {{Mniejszy}}ref name{{=}}"Nazwa przypisu"{{Większy}}W przypisie może być cokolwiek{{Mniejszy}}/ref{{Większy}} {{Mniejszy}}ref name{{=}}"Wydawca: Jakiś tytuł">Franciszka Tłumacząca, ''Przypisy często zawierają odniesienia do literatury lub źródeł internetowych''{{Mniejszy}}/ref{{Większy}} }} == Możliwe szablony pochodne == * Szablony zbudowane w oparciu szablon: {{s|ŹródłoKodu}}, za pomocą ramek, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w oparciu o ramki programistyczne {{Code|{{m|Ramka|Szablon|Nazwa=Źródłokodu|język=...}}, też napisane w tym języku, gdzie ten język generuje te szczególne postacie tego szablonu, jako: ** {{s|ŹródłoKodu}} - szablon równy zawartości tego szablonu, ** {{s|ŹródłoHtml}} - szablon wyświetlający i kolorujący składnie HTML, równoważny wywołaniu: {{s|ŹródłoKodu|język{{=}}html|...}}, ** {{s|ŹródłoCss}} - szablon wyświetlający i kolorujący składnie CSS, równoważny wywołaniu: {{s|ŹródłoKodu|język{{=}}css|...}}. ** {{s|ŹródłoXml}} - szablon wyświetlający i kolorujący składnie XML, równoważny wywołaniu: {{s|ŹródłoKodu|język{{=}}xml|...}}. == Opis parametrów == ; Parametry{{Dk}} * {{Code|1}} - kod (wikikod) do wyświetlenia pokolorowania w obramowanej ramce (konieczny), * {{Code|język}} - język składni tego kodu (wikikodu), np.: {{Parametr|język|html}}, {{Parametr|język|xml}}, {{Parametr|język|css}}. Tylko przy szablonie kombajnie {{s|ŹródłoKodu}}, przy innych szablonach zbudowanych o niego tego parametru nie ma (sugerowany). ; Nagłówek i stopka{{Dk}} * {{Code|nagłówek}} - nagłówek podświetlania składni kodu (opcjonalny), * {{Code|stopka}} - stopka podświetlania składni kodu (opcjonalny), * {{Code|styl nagłówka}} - style nagłówka kaskadowych arkuszy stylów CSS (opcjonalny), * {{Code|styl stopki}} - style stopki kaskadowych arkuszy stylów CSS (opcjonalny). ; Kod{{Dk}} * {{Code|styl kodu}} - style, kaskadowych arkuszy stylów CSS, kodu komputerowego w różnych językach programowania, podświetlania składni (opcjonalny). ; Parametry nad-ramki podświetlającego kod{{Dk}} * {{Code|id}} - identyfikator znacznika {{Tag|div}} (opcjonalny), * {{Code|klasa}} - klasy reguł kaskadowych styli arkuszy stylów (opcjonalny), * {{Code|styl}} - style kaskadowych arkuszy stylów CSS (opcjonalny). == Przykład == ; Przykład - język HTML {{Pre|{{s|ŹródłoKodu|język{{=}}html|nagłówek{{=}}Nagłówek kodu|stopka{{=}}Stopka kodu|{{s|Integrowanie|Zapałka/jeden|nazwa przestrzeni nazw{{=}}(main)|nazwa jednostki{{=}}Strona/Podstrona}}}}}} ; Wynik {{ŹródłoKodu|język=html|nagłówek=Nagłówek kodu|stopka=Stopka kodu|{{Integrowanie|Zapałka/jeden|nazwa przestrzeni nazw{{=}}(main)|nazwa jednostki{{=}}Strona/Podstrona}}}} ---- ; Przykład - język XML {{Pre|{{s|ŹródłoKodu|język{{=}}xml|nagłówek{{=}}Nagłówek kodu|stopka{{=}}Stopka kodu|<xml lang{{((}}{{=}}{{))}}"pl">Oto jest pytanie</xml>}}}} ; Wynik {{ŹródłoKodu|język=xml|nagłówek=Nagłówek kodu|stopka=Stopka kodu|<xml lang{{=}}"pl">Oto jest pytanie</xml>}} ---- ; Przykład - język CSS {{Pre|{{s|ŹródłoKodu|język{{=}}css|nagłówek{{=}}Nagłówek kodu|stopka{{=}}Stopka kodu| .klasa_jeden{{(}} width:100px; height:150px; font-fize:12px; white-space:nowrap; {{)}}}}}} ; Wynik {{ŹródłoKodu|język=css|nagłówek=Nagłówek kodu|stopka=Stopka kodu| .klasa_jeden{{(}} width:100px; height:150px; font-size:12px; white-space:nowrap; {{)}}}} == Błędy == Błędy należy zgłaszać na stronie {{kwestie techniczne}}. == Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) == <templatedata> { "params": { "1": { "description": "Kod w jakimś języku komputerowych.", "required": true, "type": "string" }, "język": { "description": "Kod języka komputerowego.", "type": "string", "default": "html", "suggested": true }, "nagłówek": { "description": "Nagłówek podświetlania składni kodu.", "type": "string" }, "stopka": { "description": "Stopka podświetlania składni kodu.", "type": "string" }, "styl nagłówka": { "description": "Style nagłówka kaskadowych arkuszy stylów CSS.", "type": "unknown" }, "styl stopki": { "description": "Style nagłówka kaskadowych arkuszy stylów CSS." }, "id": { "description": "Identyfikator znacznika <div>...</div>." }, "klasa": { "description": "Klasy reguł kaskadowych styli arkuszy stylów." }, "styl": { "description": "Style kaskadowych arkuszy stylów CSS." }, "styl kodu": { "description": "Style, kaskadowych arkuszy stylów CSS, kodu komputerowego w różnych językach programowania podświetlania składni.", "type": "unknown" } }, "description": "Szablon kolorujący składnie kodu w różnych językach komputerowych.", "paramOrder": [ "1", "język", "nagłówek", "stopka", "styl nagłówka", "styl stopki", "styl kodu", "id", "klasa", "styl" ] } </templatedata> == Zobacz też == * {{s|LuaSubst}} - szablon do zwracania zawartości stron, w postaci nierozwiniętego wikitekstu, na tym projekcie, a do kolorowania składni tego kodu służy ten szablon. {{Szablony wyświetlające rozwinięty kod}} {{BrClear}} <includeonly><!-- ++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII --> {{Kategorie | Szablony wyświetlające kod w językach komputerowych | Szablony ramek wyświetlające kod komputerowy }} </includeonly> 0d62syc6j5mq2ri7luyt9kc4mjetama 553541 553540 2026-08-30T10:35:53Z Persino 2851 /* Możliwe szablony pochodne */ 553541 wikitext text/x-wiki {{Podstrona dokumentacji}} <!-- DODAWAJ KATEGORIE NA DOLE STRONY --> == Użycie == Szablon służy do wyświetlania w ramce, dla przykładu {{Code|język{{=}}xml}}, znaczników {{Code|<nowiki><syntaxhighlight lang="xml">{{{1}}}</syntaxhighlight></nowiki>}}, pokolorowanego kodu w różnych językach komputerowych, nawet znacznikowych. W przypadku znaczników XML interpretowanych przez {{Code|wiki}} należy używać szablonów {{s|Mniejszy}} i {{s|Większy}}, (w przypadku znaczników tu omawianych) oraz {{s|{{=}}}} (we wszystkich przypadkach przed zabezpieczeniem przy pierwszym tym znaku w danym polu parametru, by część poprzedzająca nie była interpretowana jako parametr, a część następująca po nim jako wartość), jak np. dla kodu: {{Code|{{Mniejszy}}ref name{{=}}"Nazwa przypisu"{{Większy}}W przypisie może być cokolwiek{{Mniejszy}}/ref{{Większy}}}}, np. tworząc kod: {{Pre|{{s|ŹródłoKodu|język{{=}}xml| {{s|Mniejszy}}ref name{{s|{{=}}}}"Nazwa przypisu"{{s|Większy}}W przypisie może być cokolwiek{{s|Mniejszy}}/ref{{s|Większy}} {{s|Mniejszy}}ref name{{s|{{=}}}}"Wydawca: Jakiś tytuł"{{s|Większy}}Franciszka Tłumacząca, ''Przypisy często zawierają odniesienia do literatury lub źródeł internetowych''{{s|Mniejszy}}/ref{{s|Większy}} }}}} A jego wywołanie jest takie: {{ŹródłoKodu|język=xml| {{Mniejszy}}ref name{{=}}"Nazwa przypisu"{{Większy}}W przypisie może być cokolwiek{{Mniejszy}}/ref{{Większy}} {{Mniejszy}}ref name{{=}}"Wydawca: Jakiś tytuł">Franciszka Tłumacząca, ''Przypisy często zawierają odniesienia do literatury lub źródeł internetowych''{{Mniejszy}}/ref{{Większy}} }} == Możliwe szablony pochodne == * Szablony zbudowane w oparciu szablon: {{s|ŹródłoKodu}}, za pomocą ramek, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w oparciu o ramki programistyczne {{Code|{{m|Ramka|Szablon|Nazwa{{=}}Źródłokodu|język{{=}}...}}, też napisane w tym języku, gdzie ten język generuje te szczególne postacie tego szablonu, jako: ** {{s|ŹródłoKodu}} - szablon równy zawartości tego szablonu, ** {{s|ŹródłoHtml}} - szablon wyświetlający i kolorujący składnie HTML, równoważny wywołaniu: {{s|ŹródłoKodu|język{{=}}html|...}}, ** {{s|ŹródłoCss}} - szablon wyświetlający i kolorujący składnie CSS, równoważny wywołaniu: {{s|ŹródłoKodu|język{{=}}css|...}}. ** {{s|ŹródłoXml}} - szablon wyświetlający i kolorujący składnie XML, równoważny wywołaniu: {{s|ŹródłoKodu|język{{=}}xml|...}}. == Opis parametrów == ; Parametry{{Dk}} * {{Code|1}} - kod (wikikod) do wyświetlenia pokolorowania w obramowanej ramce (konieczny), * {{Code|język}} - język składni tego kodu (wikikodu), np.: {{Parametr|język|html}}, {{Parametr|język|xml}}, {{Parametr|język|css}}. Tylko przy szablonie kombajnie {{s|ŹródłoKodu}}, przy innych szablonach zbudowanych o niego tego parametru nie ma (sugerowany). ; Nagłówek i stopka{{Dk}} * {{Code|nagłówek}} - nagłówek podświetlania składni kodu (opcjonalny), * {{Code|stopka}} - stopka podświetlania składni kodu (opcjonalny), * {{Code|styl nagłówka}} - style nagłówka kaskadowych arkuszy stylów CSS (opcjonalny), * {{Code|styl stopki}} - style stopki kaskadowych arkuszy stylów CSS (opcjonalny). ; Kod{{Dk}} * {{Code|styl kodu}} - style, kaskadowych arkuszy stylów CSS, kodu komputerowego w różnych językach programowania, podświetlania składni (opcjonalny). ; Parametry nad-ramki podświetlającego kod{{Dk}} * {{Code|id}} - identyfikator znacznika {{Tag|div}} (opcjonalny), * {{Code|klasa}} - klasy reguł kaskadowych styli arkuszy stylów (opcjonalny), * {{Code|styl}} - style kaskadowych arkuszy stylów CSS (opcjonalny). == Przykład == ; Przykład - język HTML {{Pre|{{s|ŹródłoKodu|język{{=}}html|nagłówek{{=}}Nagłówek kodu|stopka{{=}}Stopka kodu|{{s|Integrowanie|Zapałka/jeden|nazwa przestrzeni nazw{{=}}(main)|nazwa jednostki{{=}}Strona/Podstrona}}}}}} ; Wynik {{ŹródłoKodu|język=html|nagłówek=Nagłówek kodu|stopka=Stopka kodu|{{Integrowanie|Zapałka/jeden|nazwa przestrzeni nazw{{=}}(main)|nazwa jednostki{{=}}Strona/Podstrona}}}} ---- ; Przykład - język XML {{Pre|{{s|ŹródłoKodu|język{{=}}xml|nagłówek{{=}}Nagłówek kodu|stopka{{=}}Stopka kodu|<xml lang{{((}}{{=}}{{))}}"pl">Oto jest pytanie</xml>}}}} ; Wynik {{ŹródłoKodu|język=xml|nagłówek=Nagłówek kodu|stopka=Stopka kodu|<xml lang{{=}}"pl">Oto jest pytanie</xml>}} ---- ; Przykład - język CSS {{Pre|{{s|ŹródłoKodu|język{{=}}css|nagłówek{{=}}Nagłówek kodu|stopka{{=}}Stopka kodu| .klasa_jeden{{(}} width:100px; height:150px; font-fize:12px; white-space:nowrap; {{)}}}}}} ; Wynik {{ŹródłoKodu|język=css|nagłówek=Nagłówek kodu|stopka=Stopka kodu| .klasa_jeden{{(}} width:100px; height:150px; font-size:12px; white-space:nowrap; {{)}}}} == Błędy == Błędy należy zgłaszać na stronie {{kwestie techniczne}}. == Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) == <templatedata> { "params": { "1": { "description": "Kod w jakimś języku komputerowych.", "required": true, "type": "string" }, "język": { "description": "Kod języka komputerowego.", "type": "string", "default": "html", "suggested": true }, "nagłówek": { "description": "Nagłówek podświetlania składni kodu.", "type": "string" }, "stopka": { "description": "Stopka podświetlania składni kodu.", "type": "string" }, "styl nagłówka": { "description": "Style nagłówka kaskadowych arkuszy stylów CSS.", "type": "unknown" }, "styl stopki": { "description": "Style nagłówka kaskadowych arkuszy stylów CSS." }, "id": { "description": "Identyfikator znacznika <div>...</div>." }, "klasa": { "description": "Klasy reguł kaskadowych styli arkuszy stylów." }, "styl": { "description": "Style kaskadowych arkuszy stylów CSS." }, "styl kodu": { "description": "Style, kaskadowych arkuszy stylów CSS, kodu komputerowego w różnych językach programowania podświetlania składni.", "type": "unknown" } }, "description": "Szablon kolorujący składnie kodu w różnych językach komputerowych.", "paramOrder": [ "1", "język", "nagłówek", "stopka", "styl nagłówka", "styl stopki", "styl kodu", "id", "klasa", "styl" ] } </templatedata> == Zobacz też == * {{s|LuaSubst}} - szablon do zwracania zawartości stron, w postaci nierozwiniętego wikitekstu, na tym projekcie, a do kolorowania składni tego kodu służy ten szablon. {{Szablony wyświetlające rozwinięty kod}} {{BrClear}} <includeonly><!-- ++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII --> {{Kategorie | Szablony wyświetlające kod w językach komputerowych | Szablony ramek wyświetlające kod komputerowy }} </includeonly> nayzvaoo9ak5lti5xs7kvynhse9nh7p 553542 553541 2026-08-30T10:36:10Z Persino 2851 /* Możliwe szablony pochodne */ 553542 wikitext text/x-wiki {{Podstrona dokumentacji}} <!-- DODAWAJ KATEGORIE NA DOLE STRONY --> == Użycie == Szablon służy do wyświetlania w ramce, dla przykładu {{Code|język{{=}}xml}}, znaczników {{Code|<nowiki><syntaxhighlight lang="xml">{{{1}}}</syntaxhighlight></nowiki>}}, pokolorowanego kodu w różnych językach komputerowych, nawet znacznikowych. W przypadku znaczników XML interpretowanych przez {{Code|wiki}} należy używać szablonów {{s|Mniejszy}} i {{s|Większy}}, (w przypadku znaczników tu omawianych) oraz {{s|{{=}}}} (we wszystkich przypadkach przed zabezpieczeniem przy pierwszym tym znaku w danym polu parametru, by część poprzedzająca nie była interpretowana jako parametr, a część następująca po nim jako wartość), jak np. dla kodu: {{Code|{{Mniejszy}}ref name{{=}}"Nazwa przypisu"{{Większy}}W przypisie może być cokolwiek{{Mniejszy}}/ref{{Większy}}}}, np. tworząc kod: {{Pre|{{s|ŹródłoKodu|język{{=}}xml| {{s|Mniejszy}}ref name{{s|{{=}}}}"Nazwa przypisu"{{s|Większy}}W przypisie może być cokolwiek{{s|Mniejszy}}/ref{{s|Większy}} {{s|Mniejszy}}ref name{{s|{{=}}}}"Wydawca: Jakiś tytuł"{{s|Większy}}Franciszka Tłumacząca, ''Przypisy często zawierają odniesienia do literatury lub źródeł internetowych''{{s|Mniejszy}}/ref{{s|Większy}} }}}} A jego wywołanie jest takie: {{ŹródłoKodu|język=xml| {{Mniejszy}}ref name{{=}}"Nazwa przypisu"{{Większy}}W przypisie może być cokolwiek{{Mniejszy}}/ref{{Większy}} {{Mniejszy}}ref name{{=}}"Wydawca: Jakiś tytuł">Franciszka Tłumacząca, ''Przypisy często zawierają odniesienia do literatury lub źródeł internetowych''{{Mniejszy}}/ref{{Większy}} }} == Możliwe szablony pochodne == * Szablony zbudowane w oparciu szablon: {{s|ŹródłoKodu}}, za pomocą ramek, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w oparciu o ramki programistyczne {{Code|{{m|Ramka|Szablon|Nazwa{{=}}Źródłokodu|język{{=}}...}}}}, też napisane w tym języku, gdzie ten język generuje te szczególne postacie tego szablonu, jako: ** {{s|ŹródłoKodu}} - szablon równy zawartości tego szablonu, ** {{s|ŹródłoHtml}} - szablon wyświetlający i kolorujący składnie HTML, równoważny wywołaniu: {{s|ŹródłoKodu|język{{=}}html|...}}, ** {{s|ŹródłoCss}} - szablon wyświetlający i kolorujący składnie CSS, równoważny wywołaniu: {{s|ŹródłoKodu|język{{=}}css|...}}. ** {{s|ŹródłoXml}} - szablon wyświetlający i kolorujący składnie XML, równoważny wywołaniu: {{s|ŹródłoKodu|język{{=}}xml|...}}. == Opis parametrów == ; Parametry{{Dk}} * {{Code|1}} - kod (wikikod) do wyświetlenia pokolorowania w obramowanej ramce (konieczny), * {{Code|język}} - język składni tego kodu (wikikodu), np.: {{Parametr|język|html}}, {{Parametr|język|xml}}, {{Parametr|język|css}}. Tylko przy szablonie kombajnie {{s|ŹródłoKodu}}, przy innych szablonach zbudowanych o niego tego parametru nie ma (sugerowany). ; Nagłówek i stopka{{Dk}} * {{Code|nagłówek}} - nagłówek podświetlania składni kodu (opcjonalny), * {{Code|stopka}} - stopka podświetlania składni kodu (opcjonalny), * {{Code|styl nagłówka}} - style nagłówka kaskadowych arkuszy stylów CSS (opcjonalny), * {{Code|styl stopki}} - style stopki kaskadowych arkuszy stylów CSS (opcjonalny). ; Kod{{Dk}} * {{Code|styl kodu}} - style, kaskadowych arkuszy stylów CSS, kodu komputerowego w różnych językach programowania, podświetlania składni (opcjonalny). ; Parametry nad-ramki podświetlającego kod{{Dk}} * {{Code|id}} - identyfikator znacznika {{Tag|div}} (opcjonalny), * {{Code|klasa}} - klasy reguł kaskadowych styli arkuszy stylów (opcjonalny), * {{Code|styl}} - style kaskadowych arkuszy stylów CSS (opcjonalny). == Przykład == ; Przykład - język HTML {{Pre|{{s|ŹródłoKodu|język{{=}}html|nagłówek{{=}}Nagłówek kodu|stopka{{=}}Stopka kodu|{{s|Integrowanie|Zapałka/jeden|nazwa przestrzeni nazw{{=}}(main)|nazwa jednostki{{=}}Strona/Podstrona}}}}}} ; Wynik {{ŹródłoKodu|język=html|nagłówek=Nagłówek kodu|stopka=Stopka kodu|{{Integrowanie|Zapałka/jeden|nazwa przestrzeni nazw{{=}}(main)|nazwa jednostki{{=}}Strona/Podstrona}}}} ---- ; Przykład - język XML {{Pre|{{s|ŹródłoKodu|język{{=}}xml|nagłówek{{=}}Nagłówek kodu|stopka{{=}}Stopka kodu|<xml lang{{((}}{{=}}{{))}}"pl">Oto jest pytanie</xml>}}}} ; Wynik {{ŹródłoKodu|język=xml|nagłówek=Nagłówek kodu|stopka=Stopka kodu|<xml lang{{=}}"pl">Oto jest pytanie</xml>}} ---- ; Przykład - język CSS {{Pre|{{s|ŹródłoKodu|język{{=}}css|nagłówek{{=}}Nagłówek kodu|stopka{{=}}Stopka kodu| .klasa_jeden{{(}} width:100px; height:150px; font-fize:12px; white-space:nowrap; {{)}}}}}} ; Wynik {{ŹródłoKodu|język=css|nagłówek=Nagłówek kodu|stopka=Stopka kodu| .klasa_jeden{{(}} width:100px; height:150px; font-size:12px; white-space:nowrap; {{)}}}} == Błędy == Błędy należy zgłaszać na stronie {{kwestie techniczne}}. == Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) == <templatedata> { "params": { "1": { "description": "Kod w jakimś języku komputerowych.", "required": true, "type": "string" }, "język": { "description": "Kod języka komputerowego.", "type": "string", "default": "html", "suggested": true }, "nagłówek": { "description": "Nagłówek podświetlania składni kodu.", "type": "string" }, "stopka": { "description": "Stopka podświetlania składni kodu.", "type": "string" }, "styl nagłówka": { "description": "Style nagłówka kaskadowych arkuszy stylów CSS.", "type": "unknown" }, "styl stopki": { "description": "Style nagłówka kaskadowych arkuszy stylów CSS." }, "id": { "description": "Identyfikator znacznika <div>...</div>." }, "klasa": { "description": "Klasy reguł kaskadowych styli arkuszy stylów." }, "styl": { "description": "Style kaskadowych arkuszy stylów CSS." }, "styl kodu": { "description": "Style, kaskadowych arkuszy stylów CSS, kodu komputerowego w różnych językach programowania podświetlania składni.", "type": "unknown" } }, "description": "Szablon kolorujący składnie kodu w różnych językach komputerowych.", "paramOrder": [ "1", "język", "nagłówek", "stopka", "styl nagłówka", "styl stopki", "styl kodu", "id", "klasa", "styl" ] } </templatedata> == Zobacz też == * {{s|LuaSubst}} - szablon do zwracania zawartości stron, w postaci nierozwiniętego wikitekstu, na tym projekcie, a do kolorowania składni tego kodu służy ten szablon. {{Szablony wyświetlające rozwinięty kod}} {{BrClear}} <includeonly><!-- ++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII --> {{Kategorie | Szablony wyświetlające kod w językach komputerowych | Szablony ramek wyświetlające kod komputerowy }} </includeonly> fvaythofv13h95jnbzqdt17vmc6tlko 553543 553542 2026-08-30T10:36:43Z Persino 2851 /* Możliwe szablony pochodne */ 553543 wikitext text/x-wiki {{Podstrona dokumentacji}} <!-- DODAWAJ KATEGORIE NA DOLE STRONY --> == Użycie == Szablon służy do wyświetlania w ramce, dla przykładu {{Code|język{{=}}xml}}, znaczników {{Code|<nowiki><syntaxhighlight lang="xml">{{{1}}}</syntaxhighlight></nowiki>}}, pokolorowanego kodu w różnych językach komputerowych, nawet znacznikowych. W przypadku znaczników XML interpretowanych przez {{Code|wiki}} należy używać szablonów {{s|Mniejszy}} i {{s|Większy}}, (w przypadku znaczników tu omawianych) oraz {{s|{{=}}}} (we wszystkich przypadkach przed zabezpieczeniem przy pierwszym tym znaku w danym polu parametru, by część poprzedzająca nie była interpretowana jako parametr, a część następująca po nim jako wartość), jak np. dla kodu: {{Code|{{Mniejszy}}ref name{{=}}"Nazwa przypisu"{{Większy}}W przypisie może być cokolwiek{{Mniejszy}}/ref{{Większy}}}}, np. tworząc kod: {{Pre|{{s|ŹródłoKodu|język{{=}}xml| {{s|Mniejszy}}ref name{{s|{{=}}}}"Nazwa przypisu"{{s|Większy}}W przypisie może być cokolwiek{{s|Mniejszy}}/ref{{s|Większy}} {{s|Mniejszy}}ref name{{s|{{=}}}}"Wydawca: Jakiś tytuł"{{s|Większy}}Franciszka Tłumacząca, ''Przypisy często zawierają odniesienia do literatury lub źródeł internetowych''{{s|Mniejszy}}/ref{{s|Większy}} }}}} A jego wywołanie jest takie: {{ŹródłoKodu|język=xml| {{Mniejszy}}ref name{{=}}"Nazwa przypisu"{{Większy}}W przypisie może być cokolwiek{{Mniejszy}}/ref{{Większy}} {{Mniejszy}}ref name{{=}}"Wydawca: Jakiś tytuł">Franciszka Tłumacząca, ''Przypisy często zawierają odniesienia do literatury lub źródeł internetowych''{{Mniejszy}}/ref{{Większy}} }} == Możliwe szablony pochodne == * Szablony zbudowane w oparciu szablon: {{s|ŹródłoKodu}}, za pomocą ramek, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w oparciu o ramki programistyczne {{Code|{{m|Ramka|Szablon|Nazwa{{=}}ŹródłoKodu|język{{=}}...}}}}, też napisane w tym języku, gdzie ten język generuje te szczególne postacie tego szablonu, jako: ** {{s|ŹródłoKodu}} - szablon równy zawartości tego szablonu, ** {{s|ŹródłoHtml}} - szablon wyświetlający i kolorujący składnie HTML, równoważny wywołaniu: {{s|ŹródłoKodu|język{{=}}html|...}}, ** {{s|ŹródłoCss}} - szablon wyświetlający i kolorujący składnie CSS, równoważny wywołaniu: {{s|ŹródłoKodu|język{{=}}css|...}}. ** {{s|ŹródłoXml}} - szablon wyświetlający i kolorujący składnie XML, równoważny wywołaniu: {{s|ŹródłoKodu|język{{=}}xml|...}}. == Opis parametrów == ; Parametry{{Dk}} * {{Code|1}} - kod (wikikod) do wyświetlenia pokolorowania w obramowanej ramce (konieczny), * {{Code|język}} - język składni tego kodu (wikikodu), np.: {{Parametr|język|html}}, {{Parametr|język|xml}}, {{Parametr|język|css}}. Tylko przy szablonie kombajnie {{s|ŹródłoKodu}}, przy innych szablonach zbudowanych o niego tego parametru nie ma (sugerowany). ; Nagłówek i stopka{{Dk}} * {{Code|nagłówek}} - nagłówek podświetlania składni kodu (opcjonalny), * {{Code|stopka}} - stopka podświetlania składni kodu (opcjonalny), * {{Code|styl nagłówka}} - style nagłówka kaskadowych arkuszy stylów CSS (opcjonalny), * {{Code|styl stopki}} - style stopki kaskadowych arkuszy stylów CSS (opcjonalny). ; Kod{{Dk}} * {{Code|styl kodu}} - style, kaskadowych arkuszy stylów CSS, kodu komputerowego w różnych językach programowania, podświetlania składni (opcjonalny). ; Parametry nad-ramki podświetlającego kod{{Dk}} * {{Code|id}} - identyfikator znacznika {{Tag|div}} (opcjonalny), * {{Code|klasa}} - klasy reguł kaskadowych styli arkuszy stylów (opcjonalny), * {{Code|styl}} - style kaskadowych arkuszy stylów CSS (opcjonalny). == Przykład == ; Przykład - język HTML {{Pre|{{s|ŹródłoKodu|język{{=}}html|nagłówek{{=}}Nagłówek kodu|stopka{{=}}Stopka kodu|{{s|Integrowanie|Zapałka/jeden|nazwa przestrzeni nazw{{=}}(main)|nazwa jednostki{{=}}Strona/Podstrona}}}}}} ; Wynik {{ŹródłoKodu|język=html|nagłówek=Nagłówek kodu|stopka=Stopka kodu|{{Integrowanie|Zapałka/jeden|nazwa przestrzeni nazw{{=}}(main)|nazwa jednostki{{=}}Strona/Podstrona}}}} ---- ; Przykład - język XML {{Pre|{{s|ŹródłoKodu|język{{=}}xml|nagłówek{{=}}Nagłówek kodu|stopka{{=}}Stopka kodu|<xml lang{{((}}{{=}}{{))}}"pl">Oto jest pytanie</xml>}}}} ; Wynik {{ŹródłoKodu|język=xml|nagłówek=Nagłówek kodu|stopka=Stopka kodu|<xml lang{{=}}"pl">Oto jest pytanie</xml>}} ---- ; Przykład - język CSS {{Pre|{{s|ŹródłoKodu|język{{=}}css|nagłówek{{=}}Nagłówek kodu|stopka{{=}}Stopka kodu| .klasa_jeden{{(}} width:100px; height:150px; font-fize:12px; white-space:nowrap; {{)}}}}}} ; Wynik {{ŹródłoKodu|język=css|nagłówek=Nagłówek kodu|stopka=Stopka kodu| .klasa_jeden{{(}} width:100px; height:150px; font-size:12px; white-space:nowrap; {{)}}}} == Błędy == Błędy należy zgłaszać na stronie {{kwestie techniczne}}. == Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) == <templatedata> { "params": { "1": { "description": "Kod w jakimś języku komputerowych.", "required": true, "type": "string" }, "język": { "description": "Kod języka komputerowego.", "type": "string", "default": "html", "suggested": true }, "nagłówek": { "description": "Nagłówek podświetlania składni kodu.", "type": "string" }, "stopka": { "description": "Stopka podświetlania składni kodu.", "type": "string" }, "styl nagłówka": { "description": "Style nagłówka kaskadowych arkuszy stylów CSS.", "type": "unknown" }, "styl stopki": { "description": "Style nagłówka kaskadowych arkuszy stylów CSS." }, "id": { "description": "Identyfikator znacznika <div>...</div>." }, "klasa": { "description": "Klasy reguł kaskadowych styli arkuszy stylów." }, "styl": { "description": "Style kaskadowych arkuszy stylów CSS." }, "styl kodu": { "description": "Style, kaskadowych arkuszy stylów CSS, kodu komputerowego w różnych językach programowania podświetlania składni.", "type": "unknown" } }, "description": "Szablon kolorujący składnie kodu w różnych językach komputerowych.", "paramOrder": [ "1", "język", "nagłówek", "stopka", "styl nagłówka", "styl stopki", "styl kodu", "id", "klasa", "styl" ] } </templatedata> == Zobacz też == * {{s|LuaSubst}} - szablon do zwracania zawartości stron, w postaci nierozwiniętego wikitekstu, na tym projekcie, a do kolorowania składni tego kodu służy ten szablon. {{Szablony wyświetlające rozwinięty kod}} {{BrClear}} <includeonly><!-- ++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII --> {{Kategorie | Szablony wyświetlające kod w językach komputerowych | Szablony ramek wyświetlające kod komputerowy }} </includeonly> 313q3afkzpgi3ocyfgq6ytlcxuyxi3q 553544 553543 2026-08-30T10:37:17Z Persino 2851 /* Możliwe szablony pochodne */ 553544 wikitext text/x-wiki {{Podstrona dokumentacji}} <!-- DODAWAJ KATEGORIE NA DOLE STRONY --> == Użycie == Szablon służy do wyświetlania w ramce, dla przykładu {{Code|język{{=}}xml}}, znaczników {{Code|<nowiki><syntaxhighlight lang="xml">{{{1}}}</syntaxhighlight></nowiki>}}, pokolorowanego kodu w różnych językach komputerowych, nawet znacznikowych. W przypadku znaczników XML interpretowanych przez {{Code|wiki}} należy używać szablonów {{s|Mniejszy}} i {{s|Większy}}, (w przypadku znaczników tu omawianych) oraz {{s|{{=}}}} (we wszystkich przypadkach przed zabezpieczeniem przy pierwszym tym znaku w danym polu parametru, by część poprzedzająca nie była interpretowana jako parametr, a część następująca po nim jako wartość), jak np. dla kodu: {{Code|{{Mniejszy}}ref name{{=}}"Nazwa przypisu"{{Większy}}W przypisie może być cokolwiek{{Mniejszy}}/ref{{Większy}}}}, np. tworząc kod: {{Pre|{{s|ŹródłoKodu|język{{=}}xml| {{s|Mniejszy}}ref name{{s|{{=}}}}"Nazwa przypisu"{{s|Większy}}W przypisie może być cokolwiek{{s|Mniejszy}}/ref{{s|Większy}} {{s|Mniejszy}}ref name{{s|{{=}}}}"Wydawca: Jakiś tytuł"{{s|Większy}}Franciszka Tłumacząca, ''Przypisy często zawierają odniesienia do literatury lub źródeł internetowych''{{s|Mniejszy}}/ref{{s|Większy}} }}}} A jego wywołanie jest takie: {{ŹródłoKodu|język=xml| {{Mniejszy}}ref name{{=}}"Nazwa przypisu"{{Większy}}W przypisie może być cokolwiek{{Mniejszy}}/ref{{Większy}} {{Mniejszy}}ref name{{=}}"Wydawca: Jakiś tytuł">Franciszka Tłumacząca, ''Przypisy często zawierają odniesienia do literatury lub źródeł internetowych''{{Mniejszy}}/ref{{Większy}} }} == Możliwe szablony pochodne == * Szablony zbudowane w oparciu szablon: {{s|ŹródłoKodu}}, za pomocą ramek, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w oparciu o ramki programistyczne {{Code|{{m|Ramka|Szablon|Nazwa{{=}}{{ls|ŹródłoKodu}}|język{{=}}...}}}}, też napisane w tym języku, gdzie ten język generuje te szczególne postacie tego szablonu, jako: ** {{s|ŹródłoKodu}} - szablon równy zawartości tego szablonu, ** {{s|ŹródłoHtml}} - szablon wyświetlający i kolorujący składnie HTML, równoważny wywołaniu: {{s|ŹródłoKodu|język{{=}}html|...}}, ** {{s|ŹródłoCss}} - szablon wyświetlający i kolorujący składnie CSS, równoważny wywołaniu: {{s|ŹródłoKodu|język{{=}}css|...}}. ** {{s|ŹródłoXml}} - szablon wyświetlający i kolorujący składnie XML, równoważny wywołaniu: {{s|ŹródłoKodu|język{{=}}xml|...}}. == Opis parametrów == ; Parametry{{Dk}} * {{Code|1}} - kod (wikikod) do wyświetlenia pokolorowania w obramowanej ramce (konieczny), * {{Code|język}} - język składni tego kodu (wikikodu), np.: {{Parametr|język|html}}, {{Parametr|język|xml}}, {{Parametr|język|css}}. Tylko przy szablonie kombajnie {{s|ŹródłoKodu}}, przy innych szablonach zbudowanych o niego tego parametru nie ma (sugerowany). ; Nagłówek i stopka{{Dk}} * {{Code|nagłówek}} - nagłówek podświetlania składni kodu (opcjonalny), * {{Code|stopka}} - stopka podświetlania składni kodu (opcjonalny), * {{Code|styl nagłówka}} - style nagłówka kaskadowych arkuszy stylów CSS (opcjonalny), * {{Code|styl stopki}} - style stopki kaskadowych arkuszy stylów CSS (opcjonalny). ; Kod{{Dk}} * {{Code|styl kodu}} - style, kaskadowych arkuszy stylów CSS, kodu komputerowego w różnych językach programowania, podświetlania składni (opcjonalny). ; Parametry nad-ramki podświetlającego kod{{Dk}} * {{Code|id}} - identyfikator znacznika {{Tag|div}} (opcjonalny), * {{Code|klasa}} - klasy reguł kaskadowych styli arkuszy stylów (opcjonalny), * {{Code|styl}} - style kaskadowych arkuszy stylów CSS (opcjonalny). == Przykład == ; Przykład - język HTML {{Pre|{{s|ŹródłoKodu|język{{=}}html|nagłówek{{=}}Nagłówek kodu|stopka{{=}}Stopka kodu|{{s|Integrowanie|Zapałka/jeden|nazwa przestrzeni nazw{{=}}(main)|nazwa jednostki{{=}}Strona/Podstrona}}}}}} ; Wynik {{ŹródłoKodu|język=html|nagłówek=Nagłówek kodu|stopka=Stopka kodu|{{Integrowanie|Zapałka/jeden|nazwa przestrzeni nazw{{=}}(main)|nazwa jednostki{{=}}Strona/Podstrona}}}} ---- ; Przykład - język XML {{Pre|{{s|ŹródłoKodu|język{{=}}xml|nagłówek{{=}}Nagłówek kodu|stopka{{=}}Stopka kodu|<xml lang{{((}}{{=}}{{))}}"pl">Oto jest pytanie</xml>}}}} ; Wynik {{ŹródłoKodu|język=xml|nagłówek=Nagłówek kodu|stopka=Stopka kodu|<xml lang{{=}}"pl">Oto jest pytanie</xml>}} ---- ; Przykład - język CSS {{Pre|{{s|ŹródłoKodu|język{{=}}css|nagłówek{{=}}Nagłówek kodu|stopka{{=}}Stopka kodu| .klasa_jeden{{(}} width:100px; height:150px; font-fize:12px; white-space:nowrap; {{)}}}}}} ; Wynik {{ŹródłoKodu|język=css|nagłówek=Nagłówek kodu|stopka=Stopka kodu| .klasa_jeden{{(}} width:100px; height:150px; font-size:12px; white-space:nowrap; {{)}}}} == Błędy == Błędy należy zgłaszać na stronie {{kwestie techniczne}}. == Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) == <templatedata> { "params": { "1": { "description": "Kod w jakimś języku komputerowych.", "required": true, "type": "string" }, "język": { "description": "Kod języka komputerowego.", "type": "string", "default": "html", "suggested": true }, "nagłówek": { "description": "Nagłówek podświetlania składni kodu.", "type": "string" }, "stopka": { "description": "Stopka podświetlania składni kodu.", "type": "string" }, "styl nagłówka": { "description": "Style nagłówka kaskadowych arkuszy stylów CSS.", "type": "unknown" }, "styl stopki": { "description": "Style nagłówka kaskadowych arkuszy stylów CSS." }, "id": { "description": "Identyfikator znacznika <div>...</div>." }, "klasa": { "description": "Klasy reguł kaskadowych styli arkuszy stylów." }, "styl": { "description": "Style kaskadowych arkuszy stylów CSS." }, "styl kodu": { "description": "Style, kaskadowych arkuszy stylów CSS, kodu komputerowego w różnych językach programowania podświetlania składni.", "type": "unknown" } }, "description": "Szablon kolorujący składnie kodu w różnych językach komputerowych.", "paramOrder": [ "1", "język", "nagłówek", "stopka", "styl nagłówka", "styl stopki", "styl kodu", "id", "klasa", "styl" ] } </templatedata> == Zobacz też == * {{s|LuaSubst}} - szablon do zwracania zawartości stron, w postaci nierozwiniętego wikitekstu, na tym projekcie, a do kolorowania składni tego kodu służy ten szablon. {{Szablony wyświetlające rozwinięty kod}} {{BrClear}} <includeonly><!-- ++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII --> {{Kategorie | Szablony wyświetlające kod w językach komputerowych | Szablony ramek wyświetlające kod komputerowy }} </includeonly> 33g75lccmmxjqft3ehsq0k01nkby9vm 553545 553544 2026-08-30T10:38:43Z Persino 2851 /* Możliwe szablony pochodne */ 553545 wikitext text/x-wiki {{Podstrona dokumentacji}} <!-- DODAWAJ KATEGORIE NA DOLE STRONY --> == Użycie == Szablon służy do wyświetlania w ramce, dla przykładu {{Code|język{{=}}xml}}, znaczników {{Code|<nowiki><syntaxhighlight lang="xml">{{{1}}}</syntaxhighlight></nowiki>}}, pokolorowanego kodu w różnych językach komputerowych, nawet znacznikowych. W przypadku znaczników XML interpretowanych przez {{Code|wiki}} należy używać szablonów {{s|Mniejszy}} i {{s|Większy}}, (w przypadku znaczników tu omawianych) oraz {{s|{{=}}}} (we wszystkich przypadkach przed zabezpieczeniem przy pierwszym tym znaku w danym polu parametru, by część poprzedzająca nie była interpretowana jako parametr, a część następująca po nim jako wartość), jak np. dla kodu: {{Code|{{Mniejszy}}ref name{{=}}"Nazwa przypisu"{{Większy}}W przypisie może być cokolwiek{{Mniejszy}}/ref{{Większy}}}}, np. tworząc kod: {{Pre|{{s|ŹródłoKodu|język{{=}}xml| {{s|Mniejszy}}ref name{{s|{{=}}}}"Nazwa przypisu"{{s|Większy}}W przypisie może być cokolwiek{{s|Mniejszy}}/ref{{s|Większy}} {{s|Mniejszy}}ref name{{s|{{=}}}}"Wydawca: Jakiś tytuł"{{s|Większy}}Franciszka Tłumacząca, ''Przypisy często zawierają odniesienia do literatury lub źródeł internetowych''{{s|Mniejszy}}/ref{{s|Większy}} }}}} A jego wywołanie jest takie: {{ŹródłoKodu|język=xml| {{Mniejszy}}ref name{{=}}"Nazwa przypisu"{{Większy}}W przypisie może być cokolwiek{{Mniejszy}}/ref{{Większy}} {{Mniejszy}}ref name{{=}}"Wydawca: Jakiś tytuł">Franciszka Tłumacząca, ''Przypisy często zawierają odniesienia do literatury lub źródeł internetowych''{{Mniejszy}}/ref{{Większy}} }} == Możliwe szablony pochodne == * Szablony zbudowane w oparciu szablon: {{s|ŹródłoKodu}}, za pomocą ramek, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w oparciu o ramki programistyczne {{Code|{{m|Ramka|Szablon|Nazwa{{=}}{{ls|ŹródłoKodu}}|język{{=}}...}}}}, też napisane w tym języku, gdzie ten język generuje te szczególne postacie tego szablonu, jako: ** {{s|ŹródłoKodu}} - szablon równy zawartości tego szablonu, ** {{s|ŹródłoHtml}} - szablon wyświetlający i kolorujący składnie HTML, równoważny wywołaniu: {{s|ŹródłoKodu|język{{=}}html|...}}, ** {{s|ŹródłoCss}} - szablon wyświetlający i kolorujący składnie CSS, równoważny wywołaniu: {{s|ŹródłoKodu|język{{=}}css|...}}. ** {{s|ŹródłoXml}} - szablon wyświetlający i kolorujący składnie XML, równoważny wywołaniu: {{s|ŹródłoKodu|język{{=}}xml|...}}. ** {{s|ŹródłoLua}} - szablon wyświetlający i kolorujący składnie Lua, równoważny wywołaniu: {{s|ŹródłoKodu|język{{=}}lua|...}}. == Opis parametrów == ; Parametry{{Dk}} * {{Code|1}} - kod (wikikod) do wyświetlenia pokolorowania w obramowanej ramce (konieczny), * {{Code|język}} - język składni tego kodu (wikikodu), np.: {{Parametr|język|html}}, {{Parametr|język|xml}}, {{Parametr|język|css}}. Tylko przy szablonie kombajnie {{s|ŹródłoKodu}}, przy innych szablonach zbudowanych o niego tego parametru nie ma (sugerowany). ; Nagłówek i stopka{{Dk}} * {{Code|nagłówek}} - nagłówek podświetlania składni kodu (opcjonalny), * {{Code|stopka}} - stopka podświetlania składni kodu (opcjonalny), * {{Code|styl nagłówka}} - style nagłówka kaskadowych arkuszy stylów CSS (opcjonalny), * {{Code|styl stopki}} - style stopki kaskadowych arkuszy stylów CSS (opcjonalny). ; Kod{{Dk}} * {{Code|styl kodu}} - style, kaskadowych arkuszy stylów CSS, kodu komputerowego w różnych językach programowania, podświetlania składni (opcjonalny). ; Parametry nad-ramki podświetlającego kod{{Dk}} * {{Code|id}} - identyfikator znacznika {{Tag|div}} (opcjonalny), * {{Code|klasa}} - klasy reguł kaskadowych styli arkuszy stylów (opcjonalny), * {{Code|styl}} - style kaskadowych arkuszy stylów CSS (opcjonalny). == Przykład == ; Przykład - język HTML {{Pre|{{s|ŹródłoKodu|język{{=}}html|nagłówek{{=}}Nagłówek kodu|stopka{{=}}Stopka kodu|{{s|Integrowanie|Zapałka/jeden|nazwa przestrzeni nazw{{=}}(main)|nazwa jednostki{{=}}Strona/Podstrona}}}}}} ; Wynik {{ŹródłoKodu|język=html|nagłówek=Nagłówek kodu|stopka=Stopka kodu|{{Integrowanie|Zapałka/jeden|nazwa przestrzeni nazw{{=}}(main)|nazwa jednostki{{=}}Strona/Podstrona}}}} ---- ; Przykład - język XML {{Pre|{{s|ŹródłoKodu|język{{=}}xml|nagłówek{{=}}Nagłówek kodu|stopka{{=}}Stopka kodu|<xml lang{{((}}{{=}}{{))}}"pl">Oto jest pytanie</xml>}}}} ; Wynik {{ŹródłoKodu|język=xml|nagłówek=Nagłówek kodu|stopka=Stopka kodu|<xml lang{{=}}"pl">Oto jest pytanie</xml>}} ---- ; Przykład - język CSS {{Pre|{{s|ŹródłoKodu|język{{=}}css|nagłówek{{=}}Nagłówek kodu|stopka{{=}}Stopka kodu| .klasa_jeden{{(}} width:100px; height:150px; font-fize:12px; white-space:nowrap; {{)}}}}}} ; Wynik {{ŹródłoKodu|język=css|nagłówek=Nagłówek kodu|stopka=Stopka kodu| .klasa_jeden{{(}} width:100px; height:150px; font-size:12px; white-space:nowrap; {{)}}}} == Błędy == Błędy należy zgłaszać na stronie {{kwestie techniczne}}. == Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) == <templatedata> { "params": { "1": { "description": "Kod w jakimś języku komputerowych.", "required": true, "type": "string" }, "język": { "description": "Kod języka komputerowego.", "type": "string", "default": "html", "suggested": true }, "nagłówek": { "description": "Nagłówek podświetlania składni kodu.", "type": "string" }, "stopka": { "description": "Stopka podświetlania składni kodu.", "type": "string" }, "styl nagłówka": { "description": "Style nagłówka kaskadowych arkuszy stylów CSS.", "type": "unknown" }, "styl stopki": { "description": "Style nagłówka kaskadowych arkuszy stylów CSS." }, "id": { "description": "Identyfikator znacznika <div>...</div>." }, "klasa": { "description": "Klasy reguł kaskadowych styli arkuszy stylów." }, "styl": { "description": "Style kaskadowych arkuszy stylów CSS." }, "styl kodu": { "description": "Style, kaskadowych arkuszy stylów CSS, kodu komputerowego w różnych językach programowania podświetlania składni.", "type": "unknown" } }, "description": "Szablon kolorujący składnie kodu w różnych językach komputerowych.", "paramOrder": [ "1", "język", "nagłówek", "stopka", "styl nagłówka", "styl stopki", "styl kodu", "id", "klasa", "styl" ] } </templatedata> == Zobacz też == * {{s|LuaSubst}} - szablon do zwracania zawartości stron, w postaci nierozwiniętego wikitekstu, na tym projekcie, a do kolorowania składni tego kodu służy ten szablon. {{Szablony wyświetlające rozwinięty kod}} {{BrClear}} <includeonly><!-- ++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII --> {{Kategorie | Szablony wyświetlające kod w językach komputerowych | Szablony ramek wyświetlające kod komputerowy }} </includeonly> l8om2mx24i56s6iiddh3lj39mnddswe 553546 553545 2026-08-30T10:41:39Z Persino 2851 /* Możliwe szablony pochodne */ 553546 wikitext text/x-wiki {{Podstrona dokumentacji}} <!-- DODAWAJ KATEGORIE NA DOLE STRONY --> == Użycie == Szablon służy do wyświetlania w ramce, dla przykładu {{Code|język{{=}}xml}}, znaczników {{Code|<nowiki><syntaxhighlight lang="xml">{{{1}}}</syntaxhighlight></nowiki>}}, pokolorowanego kodu w różnych językach komputerowych, nawet znacznikowych. W przypadku znaczników XML interpretowanych przez {{Code|wiki}} należy używać szablonów {{s|Mniejszy}} i {{s|Większy}}, (w przypadku znaczników tu omawianych) oraz {{s|{{=}}}} (we wszystkich przypadkach przed zabezpieczeniem przy pierwszym tym znaku w danym polu parametru, by część poprzedzająca nie była interpretowana jako parametr, a część następująca po nim jako wartość), jak np. dla kodu: {{Code|{{Mniejszy}}ref name{{=}}"Nazwa przypisu"{{Większy}}W przypisie może być cokolwiek{{Mniejszy}}/ref{{Większy}}}}, np. tworząc kod: {{Pre|{{s|ŹródłoKodu|język{{=}}xml| {{s|Mniejszy}}ref name{{s|{{=}}}}"Nazwa przypisu"{{s|Większy}}W przypisie może być cokolwiek{{s|Mniejszy}}/ref{{s|Większy}} {{s|Mniejszy}}ref name{{s|{{=}}}}"Wydawca: Jakiś tytuł"{{s|Większy}}Franciszka Tłumacząca, ''Przypisy często zawierają odniesienia do literatury lub źródeł internetowych''{{s|Mniejszy}}/ref{{s|Większy}} }}}} A jego wywołanie jest takie: {{ŹródłoKodu|język=xml| {{Mniejszy}}ref name{{=}}"Nazwa przypisu"{{Większy}}W przypisie może być cokolwiek{{Mniejszy}}/ref{{Większy}} {{Mniejszy}}ref name{{=}}"Wydawca: Jakiś tytuł">Franciszka Tłumacząca, ''Przypisy często zawierają odniesienia do literatury lub źródeł internetowych''{{Mniejszy}}/ref{{Większy}} }} == Możliwe szablony pochodne == * Szablony zbudowane w oparciu szablon: {{s|ŹródłoKodu}}, za pomocą ramek, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w oparciu o ramki programistyczne {{Code|{{m|Ramka|Szablon|Nazwa{{=}}{{ls|ŹródłoKodu}}|język{{=}}...}}}}, też napisane w tym języku, gdzie ten język generuje te szczególne postacie tego szablonu, jako: ; Szablon kombajn{{dk}} * {{s|ŹródłoKodu}} - szablon równy zawartości tego szablonu, ; Szablony w oparciu o powyższy kombajn{{dk}} * Szablony języków znacznikowych, ale skryptowych{{dk}} ** {{s|ŹródłoHtml}} - szablon wyświetlający i kolorujący składnie HTML, równoważny wywołaniu: {{s|ŹródłoKodu|język{{=}}html|...}}, ** {{s|ŹródłoCss}} - szablon wyświetlający i kolorujący składnie CSS, równoważny wywołaniu: {{s|ŹródłoKodu|język{{=}}css|...}}, ** {{s|ŹródłoXml}} - szablon wyświetlający i kolorujący składnie XML, równoważny wywołaniu: {{s|ŹródłoKodu|język{{=}}xml|...}}. * Szablony języków nieznacznikowych, ale skryptowych{{dk}} ** {{s|ŹródłoLua}} - szablon wyświetlający i kolorujący składnie Lua, równoważny wywołaniu: {{s|ŹródłoKodu|język{{=}}lua|...}}. == Opis parametrów == ; Parametry{{Dk}} * {{Code|1}} - kod (wikikod) do wyświetlenia pokolorowania w obramowanej ramce (konieczny), * {{Code|język}} - język składni tego kodu (wikikodu), np.: {{Parametr|język|html}}, {{Parametr|język|xml}}, {{Parametr|język|css}}. Tylko przy szablonie kombajnie {{s|ŹródłoKodu}}, przy innych szablonach zbudowanych o niego tego parametru nie ma (sugerowany). ; Nagłówek i stopka{{Dk}} * {{Code|nagłówek}} - nagłówek podświetlania składni kodu (opcjonalny), * {{Code|stopka}} - stopka podświetlania składni kodu (opcjonalny), * {{Code|styl nagłówka}} - style nagłówka kaskadowych arkuszy stylów CSS (opcjonalny), * {{Code|styl stopki}} - style stopki kaskadowych arkuszy stylów CSS (opcjonalny). ; Kod{{Dk}} * {{Code|styl kodu}} - style, kaskadowych arkuszy stylów CSS, kodu komputerowego w różnych językach programowania, podświetlania składni (opcjonalny). ; Parametry nad-ramki podświetlającego kod{{Dk}} * {{Code|id}} - identyfikator znacznika {{Tag|div}} (opcjonalny), * {{Code|klasa}} - klasy reguł kaskadowych styli arkuszy stylów (opcjonalny), * {{Code|styl}} - style kaskadowych arkuszy stylów CSS (opcjonalny). == Przykład == ; Przykład - język HTML {{Pre|{{s|ŹródłoKodu|język{{=}}html|nagłówek{{=}}Nagłówek kodu|stopka{{=}}Stopka kodu|{{s|Integrowanie|Zapałka/jeden|nazwa przestrzeni nazw{{=}}(main)|nazwa jednostki{{=}}Strona/Podstrona}}}}}} ; Wynik {{ŹródłoKodu|język=html|nagłówek=Nagłówek kodu|stopka=Stopka kodu|{{Integrowanie|Zapałka/jeden|nazwa przestrzeni nazw{{=}}(main)|nazwa jednostki{{=}}Strona/Podstrona}}}} ---- ; Przykład - język XML {{Pre|{{s|ŹródłoKodu|język{{=}}xml|nagłówek{{=}}Nagłówek kodu|stopka{{=}}Stopka kodu|<xml lang{{((}}{{=}}{{))}}"pl">Oto jest pytanie</xml>}}}} ; Wynik {{ŹródłoKodu|język=xml|nagłówek=Nagłówek kodu|stopka=Stopka kodu|<xml lang{{=}}"pl">Oto jest pytanie</xml>}} ---- ; Przykład - język CSS {{Pre|{{s|ŹródłoKodu|język{{=}}css|nagłówek{{=}}Nagłówek kodu|stopka{{=}}Stopka kodu| .klasa_jeden{{(}} width:100px; height:150px; font-fize:12px; white-space:nowrap; {{)}}}}}} ; Wynik {{ŹródłoKodu|język=css|nagłówek=Nagłówek kodu|stopka=Stopka kodu| .klasa_jeden{{(}} width:100px; height:150px; font-size:12px; white-space:nowrap; {{)}}}} == Błędy == Błędy należy zgłaszać na stronie {{kwestie techniczne}}. == Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) == <templatedata> { "params": { "1": { "description": "Kod w jakimś języku komputerowych.", "required": true, "type": "string" }, "język": { "description": "Kod języka komputerowego.", "type": "string", "default": "html", "suggested": true }, "nagłówek": { "description": "Nagłówek podświetlania składni kodu.", "type": "string" }, "stopka": { "description": "Stopka podświetlania składni kodu.", "type": "string" }, "styl nagłówka": { "description": "Style nagłówka kaskadowych arkuszy stylów CSS.", "type": "unknown" }, "styl stopki": { "description": "Style nagłówka kaskadowych arkuszy stylów CSS." }, "id": { "description": "Identyfikator znacznika <div>...</div>." }, "klasa": { "description": "Klasy reguł kaskadowych styli arkuszy stylów." }, "styl": { "description": "Style kaskadowych arkuszy stylów CSS." }, "styl kodu": { "description": "Style, kaskadowych arkuszy stylów CSS, kodu komputerowego w różnych językach programowania podświetlania składni.", "type": "unknown" } }, "description": "Szablon kolorujący składnie kodu w różnych językach komputerowych.", "paramOrder": [ "1", "język", "nagłówek", "stopka", "styl nagłówka", "styl stopki", "styl kodu", "id", "klasa", "styl" ] } </templatedata> == Zobacz też == * {{s|LuaSubst}} - szablon do zwracania zawartości stron, w postaci nierozwiniętego wikitekstu, na tym projekcie, a do kolorowania składni tego kodu służy ten szablon. {{Szablony wyświetlające rozwinięty kod}} {{BrClear}} <includeonly><!-- ++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII --> {{Kategorie | Szablony wyświetlające kod w językach komputerowych | Szablony ramek wyświetlające kod komputerowy }} </includeonly> 2q97273hua7mag1434zfznbi9xul2gm Moduł:Kategorie/dane 828 61693 553521 551142 2026-08-30T07:56:03Z Persino 2851 553521 Scribunto text/plain -- Zmienne potrzebne do funkcji: p.NazwaSortowaniaNazwyStrony(frame), która jest wykorzystywana do domyślnego formatowania stron do szablonów: "Kategoria" i "Kategorie", i ich pochodnych, które korzystają z funkcji o takich samych nazwach, co te szablony. local p={}; p.tablica_wyrazowa_alternatyw={ ["i"]=true, ["lub"]=true, ["oraz"]=true, ["bądź"]=true, ["ewentualnie"]=true, ["natomiast"]=true, }; p.tablica_wyrazowa_gdy_alternatywy={ ["szablon"]=true, }; p.tablica_wyrazowa_niealternatyw={ ["o"]=true, ["w"]=true, ["z"]=true, ["ze"]=true, ["od"]=true, ["ode"]=true, ["do"]=true, ["dla"]=true, ["na"]=true, ["pod"]=true, ["nad"]=true, ["znad"]=true, ["spod"]=true, ["stamtąd"]=true, ["podnad"]=true, ["bez"]=true, ["nie"]=true, ["tak"]=true, ["brak"]=true, ["spoza"]=true, }; p.tablica_wyrazowa_wybrane_przyimki={ ["o"]=true, ["z"]=true, ["ze"]=true, ["w"]=true, ["na"]=true, ["do"]=true, ["bez"]=true, ["od"]=true, }; p.tablica_charakterystycznych_przedrostowych={ ["wiki"]=true, }; p.tablica_wyrazy_niedopuszczalne={ ["infobox"]=true, ["wikibooks"]=true, ["mediawiki"]=true, }; p.tablica_wyrazy_niedopuszczalne_prefiks={ }; p.tablica_analizowanie_bez={ ["Wikibooks"]=true, ["MediaWiki"]=true, ["Commons"]=true, ["Meta"]=true, ["TemplateStyles"]=true, ["Lua"]=true, ["Scribunto"]=true, ["HTML"]=true, ["XHTML"]=true, ["CSS"]=true, ["String"]=true, ["Dump"]=true, ["Wikidan"]=true, ["Opis"]=true, }; p.tablica_analizowanie_specjalne_wyrazy={ ["błędam"]=true, } p.tablica_analizowanie_specjalne_sekwencje={ ["błędn"]=true, ["błędy"]=true, ["nazwy"]=true, }; p.tablica_wyrazy_do_usuwania_przez_sortowanie={ ["używa"]=true, ["wymag"]=true, ["podział"]=true, ["taki"]=true, ["jaki"]=true, ["samy"]=true, ["któr"]=true, ["zwróc"]=true, ["przez"]=true, ["przestarz"]=true, ["postac"]=true, ["zawiera"]=true, ["zawar"]=true, ["byc"]=true, ["dotycz"]=true, ["duż"]=true, ["małośc"]=true, ["malut"]=true, ["liczb"]=true, ["musi"]=true, ["musz"]=true, ["zgłaszan"]=true, ["przekracz"]=true, ["dopuszcz"]=true, ["duż"]=true, ["prawidł"]=true, ["samozamykaj"]=true, ["zależ"]=true, ["wyświetl"]=true, ["inn"]=true, ["tej"]=true, ["tego"]=true, ["pełn"]=true, ["dawn"]=true, --["definicj"]=true, ["główn"]=true, ["określon"]=true, ["poprawn"]=true, ["istniejąc"]=true, ["znan"]=true, ["zgodn"]=true, ["wszystk"]=true, ["sprawdzen"]=true, ["osobn"]=true, ["tworz"]=true, ["wywołan"]=true, ["wywołań"]=true, ["obsługując"]=true, ["wartość"]=true, ["pudełek"]=true, ["parametr"]=true, ["pozostał"]=true, ["użyc"]=true, ["szablonów"]=true, ["podano"]=true, ["złym"]=true, ["dobrym"]=true, ["brak"]=true, ["nazwanym"]=true, ["obiektam"]=true, ["pusty"]=true, ["puste"]=true, ["wykorzyst"]=true, ["potrzeb"]=true, ["korzystan"]=true, ["zbiorcz"]=true, ["powoduj"]=true, ["poszczególn"]=true, ["siostrzanym"]=true, }; p.tablica_wyrazy_przez_sortowanie={ ["brak"]=true, ["bez"]=true, ["spis"]=true, ["istniej"]=true, ["zobacz"]=true, ["grup"]=true, }; p.tablica_wyrazy_parsowania_nazwy_sortowania={ ["obiekt[^%s]*$"]=true, }; p.tablica_zmiana_liczenia_nazwy_sortowania={ ["odnośnik"]=true, ["bez"]=true, }; p.tablica_dzielenia_elementowa_sortowania={ ["miast"]=true, ["gmin"]=true, ["powiat"]=true, ["województw"]=true, }; p.tablica_specjalne_wyrazy_sortowania={ ["portal"]=true, ["poziom"]=true, ["status"]=true, ["temat"]=true, }; p.tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie={ ["jest"]=true, ["może"]=true, ["można"]=true, ["być"]=true, ["zbyt"]=true, ["dane"]=true, ["się"]=true, ["szablon"]=true, ["według"]=true, ["mał[ayoe]"]=true, ["małość"]=true, }; p.tablica_wydzielania_subelementowych={ ["Link"]=true, }; p.tablica_wydzielania_subelementowych_innych={ ["Wiki"]=true, ["Multi%-?"]=true, ["Meta%-?"]=true, }; p.tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania={ ["skrypty"]=true, ["hasła"]=true, ["książki"]=true, ["artykuły"]=true, ["podręczniki"]=true, ["artykuły dla dzieci"]=true, ["podręczniki dla dzieci"]=true, ["strony brudnopisu opisu modułów"]=true, ["strony brudnopisu opisu szablonów"]=true, ["strony brudnopisu modułów"]=true, ["strony brudnopisu szablonów"]=true, ["strony opisu modułów"]=true, ["strony opisu szablonów"]=true, ["strony modułów"]=true, ["strony szablonów"]=true, ["jednostki brudnopisu projektu"]=true, ["strony brudnopisu projektu"]=true, ["strony kategorii"]=true, ["strony pomocy"]=true, ["strony projektu"]=true, ["jednostki użytkowników"]=true, ["strony użytkowników"]=true, ["strony niepodręcznikowe"]=true, }; return p; m1ey4975dkpxk5w912wxm33s9c8bato 553524 553521 2026-08-30T08:32:13Z Persino 2851 553524 Scribunto text/plain -- Zmienne potrzebne do funkcji: p.NazwaSortowaniaNazwyStrony(frame), która jest wykorzystywana do domyślnego formatowania stron do szablonów: "Kategoria" i "Kategorie", i ich pochodnych, które korzystają z funkcji o takich samych nazwach, co te szablony. local p={}; p.tablica_wyrazowa_alternatyw={ ["i"]=true, ["lub"]=true, ["oraz"]=true, ["bądź"]=true, ["ewentualnie"]=true, ["natomiast"]=true, }; p.tablica_wyrazowa_gdy_alternatywy={ ["szablon"]=true, }; p.tablica_wyrazowa_niealternatyw={ ["o"]=true, ["w"]=true, ["z"]=true, ["ze"]=true, ["od"]=true, ["ode"]=true, ["do"]=true, ["dla"]=true, ["na"]=true, ["pod"]=true, ["nad"]=true, ["znad"]=true, ["spod"]=true, ["stamtąd"]=true, ["podnad"]=true, ["bez"]=true, ["nie"]=true, ["tak"]=true, ["brak"]=true, ["spoza"]=true, }; p.tablica_wyrazowa_wybrane_przyimki={ ["o"]=true, ["z"]=true, ["ze"]=true, ["w"]=true, ["na"]=true, ["do"]=true, ["bez"]=true, ["od"]=true, }; p.tablica_charakterystycznych_przedrostowych={ ["wiki"]=true, }; p.tablica_wyrazy_niedopuszczalne={ ["infobox"]=true, ["wikibooks"]=true, ["mediawiki"]=true, }; p.tablica_wyrazy_niedopuszczalne_prefiks={ }; p.tablica_analizowanie_bez={ ["Wikibooks"]=true, ["MediaWiki"]=true, ["Commons"]=true, ["Meta"]=true, ["TemplateStyles"]=true, ["Lua"]=true, ["Scribunto"]=true, ["HTML"]=true, ["XHTML"]=true, ["CSS"]=true, ["String"]=true, ["Dump"]=true, ["Wikidan"]=true, ["Opis"]=true, }; p.tablica_analizowanie_specjalne_wyrazy={ ["błędam"]=true, } p.tablica_analizowanie_specjalne_sekwencje={ ["błędn"]=true, ["błędy"]=true, ["nazwy"]=true, }; p.tablica_wyrazy_do_usuwania_przez_sortowanie={ ["używa"]=true, ["wymag"]=true, ["podział"]=true, ["taki"]=true, ["jaki"]=true, ["samy"]=true, ["któr"]=true, ["zwróc"]=true, ["przez"]=true, ["przestarz"]=true, ["postac"]=true, ["zawiera"]=true, ["zawar"]=true, ["byc"]=true, ["dotycz"]=true, ["duż"]=true, ["małośc"]=true, ["malut"]=true, ["liczb"]=true, ["musi"]=true, ["musz"]=true, ["zgłaszan"]=true, ["przekracz"]=true, ["dopuszcz"]=true, ["duż"]=true, ["prawidł"]=true, ["samozamykaj"]=true, ["zależ"]=true, ["wyświetl"]=true, ["inn"]=true, ["tej"]=true, ["tego"]=true, ["pełn"]=true, ["dawn"]=true, --["definicj"]=true, ["główn"]=true, ["określon"]=true, ["poprawn"]=true, ["istniejąc"]=true, ["znan"]=true, ["zgodn"]=true, ["wszystk"]=true, ["sprawdzen"]=true, ["osobn"]=true, ["tworz"]=true, ["wywołan"]=true, ["wywołań"]=true, ["obsługując"]=true, ["wartość"]=true, ["pudełek"]=true, ["parametr"]=true, ["pozostał"]=true, ["użyc"]=true, ["szablonów"]=true, ["podano"]=true, ["złym"]=true, ["dobrym"]=true, ["brak"]=true, ["nazwanym"]=true, ["obiektam"]=true, ["pusty"]=true, ["puste"]=true, ["wykorzyst"]=true, ["potrzeb"]=true, ["korzystan"]=true, ["zbiorcz"]=true, ["powoduj"]=true, ["poszczególn"]=true, ["siostrzanym"]=true, }; p.tablica_wyrazy_przez_sortowanie={ ["brak"]=true, ["bez"]=true, ["spis"]=true, ["istniej"]=true, ["zobacz"]=true, ["grup"]=true, }; p.tablica_wyrazy_parsowania_nazwy_sortowania={ ["obiekt[^%s]*$"]=true, }; p.tablica_zmiana_liczenia_nazwy_sortowania={ ["odnośnik"]=true, }; p.tablica_dzielenia_elementowa_sortowania={ ["miast"]=true, ["gmin"]=true, ["powiat"]=true, ["województw"]=true, }; p.tablica_specjalne_wyrazy_sortowania={ ["portal"]=true, ["poziom"]=true, ["status"]=true, ["temat"]=true, }; p.tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie={ ["jest"]=true, ["może"]=true, ["można"]=true, ["być"]=true, ["zbyt"]=true, ["dane"]=true, ["się"]=true, ["szablon"]=true, ["według"]=true, ["mał[ayoe]"]=true, ["małość"]=true, }; p.tablica_wydzielania_subelementowych={ ["Link"]=true, }; p.tablica_wydzielania_subelementowych_innych={ ["Wiki"]=true, ["Multi%-?"]=true, ["Meta%-?"]=true, }; p.tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania={ ["skrypty"]=true, ["hasła"]=true, ["książki"]=true, ["artykuły"]=true, ["podręczniki"]=true, ["artykuły dla dzieci"]=true, ["podręczniki dla dzieci"]=true, ["strony brudnopisu opisu modułów"]=true, ["strony brudnopisu opisu szablonów"]=true, ["strony brudnopisu modułów"]=true, ["strony brudnopisu szablonów"]=true, ["strony opisu modułów"]=true, ["strony opisu szablonów"]=true, ["strony modułów"]=true, ["strony szablonów"]=true, ["jednostki brudnopisu projektu"]=true, ["strony brudnopisu projektu"]=true, ["strony kategorii"]=true, ["strony pomocy"]=true, ["strony projektu"]=true, ["jednostki użytkowników"]=true, ["strony użytkowników"]=true, ["strony niepodręcznikowe"]=true, }; return p; pbswngrkfao386gr3blaf9n7fdkhzzh 553525 553524 2026-08-30T08:36:37Z Persino 2851 Anulowano wersję [[Special:Diff/553524|553524]] autorstwa [[Special:Contributions/Persino|Persino]] ([[User talk:Persino|dyskusja]]) 553525 Scribunto text/plain -- Zmienne potrzebne do funkcji: p.NazwaSortowaniaNazwyStrony(frame), która jest wykorzystywana do domyślnego formatowania stron do szablonów: "Kategoria" i "Kategorie", i ich pochodnych, które korzystają z funkcji o takich samych nazwach, co te szablony. local p={}; p.tablica_wyrazowa_alternatyw={ ["i"]=true, ["lub"]=true, ["oraz"]=true, ["bądź"]=true, ["ewentualnie"]=true, ["natomiast"]=true, }; p.tablica_wyrazowa_gdy_alternatywy={ ["szablon"]=true, }; p.tablica_wyrazowa_niealternatyw={ ["o"]=true, ["w"]=true, ["z"]=true, ["ze"]=true, ["od"]=true, ["ode"]=true, ["do"]=true, ["dla"]=true, ["na"]=true, ["pod"]=true, ["nad"]=true, ["znad"]=true, ["spod"]=true, ["stamtąd"]=true, ["podnad"]=true, ["bez"]=true, ["nie"]=true, ["tak"]=true, ["brak"]=true, ["spoza"]=true, }; p.tablica_wyrazowa_wybrane_przyimki={ ["o"]=true, ["z"]=true, ["ze"]=true, ["w"]=true, ["na"]=true, ["do"]=true, ["bez"]=true, ["od"]=true, }; p.tablica_charakterystycznych_przedrostowych={ ["wiki"]=true, }; p.tablica_wyrazy_niedopuszczalne={ ["infobox"]=true, ["wikibooks"]=true, ["mediawiki"]=true, }; p.tablica_wyrazy_niedopuszczalne_prefiks={ }; p.tablica_analizowanie_bez={ ["Wikibooks"]=true, ["MediaWiki"]=true, ["Commons"]=true, ["Meta"]=true, ["TemplateStyles"]=true, ["Lua"]=true, ["Scribunto"]=true, ["HTML"]=true, ["XHTML"]=true, ["CSS"]=true, ["String"]=true, ["Dump"]=true, ["Wikidan"]=true, ["Opis"]=true, }; p.tablica_analizowanie_specjalne_wyrazy={ ["błędam"]=true, } p.tablica_analizowanie_specjalne_sekwencje={ ["błędn"]=true, ["błędy"]=true, ["nazwy"]=true, }; p.tablica_wyrazy_do_usuwania_przez_sortowanie={ ["używa"]=true, ["wymag"]=true, ["podział"]=true, ["taki"]=true, ["jaki"]=true, ["samy"]=true, ["któr"]=true, ["zwróc"]=true, ["przez"]=true, ["przestarz"]=true, ["postac"]=true, ["zawiera"]=true, ["zawar"]=true, ["byc"]=true, ["dotycz"]=true, ["duż"]=true, ["małośc"]=true, ["malut"]=true, ["liczb"]=true, ["musi"]=true, ["musz"]=true, ["zgłaszan"]=true, ["przekracz"]=true, ["dopuszcz"]=true, ["duż"]=true, ["prawidł"]=true, ["samozamykaj"]=true, ["zależ"]=true, ["wyświetl"]=true, ["inn"]=true, ["tej"]=true, ["tego"]=true, ["pełn"]=true, ["dawn"]=true, --["definicj"]=true, ["główn"]=true, ["określon"]=true, ["poprawn"]=true, ["istniejąc"]=true, ["znan"]=true, ["zgodn"]=true, ["wszystk"]=true, ["sprawdzen"]=true, ["osobn"]=true, ["tworz"]=true, ["wywołan"]=true, ["wywołań"]=true, ["obsługując"]=true, ["wartość"]=true, ["pudełek"]=true, ["parametr"]=true, ["pozostał"]=true, ["użyc"]=true, ["szablonów"]=true, ["podano"]=true, ["złym"]=true, ["dobrym"]=true, ["brak"]=true, ["nazwanym"]=true, ["obiektam"]=true, ["pusty"]=true, ["puste"]=true, ["wykorzyst"]=true, ["potrzeb"]=true, ["korzystan"]=true, ["zbiorcz"]=true, ["powoduj"]=true, ["poszczególn"]=true, ["siostrzanym"]=true, }; p.tablica_wyrazy_przez_sortowanie={ ["brak"]=true, ["bez"]=true, ["spis"]=true, ["istniej"]=true, ["zobacz"]=true, ["grup"]=true, }; p.tablica_wyrazy_parsowania_nazwy_sortowania={ ["obiekt[^%s]*$"]=true, }; p.tablica_zmiana_liczenia_nazwy_sortowania={ ["odnośnik"]=true, ["bez"]=true, }; p.tablica_dzielenia_elementowa_sortowania={ ["miast"]=true, ["gmin"]=true, ["powiat"]=true, ["województw"]=true, }; p.tablica_specjalne_wyrazy_sortowania={ ["portal"]=true, ["poziom"]=true, ["status"]=true, ["temat"]=true, }; p.tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie={ ["jest"]=true, ["może"]=true, ["można"]=true, ["być"]=true, ["zbyt"]=true, ["dane"]=true, ["się"]=true, ["szablon"]=true, ["według"]=true, ["mał[ayoe]"]=true, ["małość"]=true, }; p.tablica_wydzielania_subelementowych={ ["Link"]=true, }; p.tablica_wydzielania_subelementowych_innych={ ["Wiki"]=true, ["Multi%-?"]=true, ["Meta%-?"]=true, }; p.tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania={ ["skrypty"]=true, ["hasła"]=true, ["książki"]=true, ["artykuły"]=true, ["podręczniki"]=true, ["artykuły dla dzieci"]=true, ["podręczniki dla dzieci"]=true, ["strony brudnopisu opisu modułów"]=true, ["strony brudnopisu opisu szablonów"]=true, ["strony brudnopisu modułów"]=true, ["strony brudnopisu szablonów"]=true, ["strony opisu modułów"]=true, ["strony opisu szablonów"]=true, ["strony modułów"]=true, ["strony szablonów"]=true, ["jednostki brudnopisu projektu"]=true, ["strony brudnopisu projektu"]=true, ["strony kategorii"]=true, ["strony pomocy"]=true, ["strony projektu"]=true, ["jednostki użytkowników"]=true, ["strony użytkowników"]=true, ["strony niepodręcznikowe"]=true, }; return p; m1ey4975dkpxk5w912wxm33s9c8bato Moduł:Kategorie/sortowanie 828 62837 553518 550464 2026-08-30T06:49:24Z Persino 2851 553518 Scribunto text/plain local p={}; function p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania) local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane"); local tablica_wydzielania_subelementowych=kategorie_dane_modul.tablica_wydzielania_subelementowych; local ile;local ile_zastapien=0; local nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^(%a%l%l+)(%u+.*)$",function(wyraz,dalej) if(tablica_wydzielania_subelementowych[wyraz])then ile_zastapien=ile_zastapien+1; return dalej; end; return nil; end); if((ile>0)and(ile_zastapien>0))then return nazwa_sortowania,(ile-ile_zastapien); end; local tablica_wydzielania_subelementowych_innych=kategorie_dane_modul.tablica_wydzielania_subelementowych_innych; for name,_ in pairs(tablica_wydzielania_subelementowych_innych)do local nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^("..name..")(%a)","%2"); if(ile>0)then return nazwa_sortowania,ile; end; end; return nazwa_sortowania,0; end; local CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania=function(nazwa_sortowania) local czy_tak=mw.ustring.match(nazwa_sortowania,"^[%c%s_%p]*$") if(czy_tak)then return true;end; return false; end; local UsuwanieElementuArtykularnegoWoluminu=function(nazwa_sortowania,nawias_lewy,nawias_prawy) local ile_zmieniono=0; local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane"); local tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania=kategorie_dane_modul.tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania; nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%"..nawias_lewy.."[%p%s_]*([^%"..nawias_lewy.."%"..nawias_prawy.."]-)[%p%s_]*%"..nawias_prawy,function(wyrazenie) if(wyrazenie=="")then return "";end; if(tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania[wyrazenie])then ile_zmieniono=ile_zmieniono+1; return ""; end; end); return nazwa_sortowania,ile_zmieniono; end; local UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony=function(nazwa_sortowania) repeat local ile1;local ile2;local ile3;local ile4;local ile5; nazwa_sortowania,ile1=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%(([^%(%)]+)%)","%1"); nazwa_sortowania,ile2=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%[([^%(%)]+)%]","%1"); nazwa_sortowania,ile3=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%{([^%(%)]+)%}","%1"); nazwa_sortowania,ile4=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*\"([^%(%)]+)\"","%1"); nazwa_sortowania,ile5=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*„([^%(%)]+)”","%1"); local ile=ile1+ile2+ile3+ile4+ile5; until (ile==0); nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*",""); return nazwa_sortowania; end; local UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania=function(nazwa_sortowania,czy_koniec) local czy_tak=CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania); if(czy_tak)then return nazwa_sortowania,0;end; local ile; if(czy_koniec)then local ile1;local ile2; nazwa_sortowania,ile1=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]+",""); nazwa_sortowania,ile2=mw.ustring.gsub(nazwa_sortowania,"[%p%s_]+$",""); ile=ile1+ile2; else local UsuwanieNiepoprawnejInterpunkcjiNawiasowej=function(nazwa_sortowania,numer) local ile;local ile_nawias; repeat if(numer==1)then nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"(",")"); if(ile_nawias==0)then nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)%(([^%(%)]+)%)","%1%2"); else ile=ile_nawias; end; elseif(numer==2)then nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"[","]"); if(ile_nawias==0)then nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)%[([^%[%]]+)%]","%1%2"); else ile=ile_nawias; end; elseif(numer==3)then nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"{","}"); if(ile_nawias==0)then nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)%{([^%{%}]+)%}","%1%2"); else ile=ile_nawias; end; elseif(numer==4)then nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"\"","\""); if(ile_nawias==0)then nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)\"([^\"]+)\"","%1%2"); else ile=ile_nawias; end; elseif(numer==5)then nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"„","”"); if(ile_nawias==0)then nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)„([^„”]+)”","%1%2"); else ile=ile_nawias; end; else mw.log("Funkcja: UsuwanieNiepoprawnejInterpunkcjiNawiasowej, niewłaściwa wartość parametru: numer.") end; until (ile==0); return nazwa_sortowania,ile; end; local ile1;local ile2;local ile3;local ile4;local ile5;local ile6;local ile7; nazwa_sortowania,ile1=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,1); nazwa_sortowania,ile2=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,2); nazwa_sortowania,ile3=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,3); nazwa_sortowania,ile4=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,4); nazwa_sortowania,ile5=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,5); nazwa_sortowania,ile6=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]+",""); nazwa_sortowania,ile7=mw.ustring.gsub(nazwa_sortowania,"[%s_]+$",""); ile=ile1+ile2+ile3+ile4+ile5+ile6+ile7; end; nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania); return nazwa_sortowania,ile; end; local ZamienianieWyrazoweSzereguWyrazu=function(nazwa_sortowania,wzor,funkcja,czy_wielkosc) nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania); local ile_dopasowania=0; local nazwa,ile=mw.ustring.gsub(nazwa_sortowania,wzor,function(wyraz) wyraz=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(wyraz,true); if(not czy_wielkosc)then wyraz=mw.ustring.lower(wyraz);end; local wynik=funkcja(wyraz); if(wynik)then ile_dopasowania=ile_dopasowania+1; return nil; end; return nil; end); return nazwa,ile,ile_dopasowania; end; local ZamienianieWyrazoweSzereguWyrazuKompleksowe=function(nazwa_sortowania,wzor,tablica_kompletne_wyrazy,tablica_niekompletne_wyrazy,czy_wielkosc) local ile;local ile_dopasowan; local nazwa,ile,ile_dopasowan=ZamienianieWyrazoweSzereguWyrazu(nazwa_sortowania,wzor,function(wyraz) if(tablica_kompletne_wyrazy)then if(tablica_kompletne_wyrazy[wyraz])then return true; end; end; if(tablica_niekompletne_wyrazy)then for name,_ in pairs(tablica_niekompletne_wyrazy)do local czy_dopasowano=mw.ustring.match(wyraz,"^"..name) if(czy_dopasowano)then return true; end; end; end; return nil; end,czy_wielkosc); return nazwa,ile,ile_dopasowan; end; local UsuwaneElemementyNazwySortowania=function(nazwa_sortowania,tablica_kompletne_wyrazy,tablica_niekompletne_wyrazy,czy_nie,czy_od_poczatku) nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania); local ile_niezastapil=0; local nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,((czy_od_poczatku and "^" or "").."%s*(%S+)"),function(wyraz) wyraz=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(wyraz,true); if(mw.ustring.match(wyraz,"^%u+$"))then ile_niezastapil=ile_niezastapil+1; return nil; end; wyraz=mw.ustring.lower(wyraz); if(tablica_kompletne_wyrazy)then if(tablica_kompletne_wyrazy[wyraz])then return ""; end; end; if(tablica_niekompletne_wyrazy)then for p_wzor_wyrazy,_ in pairs(tablica_niekompletne_wyrazy)do local p_wyraz=mw.ustring.match(wyraz,"^"..p_wzor_wyrazy) or (czy_nie and mw.ustring.match(wyraz,"^nie"..p_wzor_wyrazy) or nil); if(p_wyraz)then return ""; end; end; end; ile_niezastapil=ile_niezastapil+1; return nil; end); ile=ile-ile_niezastapil; return nazwa_sortowania,ile; end; local CzyPierwszyWyrazPrzezSortowanie=function(nazwa_sortowania) local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane"); local tablica_wyrazy_przez_sortowanie=kategorie_dane_modul.tablica_wyrazy_przez_sortowanie; for name,value in pairs(tablica_wyrazy_przez_sortowanie) do local czy_dopasowano=mw.ustring.match(nazwa_sortowania,"^"..name) or mw.ustring.match(nazwa_sortowania,"^"..mw.getContentLanguage():ucfirst(name)) or mw.ustring.match(nazwa_sortowania,"^".."nie"..name) or mw.ustring.match(nazwa_sortowania,"^"..mw.getContentLanguage():ucfirst("nie"..name)); if(czy_dopasowano)then return true; end; end; return false; end; local UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania=function(nazwa_sortowania) if(CzyPierwszyWyrazPrzezSortowanie(nazwa_sortowania))then return nazwa_sortowania,1;end; local nazwa_sortowania_stare=nazwa_sortowania; nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania); local czy_pusta_nazwa_sortowania=CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania); if(czy_pusta_nazwa_sortowania)then return nazwa_sortowania_stare,0; end; local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane"); local tablica_analizowanie_specjalne_sekwencje=kategorie_dane_modul.tablica_analizowanie_specjalne_sekwencje; local _,_,ile_wyrazy_sekwencje=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",nil,tablica_analizowanie_specjalne_sekwencje); if(ile_wyrazy_sekwencje>0)then return nazwa_sortowania,0; end; nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"^%s*([^/%s]+%s+)",""); local ile_wyrazy_niedopuszczalne=0; local tablica_wyrazy_niedopuszczalne=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne; local tablica_wyrazy_niedopuszczalne_prefiks=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne_prefiks; local _,_,ile_wyrazy_niedopuszczalne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks); if(ile_wyrazy_niedopuszczalne>0)then nazwa_sortowania=nazwa_sortowania_stare; end; return nazwa_sortowania,ile_wyrazy_niedopuszczalne; end; local IleJestSpacjiNazwySortowania=function(nazwa_sortowania) local _,ile=mw.ustring.gsub(nazwa_sortowania,"(%s)",function()return nil;end); return ile; end; local function CzyJestWeNazwieSortowaniaTenParserowyWyrazLubGrupaWyrazowa(nazwa_sortowania,tablica_parsowania) local czy_tak=false; for name,value in pairs(tablica_parsowania)do czy_tak=czy_tak or mw.ustring.match(nazwa_sortowania,"[%s%p]+"..name); if(czy_tak)then return czy_tak;end; end; for name,value in pairs(tablica_parsowania)do czy_tak=czy_tak or mw.ustring.match(nazwa_sortowania,"^"..name); if(czy_tak)then return czy_tak;end; end; return false; end; local TekstPoPrzyimkuNazwySortowania=function(nazwa_sortowania) local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane"); local tablica_wyrazowa_wybrane_przyimki=kategorie_dane_modul.tablica_wyrazowa_wybrane_przyimki; local tablica_zmiana_liczenia_nazwy_sortowania=kategorie_dane_modul.tablica_zmiana_liczenia_nazwy_sortowania; local tablica_analizowanie_specjalne_wyrazy=kategorie_dane_modul.tablica_analizowanie_specjalne_wyrazy; local tablica_wyrazy_parsowania_nazwy_sortowania=kategorie_dane_modul.tablica_wyrazy_parsowania_nazwy_sortowania; local tablica_wyrazowa_niealternatyw=kategorie_dane_modul.tablica_wyrazowa_niealternatyw; local tablica_analizowanie_bez=kategorie_dane_modul.tablica_analizowanie_bez; local tab_dane={}; local nie_usuwaj_pierwszego_z_kolei_wyrazu; local czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka; local tab_przyimki={}; for name,value in pairs(tablica_wyrazowa_wybrane_przyimki)do local poczatek,koniec,_,nazwa_sortowania_temp=mw.ustring.find(nazwa_sortowania,"%s+("..name..")%s+(%S.*)%s*$",1); if(poczatek)then if(((name=="z")or(name=="ze"))and((not tab_przyimki["z"])and(not tab_przyimki["ze"])))then local poczatek2,koniec2,_,nazwa_sortowania_temp2; poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania,",%s+(z)%s+(%S.*)%s*$",1); local poczatek3,koniec3,_,nazwa_sortowania_temp3=mw.ustring.match(nazwa_sortowania_temp,",%s+(z)%s+(%S.*)%s*$"); if(not poczatek3)then poczatek3,koniec3,_,nazwa_sortowania_temp3=mw.ustring.match(nazwa_sortowania_temp,",%s+(ze)%s+(%S.*)%s*$"); end; local poczatek4,koniec4,_,nazwa_sortowania_temp4=mw.ustring.match(nazwa_sortowania_temp,"[^,%s]%s+(z)%s+(%S.*)%s*$"); if(not poczatek4)then poczatek4,koniec4,_,nazwa_sortowania_temp4=mw.ustring.match(nazwa_sortowania_temp,"[^%s,]%s+(ze)%s+(%S.*)%s*$"); end; local CzyWiecej=function(nazwa_sortowania) local ile=0;local tak=false; local iter=mw.ustring.gmatch(nazwa_sortowania,"%S+"); for wyraz in iter do if(tak)then return;end; local wyraz2=mw.ustring.gsub(wyraz,"%,+$",""); wyraz2=mw.ustring.lower(wyraz2); if(tablica_wyrazowa_niealternatyw[wyraz2])then tak=true;break;end; if(not mw.ustring.match(wyraz,",$"))then ile=ile+1; else ile=ile+1; tak=true; break; end; end; if(not tak)then return 1;end; return ile; end; local czy_wiecej=nazwa_sortowania_temp2 and (CzyWiecej(nazwa_sortowania_temp2)>1) or false; local czy_warunek=((not poczatek3) or poczatek4)or(czy_wiecej); if(poczatek2)then czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=true and ((not poczatek4)or(poczatek3)); else poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania,",%s+(ze)%s+(%S.*)%s*$",1); czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=(poczatek2 and true or false) and czy_warunek; end; if(poczatek2)then local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania_temp2,"^%s*(%S+)",nil,tablica_analizowanie_specjalne_wyrazy,true); nie_usuwaj_pierwszego_z_kolei_wyrazu=(ile_wyrazy_specialne==0)and true or false; tab_dane[poczatek]={name,(not czy_warunek)and nazwa_sortowania_temp or nazwa_sortowania_temp2,}; else local poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania_temp,"%s+(z)%s+(%S.*)%s*$",1); if(not poczatek2)then poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania_temp,"%s+(ze)%s+(%S.*)%s*$",1); end; if(poczatek2)then nie_usuwaj_pierwszego_z_kolei_wyrazu=true;end; tab_dane[poczatek]={name,nazwa_sortowania_temp,}; end; elseif((name~="z")and(name~="ze"))then tab_dane[poczatek]={name,nazwa_sortowania_temp,}; end; tab_przyimki[name]=true; end; end; czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=false or czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka or ( ((not tab_przyimki["z"])and(tab_przyimki["ze"])) and(not CzyJestWeNazwieSortowaniaTenParserowyWyrazLubGrupaWyrazowa(nazwa_sortowania,tablica_wyrazy_parsowania_nazwy_sortowania)) ); if(not czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka)then for name,value in pairs(tablica_zmiana_liczenia_nazwy_sortowania)do if( mw.ustring.match(nazwa_sortowania,name) or mw.ustring.match(nazwa_sortowania,mw.getContentLanguage():ucfirst(name)) )then czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=true; break; end; end; end; local minimim_maksimum; local __min=czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka and math.min or math.max; local __max=czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka and math.max or math.min; for name,value in pairs(tab_dane)do if(not minimim_maksimum)then minimim_maksimum=name;end; if((value[1]=="w")or(value[1]=="we")or(value[1]=="bez"))then minimim_maksimum=__min(minimim_maksimum,name); else minimim_maksimum=__max(minimim_maksimum,name); end; end; if(minimim_maksimum)then local nazwa_sortowania_temp=tab_dane[minimim_maksimum][2]; nazwa_sortowania_temp=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania_temp); local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania_temp,"^%s*(%S+)",nil,tablica_analizowanie_bez,true); if(ile_wyrazy_specialne>0)then nie_usuwaj_pierwszego_z_kolei_wyrazu=true;end; return nazwa_sortowania_temp,1,nie_usuwaj_pierwszego_z_kolei_wyrazu; else return nazwa_sortowania,0,nie_usuwaj_pierwszego_z_kolei_wyrazu; end; end; local WydzielonaNazwaSortowaniaPoMinusieLubPauzie=function(nazwa_sortowania) local czy_niezmieniono=true; local nazwa_sortowania_temp=mw.ustring.match(nazwa_sortowania,"^%s*[^%s%-%–][^%-%–]*%s+[%-%–]%s+(%S.-)%s*$"); czy_niezmieniono=czy_niezmieniono and (not nazwa_sortowania_temp); nazwa_sortowania=nazwa_sortowania_temp or nazwa_sortowania; local nazwa_sortowania_temp=mw.ustring.match(nazwa_sortowania,"^%s*[^%s%:][^%:]*%s*[%:]%s*(%S.-)%s*$"); czy_niezmieniono=czy_niezmieniono and (not nazwa_sortowania_temp); nazwa_sortowania=nazwa_sortowania_temp or nazwa_sortowania; return nazwa_sortowania,(not czy_niezmieniono); end; local WyrazOdWielkiejLiteryNazwySortowania=function(nazwa_sortowania,czy_od_poczatku) local ktoras_duza_litera=mw.ustring.match(nazwa_sortowania,((czy_od_poczatku and "^%s*" or "%s+").."%p*%u")); return ktoras_duza_litera and true or false; end; local function UsuwanieNazwaSortowanie(nazwa_sortowania,ktoras_duza_litera) if(mw.ustring.match(nazwa_sortowania,"^%(%a+[%a%s]*%)"))then return nazwa_sortowania;end; local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane"); local tablica_wyrazy_do_usuwania_przez_sortowanie=kategorie_dane_modul.tablica_wyrazy_do_usuwania_przez_sortowanie; local tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie=kategorie_dane_modul.tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie; local tablica_dzielenia_elementowa_sortowania=kategorie_dane_modul.tablica_dzielenia_elementowa_sortowania; local tablica_wyrazowa_niealternatyw=kategorie_dane_modul.tablica_wyrazowa_niealternatyw; local tablica_wyrazy_niedopuszczalne=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne; local tablica_wyrazy_niedopuszczalne_prefiks=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne_prefiks; repeat local ile=0;local ile1=0;local ile2=0;local ile3=0; nazwa_sortowania,ile1=UsuwaneElemementyNazwySortowania(nazwa_sortowania,tablica_wyrazowa_niealternatyw,nil,false,true); local stara_nazwa_sortowania=nazwa_sortowania; nazwa_sortowania,ile2=UsuwaneElemementyNazwySortowania(nazwa_sortowania,tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie,tablica_wyrazy_do_usuwania_przez_sortowanie,true,true); local _,_,ile_jest_dla_niedoposzczalne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks); if(ile_jest_dla_niedoposzczalne>0)then return stara_nazwa_sortowania; end; if(not ktoras_duza_litera)then local stara_nazwa_sortowania=nazwa_sortowania; nazwa_sortowania,ile3=UsuwaneElemementyNazwySortowania(nazwa_sortowania,nil,tablica_dzielenia_elementowa_sortowania,false,true); local _,_,ile_jest_dla_niedoposzczalne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks); if(ile_jest_dla_niedoposzczalne>0)then return stara_nazwa_sortowania; end; end; ile=ile1+ile2+ile3; until (ile==0); return nazwa_sortowania; end; function p.NazwaSortowaniaNazwyStrony(frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame,true); local nazwa_sortowania=args[1]; local techniczne_modul=require("Module:Techniczne"); nazwa_sortowania=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(nazwa_sortowania); if(not mw.ustring.match(nazwa_sortowania,"/"))then local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane"); local tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania=kategorie_dane_modul.tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania; local tablica_charakterystycznych_przedrostowych=kategorie_dane_modul.tablica_charakterystycznych_przedrostowych; local tablica_specjalne_wyrazy_sortowania=kategorie_dane_modul.tablica_specjalne_wyrazy_sortowania; local _,_,ile_jest_na_poczatku=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%s_]*(.-)[%s_]*$",nil,tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania); local _,_,ile_jest_charakterystycznych_przedrostkowych=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_charakterystycznych_przedrostowych); local _,_,ile_jest_specjalne_wyrazy_sortowania=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_specjalne_wyrazy_sortowania); if((ile_jest_na_poczatku>0)and((ile_jest_charakterystycznych_przedrostkowych==0)and(ile_jest_specjalne_wyrazy_sortowania==0)))then nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false); nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania); return nazwa_sortowania,true; end; if(CzyPierwszyWyrazPrzezSortowanie(nazwa_sortowania))then return nazwa_sortowania,true;end; local czy_zmieniono; local stara_nazwa_sortowania=nazwa_sortowania; local nazwa_sortowania_po_minusie_lub_pausie=nazwa_sortowania; local tablica_wyrazy_niedopuszczalne=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne; local tablica_wyrazy_niedopuszczalne_prefiks=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne_prefiks; nazwa_sortowania,czy_zmieniono=WydzielonaNazwaSortowaniaPoMinusieLubPauzie(nazwa_sortowania); if(czy_zmieniono)then local _,_,ile_jest_dla_myslnika0=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks); local _,_,ile_jest_dla_myslnika1=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks); local _,_,ile_jest_dla_myslnika2=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks); if((ile_jest_dla_myslnika0==0)and(ile_jest_dla_myslnika1>ile_jest_dla_myslnika2))then nazwa_sortowania=stara_nazwa_sortowania; end; if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then nazwa_sortowania=stara_nazwa_sortowania; else local _,_,ile_jest_na_poczatku=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%s_]*(.-)[%s_]*$",nil,tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania); if(ile_jest_na_poczatku>0)then nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false); if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then nazwa_sortowania=stara_nazwa_sortowania; nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania); end; nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania); return nazwa_sortowania,true; end; end; end; local ktoras_duza_litera=WyrazOdWielkiejLiteryNazwySortowania(nazwa_sortowania); local tablica_analizowanie_bez=kategorie_dane_modul.tablica_analizowanie_bez; local tablica_analizowanie_specjalne_wyrazy=kategorie_dane_modul.tablica_analizowanie_specjalne_wyrazy; local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_analizowanie_bez,true); local _,_,ile_wyrazy_specialne_wyrazy=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_analizowanie_specjalne_wyrazy,true); local nazwa_sortowania_przed_przyimkiem=(czy_zmieniono) and nazwa_sortowania_po_minusie_lub_pausie or nazwa_sortowania; local ile_przyimki;local nie_usuwaj_pierwszego_z_kolei_wyrazu; if((not ktoras_duza_litera)or(ile_wyrazy_specialne>0)or(ile_wyrazy_specialne_wyrazy>0)or(ile_jest_charakterystycznych_przedrostkowych>0))then local stara_nazwa_sortowania=nazwa_sortowania; local tablica_wyrazowa_wybrane_przyimki=kategorie_dane_modul.tablica_wyrazowa_wybrane_przyimki; local _,_,ile_jest_dla_przyimki0=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks); local _,_,ile_jest_dla_przyimki1=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks); local _,_,ile_jest_przyimki=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks); nazwa_sortowania,ile_przyimki,nie_usuwaj_pierwszego_z_kolei_wyrazu=TekstPoPrzyimkuNazwySortowania(nazwa_sortowania); local _,_,ile_jest_dla_przyimki2=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks); if( (ile_jest_dla_przyimki0==0) and( ((ile_przyimki>0)and(ile_jest_dla_przyimki1-ile_jest_dla_przyimki2>0)) or((ile_przyimki==0)and(ile_jest_dla_przyimki1>0)) ) )then nazwa_sortowania=stara_nazwa_sortowania; end; if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then nazwa_sortowania=stara_nazwa_sortowania; ile_przyimki=nil; nie_usuwaj_pierwszego_z_kolei_wyrazu=nil; end; end; if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then nazwa_sortowania=stara_nazwa_sortowania; nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania); nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania); return nazwa_sortowania,true; end; local nazwa_sortowania_temp=UsuwanieNazwaSortowanie(nazwa_sortowania,ktoras_duza_litera); if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania_temp))then nazwa_sortowania=nazwa_sortowania_przed_przyimkiem; ile_przyimki=nil; nie_usuwaj_pierwszego_z_kolei_wyrazu=nil; end; ile=IleJestSpacjiNazwySortowania(nazwa_sortowania); if(ile>0)then local stara_nazwa_sortowania=nazwa_sortowania; if(not ktoras_duza_litera)then local tablica_wyrazowa_alternatyw=kategorie_dane_modul.tablica_wyrazowa_alternatyw; local _,_,ile_znalezione=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"%s+(%S+)",tablica_wyrazowa_alternatyw,nil); if(ile_znalezione>0)then local tablica_wyrazowa_gdy_alternatywy=kategorie_dane_modul.tablica_wyrazowa_gdy_alternatywy; local _,_,ile_specjalne_gdy_alternatywy=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"^%s*(%S+)",nil,tablica_wyrazowa_gdy_alternatywy); if(ile_specjalne_gdy_alternatywy==0)then nazwa_sortowania=stara_nazwa_sortowania; nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false); if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then nazwa_sortowania=stara_nazwa_sortowania; nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania); end; nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania); return nazwa_sortowania,true; end; end; end; nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania; if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then nazwa_sortowania=nazwa_sortowania_przed_przyimkiem; nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania; end; nazwa_sortowania=UsuwanieNazwaSortowanie(nazwa_sortowania,ktoras_duza_litera); if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then nazwa_sortowania=nazwa_sortowania_przed_przyimkiem; nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania; nazwa_sortowania=UsuwanieNazwaSortowanie(nazwa_sortowania); if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then nazwa_sortowania=nazwa_sortowania_przed_przyimkiem; nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania; end; end; nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false); if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then nazwa_sortowania=stara_nazwa_sortowania; nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania); end; nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania); return nazwa_sortowania,true; end; local stara_nazwa_sortowania=nazwa_sortowania; nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false); if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then nazwa_sortowania=stara_nazwa_sortowania; nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania); end; nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania); return nazwa_sortowania,true; end; nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania); return nazwa_sortowania,false; end; return p; ies6wmoy8rzetqxal2org2wk415a2hd 553519 553518 2026-08-30T06:53:49Z Persino 2851 553519 Scribunto text/plain local p={}; function p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania) local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane"); local tablica_wydzielania_subelementowych=kategorie_dane_modul.tablica_wydzielania_subelementowych; local ile;local ile_zastapien=0; local nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^(%a%l%l+)(%u+.*)$",function(wyraz,dalej) if(tablica_wydzielania_subelementowych[wyraz])then ile_zastapien=ile_zastapien+1; return dalej; end; return nil; end); if((ile>0)and(ile_zastapien>0))then return nazwa_sortowania,(ile-ile_zastapien); end; local tablica_wydzielania_subelementowych_innych=kategorie_dane_modul.tablica_wydzielania_subelementowych_innych; for name,_ in pairs(tablica_wydzielania_subelementowych_innych)do local nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^("..name..")(%a)","%2"); if(ile>0)then return nazwa_sortowania,ile; end; end; return nazwa_sortowania,0; end; local CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania=function(nazwa_sortowania) local czy_tak=mw.ustring.match(nazwa_sortowania,"^[%c%s_%p]*$") if(czy_tak)then return true;end; return false; end; local UsuwanieElementuArtykularnegoWoluminu=function(nazwa_sortowania,nawias_lewy,nawias_prawy) local ile_zmieniono=0; local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane"); local tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania=kategorie_dane_modul.tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania; nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%"..nawias_lewy.."[%p%s_]*([^%"..nawias_lewy.."%"..nawias_prawy.."]-)[%p%s_]*%"..nawias_prawy,function(wyrazenie) if(wyrazenie=="")then return "";end; if(tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania[wyrazenie])then ile_zmieniono=ile_zmieniono+1; return ""; end; end); return nazwa_sortowania,ile_zmieniono; end; local UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony=function(nazwa_sortowania) repeat local ile1;local ile2;local ile3;local ile4;local ile5; nazwa_sortowania,ile1=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%(([^%(%)]+)%)","%1"); nazwa_sortowania,ile2=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%[([^%(%)]+)%]","%1"); nazwa_sortowania,ile3=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%{([^%(%)]+)%}","%1"); nazwa_sortowania,ile4=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*\"([^%(%)]+)\"","%1"); nazwa_sortowania,ile5=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*„([^%(%)]+)”","%1"); local ile=ile1+ile2+ile3+ile4+ile5; until (ile==0); nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*",""); return nazwa_sortowania; end; local UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania=function(nazwa_sortowania,czy_koniec) local czy_tak=CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania); if(czy_tak)then return nazwa_sortowania,0;end; local ile; if(czy_koniec)then local ile1;local ile2; nazwa_sortowania,ile1=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]+",""); nazwa_sortowania,ile2=mw.ustring.gsub(nazwa_sortowania,"[%p%s_]+$",""); ile=ile1+ile2; else local UsuwanieNiepoprawnejInterpunkcjiNawiasowej=function(nazwa_sortowania,numer) local ile;local ile_nawias; repeat if(numer==1)then nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"(",")"); if(ile_nawias==0)then nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)%(([^%(%)]+)%)","%1%2"); else ile=ile_nawias; end; elseif(numer==2)then nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"[","]"); if(ile_nawias==0)then nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)%[([^%[%]]+)%]","%1%2"); else ile=ile_nawias; end; elseif(numer==3)then nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"{","}"); if(ile_nawias==0)then nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)%{([^%{%}]+)%}","%1%2"); else ile=ile_nawias; end; elseif(numer==4)then nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"\"","\""); if(ile_nawias==0)then nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)\"([^\"]+)\"","%1%2"); else ile=ile_nawias; end; elseif(numer==5)then nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"„","”"); if(ile_nawias==0)then nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)„([^„”]+)”","%1%2"); else ile=ile_nawias; end; else mw.log("Funkcja: UsuwanieNiepoprawnejInterpunkcjiNawiasowej, niewłaściwa wartość parametru: numer.") end; until (ile==0); return nazwa_sortowania,ile; end; local ile1;local ile2;local ile3;local ile4;local ile5;local ile6;local ile7; nazwa_sortowania,ile1=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,1); nazwa_sortowania,ile2=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,2); nazwa_sortowania,ile3=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,3); nazwa_sortowania,ile4=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,4); nazwa_sortowania,ile5=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,5); nazwa_sortowania,ile6=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]+",""); nazwa_sortowania,ile7=mw.ustring.gsub(nazwa_sortowania,"[%s_]+$",""); ile=ile1+ile2+ile3+ile4+ile5+ile6+ile7; end; nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania); return nazwa_sortowania,ile; end; local ZamienianieWyrazoweSzereguWyrazu=function(nazwa_sortowania,wzor,funkcja,czy_wielkosc) nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania); local ile_dopasowania=0; local nazwa,ile=mw.ustring.gsub(nazwa_sortowania,wzor,function(wyraz) wyraz=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(wyraz,true); if(not czy_wielkosc)then wyraz=mw.ustring.lower(wyraz);end; local wynik=funkcja(wyraz); if(wynik)then ile_dopasowania=ile_dopasowania+1; return nil; end; return nil; end); return nazwa,ile,ile_dopasowania; end; local ZamienianieWyrazoweSzereguWyrazuKompleksowe=function(nazwa_sortowania,wzor,tablica_kompletne_wyrazy,tablica_niekompletne_wyrazy,czy_wielkosc) local ile;local ile_dopasowan; local nazwa,ile,ile_dopasowan=ZamienianieWyrazoweSzereguWyrazu(nazwa_sortowania,wzor,function(wyraz) if(tablica_kompletne_wyrazy)then if(tablica_kompletne_wyrazy[wyraz])then return true; end; end; if(tablica_niekompletne_wyrazy)then for name,_ in pairs(tablica_niekompletne_wyrazy)do local czy_dopasowano=mw.ustring.match(wyraz,"^"..name) if(czy_dopasowano)then return true; end; end; end; return nil; end,czy_wielkosc); return nazwa,ile,ile_dopasowan; end; local UsuwaneElemementyNazwySortowania=function(nazwa_sortowania,tablica_kompletne_wyrazy,tablica_niekompletne_wyrazy,czy_nie,czy_od_poczatku) nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania); local ile_niezastapil=0; local nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,((czy_od_poczatku and "^" or "").."%s*(%S+)"),function(wyraz) wyraz=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(wyraz,true); if(mw.ustring.match(wyraz,"^%u+$"))then ile_niezastapil=ile_niezastapil+1; return nil; end; wyraz=mw.ustring.lower(wyraz); if(tablica_kompletne_wyrazy)then if(tablica_kompletne_wyrazy[wyraz])then return ""; end; end; if(tablica_niekompletne_wyrazy)then for p_wzor_wyrazy,_ in pairs(tablica_niekompletne_wyrazy)do local p_wyraz=mw.ustring.match(wyraz,"^"..p_wzor_wyrazy) or (czy_nie and mw.ustring.match(wyraz,"^nie"..p_wzor_wyrazy) or nil); if(p_wyraz)then return ""; end; end; end; ile_niezastapil=ile_niezastapil+1; return nil; end); ile=ile-ile_niezastapil; return nazwa_sortowania,ile; end; local CzyPierwszyWyrazPrzezSortowanie=function(nazwa_sortowania) local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane"); local tablica_wyrazy_przez_sortowanie=kategorie_dane_modul.tablica_wyrazy_przez_sortowanie; for name,value in pairs(tablica_wyrazy_przez_sortowanie) do local czy_dopasowano=mw.ustring.match(nazwa_sortowania,"^"..name) or mw.ustring.match(nazwa_sortowania,"^"..mw.getContentLanguage():ucfirst(name)) or mw.ustring.match(nazwa_sortowania,"^".."nie"..name) or mw.ustring.match(nazwa_sortowania,"^"..mw.getContentLanguage():ucfirst("nie"..name)); if(czy_dopasowano)then return true; end; end; return false; end; local UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania=function(nazwa_sortowania) if(CzyPierwszyWyrazPrzezSortowanie(nazwa_sortowania))then return nazwa_sortowania,1;end; local nazwa_sortowania_stare=nazwa_sortowania; nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania); local czy_pusta_nazwa_sortowania=CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania); if(czy_pusta_nazwa_sortowania)then return nazwa_sortowania_stare,0; end; local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane"); local tablica_analizowanie_specjalne_sekwencje=kategorie_dane_modul.tablica_analizowanie_specjalne_sekwencje; local _,_,ile_wyrazy_sekwencje=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",nil,tablica_analizowanie_specjalne_sekwencje); if(ile_wyrazy_sekwencje>0)then return nazwa_sortowania,0; end; nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"^%s*([^/%s]+%s+)",""); local ile_wyrazy_niedopuszczalne=0; local tablica_wyrazy_niedopuszczalne=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne; local tablica_wyrazy_niedopuszczalne_prefiks=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne_prefiks; local _,_,ile_wyrazy_niedopuszczalne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks); if(ile_wyrazy_niedopuszczalne>0)then nazwa_sortowania=nazwa_sortowania_stare; end; return nazwa_sortowania,ile_wyrazy_niedopuszczalne; end; local IleJestSpacjiNazwySortowania=function(nazwa_sortowania) local _,ile=mw.ustring.gsub(nazwa_sortowania,"(%s)",function()return nil;end); return ile; end; local function CzyJestWeNazwieSortowaniaTenParserowyWyrazLubGrupaWyrazowa(nazwa_sortowania,tablica_parsowania) local czy_tak=false; for name,value in pairs(tablica_parsowania)do czy_tak=czy_tak or mw.ustring.match(nazwa_sortowania,"[%s%p]+"..name); if(czy_tak)then return czy_tak;end; end; for name,value in pairs(tablica_parsowania)do czy_tak=czy_tak or mw.ustring.match(nazwa_sortowania,"^"..name); if(czy_tak)then return czy_tak;end; end; return false; end; local TekstPoPrzyimkuNazwySortowania=function(nazwa_sortowania) local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane"); local tablica_wyrazowa_wybrane_przyimki=kategorie_dane_modul.tablica_wyrazowa_wybrane_przyimki; local tablica_zmiana_liczenia_nazwy_sortowania=kategorie_dane_modul.tablica_zmiana_liczenia_nazwy_sortowania; local tablica_analizowanie_specjalne_wyrazy=kategorie_dane_modul.tablica_analizowanie_specjalne_wyrazy; local tablica_wyrazy_parsowania_nazwy_sortowania=kategorie_dane_modul.tablica_wyrazy_parsowania_nazwy_sortowania; local tablica_wyrazowa_niealternatyw=kategorie_dane_modul.tablica_wyrazowa_niealternatyw; local tablica_analizowanie_bez=kategorie_dane_modul.tablica_analizowanie_bez; local tab_dane={}; local nie_usuwaj_pierwszego_z_kolei_wyrazu; local czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka; local tab_przyimki={}; for name,value in pairs(tablica_wyrazowa_wybrane_przyimki)do local poczatek,koniec,_,nazwa_sortowania_temp=mw.ustring.find(nazwa_sortowania,"%s+("..name..")%s+(%S.*)%s*$",1); if(poczatek)then if(((name=="z")or(name=="ze"))and((not tab_przyimki["z"])and(not tab_przyimki["ze"])))then local poczatek2,koniec2,_,nazwa_sortowania_temp2; poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania,",%s+(z)%s+(%S.*)%s*$",1); local poczatek3,koniec3,_,nazwa_sortowania_temp3=mw.ustring.match(nazwa_sortowania_temp,",%s+(z)%s+(%S.*)%s*$"); if(not poczatek3)then poczatek3,koniec3,_,nazwa_sortowania_temp3=mw.ustring.match(nazwa_sortowania_temp,",%s+(ze)%s+(%S.*)%s*$"); end; local poczatek4,koniec4,_,nazwa_sortowania_temp4=mw.ustring.match(nazwa_sortowania_temp,"[^,%s]%s+(z)%s+(%S.*)%s*$"); if(not poczatek4)then poczatek4,koniec4,_,nazwa_sortowania_temp4=mw.ustring.match(nazwa_sortowania_temp,"[^%s,]%s+(ze)%s+(%S.*)%s*$"); end; local CzyWiecej=function(nazwa_sortowania) local ile=0;local tak=false; local iter=mw.ustring.gmatch(nazwa_sortowania,"%S+"); for wyraz in iter do if(tak)then return;end; local wyraz2=mw.ustring.gsub(wyraz,"%,+$",""); wyraz2=mw.ustring.lower(wyraz2); if(tablica_wyrazowa_niealternatyw[wyraz2])then tak=true;break;end; if(not mw.ustring.match(wyraz,",$"))then ile=ile+1; else ile=ile+1; tak=true; break; end; end; if(not tak)then return 1;end; return ile; end; local czy_wiecej=nazwa_sortowania_temp2 and (CzyWiecej(nazwa_sortowania_temp2)>1) or false; local czy_warunek=((not poczatek3) or poczatek4)or(czy_wiecej); if(poczatek2)then czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=true and ((not poczatek4)or(poczatek3)); else poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania,",%s+(ze)%s+(%S.*)%s*$",1); czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=(poczatek2 and true or false) and czy_warunek; end; if(poczatek2)then local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania_temp2,"^%s*(%S+)",nil,tablica_analizowanie_specjalne_wyrazy,true); nie_usuwaj_pierwszego_z_kolei_wyrazu=(ile_wyrazy_specialne==0)and true or false; tab_dane[poczatek]={name,(not czy_warunek)and nazwa_sortowania_temp or nazwa_sortowania_temp2,}; else local poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania_temp,"%s+(z)%s+(%S.*)%s*$",1); if(not poczatek2)then poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania_temp,"%s+(ze)%s+(%S.*)%s*$",1); end; if(poczatek2)then nie_usuwaj_pierwszego_z_kolei_wyrazu=true;end; tab_dane[poczatek]={name,nazwa_sortowania_temp,}; end; elseif((name~="z")and(name~="ze"))then tab_dane[poczatek]={name,nazwa_sortowania_temp,}; end; tab_przyimki[name]=true; end; end; czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=false or czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka or ( ((not tab_przyimki["z"])and(tab_przyimki["ze"])) and(not CzyJestWeNazwieSortowaniaTenParserowyWyrazLubGrupaWyrazowa(nazwa_sortowania,tablica_wyrazy_parsowania_nazwy_sortowania)) ); if(not czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka)then for name,value in pairs(tablica_zmiana_liczenia_nazwy_sortowania)do if( mw.ustring.match(nazwa_sortowania,name) or mw.ustring.match(nazwa_sortowania,mw.getContentLanguage():ucfirst(name)) )then czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=true; break; end; end; end; local minimim_maksimum; local __min=czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka and math.min or math.max; local __max=czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka and math.max or math.min; for name,value in pairs(tab_dane)do if(not minimim_maksimum)then minimim_maksimum=name;end; if((value[1]=="w")or(value[1]=="we"))and(value[1]~="bez")then minimim_maksimum=__min(minimim_maksimum,name); else minimim_maksimum=__max(minimim_maksimum,name); end; end; if(minimim_maksimum)then local nazwa_sortowania_temp=tab_dane[minimim_maksimum][2]; nazwa_sortowania_temp=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania_temp); local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania_temp,"^%s*(%S+)",nil,tablica_analizowanie_bez,true); if(ile_wyrazy_specialne>0)then nie_usuwaj_pierwszego_z_kolei_wyrazu=true;end; return nazwa_sortowania_temp,1,nie_usuwaj_pierwszego_z_kolei_wyrazu; else return nazwa_sortowania,0,nie_usuwaj_pierwszego_z_kolei_wyrazu; end; end; local WydzielonaNazwaSortowaniaPoMinusieLubPauzie=function(nazwa_sortowania) local czy_niezmieniono=true; local nazwa_sortowania_temp=mw.ustring.match(nazwa_sortowania,"^%s*[^%s%-%–][^%-%–]*%s+[%-%–]%s+(%S.-)%s*$"); czy_niezmieniono=czy_niezmieniono and (not nazwa_sortowania_temp); nazwa_sortowania=nazwa_sortowania_temp or nazwa_sortowania; local nazwa_sortowania_temp=mw.ustring.match(nazwa_sortowania,"^%s*[^%s%:][^%:]*%s*[%:]%s*(%S.-)%s*$"); czy_niezmieniono=czy_niezmieniono and (not nazwa_sortowania_temp); nazwa_sortowania=nazwa_sortowania_temp or nazwa_sortowania; return nazwa_sortowania,(not czy_niezmieniono); end; local WyrazOdWielkiejLiteryNazwySortowania=function(nazwa_sortowania,czy_od_poczatku) local ktoras_duza_litera=mw.ustring.match(nazwa_sortowania,((czy_od_poczatku and "^%s*" or "%s+").."%p*%u")); return ktoras_duza_litera and true or false; end; local function UsuwanieNazwaSortowanie(nazwa_sortowania,ktoras_duza_litera) if(mw.ustring.match(nazwa_sortowania,"^%(%a+[%a%s]*%)"))then return nazwa_sortowania;end; local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane"); local tablica_wyrazy_do_usuwania_przez_sortowanie=kategorie_dane_modul.tablica_wyrazy_do_usuwania_przez_sortowanie; local tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie=kategorie_dane_modul.tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie; local tablica_dzielenia_elementowa_sortowania=kategorie_dane_modul.tablica_dzielenia_elementowa_sortowania; local tablica_wyrazowa_niealternatyw=kategorie_dane_modul.tablica_wyrazowa_niealternatyw; local tablica_wyrazy_niedopuszczalne=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne; local tablica_wyrazy_niedopuszczalne_prefiks=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne_prefiks; repeat local ile=0;local ile1=0;local ile2=0;local ile3=0; nazwa_sortowania,ile1=UsuwaneElemementyNazwySortowania(nazwa_sortowania,tablica_wyrazowa_niealternatyw,nil,false,true); local stara_nazwa_sortowania=nazwa_sortowania; nazwa_sortowania,ile2=UsuwaneElemementyNazwySortowania(nazwa_sortowania,tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie,tablica_wyrazy_do_usuwania_przez_sortowanie,true,true); local _,_,ile_jest_dla_niedoposzczalne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks); if(ile_jest_dla_niedoposzczalne>0)then return stara_nazwa_sortowania; end; if(not ktoras_duza_litera)then local stara_nazwa_sortowania=nazwa_sortowania; nazwa_sortowania,ile3=UsuwaneElemementyNazwySortowania(nazwa_sortowania,nil,tablica_dzielenia_elementowa_sortowania,false,true); local _,_,ile_jest_dla_niedoposzczalne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks); if(ile_jest_dla_niedoposzczalne>0)then return stara_nazwa_sortowania; end; end; ile=ile1+ile2+ile3; until (ile==0); return nazwa_sortowania; end; function p.NazwaSortowaniaNazwyStrony(frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame,true); local nazwa_sortowania=args[1]; local techniczne_modul=require("Module:Techniczne"); nazwa_sortowania=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(nazwa_sortowania); if(not mw.ustring.match(nazwa_sortowania,"/"))then local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane"); local tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania=kategorie_dane_modul.tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania; local tablica_charakterystycznych_przedrostowych=kategorie_dane_modul.tablica_charakterystycznych_przedrostowych; local tablica_specjalne_wyrazy_sortowania=kategorie_dane_modul.tablica_specjalne_wyrazy_sortowania; local _,_,ile_jest_na_poczatku=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%s_]*(.-)[%s_]*$",nil,tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania); local _,_,ile_jest_charakterystycznych_przedrostkowych=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_charakterystycznych_przedrostowych); local _,_,ile_jest_specjalne_wyrazy_sortowania=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_specjalne_wyrazy_sortowania); if((ile_jest_na_poczatku>0)and((ile_jest_charakterystycznych_przedrostkowych==0)and(ile_jest_specjalne_wyrazy_sortowania==0)))then nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false); nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania); return nazwa_sortowania,true; end; if(CzyPierwszyWyrazPrzezSortowanie(nazwa_sortowania))then return nazwa_sortowania,true;end; local czy_zmieniono; local stara_nazwa_sortowania=nazwa_sortowania; local nazwa_sortowania_po_minusie_lub_pausie=nazwa_sortowania; local tablica_wyrazy_niedopuszczalne=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne; local tablica_wyrazy_niedopuszczalne_prefiks=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne_prefiks; nazwa_sortowania,czy_zmieniono=WydzielonaNazwaSortowaniaPoMinusieLubPauzie(nazwa_sortowania); if(czy_zmieniono)then local _,_,ile_jest_dla_myslnika0=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks); local _,_,ile_jest_dla_myslnika1=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks); local _,_,ile_jest_dla_myslnika2=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks); if((ile_jest_dla_myslnika0==0)and(ile_jest_dla_myslnika1>ile_jest_dla_myslnika2))then nazwa_sortowania=stara_nazwa_sortowania; end; if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then nazwa_sortowania=stara_nazwa_sortowania; else local _,_,ile_jest_na_poczatku=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%s_]*(.-)[%s_]*$",nil,tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania); if(ile_jest_na_poczatku>0)then nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false); if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then nazwa_sortowania=stara_nazwa_sortowania; nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania); end; nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania); return nazwa_sortowania,true; end; end; end; local ktoras_duza_litera=WyrazOdWielkiejLiteryNazwySortowania(nazwa_sortowania); local tablica_analizowanie_bez=kategorie_dane_modul.tablica_analizowanie_bez; local tablica_analizowanie_specjalne_wyrazy=kategorie_dane_modul.tablica_analizowanie_specjalne_wyrazy; local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_analizowanie_bez,true); local _,_,ile_wyrazy_specialne_wyrazy=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_analizowanie_specjalne_wyrazy,true); local nazwa_sortowania_przed_przyimkiem=(czy_zmieniono) and nazwa_sortowania_po_minusie_lub_pausie or nazwa_sortowania; local ile_przyimki;local nie_usuwaj_pierwszego_z_kolei_wyrazu; if((not ktoras_duza_litera)or(ile_wyrazy_specialne>0)or(ile_wyrazy_specialne_wyrazy>0)or(ile_jest_charakterystycznych_przedrostkowych>0))then local stara_nazwa_sortowania=nazwa_sortowania; local tablica_wyrazowa_wybrane_przyimki=kategorie_dane_modul.tablica_wyrazowa_wybrane_przyimki; local _,_,ile_jest_dla_przyimki0=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks); local _,_,ile_jest_dla_przyimki1=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks); local _,_,ile_jest_przyimki=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks); nazwa_sortowania,ile_przyimki,nie_usuwaj_pierwszego_z_kolei_wyrazu=TekstPoPrzyimkuNazwySortowania(nazwa_sortowania); local _,_,ile_jest_dla_przyimki2=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks); if( (ile_jest_dla_przyimki0==0) and( ((ile_przyimki>0)and(ile_jest_dla_przyimki1-ile_jest_dla_przyimki2>0)) or((ile_przyimki==0)and(ile_jest_dla_przyimki1>0)) ) )then nazwa_sortowania=stara_nazwa_sortowania; end; if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then nazwa_sortowania=stara_nazwa_sortowania; ile_przyimki=nil; nie_usuwaj_pierwszego_z_kolei_wyrazu=nil; end; end; if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then nazwa_sortowania=stara_nazwa_sortowania; nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania); nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania); return nazwa_sortowania,true; end; local nazwa_sortowania_temp=UsuwanieNazwaSortowanie(nazwa_sortowania,ktoras_duza_litera); if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania_temp))then nazwa_sortowania=nazwa_sortowania_przed_przyimkiem; ile_przyimki=nil; nie_usuwaj_pierwszego_z_kolei_wyrazu=nil; end; ile=IleJestSpacjiNazwySortowania(nazwa_sortowania); if(ile>0)then local stara_nazwa_sortowania=nazwa_sortowania; if(not ktoras_duza_litera)then local tablica_wyrazowa_alternatyw=kategorie_dane_modul.tablica_wyrazowa_alternatyw; local _,_,ile_znalezione=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"%s+(%S+)",tablica_wyrazowa_alternatyw,nil); if(ile_znalezione>0)then local tablica_wyrazowa_gdy_alternatywy=kategorie_dane_modul.tablica_wyrazowa_gdy_alternatywy; local _,_,ile_specjalne_gdy_alternatywy=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"^%s*(%S+)",nil,tablica_wyrazowa_gdy_alternatywy); if(ile_specjalne_gdy_alternatywy==0)then nazwa_sortowania=stara_nazwa_sortowania; nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false); if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then nazwa_sortowania=stara_nazwa_sortowania; nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania); end; nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania); return nazwa_sortowania,true; end; end; end; nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania; if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then nazwa_sortowania=nazwa_sortowania_przed_przyimkiem; nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania; end; nazwa_sortowania=UsuwanieNazwaSortowanie(nazwa_sortowania,ktoras_duza_litera); if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then nazwa_sortowania=nazwa_sortowania_przed_przyimkiem; nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania; nazwa_sortowania=UsuwanieNazwaSortowanie(nazwa_sortowania); if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then nazwa_sortowania=nazwa_sortowania_przed_przyimkiem; nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania; end; end; nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false); if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then nazwa_sortowania=stara_nazwa_sortowania; nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania); end; nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania); return nazwa_sortowania,true; end; local stara_nazwa_sortowania=nazwa_sortowania; nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false); if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then nazwa_sortowania=stara_nazwa_sortowania; nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania); end; nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania); return nazwa_sortowania,true; end; nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania); return nazwa_sortowania,false; end; return p; d3sla6knyqefmaefskpbmg1hf2yg5ok 553520 553519 2026-08-30T06:55:16Z Persino 2851 553520 Scribunto text/plain local p={}; function p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania) local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane"); local tablica_wydzielania_subelementowych=kategorie_dane_modul.tablica_wydzielania_subelementowych; local ile;local ile_zastapien=0; local nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^(%a%l%l+)(%u+.*)$",function(wyraz,dalej) if(tablica_wydzielania_subelementowych[wyraz])then ile_zastapien=ile_zastapien+1; return dalej; end; return nil; end); if((ile>0)and(ile_zastapien>0))then return nazwa_sortowania,(ile-ile_zastapien); end; local tablica_wydzielania_subelementowych_innych=kategorie_dane_modul.tablica_wydzielania_subelementowych_innych; for name,_ in pairs(tablica_wydzielania_subelementowych_innych)do local nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^("..name..")(%a)","%2"); if(ile>0)then return nazwa_sortowania,ile; end; end; return nazwa_sortowania,0; end; local CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania=function(nazwa_sortowania) local czy_tak=mw.ustring.match(nazwa_sortowania,"^[%c%s_%p]*$") if(czy_tak)then return true;end; return false; end; local UsuwanieElementuArtykularnegoWoluminu=function(nazwa_sortowania,nawias_lewy,nawias_prawy) local ile_zmieniono=0; local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane"); local tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania=kategorie_dane_modul.tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania; nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%"..nawias_lewy.."[%p%s_]*([^%"..nawias_lewy.."%"..nawias_prawy.."]-)[%p%s_]*%"..nawias_prawy,function(wyrazenie) if(wyrazenie=="")then return "";end; if(tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania[wyrazenie])then ile_zmieniono=ile_zmieniono+1; return ""; end; end); return nazwa_sortowania,ile_zmieniono; end; local UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony=function(nazwa_sortowania) repeat local ile1;local ile2;local ile3;local ile4;local ile5; nazwa_sortowania,ile1=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%(([^%(%)]+)%)","%1"); nazwa_sortowania,ile2=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%[([^%(%)]+)%]","%1"); nazwa_sortowania,ile3=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%{([^%(%)]+)%}","%1"); nazwa_sortowania,ile4=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*\"([^%(%)]+)\"","%1"); nazwa_sortowania,ile5=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*„([^%(%)]+)”","%1"); local ile=ile1+ile2+ile3+ile4+ile5; until (ile==0); nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*",""); return nazwa_sortowania; end; local UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania=function(nazwa_sortowania,czy_koniec) local czy_tak=CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania); if(czy_tak)then return nazwa_sortowania,0;end; local ile; if(czy_koniec)then local ile1;local ile2; nazwa_sortowania,ile1=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]+",""); nazwa_sortowania,ile2=mw.ustring.gsub(nazwa_sortowania,"[%p%s_]+$",""); ile=ile1+ile2; else local UsuwanieNiepoprawnejInterpunkcjiNawiasowej=function(nazwa_sortowania,numer) local ile;local ile_nawias; repeat if(numer==1)then nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"(",")"); if(ile_nawias==0)then nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)%(([^%(%)]+)%)","%1%2"); else ile=ile_nawias; end; elseif(numer==2)then nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"[","]"); if(ile_nawias==0)then nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)%[([^%[%]]+)%]","%1%2"); else ile=ile_nawias; end; elseif(numer==3)then nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"{","}"); if(ile_nawias==0)then nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)%{([^%{%}]+)%}","%1%2"); else ile=ile_nawias; end; elseif(numer==4)then nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"\"","\""); if(ile_nawias==0)then nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)\"([^\"]+)\"","%1%2"); else ile=ile_nawias; end; elseif(numer==5)then nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"„","”"); if(ile_nawias==0)then nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)„([^„”]+)”","%1%2"); else ile=ile_nawias; end; else mw.log("Funkcja: UsuwanieNiepoprawnejInterpunkcjiNawiasowej, niewłaściwa wartość parametru: numer.") end; until (ile==0); return nazwa_sortowania,ile; end; local ile1;local ile2;local ile3;local ile4;local ile5;local ile6;local ile7; nazwa_sortowania,ile1=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,1); nazwa_sortowania,ile2=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,2); nazwa_sortowania,ile3=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,3); nazwa_sortowania,ile4=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,4); nazwa_sortowania,ile5=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,5); nazwa_sortowania,ile6=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]+",""); nazwa_sortowania,ile7=mw.ustring.gsub(nazwa_sortowania,"[%s_]+$",""); ile=ile1+ile2+ile3+ile4+ile5+ile6+ile7; end; nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania); return nazwa_sortowania,ile; end; local ZamienianieWyrazoweSzereguWyrazu=function(nazwa_sortowania,wzor,funkcja,czy_wielkosc) nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania); local ile_dopasowania=0; local nazwa,ile=mw.ustring.gsub(nazwa_sortowania,wzor,function(wyraz) wyraz=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(wyraz,true); if(not czy_wielkosc)then wyraz=mw.ustring.lower(wyraz);end; local wynik=funkcja(wyraz); if(wynik)then ile_dopasowania=ile_dopasowania+1; return nil; end; return nil; end); return nazwa,ile,ile_dopasowania; end; local ZamienianieWyrazoweSzereguWyrazuKompleksowe=function(nazwa_sortowania,wzor,tablica_kompletne_wyrazy,tablica_niekompletne_wyrazy,czy_wielkosc) local ile;local ile_dopasowan; local nazwa,ile,ile_dopasowan=ZamienianieWyrazoweSzereguWyrazu(nazwa_sortowania,wzor,function(wyraz) if(tablica_kompletne_wyrazy)then if(tablica_kompletne_wyrazy[wyraz])then return true; end; end; if(tablica_niekompletne_wyrazy)then for name,_ in pairs(tablica_niekompletne_wyrazy)do local czy_dopasowano=mw.ustring.match(wyraz,"^"..name) if(czy_dopasowano)then return true; end; end; end; return nil; end,czy_wielkosc); return nazwa,ile,ile_dopasowan; end; local UsuwaneElemementyNazwySortowania=function(nazwa_sortowania,tablica_kompletne_wyrazy,tablica_niekompletne_wyrazy,czy_nie,czy_od_poczatku) nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania); local ile_niezastapil=0; local nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,((czy_od_poczatku and "^" or "").."%s*(%S+)"),function(wyraz) wyraz=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(wyraz,true); if(mw.ustring.match(wyraz,"^%u+$"))then ile_niezastapil=ile_niezastapil+1; return nil; end; wyraz=mw.ustring.lower(wyraz); if(tablica_kompletne_wyrazy)then if(tablica_kompletne_wyrazy[wyraz])then return ""; end; end; if(tablica_niekompletne_wyrazy)then for p_wzor_wyrazy,_ in pairs(tablica_niekompletne_wyrazy)do local p_wyraz=mw.ustring.match(wyraz,"^"..p_wzor_wyrazy) or (czy_nie and mw.ustring.match(wyraz,"^nie"..p_wzor_wyrazy) or nil); if(p_wyraz)then return ""; end; end; end; ile_niezastapil=ile_niezastapil+1; return nil; end); ile=ile-ile_niezastapil; return nazwa_sortowania,ile; end; local CzyPierwszyWyrazPrzezSortowanie=function(nazwa_sortowania) local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane"); local tablica_wyrazy_przez_sortowanie=kategorie_dane_modul.tablica_wyrazy_przez_sortowanie; for name,value in pairs(tablica_wyrazy_przez_sortowanie) do local czy_dopasowano=mw.ustring.match(nazwa_sortowania,"^"..name) or mw.ustring.match(nazwa_sortowania,"^"..mw.getContentLanguage():ucfirst(name)) or mw.ustring.match(nazwa_sortowania,"^".."nie"..name) or mw.ustring.match(nazwa_sortowania,"^"..mw.getContentLanguage():ucfirst("nie"..name)); if(czy_dopasowano)then return true; end; end; return false; end; local UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania=function(nazwa_sortowania) if(CzyPierwszyWyrazPrzezSortowanie(nazwa_sortowania))then return nazwa_sortowania,1;end; local nazwa_sortowania_stare=nazwa_sortowania; nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania); local czy_pusta_nazwa_sortowania=CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania); if(czy_pusta_nazwa_sortowania)then return nazwa_sortowania_stare,0; end; local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane"); local tablica_analizowanie_specjalne_sekwencje=kategorie_dane_modul.tablica_analizowanie_specjalne_sekwencje; local _,_,ile_wyrazy_sekwencje=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",nil,tablica_analizowanie_specjalne_sekwencje); if(ile_wyrazy_sekwencje>0)then return nazwa_sortowania,0; end; nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"^%s*([^/%s]+%s+)",""); local ile_wyrazy_niedopuszczalne=0; local tablica_wyrazy_niedopuszczalne=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne; local tablica_wyrazy_niedopuszczalne_prefiks=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne_prefiks; local _,_,ile_wyrazy_niedopuszczalne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks); if(ile_wyrazy_niedopuszczalne>0)then nazwa_sortowania=nazwa_sortowania_stare; end; return nazwa_sortowania,ile_wyrazy_niedopuszczalne; end; local IleJestSpacjiNazwySortowania=function(nazwa_sortowania) local _,ile=mw.ustring.gsub(nazwa_sortowania,"(%s)",function()return nil;end); return ile; end; local function CzyJestWeNazwieSortowaniaTenParserowyWyrazLubGrupaWyrazowa(nazwa_sortowania,tablica_parsowania) local czy_tak=false; for name,value in pairs(tablica_parsowania)do czy_tak=czy_tak or mw.ustring.match(nazwa_sortowania,"[%s%p]+"..name); if(czy_tak)then return czy_tak;end; end; for name,value in pairs(tablica_parsowania)do czy_tak=czy_tak or mw.ustring.match(nazwa_sortowania,"^"..name); if(czy_tak)then return czy_tak;end; end; return false; end; local TekstPoPrzyimkuNazwySortowania=function(nazwa_sortowania) local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane"); local tablica_wyrazowa_wybrane_przyimki=kategorie_dane_modul.tablica_wyrazowa_wybrane_przyimki; local tablica_zmiana_liczenia_nazwy_sortowania=kategorie_dane_modul.tablica_zmiana_liczenia_nazwy_sortowania; local tablica_analizowanie_specjalne_wyrazy=kategorie_dane_modul.tablica_analizowanie_specjalne_wyrazy; local tablica_wyrazy_parsowania_nazwy_sortowania=kategorie_dane_modul.tablica_wyrazy_parsowania_nazwy_sortowania; local tablica_wyrazowa_niealternatyw=kategorie_dane_modul.tablica_wyrazowa_niealternatyw; local tablica_analizowanie_bez=kategorie_dane_modul.tablica_analizowanie_bez; local tab_dane={}; local nie_usuwaj_pierwszego_z_kolei_wyrazu; local czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka; local tab_przyimki={}; for name,value in pairs(tablica_wyrazowa_wybrane_przyimki)do local poczatek,koniec,_,nazwa_sortowania_temp=mw.ustring.find(nazwa_sortowania,"%s+("..name..")%s+(%S.*)%s*$",1); if(poczatek)then if(((name=="z")or(name=="ze"))and((not tab_przyimki["z"])and(not tab_przyimki["ze"])))then local poczatek2,koniec2,_,nazwa_sortowania_temp2; poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania,",%s+(z)%s+(%S.*)%s*$",1); local poczatek3,koniec3,_,nazwa_sortowania_temp3=mw.ustring.match(nazwa_sortowania_temp,",%s+(z)%s+(%S.*)%s*$"); if(not poczatek3)then poczatek3,koniec3,_,nazwa_sortowania_temp3=mw.ustring.match(nazwa_sortowania_temp,",%s+(ze)%s+(%S.*)%s*$"); end; local poczatek4,koniec4,_,nazwa_sortowania_temp4=mw.ustring.match(nazwa_sortowania_temp,"[^,%s]%s+(z)%s+(%S.*)%s*$"); if(not poczatek4)then poczatek4,koniec4,_,nazwa_sortowania_temp4=mw.ustring.match(nazwa_sortowania_temp,"[^%s,]%s+(ze)%s+(%S.*)%s*$"); end; local CzyWiecej=function(nazwa_sortowania) local ile=0;local tak=false; local iter=mw.ustring.gmatch(nazwa_sortowania,"%S+"); for wyraz in iter do if(tak)then return;end; local wyraz2=mw.ustring.gsub(wyraz,"%,+$",""); wyraz2=mw.ustring.lower(wyraz2); if(tablica_wyrazowa_niealternatyw[wyraz2])then tak=true;break;end; if(not mw.ustring.match(wyraz,",$"))then ile=ile+1; else ile=ile+1; tak=true; break; end; end; if(not tak)then return 1;end; return ile; end; local czy_wiecej=nazwa_sortowania_temp2 and (CzyWiecej(nazwa_sortowania_temp2)>1) or false; local czy_warunek=((not poczatek3) or poczatek4)or(czy_wiecej); if(poczatek2)then czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=true and ((not poczatek4)or(poczatek3)); else poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania,",%s+(ze)%s+(%S.*)%s*$",1); czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=(poczatek2 and true or false) and czy_warunek; end; if(poczatek2)then local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania_temp2,"^%s*(%S+)",nil,tablica_analizowanie_specjalne_wyrazy,true); nie_usuwaj_pierwszego_z_kolei_wyrazu=(ile_wyrazy_specialne==0)and true or false; tab_dane[poczatek]={name,(not czy_warunek)and nazwa_sortowania_temp or nazwa_sortowania_temp2,}; else local poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania_temp,"%s+(z)%s+(%S.*)%s*$",1); if(not poczatek2)then poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania_temp,"%s+(ze)%s+(%S.*)%s*$",1); end; if(poczatek2)then nie_usuwaj_pierwszego_z_kolei_wyrazu=true;end; tab_dane[poczatek]={name,nazwa_sortowania_temp,}; end; elseif((name~="z")and(name~="ze"))then tab_dane[poczatek]={name,nazwa_sortowania_temp,}; end; tab_przyimki[name]=true; end; end; czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=false or czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka or ( ((not tab_przyimki["z"])and(tab_przyimki["ze"])) and(not CzyJestWeNazwieSortowaniaTenParserowyWyrazLubGrupaWyrazowa(nazwa_sortowania,tablica_wyrazy_parsowania_nazwy_sortowania)) ); if(not czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka)then for name,value in pairs(tablica_zmiana_liczenia_nazwy_sortowania)do if( mw.ustring.match(nazwa_sortowania,name) or mw.ustring.match(nazwa_sortowania,mw.getContentLanguage():ucfirst(name)) )then czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=true; break; end; end; end; local minimim_maksimum; local __min=czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka and math.min or math.max; local __max=czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka and math.max or math.min; for name,value in pairs(tab_dane)do if(not minimim_maksimum)then minimim_maksimum=name;end; if((value[1]=="w")or(value[1]=="we"))then minimim_maksimum=__min(minimim_maksimum,name); else minimim_maksimum=__max(minimim_maksimum,name); end; end; if(minimim_maksimum)then local nazwa_sortowania_temp=tab_dane[minimim_maksimum][2]; nazwa_sortowania_temp=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania_temp); local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania_temp,"^%s*(%S+)",nil,tablica_analizowanie_bez,true); if(ile_wyrazy_specialne>0)then nie_usuwaj_pierwszego_z_kolei_wyrazu=true;end; return nazwa_sortowania_temp,1,nie_usuwaj_pierwszego_z_kolei_wyrazu; else return nazwa_sortowania,0,nie_usuwaj_pierwszego_z_kolei_wyrazu; end; end; local WydzielonaNazwaSortowaniaPoMinusieLubPauzie=function(nazwa_sortowania) local czy_niezmieniono=true; local nazwa_sortowania_temp=mw.ustring.match(nazwa_sortowania,"^%s*[^%s%-%–][^%-%–]*%s+[%-%–]%s+(%S.-)%s*$"); czy_niezmieniono=czy_niezmieniono and (not nazwa_sortowania_temp); nazwa_sortowania=nazwa_sortowania_temp or nazwa_sortowania; local nazwa_sortowania_temp=mw.ustring.match(nazwa_sortowania,"^%s*[^%s%:][^%:]*%s*[%:]%s*(%S.-)%s*$"); czy_niezmieniono=czy_niezmieniono and (not nazwa_sortowania_temp); nazwa_sortowania=nazwa_sortowania_temp or nazwa_sortowania; return nazwa_sortowania,(not czy_niezmieniono); end; local WyrazOdWielkiejLiteryNazwySortowania=function(nazwa_sortowania,czy_od_poczatku) local ktoras_duza_litera=mw.ustring.match(nazwa_sortowania,((czy_od_poczatku and "^%s*" or "%s+").."%p*%u")); return ktoras_duza_litera and true or false; end; local function UsuwanieNazwaSortowanie(nazwa_sortowania,ktoras_duza_litera) if(mw.ustring.match(nazwa_sortowania,"^%(%a+[%a%s]*%)"))then return nazwa_sortowania;end; local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane"); local tablica_wyrazy_do_usuwania_przez_sortowanie=kategorie_dane_modul.tablica_wyrazy_do_usuwania_przez_sortowanie; local tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie=kategorie_dane_modul.tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie; local tablica_dzielenia_elementowa_sortowania=kategorie_dane_modul.tablica_dzielenia_elementowa_sortowania; local tablica_wyrazowa_niealternatyw=kategorie_dane_modul.tablica_wyrazowa_niealternatyw; local tablica_wyrazy_niedopuszczalne=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne; local tablica_wyrazy_niedopuszczalne_prefiks=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne_prefiks; repeat local ile=0;local ile1=0;local ile2=0;local ile3=0; nazwa_sortowania,ile1=UsuwaneElemementyNazwySortowania(nazwa_sortowania,tablica_wyrazowa_niealternatyw,nil,false,true); local stara_nazwa_sortowania=nazwa_sortowania; nazwa_sortowania,ile2=UsuwaneElemementyNazwySortowania(nazwa_sortowania,tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie,tablica_wyrazy_do_usuwania_przez_sortowanie,true,true); local _,_,ile_jest_dla_niedoposzczalne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks); if(ile_jest_dla_niedoposzczalne>0)then return stara_nazwa_sortowania; end; if(not ktoras_duza_litera)then local stara_nazwa_sortowania=nazwa_sortowania; nazwa_sortowania,ile3=UsuwaneElemementyNazwySortowania(nazwa_sortowania,nil,tablica_dzielenia_elementowa_sortowania,false,true); local _,_,ile_jest_dla_niedoposzczalne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks); if(ile_jest_dla_niedoposzczalne>0)then return stara_nazwa_sortowania; end; end; ile=ile1+ile2+ile3; until (ile==0); return nazwa_sortowania; end; function p.NazwaSortowaniaNazwyStrony(frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame,true); local nazwa_sortowania=args[1]; local techniczne_modul=require("Module:Techniczne"); nazwa_sortowania=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(nazwa_sortowania); if(not mw.ustring.match(nazwa_sortowania,"/"))then local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane"); local tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania=kategorie_dane_modul.tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania; local tablica_charakterystycznych_przedrostowych=kategorie_dane_modul.tablica_charakterystycznych_przedrostowych; local tablica_specjalne_wyrazy_sortowania=kategorie_dane_modul.tablica_specjalne_wyrazy_sortowania; local _,_,ile_jest_na_poczatku=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%s_]*(.-)[%s_]*$",nil,tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania); local _,_,ile_jest_charakterystycznych_przedrostkowych=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_charakterystycznych_przedrostowych); local _,_,ile_jest_specjalne_wyrazy_sortowania=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_specjalne_wyrazy_sortowania); if((ile_jest_na_poczatku>0)and((ile_jest_charakterystycznych_przedrostkowych==0)and(ile_jest_specjalne_wyrazy_sortowania==0)))then nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false); nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania); return nazwa_sortowania,true; end; if(CzyPierwszyWyrazPrzezSortowanie(nazwa_sortowania))then return nazwa_sortowania,true;end; local czy_zmieniono; local stara_nazwa_sortowania=nazwa_sortowania; local nazwa_sortowania_po_minusie_lub_pausie=nazwa_sortowania; local tablica_wyrazy_niedopuszczalne=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne; local tablica_wyrazy_niedopuszczalne_prefiks=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne_prefiks; nazwa_sortowania,czy_zmieniono=WydzielonaNazwaSortowaniaPoMinusieLubPauzie(nazwa_sortowania); if(czy_zmieniono)then local _,_,ile_jest_dla_myslnika0=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks); local _,_,ile_jest_dla_myslnika1=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks); local _,_,ile_jest_dla_myslnika2=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks); if((ile_jest_dla_myslnika0==0)and(ile_jest_dla_myslnika1>ile_jest_dla_myslnika2))then nazwa_sortowania=stara_nazwa_sortowania; end; if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then nazwa_sortowania=stara_nazwa_sortowania; else local _,_,ile_jest_na_poczatku=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%s_]*(.-)[%s_]*$",nil,tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania); if(ile_jest_na_poczatku>0)then nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false); if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then nazwa_sortowania=stara_nazwa_sortowania; nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania); end; nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania); return nazwa_sortowania,true; end; end; end; local ktoras_duza_litera=WyrazOdWielkiejLiteryNazwySortowania(nazwa_sortowania); local tablica_analizowanie_bez=kategorie_dane_modul.tablica_analizowanie_bez; local tablica_analizowanie_specjalne_wyrazy=kategorie_dane_modul.tablica_analizowanie_specjalne_wyrazy; local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_analizowanie_bez,true); local _,_,ile_wyrazy_specialne_wyrazy=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_analizowanie_specjalne_wyrazy,true); local nazwa_sortowania_przed_przyimkiem=(czy_zmieniono) and nazwa_sortowania_po_minusie_lub_pausie or nazwa_sortowania; local ile_przyimki;local nie_usuwaj_pierwszego_z_kolei_wyrazu; if((not ktoras_duza_litera)or(ile_wyrazy_specialne>0)or(ile_wyrazy_specialne_wyrazy>0)or(ile_jest_charakterystycznych_przedrostkowych>0))then local stara_nazwa_sortowania=nazwa_sortowania; local tablica_wyrazowa_wybrane_przyimki=kategorie_dane_modul.tablica_wyrazowa_wybrane_przyimki; local _,_,ile_jest_dla_przyimki0=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks); local _,_,ile_jest_dla_przyimki1=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks); local _,_,ile_jest_przyimki=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks); nazwa_sortowania,ile_przyimki,nie_usuwaj_pierwszego_z_kolei_wyrazu=TekstPoPrzyimkuNazwySortowania(nazwa_sortowania); local _,_,ile_jest_dla_przyimki2=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks); if( (ile_jest_dla_przyimki0==0) and( ((ile_przyimki>0)and(ile_jest_dla_przyimki1-ile_jest_dla_przyimki2>0)) or((ile_przyimki==0)and(ile_jest_dla_przyimki1>0)) ) )then nazwa_sortowania=stara_nazwa_sortowania; end; if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then nazwa_sortowania=stara_nazwa_sortowania; ile_przyimki=nil; nie_usuwaj_pierwszego_z_kolei_wyrazu=nil; end; end; if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then nazwa_sortowania=stara_nazwa_sortowania; nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania); nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania); return nazwa_sortowania,true; end; local nazwa_sortowania_temp=UsuwanieNazwaSortowanie(nazwa_sortowania,ktoras_duza_litera); if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania_temp))then nazwa_sortowania=nazwa_sortowania_przed_przyimkiem; ile_przyimki=nil; nie_usuwaj_pierwszego_z_kolei_wyrazu=nil; end; ile=IleJestSpacjiNazwySortowania(nazwa_sortowania); if(ile>0)then local stara_nazwa_sortowania=nazwa_sortowania; if(not ktoras_duza_litera)then local tablica_wyrazowa_alternatyw=kategorie_dane_modul.tablica_wyrazowa_alternatyw; local _,_,ile_znalezione=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"%s+(%S+)",tablica_wyrazowa_alternatyw,nil); if(ile_znalezione>0)then local tablica_wyrazowa_gdy_alternatywy=kategorie_dane_modul.tablica_wyrazowa_gdy_alternatywy; local _,_,ile_specjalne_gdy_alternatywy=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"^%s*(%S+)",nil,tablica_wyrazowa_gdy_alternatywy); if(ile_specjalne_gdy_alternatywy==0)then nazwa_sortowania=stara_nazwa_sortowania; nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false); if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then nazwa_sortowania=stara_nazwa_sortowania; nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania); end; nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania); return nazwa_sortowania,true; end; end; end; nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania; if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then nazwa_sortowania=nazwa_sortowania_przed_przyimkiem; nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania; end; nazwa_sortowania=UsuwanieNazwaSortowanie(nazwa_sortowania,ktoras_duza_litera); if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then nazwa_sortowania=nazwa_sortowania_przed_przyimkiem; nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania; nazwa_sortowania=UsuwanieNazwaSortowanie(nazwa_sortowania); if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then nazwa_sortowania=nazwa_sortowania_przed_przyimkiem; nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania; end; end; nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false); if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then nazwa_sortowania=stara_nazwa_sortowania; nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania); end; nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania); return nazwa_sortowania,true; end; local stara_nazwa_sortowania=nazwa_sortowania; nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false); if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then nazwa_sortowania=stara_nazwa_sortowania; nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania); end; nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania); return nazwa_sortowania,true; end; nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania); return nazwa_sortowania,false; end; return p; rhgu2z6b17b4a50b9ss038hmkg9qfth 553523 553520 2026-08-30T08:30:50Z Persino 2851 553523 Scribunto text/plain local p={}; function p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania) local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane"); local tablica_wydzielania_subelementowych=kategorie_dane_modul.tablica_wydzielania_subelementowych; local ile;local ile_zastapien=0; local nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^(%a%l%l+)(%u+.*)$",function(wyraz,dalej) if(tablica_wydzielania_subelementowych[wyraz])then ile_zastapien=ile_zastapien+1; return dalej; end; return nil; end); if((ile>0)and(ile_zastapien>0))then return nazwa_sortowania,(ile-ile_zastapien); end; local tablica_wydzielania_subelementowych_innych=kategorie_dane_modul.tablica_wydzielania_subelementowych_innych; for name,_ in pairs(tablica_wydzielania_subelementowych_innych)do local nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^("..name..")(%a)","%2"); if(ile>0)then return nazwa_sortowania,ile; end; end; return nazwa_sortowania,0; end; local CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania=function(nazwa_sortowania) local czy_tak=mw.ustring.match(nazwa_sortowania,"^[%c%s_%p]*$") if(czy_tak)then return true;end; return false; end; local UsuwanieElementuArtykularnegoWoluminu=function(nazwa_sortowania,nawias_lewy,nawias_prawy) local ile_zmieniono=0; local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane"); local tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania=kategorie_dane_modul.tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania; nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%"..nawias_lewy.."[%p%s_]*([^%"..nawias_lewy.."%"..nawias_prawy.."]-)[%p%s_]*%"..nawias_prawy,function(wyrazenie) if(wyrazenie=="")then return "";end; if(tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania[wyrazenie])then ile_zmieniono=ile_zmieniono+1; return ""; end; end); return nazwa_sortowania,ile_zmieniono; end; local UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony=function(nazwa_sortowania) repeat local ile1;local ile2;local ile3;local ile4;local ile5; nazwa_sortowania,ile1=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%(([^%(%)]+)%)","%1"); nazwa_sortowania,ile2=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%[([^%(%)]+)%]","%1"); nazwa_sortowania,ile3=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%{([^%(%)]+)%}","%1"); nazwa_sortowania,ile4=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*\"([^%(%)]+)\"","%1"); nazwa_sortowania,ile5=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*„([^%(%)]+)”","%1"); local ile=ile1+ile2+ile3+ile4+ile5; until (ile==0); nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*",""); return nazwa_sortowania; end; local UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania=function(nazwa_sortowania,czy_koniec) local czy_tak=CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania); if(czy_tak)then return nazwa_sortowania,0;end; local ile; if(czy_koniec)then local ile1;local ile2; nazwa_sortowania,ile1=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]+",""); nazwa_sortowania,ile2=mw.ustring.gsub(nazwa_sortowania,"[%p%s_]+$",""); ile=ile1+ile2; else local UsuwanieNiepoprawnejInterpunkcjiNawiasowej=function(nazwa_sortowania,numer) local ile;local ile_nawias; repeat if(numer==1)then nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"(",")"); if(ile_nawias==0)then nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)%(([^%(%)]+)%)","%1%2"); else ile=ile_nawias; end; elseif(numer==2)then nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"[","]"); if(ile_nawias==0)then nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)%[([^%[%]]+)%]","%1%2"); else ile=ile_nawias; end; elseif(numer==3)then nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"{","}"); if(ile_nawias==0)then nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)%{([^%{%}]+)%}","%1%2"); else ile=ile_nawias; end; elseif(numer==4)then nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"\"","\""); if(ile_nawias==0)then nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)\"([^\"]+)\"","%1%2"); else ile=ile_nawias; end; elseif(numer==5)then nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"„","”"); if(ile_nawias==0)then nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)„([^„”]+)”","%1%2"); else ile=ile_nawias; end; else mw.log("Funkcja: UsuwanieNiepoprawnejInterpunkcjiNawiasowej, niewłaściwa wartość parametru: numer.") end; until (ile==0); return nazwa_sortowania,ile; end; local ile1;local ile2;local ile3;local ile4;local ile5;local ile6;local ile7; nazwa_sortowania,ile1=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,1); nazwa_sortowania,ile2=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,2); nazwa_sortowania,ile3=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,3); nazwa_sortowania,ile4=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,4); nazwa_sortowania,ile5=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,5); nazwa_sortowania,ile6=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]+",""); nazwa_sortowania,ile7=mw.ustring.gsub(nazwa_sortowania,"[%s_]+$",""); ile=ile1+ile2+ile3+ile4+ile5+ile6+ile7; end; nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania); return nazwa_sortowania,ile; end; local ZamienianieWyrazoweSzereguWyrazu=function(nazwa_sortowania,wzor,funkcja,czy_wielkosc) nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania); local ile_dopasowania=0; local nazwa,ile=mw.ustring.gsub(nazwa_sortowania,wzor,function(wyraz) wyraz=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(wyraz,true); if(not czy_wielkosc)then wyraz=mw.ustring.lower(wyraz);end; local wynik=funkcja(wyraz); if(wynik)then ile_dopasowania=ile_dopasowania+1; return nil; end; return nil; end); return nazwa,ile,ile_dopasowania; end; local ZamienianieWyrazoweSzereguWyrazuKompleksowe=function(nazwa_sortowania,wzor,tablica_kompletne_wyrazy,tablica_niekompletne_wyrazy,czy_wielkosc) local ile;local ile_dopasowan; local nazwa,ile,ile_dopasowan=ZamienianieWyrazoweSzereguWyrazu(nazwa_sortowania,wzor,function(wyraz) if(tablica_kompletne_wyrazy)then if(tablica_kompletne_wyrazy[wyraz])then return true; end; end; if(tablica_niekompletne_wyrazy)then for name,_ in pairs(tablica_niekompletne_wyrazy)do local czy_dopasowano=mw.ustring.match(wyraz,"^"..name) if(czy_dopasowano)then return true; end; end; end; return nil; end,czy_wielkosc); return nazwa,ile,ile_dopasowan; end; local UsuwaneElemementyNazwySortowania=function(nazwa_sortowania,tablica_kompletne_wyrazy,tablica_niekompletne_wyrazy,czy_nie,czy_od_poczatku) nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania); local ile_niezastapil=0; local nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,((czy_od_poczatku and "^" or "").."%s*(%S+)"),function(wyraz) wyraz=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(wyraz,true); if(mw.ustring.match(wyraz,"^%u+$"))then ile_niezastapil=ile_niezastapil+1; return nil; end; wyraz=mw.ustring.lower(wyraz); if(tablica_kompletne_wyrazy)then if(tablica_kompletne_wyrazy[wyraz])then return ""; end; end; if(tablica_niekompletne_wyrazy)then for p_wzor_wyrazy,_ in pairs(tablica_niekompletne_wyrazy)do local p_wyraz=mw.ustring.match(wyraz,"^"..p_wzor_wyrazy) or (czy_nie and mw.ustring.match(wyraz,"^nie"..p_wzor_wyrazy) or nil); if(p_wyraz)then return ""; end; end; end; ile_niezastapil=ile_niezastapil+1; return nil; end); ile=ile-ile_niezastapil; return nazwa_sortowania,ile; end; local CzyPierwszyWyrazPrzezSortowanie=function(nazwa_sortowania) local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane"); local tablica_wyrazy_przez_sortowanie=kategorie_dane_modul.tablica_wyrazy_przez_sortowanie; for name,value in pairs(tablica_wyrazy_przez_sortowanie) do local czy_dopasowano=mw.ustring.match(nazwa_sortowania,"^"..name) or mw.ustring.match(nazwa_sortowania,"^"..mw.getContentLanguage():ucfirst(name)) or mw.ustring.match(nazwa_sortowania,"^".."nie"..name) or mw.ustring.match(nazwa_sortowania,"^"..mw.getContentLanguage():ucfirst("nie"..name)); if(czy_dopasowano)then return true; end; end; return false; end; local UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania=function(nazwa_sortowania) if(CzyPierwszyWyrazPrzezSortowanie(nazwa_sortowania))then return nazwa_sortowania,1;end; local nazwa_sortowania_stare=nazwa_sortowania; nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania); local czy_pusta_nazwa_sortowania=CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania); if(czy_pusta_nazwa_sortowania)then return nazwa_sortowania_stare,0; end; local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane"); local tablica_analizowanie_specjalne_sekwencje=kategorie_dane_modul.tablica_analizowanie_specjalne_sekwencje; local _,_,ile_wyrazy_sekwencje=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",nil,tablica_analizowanie_specjalne_sekwencje); if(ile_wyrazy_sekwencje>0)then return nazwa_sortowania,0; end; nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"^%s*([^/%s]+%s+)",""); local ile_wyrazy_niedopuszczalne=0; local tablica_wyrazy_niedopuszczalne=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne; local tablica_wyrazy_niedopuszczalne_prefiks=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne_prefiks; local _,_,ile_wyrazy_niedopuszczalne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks); if(ile_wyrazy_niedopuszczalne>0)then nazwa_sortowania=nazwa_sortowania_stare; end; return nazwa_sortowania,ile_wyrazy_niedopuszczalne; end; local IleJestSpacjiNazwySortowania=function(nazwa_sortowania) local _,ile=mw.ustring.gsub(nazwa_sortowania,"(%s)",function()return nil;end); return ile; end; local function CzyJestWeNazwieSortowaniaTenParserowyWyrazLubGrupaWyrazowa(nazwa_sortowania,tablica_parsowania) local czy_tak=false; for name,value in pairs(tablica_parsowania)do czy_tak=czy_tak or mw.ustring.match(nazwa_sortowania,"[%s%p]+"..name); if(czy_tak)then return czy_tak;end; end; for name,value in pairs(tablica_parsowania)do czy_tak=czy_tak or mw.ustring.match(nazwa_sortowania,"^"..name); if(czy_tak)then return czy_tak;end; end; return false; end; local TekstPoPrzyimkuNazwySortowania=function(nazwa_sortowania) local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane"); local tablica_wyrazowa_wybrane_przyimki=kategorie_dane_modul.tablica_wyrazowa_wybrane_przyimki; local tablica_zmiana_liczenia_nazwy_sortowania=kategorie_dane_modul.tablica_zmiana_liczenia_nazwy_sortowania; local tablica_analizowanie_specjalne_wyrazy=kategorie_dane_modul.tablica_analizowanie_specjalne_wyrazy; local tablica_wyrazy_parsowania_nazwy_sortowania=kategorie_dane_modul.tablica_wyrazy_parsowania_nazwy_sortowania; local tablica_wyrazowa_niealternatyw=kategorie_dane_modul.tablica_wyrazowa_niealternatyw; local tablica_analizowanie_bez=kategorie_dane_modul.tablica_analizowanie_bez; local tab_dane={}; local nie_usuwaj_pierwszego_z_kolei_wyrazu; local czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka; local tab_przyimki={}; for name,value in pairs(tablica_wyrazowa_wybrane_przyimki)do local poczatek,koniec,_,nazwa_sortowania_temp=mw.ustring.find(nazwa_sortowania,"%s+("..name..")%s+(%S.*)%s*$",1); if(poczatek)then if(((name=="z")or(name=="ze"))and((not tab_przyimki["z"])and(not tab_przyimki["ze"])))then local poczatek2,koniec2,_,nazwa_sortowania_temp2; poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania,",%s+(z)%s+(%S.*)%s*$",1); local poczatek3,koniec3,_,nazwa_sortowania_temp3=mw.ustring.match(nazwa_sortowania_temp,",%s+(z)%s+(%S.*)%s*$"); if(not poczatek3)then poczatek3,koniec3,_,nazwa_sortowania_temp3=mw.ustring.match(nazwa_sortowania_temp,",%s+(ze)%s+(%S.*)%s*$"); end; local poczatek4,koniec4,_,nazwa_sortowania_temp4=mw.ustring.match(nazwa_sortowania_temp,"[^,%s]%s+(z)%s+(%S.*)%s*$"); if(not poczatek4)then poczatek4,koniec4,_,nazwa_sortowania_temp4=mw.ustring.match(nazwa_sortowania_temp,"[^%s,]%s+(ze)%s+(%S.*)%s*$"); end; local CzyWiecej=function(nazwa_sortowania) local ile=0;local tak=false; local iter=mw.ustring.gmatch(nazwa_sortowania,"%S+"); for wyraz in iter do if(tak)then return;end; local wyraz2=mw.ustring.gsub(wyraz,"%,+$",""); wyraz2=mw.ustring.lower(wyraz2); if(tablica_wyrazowa_niealternatyw[wyraz2])then tak=true;break;end; if(not mw.ustring.match(wyraz,",$"))then ile=ile+1; else ile=ile+1; tak=true; break; end; end; if(not tak)then return 1;end; return ile; end; local czy_wiecej=nazwa_sortowania_temp2 and (CzyWiecej(nazwa_sortowania_temp2)>1) or false; local czy_warunek=((not poczatek3) or poczatek4)or(czy_wiecej); if(poczatek2)then czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=true and ((not poczatek4)or(poczatek3)); else poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania,",%s+(ze)%s+(%S.*)%s*$",1); czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=(poczatek2 and true or false) and czy_warunek; end; if(poczatek2)then local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania_temp2,"^%s*(%S+)",nil,tablica_analizowanie_specjalne_wyrazy,true); nie_usuwaj_pierwszego_z_kolei_wyrazu=(ile_wyrazy_specialne==0)and true or false; tab_dane[poczatek]={name,(not czy_warunek)and nazwa_sortowania_temp or nazwa_sortowania_temp2,}; else local poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania_temp,"%s+(z)%s+(%S.*)%s*$",1); if(not poczatek2)then poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania_temp,"%s+(ze)%s+(%S.*)%s*$",1); end; if(poczatek2)then nie_usuwaj_pierwszego_z_kolei_wyrazu=true;end; tab_dane[poczatek]={name,nazwa_sortowania_temp,}; end; elseif((name~="z")and(name~="ze"))then tab_dane[poczatek]={name,nazwa_sortowania_temp,}; end; tab_przyimki[name]=true; end; end; czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=false or czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka or ( ((not tab_przyimki["z"])and(tab_przyimki["ze"])) and(not CzyJestWeNazwieSortowaniaTenParserowyWyrazLubGrupaWyrazowa(nazwa_sortowania,tablica_wyrazy_parsowania_nazwy_sortowania)) ); if(not czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka)then for name,value in pairs(tablica_zmiana_liczenia_nazwy_sortowania)do if( mw.ustring.match(nazwa_sortowania,name) or mw.ustring.match(nazwa_sortowania,mw.getContentLanguage():ucfirst(name)) )then czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=true; break; end; end; end; local minimim_maksimum; local __min=czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka and math.min or math.max; local __max=czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka and math.max or math.min; local parametry_modul=require("Module:Parametry"); local IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu; local __next=IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tab_dane); local __metatabelka={ __pairs=function(tab_dane) return __next,tab_dane,nil; end; }; setmetatable(tab_dane,__metatabelka); for name,value in pairs(tab_dane)do if(not minimim_maksimum)then minimim_maksimum=name;end; if((value[1]=="w")or(value[1]=="we"))then minimim_maksimum=__min(minimim_maksimum,name); else minimim_maksimum=__max(minimim_maksimum,name); end; end; if(minimim_maksimum)then local nazwa_sortowania_temp=tab_dane[minimim_maksimum][2]; nazwa_sortowania_temp=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania_temp); local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania_temp,"^%s*(%S+)",nil,tablica_analizowanie_bez,true); if(ile_wyrazy_specialne>0)then nie_usuwaj_pierwszego_z_kolei_wyrazu=true;end; return nazwa_sortowania_temp,1,nie_usuwaj_pierwszego_z_kolei_wyrazu; else return nazwa_sortowania,0,nie_usuwaj_pierwszego_z_kolei_wyrazu; end; end; local WydzielonaNazwaSortowaniaPoMinusieLubPauzie=function(nazwa_sortowania) local czy_niezmieniono=true; local nazwa_sortowania_temp=mw.ustring.match(nazwa_sortowania,"^%s*[^%s%-%–][^%-%–]*%s+[%-%–]%s+(%S.-)%s*$"); czy_niezmieniono=czy_niezmieniono and (not nazwa_sortowania_temp); nazwa_sortowania=nazwa_sortowania_temp or nazwa_sortowania; local nazwa_sortowania_temp=mw.ustring.match(nazwa_sortowania,"^%s*[^%s%:][^%:]*%s*[%:]%s*(%S.-)%s*$"); czy_niezmieniono=czy_niezmieniono and (not nazwa_sortowania_temp); nazwa_sortowania=nazwa_sortowania_temp or nazwa_sortowania; return nazwa_sortowania,(not czy_niezmieniono); end; local WyrazOdWielkiejLiteryNazwySortowania=function(nazwa_sortowania,czy_od_poczatku) local ktoras_duza_litera=mw.ustring.match(nazwa_sortowania,((czy_od_poczatku and "^%s*" or "%s+").."%p*%u")); return ktoras_duza_litera and true or false; end; local function UsuwanieNazwaSortowanie(nazwa_sortowania,ktoras_duza_litera) if(mw.ustring.match(nazwa_sortowania,"^%(%a+[%a%s]*%)"))then return nazwa_sortowania;end; local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane"); local tablica_wyrazy_do_usuwania_przez_sortowanie=kategorie_dane_modul.tablica_wyrazy_do_usuwania_przez_sortowanie; local tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie=kategorie_dane_modul.tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie; local tablica_dzielenia_elementowa_sortowania=kategorie_dane_modul.tablica_dzielenia_elementowa_sortowania; local tablica_wyrazowa_niealternatyw=kategorie_dane_modul.tablica_wyrazowa_niealternatyw; local tablica_wyrazy_niedopuszczalne=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne; local tablica_wyrazy_niedopuszczalne_prefiks=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne_prefiks; repeat local ile=0;local ile1=0;local ile2=0;local ile3=0; nazwa_sortowania,ile1=UsuwaneElemementyNazwySortowania(nazwa_sortowania,tablica_wyrazowa_niealternatyw,nil,false,true); local stara_nazwa_sortowania=nazwa_sortowania; nazwa_sortowania,ile2=UsuwaneElemementyNazwySortowania(nazwa_sortowania,tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie,tablica_wyrazy_do_usuwania_przez_sortowanie,true,true); local _,_,ile_jest_dla_niedoposzczalne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks); if(ile_jest_dla_niedoposzczalne>0)then return stara_nazwa_sortowania; end; if(not ktoras_duza_litera)then local stara_nazwa_sortowania=nazwa_sortowania; nazwa_sortowania,ile3=UsuwaneElemementyNazwySortowania(nazwa_sortowania,nil,tablica_dzielenia_elementowa_sortowania,false,true); local _,_,ile_jest_dla_niedoposzczalne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks); if(ile_jest_dla_niedoposzczalne>0)then return stara_nazwa_sortowania; end; end; ile=ile1+ile2+ile3; until (ile==0); return nazwa_sortowania; end; function p.NazwaSortowaniaNazwyStrony(frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame,true); local nazwa_sortowania=args[1]; local techniczne_modul=require("Module:Techniczne"); nazwa_sortowania=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(nazwa_sortowania); if(not mw.ustring.match(nazwa_sortowania,"/"))then local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane"); local tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania=kategorie_dane_modul.tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania; local tablica_charakterystycznych_przedrostowych=kategorie_dane_modul.tablica_charakterystycznych_przedrostowych; local tablica_specjalne_wyrazy_sortowania=kategorie_dane_modul.tablica_specjalne_wyrazy_sortowania; local _,_,ile_jest_na_poczatku=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%s_]*(.-)[%s_]*$",nil,tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania); local _,_,ile_jest_charakterystycznych_przedrostkowych=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_charakterystycznych_przedrostowych); local _,_,ile_jest_specjalne_wyrazy_sortowania=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_specjalne_wyrazy_sortowania); if((ile_jest_na_poczatku>0)and((ile_jest_charakterystycznych_przedrostkowych==0)and(ile_jest_specjalne_wyrazy_sortowania==0)))then nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false); nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania); return nazwa_sortowania,true; end; if(CzyPierwszyWyrazPrzezSortowanie(nazwa_sortowania))then return nazwa_sortowania,true;end; local czy_zmieniono; local stara_nazwa_sortowania=nazwa_sortowania; local nazwa_sortowania_po_minusie_lub_pausie=nazwa_sortowania; local tablica_wyrazy_niedopuszczalne=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne; local tablica_wyrazy_niedopuszczalne_prefiks=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne_prefiks; nazwa_sortowania,czy_zmieniono=WydzielonaNazwaSortowaniaPoMinusieLubPauzie(nazwa_sortowania); if(czy_zmieniono)then local _,_,ile_jest_dla_myslnika0=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks); local _,_,ile_jest_dla_myslnika1=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks); local _,_,ile_jest_dla_myslnika2=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks); if((ile_jest_dla_myslnika0==0)and(ile_jest_dla_myslnika1>ile_jest_dla_myslnika2))then nazwa_sortowania=stara_nazwa_sortowania; end; if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then nazwa_sortowania=stara_nazwa_sortowania; else local _,_,ile_jest_na_poczatku=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%s_]*(.-)[%s_]*$",nil,tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania); if(ile_jest_na_poczatku>0)then nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false); if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then nazwa_sortowania=stara_nazwa_sortowania; nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania); end; nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania); return nazwa_sortowania,true; end; end; end; local ktoras_duza_litera=WyrazOdWielkiejLiteryNazwySortowania(nazwa_sortowania); local tablica_analizowanie_bez=kategorie_dane_modul.tablica_analizowanie_bez; local tablica_analizowanie_specjalne_wyrazy=kategorie_dane_modul.tablica_analizowanie_specjalne_wyrazy; local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_analizowanie_bez,true); local _,_,ile_wyrazy_specialne_wyrazy=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_analizowanie_specjalne_wyrazy,true); local nazwa_sortowania_przed_przyimkiem=(czy_zmieniono) and nazwa_sortowania_po_minusie_lub_pausie or nazwa_sortowania; local ile_przyimki;local nie_usuwaj_pierwszego_z_kolei_wyrazu; if((not ktoras_duza_litera)or(ile_wyrazy_specialne>0)or(ile_wyrazy_specialne_wyrazy>0)or(ile_jest_charakterystycznych_przedrostkowych>0))then local stara_nazwa_sortowania=nazwa_sortowania; local tablica_wyrazowa_wybrane_przyimki=kategorie_dane_modul.tablica_wyrazowa_wybrane_przyimki; local _,_,ile_jest_dla_przyimki0=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks); local _,_,ile_jest_dla_przyimki1=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks); local _,_,ile_jest_przyimki=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks); nazwa_sortowania,ile_przyimki,nie_usuwaj_pierwszego_z_kolei_wyrazu=TekstPoPrzyimkuNazwySortowania(nazwa_sortowania); local _,_,ile_jest_dla_przyimki2=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks); if( (ile_jest_dla_przyimki0==0) and( ((ile_przyimki>0)and(ile_jest_dla_przyimki1-ile_jest_dla_przyimki2>0)) or((ile_przyimki==0)and(ile_jest_dla_przyimki1>0)) ) )then nazwa_sortowania=stara_nazwa_sortowania; end; if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then nazwa_sortowania=stara_nazwa_sortowania; ile_przyimki=nil; nie_usuwaj_pierwszego_z_kolei_wyrazu=nil; end; end; if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then nazwa_sortowania=stara_nazwa_sortowania; nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania); nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania); return nazwa_sortowania,true; end; local nazwa_sortowania_temp=UsuwanieNazwaSortowanie(nazwa_sortowania,ktoras_duza_litera); if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania_temp))then nazwa_sortowania=nazwa_sortowania_przed_przyimkiem; ile_przyimki=nil; nie_usuwaj_pierwszego_z_kolei_wyrazu=nil; end; ile=IleJestSpacjiNazwySortowania(nazwa_sortowania); if(ile>0)then local stara_nazwa_sortowania=nazwa_sortowania; if(not ktoras_duza_litera)then local tablica_wyrazowa_alternatyw=kategorie_dane_modul.tablica_wyrazowa_alternatyw; local _,_,ile_znalezione=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"%s+(%S+)",tablica_wyrazowa_alternatyw,nil); if(ile_znalezione>0)then local tablica_wyrazowa_gdy_alternatywy=kategorie_dane_modul.tablica_wyrazowa_gdy_alternatywy; local _,_,ile_specjalne_gdy_alternatywy=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"^%s*(%S+)",nil,tablica_wyrazowa_gdy_alternatywy); if(ile_specjalne_gdy_alternatywy==0)then nazwa_sortowania=stara_nazwa_sortowania; nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false); if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then nazwa_sortowania=stara_nazwa_sortowania; nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania); end; nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania); return nazwa_sortowania,true; end; end; end; nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania; if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then nazwa_sortowania=nazwa_sortowania_przed_przyimkiem; nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania; end; nazwa_sortowania=UsuwanieNazwaSortowanie(nazwa_sortowania,ktoras_duza_litera); if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then nazwa_sortowania=nazwa_sortowania_przed_przyimkiem; nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania; nazwa_sortowania=UsuwanieNazwaSortowanie(nazwa_sortowania); if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then nazwa_sortowania=nazwa_sortowania_przed_przyimkiem; nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania; end; end; nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false); if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then nazwa_sortowania=stara_nazwa_sortowania; nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania); end; nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania); return nazwa_sortowania,true; end; local stara_nazwa_sortowania=nazwa_sortowania; nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false); if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then nazwa_sortowania=stara_nazwa_sortowania; nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania); end; nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania); return nazwa_sortowania,true; end; nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania); return nazwa_sortowania,false; end; return p; kbdob30fgk1hpfa5zd7wqpg8ax4n6y1 Szablon:ŹródłoLua/opis 10 62928 553537 532120 2026-08-30T10:28:48Z Persino 2851 /* Użycie */ 553537 wikitext text/x-wiki {{Podstrona dokumentacji}} <!-- DODAWAJ KATEGORIE NA DOLE STRONY --> == Użycie == Szablon służy do wyświetlania w ramce, znaczników: {{Tag|syntaxhighlight|parametry=lang="lua"|zawartość={{(((}}1{{)))}}}}, pokolorowanego kodu języka komputerowego znacznikowego {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. == Opis parametrów == Szablon przyjmuje jeden tylko parametr będącym pewnym kodem w języku {{lpg|Lua}}. == Przykład == <!-- ; Przykład {{Pre|{{s|ŹródłoLua|{{s|LuaSubst|...}}}}}} ; Wynik {{ŹródłoLua|{{LuaSubst|...}}}} --> == Błędy == Błędy należy zgłaszać na stronie {{Kwestie techniczne}}. == Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) == <templatedata> { "params": { "1": { "description": "Kod w jakimś języku komputerowych.", "required": true, "type": "string" }, "nagłówek": { "description": "Nagłówek podświetlania składni kodu.", "type": "string" }, "stopka": { "description": "Stopka podświetlania składni kodu.", "type": "string" }, "styl nagłówka": { "description": "Style nagłówka kaskadowych arkuszy stylów CSS.", "type": "unknown" }, "styl stopki": { "description": "Style nagłówka kaskadowych arkuszy stylów CSS." }, "id": { "description": "Identyfikator znacznika <div>...</div>." }, "klasa": { "description": "Klasy reguł kaskadowych styli arkuszy stylów." }, "styl": { "description": "Style kaskadowych arkuszy stylów CSS." }, "styl kodu": { "description": "Style, kaskadowych arkuszy stylów CSS, kodu komputerowego w różnych językach programowania podświetlania składni." } }, "description": "Szablon kolorujący składnie kodu w języku komputerowym XML.", "paramOrder": [ "1", "nagłówek", "stopka", "styl nagłówka", "styl stopki", "styl kodu", "id", "klasa", "styl" ] } </templatedata> == Zobacz też == * {{s|LuaSubst}} - szablon do zwracania zawartości stron, w postaci nierozwiniętego wikitekstu, na tym projekcie, a do kolorowania składni tego kodu służy ten szablon. {{Szablony wyświetlające rozwinięty kod}} {{BrClear}} <includeonly><!-- ++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII --> {{Kategorie | Szablony wyświetlające kod w językach komputerowych | Szablony ramek wyświetlające kod komputerowy }} </includeonly> 2jf3lfwhs334zl9805ra7u8g4l5mitf 553538 553537 2026-08-30T10:29:13Z Persino 2851 /* Użycie */ 553538 wikitext text/x-wiki {{Podstrona dokumentacji}} <!-- DODAWAJ KATEGORIE NA DOLE STRONY --> == Użycie == Szablon służy do wyświetlania w ramce, znaczników: {{Tag|syntaxlighlight|parametry=lang="lua"|zawartość={{(((}}1{{)))}}}}, pokolorowanego kodu języka komputerowego znacznikowego {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. == Opis parametrów == Szablon przyjmuje jeden tylko parametr będącym pewnym kodem w języku {{lpg|Lua}}. == Przykład == <!-- ; Przykład {{Pre|{{s|ŹródłoLua|{{s|LuaSubst|...}}}}}} ; Wynik {{ŹródłoLua|{{LuaSubst|...}}}} --> == Błędy == Błędy należy zgłaszać na stronie {{Kwestie techniczne}}. == Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) == <templatedata> { "params": { "1": { "description": "Kod w jakimś języku komputerowych.", "required": true, "type": "string" }, "nagłówek": { "description": "Nagłówek podświetlania składni kodu.", "type": "string" }, "stopka": { "description": "Stopka podświetlania składni kodu.", "type": "string" }, "styl nagłówka": { "description": "Style nagłówka kaskadowych arkuszy stylów CSS.", "type": "unknown" }, "styl stopki": { "description": "Style nagłówka kaskadowych arkuszy stylów CSS." }, "id": { "description": "Identyfikator znacznika <div>...</div>." }, "klasa": { "description": "Klasy reguł kaskadowych styli arkuszy stylów." }, "styl": { "description": "Style kaskadowych arkuszy stylów CSS." }, "styl kodu": { "description": "Style, kaskadowych arkuszy stylów CSS, kodu komputerowego w różnych językach programowania podświetlania składni." } }, "description": "Szablon kolorujący składnie kodu w języku komputerowym XML.", "paramOrder": [ "1", "nagłówek", "stopka", "styl nagłówka", "styl stopki", "styl kodu", "id", "klasa", "styl" ] } </templatedata> == Zobacz też == * {{s|LuaSubst}} - szablon do zwracania zawartości stron, w postaci nierozwiniętego wikitekstu, na tym projekcie, a do kolorowania składni tego kodu służy ten szablon. {{Szablony wyświetlające rozwinięty kod}} {{BrClear}} <includeonly><!-- ++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII --> {{Kategorie | Szablony wyświetlające kod w językach komputerowych | Szablony ramek wyświetlające kod komputerowy }} </includeonly> 5o7cy81ouvn4err1yqeiuw7l8vevo2x 553539 553538 2026-08-30T10:29:47Z Persino 2851 /* Użycie */ 553539 wikitext text/x-wiki {{Podstrona dokumentacji}} <!-- DODAWAJ KATEGORIE NA DOLE STRONY --> == Użycie == Szablon służy do wyświetlania w ramce, znaczników: {{Tag|syntaxlighlight|parametry=lang="lua"|zawartość={{(((}}1{{)))}}}}, pokolorowanego kodu języka komputerowego znacznikowego w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. == Opis parametrów == Szablon przyjmuje jeden tylko parametr będącym pewnym kodem w języku {{lpg|Lua}}. == Przykład == <!-- ; Przykład {{Pre|{{s|ŹródłoLua|{{s|LuaSubst|...}}}}}} ; Wynik {{ŹródłoLua|{{LuaSubst|...}}}} --> == Błędy == Błędy należy zgłaszać na stronie {{Kwestie techniczne}}. == Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) == <templatedata> { "params": { "1": { "description": "Kod w jakimś języku komputerowych.", "required": true, "type": "string" }, "nagłówek": { "description": "Nagłówek podświetlania składni kodu.", "type": "string" }, "stopka": { "description": "Stopka podświetlania składni kodu.", "type": "string" }, "styl nagłówka": { "description": "Style nagłówka kaskadowych arkuszy stylów CSS.", "type": "unknown" }, "styl stopki": { "description": "Style nagłówka kaskadowych arkuszy stylów CSS." }, "id": { "description": "Identyfikator znacznika <div>...</div>." }, "klasa": { "description": "Klasy reguł kaskadowych styli arkuszy stylów." }, "styl": { "description": "Style kaskadowych arkuszy stylów CSS." }, "styl kodu": { "description": "Style, kaskadowych arkuszy stylów CSS, kodu komputerowego w różnych językach programowania podświetlania składni." } }, "description": "Szablon kolorujący składnie kodu w języku komputerowym XML.", "paramOrder": [ "1", "nagłówek", "stopka", "styl nagłówka", "styl stopki", "styl kodu", "id", "klasa", "styl" ] } </templatedata> == Zobacz też == * {{s|LuaSubst}} - szablon do zwracania zawartości stron, w postaci nierozwiniętego wikitekstu, na tym projekcie, a do kolorowania składni tego kodu służy ten szablon. {{Szablony wyświetlające rozwinięty kod}} {{BrClear}} <includeonly><!-- ++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII --> {{Kategorie | Szablony wyświetlające kod w językach komputerowych | Szablony ramek wyświetlające kod komputerowy }} </includeonly> fjkfa316i2iguhlrdnz851j113j4e0u Wikibooks:Moduły/Ramka 4 63231 553384 553322 2026-08-29T17:06:36Z Persino 2851 553384 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 == === {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} === Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, tylko w module {{Code|{{ld2|Ramka}}}}, szablonów, modułów i parserów w ramce. Uruchamiana jest przez funkcje: {{LinkŚródtytuł|p.Szablon}} - funkcja do uruchamiania szablonów, {{LinkŚródtytuł|p["Moduł"]}} - funkcja do uruchamiania modułów, i {{LinkŚródtytuł|p.Parser}} - funkcja do uruchamiania parserów. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ParserBlokowy(frame, co_ma_wywolac)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} {{Patrz|frame}} - funkcja ramkki funkcji tablica transportu modułu, * {{Code|co_ma_wywolac}} {{Patrz|co_ma_wywolac}} - ten parametr przyjmuje wartość liczbową, która jeżeli {{Tt|0}} - to uruchamiany jest szablon, jeżeli {{Tt|1}} - moduł, jeżeli {{Code|2}} - to parser, jeżeli on ma inne wartości, tzn.: {{Tt|2}}, a {{Tt|3}} i dalej, to już dany szablon. ; Parametry funkcji ramki: * Parametry podstawowe: ** {{Code|Nazwa}} {{Patrz|Nazwa}} - jest to pełna nazwa szablonu, modułu, czy parsera, ** {{Code|bez argumentów rodzica}} {{Patrz|bez argumentów rodzica}} - tablica parametrów oddzielonych średnikami, których obiekt uruchamiany nie może przyjmować, nawet jeżeli one są, ** {{Code|nazwa szablonu rodzica}} {{Patrz|nazwa szablonu rodzica}} - jest to zmienna przechowująca nazwę szablonu rodzica ramki dziecka,a nawet któreś z jego przodków, ** {{Code|bez argumentów nienazwanych rodzica}} {{Patrz|bez argumentów nienazwanych rodzica}} - szablon w ramce nie przyjmuje parametrów nienazwanych, określonych liczbą, podanych w rodzicu ramki, ** {{Code|potomek}} {{Patrz|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}} {{Patrz|nie potomek}} - zmienna mówiąca, że to nie jest potomek szablonu, używana, gdy nie jest określona zmienna ramki {{LinkPatrz|zmienna z parametrami rodzica}}, wtedy taka ramka jest traktowana jak normalna ramka, której jedynie trzeba przekazać parametry rodzica, nie przodka, wtedy do niej nie są przekazywane parametry: {{LinkPatrz|parametry rodzica}} (ta zmienna jest wtedy ustawiana, gdy nie jest niepusty parametr {{LinkPatrz|bez dodatkowych sprawdzeń}}), {{LinkPatrz|bez argumentów szablonu}}, i {{LinkPatrz|nazwa szablonu rodzica}} (jeśli ta wartość rodzica nie istnieje, to nadawana jest jej aktualna nazwa szablonu rodzica, a nie przodka, normalnie jest to przodka, a w szczególności rodzica) i {{LinkPatrz|potomek}} (ustawiany na stałą wartość niepustą), ** {{Code|bez argumentów szablonu}} {{Patrz|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ń}} {{Patrz|bez dodatkowych sprawdzeń}} - nie jest uruchamiana walidacja parametrów szablonu rodzica, ** {{Code|parametry rodzica}} {{Patrz|parametry rodzica}} - zmienna przedstawiająca parametry rodzica, czy któreś ze przodków, przekazane do ramki: {{m|Sprawdź|Parametry}} - dodane przez tę funkcję, ** {{Code|zmienna z parametrami rodzica}} {{Patrz|zmienna z parametrami rodzica}} - parametr mówiący, czy ma tworzyć zmienne z parametrami rodzica {{LinkPatrz|parametry rodzica}}, a jeżeli nie jest on, z zadnych z jego potomków podany, to zmienna {{LinkPatrz|parametry rodzica}} jest przekazywana na kolejnego przodka, ** {{Code|zmienna z argumentami ramki}} {{Patrz|zmienna z argumentami ramki}} - zmienna mówiąca, czy mają być tworzone parametry ramki, które nie są sprawdzane 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}} {{Patrz|zmienna z nazwą szablonu rodzica}} - parametr, czy ma tworzyć zmienną: {{LinkPatrz|nazwa szablonu rodzica}}, ** {{Code|parametry funkcji modułu pudełek}} {{Patrz|parametry funkcji modułu pudełek}} - czy do funkcji mają wchodzić parametry modułu pudełek, które są ponumerowane dodatkowym numerkiem, ** {{Code|parametry podstawowe funkcji modułu pudełek}} {{Patrz|parametry podstawowe funkcji modułu pudełek}} - czy do funkcji mają wchodzić podstawowe parametry funkcji modułu pudełek, te które nie mają dodatkowego numerka, ** {{Code|usuń z parametrów ramki}} {{Patrz|usuń z parametrów ramki}} - parametry ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, przedstawiający zmienne oddzielone średnikami, które nie mają być uwzględnione przy uruchamianiu danego obiektu. * {{Code|Funkcja}} {{Patrz|Funkcja}} - nazwa funkcji w module, który ma wywołać w ramce ta funkcja, w przypadku, gdy parametr {{LinkPatrz|co_ma_wywolac}} ma wartość {{Tt|1}}, czyli wywołujemy funkcję {{LinkŚródtytuł|p["Moduł"]}}. Funkcja uruchamia szablon, moduł, czy ramkę, w zależności od drugiego parametru funkcji, z parametrami rodzica ramki bez parametrów opisanych zmienną: {{LinkPatrz|bez argumentów szablonu}}, i bez parametrów wskazanych przez zmienną: {{Code|usuń z parametrów ramki}}. Za pomocą tej funkcji możemy wielopoziomowo wywoływać funkcje przekazując parametry od najwyższego poziomu do najniższego. Ta funkcja służy przede wszystkim 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 do uruchamiania szablonów, a uruchamianie funkcji modułu, w tym funkcji {{m|Cytuj|custom}} w szablonie {{s|PrzypisStrona}}. Przykładem wywołania szablonu, która jest w szablonie: {{s|Wzór}}, w którym jest wywoływany inny szablon, tym razem silnik, tzn. {{s|Wzór/silnik}}: <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> === {{Śródtytuł|BudowaSzereguZDanych}}{{Code|BudowaSzereguZDanych}} === Funkcja do uruchamiania się 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> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tab_lancuch}} {{Patrz|tab_lancuch}} - pewna tablica transportu funkcji. * Zmienne do mikroszablonów: ** {{Code|minimum}} {{Patrz|minimum}} - liczba mówiąca o minimum, ** {{Code|maksimum}} {{Patrz|maksimum}} - liczba mówiąca o maksimum. Parametry ramki funkcji tablicy transportu modułu: * {{Code|akapit}} {{Patrz|akapit}} - jeśli niepusta, to ona definiuje akapit ze znaków {{Code|\n\n}}, przeciwnym wypadku elementy łańcucha nie są łączone w akapity, * {{Code|przecinek}} {{Patrz|przecinek}} - jeśli niepuste, to mówi, że pomiędzy elementami powiniem być przecinek: {{Code|", "}}, został on specjalnie objęty w cudzysłowy, aby zilustrować, że po przecinku znajduje się spacja, * {{Code|nowa linia}} {{Patrz|nowa linia}} - w przeciwieństwo do zmiennej {{LinkPatrz|akapit}}, używany zamiast niej, pisze jedną nową linię, a nie dwie, jako: {{Code|\n}}, * {{Code|wyliczanka}} {{Patrz|wyliczanka}} - wylicza elementy z przecinkami, stawiając przed ostatnim elementem zamiast jego wyraz wyliczania {{Code|i}}, * {{Code|początek}} {{Patrz|początek}} - mówi, że na początku musi znajdować się przecinek, * {{Code|myślnik}} {{Patrz|myślnik}} - mówi, że jeśli nie ma początku przecinka, to stawiany jest myślnik, używany zamiast {{LinkPatrz|początek}}, * {{Code|warunkowe}} {{Patrz|warunkowe}} - instrukcje wikikodu, takie jak: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}, zostaną w kodzie rozwinięte, a później ciągłe właściwe elementy wikikodu otoczone dwoma dolnymi myślnikami zostaną rozwinięte do pewnej postaci, funkcja używa do tego {{LinkŚródtytuł|p.InstrukcjeWarunkowe}}, ** {{Code|parametr}} {{Patrz|parametr}} - używany w towarzystwie z {{LinkPatrz|warunkowe}}, mówiący że, derektywy znakowe ciągłe otoczone dwoma dolnymi myślnikami, zostaną zastąpione odpowiedmimi szablonami, w przeciwnym wypadku niepodania tej wartości lub jego pustej, wtedy te derektywy zostaną zastąpione w postaci rozwiniętej tych szablonów. ** Funkcja w tym warunku zwraca ciąg znaków rozwiniętego warunku. Funkcja posiada też mikroszablony, które są zdefiniowane w kodzie łańcuchów {{LinkPatrz|tab_lancuch}}: * {{Code|<nowiki>{{min}}</nowiki>}} - minimalna wartość szeregu zmiennych, określana przez {{LinkPatrz|minimum}}, * {{Code|<nowiki>{{max}}</nowiki>}} - a tutaj ich maksymalna, określana przez {{LinkPatrz|maksimum}}. Te dwie zmienne są podstawiane do uzyskanego ciągu. Funkcja zwraca te części rozwiniętego tekstu wikikodu, jeśli podano {{LinkPatrz|warunkowe}}, co do instrukcji warunkowych i te bez wewnętrznych klamerek - specjalne kody, czyki te otoczone z dwóch stron dolnumi myślnikami, a pozostałe część jest za to nierozwinięta. == {{Śródtytuł|p.InstrukcjeWarunkowe}}{{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}} {{Patrz|ciag}} - podany ciąg do rozwinięcia z instrukcji warunkowych wewnątrz nie posiadający klamerek, * {{Code|derektywy_specjalne}} {{Patrz|derektywy_specjalne}} - używa do zastępowania specjalnych derektyw, podane po prawej stronie w ramce pływającej, * {{Code|derektywy_parametrowe}} {{Patrz|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: {{LinkŚródtytuł|BudowaSzereguZDanych}}, poprzez: {{LinkŚródtytuł|p.Powtarzaj}}. 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 == === {{Śródtytuł|p.Szablon}}{{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}}. === {{Śródtytuł|p["Moduł"]}}{{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}}. === {{Śródtytuł|p.Parser}}{{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 == === {{Śródtytuł|p.Powtarzaj}}{{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> 08i39t7uh4mgzuvvmbocddkrt4turpo 553385 553384 2026-08-29T19:06:32Z Persino 2851 553385 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 == === {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} === Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, tylko w module {{Code|{{ld2|Ramka}}}}, szablonów, modułów i parserów w ramce. Uruchamiana jest przez funkcje: {{LinkŚródtytuł|p.Szablon}} - funkcja do uruchamiania szablonów, {{LinkŚródtytuł|p["Moduł"]}} - funkcja do uruchamiania modułów, i {{LinkŚródtytuł|p.Parser}} - funkcja do uruchamiania parserów. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ParserBlokowy(frame, co_ma_wywolac)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} {{Patrz|frame}} - funkcja ramkki funkcji tablica transportu modułu, * {{Code|co_ma_wywolac}} {{Patrz|co_ma_wywolac}} - ten parametr przyjmuje wartość liczbową, która jeżeli {{Tt|0}} - to uruchamiany jest szablon, jeżeli {{Tt|1}} - moduł, jeżeli {{Code|2}} - to parser, jeżeli on ma inne wartości, tzn.: {{Tt|2}}, a {{Tt|3}} i dalej, to już dany szablon. ; Parametry funkcji ramki: * Parametry podstawowe: ** {{Code|Nazwa}} {{Patrz|Nazwa}} - jest to pełna nazwa szablonu, modułu, czy parsera, ** {{Code|bez argumentów rodzica}} {{Patrz|bez argumentów rodzica}} - tablica parametrów oddzielonych średnikami, których obiekt uruchamiany nie może przyjmować, nawet jeżeli one są, ** {{Code|nazwa szablonu rodzica}} {{Patrz|nazwa szablonu rodzica}} - jest to zmienna przechowująca nazwę szablonu rodzica ramki dziecka,a nawet któreś z jego przodków, ** {{Code|bez argumentów nienazwanych rodzica}} {{Patrz|bez argumentów nienazwanych rodzica}} - szablon w ramce nie przyjmuje parametrów nienazwanych, określonych liczbą, podanych w rodzicu ramki, ** {{Code|potomek}} {{Patrz|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}} {{Patrz|nie potomek}} - zmienna mówiąca, że to nie jest potomek szablonu, używana, gdy nie jest określona zmienna ramki {{LinkPatrz|zmienna z parametrami rodzica}}, wtedy taka ramka jest traktowana jak normalna ramka, której jedynie trzeba przekazać parametry rodzica, nie przodka, wtedy do niej nie są przekazywane parametry: {{LinkPatrz|parametry rodzica}} (ta zmienna jest wtedy ustawiana, gdy nie jest niepusty parametr {{LinkPatrz|bez dodatkowych sprawdzeń}}), {{LinkPatrz|bez argumentów szablonu}}, i {{LinkPatrz|nazwa szablonu rodzica}} (jeśli ta wartość rodzica nie istnieje, to nadawana jest jej aktualna nazwa szablonu rodzica, a nie przodka, normalnie jest to przodka, a w szczególności rodzica) i {{LinkPatrz|potomek}} (ustawiany na stałą wartość niepustą), ** {{Code|bez argumentów szablonu}} {{Patrz|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ń}} {{Patrz|bez dodatkowych sprawdzeń}} - nie jest uruchamiana walidacja parametrów szablonu rodzica, ** {{Code|parametry rodzica}} {{Patrz|parametry rodzica}} - zmienna przedstawiająca parametry rodzica, czy któreś ze przodków, przekazane do ramki: {{m|Sprawdź|Parametry}} - dodane przez tę funkcję, ** {{Code|zmienna z parametrami rodzica}} {{Patrz|zmienna z parametrami rodzica}} - parametr mówiący, czy ma tworzyć zmienne z parametrami rodzica {{LinkPatrz|parametry rodzica}}, a jeżeli nie jest on, z zadnych z jego potomków podany, to zmienna {{LinkPatrz|parametry rodzica}} jest przekazywana na kolejnego przodka, ** {{Code|zmienna z argumentami ramki}} {{Patrz|zmienna z argumentami ramki}} - zmienna mówiąca, czy mają być tworzone parametry ramki, które nie są sprawdzane 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}} {{Patrz|zmienna z nazwą szablonu rodzica}} - parametr, czy ma tworzyć zmienną: {{LinkPatrz|nazwa szablonu rodzica}}, ** {{Code|parametry funkcji modułu pudełek}} {{Patrz|parametry funkcji modułu pudełek}} - czy do funkcji mają wchodzić parametry modułu pudełek, które są ponumerowane dodatkowym numerkiem, ** {{Code|parametry podstawowe funkcji modułu pudełek}} {{Patrz|parametry podstawowe funkcji modułu pudełek}} - czy do funkcji mają wchodzić podstawowe parametry funkcji modułu pudełek, te które nie mają dodatkowego numerka, ** {{Code|usuń z parametrów ramki}} {{Patrz|usuń z parametrów ramki}} - parametry ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, przedstawiający zmienne oddzielone średnikami, które nie mają być uwzględnione przy uruchamianiu danego obiektu. * {{Code|Funkcja}} {{Patrz|Funkcja}} - nazwa funkcji w module, który ma wywołać w ramce ta funkcja, w przypadku, gdy parametr {{LinkPatrz|co_ma_wywolac}} ma wartość {{Tt|1}}, czyli wywołujemy funkcję {{LinkŚródtytuł|p["Moduł"]}}. Funkcja uruchamia szablon, moduł, czy ramkę, w zależności od drugiego parametru funkcji, z parametrami rodzica ramki bez parametrów opisanych zmienną: {{LinkPatrz|bez argumentów szablonu}}, i bez parametrów wskazanych przez zmienną: {{Code|usuń z parametrów ramki}}. Za pomocą tej funkcji możemy wielopoziomowo wywoływać funkcje przekazując parametry od najwyższego poziomu do najniższego. Ta funkcja służy przede wszystkim 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 do uruchamiania szablonów, a uruchamianie funkcji modułu, w tym funkcji {{m|Cytuj|custom}} w szablonie {{s|PrzypisStrona}}. Przykładem wywołania szablonu, która jest w szablonie: {{s|Wzór}}, w którym jest wywoływany inny szablon, tym razem silnik, tzn. {{s|Wzór/silnik}}: <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> === {{Śródtytuł|BudowaSzereguZDanych}}{{Code|BudowaSzereguZDanych}} === Funkcja do uruchamiania się 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> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tab_lancuch}} {{Patrz|tab_lancuch}} - pewna tablica transportu funkcji. * Zmienne do mikroszablonów: ** {{Code|minimum}} {{Patrz|minimum}} - liczba mówiąca o minimum, ** {{Code|maksimum}} {{Patrz|maksimum}} - liczba mówiąca o maksimum. Parametry ramki funkcji tablicy transportu modułu: * {{Code|akapit}} {{Patrz|akapit}} - jeśli niepusta, to ona definiuje akapit ze znaków {{Code|\n\n}}, przeciwnym wypadku elementy łańcucha nie są łączone w akapity, * {{Code|przecinek}} {{Patrz|przecinek}} - jeśli niepuste, to mówi, że pomiędzy elementami powiniem być przecinek: {{Code|", "}}, został on specjalnie objęty w cudzysłowy, aby zilustrować, że po przecinku znajduje się spacja, * {{Code|nowa linia}} {{Patrz|nowa linia}} - w przeciwieństwo do zmiennej {{LinkPatrz|akapit}}, używany zamiast niej, pisze jedną nową linię, a nie dwie, jako: {{Code|\n}}, * {{Code|wyliczanka}} {{Patrz|wyliczanka}} - wylicza elementy z przecinkami, stawiając przed ostatnim elementem zamiast jego wyraz wyliczania {{Code|i}}, * {{Code|początek}} {{Patrz|początek}} - mówi, że na początku musi znajdować się przecinek, * {{Code|myślnik}} {{Patrz|myślnik}} - mówi, że jeśli nie ma początku przecinka, to stawiany jest myślnik, używany zamiast {{LinkPatrz|początek}}, * {{Code|warunkowe}} {{Patrz|warunkowe}} - instrukcje wikikodu, takie jak: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}, zostaną w kodzie rozwinięte, a później ciągłe właściwe elementy wikikodu otoczone dwoma dolnymi myślnikami zostaną rozwinięte do pewnej postaci, funkcja używa do tego {{LinkŚródtytuł|p.InstrukcjeWarunkowe}}, ** {{Code|parametr}} {{Patrz|parametr}} - używany w towarzystwie z {{LinkPatrz|warunkowe}}, mówiący że, derektywy znakowe ciągłe otoczone dwoma dolnymi myślnikami, zostaną zastąpione odpowiedmimi szablonami, w przeciwnym wypadku niepodania tej wartości lub jego pustej, wtedy te derektywy zostaną zastąpione w postaci rozwiniętej tych szablonów. ** Funkcja w tym warunku zwraca ciąg znaków rozwiniętego warunku. Funkcja posiada też mikroszablony, które są zdefiniowane w kodzie łańcuchów {{LinkPatrz|tab_lancuch}}: * {{Code|<nowiki>{{min}}</nowiki>}} - minimalna wartość szeregu zmiennych, określana przez {{LinkPatrz|minimum}}, * {{Code|<nowiki>{{max}}</nowiki>}} - a tutaj ich maksymalna, określana przez {{LinkPatrz|maksimum}}. Te dwie zmienne są podstawiane do uzyskanego ciągu. Funkcja zwraca te części rozwiniętego tekstu wikikodu, jeśli podano {{LinkPatrz|warunkowe}}, co do instrukcji warunkowych i te bez wewnętrznych klamerek - specjalne kody, czyki te otoczone z dwóch stron dolnumi myślnikami, a pozostałe część jest za to nierozwinięta. == {{Śródtytuł|p.InstrukcjeWarunkowe}}{{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}} {{Patrz|ciag}} - podany ciąg do rozwinięcia z instrukcji warunkowych wewnątrz nie posiadający klamerek, * {{Code|derektywy_specjalne}} {{Patrz|derektywy_specjalne}} - używa do zastępowania specjalnych derektyw, podane po prawej stronie w ramce pływającej, * {{Code|derektywy_parametrowe}} {{Patrz|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: {{LinkŚródtytuł|BudowaSzereguZDanych}}, poprzez: {{LinkŚródtytuł|p.Powtarzaj}}. 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 == === {{Śródtytuł|p.RozpakujArgumenty}}{{Code|p.RozpakujArgumenty}} === Funkcje uruchamia się 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. === {{Śródtytuł|p.PakujParametry}}{{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> Parametry funkcji: * {{Code|args}} {{Patrz|args}} - tablica {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. 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}}, z użyciem funkcji: {{LzLua|mw.text.jsonEncode}}, z drugim parametrem: {{Code|mw.text.JSON_PRESERVE_KEYS}} {{Patrz|mw.text.JSON_PRESERVE_KEYS}}. === {{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 w niej zwracany. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.RozpakujParametry = function (zmienna_z_parametrami) return mw.text.jsonDecode(zmienna_z_parametrami,mw.text.JSON_PRESERVE_KEYS); end; </syntaxhighlight> Parametry funkcji: * {{Code|zmienna_z_parametrami}} {{Patrz|zmienna_z_parametrami}} - tablica {{Code|JSON}}. 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}}, z użyciem funkcji: {{LzLua|mw.text.jsonDecode}}, z użzyciem drugiego parametru: {{LinkPatrz|mw.text.JSON_PRESERVE_KEYS}}. == {{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> Parameetry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon rozwija wikikod podany w zmiennej {{Code|1}}, w parametrach szablonu rodzica. * 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}}: <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> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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}}: <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 == === {{Śródtytuł|p.Szablon}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p.Szablon = function(frame) return ParserBlokowy(frame,0); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Szablon|Nazwa=<nazwa szablonu>|...}} </syntaxhighlight> === {{Śródtytuł|p["Moduł"]}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p["Moduł"] = function(frame) return ParserBlokowy(frame,1); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Moduł|Nazwa=<nazwa modułu>|Funkcja=<nazwa funkcji>|...}} </syntaxhighlight> === {{Śródtytuł|p.Parser}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p.Parser = function(frame) return ParserBlokowy(frame,2); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Parser|Nazwa=<nazwa parsera>|...}} </syntaxhighlight> == Funkcje książkowe == === {{Śródtytuł|p.Q}}{{Code|p.Q}} === Funkcja uruchamia szablon o podanej nazwie w pierwszym parametrze z przedrostkiem {{Code|Książka:}} przed nazwą szablonu. Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.Q =function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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ą (parametry nazwane, które są wliczane 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}}}} === {{Śródtytuł|p.N}}{{Code|p.N}} === Funkcja uruchamiana we wnętrzu szablonu {{s|N}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on. Funkcja przed nazwą szablonu, czy modułu, zostawia w wpis w postaci przedrostka {{Code|Książka:}}. Czy zostanie dodana przed tym nazwa przestrzeni nazw, to zależy od niepodania niepustej zmiennej {{Parametr|n}}, a zmienna {{Parametr|p|1}} - to przed nim jest dodawana przestrzeń nazw szablonu {{Np|Template|link=tak}}, {{Parametr|p|2}} - modułu {{Np|Module|link=tak}} i {{Parametr|p|3}} - kategorii. Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.N=function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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}}}} === {{Śródtytuł|p.Q}}{{Code|p.A}} === Funkcja uruchamiana we wnętrzu szablonu {{s|A}}, która przyjmuje jego parametry, i tak samo działa, jak on. Funkcja usuwa przedrostek {{Code|Książka:}} w nazwie szablonu, czy modułu. Gdy jest podany parametr: {{Parametr|p|tak}}, to dla przestrzeni niebędących: {{Np|Template|link=tak}}, {{Np|Module|link=tak}} i {{Np|Category|link=tak}}, jest zwracany wtedy przez nią parametr pierwszy fukcji, dla tych wartości właśnie wyliczonych przestrzeni usuwany jest przedristek {{Code|Książka:}}. Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.A=function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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 == === {{Śródtytuł|p.Powtarzaj}}{{Code|p.Powtarzaj}} === Funkcja służy do powtarzalnego generowania wikikodu ze składników jego kroku przy pomocy określonych zmiennych rodzica. * Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.Powtarzaj = function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Funkcja może przyjmować tylko parametry nienazwane albo tylko nazwane, albo nienazwane i nazwane (gdy jest ustawiony parametr {{Code|różne}} {{Patrz|różne}}). 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}} {{LinkPatrz|różne}}, która wtedy ma wskazywać na wartość niepustą. ; Najważniejsze parametry, które są to opcjonalne, to są{{dk}} * {{Code|start}} {{Patrz|start}} - liczba, która wskazuje początek liczenia - domyślna wartość to {{Code|1}}, * {{Code|koniec}} {{Patrz|koniec}} - liczba, która wskazuje koniec liczenia. ; Numer końca liczenia parametrów nienazwanych lub nazwanych, czy nazwanychi nienazwanych{{dk}} * Elementy w {{Code|parametry}} {{Patrz|parametry}} mogą modyfikować odpowiednio parametry: {{LinkPatrz|start}} i {{LinkPatrz|koniec}}. * Ze zmiennej {{LinkPatrz|parametry}} jest liczona odpowiednia zmienna {{LinkPatrz|tabela}} dopuzczalnych zmiennych do liczenia. * Funkcja {{Code|Wylicz_skoncz_na_koncu}},którego algorytm podomy w tej poyzcji, tzn. koniec liczenia parametrów nienazwanych musi być policzony, jeżeli nie ma parametrów nazwanych w tabeli {{Code|tabela}} {{Patrz|tabela}}. A przeciwnie, jeżeli nie jest ustawiony parametr {{Code|różne}} {{LinkPatrz|różne}} nie na wartość niepustą, wtedy jest liczony parametr maksimum parametrów nazwanych, przeciwnie wtedy liczy się parametr maksimum numeracyjne parametrów numerowanych, czyli zmienną: {{Code|maksimum numeracyjne}} {{Patrz|maksimum numeracyjne}}, jeśli on ma wartość niepustą, wtedy liczy się maksimum parametrów nienazwanych, a jeżeli ona ma przeciwną wartość, to się liczy maksimum parametrów nazwanych, jak nienazwanych. Na podstawie tego mamy policzony odpowiednio taki koniec liczenia modyfikacji zwracany i policzony przez tą funkcję. ; Parametr {{Code|dodatkowe}}{{dk}} * To maksimum parametrów nazwanych, dla jakieś podstawy parametrów, są pomijane parametry z: {{Code|dodatkowe}}, która jest zestawem podstaw parametrów oddzielonych średnikami, jest właśnie podany ten parametr w nim. Przykładem jego jest: * {{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. ; Format parametru {{Parametr|parametry}}{{dk}} * 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 równa liczbie {{Code|5}}, oddzielonych średnikami. ; Opis parametru {{Parametr|parametry}}{{dk}} 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 w wartościach: {{Code|zmienna 1>}}, {{Code|<zmienna 2>}} i {{Code|<zmienna 3>}}, w których są pewne nazwy bazowe parametrów bez numerka na jej końcu, w zmiennej {{Code|parametry}} można nie podawać dalszych elementów 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ć nawet tego znaku,gdy nic nie ma po równa się) dla danego problemu funkcji. ; Wikikod pojedynczego kroku liczenia całości wygenerowanego wikikodu dla wszystkich zmiennych{{dk}} * 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)}}. ; Parametr {{Parametr|start}}, wartość początkowa{{dk}} * Gdy parametr {{Code|tonumber(frame.args["start"]) or 1}}, jest równy zero, funkcja zwraca błąd: {{Code|(początek jest ustawiony na zero)}}. ; Brak parametrów szablonu{{dk}} * 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. ; Parametr {{Parametr|nic}}{{dk}} * Gdy {{Code|nic}} przyjmuje wartość, i gdy pomijamy parametr, lub on przyjmuje wartość pustą, wtedy a funkcja nie może wygenerować żadnego kroku iteracji, to wtedy jest zwracana wartość parametru {{Code|nic}} lub ciąg pusty. ; Inne parametry{{dk}} * Parametr {{Code|po kolei}} {{Patrz|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|zaznacz}} {{Patrz|zaznacz}} - liczby oddzielone średnikami, które przy parametrach nazwanych o pewnych numerach i numerkach nie mają być uwzględnione przy niepustym parametrze {{Code|po kolei}} {{LinkPatrz|po kolei}}, a przy jego przeciwnej wartości za to mają być użyte. * 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}} {{Patrz|_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 wikikodami, wtedy ta funkcja używa do tego liczenia{{dk}} * Jest to funkcja {{LinkŚródtytuł|BudowaSzereguZDanych}}. * Wywołanie funkcji jest takie: {{Pre|lancuch_znakow {{=}} BudowaSzereguZDanych(frame,tab_lancuch,minimum or 0,maksimum);}} ; Parametry funkcji {{LinkŚródtytuł|BudowaSzereguZDanych}}. * One są wraz z jego parametrami podane w postaci jego parametrów ramki {{Code|frame}}, które jednocześnie są parametrami {{LinkŚródtytuł|Powtarzaj}}, używa się je 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ą {{LzLua|frame:preprocess}}, i jest zwracany jako wartość omawianej funkcji. ; Przykłady{{dk}} * Funkcja jest używana np. w silnikach szablonów, np.: {{s|Osobny artykuł/silnik}} szablonu {{s|Osobny artykuł}}, jak i do niego 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> 0gl08ydipgw0trvxbw05314oebovyuq 553386 553385 2026-08-29T19:42:56Z Persino 2851 553386 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 == === {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} === Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, tylko w module {{Code|{{ld2|Ramka}}}}, szablonów, modułów i parserów w ramce. Uruchamiana jest przez funkcje: {{LinkŚródtytuł|p.Szablon}} - funkcja do uruchamiania szablonów, {{LinkŚródtytuł|p["Moduł"]}} - funkcja do uruchamiania modułów, i {{LinkŚródtytuł|p.Parser}} - funkcja do uruchamiania parserów. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ParserBlokowy(frame, co_ma_wywolac)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} {{Patrz|frame}} - funkcja ramkki funkcji tablica transportu modułu, * {{Code|co_ma_wywolac}} {{Patrz|co_ma_wywolac}} - ten parametr przyjmuje wartość liczbową, która jeżeli {{Tt|0}} - to uruchamiany jest szablon, jeżeli {{Tt|1}} - moduł, jeżeli {{Code|2}} - to parser, jeżeli on ma inne wartości, tzn.: {{Tt|2}}, a {{Tt|3}} i dalej, to już dany szablon. ; Parametry funkcji ramki: * Parametry podstawowe: ** {{Code|Nazwa}} {{Patrz|Nazwa}} - jest to pełna nazwa szablonu, modułu, czy parsera, ** {{Code|bez argumentów rodzica}} {{Patrz|bez argumentów rodzica}} - tablica parametrów oddzielonych średnikami, których obiekt uruchamiany nie może przyjmować, nawet jeżeli one są, ** {{Code|nazwa szablonu rodzica}} {{Patrz|nazwa szablonu rodzica}} - jest to zmienna przechowująca nazwę szablonu rodzica ramki dziecka,a nawet któreś z jego przodków, ** {{Code|bez argumentów nienazwanych rodzica}} {{Patrz|bez argumentów nienazwanych rodzica}} - szablon w ramce nie przyjmuje parametrów nienazwanych, określonych liczbą, podanych w rodzicu ramki, ** {{Code|potomek}} {{Patrz|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}} {{Patrz|nie potomek}} - zmienna mówiąca, że to nie jest potomek szablonu, używana, gdy nie jest określona zmienna ramki {{LinkPatrz|zmienna z parametrami rodzica}}, wtedy taka ramka jest traktowana jak normalna ramka, której jedynie trzeba przekazać parametry rodzica, nie przodka, wtedy do niej nie są przekazywane parametry: {{LinkPatrz|parametry rodzica}} (ta zmienna jest wtedy ustawiana, gdy nie jest niepusty parametr {{LinkPatrz|bez dodatkowych sprawdzeń}}), {{LinkPatrz|bez argumentów szablonu}}, i {{LinkPatrz|nazwa szablonu rodzica}} (jeśli ta wartość rodzica nie istnieje, to nadawana jest jej aktualna nazwa szablonu rodzica, a nie przodka, normalnie jest to przodka, a w szczególności rodzica) i {{LinkPatrz|potomek}} (ustawiany na stałą wartość niepustą), ** {{Code|bez argumentów szablonu}} {{Patrz|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ń}} {{Patrz|bez dodatkowych sprawdzeń}} - nie jest uruchamiana walidacja parametrów szablonu rodzica, ** {{Code|parametry rodzica}} {{Patrz|parametry rodzica}} - zmienna przedstawiająca parametry rodzica, czy któreś ze przodków, przekazane do ramki: {{m|Sprawdź|Parametry}} - dodane przez tę funkcję, ** {{Code|zmienna z parametrami rodzica}} {{Patrz|zmienna z parametrami rodzica}} - parametr mówiący, czy ma tworzyć zmienne z parametrami rodzica {{LinkPatrz|parametry rodzica}}, a jeżeli nie jest on, z zadnych z jego potomków podany, to zmienna {{LinkPatrz|parametry rodzica}} jest przekazywana na kolejnego przodka, ** {{Code|zmienna z argumentami ramki}} {{Patrz|zmienna z argumentami ramki}} - zmienna mówiąca, czy mają być tworzone parametry ramki, które nie są sprawdzane 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}} {{Patrz|zmienna z nazwą szablonu rodzica}} - parametr, czy ma tworzyć zmienną: {{LinkPatrz|nazwa szablonu rodzica}}, ** {{Code|parametry funkcji modułu pudełek}} {{Patrz|parametry funkcji modułu pudełek}} - czy do funkcji mają wchodzić parametry modułu pudełek, które są ponumerowane dodatkowym numerkiem, ** {{Code|parametry podstawowe funkcji modułu pudełek}} {{Patrz|parametry podstawowe funkcji modułu pudełek}} - czy do funkcji mają wchodzić podstawowe parametry funkcji modułu pudełek, te które nie mają dodatkowego numerka, ** {{Code|usuń z parametrów ramki}} {{Patrz|usuń z parametrów ramki}} - parametry ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, przedstawiający zmienne oddzielone średnikami, które nie mają być uwzględnione przy uruchamianiu danego obiektu. * {{Code|Funkcja}} {{Patrz|Funkcja}} - nazwa funkcji w module, który ma wywołać w ramce ta funkcja, w przypadku, gdy parametr {{LinkPatrz|co_ma_wywolac}} ma wartość {{Tt|1}}, czyli wywołujemy funkcję {{LinkŚródtytuł|p["Moduł"]}}. Funkcja uruchamia szablon, moduł, czy ramkę, w zależności od drugiego parametru funkcji, z parametrami rodzica ramki bez parametrów opisanych zmienną: {{LinkPatrz|bez argumentów szablonu}}, i bez parametrów wskazanych przez zmienną: {{Code|usuń z parametrów ramki}}. Za pomocą tej funkcji możemy wielopoziomowo wywoływać funkcje przekazując parametry od najwyższego poziomu do najniższego. Ta funkcja służy przede wszystkim 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 do uruchamiania szablonów, a uruchamianie funkcji modułu, w tym funkcji {{m|Cytuj|custom}} w szablonie {{s|PrzypisStrona}}. Przykładem wywołania szablonu, która jest w szablonie: {{s|Wzór}}, w którym jest wywoływany inny szablon, tym razem silnik, tzn. {{s|Wzór/silnik}}: <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> === {{Śródtytuł|BudowaSzereguZDanych}}{{Code|BudowaSzereguZDanych}} === Funkcja do uruchamiania się 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> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tab_lancuch}} {{Patrz|tab_lancuch}} - pewna tablica transportu funkcji. * Zmienne do mikroszablonów: ** {{Code|minimum}} {{Patrz|minimum}} - liczba mówiąca o minimum, ** {{Code|maksimum}} {{Patrz|maksimum}} - liczba mówiąca o maksimum. Parametry ramki funkcji tablicy transportu modułu: * {{Code|akapit}} {{Patrz|akapit}} - jeśli niepusta, to ona definiuje akapit ze znaków {{Code|\n\n}}, przeciwnym wypadku elementy łańcucha nie są łączone w akapity, * {{Code|przecinek}} {{Patrz|przecinek}} - jeśli niepuste, to mówi, że pomiędzy elementami powiniem być przecinek: {{Code|", "}}, został on specjalnie objęty w cudzysłowy, aby zilustrować, że po przecinku znajduje się spacja, * {{Code|nowa linia}} {{Patrz|nowa linia}} - w przeciwieństwo do zmiennej {{LinkPatrz|akapit}}, używany zamiast niej, pisze jedną nową linię, a nie dwie, jako: {{Code|\n}}, * {{Code|wyliczanka}} {{Patrz|wyliczanka}} - wylicza elementy z przecinkami, stawiając przed ostatnim elementem zamiast jego wyraz wyliczania {{Code|i}}, * {{Code|początek}} {{Patrz|początek}} - mówi, że na początku musi znajdować się przecinek, * {{Code|myślnik}} {{Patrz|myślnik}} - mówi, że jeśli nie ma początku przecinka, to stawiany jest myślnik, używany zamiast {{LinkPatrz|początek}}, * {{Code|warunkowe}} {{Patrz|warunkowe}} - instrukcje wikikodu, takie jak: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}, zostaną w kodzie rozwinięte, a później ciągłe właściwe elementy wikikodu otoczone dwoma dolnymi myślnikami zostaną rozwinięte do pewnej postaci, funkcja używa do tego {{LinkŚródtytuł|p.InstrukcjeWarunkowe}}, ** {{Code|parametr}} {{Patrz|parametr}} - używany w towarzystwie z {{LinkPatrz|warunkowe}}, mówiący że, derektywy znakowe ciągłe otoczone dwoma dolnymi myślnikami, zostaną zastąpione odpowiedmimi szablonami, w przeciwnym wypadku niepodania tej wartości lub jego pustej, wtedy te derektywy zostaną zastąpione w postaci rozwiniętej tych szablonów. ** Funkcja w tym warunku zwraca ciąg znaków rozwiniętego warunku. Funkcja posiada też mikroszablony, które są zdefiniowane w kodzie łańcuchów {{LinkPatrz|tab_lancuch}}: * {{Code|<nowiki>{{min}}</nowiki>}} - minimalna wartość szeregu zmiennych, określana przez {{LinkPatrz|minimum}}, * {{Code|<nowiki>{{max}}</nowiki>}} - a tutaj ich maksymalna, określana przez {{LinkPatrz|maksimum}}. Te dwie zmienne są podstawiane do uzyskanego ciągu. Funkcja zwraca te części rozwiniętego tekstu wikikodu, jeśli podano {{LinkPatrz|warunkowe}}, co do instrukcji warunkowych i te bez wewnętrznych klamerek - specjalne kody, czyki te otoczone z dwóch stron dolnumi myślnikami, a pozostałe część jest za to nierozwinięta. == {{Śródtytuł|p.InstrukcjeWarunkowe}}{{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}} {{Patrz|ciag}} - podany ciąg do rozwinięcia z instrukcji warunkowych wewnątrz nie posiadający klamerek, * {{Code|derektywy_specjalne}} {{Patrz|derektywy_specjalne}} - używa do zastępowania specjalnych derektyw, podane po prawej stronie w ramce pływającej, * {{Code|derektywy_parametrowe}} {{Patrz|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: {{LinkŚródtytuł|BudowaSzereguZDanych}}, poprzez: {{LinkŚródtytuł|p.Powtarzaj}}. 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 == === {{Śródtytuł|p.RozpakujArgumenty}}{{Code|p.RozpakujArgumenty}} === Funkcje uruchamia się 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. === {{Śródtytuł|p.PakujParametry}}{{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> Parametry funkcji: * {{Code|args}} {{Patrz|args}} - tablica {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. 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}}, z użyciem funkcji: {{LzLua|mw.text.jsonEncode}}, z drugim parametrem: {{Code|mw.text.JSON_PRESERVE_KEYS}} {{Patrz|mw.text.JSON_PRESERVE_KEYS}}. === {{Śródtytuł|p.RozpakujParametry}}{{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 w niej zwracany. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.RozpakujParametry = function (zmienna_z_parametrami) return mw.text.jsonDecode(zmienna_z_parametrami,mw.text.JSON_PRESERVE_KEYS); end; </syntaxhighlight> Parametry funkcji: * {{Code|zmienna_z_parametrami}} {{Patrz|zmienna_z_parametrami}} - tablica {{Code|JSON}}. 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}}, z użyciem funkcji: {{LzLua|mw.text.jsonDecode}}, z użzyciem drugiego parametru: {{LinkPatrz|mw.text.JSON_PRESERVE_KEYS}}. == {{Śródtytuł|p["Rozwiń"]}}{{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> Parameetry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon rozwija wikikod podany w zmiennej {{Code|1}}, w parametrach szablonu rodzica. * 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}}: <syntaxhighlight lang="lua"> p["Rozwiń"] = function(frame) return frame:getParent():preprocess(frame.args[1]); end; </syntaxhighlight> == {{Śródtytuł|p.Log}}{{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> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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}}: <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 == === {{Śródtytuł|p.Szablon}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p.Szablon = function(frame) return ParserBlokowy(frame,0); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Szablon|Nazwa=<nazwa szablonu>|...}} </syntaxhighlight> === {{Śródtytuł|p["Moduł"]}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p["Moduł"] = function(frame) return ParserBlokowy(frame,1); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Moduł|Nazwa=<nazwa modułu>|Funkcja=<nazwa funkcji>|...}} </syntaxhighlight> === {{Śródtytuł|p.Parser}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p.Parser = function(frame) return ParserBlokowy(frame,2); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Parser|Nazwa=<nazwa parsera>|...}} </syntaxhighlight> == Funkcje książkowe == === {{Śródtytuł|p.Q}}{{Code|p.Q}} === Funkcja uruchamia szablon o podanej nazwie w pierwszym parametrze z przedrostkiem {{Code|Książka:}} przed nazwą szablonu. Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.Q =function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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ą (parametry nazwane, które są wliczane 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}}}} === {{Śródtytuł|p.N}}{{Code|p.N}} === Funkcja uruchamiana we wnętrzu szablonu {{s|N}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on. Funkcja przed nazwą szablonu, czy modułu, zostawia w wpis w postaci przedrostka {{Code|Książka:}}. Czy zostanie dodana przed tym nazwa przestrzeni nazw, to zależy od niepodania niepustej zmiennej {{Parametr|n}}, a zmienna {{Parametr|p|1}} - to przed nim jest dodawana przestrzeń nazw szablonu {{Np|Template|link=tak}}, {{Parametr|p|2}} - modułu {{Np|Module|link=tak}} i {{Parametr|p|3}} - kategorii. Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.N=function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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}}}} === {{Śródtytuł|p.A}}{{Code|p.A}} === Funkcja uruchamiana we wnętrzu szablonu {{s|A}}, która przyjmuje jego parametry, i tak samo działa, jak on. Funkcja usuwa przedrostek {{Code|Książka:}} w nazwie szablonu, czy modułu. Gdy jest podany parametr: {{Parametr|p|tak}}, to dla przestrzeni niebędących: {{Np|Template|link=tak}}, {{Np|Module|link=tak}} i {{Np|Category|link=tak}}, jest zwracany wtedy przez nią parametr pierwszy fukcji, dla tych wartości właśnie wyliczonych przestrzeni usuwany jest przedristek {{Code|Książka:}}. Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.A=function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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 == === {{Śródtytuł|p.Powtarzaj}}{{Code|p.Powtarzaj}} === Funkcja służy do powtarzalnego generowania wikikodu ze składników jego kroku przy pomocy określonych zmiennych rodzica. * Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.Powtarzaj = function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Funkcja może przyjmować tylko parametry nienazwane albo tylko nazwane, albo nienazwane i nazwane (gdy jest ustawiony parametr {{Code|różne}} {{Patrz|różne}}). 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}} {{LinkPatrz|różne}}, która wtedy ma wskazywać na wartość niepustą. ; Najważniejsze parametry, które są to opcjonalne, to są{{dk}} * {{Code|start}} {{Patrz|start}} - liczba, która wskazuje początek liczenia - domyślna wartość to {{Code|1}}, * {{Code|koniec}} {{Patrz|koniec}} - liczba, która wskazuje koniec liczenia. ; Numer końca liczenia parametrów nienazwanych lub nazwanych, czy nazwanychi nienazwanych{{dk}} * Elementy w {{Code|parametry}} {{Patrz|parametry}} mogą modyfikować odpowiednio parametry: {{LinkPatrz|start}} i {{LinkPatrz|koniec}}. * Ze zmiennej {{LinkPatrz|parametry}} jest liczona odpowiednia zmienna {{LinkPatrz|tabela}} dopuzczalnych zmiennych do liczenia. * Funkcja {{Code|Wylicz_skoncz_na_koncu}},którego algorytm podomy w tej poyzcji, tzn. koniec liczenia parametrów nienazwanych musi być policzony, jeżeli nie ma parametrów nazwanych w tabeli {{Code|tabela}} {{Patrz|tabela}}. A przeciwnie, jeżeli nie jest ustawiony parametr {{Code|różne}} {{LinkPatrz|różne}} nie na wartość niepustą, wtedy jest liczony parametr maksimum parametrów nazwanych, przeciwnie wtedy liczy się parametr maksimum numeracyjne parametrów numerowanych, czyli zmienną: {{Code|maksimum numeracyjne}} {{Patrz|maksimum numeracyjne}}, jeśli on ma wartość niepustą, wtedy liczy się maksimum parametrów nienazwanych, a jeżeli ona ma przeciwną wartość, to się liczy maksimum parametrów nazwanych, jak nienazwanych. Na podstawie tego mamy policzony odpowiednio taki koniec liczenia modyfikacji zwracany i policzony przez tą funkcję. ; Parametr {{Code|dodatkowe}}{{dk}} * To maksimum parametrów nazwanych, dla jakieś podstawy parametrów, są pomijane parametry z: {{Code|dodatkowe}}, która jest zestawem podstaw parametrów oddzielonych średnikami, jest właśnie podany ten parametr w nim. Przykładem jego jest: * {{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. ; Format parametru {{Parametr|parametry}}{{dk}} * 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 równa liczbie {{Code|5}}, oddzielonych średnikami. ; Opis parametru {{Parametr|parametry}}{{dk}} 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 w wartościach: {{Code|zmienna 1>}}, {{Code|<zmienna 2>}} i {{Code|<zmienna 3>}}, w których są pewne nazwy bazowe parametrów bez numerka na jej końcu, w zmiennej {{Code|parametry}} można nie podawać dalszych elementów 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ć nawet tego znaku,gdy nic nie ma po równa się) dla danego problemu funkcji. ; Wikikod pojedynczego kroku liczenia całości wygenerowanego wikikodu dla wszystkich zmiennych{{dk}} * 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)}}. ; Parametr {{Parametr|start}}, wartość początkowa{{dk}} * Gdy parametr {{Code|tonumber(frame.args["start"]) or 1}}, jest równy zero, funkcja zwraca błąd: {{Code|(początek jest ustawiony na zero)}}. ; Brak parametrów szablonu{{dk}} * 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. ; Parametr {{Parametr|nic}}{{dk}} * Gdy {{Code|nic}} przyjmuje wartość, i gdy pomijamy parametr, lub on przyjmuje wartość pustą, wtedy a funkcja nie może wygenerować żadnego kroku iteracji, to wtedy jest zwracana wartość parametru {{Code|nic}} lub ciąg pusty. ; Inne parametry{{dk}} * Parametr {{Code|po kolei}} {{Patrz|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|zaznacz}} {{Patrz|zaznacz}} - liczby oddzielone średnikami, które przy parametrach nazwanych o pewnych numerach i numerkach nie mają być uwzględnione przy niepustym parametrze {{Code|po kolei}} {{LinkPatrz|po kolei}}, a przy jego przeciwnej wartości za to mają być użyte. * 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}} {{Patrz|_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 wikikodami, wtedy ta funkcja używa do tego liczenia{{dk}} * Jest to funkcja {{LinkŚródtytuł|BudowaSzereguZDanych}}. * Wywołanie funkcji jest takie: {{Pre|lancuch_znakow {{=}} BudowaSzereguZDanych(frame,tab_lancuch,minimum or 0,maksimum);}} ; Parametry funkcji {{LinkŚródtytuł|BudowaSzereguZDanych}}. * One są wraz z jego parametrami podane w postaci jego parametrów ramki {{Code|frame}}, które jednocześnie są parametrami {{LinkŚródtytuł|p.Powtarzaj}}, używa się je 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ą {{LzLua|frame:preprocess}}, i jest zwracany jako wartość omawianej funkcji. ; Przykłady{{dk}} * Funkcja jest używana np. w silnikach szablonów, np.: {{s|Osobny artykuł/silnik}} szablonu {{s|Osobny artykuł}}, jak i do niego 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}}. === {{Śródtytuł|p.PowtarzajOdDo}}{{Code|p.PowtarzajOdDo}} === Funkcja służy do iteracji od jakieś liczby do jakieś iteracji podanego wikikkodu o podanym kroku, co zmienną {{Code|krok}}. 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{{dk}} * {{Code|start}} - początek iteracji dokonywany przez ta funkcję, * {{Code|koniec}} - koniec iteracji dokonywany przez ta funkcję, * {{Code|krok}} - krok iteracji, co który numer 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{{dk}} * {{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}}{{dk}} * {{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{{dk}} * {{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. === {{Śródtytuł|p["PrzetwarzajIterującCiąg"]}}{{Code|p["PrzetwarzajIterującCiąg"]}} === Funkcja do iteracji wikikodu po parametrach oddzielonych średniami w parametrze ramki {{Code|cią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{{dk}} * {{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{{dk}} * {{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}}{{dk}} * {{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>}} jest kolejny parametr, oddzielonych od pozastałych średniami, z: {{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}}: {{LzLua|frame:preprocess}}, jeśli: {{Code|nie rozwiń}}, nie przybiera wartości niepustej. === {{Śródtytuł|p["PowtarzajWedług"]}}{{Code|p["PowtarzajWedług"]}} === Funkcja wyszukująca elementy według wzoru począwszy od numeru, określonego przez {{Code|start}}, aż do zakończenia danych kolenych sprawdzania od tej liczby, czy taka strona istnieje, numerek jest określony przez pewien wikikod, określony przez {{Code|<nowiki>{{_}}</nowiki>}}, którymusi być podany we wzorze {{Code|wzor}}. Ona w ten sposób dla istniejących stron ustawia pewne łańcuchy, które są łączone znakami {{Code|", "}}, a na końcu samym {{Code|" i "}}. 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/{{((}}_{{))}}}}{{dk}} * {{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}}}} == {{Śródtytuł|p["LiczbaPrawychUkośników"]}}{{Code|p["LiczbaPrawychUkośników"]}} == Funkcja liczy, ile jest prawych ukośników w adresie strony podany jako pierwszy parametr ramki. 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. ; Parametry fubkcji{{dk}} * {{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}}}} == {{Śródtytuł|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}}{{Code|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}} == Funkcja liczy maksymalny numer kolejnej strony liczonej według wzoru {{Code|wzor}}, musi być we wzorze podany element {{Code|<nowiki>{{_}}</nowiki>}}, aby mógł to robić. 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/{{((}}_{{))}}}}. : Parametry funkcji{{dk}} * {{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 == === {{Śródtytuł|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}}{{Code|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}} === Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy minimalny numer takiej zmiennej. * 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*)}}. ; Parametry funkcji{{dk}} * {{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}}}} === {{Śródtytuł|p.IleJestTakichOdpowiednikowychZmiennych}}{{Code|p.IleJestTakichOdpowiednikowychZmiennych}} === Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy ile jest takich zmiennych. * 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. ; Parametry funkcji{{dk}} * {{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}}}} == {{Śródtytuł|p["Parametr w tablicy nazw"]}}{{Code|p["Parametr w tablicy nazw"]}} == Funkcja bada, czy jest taki parametr {{Code|pozycja}} w tablicy nazw określonej zmienną {{Code|parametry}}, której elementy są oddzielone średnikami. * 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. ; Parametry funkcji{{dk}} * {{Code|parametry}} - lista parametrów oddzielonych średnikiem, * {{Code|pozycja}} - szukana lista w tablicy parametrów, * {{Code|od dużej}} - czy parametr: {{Code|pozycja}}, i elementy listy: {{Code|parametry}}, 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}}, a to ostatnie jest to wartość języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, która po transformacji na wikikod jest zamieniana na ciąg pusty, więc ona nadaje się do instrukcji warunkowych. === 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> kg2zjzloy3cqidmvo0yv0v4luc29uhr 553387 553386 2026-08-29T19:48:24Z Persino 2851 /* {{Śródtytuł|p["PowtarzajWedług"]}}{{Code|p["PowtarzajWedług"]}} */ 553387 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 == === {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} === Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, tylko w module {{Code|{{ld2|Ramka}}}}, szablonów, modułów i parserów w ramce. Uruchamiana jest przez funkcje: {{LinkŚródtytuł|p.Szablon}} - funkcja do uruchamiania szablonów, {{LinkŚródtytuł|p["Moduł"]}} - funkcja do uruchamiania modułów, i {{LinkŚródtytuł|p.Parser}} - funkcja do uruchamiania parserów. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ParserBlokowy(frame, co_ma_wywolac)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} {{Patrz|frame}} - funkcja ramkki funkcji tablica transportu modułu, * {{Code|co_ma_wywolac}} {{Patrz|co_ma_wywolac}} - ten parametr przyjmuje wartość liczbową, która jeżeli {{Tt|0}} - to uruchamiany jest szablon, jeżeli {{Tt|1}} - moduł, jeżeli {{Code|2}} - to parser, jeżeli on ma inne wartości, tzn.: {{Tt|2}}, a {{Tt|3}} i dalej, to już dany szablon. ; Parametry funkcji ramki: * Parametry podstawowe: ** {{Code|Nazwa}} {{Patrz|Nazwa}} - jest to pełna nazwa szablonu, modułu, czy parsera, ** {{Code|bez argumentów rodzica}} {{Patrz|bez argumentów rodzica}} - tablica parametrów oddzielonych średnikami, których obiekt uruchamiany nie może przyjmować, nawet jeżeli one są, ** {{Code|nazwa szablonu rodzica}} {{Patrz|nazwa szablonu rodzica}} - jest to zmienna przechowująca nazwę szablonu rodzica ramki dziecka,a nawet któreś z jego przodków, ** {{Code|bez argumentów nienazwanych rodzica}} {{Patrz|bez argumentów nienazwanych rodzica}} - szablon w ramce nie przyjmuje parametrów nienazwanych, określonych liczbą, podanych w rodzicu ramki, ** {{Code|potomek}} {{Patrz|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}} {{Patrz|nie potomek}} - zmienna mówiąca, że to nie jest potomek szablonu, używana, gdy nie jest określona zmienna ramki {{LinkPatrz|zmienna z parametrami rodzica}}, wtedy taka ramka jest traktowana jak normalna ramka, której jedynie trzeba przekazać parametry rodzica, nie przodka, wtedy do niej nie są przekazywane parametry: {{LinkPatrz|parametry rodzica}} (ta zmienna jest wtedy ustawiana, gdy nie jest niepusty parametr {{LinkPatrz|bez dodatkowych sprawdzeń}}), {{LinkPatrz|bez argumentów szablonu}}, i {{LinkPatrz|nazwa szablonu rodzica}} (jeśli ta wartość rodzica nie istnieje, to nadawana jest jej aktualna nazwa szablonu rodzica, a nie przodka, normalnie jest to przodka, a w szczególności rodzica) i {{LinkPatrz|potomek}} (ustawiany na stałą wartość niepustą), ** {{Code|bez argumentów szablonu}} {{Patrz|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ń}} {{Patrz|bez dodatkowych sprawdzeń}} - nie jest uruchamiana walidacja parametrów szablonu rodzica, ** {{Code|parametry rodzica}} {{Patrz|parametry rodzica}} - zmienna przedstawiająca parametry rodzica, czy któreś ze przodków, przekazane do ramki: {{m|Sprawdź|Parametry}} - dodane przez tę funkcję, ** {{Code|zmienna z parametrami rodzica}} {{Patrz|zmienna z parametrami rodzica}} - parametr mówiący, czy ma tworzyć zmienne z parametrami rodzica {{LinkPatrz|parametry rodzica}}, a jeżeli nie jest on, z zadnych z jego potomków podany, to zmienna {{LinkPatrz|parametry rodzica}} jest przekazywana na kolejnego przodka, ** {{Code|zmienna z argumentami ramki}} {{Patrz|zmienna z argumentami ramki}} - zmienna mówiąca, czy mają być tworzone parametry ramki, które nie są sprawdzane 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}} {{Patrz|zmienna z nazwą szablonu rodzica}} - parametr, czy ma tworzyć zmienną: {{LinkPatrz|nazwa szablonu rodzica}}, ** {{Code|parametry funkcji modułu pudełek}} {{Patrz|parametry funkcji modułu pudełek}} - czy do funkcji mają wchodzić parametry modułu pudełek, które są ponumerowane dodatkowym numerkiem, ** {{Code|parametry podstawowe funkcji modułu pudełek}} {{Patrz|parametry podstawowe funkcji modułu pudełek}} - czy do funkcji mają wchodzić podstawowe parametry funkcji modułu pudełek, te które nie mają dodatkowego numerka, ** {{Code|usuń z parametrów ramki}} {{Patrz|usuń z parametrów ramki}} - parametry ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, przedstawiający zmienne oddzielone średnikami, które nie mają być uwzględnione przy uruchamianiu danego obiektu. * {{Code|Funkcja}} {{Patrz|Funkcja}} - nazwa funkcji w module, który ma wywołać w ramce ta funkcja, w przypadku, gdy parametr {{LinkPatrz|co_ma_wywolac}} ma wartość {{Tt|1}}, czyli wywołujemy funkcję {{LinkŚródtytuł|p["Moduł"]}}. Funkcja uruchamia szablon, moduł, czy ramkę, w zależności od drugiego parametru funkcji, z parametrami rodzica ramki bez parametrów opisanych zmienną: {{LinkPatrz|bez argumentów szablonu}}, i bez parametrów wskazanych przez zmienną: {{Code|usuń z parametrów ramki}}. Za pomocą tej funkcji możemy wielopoziomowo wywoływać funkcje przekazując parametry od najwyższego poziomu do najniższego. Ta funkcja służy przede wszystkim 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 do uruchamiania szablonów, a uruchamianie funkcji modułu, w tym funkcji {{m|Cytuj|custom}} w szablonie {{s|PrzypisStrona}}. Przykładem wywołania szablonu, która jest w szablonie: {{s|Wzór}}, w którym jest wywoływany inny szablon, tym razem silnik, tzn. {{s|Wzór/silnik}}: <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> === {{Śródtytuł|BudowaSzereguZDanych}}{{Code|BudowaSzereguZDanych}} === Funkcja do uruchamiania się 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> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tab_lancuch}} {{Patrz|tab_lancuch}} - pewna tablica transportu funkcji. * Zmienne do mikroszablonów: ** {{Code|minimum}} {{Patrz|minimum}} - liczba mówiąca o minimum, ** {{Code|maksimum}} {{Patrz|maksimum}} - liczba mówiąca o maksimum. Parametry ramki funkcji tablicy transportu modułu: * {{Code|akapit}} {{Patrz|akapit}} - jeśli niepusta, to ona definiuje akapit ze znaków {{Code|\n\n}}, przeciwnym wypadku elementy łańcucha nie są łączone w akapity, * {{Code|przecinek}} {{Patrz|przecinek}} - jeśli niepuste, to mówi, że pomiędzy elementami powiniem być przecinek: {{Code|", "}}, został on specjalnie objęty w cudzysłowy, aby zilustrować, że po przecinku znajduje się spacja, * {{Code|nowa linia}} {{Patrz|nowa linia}} - w przeciwieństwo do zmiennej {{LinkPatrz|akapit}}, używany zamiast niej, pisze jedną nową linię, a nie dwie, jako: {{Code|\n}}, * {{Code|wyliczanka}} {{Patrz|wyliczanka}} - wylicza elementy z przecinkami, stawiając przed ostatnim elementem zamiast jego wyraz wyliczania {{Code|i}}, * {{Code|początek}} {{Patrz|początek}} - mówi, że na początku musi znajdować się przecinek, * {{Code|myślnik}} {{Patrz|myślnik}} - mówi, że jeśli nie ma początku przecinka, to stawiany jest myślnik, używany zamiast {{LinkPatrz|początek}}, * {{Code|warunkowe}} {{Patrz|warunkowe}} - instrukcje wikikodu, takie jak: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}, zostaną w kodzie rozwinięte, a później ciągłe właściwe elementy wikikodu otoczone dwoma dolnymi myślnikami zostaną rozwinięte do pewnej postaci, funkcja używa do tego {{LinkŚródtytuł|p.InstrukcjeWarunkowe}}, ** {{Code|parametr}} {{Patrz|parametr}} - używany w towarzystwie z {{LinkPatrz|warunkowe}}, mówiący że, derektywy znakowe ciągłe otoczone dwoma dolnymi myślnikami, zostaną zastąpione odpowiedmimi szablonami, w przeciwnym wypadku niepodania tej wartości lub jego pustej, wtedy te derektywy zostaną zastąpione w postaci rozwiniętej tych szablonów. ** Funkcja w tym warunku zwraca ciąg znaków rozwiniętego warunku. Funkcja posiada też mikroszablony, które są zdefiniowane w kodzie łańcuchów {{LinkPatrz|tab_lancuch}}: * {{Code|<nowiki>{{min}}</nowiki>}} - minimalna wartość szeregu zmiennych, określana przez {{LinkPatrz|minimum}}, * {{Code|<nowiki>{{max}}</nowiki>}} - a tutaj ich maksymalna, określana przez {{LinkPatrz|maksimum}}. Te dwie zmienne są podstawiane do uzyskanego ciągu. Funkcja zwraca te części rozwiniętego tekstu wikikodu, jeśli podano {{LinkPatrz|warunkowe}}, co do instrukcji warunkowych i te bez wewnętrznych klamerek - specjalne kody, czyki te otoczone z dwóch stron dolnumi myślnikami, a pozostałe część jest za to nierozwinięta. == {{Śródtytuł|p.InstrukcjeWarunkowe}}{{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}} {{Patrz|ciag}} - podany ciąg do rozwinięcia z instrukcji warunkowych wewnątrz nie posiadający klamerek, * {{Code|derektywy_specjalne}} {{Patrz|derektywy_specjalne}} - używa do zastępowania specjalnych derektyw, podane po prawej stronie w ramce pływającej, * {{Code|derektywy_parametrowe}} {{Patrz|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: {{LinkŚródtytuł|BudowaSzereguZDanych}}, poprzez: {{LinkŚródtytuł|p.Powtarzaj}}. 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 == === {{Śródtytuł|p.RozpakujArgumenty}}{{Code|p.RozpakujArgumenty}} === Funkcje uruchamia się 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. === {{Śródtytuł|p.PakujParametry}}{{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> Parametry funkcji: * {{Code|args}} {{Patrz|args}} - tablica {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. 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}}, z użyciem funkcji: {{LzLua|mw.text.jsonEncode}}, z drugim parametrem: {{Code|mw.text.JSON_PRESERVE_KEYS}} {{Patrz|mw.text.JSON_PRESERVE_KEYS}}. === {{Śródtytuł|p.RozpakujParametry}}{{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 w niej zwracany. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.RozpakujParametry = function (zmienna_z_parametrami) return mw.text.jsonDecode(zmienna_z_parametrami,mw.text.JSON_PRESERVE_KEYS); end; </syntaxhighlight> Parametry funkcji: * {{Code|zmienna_z_parametrami}} {{Patrz|zmienna_z_parametrami}} - tablica {{Code|JSON}}. 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}}, z użyciem funkcji: {{LzLua|mw.text.jsonDecode}}, z użzyciem drugiego parametru: {{LinkPatrz|mw.text.JSON_PRESERVE_KEYS}}. == {{Śródtytuł|p["Rozwiń"]}}{{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> Parameetry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon rozwija wikikod podany w zmiennej {{Code|1}}, w parametrach szablonu rodzica. * 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}}: <syntaxhighlight lang="lua"> p["Rozwiń"] = function(frame) return frame:getParent():preprocess(frame.args[1]); end; </syntaxhighlight> == {{Śródtytuł|p.Log}}{{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> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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}}: <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 == === {{Śródtytuł|p.Szablon}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p.Szablon = function(frame) return ParserBlokowy(frame,0); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Szablon|Nazwa=<nazwa szablonu>|...}} </syntaxhighlight> === {{Śródtytuł|p["Moduł"]}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p["Moduł"] = function(frame) return ParserBlokowy(frame,1); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Moduł|Nazwa=<nazwa modułu>|Funkcja=<nazwa funkcji>|...}} </syntaxhighlight> === {{Śródtytuł|p.Parser}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p.Parser = function(frame) return ParserBlokowy(frame,2); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Parser|Nazwa=<nazwa parsera>|...}} </syntaxhighlight> == Funkcje książkowe == === {{Śródtytuł|p.Q}}{{Code|p.Q}} === Funkcja uruchamia szablon o podanej nazwie w pierwszym parametrze z przedrostkiem {{Code|Książka:}} przed nazwą szablonu. Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.Q =function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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ą (parametry nazwane, które są wliczane 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}}}} === {{Śródtytuł|p.N}}{{Code|p.N}} === Funkcja uruchamiana we wnętrzu szablonu {{s|N}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on. Funkcja przed nazwą szablonu, czy modułu, zostawia w wpis w postaci przedrostka {{Code|Książka:}}. Czy zostanie dodana przed tym nazwa przestrzeni nazw, to zależy od niepodania niepustej zmiennej {{Parametr|n}}, a zmienna {{Parametr|p|1}} - to przed nim jest dodawana przestrzeń nazw szablonu {{Np|Template|link=tak}}, {{Parametr|p|2}} - modułu {{Np|Module|link=tak}} i {{Parametr|p|3}} - kategorii. Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.N=function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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}}}} === {{Śródtytuł|p.A}}{{Code|p.A}} === Funkcja uruchamiana we wnętrzu szablonu {{s|A}}, która przyjmuje jego parametry, i tak samo działa, jak on. Funkcja usuwa przedrostek {{Code|Książka:}} w nazwie szablonu, czy modułu. Gdy jest podany parametr: {{Parametr|p|tak}}, to dla przestrzeni niebędących: {{Np|Template|link=tak}}, {{Np|Module|link=tak}} i {{Np|Category|link=tak}}, jest zwracany wtedy przez nią parametr pierwszy fukcji, dla tych wartości właśnie wyliczonych przestrzeni usuwany jest przedristek {{Code|Książka:}}. Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.A=function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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 == === {{Śródtytuł|p.Powtarzaj}}{{Code|p.Powtarzaj}} === Funkcja służy do powtarzalnego generowania wikikodu ze składników jego kroku przy pomocy określonych zmiennych rodzica. * Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.Powtarzaj = function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Funkcja może przyjmować tylko parametry nienazwane albo tylko nazwane, albo nienazwane i nazwane (gdy jest ustawiony parametr {{Code|różne}} {{Patrz|różne}}). 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}} {{LinkPatrz|różne}}, która wtedy ma wskazywać na wartość niepustą. ; Najważniejsze parametry, które są to opcjonalne, to są{{dk}} * {{Code|start}} {{Patrz|start}} - liczba, która wskazuje początek liczenia - domyślna wartość to {{Code|1}}, * {{Code|koniec}} {{Patrz|koniec}} - liczba, która wskazuje koniec liczenia. ; Numer końca liczenia parametrów nienazwanych lub nazwanych, czy nazwanychi nienazwanych{{dk}} * Elementy w {{Code|parametry}} {{Patrz|parametry}} mogą modyfikować odpowiednio parametry: {{LinkPatrz|start}} i {{LinkPatrz|koniec}}. * Ze zmiennej {{LinkPatrz|parametry}} jest liczona odpowiednia zmienna {{LinkPatrz|tabela}} dopuzczalnych zmiennych do liczenia. * Funkcja {{Code|Wylicz_skoncz_na_koncu}},którego algorytm podomy w tej poyzcji, tzn. koniec liczenia parametrów nienazwanych musi być policzony, jeżeli nie ma parametrów nazwanych w tabeli {{Code|tabela}} {{Patrz|tabela}}. A przeciwnie, jeżeli nie jest ustawiony parametr {{Code|różne}} {{LinkPatrz|różne}} nie na wartość niepustą, wtedy jest liczony parametr maksimum parametrów nazwanych, przeciwnie wtedy liczy się parametr maksimum numeracyjne parametrów numerowanych, czyli zmienną: {{Code|maksimum numeracyjne}} {{Patrz|maksimum numeracyjne}}, jeśli on ma wartość niepustą, wtedy liczy się maksimum parametrów nienazwanych, a jeżeli ona ma przeciwną wartość, to się liczy maksimum parametrów nazwanych, jak nienazwanych. Na podstawie tego mamy policzony odpowiednio taki koniec liczenia modyfikacji zwracany i policzony przez tą funkcję. ; Parametr {{Code|dodatkowe}}{{dk}} * To maksimum parametrów nazwanych, dla jakieś podstawy parametrów, są pomijane parametry z: {{Code|dodatkowe}}, która jest zestawem podstaw parametrów oddzielonych średnikami, jest właśnie podany ten parametr w nim. Przykładem jego jest: * {{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. ; Format parametru {{Parametr|parametry}}{{dk}} * 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 równa liczbie {{Code|5}}, oddzielonych średnikami. ; Opis parametru {{Parametr|parametry}}{{dk}} 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 w wartościach: {{Code|zmienna 1>}}, {{Code|<zmienna 2>}} i {{Code|<zmienna 3>}}, w których są pewne nazwy bazowe parametrów bez numerka na jej końcu, w zmiennej {{Code|parametry}} można nie podawać dalszych elementów 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ć nawet tego znaku,gdy nic nie ma po równa się) dla danego problemu funkcji. ; Wikikod pojedynczego kroku liczenia całości wygenerowanego wikikodu dla wszystkich zmiennych{{dk}} * 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)}}. ; Parametr {{Parametr|start}}, wartość początkowa{{dk}} * Gdy parametr {{Code|tonumber(frame.args["start"]) or 1}}, jest równy zero, funkcja zwraca błąd: {{Code|(początek jest ustawiony na zero)}}. ; Brak parametrów szablonu{{dk}} * 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. ; Parametr {{Parametr|nic}}{{dk}} * Gdy {{Code|nic}} przyjmuje wartość, i gdy pomijamy parametr, lub on przyjmuje wartość pustą, wtedy a funkcja nie może wygenerować żadnego kroku iteracji, to wtedy jest zwracana wartość parametru {{Code|nic}} lub ciąg pusty. ; Inne parametry{{dk}} * Parametr {{Code|po kolei}} {{Patrz|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|zaznacz}} {{Patrz|zaznacz}} - liczby oddzielone średnikami, które przy parametrach nazwanych o pewnych numerach i numerkach nie mają być uwzględnione przy niepustym parametrze {{Code|po kolei}} {{LinkPatrz|po kolei}}, a przy jego przeciwnej wartości za to mają być użyte. * 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}} {{Patrz|_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 wikikodami, wtedy ta funkcja używa do tego liczenia{{dk}} * Jest to funkcja {{LinkŚródtytuł|BudowaSzereguZDanych}}. * Wywołanie funkcji jest takie: {{Pre|lancuch_znakow {{=}} BudowaSzereguZDanych(frame,tab_lancuch,minimum or 0,maksimum);}} ; Parametry funkcji {{LinkŚródtytuł|BudowaSzereguZDanych}}. * One są wraz z jego parametrami podane w postaci jego parametrów ramki {{Code|frame}}, które jednocześnie są parametrami {{LinkŚródtytuł|p.Powtarzaj}}, używa się je 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ą {{LzLua|frame:preprocess}}, i jest zwracany jako wartość omawianej funkcji. ; Przykłady{{dk}} * Funkcja jest używana np. w silnikach szablonów, np.: {{s|Osobny artykuł/silnik}} szablonu {{s|Osobny artykuł}}, jak i do niego 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}}. === {{Śródtytuł|p.PowtarzajOdDo}}{{Code|p.PowtarzajOdDo}} === Funkcja służy do iteracji od jakieś liczby do jakieś iteracji podanego wikikkodu o podanym kroku, co zmienną {{Code|krok}}. 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{{dk}} * {{Code|start}} - początek iteracji dokonywany przez ta funkcję, * {{Code|koniec}} - koniec iteracji dokonywany przez ta funkcję, * {{Code|krok}} - krok iteracji, co który numer 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{{dk}} * {{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}}{{dk}} * {{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{{dk}} * {{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. === {{Śródtytuł|p["PrzetwarzajIterującCiąg"]}}{{Code|p["PrzetwarzajIterującCiąg"]}} === Funkcja do iteracji wikikodu po parametrach oddzielonych średniami w parametrze ramki {{Code|cią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{{dk}} * {{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{{dk}} * {{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}}{{dk}} * {{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>}} jest kolejny parametr, oddzielonych od pozastałych średniami, z: {{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}}: {{LzLua|frame:preprocess}}, jeśli: {{Code|nie rozwiń}}, nie przybiera wartości niepustej. === {{Śródtytuł|p["PowtarzajWedług"]}}{{Code|p["PowtarzajWedług"]}} === Funkcja wyszukująca elementy według wzoru począwszy od numeru, określonego przez {{Code|start}}, aż do zakończenia danych kolenych sprawdzania od tej liczby, czy taka strona istnieje, numerek jest określony przez pewien wikikod, określony przez {{Code|<nowiki>{{_}}</nowiki>}}, którymusi być podany we wzorze {{Code|wzor}}. Ona w ten sposób dla istniejących stron ustawia pewne łańcuchy, które są łączone znakami {{Code|", "}}, a na końcu samym {{Code|" i "}}. 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 strony{{dk}} {{nobold|„{{Ns:Template}}{{dk}}Polecane książki/”}}, a oto przykład{{dk}}{{nobold|{{Parametr|wzór|{{Ns:Template}}{{dk}}Polecane książki/{{((}}_{{))}}}}}}{{dk}} * {{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}}}} == {{Śródtytuł|p["LiczbaPrawychUkośników"]}}{{Code|p["LiczbaPrawychUkośników"]}} == Funkcja liczy, ile jest prawych ukośników w adresie strony podany jako pierwszy parametr ramki. 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. ; Parametry fubkcji{{dk}} * {{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}}}} == {{Śródtytuł|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}}{{Code|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}} == Funkcja liczy maksymalny numer kolejnej strony liczonej według wzoru {{Code|wzor}}, musi być we wzorze podany element {{Code|<nowiki>{{_}}</nowiki>}}, aby mógł to robić. 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/{{((}}_{{))}}}}. : Parametry funkcji{{dk}} * {{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 == === {{Śródtytuł|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}}{{Code|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}} === Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy minimalny numer takiej zmiennej. * 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*)}}. ; Parametry funkcji{{dk}} * {{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}}}} === {{Śródtytuł|p.IleJestTakichOdpowiednikowychZmiennych}}{{Code|p.IleJestTakichOdpowiednikowychZmiennych}} === Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy ile jest takich zmiennych. * 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. ; Parametry funkcji{{dk}} * {{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}}}} == {{Śródtytuł|p["Parametr w tablicy nazw"]}}{{Code|p["Parametr w tablicy nazw"]}} == Funkcja bada, czy jest taki parametr {{Code|pozycja}} w tablicy nazw określonej zmienną {{Code|parametry}}, której elementy są oddzielone średnikami. * 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. ; Parametry funkcji{{dk}} * {{Code|parametry}} - lista parametrów oddzielonych średnikiem, * {{Code|pozycja}} - szukana lista w tablicy parametrów, * {{Code|od dużej}} - czy parametr: {{Code|pozycja}}, i elementy listy: {{Code|parametry}}, 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}}, a to ostatnie jest to wartość języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, która po transformacji na wikikod jest zamieniana na ciąg pusty, więc ona nadaje się do instrukcji warunkowych. === 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> sgugi7h6red1xhf7mdgwl09wfr03tt7 553388 553387 2026-08-29T19:53:38Z Persino 2851 /* {{Śródtytuł|p.PowtarzajOdDo}}{{Code|p.PowtarzajOdDo}} */ 553388 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 == === {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} === Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, tylko w module {{Code|{{ld2|Ramka}}}}, szablonów, modułów i parserów w ramce. Uruchamiana jest przez funkcje: {{LinkŚródtytuł|p.Szablon}} - funkcja do uruchamiania szablonów, {{LinkŚródtytuł|p["Moduł"]}} - funkcja do uruchamiania modułów, i {{LinkŚródtytuł|p.Parser}} - funkcja do uruchamiania parserów. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ParserBlokowy(frame, co_ma_wywolac)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} {{Patrz|frame}} - funkcja ramkki funkcji tablica transportu modułu, * {{Code|co_ma_wywolac}} {{Patrz|co_ma_wywolac}} - ten parametr przyjmuje wartość liczbową, która jeżeli {{Tt|0}} - to uruchamiany jest szablon, jeżeli {{Tt|1}} - moduł, jeżeli {{Code|2}} - to parser, jeżeli on ma inne wartości, tzn.: {{Tt|2}}, a {{Tt|3}} i dalej, to już dany szablon. ; Parametry funkcji ramki: * Parametry podstawowe: ** {{Code|Nazwa}} {{Patrz|Nazwa}} - jest to pełna nazwa szablonu, modułu, czy parsera, ** {{Code|bez argumentów rodzica}} {{Patrz|bez argumentów rodzica}} - tablica parametrów oddzielonych średnikami, których obiekt uruchamiany nie może przyjmować, nawet jeżeli one są, ** {{Code|nazwa szablonu rodzica}} {{Patrz|nazwa szablonu rodzica}} - jest to zmienna przechowująca nazwę szablonu rodzica ramki dziecka,a nawet któreś z jego przodków, ** {{Code|bez argumentów nienazwanych rodzica}} {{Patrz|bez argumentów nienazwanych rodzica}} - szablon w ramce nie przyjmuje parametrów nienazwanych, określonych liczbą, podanych w rodzicu ramki, ** {{Code|potomek}} {{Patrz|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}} {{Patrz|nie potomek}} - zmienna mówiąca, że to nie jest potomek szablonu, używana, gdy nie jest określona zmienna ramki {{LinkPatrz|zmienna z parametrami rodzica}}, wtedy taka ramka jest traktowana jak normalna ramka, której jedynie trzeba przekazać parametry rodzica, nie przodka, wtedy do niej nie są przekazywane parametry: {{LinkPatrz|parametry rodzica}} (ta zmienna jest wtedy ustawiana, gdy nie jest niepusty parametr {{LinkPatrz|bez dodatkowych sprawdzeń}}), {{LinkPatrz|bez argumentów szablonu}}, i {{LinkPatrz|nazwa szablonu rodzica}} (jeśli ta wartość rodzica nie istnieje, to nadawana jest jej aktualna nazwa szablonu rodzica, a nie przodka, normalnie jest to przodka, a w szczególności rodzica) i {{LinkPatrz|potomek}} (ustawiany na stałą wartość niepustą), ** {{Code|bez argumentów szablonu}} {{Patrz|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ń}} {{Patrz|bez dodatkowych sprawdzeń}} - nie jest uruchamiana walidacja parametrów szablonu rodzica, ** {{Code|parametry rodzica}} {{Patrz|parametry rodzica}} - zmienna przedstawiająca parametry rodzica, czy któreś ze przodków, przekazane do ramki: {{m|Sprawdź|Parametry}} - dodane przez tę funkcję, ** {{Code|zmienna z parametrami rodzica}} {{Patrz|zmienna z parametrami rodzica}} - parametr mówiący, czy ma tworzyć zmienne z parametrami rodzica {{LinkPatrz|parametry rodzica}}, a jeżeli nie jest on, z zadnych z jego potomków podany, to zmienna {{LinkPatrz|parametry rodzica}} jest przekazywana na kolejnego przodka, ** {{Code|zmienna z argumentami ramki}} {{Patrz|zmienna z argumentami ramki}} - zmienna mówiąca, czy mają być tworzone parametry ramki, które nie są sprawdzane 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}} {{Patrz|zmienna z nazwą szablonu rodzica}} - parametr, czy ma tworzyć zmienną: {{LinkPatrz|nazwa szablonu rodzica}}, ** {{Code|parametry funkcji modułu pudełek}} {{Patrz|parametry funkcji modułu pudełek}} - czy do funkcji mają wchodzić parametry modułu pudełek, które są ponumerowane dodatkowym numerkiem, ** {{Code|parametry podstawowe funkcji modułu pudełek}} {{Patrz|parametry podstawowe funkcji modułu pudełek}} - czy do funkcji mają wchodzić podstawowe parametry funkcji modułu pudełek, te które nie mają dodatkowego numerka, ** {{Code|usuń z parametrów ramki}} {{Patrz|usuń z parametrów ramki}} - parametry ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, przedstawiający zmienne oddzielone średnikami, które nie mają być uwzględnione przy uruchamianiu danego obiektu. * {{Code|Funkcja}} {{Patrz|Funkcja}} - nazwa funkcji w module, który ma wywołać w ramce ta funkcja, w przypadku, gdy parametr {{LinkPatrz|co_ma_wywolac}} ma wartość {{Tt|1}}, czyli wywołujemy funkcję {{LinkŚródtytuł|p["Moduł"]}}. Funkcja uruchamia szablon, moduł, czy ramkę, w zależności od drugiego parametru funkcji, z parametrami rodzica ramki bez parametrów opisanych zmienną: {{LinkPatrz|bez argumentów szablonu}}, i bez parametrów wskazanych przez zmienną: {{Code|usuń z parametrów ramki}}. Za pomocą tej funkcji możemy wielopoziomowo wywoływać funkcje przekazując parametry od najwyższego poziomu do najniższego. Ta funkcja służy przede wszystkim 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 do uruchamiania szablonów, a uruchamianie funkcji modułu, w tym funkcji {{m|Cytuj|custom}} w szablonie {{s|PrzypisStrona}}. Przykładem wywołania szablonu, która jest w szablonie: {{s|Wzór}}, w którym jest wywoływany inny szablon, tym razem silnik, tzn. {{s|Wzór/silnik}}: <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> === {{Śródtytuł|BudowaSzereguZDanych}}{{Code|BudowaSzereguZDanych}} === Funkcja do uruchamiania się 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> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tab_lancuch}} {{Patrz|tab_lancuch}} - pewna tablica transportu funkcji. * Zmienne do mikroszablonów: ** {{Code|minimum}} {{Patrz|minimum}} - liczba mówiąca o minimum, ** {{Code|maksimum}} {{Patrz|maksimum}} - liczba mówiąca o maksimum. Parametry ramki funkcji tablicy transportu modułu: * {{Code|akapit}} {{Patrz|akapit}} - jeśli niepusta, to ona definiuje akapit ze znaków {{Code|\n\n}}, przeciwnym wypadku elementy łańcucha nie są łączone w akapity, * {{Code|przecinek}} {{Patrz|przecinek}} - jeśli niepuste, to mówi, że pomiędzy elementami powiniem być przecinek: {{Code|", "}}, został on specjalnie objęty w cudzysłowy, aby zilustrować, że po przecinku znajduje się spacja, * {{Code|nowa linia}} {{Patrz|nowa linia}} - w przeciwieństwo do zmiennej {{LinkPatrz|akapit}}, używany zamiast niej, pisze jedną nową linię, a nie dwie, jako: {{Code|\n}}, * {{Code|wyliczanka}} {{Patrz|wyliczanka}} - wylicza elementy z przecinkami, stawiając przed ostatnim elementem zamiast jego wyraz wyliczania {{Code|i}}, * {{Code|początek}} {{Patrz|początek}} - mówi, że na początku musi znajdować się przecinek, * {{Code|myślnik}} {{Patrz|myślnik}} - mówi, że jeśli nie ma początku przecinka, to stawiany jest myślnik, używany zamiast {{LinkPatrz|początek}}, * {{Code|warunkowe}} {{Patrz|warunkowe}} - instrukcje wikikodu, takie jak: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}, zostaną w kodzie rozwinięte, a później ciągłe właściwe elementy wikikodu otoczone dwoma dolnymi myślnikami zostaną rozwinięte do pewnej postaci, funkcja używa do tego {{LinkŚródtytuł|p.InstrukcjeWarunkowe}}, ** {{Code|parametr}} {{Patrz|parametr}} - używany w towarzystwie z {{LinkPatrz|warunkowe}}, mówiący że, derektywy znakowe ciągłe otoczone dwoma dolnymi myślnikami, zostaną zastąpione odpowiedmimi szablonami, w przeciwnym wypadku niepodania tej wartości lub jego pustej, wtedy te derektywy zostaną zastąpione w postaci rozwiniętej tych szablonów. ** Funkcja w tym warunku zwraca ciąg znaków rozwiniętego warunku. Funkcja posiada też mikroszablony, które są zdefiniowane w kodzie łańcuchów {{LinkPatrz|tab_lancuch}}: * {{Code|<nowiki>{{min}}</nowiki>}} - minimalna wartość szeregu zmiennych, określana przez {{LinkPatrz|minimum}}, * {{Code|<nowiki>{{max}}</nowiki>}} - a tutaj ich maksymalna, określana przez {{LinkPatrz|maksimum}}. Te dwie zmienne są podstawiane do uzyskanego ciągu. Funkcja zwraca te części rozwiniętego tekstu wikikodu, jeśli podano {{LinkPatrz|warunkowe}}, co do instrukcji warunkowych i te bez wewnętrznych klamerek - specjalne kody, czyki te otoczone z dwóch stron dolnumi myślnikami, a pozostałe część jest za to nierozwinięta. == {{Śródtytuł|p.InstrukcjeWarunkowe}}{{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}} {{Patrz|ciag}} - podany ciąg do rozwinięcia z instrukcji warunkowych wewnątrz nie posiadający klamerek, * {{Code|derektywy_specjalne}} {{Patrz|derektywy_specjalne}} - używa do zastępowania specjalnych derektyw, podane po prawej stronie w ramce pływającej, * {{Code|derektywy_parametrowe}} {{Patrz|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: {{LinkŚródtytuł|BudowaSzereguZDanych}}, poprzez: {{LinkŚródtytuł|p.Powtarzaj}}. 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 == === {{Śródtytuł|p.RozpakujArgumenty}}{{Code|p.RozpakujArgumenty}} === Funkcje uruchamia się 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. === {{Śródtytuł|p.PakujParametry}}{{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> Parametry funkcji: * {{Code|args}} {{Patrz|args}} - tablica {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. 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}}, z użyciem funkcji: {{LzLua|mw.text.jsonEncode}}, z drugim parametrem: {{Code|mw.text.JSON_PRESERVE_KEYS}} {{Patrz|mw.text.JSON_PRESERVE_KEYS}}. === {{Śródtytuł|p.RozpakujParametry}}{{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 w niej zwracany. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.RozpakujParametry = function (zmienna_z_parametrami) return mw.text.jsonDecode(zmienna_z_parametrami,mw.text.JSON_PRESERVE_KEYS); end; </syntaxhighlight> Parametry funkcji: * {{Code|zmienna_z_parametrami}} {{Patrz|zmienna_z_parametrami}} - tablica {{Code|JSON}}. 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}}, z użyciem funkcji: {{LzLua|mw.text.jsonDecode}}, z użzyciem drugiego parametru: {{LinkPatrz|mw.text.JSON_PRESERVE_KEYS}}. == {{Śródtytuł|p["Rozwiń"]}}{{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> Parameetry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon rozwija wikikod podany w zmiennej {{Code|1}}, w parametrach szablonu rodzica. * 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}}: <syntaxhighlight lang="lua"> p["Rozwiń"] = function(frame) return frame:getParent():preprocess(frame.args[1]); end; </syntaxhighlight> == {{Śródtytuł|p.Log}}{{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> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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}}: <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 == === {{Śródtytuł|p.Szablon}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p.Szablon = function(frame) return ParserBlokowy(frame,0); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Szablon|Nazwa=<nazwa szablonu>|...}} </syntaxhighlight> === {{Śródtytuł|p["Moduł"]}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p["Moduł"] = function(frame) return ParserBlokowy(frame,1); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Moduł|Nazwa=<nazwa modułu>|Funkcja=<nazwa funkcji>|...}} </syntaxhighlight> === {{Śródtytuł|p.Parser}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p.Parser = function(frame) return ParserBlokowy(frame,2); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Parser|Nazwa=<nazwa parsera>|...}} </syntaxhighlight> == Funkcje książkowe == === {{Śródtytuł|p.Q}}{{Code|p.Q}} === Funkcja uruchamia szablon o podanej nazwie w pierwszym parametrze z przedrostkiem {{Code|Książka:}} przed nazwą szablonu. Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.Q =function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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ą (parametry nazwane, które są wliczane 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}}}} === {{Śródtytuł|p.N}}{{Code|p.N}} === Funkcja uruchamiana we wnętrzu szablonu {{s|N}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on. Funkcja przed nazwą szablonu, czy modułu, zostawia w wpis w postaci przedrostka {{Code|Książka:}}. Czy zostanie dodana przed tym nazwa przestrzeni nazw, to zależy od niepodania niepustej zmiennej {{Parametr|n}}, a zmienna {{Parametr|p|1}} - to przed nim jest dodawana przestrzeń nazw szablonu {{Np|Template|link=tak}}, {{Parametr|p|2}} - modułu {{Np|Module|link=tak}} i {{Parametr|p|3}} - kategorii. Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.N=function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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}}}} === {{Śródtytuł|p.A}}{{Code|p.A}} === Funkcja uruchamiana we wnętrzu szablonu {{s|A}}, która przyjmuje jego parametry, i tak samo działa, jak on. Funkcja usuwa przedrostek {{Code|Książka:}} w nazwie szablonu, czy modułu. Gdy jest podany parametr: {{Parametr|p|tak}}, to dla przestrzeni niebędących: {{Np|Template|link=tak}}, {{Np|Module|link=tak}} i {{Np|Category|link=tak}}, jest zwracany wtedy przez nią parametr pierwszy fukcji, dla tych wartości właśnie wyliczonych przestrzeni usuwany jest przedristek {{Code|Książka:}}. Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.A=function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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 == === {{Śródtytuł|p.Powtarzaj}}{{Code|p.Powtarzaj}} === Funkcja służy do powtarzalnego generowania wikikodu ze składników jego kroku przy pomocy określonych zmiennych rodzica. * Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.Powtarzaj = function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Funkcja może przyjmować tylko parametry nienazwane albo tylko nazwane, albo nienazwane i nazwane (gdy jest ustawiony parametr {{Code|różne}} {{Patrz|różne}}). 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}} {{LinkPatrz|różne}}, która wtedy ma wskazywać na wartość niepustą. ; Najważniejsze parametry, które są to opcjonalne, to są{{dk}} * {{Code|start}} {{Patrz|start}} - liczba, która wskazuje początek liczenia - domyślna wartość to {{Code|1}}, * {{Code|koniec}} {{Patrz|koniec}} - liczba, która wskazuje koniec liczenia. ; Numer końca liczenia parametrów nienazwanych lub nazwanych, czy nazwanychi nienazwanych{{dk}} * Elementy w {{Code|parametry}} {{Patrz|parametry}} mogą modyfikować odpowiednio parametry: {{LinkPatrz|start}} i {{LinkPatrz|koniec}}. * Ze zmiennej {{LinkPatrz|parametry}} jest liczona odpowiednia zmienna {{LinkPatrz|tabela}} dopuzczalnych zmiennych do liczenia. * Funkcja {{Code|Wylicz_skoncz_na_koncu}},którego algorytm podomy w tej poyzcji, tzn. koniec liczenia parametrów nienazwanych musi być policzony, jeżeli nie ma parametrów nazwanych w tabeli {{Code|tabela}} {{Patrz|tabela}}. A przeciwnie, jeżeli nie jest ustawiony parametr {{Code|różne}} {{LinkPatrz|różne}} nie na wartość niepustą, wtedy jest liczony parametr maksimum parametrów nazwanych, przeciwnie wtedy liczy się parametr maksimum numeracyjne parametrów numerowanych, czyli zmienną: {{Code|maksimum numeracyjne}} {{Patrz|maksimum numeracyjne}}, jeśli on ma wartość niepustą, wtedy liczy się maksimum parametrów nienazwanych, a jeżeli ona ma przeciwną wartość, to się liczy maksimum parametrów nazwanych, jak nienazwanych. Na podstawie tego mamy policzony odpowiednio taki koniec liczenia modyfikacji zwracany i policzony przez tą funkcję. ; Parametr {{Code|dodatkowe}}{{dk}} * To maksimum parametrów nazwanych, dla jakieś podstawy parametrów, są pomijane parametry z: {{Code|dodatkowe}}, która jest zestawem podstaw parametrów oddzielonych średnikami, jest właśnie podany ten parametr w nim. Przykładem jego jest: * {{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. ; Format parametru {{Parametr|parametry}}{{dk}} * 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 równa liczbie {{Code|5}}, oddzielonych średnikami. ; Opis parametru {{Parametr|parametry}}{{dk}} 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 w wartościach: {{Code|zmienna 1>}}, {{Code|<zmienna 2>}} i {{Code|<zmienna 3>}}, w których są pewne nazwy bazowe parametrów bez numerka na jej końcu, w zmiennej {{Code|parametry}} można nie podawać dalszych elementów 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ć nawet tego znaku,gdy nic nie ma po równa się) dla danego problemu funkcji. ; Wikikod pojedynczego kroku liczenia całości wygenerowanego wikikodu dla wszystkich zmiennych{{dk}} * 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)}}. ; Parametr {{Parametr|start}}, wartość początkowa{{dk}} * Gdy parametr {{Code|tonumber(frame.args["start"]) or 1}}, jest równy zero, funkcja zwraca błąd: {{Code|(początek jest ustawiony na zero)}}. ; Brak parametrów szablonu{{dk}} * 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. ; Parametr {{Parametr|nic}}{{dk}} * Gdy {{Code|nic}} przyjmuje wartość, i gdy pomijamy parametr, lub on przyjmuje wartość pustą, wtedy a funkcja nie może wygenerować żadnego kroku iteracji, to wtedy jest zwracana wartość parametru {{Code|nic}} lub ciąg pusty. ; Inne parametry{{dk}} * Parametr {{Code|po kolei}} {{Patrz|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|zaznacz}} {{Patrz|zaznacz}} - liczby oddzielone średnikami, które przy parametrach nazwanych o pewnych numerach i numerkach nie mają być uwzględnione przy niepustym parametrze {{Code|po kolei}} {{LinkPatrz|po kolei}}, a przy jego przeciwnej wartości za to mają być użyte. * 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}} {{Patrz|_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 wikikodami, wtedy ta funkcja używa do tego liczenia{{dk}} * Jest to funkcja {{LinkŚródtytuł|BudowaSzereguZDanych}}. * Wywołanie funkcji jest takie: {{Pre|lancuch_znakow {{=}} BudowaSzereguZDanych(frame,tab_lancuch,minimum or 0,maksimum);}} ; Parametry funkcji {{LinkŚródtytuł|BudowaSzereguZDanych}}. * One są wraz z jego parametrami podane w postaci jego parametrów ramki {{Code|frame}}, które jednocześnie są parametrami {{LinkŚródtytuł|p.Powtarzaj}}, używa się je 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ą {{LzLua|frame:preprocess}}, i jest zwracany jako wartość omawianej funkcji. ; Przykłady{{dk}} * Funkcja jest używana np. w silnikach szablonów, np.: {{s|Osobny artykuł/silnik}} szablonu {{s|Osobny artykuł}}, jak i do niego 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}}. === {{Śródtytuł|p.PowtarzajOdDo}}{{Code|p.PowtarzajOdDo}} === Funkcja służy do iteracji od jakieś liczby do jakieś iteracji podanego wikikkodu o podanym kroku, co zmienną {{Code|krok}}. 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ę{{dk}} {{nobold|{{Code|{{m|Ramka|Rozwiń}}}}}}, lub go rozwija na końcu, na podstawie kolejnych kroków iteracji{{dk}} * {{Code|start}} - początek iteracji dokonywany przez ta funkcję, * {{Code|koniec}} - koniec iteracji dokonywany przez ta funkcję, * {{Code|krok}} - krok iteracji, co który numer 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{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}} * {{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ą{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}} * {{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{{dk}} {{nobold|{{s|Chem/silnik}}}}, w tym nadrzędnym{{dk}} {{nobold|{{s|Chem}}}}, przykłady jego działania{{dk}} * {{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. === {{Śródtytuł|p["PrzetwarzajIterującCiąg"]}}{{Code|p["PrzetwarzajIterującCiąg"]}} === Funkcja do iteracji wikikodu po parametrach oddzielonych średniami w parametrze ramki {{Code|cią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{{dk}} * {{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{{dk}} * {{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}}{{dk}} * {{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>}} jest kolejny parametr, oddzielonych od pozastałych średniami, z: {{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}}: {{LzLua|frame:preprocess}}, jeśli: {{Code|nie rozwiń}}, nie przybiera wartości niepustej. === {{Śródtytuł|p["PowtarzajWedług"]}}{{Code|p["PowtarzajWedług"]}} === Funkcja wyszukująca elementy według wzoru począwszy od numeru, określonego przez {{Code|start}}, aż do zakończenia danych kolenych sprawdzania od tej liczby, czy taka strona istnieje, numerek jest określony przez pewien wikikod, określony przez {{Code|<nowiki>{{_}}</nowiki>}}, którymusi być podany we wzorze {{Code|wzor}}. Ona w ten sposób dla istniejących stron ustawia pewne łańcuchy, które są łączone znakami {{Code|", "}}, a na końcu samym {{Code|" i "}}. 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 strony{{dk}} {{nobold|„{{Ns:Template}}{{dk}}Polecane książki/”}}, a oto przykład{{dk}}{{nobold|{{Parametr|wzór|{{Ns:Template}}{{dk}}Polecane książki/{{((}}_{{))}}}}}}{{dk}} * {{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}}}} == {{Śródtytuł|p["LiczbaPrawychUkośników"]}}{{Code|p["LiczbaPrawychUkośników"]}} == Funkcja liczy, ile jest prawych ukośników w adresie strony podany jako pierwszy parametr ramki. 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. ; Parametry fubkcji{{dk}} * {{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}}}} == {{Śródtytuł|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}}{{Code|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}} == Funkcja liczy maksymalny numer kolejnej strony liczonej według wzoru {{Code|wzor}}, musi być we wzorze podany element {{Code|<nowiki>{{_}}</nowiki>}}, aby mógł to robić. 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/{{((}}_{{))}}}}. : Parametry funkcji{{dk}} * {{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 == === {{Śródtytuł|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}}{{Code|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}} === Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy minimalny numer takiej zmiennej. * 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*)}}. ; Parametry funkcji{{dk}} * {{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}}}} === {{Śródtytuł|p.IleJestTakichOdpowiednikowychZmiennych}}{{Code|p.IleJestTakichOdpowiednikowychZmiennych}} === Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy ile jest takich zmiennych. * 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. ; Parametry funkcji{{dk}} * {{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}}}} == {{Śródtytuł|p["Parametr w tablicy nazw"]}}{{Code|p["Parametr w tablicy nazw"]}} == Funkcja bada, czy jest taki parametr {{Code|pozycja}} w tablicy nazw określonej zmienną {{Code|parametry}}, której elementy są oddzielone średnikami. * 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. ; Parametry funkcji{{dk}} * {{Code|parametry}} - lista parametrów oddzielonych średnikiem, * {{Code|pozycja}} - szukana lista w tablicy parametrów, * {{Code|od dużej}} - czy parametr: {{Code|pozycja}}, i elementy listy: {{Code|parametry}}, 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}}, a to ostatnie jest to wartość języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, która po transformacji na wikikod jest zamieniana na ciąg pusty, więc ona nadaje się do instrukcji warunkowych. === 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> kq3hflmy5q34ntz6s5v41lar2y4f7um 553389 553388 2026-08-29T19:55:03Z Persino 2851 /* {{Śródtytuł|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}}{{Code|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}} */ 553389 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 == === {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} === Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, tylko w module {{Code|{{ld2|Ramka}}}}, szablonów, modułów i parserów w ramce. Uruchamiana jest przez funkcje: {{LinkŚródtytuł|p.Szablon}} - funkcja do uruchamiania szablonów, {{LinkŚródtytuł|p["Moduł"]}} - funkcja do uruchamiania modułów, i {{LinkŚródtytuł|p.Parser}} - funkcja do uruchamiania parserów. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ParserBlokowy(frame, co_ma_wywolac)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} {{Patrz|frame}} - funkcja ramkki funkcji tablica transportu modułu, * {{Code|co_ma_wywolac}} {{Patrz|co_ma_wywolac}} - ten parametr przyjmuje wartość liczbową, która jeżeli {{Tt|0}} - to uruchamiany jest szablon, jeżeli {{Tt|1}} - moduł, jeżeli {{Code|2}} - to parser, jeżeli on ma inne wartości, tzn.: {{Tt|2}}, a {{Tt|3}} i dalej, to już dany szablon. ; Parametry funkcji ramki: * Parametry podstawowe: ** {{Code|Nazwa}} {{Patrz|Nazwa}} - jest to pełna nazwa szablonu, modułu, czy parsera, ** {{Code|bez argumentów rodzica}} {{Patrz|bez argumentów rodzica}} - tablica parametrów oddzielonych średnikami, których obiekt uruchamiany nie może przyjmować, nawet jeżeli one są, ** {{Code|nazwa szablonu rodzica}} {{Patrz|nazwa szablonu rodzica}} - jest to zmienna przechowująca nazwę szablonu rodzica ramki dziecka,a nawet któreś z jego przodków, ** {{Code|bez argumentów nienazwanych rodzica}} {{Patrz|bez argumentów nienazwanych rodzica}} - szablon w ramce nie przyjmuje parametrów nienazwanych, określonych liczbą, podanych w rodzicu ramki, ** {{Code|potomek}} {{Patrz|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}} {{Patrz|nie potomek}} - zmienna mówiąca, że to nie jest potomek szablonu, używana, gdy nie jest określona zmienna ramki {{LinkPatrz|zmienna z parametrami rodzica}}, wtedy taka ramka jest traktowana jak normalna ramka, której jedynie trzeba przekazać parametry rodzica, nie przodka, wtedy do niej nie są przekazywane parametry: {{LinkPatrz|parametry rodzica}} (ta zmienna jest wtedy ustawiana, gdy nie jest niepusty parametr {{LinkPatrz|bez dodatkowych sprawdzeń}}), {{LinkPatrz|bez argumentów szablonu}}, i {{LinkPatrz|nazwa szablonu rodzica}} (jeśli ta wartość rodzica nie istnieje, to nadawana jest jej aktualna nazwa szablonu rodzica, a nie przodka, normalnie jest to przodka, a w szczególności rodzica) i {{LinkPatrz|potomek}} (ustawiany na stałą wartość niepustą), ** {{Code|bez argumentów szablonu}} {{Patrz|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ń}} {{Patrz|bez dodatkowych sprawdzeń}} - nie jest uruchamiana walidacja parametrów szablonu rodzica, ** {{Code|parametry rodzica}} {{Patrz|parametry rodzica}} - zmienna przedstawiająca parametry rodzica, czy któreś ze przodków, przekazane do ramki: {{m|Sprawdź|Parametry}} - dodane przez tę funkcję, ** {{Code|zmienna z parametrami rodzica}} {{Patrz|zmienna z parametrami rodzica}} - parametr mówiący, czy ma tworzyć zmienne z parametrami rodzica {{LinkPatrz|parametry rodzica}}, a jeżeli nie jest on, z zadnych z jego potomków podany, to zmienna {{LinkPatrz|parametry rodzica}} jest przekazywana na kolejnego przodka, ** {{Code|zmienna z argumentami ramki}} {{Patrz|zmienna z argumentami ramki}} - zmienna mówiąca, czy mają być tworzone parametry ramki, które nie są sprawdzane 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}} {{Patrz|zmienna z nazwą szablonu rodzica}} - parametr, czy ma tworzyć zmienną: {{LinkPatrz|nazwa szablonu rodzica}}, ** {{Code|parametry funkcji modułu pudełek}} {{Patrz|parametry funkcji modułu pudełek}} - czy do funkcji mają wchodzić parametry modułu pudełek, które są ponumerowane dodatkowym numerkiem, ** {{Code|parametry podstawowe funkcji modułu pudełek}} {{Patrz|parametry podstawowe funkcji modułu pudełek}} - czy do funkcji mają wchodzić podstawowe parametry funkcji modułu pudełek, te które nie mają dodatkowego numerka, ** {{Code|usuń z parametrów ramki}} {{Patrz|usuń z parametrów ramki}} - parametry ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, przedstawiający zmienne oddzielone średnikami, które nie mają być uwzględnione przy uruchamianiu danego obiektu. * {{Code|Funkcja}} {{Patrz|Funkcja}} - nazwa funkcji w module, który ma wywołać w ramce ta funkcja, w przypadku, gdy parametr {{LinkPatrz|co_ma_wywolac}} ma wartość {{Tt|1}}, czyli wywołujemy funkcję {{LinkŚródtytuł|p["Moduł"]}}. Funkcja uruchamia szablon, moduł, czy ramkę, w zależności od drugiego parametru funkcji, z parametrami rodzica ramki bez parametrów opisanych zmienną: {{LinkPatrz|bez argumentów szablonu}}, i bez parametrów wskazanych przez zmienną: {{Code|usuń z parametrów ramki}}. Za pomocą tej funkcji możemy wielopoziomowo wywoływać funkcje przekazując parametry od najwyższego poziomu do najniższego. Ta funkcja służy przede wszystkim 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 do uruchamiania szablonów, a uruchamianie funkcji modułu, w tym funkcji {{m|Cytuj|custom}} w szablonie {{s|PrzypisStrona}}. Przykładem wywołania szablonu, która jest w szablonie: {{s|Wzór}}, w którym jest wywoływany inny szablon, tym razem silnik, tzn. {{s|Wzór/silnik}}: <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> === {{Śródtytuł|BudowaSzereguZDanych}}{{Code|BudowaSzereguZDanych}} === Funkcja do uruchamiania się 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> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tab_lancuch}} {{Patrz|tab_lancuch}} - pewna tablica transportu funkcji. * Zmienne do mikroszablonów: ** {{Code|minimum}} {{Patrz|minimum}} - liczba mówiąca o minimum, ** {{Code|maksimum}} {{Patrz|maksimum}} - liczba mówiąca o maksimum. Parametry ramki funkcji tablicy transportu modułu: * {{Code|akapit}} {{Patrz|akapit}} - jeśli niepusta, to ona definiuje akapit ze znaków {{Code|\n\n}}, przeciwnym wypadku elementy łańcucha nie są łączone w akapity, * {{Code|przecinek}} {{Patrz|przecinek}} - jeśli niepuste, to mówi, że pomiędzy elementami powiniem być przecinek: {{Code|", "}}, został on specjalnie objęty w cudzysłowy, aby zilustrować, że po przecinku znajduje się spacja, * {{Code|nowa linia}} {{Patrz|nowa linia}} - w przeciwieństwo do zmiennej {{LinkPatrz|akapit}}, używany zamiast niej, pisze jedną nową linię, a nie dwie, jako: {{Code|\n}}, * {{Code|wyliczanka}} {{Patrz|wyliczanka}} - wylicza elementy z przecinkami, stawiając przed ostatnim elementem zamiast jego wyraz wyliczania {{Code|i}}, * {{Code|początek}} {{Patrz|początek}} - mówi, że na początku musi znajdować się przecinek, * {{Code|myślnik}} {{Patrz|myślnik}} - mówi, że jeśli nie ma początku przecinka, to stawiany jest myślnik, używany zamiast {{LinkPatrz|początek}}, * {{Code|warunkowe}} {{Patrz|warunkowe}} - instrukcje wikikodu, takie jak: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}, zostaną w kodzie rozwinięte, a później ciągłe właściwe elementy wikikodu otoczone dwoma dolnymi myślnikami zostaną rozwinięte do pewnej postaci, funkcja używa do tego {{LinkŚródtytuł|p.InstrukcjeWarunkowe}}, ** {{Code|parametr}} {{Patrz|parametr}} - używany w towarzystwie z {{LinkPatrz|warunkowe}}, mówiący że, derektywy znakowe ciągłe otoczone dwoma dolnymi myślnikami, zostaną zastąpione odpowiedmimi szablonami, w przeciwnym wypadku niepodania tej wartości lub jego pustej, wtedy te derektywy zostaną zastąpione w postaci rozwiniętej tych szablonów. ** Funkcja w tym warunku zwraca ciąg znaków rozwiniętego warunku. Funkcja posiada też mikroszablony, które są zdefiniowane w kodzie łańcuchów {{LinkPatrz|tab_lancuch}}: * {{Code|<nowiki>{{min}}</nowiki>}} - minimalna wartość szeregu zmiennych, określana przez {{LinkPatrz|minimum}}, * {{Code|<nowiki>{{max}}</nowiki>}} - a tutaj ich maksymalna, określana przez {{LinkPatrz|maksimum}}. Te dwie zmienne są podstawiane do uzyskanego ciągu. Funkcja zwraca te części rozwiniętego tekstu wikikodu, jeśli podano {{LinkPatrz|warunkowe}}, co do instrukcji warunkowych i te bez wewnętrznych klamerek - specjalne kody, czyki te otoczone z dwóch stron dolnumi myślnikami, a pozostałe część jest za to nierozwinięta. == {{Śródtytuł|p.InstrukcjeWarunkowe}}{{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}} {{Patrz|ciag}} - podany ciąg do rozwinięcia z instrukcji warunkowych wewnątrz nie posiadający klamerek, * {{Code|derektywy_specjalne}} {{Patrz|derektywy_specjalne}} - używa do zastępowania specjalnych derektyw, podane po prawej stronie w ramce pływającej, * {{Code|derektywy_parametrowe}} {{Patrz|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: {{LinkŚródtytuł|BudowaSzereguZDanych}}, poprzez: {{LinkŚródtytuł|p.Powtarzaj}}. 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 == === {{Śródtytuł|p.RozpakujArgumenty}}{{Code|p.RozpakujArgumenty}} === Funkcje uruchamia się 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. === {{Śródtytuł|p.PakujParametry}}{{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> Parametry funkcji: * {{Code|args}} {{Patrz|args}} - tablica {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. 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}}, z użyciem funkcji: {{LzLua|mw.text.jsonEncode}}, z drugim parametrem: {{Code|mw.text.JSON_PRESERVE_KEYS}} {{Patrz|mw.text.JSON_PRESERVE_KEYS}}. === {{Śródtytuł|p.RozpakujParametry}}{{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 w niej zwracany. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.RozpakujParametry = function (zmienna_z_parametrami) return mw.text.jsonDecode(zmienna_z_parametrami,mw.text.JSON_PRESERVE_KEYS); end; </syntaxhighlight> Parametry funkcji: * {{Code|zmienna_z_parametrami}} {{Patrz|zmienna_z_parametrami}} - tablica {{Code|JSON}}. 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}}, z użyciem funkcji: {{LzLua|mw.text.jsonDecode}}, z użzyciem drugiego parametru: {{LinkPatrz|mw.text.JSON_PRESERVE_KEYS}}. == {{Śródtytuł|p["Rozwiń"]}}{{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> Parameetry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon rozwija wikikod podany w zmiennej {{Code|1}}, w parametrach szablonu rodzica. * 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}}: <syntaxhighlight lang="lua"> p["Rozwiń"] = function(frame) return frame:getParent():preprocess(frame.args[1]); end; </syntaxhighlight> == {{Śródtytuł|p.Log}}{{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> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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}}: <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 == === {{Śródtytuł|p.Szablon}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p.Szablon = function(frame) return ParserBlokowy(frame,0); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Szablon|Nazwa=<nazwa szablonu>|...}} </syntaxhighlight> === {{Śródtytuł|p["Moduł"]}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p["Moduł"] = function(frame) return ParserBlokowy(frame,1); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Moduł|Nazwa=<nazwa modułu>|Funkcja=<nazwa funkcji>|...}} </syntaxhighlight> === {{Śródtytuł|p.Parser}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p.Parser = function(frame) return ParserBlokowy(frame,2); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Parser|Nazwa=<nazwa parsera>|...}} </syntaxhighlight> == Funkcje książkowe == === {{Śródtytuł|p.Q}}{{Code|p.Q}} === Funkcja uruchamia szablon o podanej nazwie w pierwszym parametrze z przedrostkiem {{Code|Książka:}} przed nazwą szablonu. Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.Q =function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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ą (parametry nazwane, które są wliczane 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}}}} === {{Śródtytuł|p.N}}{{Code|p.N}} === Funkcja uruchamiana we wnętrzu szablonu {{s|N}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on. Funkcja przed nazwą szablonu, czy modułu, zostawia w wpis w postaci przedrostka {{Code|Książka:}}. Czy zostanie dodana przed tym nazwa przestrzeni nazw, to zależy od niepodania niepustej zmiennej {{Parametr|n}}, a zmienna {{Parametr|p|1}} - to przed nim jest dodawana przestrzeń nazw szablonu {{Np|Template|link=tak}}, {{Parametr|p|2}} - modułu {{Np|Module|link=tak}} i {{Parametr|p|3}} - kategorii. Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.N=function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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}}}} === {{Śródtytuł|p.A}}{{Code|p.A}} === Funkcja uruchamiana we wnętrzu szablonu {{s|A}}, która przyjmuje jego parametry, i tak samo działa, jak on. Funkcja usuwa przedrostek {{Code|Książka:}} w nazwie szablonu, czy modułu. Gdy jest podany parametr: {{Parametr|p|tak}}, to dla przestrzeni niebędących: {{Np|Template|link=tak}}, {{Np|Module|link=tak}} i {{Np|Category|link=tak}}, jest zwracany wtedy przez nią parametr pierwszy fukcji, dla tych wartości właśnie wyliczonych przestrzeni usuwany jest przedristek {{Code|Książka:}}. Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.A=function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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 == === {{Śródtytuł|p.Powtarzaj}}{{Code|p.Powtarzaj}} === Funkcja służy do powtarzalnego generowania wikikodu ze składników jego kroku przy pomocy określonych zmiennych rodzica. * Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.Powtarzaj = function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Funkcja może przyjmować tylko parametry nienazwane albo tylko nazwane, albo nienazwane i nazwane (gdy jest ustawiony parametr {{Code|różne}} {{Patrz|różne}}). 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}} {{LinkPatrz|różne}}, która wtedy ma wskazywać na wartość niepustą. ; Najważniejsze parametry, które są to opcjonalne, to są{{dk}} * {{Code|start}} {{Patrz|start}} - liczba, która wskazuje początek liczenia - domyślna wartość to {{Code|1}}, * {{Code|koniec}} {{Patrz|koniec}} - liczba, która wskazuje koniec liczenia. ; Numer końca liczenia parametrów nienazwanych lub nazwanych, czy nazwanychi nienazwanych{{dk}} * Elementy w {{Code|parametry}} {{Patrz|parametry}} mogą modyfikować odpowiednio parametry: {{LinkPatrz|start}} i {{LinkPatrz|koniec}}. * Ze zmiennej {{LinkPatrz|parametry}} jest liczona odpowiednia zmienna {{LinkPatrz|tabela}} dopuzczalnych zmiennych do liczenia. * Funkcja {{Code|Wylicz_skoncz_na_koncu}},którego algorytm podomy w tej poyzcji, tzn. koniec liczenia parametrów nienazwanych musi być policzony, jeżeli nie ma parametrów nazwanych w tabeli {{Code|tabela}} {{Patrz|tabela}}. A przeciwnie, jeżeli nie jest ustawiony parametr {{Code|różne}} {{LinkPatrz|różne}} nie na wartość niepustą, wtedy jest liczony parametr maksimum parametrów nazwanych, przeciwnie wtedy liczy się parametr maksimum numeracyjne parametrów numerowanych, czyli zmienną: {{Code|maksimum numeracyjne}} {{Patrz|maksimum numeracyjne}}, jeśli on ma wartość niepustą, wtedy liczy się maksimum parametrów nienazwanych, a jeżeli ona ma przeciwną wartość, to się liczy maksimum parametrów nazwanych, jak nienazwanych. Na podstawie tego mamy policzony odpowiednio taki koniec liczenia modyfikacji zwracany i policzony przez tą funkcję. ; Parametr {{Code|dodatkowe}}{{dk}} * To maksimum parametrów nazwanych, dla jakieś podstawy parametrów, są pomijane parametry z: {{Code|dodatkowe}}, która jest zestawem podstaw parametrów oddzielonych średnikami, jest właśnie podany ten parametr w nim. Przykładem jego jest: * {{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. ; Format parametru {{Parametr|parametry}}{{dk}} * 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 równa liczbie {{Code|5}}, oddzielonych średnikami. ; Opis parametru {{Parametr|parametry}}{{dk}} 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 w wartościach: {{Code|zmienna 1>}}, {{Code|<zmienna 2>}} i {{Code|<zmienna 3>}}, w których są pewne nazwy bazowe parametrów bez numerka na jej końcu, w zmiennej {{Code|parametry}} można nie podawać dalszych elementów 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ć nawet tego znaku,gdy nic nie ma po równa się) dla danego problemu funkcji. ; Wikikod pojedynczego kroku liczenia całości wygenerowanego wikikodu dla wszystkich zmiennych{{dk}} * 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)}}. ; Parametr {{Parametr|start}}, wartość początkowa{{dk}} * Gdy parametr {{Code|tonumber(frame.args["start"]) or 1}}, jest równy zero, funkcja zwraca błąd: {{Code|(początek jest ustawiony na zero)}}. ; Brak parametrów szablonu{{dk}} * 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. ; Parametr {{Parametr|nic}}{{dk}} * Gdy {{Code|nic}} przyjmuje wartość, i gdy pomijamy parametr, lub on przyjmuje wartość pustą, wtedy a funkcja nie może wygenerować żadnego kroku iteracji, to wtedy jest zwracana wartość parametru {{Code|nic}} lub ciąg pusty. ; Inne parametry{{dk}} * Parametr {{Code|po kolei}} {{Patrz|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|zaznacz}} {{Patrz|zaznacz}} - liczby oddzielone średnikami, które przy parametrach nazwanych o pewnych numerach i numerkach nie mają być uwzględnione przy niepustym parametrze {{Code|po kolei}} {{LinkPatrz|po kolei}}, a przy jego przeciwnej wartości za to mają być użyte. * 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}} {{Patrz|_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 wikikodami, wtedy ta funkcja używa do tego liczenia{{dk}} * Jest to funkcja {{LinkŚródtytuł|BudowaSzereguZDanych}}. * Wywołanie funkcji jest takie: {{Pre|lancuch_znakow {{=}} BudowaSzereguZDanych(frame,tab_lancuch,minimum or 0,maksimum);}} ; Parametry funkcji {{LinkŚródtytuł|BudowaSzereguZDanych}}. * One są wraz z jego parametrami podane w postaci jego parametrów ramki {{Code|frame}}, które jednocześnie są parametrami {{LinkŚródtytuł|p.Powtarzaj}}, używa się je 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ą {{LzLua|frame:preprocess}}, i jest zwracany jako wartość omawianej funkcji. ; Przykłady{{dk}} * Funkcja jest używana np. w silnikach szablonów, np.: {{s|Osobny artykuł/silnik}} szablonu {{s|Osobny artykuł}}, jak i do niego 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}}. === {{Śródtytuł|p.PowtarzajOdDo}}{{Code|p.PowtarzajOdDo}} === Funkcja służy do iteracji od jakieś liczby do jakieś iteracji podanego wikikkodu o podanym kroku, co zmienną {{Code|krok}}. 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ę{{dk}} {{nobold|{{Code|{{m|Ramka|Rozwiń}}}}}}, lub go rozwija na końcu, na podstawie kolejnych kroków iteracji{{dk}} * {{Code|start}} - początek iteracji dokonywany przez ta funkcję, * {{Code|koniec}} - koniec iteracji dokonywany przez ta funkcję, * {{Code|krok}} - krok iteracji, co który numer 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{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}} * {{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ą{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}} * {{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{{dk}} {{nobold|{{s|Chem/silnik}}}}, w tym nadrzędnym{{dk}} {{nobold|{{s|Chem}}}}, przykłady jego działania{{dk}} * {{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. === {{Śródtytuł|p["PrzetwarzajIterującCiąg"]}}{{Code|p["PrzetwarzajIterującCiąg"]}} === Funkcja do iteracji wikikodu po parametrach oddzielonych średniami w parametrze ramki {{Code|cią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{{dk}} * {{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{{dk}} * {{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}}{{dk}} * {{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>}} jest kolejny parametr, oddzielonych od pozastałych średniami, z: {{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}}: {{LzLua|frame:preprocess}}, jeśli: {{Code|nie rozwiń}}, nie przybiera wartości niepustej. === {{Śródtytuł|p["PowtarzajWedług"]}}{{Code|p["PowtarzajWedług"]}} === Funkcja wyszukująca elementy według wzoru począwszy od numeru, określonego przez {{Code|start}}, aż do zakończenia danych kolenych sprawdzania od tej liczby, czy taka strona istnieje, numerek jest określony przez pewien wikikod, określony przez {{Code|<nowiki>{{_}}</nowiki>}}, którymusi być podany we wzorze {{Code|wzor}}. Ona w ten sposób dla istniejących stron ustawia pewne łańcuchy, które są łączone znakami {{Code|", "}}, a na końcu samym {{Code|" i "}}. 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 strony{{dk}} {{nobold|„{{Ns:Template}}{{dk}}Polecane książki/”}}, a oto przykład{{dk}}{{nobold|{{Parametr|wzór|{{Ns:Template}}{{dk}}Polecane książki/{{((}}_{{))}}}}}}{{dk}} * {{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}}}} == {{Śródtytuł|p["LiczbaPrawychUkośników"]}}{{Code|p["LiczbaPrawychUkośników"]}} == Funkcja liczy, ile jest prawych ukośników w adresie strony podany jako pierwszy parametr ramki. 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. ; Parametry fubkcji{{dk}} * {{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}}}} == {{Śródtytuł|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}}{{Code|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}} == Funkcja liczy maksymalny numer kolejnej strony liczonej według wzoru {{Code|wzor}}, musi być we wzorze podany element {{Code|<nowiki>{{_}}</nowiki>}}, aby mógł to robić. 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/”, czyli dla stron o ogólnym wzorze: {{Parametr|wzór|{{Ns:Template}}:Polecane książki/{{((}}_{{))}}}}. ; Parametry funkcji{{dk}} * {{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 == === {{Śródtytuł|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}}{{Code|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}} === Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy minimalny numer takiej zmiennej. * 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*)}}. ; Parametry funkcji{{dk}} * {{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}}}} === {{Śródtytuł|p.IleJestTakichOdpowiednikowychZmiennych}}{{Code|p.IleJestTakichOdpowiednikowychZmiennych}} === Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy ile jest takich zmiennych. * 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. ; Parametry funkcji{{dk}} * {{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}}}} == {{Śródtytuł|p["Parametr w tablicy nazw"]}}{{Code|p["Parametr w tablicy nazw"]}} == Funkcja bada, czy jest taki parametr {{Code|pozycja}} w tablicy nazw określonej zmienną {{Code|parametry}}, której elementy są oddzielone średnikami. * 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. ; Parametry funkcji{{dk}} * {{Code|parametry}} - lista parametrów oddzielonych średnikiem, * {{Code|pozycja}} - szukana lista w tablicy parametrów, * {{Code|od dużej}} - czy parametr: {{Code|pozycja}}, i elementy listy: {{Code|parametry}}, 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}}, a to ostatnie jest to wartość języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, która po transformacji na wikikod jest zamieniana na ciąg pusty, więc ona nadaje się do instrukcji warunkowych. === 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> 74eksud95455cgv2tmkk0pwb3n6pofu 553390 553389 2026-08-29T19:56:55Z Persino 2851 /* {{Śródtytuł|p["PrzetwarzajIterującCiąg"]}}{{Code|p["PrzetwarzajIterującCiąg"]}} */ 553390 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 == === {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} === Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, tylko w module {{Code|{{ld2|Ramka}}}}, szablonów, modułów i parserów w ramce. Uruchamiana jest przez funkcje: {{LinkŚródtytuł|p.Szablon}} - funkcja do uruchamiania szablonów, {{LinkŚródtytuł|p["Moduł"]}} - funkcja do uruchamiania modułów, i {{LinkŚródtytuł|p.Parser}} - funkcja do uruchamiania parserów. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ParserBlokowy(frame, co_ma_wywolac)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} {{Patrz|frame}} - funkcja ramkki funkcji tablica transportu modułu, * {{Code|co_ma_wywolac}} {{Patrz|co_ma_wywolac}} - ten parametr przyjmuje wartość liczbową, która jeżeli {{Tt|0}} - to uruchamiany jest szablon, jeżeli {{Tt|1}} - moduł, jeżeli {{Code|2}} - to parser, jeżeli on ma inne wartości, tzn.: {{Tt|2}}, a {{Tt|3}} i dalej, to już dany szablon. ; Parametry funkcji ramki: * Parametry podstawowe: ** {{Code|Nazwa}} {{Patrz|Nazwa}} - jest to pełna nazwa szablonu, modułu, czy parsera, ** {{Code|bez argumentów rodzica}} {{Patrz|bez argumentów rodzica}} - tablica parametrów oddzielonych średnikami, których obiekt uruchamiany nie może przyjmować, nawet jeżeli one są, ** {{Code|nazwa szablonu rodzica}} {{Patrz|nazwa szablonu rodzica}} - jest to zmienna przechowująca nazwę szablonu rodzica ramki dziecka,a nawet któreś z jego przodków, ** {{Code|bez argumentów nienazwanych rodzica}} {{Patrz|bez argumentów nienazwanych rodzica}} - szablon w ramce nie przyjmuje parametrów nienazwanych, określonych liczbą, podanych w rodzicu ramki, ** {{Code|potomek}} {{Patrz|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}} {{Patrz|nie potomek}} - zmienna mówiąca, że to nie jest potomek szablonu, używana, gdy nie jest określona zmienna ramki {{LinkPatrz|zmienna z parametrami rodzica}}, wtedy taka ramka jest traktowana jak normalna ramka, której jedynie trzeba przekazać parametry rodzica, nie przodka, wtedy do niej nie są przekazywane parametry: {{LinkPatrz|parametry rodzica}} (ta zmienna jest wtedy ustawiana, gdy nie jest niepusty parametr {{LinkPatrz|bez dodatkowych sprawdzeń}}), {{LinkPatrz|bez argumentów szablonu}}, i {{LinkPatrz|nazwa szablonu rodzica}} (jeśli ta wartość rodzica nie istnieje, to nadawana jest jej aktualna nazwa szablonu rodzica, a nie przodka, normalnie jest to przodka, a w szczególności rodzica) i {{LinkPatrz|potomek}} (ustawiany na stałą wartość niepustą), ** {{Code|bez argumentów szablonu}} {{Patrz|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ń}} {{Patrz|bez dodatkowych sprawdzeń}} - nie jest uruchamiana walidacja parametrów szablonu rodzica, ** {{Code|parametry rodzica}} {{Patrz|parametry rodzica}} - zmienna przedstawiająca parametry rodzica, czy któreś ze przodków, przekazane do ramki: {{m|Sprawdź|Parametry}} - dodane przez tę funkcję, ** {{Code|zmienna z parametrami rodzica}} {{Patrz|zmienna z parametrami rodzica}} - parametr mówiący, czy ma tworzyć zmienne z parametrami rodzica {{LinkPatrz|parametry rodzica}}, a jeżeli nie jest on, z zadnych z jego potomków podany, to zmienna {{LinkPatrz|parametry rodzica}} jest przekazywana na kolejnego przodka, ** {{Code|zmienna z argumentami ramki}} {{Patrz|zmienna z argumentami ramki}} - zmienna mówiąca, czy mają być tworzone parametry ramki, które nie są sprawdzane 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}} {{Patrz|zmienna z nazwą szablonu rodzica}} - parametr, czy ma tworzyć zmienną: {{LinkPatrz|nazwa szablonu rodzica}}, ** {{Code|parametry funkcji modułu pudełek}} {{Patrz|parametry funkcji modułu pudełek}} - czy do funkcji mają wchodzić parametry modułu pudełek, które są ponumerowane dodatkowym numerkiem, ** {{Code|parametry podstawowe funkcji modułu pudełek}} {{Patrz|parametry podstawowe funkcji modułu pudełek}} - czy do funkcji mają wchodzić podstawowe parametry funkcji modułu pudełek, te które nie mają dodatkowego numerka, ** {{Code|usuń z parametrów ramki}} {{Patrz|usuń z parametrów ramki}} - parametry ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, przedstawiający zmienne oddzielone średnikami, które nie mają być uwzględnione przy uruchamianiu danego obiektu. * {{Code|Funkcja}} {{Patrz|Funkcja}} - nazwa funkcji w module, który ma wywołać w ramce ta funkcja, w przypadku, gdy parametr {{LinkPatrz|co_ma_wywolac}} ma wartość {{Tt|1}}, czyli wywołujemy funkcję {{LinkŚródtytuł|p["Moduł"]}}. Funkcja uruchamia szablon, moduł, czy ramkę, w zależności od drugiego parametru funkcji, z parametrami rodzica ramki bez parametrów opisanych zmienną: {{LinkPatrz|bez argumentów szablonu}}, i bez parametrów wskazanych przez zmienną: {{Code|usuń z parametrów ramki}}. Za pomocą tej funkcji możemy wielopoziomowo wywoływać funkcje przekazując parametry od najwyższego poziomu do najniższego. Ta funkcja służy przede wszystkim 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 do uruchamiania szablonów, a uruchamianie funkcji modułu, w tym funkcji {{m|Cytuj|custom}} w szablonie {{s|PrzypisStrona}}. Przykładem wywołania szablonu, która jest w szablonie: {{s|Wzór}}, w którym jest wywoływany inny szablon, tym razem silnik, tzn. {{s|Wzór/silnik}}: <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> === {{Śródtytuł|BudowaSzereguZDanych}}{{Code|BudowaSzereguZDanych}} === Funkcja do uruchamiania się 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> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tab_lancuch}} {{Patrz|tab_lancuch}} - pewna tablica transportu funkcji. * Zmienne do mikroszablonów: ** {{Code|minimum}} {{Patrz|minimum}} - liczba mówiąca o minimum, ** {{Code|maksimum}} {{Patrz|maksimum}} - liczba mówiąca o maksimum. Parametry ramki funkcji tablicy transportu modułu: * {{Code|akapit}} {{Patrz|akapit}} - jeśli niepusta, to ona definiuje akapit ze znaków {{Code|\n\n}}, przeciwnym wypadku elementy łańcucha nie są łączone w akapity, * {{Code|przecinek}} {{Patrz|przecinek}} - jeśli niepuste, to mówi, że pomiędzy elementami powiniem być przecinek: {{Code|", "}}, został on specjalnie objęty w cudzysłowy, aby zilustrować, że po przecinku znajduje się spacja, * {{Code|nowa linia}} {{Patrz|nowa linia}} - w przeciwieństwo do zmiennej {{LinkPatrz|akapit}}, używany zamiast niej, pisze jedną nową linię, a nie dwie, jako: {{Code|\n}}, * {{Code|wyliczanka}} {{Patrz|wyliczanka}} - wylicza elementy z przecinkami, stawiając przed ostatnim elementem zamiast jego wyraz wyliczania {{Code|i}}, * {{Code|początek}} {{Patrz|początek}} - mówi, że na początku musi znajdować się przecinek, * {{Code|myślnik}} {{Patrz|myślnik}} - mówi, że jeśli nie ma początku przecinka, to stawiany jest myślnik, używany zamiast {{LinkPatrz|początek}}, * {{Code|warunkowe}} {{Patrz|warunkowe}} - instrukcje wikikodu, takie jak: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}, zostaną w kodzie rozwinięte, a później ciągłe właściwe elementy wikikodu otoczone dwoma dolnymi myślnikami zostaną rozwinięte do pewnej postaci, funkcja używa do tego {{LinkŚródtytuł|p.InstrukcjeWarunkowe}}, ** {{Code|parametr}} {{Patrz|parametr}} - używany w towarzystwie z {{LinkPatrz|warunkowe}}, mówiący że, derektywy znakowe ciągłe otoczone dwoma dolnymi myślnikami, zostaną zastąpione odpowiedmimi szablonami, w przeciwnym wypadku niepodania tej wartości lub jego pustej, wtedy te derektywy zostaną zastąpione w postaci rozwiniętej tych szablonów. ** Funkcja w tym warunku zwraca ciąg znaków rozwiniętego warunku. Funkcja posiada też mikroszablony, które są zdefiniowane w kodzie łańcuchów {{LinkPatrz|tab_lancuch}}: * {{Code|<nowiki>{{min}}</nowiki>}} - minimalna wartość szeregu zmiennych, określana przez {{LinkPatrz|minimum}}, * {{Code|<nowiki>{{max}}</nowiki>}} - a tutaj ich maksymalna, określana przez {{LinkPatrz|maksimum}}. Te dwie zmienne są podstawiane do uzyskanego ciągu. Funkcja zwraca te części rozwiniętego tekstu wikikodu, jeśli podano {{LinkPatrz|warunkowe}}, co do instrukcji warunkowych i te bez wewnętrznych klamerek - specjalne kody, czyki te otoczone z dwóch stron dolnumi myślnikami, a pozostałe część jest za to nierozwinięta. == {{Śródtytuł|p.InstrukcjeWarunkowe}}{{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}} {{Patrz|ciag}} - podany ciąg do rozwinięcia z instrukcji warunkowych wewnątrz nie posiadający klamerek, * {{Code|derektywy_specjalne}} {{Patrz|derektywy_specjalne}} - używa do zastępowania specjalnych derektyw, podane po prawej stronie w ramce pływającej, * {{Code|derektywy_parametrowe}} {{Patrz|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: {{LinkŚródtytuł|BudowaSzereguZDanych}}, poprzez: {{LinkŚródtytuł|p.Powtarzaj}}. 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 == === {{Śródtytuł|p.RozpakujArgumenty}}{{Code|p.RozpakujArgumenty}} === Funkcje uruchamia się 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. === {{Śródtytuł|p.PakujParametry}}{{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> Parametry funkcji: * {{Code|args}} {{Patrz|args}} - tablica {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. 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}}, z użyciem funkcji: {{LzLua|mw.text.jsonEncode}}, z drugim parametrem: {{Code|mw.text.JSON_PRESERVE_KEYS}} {{Patrz|mw.text.JSON_PRESERVE_KEYS}}. === {{Śródtytuł|p.RozpakujParametry}}{{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 w niej zwracany. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.RozpakujParametry = function (zmienna_z_parametrami) return mw.text.jsonDecode(zmienna_z_parametrami,mw.text.JSON_PRESERVE_KEYS); end; </syntaxhighlight> Parametry funkcji: * {{Code|zmienna_z_parametrami}} {{Patrz|zmienna_z_parametrami}} - tablica {{Code|JSON}}. 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}}, z użyciem funkcji: {{LzLua|mw.text.jsonDecode}}, z użzyciem drugiego parametru: {{LinkPatrz|mw.text.JSON_PRESERVE_KEYS}}. == {{Śródtytuł|p["Rozwiń"]}}{{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> Parameetry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon rozwija wikikod podany w zmiennej {{Code|1}}, w parametrach szablonu rodzica. * 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}}: <syntaxhighlight lang="lua"> p["Rozwiń"] = function(frame) return frame:getParent():preprocess(frame.args[1]); end; </syntaxhighlight> == {{Śródtytuł|p.Log}}{{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> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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}}: <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 == === {{Śródtytuł|p.Szablon}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p.Szablon = function(frame) return ParserBlokowy(frame,0); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Szablon|Nazwa=<nazwa szablonu>|...}} </syntaxhighlight> === {{Śródtytuł|p["Moduł"]}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p["Moduł"] = function(frame) return ParserBlokowy(frame,1); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Moduł|Nazwa=<nazwa modułu>|Funkcja=<nazwa funkcji>|...}} </syntaxhighlight> === {{Śródtytuł|p.Parser}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p.Parser = function(frame) return ParserBlokowy(frame,2); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Parser|Nazwa=<nazwa parsera>|...}} </syntaxhighlight> == Funkcje książkowe == === {{Śródtytuł|p.Q}}{{Code|p.Q}} === Funkcja uruchamia szablon o podanej nazwie w pierwszym parametrze z przedrostkiem {{Code|Książka:}} przed nazwą szablonu. Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.Q =function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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ą (parametry nazwane, które są wliczane 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}}}} === {{Śródtytuł|p.N}}{{Code|p.N}} === Funkcja uruchamiana we wnętrzu szablonu {{s|N}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on. Funkcja przed nazwą szablonu, czy modułu, zostawia w wpis w postaci przedrostka {{Code|Książka:}}. Czy zostanie dodana przed tym nazwa przestrzeni nazw, to zależy od niepodania niepustej zmiennej {{Parametr|n}}, a zmienna {{Parametr|p|1}} - to przed nim jest dodawana przestrzeń nazw szablonu {{Np|Template|link=tak}}, {{Parametr|p|2}} - modułu {{Np|Module|link=tak}} i {{Parametr|p|3}} - kategorii. Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.N=function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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}}}} === {{Śródtytuł|p.A}}{{Code|p.A}} === Funkcja uruchamiana we wnętrzu szablonu {{s|A}}, która przyjmuje jego parametry, i tak samo działa, jak on. Funkcja usuwa przedrostek {{Code|Książka:}} w nazwie szablonu, czy modułu. Gdy jest podany parametr: {{Parametr|p|tak}}, to dla przestrzeni niebędących: {{Np|Template|link=tak}}, {{Np|Module|link=tak}} i {{Np|Category|link=tak}}, jest zwracany wtedy przez nią parametr pierwszy fukcji, dla tych wartości właśnie wyliczonych przestrzeni usuwany jest przedristek {{Code|Książka:}}. Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.A=function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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 == === {{Śródtytuł|p.Powtarzaj}}{{Code|p.Powtarzaj}} === Funkcja służy do powtarzalnego generowania wikikodu ze składników jego kroku przy pomocy określonych zmiennych rodzica. * Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.Powtarzaj = function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Funkcja może przyjmować tylko parametry nienazwane albo tylko nazwane, albo nienazwane i nazwane (gdy jest ustawiony parametr {{Code|różne}} {{Patrz|różne}}). 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}} {{LinkPatrz|różne}}, która wtedy ma wskazywać na wartość niepustą. ; Najważniejsze parametry, które są to opcjonalne, to są{{dk}} * {{Code|start}} {{Patrz|start}} - liczba, która wskazuje początek liczenia - domyślna wartość to {{Code|1}}, * {{Code|koniec}} {{Patrz|koniec}} - liczba, która wskazuje koniec liczenia. ; Numer końca liczenia parametrów nienazwanych lub nazwanych, czy nazwanychi nienazwanych{{dk}} * Elementy w {{Code|parametry}} {{Patrz|parametry}} mogą modyfikować odpowiednio parametry: {{LinkPatrz|start}} i {{LinkPatrz|koniec}}. * Ze zmiennej {{LinkPatrz|parametry}} jest liczona odpowiednia zmienna {{LinkPatrz|tabela}} dopuzczalnych zmiennych do liczenia. * Funkcja {{Code|Wylicz_skoncz_na_koncu}},którego algorytm podomy w tej poyzcji, tzn. koniec liczenia parametrów nienazwanych musi być policzony, jeżeli nie ma parametrów nazwanych w tabeli {{Code|tabela}} {{Patrz|tabela}}. A przeciwnie, jeżeli nie jest ustawiony parametr {{Code|różne}} {{LinkPatrz|różne}} nie na wartość niepustą, wtedy jest liczony parametr maksimum parametrów nazwanych, przeciwnie wtedy liczy się parametr maksimum numeracyjne parametrów numerowanych, czyli zmienną: {{Code|maksimum numeracyjne}} {{Patrz|maksimum numeracyjne}}, jeśli on ma wartość niepustą, wtedy liczy się maksimum parametrów nienazwanych, a jeżeli ona ma przeciwną wartość, to się liczy maksimum parametrów nazwanych, jak nienazwanych. Na podstawie tego mamy policzony odpowiednio taki koniec liczenia modyfikacji zwracany i policzony przez tą funkcję. ; Parametr {{Code|dodatkowe}}{{dk}} * To maksimum parametrów nazwanych, dla jakieś podstawy parametrów, są pomijane parametry z: {{Code|dodatkowe}}, która jest zestawem podstaw parametrów oddzielonych średnikami, jest właśnie podany ten parametr w nim. Przykładem jego jest: * {{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. ; Format parametru {{Parametr|parametry}}{{dk}} * 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 równa liczbie {{Code|5}}, oddzielonych średnikami. ; Opis parametru {{Parametr|parametry}}{{dk}} 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 w wartościach: {{Code|zmienna 1>}}, {{Code|<zmienna 2>}} i {{Code|<zmienna 3>}}, w których są pewne nazwy bazowe parametrów bez numerka na jej końcu, w zmiennej {{Code|parametry}} można nie podawać dalszych elementów 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ć nawet tego znaku,gdy nic nie ma po równa się) dla danego problemu funkcji. ; Wikikod pojedynczego kroku liczenia całości wygenerowanego wikikodu dla wszystkich zmiennych{{dk}} * 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)}}. ; Parametr {{Parametr|start}}, wartość początkowa{{dk}} * Gdy parametr {{Code|tonumber(frame.args["start"]) or 1}}, jest równy zero, funkcja zwraca błąd: {{Code|(początek jest ustawiony na zero)}}. ; Brak parametrów szablonu{{dk}} * 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. ; Parametr {{Parametr|nic}}{{dk}} * Gdy {{Code|nic}} przyjmuje wartość, i gdy pomijamy parametr, lub on przyjmuje wartość pustą, wtedy a funkcja nie może wygenerować żadnego kroku iteracji, to wtedy jest zwracana wartość parametru {{Code|nic}} lub ciąg pusty. ; Inne parametry{{dk}} * Parametr {{Code|po kolei}} {{Patrz|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|zaznacz}} {{Patrz|zaznacz}} - liczby oddzielone średnikami, które przy parametrach nazwanych o pewnych numerach i numerkach nie mają być uwzględnione przy niepustym parametrze {{Code|po kolei}} {{LinkPatrz|po kolei}}, a przy jego przeciwnej wartości za to mają być użyte. * 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}} {{Patrz|_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 wikikodami, wtedy ta funkcja używa do tego liczenia{{dk}} * Jest to funkcja {{LinkŚródtytuł|BudowaSzereguZDanych}}. * Wywołanie funkcji jest takie: {{Pre|lancuch_znakow {{=}} BudowaSzereguZDanych(frame,tab_lancuch,minimum or 0,maksimum);}} ; Parametry funkcji {{LinkŚródtytuł|BudowaSzereguZDanych}}. * One są wraz z jego parametrami podane w postaci jego parametrów ramki {{Code|frame}}, które jednocześnie są parametrami {{LinkŚródtytuł|p.Powtarzaj}}, używa się je 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ą {{LzLua|frame:preprocess}}, i jest zwracany jako wartość omawianej funkcji. ; Przykłady{{dk}} * Funkcja jest używana np. w silnikach szablonów, np.: {{s|Osobny artykuł/silnik}} szablonu {{s|Osobny artykuł}}, jak i do niego 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}}. === {{Śródtytuł|p.PowtarzajOdDo}}{{Code|p.PowtarzajOdDo}} === Funkcja służy do iteracji od jakieś liczby do jakieś iteracji podanego wikikkodu o podanym kroku, co zmienną {{Code|krok}}. 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ę{{dk}} {{nobold|{{Code|{{m|Ramka|Rozwiń}}}}}}, lub go rozwija na końcu, na podstawie kolejnych kroków iteracji{{dk}} * {{Code|start}} - początek iteracji dokonywany przez ta funkcję, * {{Code|koniec}} - koniec iteracji dokonywany przez ta funkcję, * {{Code|krok}} - krok iteracji, co który numer 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{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}} * {{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ą{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}} * {{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{{dk}} {{nobold|{{s|Chem/silnik}}}}, w tym nadrzędnym{{dk}} {{nobold|{{s|Chem}}}}, przykłady jego działania{{dk}} * {{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. === {{Śródtytuł|p["PrzetwarzajIterującCiąg"]}}{{Code|p["PrzetwarzajIterującCiąg"]}} === Funkcja do iteracji wikikodu po parametrach oddzielonych średniami w parametrze ramki {{Code|cią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{{dk}} * {{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{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}} * {{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ą{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}} * {{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>}} jest kolejny parametr, oddzielonych od pozastałych średniami, z: {{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}}: {{LzLua|frame:preprocess}}, jeśli: {{Code|nie rozwiń}}, nie przybiera wartości niepustej. === {{Śródtytuł|p["PowtarzajWedług"]}}{{Code|p["PowtarzajWedług"]}} === Funkcja wyszukująca elementy według wzoru począwszy od numeru, określonego przez {{Code|start}}, aż do zakończenia danych kolenych sprawdzania od tej liczby, czy taka strona istnieje, numerek jest określony przez pewien wikikod, określony przez {{Code|<nowiki>{{_}}</nowiki>}}, którymusi być podany we wzorze {{Code|wzor}}. Ona w ten sposób dla istniejących stron ustawia pewne łańcuchy, które są łączone znakami {{Code|", "}}, a na końcu samym {{Code|" i "}}. 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 strony{{dk}} {{nobold|„{{Ns:Template}}{{dk}}Polecane książki/”}}, a oto przykład{{dk}}{{nobold|{{Parametr|wzór|{{Ns:Template}}{{dk}}Polecane książki/{{((}}_{{))}}}}}}{{dk}} * {{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}}}} == {{Śródtytuł|p["LiczbaPrawychUkośników"]}}{{Code|p["LiczbaPrawychUkośników"]}} == Funkcja liczy, ile jest prawych ukośników w adresie strony podany jako pierwszy parametr ramki. 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. ; Parametry fubkcji{{dk}} * {{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}}}} == {{Śródtytuł|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}}{{Code|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}} == Funkcja liczy maksymalny numer kolejnej strony liczonej według wzoru {{Code|wzor}}, musi być we wzorze podany element {{Code|<nowiki>{{_}}</nowiki>}}, aby mógł to robić. 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/”, czyli dla stron o ogólnym wzorze: {{Parametr|wzór|{{Ns:Template}}:Polecane książki/{{((}}_{{))}}}}. ; Parametry funkcji{{dk}} * {{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 == === {{Śródtytuł|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}}{{Code|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}} === Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy minimalny numer takiej zmiennej. * 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*)}}. ; Parametry funkcji{{dk}} * {{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}}}} === {{Śródtytuł|p.IleJestTakichOdpowiednikowychZmiennych}}{{Code|p.IleJestTakichOdpowiednikowychZmiennych}} === Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy ile jest takich zmiennych. * 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. ; Parametry funkcji{{dk}} * {{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}}}} == {{Śródtytuł|p["Parametr w tablicy nazw"]}}{{Code|p["Parametr w tablicy nazw"]}} == Funkcja bada, czy jest taki parametr {{Code|pozycja}} w tablicy nazw określonej zmienną {{Code|parametry}}, której elementy są oddzielone średnikami. * 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. ; Parametry funkcji{{dk}} * {{Code|parametry}} - lista parametrów oddzielonych średnikiem, * {{Code|pozycja}} - szukana lista w tablicy parametrów, * {{Code|od dużej}} - czy parametr: {{Code|pozycja}}, i elementy listy: {{Code|parametry}}, 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}}, a to ostatnie jest to wartość języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, która po transformacji na wikikod jest zamieniana na ciąg pusty, więc ona nadaje się do instrukcji warunkowych. === 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> 5iofspd6rkl4y5x4gab2eycqlb3vin3 553391 553390 2026-08-29T19:59:49Z Persino 2851 /* {{Śródtytuł|p.PowtarzajOdDo}}{{Code|p.PowtarzajOdDo}} */ 553391 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 == === {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} === Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, tylko w module {{Code|{{ld2|Ramka}}}}, szablonów, modułów i parserów w ramce. Uruchamiana jest przez funkcje: {{LinkŚródtytuł|p.Szablon}} - funkcja do uruchamiania szablonów, {{LinkŚródtytuł|p["Moduł"]}} - funkcja do uruchamiania modułów, i {{LinkŚródtytuł|p.Parser}} - funkcja do uruchamiania parserów. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ParserBlokowy(frame, co_ma_wywolac)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} {{Patrz|frame}} - funkcja ramkki funkcji tablica transportu modułu, * {{Code|co_ma_wywolac}} {{Patrz|co_ma_wywolac}} - ten parametr przyjmuje wartość liczbową, która jeżeli {{Tt|0}} - to uruchamiany jest szablon, jeżeli {{Tt|1}} - moduł, jeżeli {{Code|2}} - to parser, jeżeli on ma inne wartości, tzn.: {{Tt|2}}, a {{Tt|3}} i dalej, to już dany szablon. ; Parametry funkcji ramki: * Parametry podstawowe: ** {{Code|Nazwa}} {{Patrz|Nazwa}} - jest to pełna nazwa szablonu, modułu, czy parsera, ** {{Code|bez argumentów rodzica}} {{Patrz|bez argumentów rodzica}} - tablica parametrów oddzielonych średnikami, których obiekt uruchamiany nie może przyjmować, nawet jeżeli one są, ** {{Code|nazwa szablonu rodzica}} {{Patrz|nazwa szablonu rodzica}} - jest to zmienna przechowująca nazwę szablonu rodzica ramki dziecka,a nawet któreś z jego przodków, ** {{Code|bez argumentów nienazwanych rodzica}} {{Patrz|bez argumentów nienazwanych rodzica}} - szablon w ramce nie przyjmuje parametrów nienazwanych, określonych liczbą, podanych w rodzicu ramki, ** {{Code|potomek}} {{Patrz|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}} {{Patrz|nie potomek}} - zmienna mówiąca, że to nie jest potomek szablonu, używana, gdy nie jest określona zmienna ramki {{LinkPatrz|zmienna z parametrami rodzica}}, wtedy taka ramka jest traktowana jak normalna ramka, której jedynie trzeba przekazać parametry rodzica, nie przodka, wtedy do niej nie są przekazywane parametry: {{LinkPatrz|parametry rodzica}} (ta zmienna jest wtedy ustawiana, gdy nie jest niepusty parametr {{LinkPatrz|bez dodatkowych sprawdzeń}}), {{LinkPatrz|bez argumentów szablonu}}, i {{LinkPatrz|nazwa szablonu rodzica}} (jeśli ta wartość rodzica nie istnieje, to nadawana jest jej aktualna nazwa szablonu rodzica, a nie przodka, normalnie jest to przodka, a w szczególności rodzica) i {{LinkPatrz|potomek}} (ustawiany na stałą wartość niepustą), ** {{Code|bez argumentów szablonu}} {{Patrz|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ń}} {{Patrz|bez dodatkowych sprawdzeń}} - nie jest uruchamiana walidacja parametrów szablonu rodzica, ** {{Code|parametry rodzica}} {{Patrz|parametry rodzica}} - zmienna przedstawiająca parametry rodzica, czy któreś ze przodków, przekazane do ramki: {{m|Sprawdź|Parametry}} - dodane przez tę funkcję, ** {{Code|zmienna z parametrami rodzica}} {{Patrz|zmienna z parametrami rodzica}} - parametr mówiący, czy ma tworzyć zmienne z parametrami rodzica {{LinkPatrz|parametry rodzica}}, a jeżeli nie jest on, z zadnych z jego potomków podany, to zmienna {{LinkPatrz|parametry rodzica}} jest przekazywana na kolejnego przodka, ** {{Code|zmienna z argumentami ramki}} {{Patrz|zmienna z argumentami ramki}} - zmienna mówiąca, czy mają być tworzone parametry ramki, które nie są sprawdzane 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}} {{Patrz|zmienna z nazwą szablonu rodzica}} - parametr, czy ma tworzyć zmienną: {{LinkPatrz|nazwa szablonu rodzica}}, ** {{Code|parametry funkcji modułu pudełek}} {{Patrz|parametry funkcji modułu pudełek}} - czy do funkcji mają wchodzić parametry modułu pudełek, które są ponumerowane dodatkowym numerkiem, ** {{Code|parametry podstawowe funkcji modułu pudełek}} {{Patrz|parametry podstawowe funkcji modułu pudełek}} - czy do funkcji mają wchodzić podstawowe parametry funkcji modułu pudełek, te które nie mają dodatkowego numerka, ** {{Code|usuń z parametrów ramki}} {{Patrz|usuń z parametrów ramki}} - parametry ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, przedstawiający zmienne oddzielone średnikami, które nie mają być uwzględnione przy uruchamianiu danego obiektu. * {{Code|Funkcja}} {{Patrz|Funkcja}} - nazwa funkcji w module, który ma wywołać w ramce ta funkcja, w przypadku, gdy parametr {{LinkPatrz|co_ma_wywolac}} ma wartość {{Tt|1}}, czyli wywołujemy funkcję {{LinkŚródtytuł|p["Moduł"]}}. Funkcja uruchamia szablon, moduł, czy ramkę, w zależności od drugiego parametru funkcji, z parametrami rodzica ramki bez parametrów opisanych zmienną: {{LinkPatrz|bez argumentów szablonu}}, i bez parametrów wskazanych przez zmienną: {{Code|usuń z parametrów ramki}}. Za pomocą tej funkcji możemy wielopoziomowo wywoływać funkcje przekazując parametry od najwyższego poziomu do najniższego. Ta funkcja służy przede wszystkim 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 do uruchamiania szablonów, a uruchamianie funkcji modułu, w tym funkcji {{m|Cytuj|custom}} w szablonie {{s|PrzypisStrona}}. Przykładem wywołania szablonu, która jest w szablonie: {{s|Wzór}}, w którym jest wywoływany inny szablon, tym razem silnik, tzn. {{s|Wzór/silnik}}: <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> === {{Śródtytuł|BudowaSzereguZDanych}}{{Code|BudowaSzereguZDanych}} === Funkcja do uruchamiania się 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> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tab_lancuch}} {{Patrz|tab_lancuch}} - pewna tablica transportu funkcji. * Zmienne do mikroszablonów: ** {{Code|minimum}} {{Patrz|minimum}} - liczba mówiąca o minimum, ** {{Code|maksimum}} {{Patrz|maksimum}} - liczba mówiąca o maksimum. Parametry ramki funkcji tablicy transportu modułu: * {{Code|akapit}} {{Patrz|akapit}} - jeśli niepusta, to ona definiuje akapit ze znaków {{Code|\n\n}}, przeciwnym wypadku elementy łańcucha nie są łączone w akapity, * {{Code|przecinek}} {{Patrz|przecinek}} - jeśli niepuste, to mówi, że pomiędzy elementami powiniem być przecinek: {{Code|", "}}, został on specjalnie objęty w cudzysłowy, aby zilustrować, że po przecinku znajduje się spacja, * {{Code|nowa linia}} {{Patrz|nowa linia}} - w przeciwieństwo do zmiennej {{LinkPatrz|akapit}}, używany zamiast niej, pisze jedną nową linię, a nie dwie, jako: {{Code|\n}}, * {{Code|wyliczanka}} {{Patrz|wyliczanka}} - wylicza elementy z przecinkami, stawiając przed ostatnim elementem zamiast jego wyraz wyliczania {{Code|i}}, * {{Code|początek}} {{Patrz|początek}} - mówi, że na początku musi znajdować się przecinek, * {{Code|myślnik}} {{Patrz|myślnik}} - mówi, że jeśli nie ma początku przecinka, to stawiany jest myślnik, używany zamiast {{LinkPatrz|początek}}, * {{Code|warunkowe}} {{Patrz|warunkowe}} - instrukcje wikikodu, takie jak: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}, zostaną w kodzie rozwinięte, a później ciągłe właściwe elementy wikikodu otoczone dwoma dolnymi myślnikami zostaną rozwinięte do pewnej postaci, funkcja używa do tego {{LinkŚródtytuł|p.InstrukcjeWarunkowe}}, ** {{Code|parametr}} {{Patrz|parametr}} - używany w towarzystwie z {{LinkPatrz|warunkowe}}, mówiący że, derektywy znakowe ciągłe otoczone dwoma dolnymi myślnikami, zostaną zastąpione odpowiedmimi szablonami, w przeciwnym wypadku niepodania tej wartości lub jego pustej, wtedy te derektywy zostaną zastąpione w postaci rozwiniętej tych szablonów. ** Funkcja w tym warunku zwraca ciąg znaków rozwiniętego warunku. Funkcja posiada też mikroszablony, które są zdefiniowane w kodzie łańcuchów {{LinkPatrz|tab_lancuch}}: * {{Code|<nowiki>{{min}}</nowiki>}} - minimalna wartość szeregu zmiennych, określana przez {{LinkPatrz|minimum}}, * {{Code|<nowiki>{{max}}</nowiki>}} - a tutaj ich maksymalna, określana przez {{LinkPatrz|maksimum}}. Te dwie zmienne są podstawiane do uzyskanego ciągu. Funkcja zwraca te części rozwiniętego tekstu wikikodu, jeśli podano {{LinkPatrz|warunkowe}}, co do instrukcji warunkowych i te bez wewnętrznych klamerek - specjalne kody, czyki te otoczone z dwóch stron dolnumi myślnikami, a pozostałe część jest za to nierozwinięta. == {{Śródtytuł|p.InstrukcjeWarunkowe}}{{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}} {{Patrz|ciag}} - podany ciąg do rozwinięcia z instrukcji warunkowych wewnątrz nie posiadający klamerek, * {{Code|derektywy_specjalne}} {{Patrz|derektywy_specjalne}} - używa do zastępowania specjalnych derektyw, podane po prawej stronie w ramce pływającej, * {{Code|derektywy_parametrowe}} {{Patrz|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: {{LinkŚródtytuł|BudowaSzereguZDanych}}, poprzez: {{LinkŚródtytuł|p.Powtarzaj}}. 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 == === {{Śródtytuł|p.RozpakujArgumenty}}{{Code|p.RozpakujArgumenty}} === Funkcje uruchamia się 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. === {{Śródtytuł|p.PakujParametry}}{{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> Parametry funkcji: * {{Code|args}} {{Patrz|args}} - tablica {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. 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}}, z użyciem funkcji: {{LzLua|mw.text.jsonEncode}}, z drugim parametrem: {{Code|mw.text.JSON_PRESERVE_KEYS}} {{Patrz|mw.text.JSON_PRESERVE_KEYS}}. === {{Śródtytuł|p.RozpakujParametry}}{{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 w niej zwracany. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.RozpakujParametry = function (zmienna_z_parametrami) return mw.text.jsonDecode(zmienna_z_parametrami,mw.text.JSON_PRESERVE_KEYS); end; </syntaxhighlight> Parametry funkcji: * {{Code|zmienna_z_parametrami}} {{Patrz|zmienna_z_parametrami}} - tablica {{Code|JSON}}. 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}}, z użyciem funkcji: {{LzLua|mw.text.jsonDecode}}, z użzyciem drugiego parametru: {{LinkPatrz|mw.text.JSON_PRESERVE_KEYS}}. == {{Śródtytuł|p["Rozwiń"]}}{{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> Parameetry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon rozwija wikikod podany w zmiennej {{Code|1}}, w parametrach szablonu rodzica. * 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}}: <syntaxhighlight lang="lua"> p["Rozwiń"] = function(frame) return frame:getParent():preprocess(frame.args[1]); end; </syntaxhighlight> == {{Śródtytuł|p.Log}}{{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> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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}}: <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 == === {{Śródtytuł|p.Szablon}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p.Szablon = function(frame) return ParserBlokowy(frame,0); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Szablon|Nazwa=<nazwa szablonu>|...}} </syntaxhighlight> === {{Śródtytuł|p["Moduł"]}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p["Moduł"] = function(frame) return ParserBlokowy(frame,1); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Moduł|Nazwa=<nazwa modułu>|Funkcja=<nazwa funkcji>|...}} </syntaxhighlight> === {{Śródtytuł|p.Parser}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p.Parser = function(frame) return ParserBlokowy(frame,2); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Parser|Nazwa=<nazwa parsera>|...}} </syntaxhighlight> == Funkcje książkowe == === {{Śródtytuł|p.Q}}{{Code|p.Q}} === Funkcja uruchamia szablon o podanej nazwie w pierwszym parametrze z przedrostkiem {{Code|Książka:}} przed nazwą szablonu. Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.Q =function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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ą (parametry nazwane, które są wliczane 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}}}} === {{Śródtytuł|p.N}}{{Code|p.N}} === Funkcja uruchamiana we wnętrzu szablonu {{s|N}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on. Funkcja przed nazwą szablonu, czy modułu, zostawia w wpis w postaci przedrostka {{Code|Książka:}}. Czy zostanie dodana przed tym nazwa przestrzeni nazw, to zależy od niepodania niepustej zmiennej {{Parametr|n}}, a zmienna {{Parametr|p|1}} - to przed nim jest dodawana przestrzeń nazw szablonu {{Np|Template|link=tak}}, {{Parametr|p|2}} - modułu {{Np|Module|link=tak}} i {{Parametr|p|3}} - kategorii. Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.N=function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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}}}} === {{Śródtytuł|p.A}}{{Code|p.A}} === Funkcja uruchamiana we wnętrzu szablonu {{s|A}}, która przyjmuje jego parametry, i tak samo działa, jak on. Funkcja usuwa przedrostek {{Code|Książka:}} w nazwie szablonu, czy modułu. Gdy jest podany parametr: {{Parametr|p|tak}}, to dla przestrzeni niebędących: {{Np|Template|link=tak}}, {{Np|Module|link=tak}} i {{Np|Category|link=tak}}, jest zwracany wtedy przez nią parametr pierwszy fukcji, dla tych wartości właśnie wyliczonych przestrzeni usuwany jest przedristek {{Code|Książka:}}. Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.A=function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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 == === {{Śródtytuł|p.Powtarzaj}}{{Code|p.Powtarzaj}} === Funkcja służy do powtarzalnego generowania wikikodu ze składników jego kroku przy pomocy określonych zmiennych rodzica. * Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.Powtarzaj = function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Funkcja może przyjmować tylko parametry nienazwane albo tylko nazwane, albo nienazwane i nazwane (gdy jest ustawiony parametr {{Code|różne}} {{Patrz|różne}}). 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}} {{LinkPatrz|różne}}, która wtedy ma wskazywać na wartość niepustą. ; Najważniejsze parametry, które są to opcjonalne, to są{{dk}} * {{Code|start}} {{Patrz|start}} - liczba, która wskazuje początek liczenia - domyślna wartość to {{Code|1}}, * {{Code|koniec}} {{Patrz|koniec}} - liczba, która wskazuje koniec liczenia. ; Numer końca liczenia parametrów nienazwanych lub nazwanych, czy nazwanychi nienazwanych{{dk}} * Elementy w {{Code|parametry}} {{Patrz|parametry}} mogą modyfikować odpowiednio parametry: {{LinkPatrz|start}} i {{LinkPatrz|koniec}}. * Ze zmiennej {{LinkPatrz|parametry}} jest liczona odpowiednia zmienna {{LinkPatrz|tabela}} dopuzczalnych zmiennych do liczenia. * Funkcja {{Code|Wylicz_skoncz_na_koncu}},którego algorytm podomy w tej poyzcji, tzn. koniec liczenia parametrów nienazwanych musi być policzony, jeżeli nie ma parametrów nazwanych w tabeli {{Code|tabela}} {{Patrz|tabela}}. A przeciwnie, jeżeli nie jest ustawiony parametr {{Code|różne}} {{LinkPatrz|różne}} nie na wartość niepustą, wtedy jest liczony parametr maksimum parametrów nazwanych, przeciwnie wtedy liczy się parametr maksimum numeracyjne parametrów numerowanych, czyli zmienną: {{Code|maksimum numeracyjne}} {{Patrz|maksimum numeracyjne}}, jeśli on ma wartość niepustą, wtedy liczy się maksimum parametrów nienazwanych, a jeżeli ona ma przeciwną wartość, to się liczy maksimum parametrów nazwanych, jak nienazwanych. Na podstawie tego mamy policzony odpowiednio taki koniec liczenia modyfikacji zwracany i policzony przez tą funkcję. ; Parametr {{Code|dodatkowe}}{{dk}} * To maksimum parametrów nazwanych, dla jakieś podstawy parametrów, są pomijane parametry z: {{Code|dodatkowe}}, która jest zestawem podstaw parametrów oddzielonych średnikami, jest właśnie podany ten parametr w nim. Przykładem jego jest: * {{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. ; Format parametru {{Parametr|parametry}}{{dk}} * 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 równa liczbie {{Code|5}}, oddzielonych średnikami. ; Opis parametru {{Parametr|parametry}}{{dk}} 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 w wartościach: {{Code|zmienna 1>}}, {{Code|<zmienna 2>}} i {{Code|<zmienna 3>}}, w których są pewne nazwy bazowe parametrów bez numerka na jej końcu, w zmiennej {{Code|parametry}} można nie podawać dalszych elementów 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ć nawet tego znaku,gdy nic nie ma po równa się) dla danego problemu funkcji. ; Wikikod pojedynczego kroku liczenia całości wygenerowanego wikikodu dla wszystkich zmiennych{{dk}} * 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)}}. ; Parametr {{Parametr|start}}, wartość początkowa{{dk}} * Gdy parametr {{Code|tonumber(frame.args["start"]) or 1}}, jest równy zero, funkcja zwraca błąd: {{Code|(początek jest ustawiony na zero)}}. ; Brak parametrów szablonu{{dk}} * 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. ; Parametr {{Parametr|nic}}{{dk}} * Gdy {{Code|nic}} przyjmuje wartość, i gdy pomijamy parametr, lub on przyjmuje wartość pustą, wtedy a funkcja nie może wygenerować żadnego kroku iteracji, to wtedy jest zwracana wartość parametru {{Code|nic}} lub ciąg pusty. ; Inne parametry{{dk}} * Parametr {{Code|po kolei}} {{Patrz|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|zaznacz}} {{Patrz|zaznacz}} - liczby oddzielone średnikami, które przy parametrach nazwanych o pewnych numerach i numerkach nie mają być uwzględnione przy niepustym parametrze {{Code|po kolei}} {{LinkPatrz|po kolei}}, a przy jego przeciwnej wartości za to mają być użyte. * 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}} {{Patrz|_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 wikikodami, wtedy ta funkcja używa do tego liczenia{{dk}} * Jest to funkcja {{LinkŚródtytuł|BudowaSzereguZDanych}}. * Wywołanie funkcji jest takie: {{Pre|lancuch_znakow {{=}} BudowaSzereguZDanych(frame,tab_lancuch,minimum or 0,maksimum);}} ; Parametry funkcji {{LinkŚródtytuł|BudowaSzereguZDanych}}. * One są wraz z jego parametrami podane w postaci jego parametrów ramki {{Code|frame}}, które jednocześnie są parametrami {{LinkŚródtytuł|p.Powtarzaj}}, używa się je 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ą {{LzLua|frame:preprocess}}, i jest zwracany jako wartość omawianej funkcji. ; Przykłady{{dk}} * Funkcja jest używana np. w silnikach szablonów, np.: {{s|Osobny artykuł/silnik}} szablonu {{s|Osobny artykuł}}, jak i do niego 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}}. === {{Śródtytuł|p.PowtarzajOdDo}}{{Code|p.PowtarzajOdDo}} === Funkcja służy do iteracji, od jakieś liczby do jakieś innej, podanego wikikodu dla danego kroku {{Code|1}}, iterując to, co krok określony zmienną: {{Code|krok}}. 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ę{{dk}} {{nobold|{{Code|{{m|Ramka|Rozwiń}}}}}}, lub go rozwija na końcu, na podstawie kolejnych kroków iteracji{{dk}} * {{Code|start}} - początek iteracji dokonywany przez ta funkcję, * {{Code|koniec}} - koniec iteracji dokonywany przez ta funkcję, * {{Code|krok}} - krok iteracji, co który numer 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{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}} * {{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ą{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}} * {{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{{dk}} {{nobold|{{s|Chem/silnik}}}}, w tym nadrzędnym{{dk}} {{nobold|{{s|Chem}}}}, przykłady jego działania{{dk}} * {{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. === {{Śródtytuł|p["PrzetwarzajIterującCiąg"]}}{{Code|p["PrzetwarzajIterującCiąg"]}} === Funkcja do iteracji wikikodu po parametrach oddzielonych średniami w parametrze ramki {{Code|cią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{{dk}} * {{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{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}} * {{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ą{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}} * {{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>}} jest kolejny parametr, oddzielonych od pozastałych średniami, z: {{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}}: {{LzLua|frame:preprocess}}, jeśli: {{Code|nie rozwiń}}, nie przybiera wartości niepustej. === {{Śródtytuł|p["PowtarzajWedług"]}}{{Code|p["PowtarzajWedług"]}} === Funkcja wyszukująca elementy według wzoru począwszy od numeru, określonego przez {{Code|start}}, aż do zakończenia danych kolenych sprawdzania od tej liczby, czy taka strona istnieje, numerek jest określony przez pewien wikikod, określony przez {{Code|<nowiki>{{_}}</nowiki>}}, którymusi być podany we wzorze {{Code|wzor}}. Ona w ten sposób dla istniejących stron ustawia pewne łańcuchy, które są łączone znakami {{Code|", "}}, a na końcu samym {{Code|" i "}}. 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 strony{{dk}} {{nobold|„{{Ns:Template}}{{dk}}Polecane książki/”}}, a oto przykład{{dk}}{{nobold|{{Parametr|wzór|{{Ns:Template}}{{dk}}Polecane książki/{{((}}_{{))}}}}}}{{dk}} * {{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}}}} == {{Śródtytuł|p["LiczbaPrawychUkośników"]}}{{Code|p["LiczbaPrawychUkośników"]}} == Funkcja liczy, ile jest prawych ukośników w adresie strony podany jako pierwszy parametr ramki. 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. ; Parametry fubkcji{{dk}} * {{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}}}} == {{Śródtytuł|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}}{{Code|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}} == Funkcja liczy maksymalny numer kolejnej strony liczonej według wzoru {{Code|wzor}}, musi być we wzorze podany element {{Code|<nowiki>{{_}}</nowiki>}}, aby mógł to robić. 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/”, czyli dla stron o ogólnym wzorze: {{Parametr|wzór|{{Ns:Template}}:Polecane książki/{{((}}_{{))}}}}. ; Parametry funkcji{{dk}} * {{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 == === {{Śródtytuł|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}}{{Code|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}} === Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy minimalny numer takiej zmiennej. * 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*)}}. ; Parametry funkcji{{dk}} * {{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}}}} === {{Śródtytuł|p.IleJestTakichOdpowiednikowychZmiennych}}{{Code|p.IleJestTakichOdpowiednikowychZmiennych}} === Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy ile jest takich zmiennych. * 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. ; Parametry funkcji{{dk}} * {{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}}}} == {{Śródtytuł|p["Parametr w tablicy nazw"]}}{{Code|p["Parametr w tablicy nazw"]}} == Funkcja bada, czy jest taki parametr {{Code|pozycja}} w tablicy nazw określonej zmienną {{Code|parametry}}, której elementy są oddzielone średnikami. * 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. ; Parametry funkcji{{dk}} * {{Code|parametry}} - lista parametrów oddzielonych średnikiem, * {{Code|pozycja}} - szukana lista w tablicy parametrów, * {{Code|od dużej}} - czy parametr: {{Code|pozycja}}, i elementy listy: {{Code|parametry}}, 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}}, a to ostatnie jest to wartość języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, która po transformacji na wikikod jest zamieniana na ciąg pusty, więc ona nadaje się do instrukcji warunkowych. === 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> jdsrk0sh3dww0ugprjwi8ymjbzdd5uw 553392 553391 2026-08-29T20:00:15Z Persino 2851 /* {{Śródtytuł|p["PrzetwarzajIterującCiąg"]}}{{Code|p["PrzetwarzajIterującCiąg"]}} */ 553392 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 == === {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} === Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, tylko w module {{Code|{{ld2|Ramka}}}}, szablonów, modułów i parserów w ramce. Uruchamiana jest przez funkcje: {{LinkŚródtytuł|p.Szablon}} - funkcja do uruchamiania szablonów, {{LinkŚródtytuł|p["Moduł"]}} - funkcja do uruchamiania modułów, i {{LinkŚródtytuł|p.Parser}} - funkcja do uruchamiania parserów. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ParserBlokowy(frame, co_ma_wywolac)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} {{Patrz|frame}} - funkcja ramkki funkcji tablica transportu modułu, * {{Code|co_ma_wywolac}} {{Patrz|co_ma_wywolac}} - ten parametr przyjmuje wartość liczbową, która jeżeli {{Tt|0}} - to uruchamiany jest szablon, jeżeli {{Tt|1}} - moduł, jeżeli {{Code|2}} - to parser, jeżeli on ma inne wartości, tzn.: {{Tt|2}}, a {{Tt|3}} i dalej, to już dany szablon. ; Parametry funkcji ramki: * Parametry podstawowe: ** {{Code|Nazwa}} {{Patrz|Nazwa}} - jest to pełna nazwa szablonu, modułu, czy parsera, ** {{Code|bez argumentów rodzica}} {{Patrz|bez argumentów rodzica}} - tablica parametrów oddzielonych średnikami, których obiekt uruchamiany nie może przyjmować, nawet jeżeli one są, ** {{Code|nazwa szablonu rodzica}} {{Patrz|nazwa szablonu rodzica}} - jest to zmienna przechowująca nazwę szablonu rodzica ramki dziecka,a nawet któreś z jego przodków, ** {{Code|bez argumentów nienazwanych rodzica}} {{Patrz|bez argumentów nienazwanych rodzica}} - szablon w ramce nie przyjmuje parametrów nienazwanych, określonych liczbą, podanych w rodzicu ramki, ** {{Code|potomek}} {{Patrz|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}} {{Patrz|nie potomek}} - zmienna mówiąca, że to nie jest potomek szablonu, używana, gdy nie jest określona zmienna ramki {{LinkPatrz|zmienna z parametrami rodzica}}, wtedy taka ramka jest traktowana jak normalna ramka, której jedynie trzeba przekazać parametry rodzica, nie przodka, wtedy do niej nie są przekazywane parametry: {{LinkPatrz|parametry rodzica}} (ta zmienna jest wtedy ustawiana, gdy nie jest niepusty parametr {{LinkPatrz|bez dodatkowych sprawdzeń}}), {{LinkPatrz|bez argumentów szablonu}}, i {{LinkPatrz|nazwa szablonu rodzica}} (jeśli ta wartość rodzica nie istnieje, to nadawana jest jej aktualna nazwa szablonu rodzica, a nie przodka, normalnie jest to przodka, a w szczególności rodzica) i {{LinkPatrz|potomek}} (ustawiany na stałą wartość niepustą), ** {{Code|bez argumentów szablonu}} {{Patrz|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ń}} {{Patrz|bez dodatkowych sprawdzeń}} - nie jest uruchamiana walidacja parametrów szablonu rodzica, ** {{Code|parametry rodzica}} {{Patrz|parametry rodzica}} - zmienna przedstawiająca parametry rodzica, czy któreś ze przodków, przekazane do ramki: {{m|Sprawdź|Parametry}} - dodane przez tę funkcję, ** {{Code|zmienna z parametrami rodzica}} {{Patrz|zmienna z parametrami rodzica}} - parametr mówiący, czy ma tworzyć zmienne z parametrami rodzica {{LinkPatrz|parametry rodzica}}, a jeżeli nie jest on, z zadnych z jego potomków podany, to zmienna {{LinkPatrz|parametry rodzica}} jest przekazywana na kolejnego przodka, ** {{Code|zmienna z argumentami ramki}} {{Patrz|zmienna z argumentami ramki}} - zmienna mówiąca, czy mają być tworzone parametry ramki, które nie są sprawdzane 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}} {{Patrz|zmienna z nazwą szablonu rodzica}} - parametr, czy ma tworzyć zmienną: {{LinkPatrz|nazwa szablonu rodzica}}, ** {{Code|parametry funkcji modułu pudełek}} {{Patrz|parametry funkcji modułu pudełek}} - czy do funkcji mają wchodzić parametry modułu pudełek, które są ponumerowane dodatkowym numerkiem, ** {{Code|parametry podstawowe funkcji modułu pudełek}} {{Patrz|parametry podstawowe funkcji modułu pudełek}} - czy do funkcji mają wchodzić podstawowe parametry funkcji modułu pudełek, te które nie mają dodatkowego numerka, ** {{Code|usuń z parametrów ramki}} {{Patrz|usuń z parametrów ramki}} - parametry ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, przedstawiający zmienne oddzielone średnikami, które nie mają być uwzględnione przy uruchamianiu danego obiektu. * {{Code|Funkcja}} {{Patrz|Funkcja}} - nazwa funkcji w module, który ma wywołać w ramce ta funkcja, w przypadku, gdy parametr {{LinkPatrz|co_ma_wywolac}} ma wartość {{Tt|1}}, czyli wywołujemy funkcję {{LinkŚródtytuł|p["Moduł"]}}. Funkcja uruchamia szablon, moduł, czy ramkę, w zależności od drugiego parametru funkcji, z parametrami rodzica ramki bez parametrów opisanych zmienną: {{LinkPatrz|bez argumentów szablonu}}, i bez parametrów wskazanych przez zmienną: {{Code|usuń z parametrów ramki}}. Za pomocą tej funkcji możemy wielopoziomowo wywoływać funkcje przekazując parametry od najwyższego poziomu do najniższego. Ta funkcja służy przede wszystkim 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 do uruchamiania szablonów, a uruchamianie funkcji modułu, w tym funkcji {{m|Cytuj|custom}} w szablonie {{s|PrzypisStrona}}. Przykładem wywołania szablonu, która jest w szablonie: {{s|Wzór}}, w którym jest wywoływany inny szablon, tym razem silnik, tzn. {{s|Wzór/silnik}}: <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> === {{Śródtytuł|BudowaSzereguZDanych}}{{Code|BudowaSzereguZDanych}} === Funkcja do uruchamiania się 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> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tab_lancuch}} {{Patrz|tab_lancuch}} - pewna tablica transportu funkcji. * Zmienne do mikroszablonów: ** {{Code|minimum}} {{Patrz|minimum}} - liczba mówiąca o minimum, ** {{Code|maksimum}} {{Patrz|maksimum}} - liczba mówiąca o maksimum. Parametry ramki funkcji tablicy transportu modułu: * {{Code|akapit}} {{Patrz|akapit}} - jeśli niepusta, to ona definiuje akapit ze znaków {{Code|\n\n}}, przeciwnym wypadku elementy łańcucha nie są łączone w akapity, * {{Code|przecinek}} {{Patrz|przecinek}} - jeśli niepuste, to mówi, że pomiędzy elementami powiniem być przecinek: {{Code|", "}}, został on specjalnie objęty w cudzysłowy, aby zilustrować, że po przecinku znajduje się spacja, * {{Code|nowa linia}} {{Patrz|nowa linia}} - w przeciwieństwo do zmiennej {{LinkPatrz|akapit}}, używany zamiast niej, pisze jedną nową linię, a nie dwie, jako: {{Code|\n}}, * {{Code|wyliczanka}} {{Patrz|wyliczanka}} - wylicza elementy z przecinkami, stawiając przed ostatnim elementem zamiast jego wyraz wyliczania {{Code|i}}, * {{Code|początek}} {{Patrz|początek}} - mówi, że na początku musi znajdować się przecinek, * {{Code|myślnik}} {{Patrz|myślnik}} - mówi, że jeśli nie ma początku przecinka, to stawiany jest myślnik, używany zamiast {{LinkPatrz|początek}}, * {{Code|warunkowe}} {{Patrz|warunkowe}} - instrukcje wikikodu, takie jak: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}, zostaną w kodzie rozwinięte, a później ciągłe właściwe elementy wikikodu otoczone dwoma dolnymi myślnikami zostaną rozwinięte do pewnej postaci, funkcja używa do tego {{LinkŚródtytuł|p.InstrukcjeWarunkowe}}, ** {{Code|parametr}} {{Patrz|parametr}} - używany w towarzystwie z {{LinkPatrz|warunkowe}}, mówiący że, derektywy znakowe ciągłe otoczone dwoma dolnymi myślnikami, zostaną zastąpione odpowiedmimi szablonami, w przeciwnym wypadku niepodania tej wartości lub jego pustej, wtedy te derektywy zostaną zastąpione w postaci rozwiniętej tych szablonów. ** Funkcja w tym warunku zwraca ciąg znaków rozwiniętego warunku. Funkcja posiada też mikroszablony, które są zdefiniowane w kodzie łańcuchów {{LinkPatrz|tab_lancuch}}: * {{Code|<nowiki>{{min}}</nowiki>}} - minimalna wartość szeregu zmiennych, określana przez {{LinkPatrz|minimum}}, * {{Code|<nowiki>{{max}}</nowiki>}} - a tutaj ich maksymalna, określana przez {{LinkPatrz|maksimum}}. Te dwie zmienne są podstawiane do uzyskanego ciągu. Funkcja zwraca te części rozwiniętego tekstu wikikodu, jeśli podano {{LinkPatrz|warunkowe}}, co do instrukcji warunkowych i te bez wewnętrznych klamerek - specjalne kody, czyki te otoczone z dwóch stron dolnumi myślnikami, a pozostałe część jest za to nierozwinięta. == {{Śródtytuł|p.InstrukcjeWarunkowe}}{{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}} {{Patrz|ciag}} - podany ciąg do rozwinięcia z instrukcji warunkowych wewnątrz nie posiadający klamerek, * {{Code|derektywy_specjalne}} {{Patrz|derektywy_specjalne}} - używa do zastępowania specjalnych derektyw, podane po prawej stronie w ramce pływającej, * {{Code|derektywy_parametrowe}} {{Patrz|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: {{LinkŚródtytuł|BudowaSzereguZDanych}}, poprzez: {{LinkŚródtytuł|p.Powtarzaj}}. 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 == === {{Śródtytuł|p.RozpakujArgumenty}}{{Code|p.RozpakujArgumenty}} === Funkcje uruchamia się 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. === {{Śródtytuł|p.PakujParametry}}{{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> Parametry funkcji: * {{Code|args}} {{Patrz|args}} - tablica {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. 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}}, z użyciem funkcji: {{LzLua|mw.text.jsonEncode}}, z drugim parametrem: {{Code|mw.text.JSON_PRESERVE_KEYS}} {{Patrz|mw.text.JSON_PRESERVE_KEYS}}. === {{Śródtytuł|p.RozpakujParametry}}{{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 w niej zwracany. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.RozpakujParametry = function (zmienna_z_parametrami) return mw.text.jsonDecode(zmienna_z_parametrami,mw.text.JSON_PRESERVE_KEYS); end; </syntaxhighlight> Parametry funkcji: * {{Code|zmienna_z_parametrami}} {{Patrz|zmienna_z_parametrami}} - tablica {{Code|JSON}}. 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}}, z użyciem funkcji: {{LzLua|mw.text.jsonDecode}}, z użzyciem drugiego parametru: {{LinkPatrz|mw.text.JSON_PRESERVE_KEYS}}. == {{Śródtytuł|p["Rozwiń"]}}{{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> Parameetry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon rozwija wikikod podany w zmiennej {{Code|1}}, w parametrach szablonu rodzica. * 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}}: <syntaxhighlight lang="lua"> p["Rozwiń"] = function(frame) return frame:getParent():preprocess(frame.args[1]); end; </syntaxhighlight> == {{Śródtytuł|p.Log}}{{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> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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}}: <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 == === {{Śródtytuł|p.Szablon}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p.Szablon = function(frame) return ParserBlokowy(frame,0); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Szablon|Nazwa=<nazwa szablonu>|...}} </syntaxhighlight> === {{Śródtytuł|p["Moduł"]}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p["Moduł"] = function(frame) return ParserBlokowy(frame,1); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Moduł|Nazwa=<nazwa modułu>|Funkcja=<nazwa funkcji>|...}} </syntaxhighlight> === {{Śródtytuł|p.Parser}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p.Parser = function(frame) return ParserBlokowy(frame,2); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Parser|Nazwa=<nazwa parsera>|...}} </syntaxhighlight> == Funkcje książkowe == === {{Śródtytuł|p.Q}}{{Code|p.Q}} === Funkcja uruchamia szablon o podanej nazwie w pierwszym parametrze z przedrostkiem {{Code|Książka:}} przed nazwą szablonu. Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.Q =function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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ą (parametry nazwane, które są wliczane 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}}}} === {{Śródtytuł|p.N}}{{Code|p.N}} === Funkcja uruchamiana we wnętrzu szablonu {{s|N}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on. Funkcja przed nazwą szablonu, czy modułu, zostawia w wpis w postaci przedrostka {{Code|Książka:}}. Czy zostanie dodana przed tym nazwa przestrzeni nazw, to zależy od niepodania niepustej zmiennej {{Parametr|n}}, a zmienna {{Parametr|p|1}} - to przed nim jest dodawana przestrzeń nazw szablonu {{Np|Template|link=tak}}, {{Parametr|p|2}} - modułu {{Np|Module|link=tak}} i {{Parametr|p|3}} - kategorii. Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.N=function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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}}}} === {{Śródtytuł|p.A}}{{Code|p.A}} === Funkcja uruchamiana we wnętrzu szablonu {{s|A}}, która przyjmuje jego parametry, i tak samo działa, jak on. Funkcja usuwa przedrostek {{Code|Książka:}} w nazwie szablonu, czy modułu. Gdy jest podany parametr: {{Parametr|p|tak}}, to dla przestrzeni niebędących: {{Np|Template|link=tak}}, {{Np|Module|link=tak}} i {{Np|Category|link=tak}}, jest zwracany wtedy przez nią parametr pierwszy fukcji, dla tych wartości właśnie wyliczonych przestrzeni usuwany jest przedristek {{Code|Książka:}}. Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.A=function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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 == === {{Śródtytuł|p.Powtarzaj}}{{Code|p.Powtarzaj}} === Funkcja służy do powtarzalnego generowania wikikodu ze składników jego kroku przy pomocy określonych zmiennych rodzica. * Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.Powtarzaj = function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Funkcja może przyjmować tylko parametry nienazwane albo tylko nazwane, albo nienazwane i nazwane (gdy jest ustawiony parametr {{Code|różne}} {{Patrz|różne}}). 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}} {{LinkPatrz|różne}}, która wtedy ma wskazywać na wartość niepustą. ; Najważniejsze parametry, które są to opcjonalne, to są{{dk}} * {{Code|start}} {{Patrz|start}} - liczba, która wskazuje początek liczenia - domyślna wartość to {{Code|1}}, * {{Code|koniec}} {{Patrz|koniec}} - liczba, która wskazuje koniec liczenia. ; Numer końca liczenia parametrów nienazwanych lub nazwanych, czy nazwanychi nienazwanych{{dk}} * Elementy w {{Code|parametry}} {{Patrz|parametry}} mogą modyfikować odpowiednio parametry: {{LinkPatrz|start}} i {{LinkPatrz|koniec}}. * Ze zmiennej {{LinkPatrz|parametry}} jest liczona odpowiednia zmienna {{LinkPatrz|tabela}} dopuzczalnych zmiennych do liczenia. * Funkcja {{Code|Wylicz_skoncz_na_koncu}},którego algorytm podomy w tej poyzcji, tzn. koniec liczenia parametrów nienazwanych musi być policzony, jeżeli nie ma parametrów nazwanych w tabeli {{Code|tabela}} {{Patrz|tabela}}. A przeciwnie, jeżeli nie jest ustawiony parametr {{Code|różne}} {{LinkPatrz|różne}} nie na wartość niepustą, wtedy jest liczony parametr maksimum parametrów nazwanych, przeciwnie wtedy liczy się parametr maksimum numeracyjne parametrów numerowanych, czyli zmienną: {{Code|maksimum numeracyjne}} {{Patrz|maksimum numeracyjne}}, jeśli on ma wartość niepustą, wtedy liczy się maksimum parametrów nienazwanych, a jeżeli ona ma przeciwną wartość, to się liczy maksimum parametrów nazwanych, jak nienazwanych. Na podstawie tego mamy policzony odpowiednio taki koniec liczenia modyfikacji zwracany i policzony przez tą funkcję. ; Parametr {{Code|dodatkowe}}{{dk}} * To maksimum parametrów nazwanych, dla jakieś podstawy parametrów, są pomijane parametry z: {{Code|dodatkowe}}, która jest zestawem podstaw parametrów oddzielonych średnikami, jest właśnie podany ten parametr w nim. Przykładem jego jest: * {{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. ; Format parametru {{Parametr|parametry}}{{dk}} * 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 równa liczbie {{Code|5}}, oddzielonych średnikami. ; Opis parametru {{Parametr|parametry}}{{dk}} 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 w wartościach: {{Code|zmienna 1>}}, {{Code|<zmienna 2>}} i {{Code|<zmienna 3>}}, w których są pewne nazwy bazowe parametrów bez numerka na jej końcu, w zmiennej {{Code|parametry}} można nie podawać dalszych elementów 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ć nawet tego znaku,gdy nic nie ma po równa się) dla danego problemu funkcji. ; Wikikod pojedynczego kroku liczenia całości wygenerowanego wikikodu dla wszystkich zmiennych{{dk}} * 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)}}. ; Parametr {{Parametr|start}}, wartość początkowa{{dk}} * Gdy parametr {{Code|tonumber(frame.args["start"]) or 1}}, jest równy zero, funkcja zwraca błąd: {{Code|(początek jest ustawiony na zero)}}. ; Brak parametrów szablonu{{dk}} * 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. ; Parametr {{Parametr|nic}}{{dk}} * Gdy {{Code|nic}} przyjmuje wartość, i gdy pomijamy parametr, lub on przyjmuje wartość pustą, wtedy a funkcja nie może wygenerować żadnego kroku iteracji, to wtedy jest zwracana wartość parametru {{Code|nic}} lub ciąg pusty. ; Inne parametry{{dk}} * Parametr {{Code|po kolei}} {{Patrz|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|zaznacz}} {{Patrz|zaznacz}} - liczby oddzielone średnikami, które przy parametrach nazwanych o pewnych numerach i numerkach nie mają być uwzględnione przy niepustym parametrze {{Code|po kolei}} {{LinkPatrz|po kolei}}, a przy jego przeciwnej wartości za to mają być użyte. * 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}} {{Patrz|_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 wikikodami, wtedy ta funkcja używa do tego liczenia{{dk}} * Jest to funkcja {{LinkŚródtytuł|BudowaSzereguZDanych}}. * Wywołanie funkcji jest takie: {{Pre|lancuch_znakow {{=}} BudowaSzereguZDanych(frame,tab_lancuch,minimum or 0,maksimum);}} ; Parametry funkcji {{LinkŚródtytuł|BudowaSzereguZDanych}}. * One są wraz z jego parametrami podane w postaci jego parametrów ramki {{Code|frame}}, które jednocześnie są parametrami {{LinkŚródtytuł|p.Powtarzaj}}, używa się je 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ą {{LzLua|frame:preprocess}}, i jest zwracany jako wartość omawianej funkcji. ; Przykłady{{dk}} * Funkcja jest używana np. w silnikach szablonów, np.: {{s|Osobny artykuł/silnik}} szablonu {{s|Osobny artykuł}}, jak i do niego 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}}. === {{Śródtytuł|p.PowtarzajOdDo}}{{Code|p.PowtarzajOdDo}} === Funkcja służy do iteracji, od jakieś liczby do jakieś innej, podanego wikikodu dla danego kroku {{Code|1}}, iterując to, co krok określony zmienną: {{Code|krok}}. 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ę{{dk}} {{nobold|{{Code|{{m|Ramka|Rozwiń}}}}}}, lub go rozwija na końcu, na podstawie kolejnych kroków iteracji{{dk}} * {{Code|start}} - początek iteracji dokonywany przez ta funkcję, * {{Code|koniec}} - koniec iteracji dokonywany przez ta funkcję, * {{Code|krok}} - krok iteracji, co który numer 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{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}} * {{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ą{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}} * {{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{{dk}} {{nobold|{{s|Chem/silnik}}}}, w tym nadrzędnym{{dk}} {{nobold|{{s|Chem}}}}, przykłady jego działania{{dk}} * {{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. === {{Śródtytuł|p["PrzetwarzajIterującCiąg"]}}{{Code|p["PrzetwarzajIterującCiąg"]}} === Funkcja do iteracji wikikodu po parametrach oddzielonych średniami w parametrze ramki {{Code|cią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{{dk}} * {{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{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}} * {{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ą{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}} * {{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>}} jest kolejny parametr, oddzielonych od pozastałych średniami, z: {{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}}: {{LzLua|frame:preprocess}}, jeśli: {{Code|nie rozwiń}}, nie przybiera wartości niepustej. === {{Śródtytuł|p["PowtarzajWedług"]}}{{Code|p["PowtarzajWedług"]}} === Funkcja wyszukująca elementy według wzoru począwszy od numeru, określonego przez {{Code|start}}, aż do zakończenia danych kolenych sprawdzania od tej liczby, czy taka strona istnieje, numerek jest określony przez pewien wikikod, określony przez {{Code|<nowiki>{{_}}</nowiki>}}, którymusi być podany we wzorze {{Code|wzor}}. Ona w ten sposób dla istniejących stron ustawia pewne łańcuchy, które są łączone znakami {{Code|", "}}, a na końcu samym {{Code|" i "}}. 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 strony{{dk}} {{nobold|„{{Ns:Template}}{{dk}}Polecane książki/”}}, a oto przykład{{dk}}{{nobold|{{Parametr|wzór|{{Ns:Template}}{{dk}}Polecane książki/{{((}}_{{))}}}}}}{{dk}} * {{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}}}} == {{Śródtytuł|p["LiczbaPrawychUkośników"]}}{{Code|p["LiczbaPrawychUkośników"]}} == Funkcja liczy, ile jest prawych ukośników w adresie strony podany jako pierwszy parametr ramki. 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. ; Parametry fubkcji{{dk}} * {{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}}}} == {{Śródtytuł|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}}{{Code|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}} == Funkcja liczy maksymalny numer kolejnej strony liczonej według wzoru {{Code|wzor}}, musi być we wzorze podany element {{Code|<nowiki>{{_}}</nowiki>}}, aby mógł to robić. 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/”, czyli dla stron o ogólnym wzorze: {{Parametr|wzór|{{Ns:Template}}:Polecane książki/{{((}}_{{))}}}}. ; Parametry funkcji{{dk}} * {{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 == === {{Śródtytuł|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}}{{Code|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}} === Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy minimalny numer takiej zmiennej. * 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*)}}. ; Parametry funkcji{{dk}} * {{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}}}} === {{Śródtytuł|p.IleJestTakichOdpowiednikowychZmiennych}}{{Code|p.IleJestTakichOdpowiednikowychZmiennych}} === Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy ile jest takich zmiennych. * 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. ; Parametry funkcji{{dk}} * {{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}}}} == {{Śródtytuł|p["Parametr w tablicy nazw"]}}{{Code|p["Parametr w tablicy nazw"]}} == Funkcja bada, czy jest taki parametr {{Code|pozycja}} w tablicy nazw określonej zmienną {{Code|parametry}}, której elementy są oddzielone średnikami. * 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. ; Parametry funkcji{{dk}} * {{Code|parametry}} - lista parametrów oddzielonych średnikiem, * {{Code|pozycja}} - szukana lista w tablicy parametrów, * {{Code|od dużej}} - czy parametr: {{Code|pozycja}}, i elementy listy: {{Code|parametry}}, 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}}, a to ostatnie jest to wartość języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, która po transformacji na wikikod jest zamieniana na ciąg pusty, więc ona nadaje się do instrukcji warunkowych. === 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> 8gfnks3035gcthk9b9h7vl6evy5s0tm 553393 553392 2026-08-29T20:03:08Z Persino 2851 553393 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 == === {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} === Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, tylko w module {{Code|{{ld2|Ramka}}}}, szablonów, modułów i parserów w ramce. Uruchamiana jest przez funkcje: {{LinkŚródtytuł|p.Szablon}} - funkcja do uruchamiania szablonów, {{LinkŚródtytuł|p["Moduł"]}} - funkcja do uruchamiania modułów, i {{LinkŚródtytuł|p.Parser}} - funkcja do uruchamiania parserów. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ParserBlokowy(frame, co_ma_wywolac)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} {{Patrz|frame}} - funkcja ramkki funkcji tablica transportu modułu, * {{Code|co_ma_wywolac}} {{Patrz|co_ma_wywolac}} - ten parametr przyjmuje wartość liczbową, która jeżeli {{Tt|0}} - to uruchamiany jest szablon, jeżeli {{Tt|1}} - moduł, jeżeli {{Code|2}} - to parser, jeżeli on ma inne wartości, tzn.: {{Tt|2}}, a {{Tt|3}} i dalej, to już dany szablon. ; Parametry funkcji ramki: * Parametry podstawowe: ** {{Code|Nazwa}} {{Patrz|Nazwa}} - jest to pełna nazwa szablonu, modułu, czy parsera, ** {{Code|bez argumentów rodzica}} {{Patrz|bez argumentów rodzica}} - tablica parametrów oddzielonych średnikami, których obiekt uruchamiany nie może przyjmować, nawet jeżeli one są, ** {{Code|nazwa szablonu rodzica}} {{Patrz|nazwa szablonu rodzica}} - jest to zmienna przechowująca nazwę szablonu rodzica ramki dziecka,a nawet któreś z jego przodków, ** {{Code|bez argumentów nienazwanych rodzica}} {{Patrz|bez argumentów nienazwanych rodzica}} - szablon w ramce nie przyjmuje parametrów nienazwanych, określonych liczbą, podanych w rodzicu ramki, ** {{Code|potomek}} {{Patrz|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}} {{Patrz|nie potomek}} - zmienna mówiąca, że to nie jest potomek szablonu, używana, gdy nie jest określona zmienna ramki {{LinkPatrz|zmienna z parametrami rodzica}}, wtedy taka ramka jest traktowana jak normalna ramka, której jedynie trzeba przekazać parametry rodzica, nie przodka, wtedy do niej nie są przekazywane parametry: {{LinkPatrz|parametry rodzica}} (ta zmienna jest wtedy ustawiana, gdy nie jest niepusty parametr {{LinkPatrz|bez dodatkowych sprawdzeń}}), {{LinkPatrz|bez argumentów szablonu}}, i {{LinkPatrz|nazwa szablonu rodzica}} (jeśli ta wartość rodzica nie istnieje, to nadawana jest jej aktualna nazwa szablonu rodzica, a nie przodka, normalnie jest to przodka, a w szczególności rodzica) i {{LinkPatrz|potomek}} (ustawiany na stałą wartość niepustą), ** {{Code|bez argumentów szablonu}} {{Patrz|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ń}} {{Patrz|bez dodatkowych sprawdzeń}} - nie jest uruchamiana walidacja parametrów szablonu rodzica, ** {{Code|parametry rodzica}} {{Patrz|parametry rodzica}} - zmienna przedstawiająca parametry rodzica, czy któreś ze przodków, przekazane do ramki: {{m|Sprawdź|Parametry}} - dodane przez tę funkcję, ** {{Code|zmienna z parametrami rodzica}} {{Patrz|zmienna z parametrami rodzica}} - parametr mówiący, czy ma tworzyć zmienne z parametrami rodzica {{LinkPatrz|parametry rodzica}}, a jeżeli nie jest on, z zadnych z jego potomków podany, to zmienna {{LinkPatrz|parametry rodzica}} jest przekazywana na kolejnego przodka, ** {{Code|zmienna z argumentami ramki}} {{Patrz|zmienna z argumentami ramki}} - zmienna mówiąca, czy mają być tworzone parametry ramki, które nie są sprawdzane 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}} {{Patrz|zmienna z nazwą szablonu rodzica}} - parametr, czy ma tworzyć zmienną: {{LinkPatrz|nazwa szablonu rodzica}}, ** {{Code|parametry funkcji modułu pudełek}} {{Patrz|parametry funkcji modułu pudełek}} - czy do funkcji mają wchodzić parametry modułu pudełek, które są ponumerowane dodatkowym numerkiem, ** {{Code|parametry podstawowe funkcji modułu pudełek}} {{Patrz|parametry podstawowe funkcji modułu pudełek}} - czy do funkcji mają wchodzić podstawowe parametry funkcji modułu pudełek, te które nie mają dodatkowego numerka, ** {{Code|usuń z parametrów ramki}} {{Patrz|usuń z parametrów ramki}} - parametry ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, przedstawiający zmienne oddzielone średnikami, które nie mają być uwzględnione przy uruchamianiu danego obiektu. * {{Code|Funkcja}} {{Patrz|Funkcja}} - nazwa funkcji w module, który ma wywołać w ramce ta funkcja, w przypadku, gdy parametr {{LinkPatrz|co_ma_wywolac}} ma wartość {{Tt|1}}, czyli wywołujemy funkcję {{LinkŚródtytuł|p["Moduł"]}}. Funkcja uruchamia szablon, moduł, czy ramkę, w zależności od drugiego parametru funkcji, z parametrami rodzica ramki bez parametrów opisanych zmienną: {{LinkPatrz|bez argumentów szablonu}}, i bez parametrów wskazanych przez zmienną: {{Code|usuń z parametrów ramki}}. Za pomocą tej funkcji możemy wielopoziomowo wywoływać funkcje przekazując parametry od najwyższego poziomu do najniższego. Ta funkcja służy przede wszystkim 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 do uruchamiania szablonów, a uruchamianie funkcji modułu, w tym funkcji {{m|Cytuj|custom}} w szablonie {{s|PrzypisStrona}}. Przykładem wywołania szablonu, która jest w szablonie: {{s|Wzór}}, w którym jest wywoływany inny szablon, tym razem silnik, tzn. {{s|Wzór/silnik}}: <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> === {{Śródtytuł|BudowaSzereguZDanych}}{{Code|BudowaSzereguZDanych}} === Funkcja do uruchamiania się 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> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tab_lancuch}} {{Patrz|tab_lancuch}} - pewna tablica transportu funkcji. * Zmienne do mikroszablonów: ** {{Code|minimum}} {{Patrz|minimum}} - liczba mówiąca o minimum, ** {{Code|maksimum}} {{Patrz|maksimum}} - liczba mówiąca o maksimum. Parametry ramki funkcji tablicy transportu modułu: * {{Code|akapit}} {{Patrz|akapit}} - jeśli niepusta, to ona definiuje akapit ze znaków {{Code|\n\n}}, przeciwnym wypadku elementy łańcucha nie są łączone w akapity, * {{Code|przecinek}} {{Patrz|przecinek}} - jeśli niepuste, to mówi, że pomiędzy elementami powiniem być przecinek: {{Code|", "}}, został on specjalnie objęty w cudzysłowy, aby zilustrować, że po przecinku znajduje się spacja, * {{Code|nowa linia}} {{Patrz|nowa linia}} - w przeciwieństwo do zmiennej {{LinkPatrz|akapit}}, używany zamiast niej, pisze jedną nową linię, a nie dwie, jako: {{Code|\n}}, * {{Code|wyliczanka}} {{Patrz|wyliczanka}} - wylicza elementy z przecinkami, stawiając przed ostatnim elementem zamiast jego wyraz wyliczania {{Code|i}}, * {{Code|początek}} {{Patrz|początek}} - mówi, że na początku musi znajdować się przecinek, * {{Code|myślnik}} {{Patrz|myślnik}} - mówi, że jeśli nie ma początku przecinka, to stawiany jest myślnik, używany zamiast {{LinkPatrz|początek}}, * {{Code|warunkowe}} {{Patrz|warunkowe}} - instrukcje wikikodu, takie jak: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}, zostaną w kodzie rozwinięte, a później ciągłe właściwe elementy wikikodu otoczone dwoma dolnymi myślnikami zostaną rozwinięte do pewnej postaci, funkcja używa do tego {{LinkŚródtytuł|p.InstrukcjeWarunkowe}}, ** {{Code|parametr}} {{Patrz|parametr}} - używany w towarzystwie z {{LinkPatrz|warunkowe}}, mówiący że, derektywy znakowe ciągłe otoczone dwoma dolnymi myślnikami, zostaną zastąpione odpowiedmimi szablonami, w przeciwnym wypadku niepodania tej wartości lub jego pustej, wtedy te derektywy zostaną zastąpione w postaci rozwiniętej tych szablonów. ** Funkcja w tym warunku zwraca ciąg znaków rozwiniętego warunku. Funkcja posiada też mikroszablony, które są zdefiniowane w kodzie łańcuchów {{LinkPatrz|tab_lancuch}}: * {{Code|<nowiki>{{min}}</nowiki>}} - minimalna wartość szeregu zmiennych, określana przez {{LinkPatrz|minimum}}, * {{Code|<nowiki>{{max}}</nowiki>}} - a tutaj ich maksymalna, określana przez {{LinkPatrz|maksimum}}. Te dwie zmienne są podstawiane do uzyskanego ciągu. Funkcja zwraca te części rozwiniętego tekstu wikikodu, jeśli podano {{LinkPatrz|warunkowe}}, co do instrukcji warunkowych i te bez wewnętrznych klamerek - specjalne kody, czyki te otoczone z dwóch stron dolnumi myślnikami, a pozostałe część jest za to nierozwinięta. == {{Śródtytuł|p.InstrukcjeWarunkowe}}{{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}} {{Patrz|ciag}} - podany ciąg do rozwinięcia z instrukcji warunkowych wewnątrz nie posiadający klamerek, * {{Code|derektywy_specjalne}} {{Patrz|derektywy_specjalne}} - używa do zastępowania specjalnych derektyw, podane po prawej stronie w ramce pływającej, * {{Code|derektywy_parametrowe}} {{Patrz|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: {{LinkŚródtytuł|BudowaSzereguZDanych}}, poprzez: {{LinkŚródtytuł|p.Powtarzaj}}. 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 == === {{Śródtytuł|p.RozpakujArgumenty}}{{Code|p.RozpakujArgumenty}} === Funkcje uruchamia się 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. === {{Śródtytuł|p.PakujParametry}}{{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> Parametry funkcji: * {{Code|args}} {{Patrz|args}} - tablica {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. 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}}, z użyciem funkcji: {{LzLua|mw.text.jsonEncode}}, z drugim parametrem: {{Code|mw.text.JSON_PRESERVE_KEYS}} {{Patrz|mw.text.JSON_PRESERVE_KEYS}}. === {{Śródtytuł|p.RozpakujParametry}}{{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 w niej zwracany. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.RozpakujParametry = function (zmienna_z_parametrami) return mw.text.jsonDecode(zmienna_z_parametrami,mw.text.JSON_PRESERVE_KEYS); end; </syntaxhighlight> Parametry funkcji: * {{Code|zmienna_z_parametrami}} {{Patrz|zmienna_z_parametrami}} - tablica {{Code|JSON}}. 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}}, z użyciem funkcji: {{LzLua|mw.text.jsonDecode}}, z użzyciem drugiego parametru: {{LinkPatrz|mw.text.JSON_PRESERVE_KEYS}}. == {{Śródtytuł|p["Rozwiń"]}}{{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> Parameetry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon rozwija wikikod podany w zmiennej {{Code|1}}, w parametrach szablonu rodzica. * 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}}: <syntaxhighlight lang="lua"> p["Rozwiń"] = function(frame) return frame:getParent():preprocess(frame.args[1]); end; </syntaxhighlight> == {{Śródtytuł|p.Log}}{{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> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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}}: <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 == === {{Śródtytuł|p.Szablon}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p.Szablon = function(frame) return ParserBlokowy(frame,0); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Szablon|Nazwa=<nazwa szablonu>|...}} </syntaxhighlight> === {{Śródtytuł|p["Moduł"]}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p["Moduł"] = function(frame) return ParserBlokowy(frame,1); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Moduł|Nazwa=<nazwa modułu>|Funkcja=<nazwa funkcji>|...}} </syntaxhighlight> === {{Śródtytuł|p.Parser}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p.Parser = function(frame) return ParserBlokowy(frame,2); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Parser|Nazwa=<nazwa parsera>|...}} </syntaxhighlight> == Funkcje książkowe == === {{Śródtytuł|p.Q}}{{Code|p.Q}} === Funkcja uruchamia szablon o podanej nazwie w pierwszym parametrze z przedrostkiem {{Code|Książka:}} przed nazwą szablonu. Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.Q =function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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ą (parametry nazwane, które są wliczane 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}}}} === {{Śródtytuł|p.N}}{{Code|p.N}} === Funkcja uruchamiana we wnętrzu szablonu {{s|N}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on. Funkcja przed nazwą szablonu, czy modułu, zostawia w wpis w postaci przedrostka {{Code|Książka:}}. Czy zostanie dodana przed tym nazwa przestrzeni nazw, to zależy od niepodania niepustej zmiennej {{Parametr|n}}, a zmienna {{Parametr|p|1}} - to przed nim jest dodawana przestrzeń nazw szablonu {{Np|Template|link=tak}}, {{Parametr|p|2}} - modułu {{Np|Module|link=tak}} i {{Parametr|p|3}} - kategorii. Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.N=function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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}}}} === {{Śródtytuł|p.A}}{{Code|p.A}} === Funkcja uruchamiana we wnętrzu szablonu {{s|A}}, która przyjmuje jego parametry, i tak samo działa, jak on. Funkcja usuwa przedrostek {{Code|Książka:}} w nazwie szablonu, czy modułu. Gdy jest podany parametr: {{Parametr|p|tak}}, to dla przestrzeni niebędących: {{Np|Template|link=tak}}, {{Np|Module|link=tak}} i {{Np|Category|link=tak}}, jest zwracany wtedy przez nią parametr pierwszy fukcji, dla tych wartości właśnie wyliczonych przestrzeni usuwany jest przedristek {{Code|Książka:}}. Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.A=function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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 == === {{Śródtytuł|p.Powtarzaj}}{{Code|p.Powtarzaj}} === Funkcja służy do powtarzalnego generowania wikikodu ze składników jego kroku przy pomocy określonych zmiennych rodzica. * Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.Powtarzaj = function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Funkcja może przyjmować tylko parametry nienazwane albo tylko nazwane, albo nienazwane i nazwane (gdy jest ustawiony parametr {{Code|różne}} {{Patrz|różne}}). 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}} {{LinkPatrz|różne}}, która wtedy ma wskazywać na wartość niepustą. ; Najważniejsze parametry, które są to opcjonalne, to są{{dk}} * {{Code|start}} {{Patrz|start}} - liczba, która wskazuje początek liczenia - domyślna wartość to {{Code|1}}, * {{Code|koniec}} {{Patrz|koniec}} - liczba, która wskazuje koniec liczenia. ; Numer końca liczenia parametrów nienazwanych lub nazwanych, czy nazwanychi nienazwanych{{dk}} * Elementy w {{Code|parametry}} {{Patrz|parametry}} mogą modyfikować odpowiednio parametry: {{LinkPatrz|start}} i {{LinkPatrz|koniec}}. * Ze zmiennej {{LinkPatrz|parametry}} jest liczona odpowiednia zmienna {{LinkPatrz|tabela}} dopuzczalnych zmiennych do liczenia. * Funkcja {{Code|Wylicz_skoncz_na_koncu}},którego algorytm podomy w tej poyzcji, tzn. koniec liczenia parametrów nienazwanych musi być policzony, jeżeli nie ma parametrów nazwanych w tabeli {{Code|tabela}} {{Patrz|tabela}}. A przeciwnie, jeżeli nie jest ustawiony parametr {{Code|różne}} {{LinkPatrz|różne}} nie na wartość niepustą, wtedy jest liczony parametr maksimum parametrów nazwanych, przeciwnie wtedy liczy się parametr maksimum numeracyjne parametrów numerowanych, czyli zmienną: {{Code|maksimum numeracyjne}} {{Patrz|maksimum numeracyjne}}, jeśli on ma wartość niepustą, wtedy liczy się maksimum parametrów nienazwanych, a jeżeli ona ma przeciwną wartość, to się liczy maksimum parametrów nazwanych, jak nienazwanych. Na podstawie tego mamy policzony odpowiednio taki koniec liczenia modyfikacji zwracany i policzony przez tą funkcję. ; Parametr {{Code|dodatkowe}}{{dk}} * To maksimum parametrów nazwanych, dla jakieś podstawy parametrów, są pomijane parametry z: {{Code|dodatkowe}}, która jest zestawem podstaw parametrów oddzielonych średnikami, jest właśnie podany ten parametr w nim. Przykładem jego jest: * {{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. ; Format parametru {{Parametr|parametry}}{{dk}} * 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 równa liczbie {{Code|5}}, oddzielonych średnikami. ; Opis parametru {{Parametr|parametry}}{{dk}} 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 w wartościach: {{Code|zmienna 1>}}, {{Code|<zmienna 2>}} i {{Code|<zmienna 3>}}, w których są pewne nazwy bazowe parametrów bez numerka na jej końcu, w zmiennej {{Code|parametry}} można nie podawać dalszych elementów 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ć nawet tego znaku,gdy nic nie ma po równa się) dla danego problemu funkcji. ; Wikikod pojedynczego kroku liczenia całości wygenerowanego wikikodu dla wszystkich zmiennych{{dk}} * 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)}}. ; Parametr {{Parametr|start}}, wartość początkowa{{dk}} * Gdy parametr {{Code|tonumber(frame.args["start"]) or 1}}, jest równy zero, funkcja zwraca błąd: {{Code|(początek jest ustawiony na zero)}}. ; Brak parametrów szablonu{{dk}} * 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. ; Parametr {{Parametr|nic}}{{dk}} * Gdy {{Code|nic}} przyjmuje wartość, i gdy pomijamy parametr, lub on przyjmuje wartość pustą, wtedy a funkcja nie może wygenerować żadnego kroku iteracji, to wtedy jest zwracana wartość parametru {{Code|nic}} lub ciąg pusty. ; Inne parametry{{dk}} * Parametr {{Code|po kolei}} {{Patrz|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|zaznacz}} {{Patrz|zaznacz}} - liczby oddzielone średnikami, które przy parametrach nazwanych o pewnych numerach i numerkach nie mają być uwzględnione przy niepustym parametrze {{Code|po kolei}} {{LinkPatrz|po kolei}}, a przy jego przeciwnej wartości za to mają być użyte. * 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}} {{Patrz|_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 wikikodami, wtedy ta funkcja używa do tego liczenia{{dk}} * Jest to funkcja {{LinkŚródtytuł|BudowaSzereguZDanych}}. * Wywołanie funkcji jest takie: {{Pre|lancuch_znakow {{=}} BudowaSzereguZDanych(frame,tab_lancuch,minimum or 0,maksimum);}} ; Parametry funkcji {{LinkŚródtytuł|BudowaSzereguZDanych}}. * One są wraz z jego parametrami podane w postaci jego parametrów ramki {{Code|frame}}, które jednocześnie są parametrami {{LinkŚródtytuł|p.Powtarzaj}}, używa się je 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ą {{LzLua|frame:preprocess}}, i jest zwracany jako wartość omawianej funkcji. ; Przykłady{{dk}} * Funkcja jest używana np. w silnikach szablonów, np.: {{s|Osobny artykuł/silnik}} szablonu {{s|Osobny artykuł}}, jak i do niego 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}}. === {{Śródtytuł|p.PowtarzajOdDo}}{{Code|p.PowtarzajOdDo}} === Funkcja służy do iteracji, od jakieś liczby do jakieś innej, podanego wikikodu dla danego kroku {{Code|1}}, iterując to, co krok określony zmienną: {{Code|krok}}. * 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ę{{dk}} {{nobold|{{Code|{{m|Ramka|Rozwiń}}}}}}, lub go rozwija na końcu, na podstawie kolejnych kroków iteracji{{dk}} * {{Code|start}} - początek iteracji dokonywany przez ta funkcję, * {{Code|koniec}} - koniec iteracji dokonywany przez ta funkcję, * {{Code|krok}} - krok iteracji, co który numer 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{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}} * {{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ą{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}} * {{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{{dk}} {{nobold|{{s|Chem/silnik}}}}, w tym nadrzędnym{{dk}} {{nobold|{{s|Chem}}}}, przykłady jego działania{{dk}} * {{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. === {{Śródtytuł|p["PrzetwarzajIterującCiąg"]}}{{Code|p["PrzetwarzajIterującCiąg"]}} === Funkcja do iteracji wikikodu po parametrach oddzielonych średniami w parametrze ramki {{Code|cią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{{dk}} * {{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{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}} * {{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ą{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}} * {{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>}} jest kolejny parametr, oddzielonych od pozastałych średniami, z: {{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}}: {{LzLua|frame:preprocess}}, jeśli: {{Code|nie rozwiń}}, nie przybiera wartości niepustej. === {{Śródtytuł|p["PowtarzajWedług"]}}{{Code|p["PowtarzajWedług"]}} === Funkcja wyszukująca elementy według wzoru począwszy od numeru, określonego przez {{Code|start}}, aż do zakończenia danych kolenych sprawdzania od tej liczby, czy taka strona istnieje, numerek jest określony przez pewien wikikod, określony przez {{Code|<nowiki>{{_}}</nowiki>}}, którymusi być podany we wzorze {{Code|wzor}}. Ona w ten sposób dla istniejących stron ustawia pewne łańcuchy, które są łączone znakami {{Code|", "}}, a na końcu samym {{Code|" i "}}. 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 strony{{dk}} {{nobold|„{{Ns:Template}}{{dk}}Polecane książki/”}}, a oto przykład{{dk}}{{nobold|{{Parametr|wzór|{{Ns:Template}}{{dk}}Polecane książki/{{((}}_{{))}}}}}}{{dk}} * {{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}}}} == {{Śródtytuł|p["LiczbaPrawychUkośników"]}}{{Code|p["LiczbaPrawychUkośników"]}} == Funkcja liczy, ile jest prawych ukośników w adresie strony podany jako pierwszy parametr ramki. * 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. ; Parametry fubkcji{{dk}} * {{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}}}} == {{Śródtytuł|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}}{{Code|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}} == Funkcja liczy maksymalny numer kolejnej strony liczonej według wzoru {{Code|wzor}}, musi być we wzorze podany element {{Code|<nowiki>{{_}}</nowiki>}}, aby mógł to robić. * 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/”, czyli dla stron o ogólnym wzorze: {{Parametr|wzór|{{Ns:Template}}:Polecane książki/{{((}}_{{))}}}}. ; Parametry funkcji{{dk}} * {{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 == === {{Śródtytuł|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}}{{Code|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}} === Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy minimalny numer takiej zmiennej. * 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*)}}. ; Parametry funkcji{{dk}} * {{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}}}} === {{Śródtytuł|p.IleJestTakichOdpowiednikowychZmiennych}}{{Code|p.IleJestTakichOdpowiednikowychZmiennych}} === Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy ile jest takich zmiennych. * 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. ; Parametry funkcji{{dk}} * {{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}}}} == {{Śródtytuł|p["Parametr w tablicy nazw"]}}{{Code|p["Parametr w tablicy nazw"]}} == Funkcja bada, czy jest taki parametr {{Code|pozycja}} w tablicy nazw określonej zmienną {{Code|parametry}}, której elementy są oddzielone średnikami. * 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. ; Parametry funkcji{{dk}} * {{Code|parametry}} - lista parametrów oddzielonych średnikiem, * {{Code|pozycja}} - szukana lista w tablicy parametrów, * {{Code|od dużej}} - czy parametr: {{Code|pozycja}}, i elementy listy: {{Code|parametry}}, 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}}, a to ostatnie jest to wartość języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, która po transformacji na wikikod jest zamieniana na ciąg pusty, więc ona nadaje się do instrukcji warunkowych. === 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> re6zonuzxzwzhhxm98o6zf83mhyiz2u 553394 553393 2026-08-29T20:06:06Z Persino 2851 553394 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. Funkcje, w tym module, uruchamia się tylko w ramce w szablonie, bo są tylko do tego przygotowane. One służą do powtarzania parametrów rodzica, czy przodka, iteracji pojedynczego kroku wikikodu, jakiś sprawdzeń itp.. == Funcje lokalne modułu == === {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} === Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, tylko w module {{Code|{{ld2|Ramka}}}}, szablonów, modułów i parserów w ramce. Uruchamiana jest przez funkcje: {{LinkŚródtytuł|p.Szablon}} - funkcja do uruchamiania szablonów, {{LinkŚródtytuł|p["Moduł"]}} - funkcja do uruchamiania modułów, i {{LinkŚródtytuł|p.Parser}} - funkcja do uruchamiania parserów. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ParserBlokowy(frame, co_ma_wywolac)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} {{Patrz|frame}} - funkcja ramkki funkcji tablica transportu modułu, * {{Code|co_ma_wywolac}} {{Patrz|co_ma_wywolac}} - ten parametr przyjmuje wartość liczbową, która jeżeli {{Tt|0}} - to uruchamiany jest szablon, jeżeli {{Tt|1}} - moduł, jeżeli {{Code|2}} - to parser, jeżeli on ma inne wartości, tzn.: {{Tt|2}}, a {{Tt|3}} i dalej, to już dany szablon. ; Parametry funkcji ramki: * Parametry podstawowe: ** {{Code|Nazwa}} {{Patrz|Nazwa}} - jest to pełna nazwa szablonu, modułu, czy parsera, ** {{Code|bez argumentów rodzica}} {{Patrz|bez argumentów rodzica}} - tablica parametrów oddzielonych średnikami, których obiekt uruchamiany nie może przyjmować, nawet jeżeli one są, ** {{Code|nazwa szablonu rodzica}} {{Patrz|nazwa szablonu rodzica}} - jest to zmienna przechowująca nazwę szablonu rodzica ramki dziecka,a nawet któreś z jego przodków, ** {{Code|bez argumentów nienazwanych rodzica}} {{Patrz|bez argumentów nienazwanych rodzica}} - szablon w ramce nie przyjmuje parametrów nienazwanych, określonych liczbą, podanych w rodzicu ramki, ** {{Code|potomek}} {{Patrz|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}} {{Patrz|nie potomek}} - zmienna mówiąca, że to nie jest potomek szablonu, używana, gdy nie jest określona zmienna ramki {{LinkPatrz|zmienna z parametrami rodzica}}, wtedy taka ramka jest traktowana jak normalna ramka, której jedynie trzeba przekazać parametry rodzica, nie przodka, wtedy do niej nie są przekazywane parametry: {{LinkPatrz|parametry rodzica}} (ta zmienna jest wtedy ustawiana, gdy nie jest niepusty parametr {{LinkPatrz|bez dodatkowych sprawdzeń}}), {{LinkPatrz|bez argumentów szablonu}}, i {{LinkPatrz|nazwa szablonu rodzica}} (jeśli ta wartość rodzica nie istnieje, to nadawana jest jej aktualna nazwa szablonu rodzica, a nie przodka, normalnie jest to przodka, a w szczególności rodzica) i {{LinkPatrz|potomek}} (ustawiany na stałą wartość niepustą), ** {{Code|bez argumentów szablonu}} {{Patrz|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ń}} {{Patrz|bez dodatkowych sprawdzeń}} - nie jest uruchamiana walidacja parametrów szablonu rodzica, ** {{Code|parametry rodzica}} {{Patrz|parametry rodzica}} - zmienna przedstawiająca parametry rodzica, czy któreś ze przodków, przekazane do ramki: {{m|Sprawdź|Parametry}} - dodane przez tę funkcję, ** {{Code|zmienna z parametrami rodzica}} {{Patrz|zmienna z parametrami rodzica}} - parametr mówiący, czy ma tworzyć zmienne z parametrami rodzica {{LinkPatrz|parametry rodzica}}, a jeżeli nie jest on, z zadnych z jego potomków podany, to zmienna {{LinkPatrz|parametry rodzica}} jest przekazywana na kolejnego przodka, ** {{Code|zmienna z argumentami ramki}} {{Patrz|zmienna z argumentami ramki}} - zmienna mówiąca, czy mają być tworzone parametry ramki, które nie są sprawdzane 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}} {{Patrz|zmienna z nazwą szablonu rodzica}} - parametr, czy ma tworzyć zmienną: {{LinkPatrz|nazwa szablonu rodzica}}, ** {{Code|parametry funkcji modułu pudełek}} {{Patrz|parametry funkcji modułu pudełek}} - czy do funkcji mają wchodzić parametry modułu pudełek, które są ponumerowane dodatkowym numerkiem, ** {{Code|parametry podstawowe funkcji modułu pudełek}} {{Patrz|parametry podstawowe funkcji modułu pudełek}} - czy do funkcji mają wchodzić podstawowe parametry funkcji modułu pudełek, te które nie mają dodatkowego numerka, ** {{Code|usuń z parametrów ramki}} {{Patrz|usuń z parametrów ramki}} - parametry ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, przedstawiający zmienne oddzielone średnikami, które nie mają być uwzględnione przy uruchamianiu danego obiektu. * {{Code|Funkcja}} {{Patrz|Funkcja}} - nazwa funkcji w module, który ma wywołać w ramce ta funkcja, w przypadku, gdy parametr {{LinkPatrz|co_ma_wywolac}} ma wartość {{Tt|1}}, czyli wywołujemy funkcję {{LinkŚródtytuł|p["Moduł"]}}. Funkcja uruchamia szablon, moduł, czy ramkę, w zależności od drugiego parametru funkcji, z parametrami rodzica ramki bez parametrów opisanych zmienną: {{LinkPatrz|bez argumentów szablonu}}, i bez parametrów wskazanych przez zmienną: {{Code|usuń z parametrów ramki}}. Za pomocą tej funkcji możemy wielopoziomowo wywoływać funkcje przekazując parametry od najwyższego poziomu do najniższego. Ta funkcja służy przede wszystkim 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 do uruchamiania szablonów, a uruchamianie funkcji modułu, w tym funkcji {{m|Cytuj|custom}} w szablonie {{s|PrzypisStrona}}. Przykładem wywołania szablonu, która jest w szablonie: {{s|Wzór}}, w którym jest wywoływany inny szablon, tym razem silnik, tzn. {{s|Wzór/silnik}}: <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> === {{Śródtytuł|BudowaSzereguZDanych}}{{Code|BudowaSzereguZDanych}} === Funkcja do uruchamiania się 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> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tab_lancuch}} {{Patrz|tab_lancuch}} - pewna tablica transportu funkcji. * Zmienne do mikroszablonów: ** {{Code|minimum}} {{Patrz|minimum}} - liczba mówiąca o minimum, ** {{Code|maksimum}} {{Patrz|maksimum}} - liczba mówiąca o maksimum. Parametry ramki funkcji tablicy transportu modułu: * {{Code|akapit}} {{Patrz|akapit}} - jeśli niepusta, to ona definiuje akapit ze znaków {{Code|\n\n}}, przeciwnym wypadku elementy łańcucha nie są łączone w akapity, * {{Code|przecinek}} {{Patrz|przecinek}} - jeśli niepuste, to mówi, że pomiędzy elementami powiniem być przecinek: {{Code|", "}}, został on specjalnie objęty w cudzysłowy, aby zilustrować, że po przecinku znajduje się spacja, * {{Code|nowa linia}} {{Patrz|nowa linia}} - w przeciwieństwo do zmiennej {{LinkPatrz|akapit}}, używany zamiast niej, pisze jedną nową linię, a nie dwie, jako: {{Code|\n}}, * {{Code|wyliczanka}} {{Patrz|wyliczanka}} - wylicza elementy z przecinkami, stawiając przed ostatnim elementem zamiast jego wyraz wyliczania {{Code|i}}, * {{Code|początek}} {{Patrz|początek}} - mówi, że na początku musi znajdować się przecinek, * {{Code|myślnik}} {{Patrz|myślnik}} - mówi, że jeśli nie ma początku przecinka, to stawiany jest myślnik, używany zamiast {{LinkPatrz|początek}}, * {{Code|warunkowe}} {{Patrz|warunkowe}} - instrukcje wikikodu, takie jak: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}, zostaną w kodzie rozwinięte, a później ciągłe właściwe elementy wikikodu otoczone dwoma dolnymi myślnikami zostaną rozwinięte do pewnej postaci, funkcja używa do tego {{LinkŚródtytuł|p.InstrukcjeWarunkowe}}, ** {{Code|parametr}} {{Patrz|parametr}} - używany w towarzystwie z {{LinkPatrz|warunkowe}}, mówiący że, derektywy znakowe ciągłe otoczone dwoma dolnymi myślnikami, zostaną zastąpione odpowiedmimi szablonami, w przeciwnym wypadku niepodania tej wartości lub jego pustej, wtedy te derektywy zostaną zastąpione w postaci rozwiniętej tych szablonów. ** Funkcja w tym warunku zwraca ciąg znaków rozwiniętego warunku. Funkcja posiada też mikroszablony, które są zdefiniowane w kodzie łańcuchów {{LinkPatrz|tab_lancuch}}: * {{Code|<nowiki>{{min}}</nowiki>}} - minimalna wartość szeregu zmiennych, określana przez {{LinkPatrz|minimum}}, * {{Code|<nowiki>{{max}}</nowiki>}} - a tutaj ich maksymalna, określana przez {{LinkPatrz|maksimum}}. Te dwie zmienne są podstawiane do uzyskanego ciągu. Funkcja zwraca te części rozwiniętego tekstu wikikodu, jeśli podano {{LinkPatrz|warunkowe}}, co do instrukcji warunkowych i te bez wewnętrznych klamerek - specjalne kody, czyki te otoczone z dwóch stron dolnumi myślnikami, a pozostałe część jest za to nierozwinięta. == {{Śródtytuł|p.InstrukcjeWarunkowe}}{{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}} {{Patrz|ciag}} - podany ciąg do rozwinięcia z instrukcji warunkowych wewnątrz nie posiadający klamerek, * {{Code|derektywy_specjalne}} {{Patrz|derektywy_specjalne}} - używa do zastępowania specjalnych derektyw, podane po prawej stronie w ramce pływającej, * {{Code|derektywy_parametrowe}} {{Patrz|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: {{LinkŚródtytuł|BudowaSzereguZDanych}}, poprzez: {{LinkŚródtytuł|p.Powtarzaj}}. 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 == === {{Śródtytuł|p.RozpakujArgumenty}}{{Code|p.RozpakujArgumenty}} === Funkcje uruchamia się 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. === {{Śródtytuł|p.PakujParametry}}{{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> Parametry funkcji: * {{Code|args}} {{Patrz|args}} - tablica {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. 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}}, z użyciem funkcji: {{LzLua|mw.text.jsonEncode}}, z drugim parametrem: {{Code|mw.text.JSON_PRESERVE_KEYS}} {{Patrz|mw.text.JSON_PRESERVE_KEYS}}. === {{Śródtytuł|p.RozpakujParametry}}{{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 w niej zwracany. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.RozpakujParametry = function (zmienna_z_parametrami) return mw.text.jsonDecode(zmienna_z_parametrami,mw.text.JSON_PRESERVE_KEYS); end; </syntaxhighlight> Parametry funkcji: * {{Code|zmienna_z_parametrami}} {{Patrz|zmienna_z_parametrami}} - tablica {{Code|JSON}}. 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}}, z użyciem funkcji: {{LzLua|mw.text.jsonDecode}}, z użzyciem drugiego parametru: {{LinkPatrz|mw.text.JSON_PRESERVE_KEYS}}. == {{Śródtytuł|p["Rozwiń"]}}{{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> Parameetry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon rozwija wikikod podany w zmiennej {{Code|1}}, w parametrach szablonu rodzica. * 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}}: <syntaxhighlight lang="lua"> p["Rozwiń"] = function(frame) return frame:getParent():preprocess(frame.args[1]); end; </syntaxhighlight> == {{Śródtytuł|p.Log}}{{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> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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}}: <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 == === {{Śródtytuł|p.Szablon}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p.Szablon = function(frame) return ParserBlokowy(frame,0); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Szablon|Nazwa=<nazwa szablonu>|...}} </syntaxhighlight> === {{Śródtytuł|p["Moduł"]}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p["Moduł"] = function(frame) return ParserBlokowy(frame,1); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Moduł|Nazwa=<nazwa modułu>|Funkcja=<nazwa funkcji>|...}} </syntaxhighlight> === {{Śródtytuł|p.Parser}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p.Parser = function(frame) return ParserBlokowy(frame,2); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Parser|Nazwa=<nazwa parsera>|...}} </syntaxhighlight> == Funkcje książkowe == === {{Śródtytuł|p.Q}}{{Code|p.Q}} === Funkcja uruchamia szablon o podanej nazwie w pierwszym parametrze z przedrostkiem {{Code|Książka:}} przed nazwą szablonu. Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.Q =function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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ą (parametry nazwane, które są wliczane 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}}}} === {{Śródtytuł|p.N}}{{Code|p.N}} === Funkcja uruchamiana we wnętrzu szablonu {{s|N}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on. Funkcja przed nazwą szablonu, czy modułu, zostawia w wpis w postaci przedrostka {{Code|Książka:}}. Czy zostanie dodana przed tym nazwa przestrzeni nazw, to zależy od niepodania niepustej zmiennej {{Parametr|n}}, a zmienna {{Parametr|p|1}} - to przed nim jest dodawana przestrzeń nazw szablonu {{Np|Template|link=tak}}, {{Parametr|p|2}} - modułu {{Np|Module|link=tak}} i {{Parametr|p|3}} - kategorii. Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.N=function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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}}}} === {{Śródtytuł|p.A}}{{Code|p.A}} === Funkcja uruchamiana we wnętrzu szablonu {{s|A}}, która przyjmuje jego parametry, i tak samo działa, jak on. Funkcja usuwa przedrostek {{Code|Książka:}} w nazwie szablonu, czy modułu. Gdy jest podany parametr: {{Parametr|p|tak}}, to dla przestrzeni niebędących: {{Np|Template|link=tak}}, {{Np|Module|link=tak}} i {{Np|Category|link=tak}}, jest zwracany wtedy przez nią parametr pierwszy fukcji, dla tych wartości właśnie wyliczonych przestrzeni usuwany jest przedristek {{Code|Książka:}}. Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.A=function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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 == === {{Śródtytuł|p.Powtarzaj}}{{Code|p.Powtarzaj}} === Funkcja służy do powtarzalnego generowania wikikodu ze składników jego kroku przy pomocy określonych zmiennych rodzica. * Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.Powtarzaj = function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Funkcja może przyjmować tylko parametry nienazwane albo tylko nazwane, albo nienazwane i nazwane (gdy jest ustawiony parametr {{Code|różne}} {{Patrz|różne}}). 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}} {{LinkPatrz|różne}}, która wtedy ma wskazywać na wartość niepustą. ; Najważniejsze parametry, które są to opcjonalne, to są{{dk}} * {{Code|start}} {{Patrz|start}} - liczba, która wskazuje początek liczenia - domyślna wartość to {{Code|1}}, * {{Code|koniec}} {{Patrz|koniec}} - liczba, która wskazuje koniec liczenia. ; Numer końca liczenia parametrów nienazwanych lub nazwanych, czy nazwanychi nienazwanych{{dk}} * Elementy w {{Code|parametry}} {{Patrz|parametry}} mogą modyfikować odpowiednio parametry: {{LinkPatrz|start}} i {{LinkPatrz|koniec}}. * Ze zmiennej {{LinkPatrz|parametry}} jest liczona odpowiednia zmienna {{LinkPatrz|tabela}} dopuzczalnych zmiennych do liczenia. * Funkcja {{Code|Wylicz_skoncz_na_koncu}},którego algorytm podomy w tej poyzcji, tzn. koniec liczenia parametrów nienazwanych musi być policzony, jeżeli nie ma parametrów nazwanych w tabeli {{Code|tabela}} {{Patrz|tabela}}. A przeciwnie, jeżeli nie jest ustawiony parametr {{Code|różne}} {{LinkPatrz|różne}} nie na wartość niepustą, wtedy jest liczony parametr maksimum parametrów nazwanych, przeciwnie wtedy liczy się parametr maksimum numeracyjne parametrów numerowanych, czyli zmienną: {{Code|maksimum numeracyjne}} {{Patrz|maksimum numeracyjne}}, jeśli on ma wartość niepustą, wtedy liczy się maksimum parametrów nienazwanych, a jeżeli ona ma przeciwną wartość, to się liczy maksimum parametrów nazwanych, jak nienazwanych. Na podstawie tego mamy policzony odpowiednio taki koniec liczenia modyfikacji zwracany i policzony przez tą funkcję. ; Parametr {{Code|dodatkowe}}{{dk}} * To maksimum parametrów nazwanych, dla jakieś podstawy parametrów, są pomijane parametry z: {{Code|dodatkowe}}, która jest zestawem podstaw parametrów oddzielonych średnikami, jest właśnie podany ten parametr w nim. Przykładem jego jest: * {{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. ; Format parametru {{Parametr|parametry}}{{dk}} * 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 równa liczbie {{Code|5}}, oddzielonych średnikami. ; Opis parametru {{Parametr|parametry}}{{dk}} 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 w wartościach: {{Code|zmienna 1>}}, {{Code|<zmienna 2>}} i {{Code|<zmienna 3>}}, w których są pewne nazwy bazowe parametrów bez numerka na jej końcu, w zmiennej {{Code|parametry}} można nie podawać dalszych elementów 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ć nawet tego znaku,gdy nic nie ma po równa się) dla danego problemu funkcji. ; Wikikod pojedynczego kroku liczenia całości wygenerowanego wikikodu dla wszystkich zmiennych{{dk}} * 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)}}. ; Parametr {{Parametr|start}}, wartość początkowa{{dk}} * Gdy parametr {{Code|tonumber(frame.args["start"]) or 1}}, jest równy zero, funkcja zwraca błąd: {{Code|(początek jest ustawiony na zero)}}. ; Brak parametrów szablonu{{dk}} * 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. ; Parametr {{Parametr|nic}}{{dk}} * Gdy {{Code|nic}} przyjmuje wartość, i gdy pomijamy parametr, lub on przyjmuje wartość pustą, wtedy a funkcja nie może wygenerować żadnego kroku iteracji, to wtedy jest zwracana wartość parametru {{Code|nic}} lub ciąg pusty. ; Inne parametry{{dk}} * Parametr {{Code|po kolei}} {{Patrz|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|zaznacz}} {{Patrz|zaznacz}} - liczby oddzielone średnikami, które przy parametrach nazwanych o pewnych numerach i numerkach nie mają być uwzględnione przy niepustym parametrze {{Code|po kolei}} {{LinkPatrz|po kolei}}, a przy jego przeciwnej wartości za to mają być użyte. * 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}} {{Patrz|_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 wikikodami, wtedy ta funkcja używa do tego liczenia{{dk}} * Jest to funkcja {{LinkŚródtytuł|BudowaSzereguZDanych}}. * Wywołanie funkcji jest takie: {{Pre|lancuch_znakow {{=}} BudowaSzereguZDanych(frame,tab_lancuch,minimum or 0,maksimum);}} ; Parametry funkcji {{LinkŚródtytuł|BudowaSzereguZDanych}}. * One są wraz z jego parametrami podane w postaci jego parametrów ramki {{Code|frame}}, które jednocześnie są parametrami {{LinkŚródtytuł|p.Powtarzaj}}, używa się je 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ą {{LzLua|frame:preprocess}}, i jest zwracany jako wartość omawianej funkcji. ; Przykłady{{dk}} * Funkcja jest używana np. w silnikach szablonów, np.: {{s|Osobny artykuł/silnik}} szablonu {{s|Osobny artykuł}}, jak i do niego 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}}. === {{Śródtytuł|p.PowtarzajOdDo}}{{Code|p.PowtarzajOdDo}} === Funkcja służy do iteracji, od jakieś liczby do jakieś innej, podanego wikikodu dla danego kroku {{Code|1}}, iterując to, co krok określony zmienną: {{Code|krok}}. * 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ę{{dk}} {{nobold|{{Code|{{m|Ramka|Rozwiń}}}}}}, lub go rozwija na końcu, na podstawie kolejnych kroków iteracji{{dk}} * {{Code|start}} - początek iteracji dokonywany przez ta funkcję, * {{Code|koniec}} - koniec iteracji dokonywany przez ta funkcję, * {{Code|krok}} - krok iteracji, co który numer 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{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}} * {{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ą{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}} * {{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{{dk}} {{nobold|{{s|Chem/silnik}}}}, w tym nadrzędnym{{dk}} {{nobold|{{s|Chem}}}}, przykłady jego działania{{dk}} * {{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. === {{Śródtytuł|p["PrzetwarzajIterującCiąg"]}}{{Code|p["PrzetwarzajIterującCiąg"]}} === Funkcja do iteracji wikikodu po parametrach oddzielonych średniami w parametrze ramki {{Code|cią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{{dk}} * {{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{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}} * {{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ą{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}} * {{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>}} jest kolejny parametr, oddzielonych od pozastałych średniami, z: {{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}}: {{LzLua|frame:preprocess}}, jeśli: {{Code|nie rozwiń}}, nie przybiera wartości niepustej. === {{Śródtytuł|p["PowtarzajWedług"]}}{{Code|p["PowtarzajWedług"]}} === Funkcja wyszukująca elementy według wzoru począwszy od numeru, określonego przez {{Code|start}}, aż do zakończenia danych kolenych sprawdzania od tej liczby, czy taka strona istnieje, numerek jest określony przez pewien wikikod, określony przez {{Code|<nowiki>{{_}}</nowiki>}}, którymusi być podany we wzorze {{Code|wzor}}. Ona w ten sposób dla istniejących stron ustawia pewne łańcuchy, które są łączone znakami {{Code|", "}}, a na końcu samym {{Code|" i "}}. 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 strony{{dk}} {{nobold|„{{Ns:Template}}{{dk}}Polecane książki/”}}, a oto przykład{{dk}}{{nobold|{{Parametr|wzór|{{Ns:Template}}{{dk}}Polecane książki/{{((}}_{{))}}}}}}{{dk}} * {{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}}}} == {{Śródtytuł|p["LiczbaPrawychUkośników"]}}{{Code|p["LiczbaPrawychUkośników"]}} == Funkcja liczy, ile jest prawych ukośników w adresie strony podany jako pierwszy parametr ramki. * 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. ; Parametry fubkcji{{dk}} * {{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}}}} == {{Śródtytuł|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}}{{Code|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}} == Funkcja liczy maksymalny numer kolejnej strony liczonej według wzoru {{Code|wzor}}, musi być we wzorze podany element {{Code|<nowiki>{{_}}</nowiki>}}, aby mógł to robić. * 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/”, czyli dla stron o ogólnym wzorze: {{Parametr|wzór|{{Ns:Template}}:Polecane książki/{{((}}_{{))}}}}. ; Parametry funkcji{{dk}} * {{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 == === {{Śródtytuł|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}}{{Code|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}} === Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy minimalny numer takiej zmiennej. * 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*)}}. ; Parametry funkcji{{dk}} * {{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}}}} === {{Śródtytuł|p.IleJestTakichOdpowiednikowychZmiennych}}{{Code|p.IleJestTakichOdpowiednikowychZmiennych}} === Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy ile jest takich zmiennych. * 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. ; Parametry funkcji{{dk}} * {{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}}}} == {{Śródtytuł|p["Parametr w tablicy nazw"]}}{{Code|p["Parametr w tablicy nazw"]}} == Funkcja bada, czy jest taki parametr {{Code|pozycja}} w tablicy nazw określonej zmienną {{Code|parametry}}, której elementy są oddzielone średnikami. * 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. ; Parametry funkcji{{dk}} * {{Code|parametry}} - lista parametrów oddzielonych średnikiem, * {{Code|pozycja}} - szukana lista w tablicy parametrów, * {{Code|od dużej}} - czy parametr: {{Code|pozycja}}, i elementy listy: {{Code|parametry}}, 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}}, a to ostatnie jest to wartość języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, która po transformacji na wikikod jest zamieniana na ciąg pusty, więc ona nadaje się do instrukcji warunkowych. === 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> 6gkbw8u88pv1377cwjsg6bdmokz7zud 553395 553394 2026-08-29T20:07:17Z Persino 2851 553395 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. Funkcje, w tym module, uruchamia się tylko w ramce w szablonie, bo są tylko do tego przygotowane. One służą do powtarzania parametrów rodzica, czy przodka, iteracji pojedynczego kroku wikikodu, jakiś sprawdzeń, do liczenia odpowiedników i związanych z tym parametrami, itp.. == Funcje lokalne modułu == === {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} === Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, tylko w module {{Code|{{ld2|Ramka}}}}, szablonów, modułów i parserów w ramce. Uruchamiana jest przez funkcje: {{LinkŚródtytuł|p.Szablon}} - funkcja do uruchamiania szablonów, {{LinkŚródtytuł|p["Moduł"]}} - funkcja do uruchamiania modułów, i {{LinkŚródtytuł|p.Parser}} - funkcja do uruchamiania parserów. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ParserBlokowy(frame, co_ma_wywolac)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} {{Patrz|frame}} - funkcja ramkki funkcji tablica transportu modułu, * {{Code|co_ma_wywolac}} {{Patrz|co_ma_wywolac}} - ten parametr przyjmuje wartość liczbową, która jeżeli {{Tt|0}} - to uruchamiany jest szablon, jeżeli {{Tt|1}} - moduł, jeżeli {{Code|2}} - to parser, jeżeli on ma inne wartości, tzn.: {{Tt|2}}, a {{Tt|3}} i dalej, to już dany szablon. ; Parametry funkcji ramki: * Parametry podstawowe: ** {{Code|Nazwa}} {{Patrz|Nazwa}} - jest to pełna nazwa szablonu, modułu, czy parsera, ** {{Code|bez argumentów rodzica}} {{Patrz|bez argumentów rodzica}} - tablica parametrów oddzielonych średnikami, których obiekt uruchamiany nie może przyjmować, nawet jeżeli one są, ** {{Code|nazwa szablonu rodzica}} {{Patrz|nazwa szablonu rodzica}} - jest to zmienna przechowująca nazwę szablonu rodzica ramki dziecka,a nawet któreś z jego przodków, ** {{Code|bez argumentów nienazwanych rodzica}} {{Patrz|bez argumentów nienazwanych rodzica}} - szablon w ramce nie przyjmuje parametrów nienazwanych, określonych liczbą, podanych w rodzicu ramki, ** {{Code|potomek}} {{Patrz|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}} {{Patrz|nie potomek}} - zmienna mówiąca, że to nie jest potomek szablonu, używana, gdy nie jest określona zmienna ramki {{LinkPatrz|zmienna z parametrami rodzica}}, wtedy taka ramka jest traktowana jak normalna ramka, której jedynie trzeba przekazać parametry rodzica, nie przodka, wtedy do niej nie są przekazywane parametry: {{LinkPatrz|parametry rodzica}} (ta zmienna jest wtedy ustawiana, gdy nie jest niepusty parametr {{LinkPatrz|bez dodatkowych sprawdzeń}}), {{LinkPatrz|bez argumentów szablonu}}, i {{LinkPatrz|nazwa szablonu rodzica}} (jeśli ta wartość rodzica nie istnieje, to nadawana jest jej aktualna nazwa szablonu rodzica, a nie przodka, normalnie jest to przodka, a w szczególności rodzica) i {{LinkPatrz|potomek}} (ustawiany na stałą wartość niepustą), ** {{Code|bez argumentów szablonu}} {{Patrz|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ń}} {{Patrz|bez dodatkowych sprawdzeń}} - nie jest uruchamiana walidacja parametrów szablonu rodzica, ** {{Code|parametry rodzica}} {{Patrz|parametry rodzica}} - zmienna przedstawiająca parametry rodzica, czy któreś ze przodków, przekazane do ramki: {{m|Sprawdź|Parametry}} - dodane przez tę funkcję, ** {{Code|zmienna z parametrami rodzica}} {{Patrz|zmienna z parametrami rodzica}} - parametr mówiący, czy ma tworzyć zmienne z parametrami rodzica {{LinkPatrz|parametry rodzica}}, a jeżeli nie jest on, z zadnych z jego potomków podany, to zmienna {{LinkPatrz|parametry rodzica}} jest przekazywana na kolejnego przodka, ** {{Code|zmienna z argumentami ramki}} {{Patrz|zmienna z argumentami ramki}} - zmienna mówiąca, czy mają być tworzone parametry ramki, które nie są sprawdzane 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}} {{Patrz|zmienna z nazwą szablonu rodzica}} - parametr, czy ma tworzyć zmienną: {{LinkPatrz|nazwa szablonu rodzica}}, ** {{Code|parametry funkcji modułu pudełek}} {{Patrz|parametry funkcji modułu pudełek}} - czy do funkcji mają wchodzić parametry modułu pudełek, które są ponumerowane dodatkowym numerkiem, ** {{Code|parametry podstawowe funkcji modułu pudełek}} {{Patrz|parametry podstawowe funkcji modułu pudełek}} - czy do funkcji mają wchodzić podstawowe parametry funkcji modułu pudełek, te które nie mają dodatkowego numerka, ** {{Code|usuń z parametrów ramki}} {{Patrz|usuń z parametrów ramki}} - parametry ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, przedstawiający zmienne oddzielone średnikami, które nie mają być uwzględnione przy uruchamianiu danego obiektu. * {{Code|Funkcja}} {{Patrz|Funkcja}} - nazwa funkcji w module, który ma wywołać w ramce ta funkcja, w przypadku, gdy parametr {{LinkPatrz|co_ma_wywolac}} ma wartość {{Tt|1}}, czyli wywołujemy funkcję {{LinkŚródtytuł|p["Moduł"]}}. Funkcja uruchamia szablon, moduł, czy ramkę, w zależności od drugiego parametru funkcji, z parametrami rodzica ramki bez parametrów opisanych zmienną: {{LinkPatrz|bez argumentów szablonu}}, i bez parametrów wskazanych przez zmienną: {{Code|usuń z parametrów ramki}}. Za pomocą tej funkcji możemy wielopoziomowo wywoływać funkcje przekazując parametry od najwyższego poziomu do najniższego. Ta funkcja służy przede wszystkim 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 do uruchamiania szablonów, a uruchamianie funkcji modułu, w tym funkcji {{m|Cytuj|custom}} w szablonie {{s|PrzypisStrona}}. Przykładem wywołania szablonu, która jest w szablonie: {{s|Wzór}}, w którym jest wywoływany inny szablon, tym razem silnik, tzn. {{s|Wzór/silnik}}: <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> === {{Śródtytuł|BudowaSzereguZDanych}}{{Code|BudowaSzereguZDanych}} === Funkcja do uruchamiania się 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> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tab_lancuch}} {{Patrz|tab_lancuch}} - pewna tablica transportu funkcji. * Zmienne do mikroszablonów: ** {{Code|minimum}} {{Patrz|minimum}} - liczba mówiąca o minimum, ** {{Code|maksimum}} {{Patrz|maksimum}} - liczba mówiąca o maksimum. Parametry ramki funkcji tablicy transportu modułu: * {{Code|akapit}} {{Patrz|akapit}} - jeśli niepusta, to ona definiuje akapit ze znaków {{Code|\n\n}}, przeciwnym wypadku elementy łańcucha nie są łączone w akapity, * {{Code|przecinek}} {{Patrz|przecinek}} - jeśli niepuste, to mówi, że pomiędzy elementami powiniem być przecinek: {{Code|", "}}, został on specjalnie objęty w cudzysłowy, aby zilustrować, że po przecinku znajduje się spacja, * {{Code|nowa linia}} {{Patrz|nowa linia}} - w przeciwieństwo do zmiennej {{LinkPatrz|akapit}}, używany zamiast niej, pisze jedną nową linię, a nie dwie, jako: {{Code|\n}}, * {{Code|wyliczanka}} {{Patrz|wyliczanka}} - wylicza elementy z przecinkami, stawiając przed ostatnim elementem zamiast jego wyraz wyliczania {{Code|i}}, * {{Code|początek}} {{Patrz|początek}} - mówi, że na początku musi znajdować się przecinek, * {{Code|myślnik}} {{Patrz|myślnik}} - mówi, że jeśli nie ma początku przecinka, to stawiany jest myślnik, używany zamiast {{LinkPatrz|początek}}, * {{Code|warunkowe}} {{Patrz|warunkowe}} - instrukcje wikikodu, takie jak: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}, zostaną w kodzie rozwinięte, a później ciągłe właściwe elementy wikikodu otoczone dwoma dolnymi myślnikami zostaną rozwinięte do pewnej postaci, funkcja używa do tego {{LinkŚródtytuł|p.InstrukcjeWarunkowe}}, ** {{Code|parametr}} {{Patrz|parametr}} - używany w towarzystwie z {{LinkPatrz|warunkowe}}, mówiący że, derektywy znakowe ciągłe otoczone dwoma dolnymi myślnikami, zostaną zastąpione odpowiedmimi szablonami, w przeciwnym wypadku niepodania tej wartości lub jego pustej, wtedy te derektywy zostaną zastąpione w postaci rozwiniętej tych szablonów. ** Funkcja w tym warunku zwraca ciąg znaków rozwiniętego warunku. Funkcja posiada też mikroszablony, które są zdefiniowane w kodzie łańcuchów {{LinkPatrz|tab_lancuch}}: * {{Code|<nowiki>{{min}}</nowiki>}} - minimalna wartość szeregu zmiennych, określana przez {{LinkPatrz|minimum}}, * {{Code|<nowiki>{{max}}</nowiki>}} - a tutaj ich maksymalna, określana przez {{LinkPatrz|maksimum}}. Te dwie zmienne są podstawiane do uzyskanego ciągu. Funkcja zwraca te części rozwiniętego tekstu wikikodu, jeśli podano {{LinkPatrz|warunkowe}}, co do instrukcji warunkowych i te bez wewnętrznych klamerek - specjalne kody, czyki te otoczone z dwóch stron dolnumi myślnikami, a pozostałe część jest za to nierozwinięta. == {{Śródtytuł|p.InstrukcjeWarunkowe}}{{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}} {{Patrz|ciag}} - podany ciąg do rozwinięcia z instrukcji warunkowych wewnątrz nie posiadający klamerek, * {{Code|derektywy_specjalne}} {{Patrz|derektywy_specjalne}} - używa do zastępowania specjalnych derektyw, podane po prawej stronie w ramce pływającej, * {{Code|derektywy_parametrowe}} {{Patrz|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: {{LinkŚródtytuł|BudowaSzereguZDanych}}, poprzez: {{LinkŚródtytuł|p.Powtarzaj}}. 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 == === {{Śródtytuł|p.RozpakujArgumenty}}{{Code|p.RozpakujArgumenty}} === Funkcje uruchamia się 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. === {{Śródtytuł|p.PakujParametry}}{{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> Parametry funkcji: * {{Code|args}} {{Patrz|args}} - tablica {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. 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}}, z użyciem funkcji: {{LzLua|mw.text.jsonEncode}}, z drugim parametrem: {{Code|mw.text.JSON_PRESERVE_KEYS}} {{Patrz|mw.text.JSON_PRESERVE_KEYS}}. === {{Śródtytuł|p.RozpakujParametry}}{{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 w niej zwracany. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.RozpakujParametry = function (zmienna_z_parametrami) return mw.text.jsonDecode(zmienna_z_parametrami,mw.text.JSON_PRESERVE_KEYS); end; </syntaxhighlight> Parametry funkcji: * {{Code|zmienna_z_parametrami}} {{Patrz|zmienna_z_parametrami}} - tablica {{Code|JSON}}. 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}}, z użyciem funkcji: {{LzLua|mw.text.jsonDecode}}, z użzyciem drugiego parametru: {{LinkPatrz|mw.text.JSON_PRESERVE_KEYS}}. == {{Śródtytuł|p["Rozwiń"]}}{{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> Parameetry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon rozwija wikikod podany w zmiennej {{Code|1}}, w parametrach szablonu rodzica. * 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}}: <syntaxhighlight lang="lua"> p["Rozwiń"] = function(frame) return frame:getParent():preprocess(frame.args[1]); end; </syntaxhighlight> == {{Śródtytuł|p.Log}}{{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> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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}}: <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 == === {{Śródtytuł|p.Szablon}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p.Szablon = function(frame) return ParserBlokowy(frame,0); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Szablon|Nazwa=<nazwa szablonu>|...}} </syntaxhighlight> === {{Śródtytuł|p["Moduł"]}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p["Moduł"] = function(frame) return ParserBlokowy(frame,1); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Moduł|Nazwa=<nazwa modułu>|Funkcja=<nazwa funkcji>|...}} </syntaxhighlight> === {{Śródtytuł|p.Parser}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p.Parser = function(frame) return ParserBlokowy(frame,2); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Parser|Nazwa=<nazwa parsera>|...}} </syntaxhighlight> == Funkcje książkowe == === {{Śródtytuł|p.Q}}{{Code|p.Q}} === Funkcja uruchamia szablon o podanej nazwie w pierwszym parametrze z przedrostkiem {{Code|Książka:}} przed nazwą szablonu. Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.Q =function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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ą (parametry nazwane, które są wliczane 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}}}} === {{Śródtytuł|p.N}}{{Code|p.N}} === Funkcja uruchamiana we wnętrzu szablonu {{s|N}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on. Funkcja przed nazwą szablonu, czy modułu, zostawia w wpis w postaci przedrostka {{Code|Książka:}}. Czy zostanie dodana przed tym nazwa przestrzeni nazw, to zależy od niepodania niepustej zmiennej {{Parametr|n}}, a zmienna {{Parametr|p|1}} - to przed nim jest dodawana przestrzeń nazw szablonu {{Np|Template|link=tak}}, {{Parametr|p|2}} - modułu {{Np|Module|link=tak}} i {{Parametr|p|3}} - kategorii. Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.N=function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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}}}} === {{Śródtytuł|p.A}}{{Code|p.A}} === Funkcja uruchamiana we wnętrzu szablonu {{s|A}}, która przyjmuje jego parametry, i tak samo działa, jak on. Funkcja usuwa przedrostek {{Code|Książka:}} w nazwie szablonu, czy modułu. Gdy jest podany parametr: {{Parametr|p|tak}}, to dla przestrzeni niebędących: {{Np|Template|link=tak}}, {{Np|Module|link=tak}} i {{Np|Category|link=tak}}, jest zwracany wtedy przez nią parametr pierwszy fukcji, dla tych wartości właśnie wyliczonych przestrzeni usuwany jest przedristek {{Code|Książka:}}. Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.A=function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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 == === {{Śródtytuł|p.Powtarzaj}}{{Code|p.Powtarzaj}} === Funkcja służy do powtarzalnego generowania wikikodu ze składników jego kroku przy pomocy określonych zmiennych rodzica. * Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.Powtarzaj = function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Funkcja może przyjmować tylko parametry nienazwane albo tylko nazwane, albo nienazwane i nazwane (gdy jest ustawiony parametr {{Code|różne}} {{Patrz|różne}}). 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}} {{LinkPatrz|różne}}, która wtedy ma wskazywać na wartość niepustą. ; Najważniejsze parametry, które są to opcjonalne, to są{{dk}} * {{Code|start}} {{Patrz|start}} - liczba, która wskazuje początek liczenia - domyślna wartość to {{Code|1}}, * {{Code|koniec}} {{Patrz|koniec}} - liczba, która wskazuje koniec liczenia. ; Numer końca liczenia parametrów nienazwanych lub nazwanych, czy nazwanychi nienazwanych{{dk}} * Elementy w {{Code|parametry}} {{Patrz|parametry}} mogą modyfikować odpowiednio parametry: {{LinkPatrz|start}} i {{LinkPatrz|koniec}}. * Ze zmiennej {{LinkPatrz|parametry}} jest liczona odpowiednia zmienna {{LinkPatrz|tabela}} dopuzczalnych zmiennych do liczenia. * Funkcja {{Code|Wylicz_skoncz_na_koncu}},którego algorytm podomy w tej poyzcji, tzn. koniec liczenia parametrów nienazwanych musi być policzony, jeżeli nie ma parametrów nazwanych w tabeli {{Code|tabela}} {{Patrz|tabela}}. A przeciwnie, jeżeli nie jest ustawiony parametr {{Code|różne}} {{LinkPatrz|różne}} nie na wartość niepustą, wtedy jest liczony parametr maksimum parametrów nazwanych, przeciwnie wtedy liczy się parametr maksimum numeracyjne parametrów numerowanych, czyli zmienną: {{Code|maksimum numeracyjne}} {{Patrz|maksimum numeracyjne}}, jeśli on ma wartość niepustą, wtedy liczy się maksimum parametrów nienazwanych, a jeżeli ona ma przeciwną wartość, to się liczy maksimum parametrów nazwanych, jak nienazwanych. Na podstawie tego mamy policzony odpowiednio taki koniec liczenia modyfikacji zwracany i policzony przez tą funkcję. ; Parametr {{Code|dodatkowe}}{{dk}} * To maksimum parametrów nazwanych, dla jakieś podstawy parametrów, są pomijane parametry z: {{Code|dodatkowe}}, która jest zestawem podstaw parametrów oddzielonych średnikami, jest właśnie podany ten parametr w nim. Przykładem jego jest: * {{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. ; Format parametru {{Parametr|parametry}}{{dk}} * 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 równa liczbie {{Code|5}}, oddzielonych średnikami. ; Opis parametru {{Parametr|parametry}}{{dk}} 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 w wartościach: {{Code|zmienna 1>}}, {{Code|<zmienna 2>}} i {{Code|<zmienna 3>}}, w których są pewne nazwy bazowe parametrów bez numerka na jej końcu, w zmiennej {{Code|parametry}} można nie podawać dalszych elementów 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ć nawet tego znaku,gdy nic nie ma po równa się) dla danego problemu funkcji. ; Wikikod pojedynczego kroku liczenia całości wygenerowanego wikikodu dla wszystkich zmiennych{{dk}} * 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)}}. ; Parametr {{Parametr|start}}, wartość początkowa{{dk}} * Gdy parametr {{Code|tonumber(frame.args["start"]) or 1}}, jest równy zero, funkcja zwraca błąd: {{Code|(początek jest ustawiony na zero)}}. ; Brak parametrów szablonu{{dk}} * 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. ; Parametr {{Parametr|nic}}{{dk}} * Gdy {{Code|nic}} przyjmuje wartość, i gdy pomijamy parametr, lub on przyjmuje wartość pustą, wtedy a funkcja nie może wygenerować żadnego kroku iteracji, to wtedy jest zwracana wartość parametru {{Code|nic}} lub ciąg pusty. ; Inne parametry{{dk}} * Parametr {{Code|po kolei}} {{Patrz|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|zaznacz}} {{Patrz|zaznacz}} - liczby oddzielone średnikami, które przy parametrach nazwanych o pewnych numerach i numerkach nie mają być uwzględnione przy niepustym parametrze {{Code|po kolei}} {{LinkPatrz|po kolei}}, a przy jego przeciwnej wartości za to mają być użyte. * 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}} {{Patrz|_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 wikikodami, wtedy ta funkcja używa do tego liczenia{{dk}} * Jest to funkcja {{LinkŚródtytuł|BudowaSzereguZDanych}}. * Wywołanie funkcji jest takie: {{Pre|lancuch_znakow {{=}} BudowaSzereguZDanych(frame,tab_lancuch,minimum or 0,maksimum);}} ; Parametry funkcji {{LinkŚródtytuł|BudowaSzereguZDanych}}. * One są wraz z jego parametrami podane w postaci jego parametrów ramki {{Code|frame}}, które jednocześnie są parametrami {{LinkŚródtytuł|p.Powtarzaj}}, używa się je 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ą {{LzLua|frame:preprocess}}, i jest zwracany jako wartość omawianej funkcji. ; Przykłady{{dk}} * Funkcja jest używana np. w silnikach szablonów, np.: {{s|Osobny artykuł/silnik}} szablonu {{s|Osobny artykuł}}, jak i do niego 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}}. === {{Śródtytuł|p.PowtarzajOdDo}}{{Code|p.PowtarzajOdDo}} === Funkcja służy do iteracji, od jakieś liczby do jakieś innej, podanego wikikodu dla danego kroku {{Code|1}}, iterując to, co krok określony zmienną: {{Code|krok}}. * 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ę{{dk}} {{nobold|{{Code|{{m|Ramka|Rozwiń}}}}}}, lub go rozwija na końcu, na podstawie kolejnych kroków iteracji{{dk}} * {{Code|start}} - początek iteracji dokonywany przez ta funkcję, * {{Code|koniec}} - koniec iteracji dokonywany przez ta funkcję, * {{Code|krok}} - krok iteracji, co który numer 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{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}} * {{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ą{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}} * {{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{{dk}} {{nobold|{{s|Chem/silnik}}}}, w tym nadrzędnym{{dk}} {{nobold|{{s|Chem}}}}, przykłady jego działania{{dk}} * {{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. === {{Śródtytuł|p["PrzetwarzajIterującCiąg"]}}{{Code|p["PrzetwarzajIterującCiąg"]}} === Funkcja do iteracji wikikodu po parametrach oddzielonych średniami w parametrze ramki {{Code|cią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{{dk}} * {{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{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}} * {{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ą{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}} * {{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>}} jest kolejny parametr, oddzielonych od pozastałych średniami, z: {{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}}: {{LzLua|frame:preprocess}}, jeśli: {{Code|nie rozwiń}}, nie przybiera wartości niepustej. === {{Śródtytuł|p["PowtarzajWedług"]}}{{Code|p["PowtarzajWedług"]}} === Funkcja wyszukująca elementy według wzoru począwszy od numeru, określonego przez {{Code|start}}, aż do zakończenia danych kolenych sprawdzania od tej liczby, czy taka strona istnieje, numerek jest określony przez pewien wikikod, określony przez {{Code|<nowiki>{{_}}</nowiki>}}, którymusi być podany we wzorze {{Code|wzor}}. Ona w ten sposób dla istniejących stron ustawia pewne łańcuchy, które są łączone znakami {{Code|", "}}, a na końcu samym {{Code|" i "}}. 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 strony{{dk}} {{nobold|„{{Ns:Template}}{{dk}}Polecane książki/”}}, a oto przykład{{dk}}{{nobold|{{Parametr|wzór|{{Ns:Template}}{{dk}}Polecane książki/{{((}}_{{))}}}}}}{{dk}} * {{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}}}} == {{Śródtytuł|p["LiczbaPrawychUkośników"]}}{{Code|p["LiczbaPrawychUkośników"]}} == Funkcja liczy, ile jest prawych ukośników w adresie strony podany jako pierwszy parametr ramki. * 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. ; Parametry fubkcji{{dk}} * {{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}}}} == {{Śródtytuł|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}}{{Code|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}} == Funkcja liczy maksymalny numer kolejnej strony liczonej według wzoru {{Code|wzor}}, musi być we wzorze podany element {{Code|<nowiki>{{_}}</nowiki>}}, aby mógł to robić. * 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/”, czyli dla stron o ogólnym wzorze: {{Parametr|wzór|{{Ns:Template}}:Polecane książki/{{((}}_{{))}}}}. ; Parametry funkcji{{dk}} * {{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 == === {{Śródtytuł|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}}{{Code|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}} === Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy minimalny numer takiej zmiennej. * 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*)}}. ; Parametry funkcji{{dk}} * {{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}}}} === {{Śródtytuł|p.IleJestTakichOdpowiednikowychZmiennych}}{{Code|p.IleJestTakichOdpowiednikowychZmiennych}} === Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy ile jest takich zmiennych. * 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. ; Parametry funkcji{{dk}} * {{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}}}} == {{Śródtytuł|p["Parametr w tablicy nazw"]}}{{Code|p["Parametr w tablicy nazw"]}} == Funkcja bada, czy jest taki parametr {{Code|pozycja}} w tablicy nazw określonej zmienną {{Code|parametry}}, której elementy są oddzielone średnikami. * 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. ; Parametry funkcji{{dk}} * {{Code|parametry}} - lista parametrów oddzielonych średnikiem, * {{Code|pozycja}} - szukana lista w tablicy parametrów, * {{Code|od dużej}} - czy parametr: {{Code|pozycja}}, i elementy listy: {{Code|parametry}}, 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}}, a to ostatnie jest to wartość języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, która po transformacji na wikikod jest zamieniana na ciąg pusty, więc ona nadaje się do instrukcji warunkowych. === 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> m0r815uygjfr685hkg3rdg5j4g8ye4h 553396 553395 2026-08-29T20:09:11Z Persino 2851 /* {{Śródtytuł|p["PrzetwarzajIterującCiąg"]}}{{Code|p["PrzetwarzajIterującCiąg"]}} */ 553396 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. Funkcje, w tym module, uruchamia się tylko w ramce w szablonie, bo są tylko do tego przygotowane. One służą do powtarzania parametrów rodzica, czy przodka, iteracji pojedynczego kroku wikikodu, jakiś sprawdzeń, do liczenia odpowiedników i związanych z tym parametrami, itp.. == Funcje lokalne modułu == === {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} === Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, tylko w module {{Code|{{ld2|Ramka}}}}, szablonów, modułów i parserów w ramce. Uruchamiana jest przez funkcje: {{LinkŚródtytuł|p.Szablon}} - funkcja do uruchamiania szablonów, {{LinkŚródtytuł|p["Moduł"]}} - funkcja do uruchamiania modułów, i {{LinkŚródtytuł|p.Parser}} - funkcja do uruchamiania parserów. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ParserBlokowy(frame, co_ma_wywolac)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} {{Patrz|frame}} - funkcja ramkki funkcji tablica transportu modułu, * {{Code|co_ma_wywolac}} {{Patrz|co_ma_wywolac}} - ten parametr przyjmuje wartość liczbową, która jeżeli {{Tt|0}} - to uruchamiany jest szablon, jeżeli {{Tt|1}} - moduł, jeżeli {{Code|2}} - to parser, jeżeli on ma inne wartości, tzn.: {{Tt|2}}, a {{Tt|3}} i dalej, to już dany szablon. ; Parametry funkcji ramki: * Parametry podstawowe: ** {{Code|Nazwa}} {{Patrz|Nazwa}} - jest to pełna nazwa szablonu, modułu, czy parsera, ** {{Code|bez argumentów rodzica}} {{Patrz|bez argumentów rodzica}} - tablica parametrów oddzielonych średnikami, których obiekt uruchamiany nie może przyjmować, nawet jeżeli one są, ** {{Code|nazwa szablonu rodzica}} {{Patrz|nazwa szablonu rodzica}} - jest to zmienna przechowująca nazwę szablonu rodzica ramki dziecka,a nawet któreś z jego przodków, ** {{Code|bez argumentów nienazwanych rodzica}} {{Patrz|bez argumentów nienazwanych rodzica}} - szablon w ramce nie przyjmuje parametrów nienazwanych, określonych liczbą, podanych w rodzicu ramki, ** {{Code|potomek}} {{Patrz|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}} {{Patrz|nie potomek}} - zmienna mówiąca, że to nie jest potomek szablonu, używana, gdy nie jest określona zmienna ramki {{LinkPatrz|zmienna z parametrami rodzica}}, wtedy taka ramka jest traktowana jak normalna ramka, której jedynie trzeba przekazać parametry rodzica, nie przodka, wtedy do niej nie są przekazywane parametry: {{LinkPatrz|parametry rodzica}} (ta zmienna jest wtedy ustawiana, gdy nie jest niepusty parametr {{LinkPatrz|bez dodatkowych sprawdzeń}}), {{LinkPatrz|bez argumentów szablonu}}, i {{LinkPatrz|nazwa szablonu rodzica}} (jeśli ta wartość rodzica nie istnieje, to nadawana jest jej aktualna nazwa szablonu rodzica, a nie przodka, normalnie jest to przodka, a w szczególności rodzica) i {{LinkPatrz|potomek}} (ustawiany na stałą wartość niepustą), ** {{Code|bez argumentów szablonu}} {{Patrz|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ń}} {{Patrz|bez dodatkowych sprawdzeń}} - nie jest uruchamiana walidacja parametrów szablonu rodzica, ** {{Code|parametry rodzica}} {{Patrz|parametry rodzica}} - zmienna przedstawiająca parametry rodzica, czy któreś ze przodków, przekazane do ramki: {{m|Sprawdź|Parametry}} - dodane przez tę funkcję, ** {{Code|zmienna z parametrami rodzica}} {{Patrz|zmienna z parametrami rodzica}} - parametr mówiący, czy ma tworzyć zmienne z parametrami rodzica {{LinkPatrz|parametry rodzica}}, a jeżeli nie jest on, z zadnych z jego potomków podany, to zmienna {{LinkPatrz|parametry rodzica}} jest przekazywana na kolejnego przodka, ** {{Code|zmienna z argumentami ramki}} {{Patrz|zmienna z argumentami ramki}} - zmienna mówiąca, czy mają być tworzone parametry ramki, które nie są sprawdzane 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}} {{Patrz|zmienna z nazwą szablonu rodzica}} - parametr, czy ma tworzyć zmienną: {{LinkPatrz|nazwa szablonu rodzica}}, ** {{Code|parametry funkcji modułu pudełek}} {{Patrz|parametry funkcji modułu pudełek}} - czy do funkcji mają wchodzić parametry modułu pudełek, które są ponumerowane dodatkowym numerkiem, ** {{Code|parametry podstawowe funkcji modułu pudełek}} {{Patrz|parametry podstawowe funkcji modułu pudełek}} - czy do funkcji mają wchodzić podstawowe parametry funkcji modułu pudełek, te które nie mają dodatkowego numerka, ** {{Code|usuń z parametrów ramki}} {{Patrz|usuń z parametrów ramki}} - parametry ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, przedstawiający zmienne oddzielone średnikami, które nie mają być uwzględnione przy uruchamianiu danego obiektu. * {{Code|Funkcja}} {{Patrz|Funkcja}} - nazwa funkcji w module, który ma wywołać w ramce ta funkcja, w przypadku, gdy parametr {{LinkPatrz|co_ma_wywolac}} ma wartość {{Tt|1}}, czyli wywołujemy funkcję {{LinkŚródtytuł|p["Moduł"]}}. Funkcja uruchamia szablon, moduł, czy ramkę, w zależności od drugiego parametru funkcji, z parametrami rodzica ramki bez parametrów opisanych zmienną: {{LinkPatrz|bez argumentów szablonu}}, i bez parametrów wskazanych przez zmienną: {{Code|usuń z parametrów ramki}}. Za pomocą tej funkcji możemy wielopoziomowo wywoływać funkcje przekazując parametry od najwyższego poziomu do najniższego. Ta funkcja służy przede wszystkim 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 do uruchamiania szablonów, a uruchamianie funkcji modułu, w tym funkcji {{m|Cytuj|custom}} w szablonie {{s|PrzypisStrona}}. Przykładem wywołania szablonu, która jest w szablonie: {{s|Wzór}}, w którym jest wywoływany inny szablon, tym razem silnik, tzn. {{s|Wzór/silnik}}: <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> === {{Śródtytuł|BudowaSzereguZDanych}}{{Code|BudowaSzereguZDanych}} === Funkcja do uruchamiania się 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> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tab_lancuch}} {{Patrz|tab_lancuch}} - pewna tablica transportu funkcji. * Zmienne do mikroszablonów: ** {{Code|minimum}} {{Patrz|minimum}} - liczba mówiąca o minimum, ** {{Code|maksimum}} {{Patrz|maksimum}} - liczba mówiąca o maksimum. Parametry ramki funkcji tablicy transportu modułu: * {{Code|akapit}} {{Patrz|akapit}} - jeśli niepusta, to ona definiuje akapit ze znaków {{Code|\n\n}}, przeciwnym wypadku elementy łańcucha nie są łączone w akapity, * {{Code|przecinek}} {{Patrz|przecinek}} - jeśli niepuste, to mówi, że pomiędzy elementami powiniem być przecinek: {{Code|", "}}, został on specjalnie objęty w cudzysłowy, aby zilustrować, że po przecinku znajduje się spacja, * {{Code|nowa linia}} {{Patrz|nowa linia}} - w przeciwieństwo do zmiennej {{LinkPatrz|akapit}}, używany zamiast niej, pisze jedną nową linię, a nie dwie, jako: {{Code|\n}}, * {{Code|wyliczanka}} {{Patrz|wyliczanka}} - wylicza elementy z przecinkami, stawiając przed ostatnim elementem zamiast jego wyraz wyliczania {{Code|i}}, * {{Code|początek}} {{Patrz|początek}} - mówi, że na początku musi znajdować się przecinek, * {{Code|myślnik}} {{Patrz|myślnik}} - mówi, że jeśli nie ma początku przecinka, to stawiany jest myślnik, używany zamiast {{LinkPatrz|początek}}, * {{Code|warunkowe}} {{Patrz|warunkowe}} - instrukcje wikikodu, takie jak: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}, zostaną w kodzie rozwinięte, a później ciągłe właściwe elementy wikikodu otoczone dwoma dolnymi myślnikami zostaną rozwinięte do pewnej postaci, funkcja używa do tego {{LinkŚródtytuł|p.InstrukcjeWarunkowe}}, ** {{Code|parametr}} {{Patrz|parametr}} - używany w towarzystwie z {{LinkPatrz|warunkowe}}, mówiący że, derektywy znakowe ciągłe otoczone dwoma dolnymi myślnikami, zostaną zastąpione odpowiedmimi szablonami, w przeciwnym wypadku niepodania tej wartości lub jego pustej, wtedy te derektywy zostaną zastąpione w postaci rozwiniętej tych szablonów. ** Funkcja w tym warunku zwraca ciąg znaków rozwiniętego warunku. Funkcja posiada też mikroszablony, które są zdefiniowane w kodzie łańcuchów {{LinkPatrz|tab_lancuch}}: * {{Code|<nowiki>{{min}}</nowiki>}} - minimalna wartość szeregu zmiennych, określana przez {{LinkPatrz|minimum}}, * {{Code|<nowiki>{{max}}</nowiki>}} - a tutaj ich maksymalna, określana przez {{LinkPatrz|maksimum}}. Te dwie zmienne są podstawiane do uzyskanego ciągu. Funkcja zwraca te części rozwiniętego tekstu wikikodu, jeśli podano {{LinkPatrz|warunkowe}}, co do instrukcji warunkowych i te bez wewnętrznych klamerek - specjalne kody, czyki te otoczone z dwóch stron dolnumi myślnikami, a pozostałe część jest za to nierozwinięta. == {{Śródtytuł|p.InstrukcjeWarunkowe}}{{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}} {{Patrz|ciag}} - podany ciąg do rozwinięcia z instrukcji warunkowych wewnątrz nie posiadający klamerek, * {{Code|derektywy_specjalne}} {{Patrz|derektywy_specjalne}} - używa do zastępowania specjalnych derektyw, podane po prawej stronie w ramce pływającej, * {{Code|derektywy_parametrowe}} {{Patrz|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: {{LinkŚródtytuł|BudowaSzereguZDanych}}, poprzez: {{LinkŚródtytuł|p.Powtarzaj}}. 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 == === {{Śródtytuł|p.RozpakujArgumenty}}{{Code|p.RozpakujArgumenty}} === Funkcje uruchamia się 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. === {{Śródtytuł|p.PakujParametry}}{{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> Parametry funkcji: * {{Code|args}} {{Patrz|args}} - tablica {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. 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}}, z użyciem funkcji: {{LzLua|mw.text.jsonEncode}}, z drugim parametrem: {{Code|mw.text.JSON_PRESERVE_KEYS}} {{Patrz|mw.text.JSON_PRESERVE_KEYS}}. === {{Śródtytuł|p.RozpakujParametry}}{{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 w niej zwracany. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.RozpakujParametry = function (zmienna_z_parametrami) return mw.text.jsonDecode(zmienna_z_parametrami,mw.text.JSON_PRESERVE_KEYS); end; </syntaxhighlight> Parametry funkcji: * {{Code|zmienna_z_parametrami}} {{Patrz|zmienna_z_parametrami}} - tablica {{Code|JSON}}. 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}}, z użyciem funkcji: {{LzLua|mw.text.jsonDecode}}, z użzyciem drugiego parametru: {{LinkPatrz|mw.text.JSON_PRESERVE_KEYS}}. == {{Śródtytuł|p["Rozwiń"]}}{{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> Parameetry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon rozwija wikikod podany w zmiennej {{Code|1}}, w parametrach szablonu rodzica. * 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}}: <syntaxhighlight lang="lua"> p["Rozwiń"] = function(frame) return frame:getParent():preprocess(frame.args[1]); end; </syntaxhighlight> == {{Śródtytuł|p.Log}}{{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> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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}}: <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 == === {{Śródtytuł|p.Szablon}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p.Szablon = function(frame) return ParserBlokowy(frame,0); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Szablon|Nazwa=<nazwa szablonu>|...}} </syntaxhighlight> === {{Śródtytuł|p["Moduł"]}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p["Moduł"] = function(frame) return ParserBlokowy(frame,1); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Moduł|Nazwa=<nazwa modułu>|Funkcja=<nazwa funkcji>|...}} </syntaxhighlight> === {{Śródtytuł|p.Parser}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p.Parser = function(frame) return ParserBlokowy(frame,2); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Parser|Nazwa=<nazwa parsera>|...}} </syntaxhighlight> == Funkcje książkowe == === {{Śródtytuł|p.Q}}{{Code|p.Q}} === Funkcja uruchamia szablon o podanej nazwie w pierwszym parametrze z przedrostkiem {{Code|Książka:}} przed nazwą szablonu. Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.Q =function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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ą (parametry nazwane, które są wliczane 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}}}} === {{Śródtytuł|p.N}}{{Code|p.N}} === Funkcja uruchamiana we wnętrzu szablonu {{s|N}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on. Funkcja przed nazwą szablonu, czy modułu, zostawia w wpis w postaci przedrostka {{Code|Książka:}}. Czy zostanie dodana przed tym nazwa przestrzeni nazw, to zależy od niepodania niepustej zmiennej {{Parametr|n}}, a zmienna {{Parametr|p|1}} - to przed nim jest dodawana przestrzeń nazw szablonu {{Np|Template|link=tak}}, {{Parametr|p|2}} - modułu {{Np|Module|link=tak}} i {{Parametr|p|3}} - kategorii. Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.N=function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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}}}} === {{Śródtytuł|p.A}}{{Code|p.A}} === Funkcja uruchamiana we wnętrzu szablonu {{s|A}}, która przyjmuje jego parametry, i tak samo działa, jak on. Funkcja usuwa przedrostek {{Code|Książka:}} w nazwie szablonu, czy modułu. Gdy jest podany parametr: {{Parametr|p|tak}}, to dla przestrzeni niebędących: {{Np|Template|link=tak}}, {{Np|Module|link=tak}} i {{Np|Category|link=tak}}, jest zwracany wtedy przez nią parametr pierwszy fukcji, dla tych wartości właśnie wyliczonych przestrzeni usuwany jest przedristek {{Code|Książka:}}. Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.A=function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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 == === {{Śródtytuł|p.Powtarzaj}}{{Code|p.Powtarzaj}} === Funkcja służy do powtarzalnego generowania wikikodu ze składników jego kroku przy pomocy określonych zmiennych rodzica. * Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.Powtarzaj = function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Funkcja może przyjmować tylko parametry nienazwane albo tylko nazwane, albo nienazwane i nazwane (gdy jest ustawiony parametr {{Code|różne}} {{Patrz|różne}}). 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}} {{LinkPatrz|różne}}, która wtedy ma wskazywać na wartość niepustą. ; Najważniejsze parametry, które są to opcjonalne, to są{{dk}} * {{Code|start}} {{Patrz|start}} - liczba, która wskazuje początek liczenia - domyślna wartość to {{Code|1}}, * {{Code|koniec}} {{Patrz|koniec}} - liczba, która wskazuje koniec liczenia. ; Numer końca liczenia parametrów nienazwanych lub nazwanych, czy nazwanychi nienazwanych{{dk}} * Elementy w {{Code|parametry}} {{Patrz|parametry}} mogą modyfikować odpowiednio parametry: {{LinkPatrz|start}} i {{LinkPatrz|koniec}}. * Ze zmiennej {{LinkPatrz|parametry}} jest liczona odpowiednia zmienna {{LinkPatrz|tabela}} dopuzczalnych zmiennych do liczenia. * Funkcja {{Code|Wylicz_skoncz_na_koncu}},którego algorytm podomy w tej poyzcji, tzn. koniec liczenia parametrów nienazwanych musi być policzony, jeżeli nie ma parametrów nazwanych w tabeli {{Code|tabela}} {{Patrz|tabela}}. A przeciwnie, jeżeli nie jest ustawiony parametr {{Code|różne}} {{LinkPatrz|różne}} nie na wartość niepustą, wtedy jest liczony parametr maksimum parametrów nazwanych, przeciwnie wtedy liczy się parametr maksimum numeracyjne parametrów numerowanych, czyli zmienną: {{Code|maksimum numeracyjne}} {{Patrz|maksimum numeracyjne}}, jeśli on ma wartość niepustą, wtedy liczy się maksimum parametrów nienazwanych, a jeżeli ona ma przeciwną wartość, to się liczy maksimum parametrów nazwanych, jak nienazwanych. Na podstawie tego mamy policzony odpowiednio taki koniec liczenia modyfikacji zwracany i policzony przez tą funkcję. ; Parametr {{Code|dodatkowe}}{{dk}} * To maksimum parametrów nazwanych, dla jakieś podstawy parametrów, są pomijane parametry z: {{Code|dodatkowe}}, która jest zestawem podstaw parametrów oddzielonych średnikami, jest właśnie podany ten parametr w nim. Przykładem jego jest: * {{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. ; Format parametru {{Parametr|parametry}}{{dk}} * 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 równa liczbie {{Code|5}}, oddzielonych średnikami. ; Opis parametru {{Parametr|parametry}}{{dk}} 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 w wartościach: {{Code|zmienna 1>}}, {{Code|<zmienna 2>}} i {{Code|<zmienna 3>}}, w których są pewne nazwy bazowe parametrów bez numerka na jej końcu, w zmiennej {{Code|parametry}} można nie podawać dalszych elementów 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ć nawet tego znaku,gdy nic nie ma po równa się) dla danego problemu funkcji. ; Wikikod pojedynczego kroku liczenia całości wygenerowanego wikikodu dla wszystkich zmiennych{{dk}} * 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)}}. ; Parametr {{Parametr|start}}, wartość początkowa{{dk}} * Gdy parametr {{Code|tonumber(frame.args["start"]) or 1}}, jest równy zero, funkcja zwraca błąd: {{Code|(początek jest ustawiony na zero)}}. ; Brak parametrów szablonu{{dk}} * 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. ; Parametr {{Parametr|nic}}{{dk}} * Gdy {{Code|nic}} przyjmuje wartość, i gdy pomijamy parametr, lub on przyjmuje wartość pustą, wtedy a funkcja nie może wygenerować żadnego kroku iteracji, to wtedy jest zwracana wartość parametru {{Code|nic}} lub ciąg pusty. ; Inne parametry{{dk}} * Parametr {{Code|po kolei}} {{Patrz|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|zaznacz}} {{Patrz|zaznacz}} - liczby oddzielone średnikami, które przy parametrach nazwanych o pewnych numerach i numerkach nie mają być uwzględnione przy niepustym parametrze {{Code|po kolei}} {{LinkPatrz|po kolei}}, a przy jego przeciwnej wartości za to mają być użyte. * 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}} {{Patrz|_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 wikikodami, wtedy ta funkcja używa do tego liczenia{{dk}} * Jest to funkcja {{LinkŚródtytuł|BudowaSzereguZDanych}}. * Wywołanie funkcji jest takie: {{Pre|lancuch_znakow {{=}} BudowaSzereguZDanych(frame,tab_lancuch,minimum or 0,maksimum);}} ; Parametry funkcji {{LinkŚródtytuł|BudowaSzereguZDanych}}. * One są wraz z jego parametrami podane w postaci jego parametrów ramki {{Code|frame}}, które jednocześnie są parametrami {{LinkŚródtytuł|p.Powtarzaj}}, używa się je 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ą {{LzLua|frame:preprocess}}, i jest zwracany jako wartość omawianej funkcji. ; Przykłady{{dk}} * Funkcja jest używana np. w silnikach szablonów, np.: {{s|Osobny artykuł/silnik}} szablonu {{s|Osobny artykuł}}, jak i do niego 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}}. === {{Śródtytuł|p.PowtarzajOdDo}}{{Code|p.PowtarzajOdDo}} === Funkcja służy do iteracji, od jakieś liczby do jakieś innej, podanego wikikodu dla danego kroku {{Code|1}}, iterując to, co krok określony zmienną: {{Code|krok}}. * 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ę{{dk}} {{nobold|{{Code|{{m|Ramka|Rozwiń}}}}}}, lub go rozwija na końcu, na podstawie kolejnych kroków iteracji{{dk}} * {{Code|start}} - początek iteracji dokonywany przez ta funkcję, * {{Code|koniec}} - koniec iteracji dokonywany przez ta funkcję, * {{Code|krok}} - krok iteracji, co który numer 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{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}} * {{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ą{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}} * {{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{{dk}} {{nobold|{{s|Chem/silnik}}}}, w tym nadrzędnym{{dk}} {{nobold|{{s|Chem}}}}, przykłady jego działania{{dk}} * {{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. === {{Śródtytuł|p["PrzetwarzajIterującCiąg"]}}{{Code|p["PrzetwarzajIterującCiąg"]}} === Funkcja do iteracji wikikodu po parametrach oddzielonych średniami w parametrze ramki {{Code|cią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{{dk}} * {{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{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}} * {{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ą{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}} * {{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>}} jest kolejny parametr, oddzielonych od pozastałych średniami, z: {{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}}: {{LzLua|frame:preprocess}}, jeśli: {{Code|nie rozwiń}}, nie przybiera wartości niepustej. === {{Śródtytuł|p["PowtarzajWedług"]}}{{Code|p["PowtarzajWedług"]}} === Funkcja wyszukująca elementy według wzoru począwszy od numeru, określonego przez {{Code|start}}, aż do zakończenia danych kolenych sprawdzania od tej liczby, czy taka strona istnieje, numerek jest określony przez pewien wikikod, określony przez {{Code|<nowiki>{{_}}</nowiki>}}, którymusi być podany we wzorze {{Code|wzor}}. Ona w ten sposób dla istniejących stron ustawia pewne łańcuchy, które są łączone znakami {{Code|", "}}, a na końcu samym {{Code|" i "}}. 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 strony{{dk}} {{nobold|„{{Ns:Template}}{{dk}}Polecane książki/”}}, a oto przykład{{dk}}{{nobold|{{Parametr|wzór|{{Ns:Template}}{{dk}}Polecane książki/{{((}}_{{))}}}}}}{{dk}} * {{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}}}} == {{Śródtytuł|p["LiczbaPrawychUkośników"]}}{{Code|p["LiczbaPrawychUkośników"]}} == Funkcja liczy, ile jest prawych ukośników w adresie strony podany jako pierwszy parametr ramki. * 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. ; Parametry fubkcji{{dk}} * {{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}}}} == {{Śródtytuł|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}}{{Code|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}} == Funkcja liczy maksymalny numer kolejnej strony liczonej według wzoru {{Code|wzor}}, musi być we wzorze podany element {{Code|<nowiki>{{_}}</nowiki>}}, aby mógł to robić. * 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/”, czyli dla stron o ogólnym wzorze: {{Parametr|wzór|{{Ns:Template}}:Polecane książki/{{((}}_{{))}}}}. ; Parametry funkcji{{dk}} * {{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 == === {{Śródtytuł|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}}{{Code|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}} === Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy minimalny numer takiej zmiennej. * 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*)}}. ; Parametry funkcji{{dk}} * {{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}}}} === {{Śródtytuł|p.IleJestTakichOdpowiednikowychZmiennych}}{{Code|p.IleJestTakichOdpowiednikowychZmiennych}} === Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy ile jest takich zmiennych. * 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. ; Parametry funkcji{{dk}} * {{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}}}} == {{Śródtytuł|p["Parametr w tablicy nazw"]}}{{Code|p["Parametr w tablicy nazw"]}} == Funkcja bada, czy jest taki parametr {{Code|pozycja}} w tablicy nazw określonej zmienną {{Code|parametry}}, której elementy są oddzielone średnikami. * 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. ; Parametry funkcji{{dk}} * {{Code|parametry}} - lista parametrów oddzielonych średnikiem, * {{Code|pozycja}} - szukana lista w tablicy parametrów, * {{Code|od dużej}} - czy parametr: {{Code|pozycja}}, i elementy listy: {{Code|parametry}}, 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}}, a to ostatnie jest to wartość języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, która po transformacji na wikikod jest zamieniana na ciąg pusty, więc ona nadaje się do instrukcji warunkowych. === 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> fg4z9bkqvnyxuu2mimygzrf2tzhah1x 553397 553396 2026-08-29T20:10:41Z Persino 2851 /* {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} */ 553397 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. Funkcje, w tym module, uruchamia się tylko w ramce w szablonie, bo są tylko do tego przygotowane. One służą do powtarzania parametrów rodzica, czy przodka, iteracji pojedynczego kroku wikikodu, jakiś sprawdzeń, do liczenia odpowiedników i związanych z tym parametrami, itp.. == Funcje lokalne modułu == === {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} === Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, tylko w module {{Code|{{ld2|Ramka}}}}, szablonów, modułów i parserów w ramce. Uruchamiana jest przez funkcje: {{LinkŚródtytuł|p.Szablon}} - funkcja do uruchamiania szablonów, {{LinkŚródtytuł|p["Moduł"]}} - funkcja do uruchamiania modułów, i {{LinkŚródtytuł|p.Parser}} - funkcja do uruchamiania parserów. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ParserBlokowy(frame, co_ma_wywolac)...end; </syntaxhighlight> ; Parametry funkcji{{dk}} * {{Code|frame}} {{Patrz|frame}} - funkcja ramkki funkcji tablica transportu modułu, * {{Code|co_ma_wywolac}} {{Patrz|co_ma_wywolac}} - ten parametr przyjmuje wartość liczbową, która jeżeli {{Tt|0}} - to uruchamiany jest szablon, jeżeli {{Tt|1}} - moduł, jeżeli {{Code|2}} - to parser, jeżeli on ma inne wartości, tzn.: {{Tt|2}}, a {{Tt|3}} i dalej, to już dany szablon. ; Parametry ramki funkcji tablicy transportu modułu{{dk}} * Parametry podstawowe: ** {{Code|Nazwa}} {{Patrz|Nazwa}} - jest to pełna nazwa szablonu, modułu, czy parsera, ** {{Code|bez argumentów rodzica}} {{Patrz|bez argumentów rodzica}} - tablica parametrów oddzielonych średnikami, których obiekt uruchamiany nie może przyjmować, nawet jeżeli one są, ** {{Code|nazwa szablonu rodzica}} {{Patrz|nazwa szablonu rodzica}} - jest to zmienna przechowująca nazwę szablonu rodzica ramki dziecka,a nawet któreś z jego przodków, ** {{Code|bez argumentów nienazwanych rodzica}} {{Patrz|bez argumentów nienazwanych rodzica}} - szablon w ramce nie przyjmuje parametrów nienazwanych, określonych liczbą, podanych w rodzicu ramki, ** {{Code|potomek}} {{Patrz|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}} {{Patrz|nie potomek}} - zmienna mówiąca, że to nie jest potomek szablonu, używana, gdy nie jest określona zmienna ramki {{LinkPatrz|zmienna z parametrami rodzica}}, wtedy taka ramka jest traktowana jak normalna ramka, której jedynie trzeba przekazać parametry rodzica, nie przodka, wtedy do niej nie są przekazywane parametry: {{LinkPatrz|parametry rodzica}} (ta zmienna jest wtedy ustawiana, gdy nie jest niepusty parametr {{LinkPatrz|bez dodatkowych sprawdzeń}}), {{LinkPatrz|bez argumentów szablonu}}, i {{LinkPatrz|nazwa szablonu rodzica}} (jeśli ta wartość rodzica nie istnieje, to nadawana jest jej aktualna nazwa szablonu rodzica, a nie przodka, normalnie jest to przodka, a w szczególności rodzica) i {{LinkPatrz|potomek}} (ustawiany na stałą wartość niepustą), ** {{Code|bez argumentów szablonu}} {{Patrz|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ń}} {{Patrz|bez dodatkowych sprawdzeń}} - nie jest uruchamiana walidacja parametrów szablonu rodzica, ** {{Code|parametry rodzica}} {{Patrz|parametry rodzica}} - zmienna przedstawiająca parametry rodzica, czy któreś ze przodków, przekazane do ramki: {{m|Sprawdź|Parametry}} - dodane przez tę funkcję, ** {{Code|zmienna z parametrami rodzica}} {{Patrz|zmienna z parametrami rodzica}} - parametr mówiący, czy ma tworzyć zmienne z parametrami rodzica {{LinkPatrz|parametry rodzica}}, a jeżeli nie jest on, z zadnych z jego potomków podany, to zmienna {{LinkPatrz|parametry rodzica}} jest przekazywana na kolejnego przodka, ** {{Code|zmienna z argumentami ramki}} {{Patrz|zmienna z argumentami ramki}} - zmienna mówiąca, czy mają być tworzone parametry ramki, które nie są sprawdzane 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}} {{Patrz|zmienna z nazwą szablonu rodzica}} - parametr, czy ma tworzyć zmienną: {{LinkPatrz|nazwa szablonu rodzica}}, ** {{Code|parametry funkcji modułu pudełek}} {{Patrz|parametry funkcji modułu pudełek}} - czy do funkcji mają wchodzić parametry modułu pudełek, które są ponumerowane dodatkowym numerkiem, ** {{Code|parametry podstawowe funkcji modułu pudełek}} {{Patrz|parametry podstawowe funkcji modułu pudełek}} - czy do funkcji mają wchodzić podstawowe parametry funkcji modułu pudełek, te które nie mają dodatkowego numerka, ** {{Code|usuń z parametrów ramki}} {{Patrz|usuń z parametrów ramki}} - parametry ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, przedstawiający zmienne oddzielone średnikami, które nie mają być uwzględnione przy uruchamianiu danego obiektu. * {{Code|Funkcja}} {{Patrz|Funkcja}} - nazwa funkcji w module, który ma wywołać w ramce ta funkcja, w przypadku, gdy parametr {{LinkPatrz|co_ma_wywolac}} ma wartość {{Tt|1}}, czyli wywołujemy funkcję {{LinkŚródtytuł|p["Moduł"]}}. Funkcja uruchamia szablon, moduł, czy ramkę, w zależności od drugiego parametru funkcji, z parametrami rodzica ramki bez parametrów opisanych zmienną: {{LinkPatrz|bez argumentów szablonu}}, i bez parametrów wskazanych przez zmienną: {{Code|usuń z parametrów ramki}}. Za pomocą tej funkcji możemy wielopoziomowo wywoływać funkcje przekazując parametry od najwyższego poziomu do najniższego. Ta funkcja służy przede wszystkim 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 do uruchamiania szablonów, a uruchamianie funkcji modułu, w tym funkcji {{m|Cytuj|custom}} w szablonie {{s|PrzypisStrona}}. Przykładem wywołania szablonu, która jest w szablonie: {{s|Wzór}}, w którym jest wywoływany inny szablon, tym razem silnik, tzn. {{s|Wzór/silnik}}: <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> === {{Śródtytuł|BudowaSzereguZDanych}}{{Code|BudowaSzereguZDanych}} === Funkcja do uruchamiania się 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> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tab_lancuch}} {{Patrz|tab_lancuch}} - pewna tablica transportu funkcji. * Zmienne do mikroszablonów: ** {{Code|minimum}} {{Patrz|minimum}} - liczba mówiąca o minimum, ** {{Code|maksimum}} {{Patrz|maksimum}} - liczba mówiąca o maksimum. Parametry ramki funkcji tablicy transportu modułu: * {{Code|akapit}} {{Patrz|akapit}} - jeśli niepusta, to ona definiuje akapit ze znaków {{Code|\n\n}}, przeciwnym wypadku elementy łańcucha nie są łączone w akapity, * {{Code|przecinek}} {{Patrz|przecinek}} - jeśli niepuste, to mówi, że pomiędzy elementami powiniem być przecinek: {{Code|", "}}, został on specjalnie objęty w cudzysłowy, aby zilustrować, że po przecinku znajduje się spacja, * {{Code|nowa linia}} {{Patrz|nowa linia}} - w przeciwieństwo do zmiennej {{LinkPatrz|akapit}}, używany zamiast niej, pisze jedną nową linię, a nie dwie, jako: {{Code|\n}}, * {{Code|wyliczanka}} {{Patrz|wyliczanka}} - wylicza elementy z przecinkami, stawiając przed ostatnim elementem zamiast jego wyraz wyliczania {{Code|i}}, * {{Code|początek}} {{Patrz|początek}} - mówi, że na początku musi znajdować się przecinek, * {{Code|myślnik}} {{Patrz|myślnik}} - mówi, że jeśli nie ma początku przecinka, to stawiany jest myślnik, używany zamiast {{LinkPatrz|początek}}, * {{Code|warunkowe}} {{Patrz|warunkowe}} - instrukcje wikikodu, takie jak: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}, zostaną w kodzie rozwinięte, a później ciągłe właściwe elementy wikikodu otoczone dwoma dolnymi myślnikami zostaną rozwinięte do pewnej postaci, funkcja używa do tego {{LinkŚródtytuł|p.InstrukcjeWarunkowe}}, ** {{Code|parametr}} {{Patrz|parametr}} - używany w towarzystwie z {{LinkPatrz|warunkowe}}, mówiący że, derektywy znakowe ciągłe otoczone dwoma dolnymi myślnikami, zostaną zastąpione odpowiedmimi szablonami, w przeciwnym wypadku niepodania tej wartości lub jego pustej, wtedy te derektywy zostaną zastąpione w postaci rozwiniętej tych szablonów. ** Funkcja w tym warunku zwraca ciąg znaków rozwiniętego warunku. Funkcja posiada też mikroszablony, które są zdefiniowane w kodzie łańcuchów {{LinkPatrz|tab_lancuch}}: * {{Code|<nowiki>{{min}}</nowiki>}} - minimalna wartość szeregu zmiennych, określana przez {{LinkPatrz|minimum}}, * {{Code|<nowiki>{{max}}</nowiki>}} - a tutaj ich maksymalna, określana przez {{LinkPatrz|maksimum}}. Te dwie zmienne są podstawiane do uzyskanego ciągu. Funkcja zwraca te części rozwiniętego tekstu wikikodu, jeśli podano {{LinkPatrz|warunkowe}}, co do instrukcji warunkowych i te bez wewnętrznych klamerek - specjalne kody, czyki te otoczone z dwóch stron dolnumi myślnikami, a pozostałe część jest za to nierozwinięta. == {{Śródtytuł|p.InstrukcjeWarunkowe}}{{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}} {{Patrz|ciag}} - podany ciąg do rozwinięcia z instrukcji warunkowych wewnątrz nie posiadający klamerek, * {{Code|derektywy_specjalne}} {{Patrz|derektywy_specjalne}} - używa do zastępowania specjalnych derektyw, podane po prawej stronie w ramce pływającej, * {{Code|derektywy_parametrowe}} {{Patrz|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: {{LinkŚródtytuł|BudowaSzereguZDanych}}, poprzez: {{LinkŚródtytuł|p.Powtarzaj}}. 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 == === {{Śródtytuł|p.RozpakujArgumenty}}{{Code|p.RozpakujArgumenty}} === Funkcje uruchamia się 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. === {{Śródtytuł|p.PakujParametry}}{{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> Parametry funkcji: * {{Code|args}} {{Patrz|args}} - tablica {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. 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}}, z użyciem funkcji: {{LzLua|mw.text.jsonEncode}}, z drugim parametrem: {{Code|mw.text.JSON_PRESERVE_KEYS}} {{Patrz|mw.text.JSON_PRESERVE_KEYS}}. === {{Śródtytuł|p.RozpakujParametry}}{{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 w niej zwracany. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.RozpakujParametry = function (zmienna_z_parametrami) return mw.text.jsonDecode(zmienna_z_parametrami,mw.text.JSON_PRESERVE_KEYS); end; </syntaxhighlight> Parametry funkcji: * {{Code|zmienna_z_parametrami}} {{Patrz|zmienna_z_parametrami}} - tablica {{Code|JSON}}. 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}}, z użyciem funkcji: {{LzLua|mw.text.jsonDecode}}, z użzyciem drugiego parametru: {{LinkPatrz|mw.text.JSON_PRESERVE_KEYS}}. == {{Śródtytuł|p["Rozwiń"]}}{{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> Parameetry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon rozwija wikikod podany w zmiennej {{Code|1}}, w parametrach szablonu rodzica. * 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}}: <syntaxhighlight lang="lua"> p["Rozwiń"] = function(frame) return frame:getParent():preprocess(frame.args[1]); end; </syntaxhighlight> == {{Śródtytuł|p.Log}}{{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> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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}}: <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 == === {{Śródtytuł|p.Szablon}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p.Szablon = function(frame) return ParserBlokowy(frame,0); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Szablon|Nazwa=<nazwa szablonu>|...}} </syntaxhighlight> === {{Śródtytuł|p["Moduł"]}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p["Moduł"] = function(frame) return ParserBlokowy(frame,1); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Moduł|Nazwa=<nazwa modułu>|Funkcja=<nazwa funkcji>|...}} </syntaxhighlight> === {{Śródtytuł|p.Parser}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p.Parser = function(frame) return ParserBlokowy(frame,2); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Parser|Nazwa=<nazwa parsera>|...}} </syntaxhighlight> == Funkcje książkowe == === {{Śródtytuł|p.Q}}{{Code|p.Q}} === Funkcja uruchamia szablon o podanej nazwie w pierwszym parametrze z przedrostkiem {{Code|Książka:}} przed nazwą szablonu. Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.Q =function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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ą (parametry nazwane, które są wliczane 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}}}} === {{Śródtytuł|p.N}}{{Code|p.N}} === Funkcja uruchamiana we wnętrzu szablonu {{s|N}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on. Funkcja przed nazwą szablonu, czy modułu, zostawia w wpis w postaci przedrostka {{Code|Książka:}}. Czy zostanie dodana przed tym nazwa przestrzeni nazw, to zależy od niepodania niepustej zmiennej {{Parametr|n}}, a zmienna {{Parametr|p|1}} - to przed nim jest dodawana przestrzeń nazw szablonu {{Np|Template|link=tak}}, {{Parametr|p|2}} - modułu {{Np|Module|link=tak}} i {{Parametr|p|3}} - kategorii. Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.N=function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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}}}} === {{Śródtytuł|p.A}}{{Code|p.A}} === Funkcja uruchamiana we wnętrzu szablonu {{s|A}}, która przyjmuje jego parametry, i tak samo działa, jak on. Funkcja usuwa przedrostek {{Code|Książka:}} w nazwie szablonu, czy modułu. Gdy jest podany parametr: {{Parametr|p|tak}}, to dla przestrzeni niebędących: {{Np|Template|link=tak}}, {{Np|Module|link=tak}} i {{Np|Category|link=tak}}, jest zwracany wtedy przez nią parametr pierwszy fukcji, dla tych wartości właśnie wyliczonych przestrzeni usuwany jest przedristek {{Code|Książka:}}. Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.A=function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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 == === {{Śródtytuł|p.Powtarzaj}}{{Code|p.Powtarzaj}} === Funkcja służy do powtarzalnego generowania wikikodu ze składników jego kroku przy pomocy określonych zmiennych rodzica. * Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.Powtarzaj = function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Funkcja może przyjmować tylko parametry nienazwane albo tylko nazwane, albo nienazwane i nazwane (gdy jest ustawiony parametr {{Code|różne}} {{Patrz|różne}}). 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}} {{LinkPatrz|różne}}, która wtedy ma wskazywać na wartość niepustą. ; Najważniejsze parametry, które są to opcjonalne, to są{{dk}} * {{Code|start}} {{Patrz|start}} - liczba, która wskazuje początek liczenia - domyślna wartość to {{Code|1}}, * {{Code|koniec}} {{Patrz|koniec}} - liczba, która wskazuje koniec liczenia. ; Numer końca liczenia parametrów nienazwanych lub nazwanych, czy nazwanychi nienazwanych{{dk}} * Elementy w {{Code|parametry}} {{Patrz|parametry}} mogą modyfikować odpowiednio parametry: {{LinkPatrz|start}} i {{LinkPatrz|koniec}}. * Ze zmiennej {{LinkPatrz|parametry}} jest liczona odpowiednia zmienna {{LinkPatrz|tabela}} dopuzczalnych zmiennych do liczenia. * Funkcja {{Code|Wylicz_skoncz_na_koncu}},którego algorytm podomy w tej poyzcji, tzn. koniec liczenia parametrów nienazwanych musi być policzony, jeżeli nie ma parametrów nazwanych w tabeli {{Code|tabela}} {{Patrz|tabela}}. A przeciwnie, jeżeli nie jest ustawiony parametr {{Code|różne}} {{LinkPatrz|różne}} nie na wartość niepustą, wtedy jest liczony parametr maksimum parametrów nazwanych, przeciwnie wtedy liczy się parametr maksimum numeracyjne parametrów numerowanych, czyli zmienną: {{Code|maksimum numeracyjne}} {{Patrz|maksimum numeracyjne}}, jeśli on ma wartość niepustą, wtedy liczy się maksimum parametrów nienazwanych, a jeżeli ona ma przeciwną wartość, to się liczy maksimum parametrów nazwanych, jak nienazwanych. Na podstawie tego mamy policzony odpowiednio taki koniec liczenia modyfikacji zwracany i policzony przez tą funkcję. ; Parametr {{Code|dodatkowe}}{{dk}} * To maksimum parametrów nazwanych, dla jakieś podstawy parametrów, są pomijane parametry z: {{Code|dodatkowe}}, która jest zestawem podstaw parametrów oddzielonych średnikami, jest właśnie podany ten parametr w nim. Przykładem jego jest: * {{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. ; Format parametru {{Parametr|parametry}}{{dk}} * 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 równa liczbie {{Code|5}}, oddzielonych średnikami. ; Opis parametru {{Parametr|parametry}}{{dk}} 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 w wartościach: {{Code|zmienna 1>}}, {{Code|<zmienna 2>}} i {{Code|<zmienna 3>}}, w których są pewne nazwy bazowe parametrów bez numerka na jej końcu, w zmiennej {{Code|parametry}} można nie podawać dalszych elementów 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ć nawet tego znaku,gdy nic nie ma po równa się) dla danego problemu funkcji. ; Wikikod pojedynczego kroku liczenia całości wygenerowanego wikikodu dla wszystkich zmiennych{{dk}} * 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)}}. ; Parametr {{Parametr|start}}, wartość początkowa{{dk}} * Gdy parametr {{Code|tonumber(frame.args["start"]) or 1}}, jest równy zero, funkcja zwraca błąd: {{Code|(początek jest ustawiony na zero)}}. ; Brak parametrów szablonu{{dk}} * 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. ; Parametr {{Parametr|nic}}{{dk}} * Gdy {{Code|nic}} przyjmuje wartość, i gdy pomijamy parametr, lub on przyjmuje wartość pustą, wtedy a funkcja nie może wygenerować żadnego kroku iteracji, to wtedy jest zwracana wartość parametru {{Code|nic}} lub ciąg pusty. ; Inne parametry{{dk}} * Parametr {{Code|po kolei}} {{Patrz|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|zaznacz}} {{Patrz|zaznacz}} - liczby oddzielone średnikami, które przy parametrach nazwanych o pewnych numerach i numerkach nie mają być uwzględnione przy niepustym parametrze {{Code|po kolei}} {{LinkPatrz|po kolei}}, a przy jego przeciwnej wartości za to mają być użyte. * 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}} {{Patrz|_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 wikikodami, wtedy ta funkcja używa do tego liczenia{{dk}} * Jest to funkcja {{LinkŚródtytuł|BudowaSzereguZDanych}}. * Wywołanie funkcji jest takie: {{Pre|lancuch_znakow {{=}} BudowaSzereguZDanych(frame,tab_lancuch,minimum or 0,maksimum);}} ; Parametry funkcji {{LinkŚródtytuł|BudowaSzereguZDanych}}. * One są wraz z jego parametrami podane w postaci jego parametrów ramki {{Code|frame}}, które jednocześnie są parametrami {{LinkŚródtytuł|p.Powtarzaj}}, używa się je 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ą {{LzLua|frame:preprocess}}, i jest zwracany jako wartość omawianej funkcji. ; Przykłady{{dk}} * Funkcja jest używana np. w silnikach szablonów, np.: {{s|Osobny artykuł/silnik}} szablonu {{s|Osobny artykuł}}, jak i do niego 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}}. === {{Śródtytuł|p.PowtarzajOdDo}}{{Code|p.PowtarzajOdDo}} === Funkcja służy do iteracji, od jakieś liczby do jakieś innej, podanego wikikodu dla danego kroku {{Code|1}}, iterując to, co krok określony zmienną: {{Code|krok}}. * 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ę{{dk}} {{nobold|{{Code|{{m|Ramka|Rozwiń}}}}}}, lub go rozwija na końcu, na podstawie kolejnych kroków iteracji{{dk}} * {{Code|start}} - początek iteracji dokonywany przez ta funkcję, * {{Code|koniec}} - koniec iteracji dokonywany przez ta funkcję, * {{Code|krok}} - krok iteracji, co który numer 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{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}} * {{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ą{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}} * {{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{{dk}} {{nobold|{{s|Chem/silnik}}}}, w tym nadrzędnym{{dk}} {{nobold|{{s|Chem}}}}, przykłady jego działania{{dk}} * {{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. === {{Śródtytuł|p["PrzetwarzajIterującCiąg"]}}{{Code|p["PrzetwarzajIterującCiąg"]}} === Funkcja do iteracji wikikodu po parametrach oddzielonych średniami w parametrze ramki {{Code|cią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{{dk}} * {{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{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}} * {{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ą{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}} * {{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>}} jest kolejny parametr, oddzielonych od pozastałych średniami, z: {{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}}: {{LzLua|frame:preprocess}}, jeśli: {{Code|nie rozwiń}}, nie przybiera wartości niepustej. === {{Śródtytuł|p["PowtarzajWedług"]}}{{Code|p["PowtarzajWedług"]}} === Funkcja wyszukująca elementy według wzoru począwszy od numeru, określonego przez {{Code|start}}, aż do zakończenia danych kolenych sprawdzania od tej liczby, czy taka strona istnieje, numerek jest określony przez pewien wikikod, określony przez {{Code|<nowiki>{{_}}</nowiki>}}, którymusi być podany we wzorze {{Code|wzor}}. Ona w ten sposób dla istniejących stron ustawia pewne łańcuchy, które są łączone znakami {{Code|", "}}, a na końcu samym {{Code|" i "}}. 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 strony{{dk}} {{nobold|„{{Ns:Template}}{{dk}}Polecane książki/”}}, a oto przykład{{dk}}{{nobold|{{Parametr|wzór|{{Ns:Template}}{{dk}}Polecane książki/{{((}}_{{))}}}}}}{{dk}} * {{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}}}} == {{Śródtytuł|p["LiczbaPrawychUkośników"]}}{{Code|p["LiczbaPrawychUkośników"]}} == Funkcja liczy, ile jest prawych ukośników w adresie strony podany jako pierwszy parametr ramki. * 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. ; Parametry fubkcji{{dk}} * {{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}}}} == {{Śródtytuł|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}}{{Code|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}} == Funkcja liczy maksymalny numer kolejnej strony liczonej według wzoru {{Code|wzor}}, musi być we wzorze podany element {{Code|<nowiki>{{_}}</nowiki>}}, aby mógł to robić. * 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/”, czyli dla stron o ogólnym wzorze: {{Parametr|wzór|{{Ns:Template}}:Polecane książki/{{((}}_{{))}}}}. ; Parametry funkcji{{dk}} * {{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 == === {{Śródtytuł|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}}{{Code|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}} === Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy minimalny numer takiej zmiennej. * 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*)}}. ; Parametry funkcji{{dk}} * {{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}}}} === {{Śródtytuł|p.IleJestTakichOdpowiednikowychZmiennych}}{{Code|p.IleJestTakichOdpowiednikowychZmiennych}} === Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy ile jest takich zmiennych. * 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. ; Parametry funkcji{{dk}} * {{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}}}} == {{Śródtytuł|p["Parametr w tablicy nazw"]}}{{Code|p["Parametr w tablicy nazw"]}} == Funkcja bada, czy jest taki parametr {{Code|pozycja}} w tablicy nazw określonej zmienną {{Code|parametry}}, której elementy są oddzielone średnikami. * 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. ; Parametry funkcji{{dk}} * {{Code|parametry}} - lista parametrów oddzielonych średnikiem, * {{Code|pozycja}} - szukana lista w tablicy parametrów, * {{Code|od dużej}} - czy parametr: {{Code|pozycja}}, i elementy listy: {{Code|parametry}}, 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}}, a to ostatnie jest to wartość języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, która po transformacji na wikikod jest zamieniana na ciąg pusty, więc ona nadaje się do instrukcji warunkowych. === 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> 6iyy1ep80h7xjtyg24yyr2q2gvqir7n 553398 553397 2026-08-29T20:12:20Z Persino 2851 /* Parametry odpowiednikowych zmiennych */ 553398 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. Funkcje, w tym module, uruchamia się tylko w ramce w szablonie, bo są tylko do tego przygotowane. One służą do powtarzania parametrów rodzica, czy przodka, iteracji pojedynczego kroku wikikodu, jakiś sprawdzeń, do liczenia odpowiedników i związanych z tym parametrami, itp.. == Funcje lokalne modułu == === {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} === Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, tylko w module {{Code|{{ld2|Ramka}}}}, szablonów, modułów i parserów w ramce. Uruchamiana jest przez funkcje: {{LinkŚródtytuł|p.Szablon}} - funkcja do uruchamiania szablonów, {{LinkŚródtytuł|p["Moduł"]}} - funkcja do uruchamiania modułów, i {{LinkŚródtytuł|p.Parser}} - funkcja do uruchamiania parserów. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ParserBlokowy(frame, co_ma_wywolac)...end; </syntaxhighlight> ; Parametry funkcji{{dk}} * {{Code|frame}} {{Patrz|frame}} - funkcja ramkki funkcji tablica transportu modułu, * {{Code|co_ma_wywolac}} {{Patrz|co_ma_wywolac}} - ten parametr przyjmuje wartość liczbową, która jeżeli {{Tt|0}} - to uruchamiany jest szablon, jeżeli {{Tt|1}} - moduł, jeżeli {{Code|2}} - to parser, jeżeli on ma inne wartości, tzn.: {{Tt|2}}, a {{Tt|3}} i dalej, to już dany szablon. ; Parametry ramki funkcji tablicy transportu modułu{{dk}} * Parametry podstawowe: ** {{Code|Nazwa}} {{Patrz|Nazwa}} - jest to pełna nazwa szablonu, modułu, czy parsera, ** {{Code|bez argumentów rodzica}} {{Patrz|bez argumentów rodzica}} - tablica parametrów oddzielonych średnikami, których obiekt uruchamiany nie może przyjmować, nawet jeżeli one są, ** {{Code|nazwa szablonu rodzica}} {{Patrz|nazwa szablonu rodzica}} - jest to zmienna przechowująca nazwę szablonu rodzica ramki dziecka,a nawet któreś z jego przodków, ** {{Code|bez argumentów nienazwanych rodzica}} {{Patrz|bez argumentów nienazwanych rodzica}} - szablon w ramce nie przyjmuje parametrów nienazwanych, określonych liczbą, podanych w rodzicu ramki, ** {{Code|potomek}} {{Patrz|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}} {{Patrz|nie potomek}} - zmienna mówiąca, że to nie jest potomek szablonu, używana, gdy nie jest określona zmienna ramki {{LinkPatrz|zmienna z parametrami rodzica}}, wtedy taka ramka jest traktowana jak normalna ramka, której jedynie trzeba przekazać parametry rodzica, nie przodka, wtedy do niej nie są przekazywane parametry: {{LinkPatrz|parametry rodzica}} (ta zmienna jest wtedy ustawiana, gdy nie jest niepusty parametr {{LinkPatrz|bez dodatkowych sprawdzeń}}), {{LinkPatrz|bez argumentów szablonu}}, i {{LinkPatrz|nazwa szablonu rodzica}} (jeśli ta wartość rodzica nie istnieje, to nadawana jest jej aktualna nazwa szablonu rodzica, a nie przodka, normalnie jest to przodka, a w szczególności rodzica) i {{LinkPatrz|potomek}} (ustawiany na stałą wartość niepustą), ** {{Code|bez argumentów szablonu}} {{Patrz|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ń}} {{Patrz|bez dodatkowych sprawdzeń}} - nie jest uruchamiana walidacja parametrów szablonu rodzica, ** {{Code|parametry rodzica}} {{Patrz|parametry rodzica}} - zmienna przedstawiająca parametry rodzica, czy któreś ze przodków, przekazane do ramki: {{m|Sprawdź|Parametry}} - dodane przez tę funkcję, ** {{Code|zmienna z parametrami rodzica}} {{Patrz|zmienna z parametrami rodzica}} - parametr mówiący, czy ma tworzyć zmienne z parametrami rodzica {{LinkPatrz|parametry rodzica}}, a jeżeli nie jest on, z zadnych z jego potomków podany, to zmienna {{LinkPatrz|parametry rodzica}} jest przekazywana na kolejnego przodka, ** {{Code|zmienna z argumentami ramki}} {{Patrz|zmienna z argumentami ramki}} - zmienna mówiąca, czy mają być tworzone parametry ramki, które nie są sprawdzane 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}} {{Patrz|zmienna z nazwą szablonu rodzica}} - parametr, czy ma tworzyć zmienną: {{LinkPatrz|nazwa szablonu rodzica}}, ** {{Code|parametry funkcji modułu pudełek}} {{Patrz|parametry funkcji modułu pudełek}} - czy do funkcji mają wchodzić parametry modułu pudełek, które są ponumerowane dodatkowym numerkiem, ** {{Code|parametry podstawowe funkcji modułu pudełek}} {{Patrz|parametry podstawowe funkcji modułu pudełek}} - czy do funkcji mają wchodzić podstawowe parametry funkcji modułu pudełek, te które nie mają dodatkowego numerka, ** {{Code|usuń z parametrów ramki}} {{Patrz|usuń z parametrów ramki}} - parametry ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, przedstawiający zmienne oddzielone średnikami, które nie mają być uwzględnione przy uruchamianiu danego obiektu. * {{Code|Funkcja}} {{Patrz|Funkcja}} - nazwa funkcji w module, który ma wywołać w ramce ta funkcja, w przypadku, gdy parametr {{LinkPatrz|co_ma_wywolac}} ma wartość {{Tt|1}}, czyli wywołujemy funkcję {{LinkŚródtytuł|p["Moduł"]}}. Funkcja uruchamia szablon, moduł, czy ramkę, w zależności od drugiego parametru funkcji, z parametrami rodzica ramki bez parametrów opisanych zmienną: {{LinkPatrz|bez argumentów szablonu}}, i bez parametrów wskazanych przez zmienną: {{Code|usuń z parametrów ramki}}. Za pomocą tej funkcji możemy wielopoziomowo wywoływać funkcje przekazując parametry od najwyższego poziomu do najniższego. Ta funkcja służy przede wszystkim 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 do uruchamiania szablonów, a uruchamianie funkcji modułu, w tym funkcji {{m|Cytuj|custom}} w szablonie {{s|PrzypisStrona}}. Przykładem wywołania szablonu, która jest w szablonie: {{s|Wzór}}, w którym jest wywoływany inny szablon, tym razem silnik, tzn. {{s|Wzór/silnik}}: <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> === {{Śródtytuł|BudowaSzereguZDanych}}{{Code|BudowaSzereguZDanych}} === Funkcja do uruchamiania się 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> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tab_lancuch}} {{Patrz|tab_lancuch}} - pewna tablica transportu funkcji. * Zmienne do mikroszablonów: ** {{Code|minimum}} {{Patrz|minimum}} - liczba mówiąca o minimum, ** {{Code|maksimum}} {{Patrz|maksimum}} - liczba mówiąca o maksimum. Parametry ramki funkcji tablicy transportu modułu: * {{Code|akapit}} {{Patrz|akapit}} - jeśli niepusta, to ona definiuje akapit ze znaków {{Code|\n\n}}, przeciwnym wypadku elementy łańcucha nie są łączone w akapity, * {{Code|przecinek}} {{Patrz|przecinek}} - jeśli niepuste, to mówi, że pomiędzy elementami powiniem być przecinek: {{Code|", "}}, został on specjalnie objęty w cudzysłowy, aby zilustrować, że po przecinku znajduje się spacja, * {{Code|nowa linia}} {{Patrz|nowa linia}} - w przeciwieństwo do zmiennej {{LinkPatrz|akapit}}, używany zamiast niej, pisze jedną nową linię, a nie dwie, jako: {{Code|\n}}, * {{Code|wyliczanka}} {{Patrz|wyliczanka}} - wylicza elementy z przecinkami, stawiając przed ostatnim elementem zamiast jego wyraz wyliczania {{Code|i}}, * {{Code|początek}} {{Patrz|początek}} - mówi, że na początku musi znajdować się przecinek, * {{Code|myślnik}} {{Patrz|myślnik}} - mówi, że jeśli nie ma początku przecinka, to stawiany jest myślnik, używany zamiast {{LinkPatrz|początek}}, * {{Code|warunkowe}} {{Patrz|warunkowe}} - instrukcje wikikodu, takie jak: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}, zostaną w kodzie rozwinięte, a później ciągłe właściwe elementy wikikodu otoczone dwoma dolnymi myślnikami zostaną rozwinięte do pewnej postaci, funkcja używa do tego {{LinkŚródtytuł|p.InstrukcjeWarunkowe}}, ** {{Code|parametr}} {{Patrz|parametr}} - używany w towarzystwie z {{LinkPatrz|warunkowe}}, mówiący że, derektywy znakowe ciągłe otoczone dwoma dolnymi myślnikami, zostaną zastąpione odpowiedmimi szablonami, w przeciwnym wypadku niepodania tej wartości lub jego pustej, wtedy te derektywy zostaną zastąpione w postaci rozwiniętej tych szablonów. ** Funkcja w tym warunku zwraca ciąg znaków rozwiniętego warunku. Funkcja posiada też mikroszablony, które są zdefiniowane w kodzie łańcuchów {{LinkPatrz|tab_lancuch}}: * {{Code|<nowiki>{{min}}</nowiki>}} - minimalna wartość szeregu zmiennych, określana przez {{LinkPatrz|minimum}}, * {{Code|<nowiki>{{max}}</nowiki>}} - a tutaj ich maksymalna, określana przez {{LinkPatrz|maksimum}}. Te dwie zmienne są podstawiane do uzyskanego ciągu. Funkcja zwraca te części rozwiniętego tekstu wikikodu, jeśli podano {{LinkPatrz|warunkowe}}, co do instrukcji warunkowych i te bez wewnętrznych klamerek - specjalne kody, czyki te otoczone z dwóch stron dolnumi myślnikami, a pozostałe część jest za to nierozwinięta. == {{Śródtytuł|p.InstrukcjeWarunkowe}}{{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}} {{Patrz|ciag}} - podany ciąg do rozwinięcia z instrukcji warunkowych wewnątrz nie posiadający klamerek, * {{Code|derektywy_specjalne}} {{Patrz|derektywy_specjalne}} - używa do zastępowania specjalnych derektyw, podane po prawej stronie w ramce pływającej, * {{Code|derektywy_parametrowe}} {{Patrz|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: {{LinkŚródtytuł|BudowaSzereguZDanych}}, poprzez: {{LinkŚródtytuł|p.Powtarzaj}}. 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 == === {{Śródtytuł|p.RozpakujArgumenty}}{{Code|p.RozpakujArgumenty}} === Funkcje uruchamia się 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. === {{Śródtytuł|p.PakujParametry}}{{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> Parametry funkcji: * {{Code|args}} {{Patrz|args}} - tablica {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. 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}}, z użyciem funkcji: {{LzLua|mw.text.jsonEncode}}, z drugim parametrem: {{Code|mw.text.JSON_PRESERVE_KEYS}} {{Patrz|mw.text.JSON_PRESERVE_KEYS}}. === {{Śródtytuł|p.RozpakujParametry}}{{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 w niej zwracany. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.RozpakujParametry = function (zmienna_z_parametrami) return mw.text.jsonDecode(zmienna_z_parametrami,mw.text.JSON_PRESERVE_KEYS); end; </syntaxhighlight> Parametry funkcji: * {{Code|zmienna_z_parametrami}} {{Patrz|zmienna_z_parametrami}} - tablica {{Code|JSON}}. 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}}, z użyciem funkcji: {{LzLua|mw.text.jsonDecode}}, z użzyciem drugiego parametru: {{LinkPatrz|mw.text.JSON_PRESERVE_KEYS}}. == {{Śródtytuł|p["Rozwiń"]}}{{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> Parameetry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon rozwija wikikod podany w zmiennej {{Code|1}}, w parametrach szablonu rodzica. * 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}}: <syntaxhighlight lang="lua"> p["Rozwiń"] = function(frame) return frame:getParent():preprocess(frame.args[1]); end; </syntaxhighlight> == {{Śródtytuł|p.Log}}{{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> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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}}: <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 == === {{Śródtytuł|p.Szablon}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p.Szablon = function(frame) return ParserBlokowy(frame,0); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Szablon|Nazwa=<nazwa szablonu>|...}} </syntaxhighlight> === {{Śródtytuł|p["Moduł"]}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p["Moduł"] = function(frame) return ParserBlokowy(frame,1); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Moduł|Nazwa=<nazwa modułu>|Funkcja=<nazwa funkcji>|...}} </syntaxhighlight> === {{Śródtytuł|p.Parser}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p.Parser = function(frame) return ParserBlokowy(frame,2); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Parser|Nazwa=<nazwa parsera>|...}} </syntaxhighlight> == Funkcje książkowe == === {{Śródtytuł|p.Q}}{{Code|p.Q}} === Funkcja uruchamia szablon o podanej nazwie w pierwszym parametrze z przedrostkiem {{Code|Książka:}} przed nazwą szablonu. Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.Q =function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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ą (parametry nazwane, które są wliczane 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}}}} === {{Śródtytuł|p.N}}{{Code|p.N}} === Funkcja uruchamiana we wnętrzu szablonu {{s|N}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on. Funkcja przed nazwą szablonu, czy modułu, zostawia w wpis w postaci przedrostka {{Code|Książka:}}. Czy zostanie dodana przed tym nazwa przestrzeni nazw, to zależy od niepodania niepustej zmiennej {{Parametr|n}}, a zmienna {{Parametr|p|1}} - to przed nim jest dodawana przestrzeń nazw szablonu {{Np|Template|link=tak}}, {{Parametr|p|2}} - modułu {{Np|Module|link=tak}} i {{Parametr|p|3}} - kategorii. Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.N=function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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}}}} === {{Śródtytuł|p.A}}{{Code|p.A}} === Funkcja uruchamiana we wnętrzu szablonu {{s|A}}, która przyjmuje jego parametry, i tak samo działa, jak on. Funkcja usuwa przedrostek {{Code|Książka:}} w nazwie szablonu, czy modułu. Gdy jest podany parametr: {{Parametr|p|tak}}, to dla przestrzeni niebędących: {{Np|Template|link=tak}}, {{Np|Module|link=tak}} i {{Np|Category|link=tak}}, jest zwracany wtedy przez nią parametr pierwszy fukcji, dla tych wartości właśnie wyliczonych przestrzeni usuwany jest przedristek {{Code|Książka:}}. Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.A=function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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 == === {{Śródtytuł|p.Powtarzaj}}{{Code|p.Powtarzaj}} === Funkcja służy do powtarzalnego generowania wikikodu ze składników jego kroku przy pomocy określonych zmiennych rodzica. * Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.Powtarzaj = function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Funkcja może przyjmować tylko parametry nienazwane albo tylko nazwane, albo nienazwane i nazwane (gdy jest ustawiony parametr {{Code|różne}} {{Patrz|różne}}). 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}} {{LinkPatrz|różne}}, która wtedy ma wskazywać na wartość niepustą. ; Najważniejsze parametry, które są to opcjonalne, to są{{dk}} * {{Code|start}} {{Patrz|start}} - liczba, która wskazuje początek liczenia - domyślna wartość to {{Code|1}}, * {{Code|koniec}} {{Patrz|koniec}} - liczba, która wskazuje koniec liczenia. ; Numer końca liczenia parametrów nienazwanych lub nazwanych, czy nazwanychi nienazwanych{{dk}} * Elementy w {{Code|parametry}} {{Patrz|parametry}} mogą modyfikować odpowiednio parametry: {{LinkPatrz|start}} i {{LinkPatrz|koniec}}. * Ze zmiennej {{LinkPatrz|parametry}} jest liczona odpowiednia zmienna {{LinkPatrz|tabela}} dopuzczalnych zmiennych do liczenia. * Funkcja {{Code|Wylicz_skoncz_na_koncu}},którego algorytm podomy w tej poyzcji, tzn. koniec liczenia parametrów nienazwanych musi być policzony, jeżeli nie ma parametrów nazwanych w tabeli {{Code|tabela}} {{Patrz|tabela}}. A przeciwnie, jeżeli nie jest ustawiony parametr {{Code|różne}} {{LinkPatrz|różne}} nie na wartość niepustą, wtedy jest liczony parametr maksimum parametrów nazwanych, przeciwnie wtedy liczy się parametr maksimum numeracyjne parametrów numerowanych, czyli zmienną: {{Code|maksimum numeracyjne}} {{Patrz|maksimum numeracyjne}}, jeśli on ma wartość niepustą, wtedy liczy się maksimum parametrów nienazwanych, a jeżeli ona ma przeciwną wartość, to się liczy maksimum parametrów nazwanych, jak nienazwanych. Na podstawie tego mamy policzony odpowiednio taki koniec liczenia modyfikacji zwracany i policzony przez tą funkcję. ; Parametr {{Code|dodatkowe}}{{dk}} * To maksimum parametrów nazwanych, dla jakieś podstawy parametrów, są pomijane parametry z: {{Code|dodatkowe}}, która jest zestawem podstaw parametrów oddzielonych średnikami, jest właśnie podany ten parametr w nim. Przykładem jego jest: * {{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. ; Format parametru {{Parametr|parametry}}{{dk}} * 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 równa liczbie {{Code|5}}, oddzielonych średnikami. ; Opis parametru {{Parametr|parametry}}{{dk}} 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 w wartościach: {{Code|zmienna 1>}}, {{Code|<zmienna 2>}} i {{Code|<zmienna 3>}}, w których są pewne nazwy bazowe parametrów bez numerka na jej końcu, w zmiennej {{Code|parametry}} można nie podawać dalszych elementów 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ć nawet tego znaku,gdy nic nie ma po równa się) dla danego problemu funkcji. ; Wikikod pojedynczego kroku liczenia całości wygenerowanego wikikodu dla wszystkich zmiennych{{dk}} * 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)}}. ; Parametr {{Parametr|start}}, wartość początkowa{{dk}} * Gdy parametr {{Code|tonumber(frame.args["start"]) or 1}}, jest równy zero, funkcja zwraca błąd: {{Code|(początek jest ustawiony na zero)}}. ; Brak parametrów szablonu{{dk}} * 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. ; Parametr {{Parametr|nic}}{{dk}} * Gdy {{Code|nic}} przyjmuje wartość, i gdy pomijamy parametr, lub on przyjmuje wartość pustą, wtedy a funkcja nie może wygenerować żadnego kroku iteracji, to wtedy jest zwracana wartość parametru {{Code|nic}} lub ciąg pusty. ; Inne parametry{{dk}} * Parametr {{Code|po kolei}} {{Patrz|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|zaznacz}} {{Patrz|zaznacz}} - liczby oddzielone średnikami, które przy parametrach nazwanych o pewnych numerach i numerkach nie mają być uwzględnione przy niepustym parametrze {{Code|po kolei}} {{LinkPatrz|po kolei}}, a przy jego przeciwnej wartości za to mają być użyte. * 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}} {{Patrz|_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 wikikodami, wtedy ta funkcja używa do tego liczenia{{dk}} * Jest to funkcja {{LinkŚródtytuł|BudowaSzereguZDanych}}. * Wywołanie funkcji jest takie: {{Pre|lancuch_znakow {{=}} BudowaSzereguZDanych(frame,tab_lancuch,minimum or 0,maksimum);}} ; Parametry funkcji {{LinkŚródtytuł|BudowaSzereguZDanych}}. * One są wraz z jego parametrami podane w postaci jego parametrów ramki {{Code|frame}}, które jednocześnie są parametrami {{LinkŚródtytuł|p.Powtarzaj}}, używa się je 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ą {{LzLua|frame:preprocess}}, i jest zwracany jako wartość omawianej funkcji. ; Przykłady{{dk}} * Funkcja jest używana np. w silnikach szablonów, np.: {{s|Osobny artykuł/silnik}} szablonu {{s|Osobny artykuł}}, jak i do niego 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}}. === {{Śródtytuł|p.PowtarzajOdDo}}{{Code|p.PowtarzajOdDo}} === Funkcja służy do iteracji, od jakieś liczby do jakieś innej, podanego wikikodu dla danego kroku {{Code|1}}, iterując to, co krok określony zmienną: {{Code|krok}}. * 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ę{{dk}} {{nobold|{{Code|{{m|Ramka|Rozwiń}}}}}}, lub go rozwija na końcu, na podstawie kolejnych kroków iteracji{{dk}} * {{Code|start}} - początek iteracji dokonywany przez ta funkcję, * {{Code|koniec}} - koniec iteracji dokonywany przez ta funkcję, * {{Code|krok}} - krok iteracji, co który numer 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{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}} * {{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ą{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}} * {{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{{dk}} {{nobold|{{s|Chem/silnik}}}}, w tym nadrzędnym{{dk}} {{nobold|{{s|Chem}}}}, przykłady jego działania{{dk}} * {{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. === {{Śródtytuł|p["PrzetwarzajIterującCiąg"]}}{{Code|p["PrzetwarzajIterującCiąg"]}} === Funkcja do iteracji wikikodu po parametrach oddzielonych średniami w parametrze ramki {{Code|cią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{{dk}} * {{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{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}} * {{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ą{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}} * {{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>}} jest kolejny parametr, oddzielonych od pozastałych średniami, z: {{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}}: {{LzLua|frame:preprocess}}, jeśli: {{Code|nie rozwiń}}, nie przybiera wartości niepustej. === {{Śródtytuł|p["PowtarzajWedług"]}}{{Code|p["PowtarzajWedług"]}} === Funkcja wyszukująca elementy według wzoru począwszy od numeru, określonego przez {{Code|start}}, aż do zakończenia danych kolenych sprawdzania od tej liczby, czy taka strona istnieje, numerek jest określony przez pewien wikikod, określony przez {{Code|<nowiki>{{_}}</nowiki>}}, którymusi być podany we wzorze {{Code|wzor}}. Ona w ten sposób dla istniejących stron ustawia pewne łańcuchy, które są łączone znakami {{Code|", "}}, a na końcu samym {{Code|" i "}}. 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 strony{{dk}} {{nobold|„{{Ns:Template}}{{dk}}Polecane książki/”}}, a oto przykład{{dk}}{{nobold|{{Parametr|wzór|{{Ns:Template}}{{dk}}Polecane książki/{{((}}_{{))}}}}}}{{dk}} * {{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}}}} == {{Śródtytuł|p["LiczbaPrawychUkośników"]}}{{Code|p["LiczbaPrawychUkośników"]}} == Funkcja liczy, ile jest prawych ukośników w adresie strony podany jako pierwszy parametr ramki. * 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. ; Parametry fubkcji{{dk}} * {{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}}}} == {{Śródtytuł|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}}{{Code|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}} == Funkcja liczy maksymalny numer kolejnej strony liczonej według wzoru {{Code|wzor}}, musi być we wzorze podany element {{Code|<nowiki>{{_}}</nowiki>}}, aby mógł to robić. * 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/”, czyli dla stron o ogólnym wzorze: {{Parametr|wzór|{{Ns:Template}}:Polecane książki/{{((}}_{{))}}}}. ; Parametry funkcji{{dk}} * {{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 == === {{Śródtytuł|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}}{{Code|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}} === Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy minimalny numer takich zmiennych. * 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*)}}. ; Parametry funkcji{{dk}} * {{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}}}} === {{Śródtytuł|p.IleJestTakichOdpowiednikowychZmiennych}}{{Code|p.IleJestTakichOdpowiednikowychZmiennych}} === Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy ile jest takich zmiennych. * 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. ; Parametry funkcji{{dk}} * {{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}}}} == {{Śródtytuł|p["Parametr w tablicy nazw"]}}{{Code|p["Parametr w tablicy nazw"]}} == Funkcja bada, czy jest taki parametr {{Code|pozycja}} w tablicy nazw określonej zmienną {{Code|parametry}}, której elementy są oddzielone średnikami. * 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. ; Parametry funkcji{{dk}} * {{Code|parametry}} - lista parametrów oddzielonych średnikiem, * {{Code|pozycja}} - szukana lista w tablicy parametrów, * {{Code|od dużej}} - czy parametr: {{Code|pozycja}}, i elementy listy: {{Code|parametry}}, 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}}, a to ostatnie jest to wartość języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, która po transformacji na wikikod jest zamieniana na ciąg pusty, więc ona nadaje się do instrukcji warunkowych. === 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> 1eqgyzgp1lnhmglcf2t9wmzpjeuke12 553399 553398 2026-08-29T20:16:45Z Persino 2851 /* {{Śródtytuł|p.Powtarzaj}}{{Code|p.Powtarzaj}} */ 553399 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. Funkcje, w tym module, uruchamia się tylko w ramce w szablonie, bo są tylko do tego przygotowane. One służą do powtarzania parametrów rodzica, czy przodka, iteracji pojedynczego kroku wikikodu, jakiś sprawdzeń, do liczenia odpowiedników i związanych z tym parametrami, itp.. == Funcje lokalne modułu == === {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} === Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, tylko w module {{Code|{{ld2|Ramka}}}}, szablonów, modułów i parserów w ramce. Uruchamiana jest przez funkcje: {{LinkŚródtytuł|p.Szablon}} - funkcja do uruchamiania szablonów, {{LinkŚródtytuł|p["Moduł"]}} - funkcja do uruchamiania modułów, i {{LinkŚródtytuł|p.Parser}} - funkcja do uruchamiania parserów. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ParserBlokowy(frame, co_ma_wywolac)...end; </syntaxhighlight> ; Parametry funkcji{{dk}} * {{Code|frame}} {{Patrz|frame}} - funkcja ramkki funkcji tablica transportu modułu, * {{Code|co_ma_wywolac}} {{Patrz|co_ma_wywolac}} - ten parametr przyjmuje wartość liczbową, która jeżeli {{Tt|0}} - to uruchamiany jest szablon, jeżeli {{Tt|1}} - moduł, jeżeli {{Code|2}} - to parser, jeżeli on ma inne wartości, tzn.: {{Tt|2}}, a {{Tt|3}} i dalej, to już dany szablon. ; Parametry ramki funkcji tablicy transportu modułu{{dk}} * Parametry podstawowe: ** {{Code|Nazwa}} {{Patrz|Nazwa}} - jest to pełna nazwa szablonu, modułu, czy parsera, ** {{Code|bez argumentów rodzica}} {{Patrz|bez argumentów rodzica}} - tablica parametrów oddzielonych średnikami, których obiekt uruchamiany nie może przyjmować, nawet jeżeli one są, ** {{Code|nazwa szablonu rodzica}} {{Patrz|nazwa szablonu rodzica}} - jest to zmienna przechowująca nazwę szablonu rodzica ramki dziecka,a nawet któreś z jego przodków, ** {{Code|bez argumentów nienazwanych rodzica}} {{Patrz|bez argumentów nienazwanych rodzica}} - szablon w ramce nie przyjmuje parametrów nienazwanych, określonych liczbą, podanych w rodzicu ramki, ** {{Code|potomek}} {{Patrz|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}} {{Patrz|nie potomek}} - zmienna mówiąca, że to nie jest potomek szablonu, używana, gdy nie jest określona zmienna ramki {{LinkPatrz|zmienna z parametrami rodzica}}, wtedy taka ramka jest traktowana jak normalna ramka, której jedynie trzeba przekazać parametry rodzica, nie przodka, wtedy do niej nie są przekazywane parametry: {{LinkPatrz|parametry rodzica}} (ta zmienna jest wtedy ustawiana, gdy nie jest niepusty parametr {{LinkPatrz|bez dodatkowych sprawdzeń}}), {{LinkPatrz|bez argumentów szablonu}}, i {{LinkPatrz|nazwa szablonu rodzica}} (jeśli ta wartość rodzica nie istnieje, to nadawana jest jej aktualna nazwa szablonu rodzica, a nie przodka, normalnie jest to przodka, a w szczególności rodzica) i {{LinkPatrz|potomek}} (ustawiany na stałą wartość niepustą), ** {{Code|bez argumentów szablonu}} {{Patrz|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ń}} {{Patrz|bez dodatkowych sprawdzeń}} - nie jest uruchamiana walidacja parametrów szablonu rodzica, ** {{Code|parametry rodzica}} {{Patrz|parametry rodzica}} - zmienna przedstawiająca parametry rodzica, czy któreś ze przodków, przekazane do ramki: {{m|Sprawdź|Parametry}} - dodane przez tę funkcję, ** {{Code|zmienna z parametrami rodzica}} {{Patrz|zmienna z parametrami rodzica}} - parametr mówiący, czy ma tworzyć zmienne z parametrami rodzica {{LinkPatrz|parametry rodzica}}, a jeżeli nie jest on, z zadnych z jego potomków podany, to zmienna {{LinkPatrz|parametry rodzica}} jest przekazywana na kolejnego przodka, ** {{Code|zmienna z argumentami ramki}} {{Patrz|zmienna z argumentami ramki}} - zmienna mówiąca, czy mają być tworzone parametry ramki, które nie są sprawdzane 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}} {{Patrz|zmienna z nazwą szablonu rodzica}} - parametr, czy ma tworzyć zmienną: {{LinkPatrz|nazwa szablonu rodzica}}, ** {{Code|parametry funkcji modułu pudełek}} {{Patrz|parametry funkcji modułu pudełek}} - czy do funkcji mają wchodzić parametry modułu pudełek, które są ponumerowane dodatkowym numerkiem, ** {{Code|parametry podstawowe funkcji modułu pudełek}} {{Patrz|parametry podstawowe funkcji modułu pudełek}} - czy do funkcji mają wchodzić podstawowe parametry funkcji modułu pudełek, te które nie mają dodatkowego numerka, ** {{Code|usuń z parametrów ramki}} {{Patrz|usuń z parametrów ramki}} - parametry ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, przedstawiający zmienne oddzielone średnikami, które nie mają być uwzględnione przy uruchamianiu danego obiektu. * {{Code|Funkcja}} {{Patrz|Funkcja}} - nazwa funkcji w module, który ma wywołać w ramce ta funkcja, w przypadku, gdy parametr {{LinkPatrz|co_ma_wywolac}} ma wartość {{Tt|1}}, czyli wywołujemy funkcję {{LinkŚródtytuł|p["Moduł"]}}. Funkcja uruchamia szablon, moduł, czy ramkę, w zależności od drugiego parametru funkcji, z parametrami rodzica ramki bez parametrów opisanych zmienną: {{LinkPatrz|bez argumentów szablonu}}, i bez parametrów wskazanych przez zmienną: {{Code|usuń z parametrów ramki}}. Za pomocą tej funkcji możemy wielopoziomowo wywoływać funkcje przekazując parametry od najwyższego poziomu do najniższego. Ta funkcja służy przede wszystkim 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 do uruchamiania szablonów, a uruchamianie funkcji modułu, w tym funkcji {{m|Cytuj|custom}} w szablonie {{s|PrzypisStrona}}. Przykładem wywołania szablonu, która jest w szablonie: {{s|Wzór}}, w którym jest wywoływany inny szablon, tym razem silnik, tzn. {{s|Wzór/silnik}}: <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> === {{Śródtytuł|BudowaSzereguZDanych}}{{Code|BudowaSzereguZDanych}} === Funkcja do uruchamiania się 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> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tab_lancuch}} {{Patrz|tab_lancuch}} - pewna tablica transportu funkcji. * Zmienne do mikroszablonów: ** {{Code|minimum}} {{Patrz|minimum}} - liczba mówiąca o minimum, ** {{Code|maksimum}} {{Patrz|maksimum}} - liczba mówiąca o maksimum. Parametry ramki funkcji tablicy transportu modułu: * {{Code|akapit}} {{Patrz|akapit}} - jeśli niepusta, to ona definiuje akapit ze znaków {{Code|\n\n}}, przeciwnym wypadku elementy łańcucha nie są łączone w akapity, * {{Code|przecinek}} {{Patrz|przecinek}} - jeśli niepuste, to mówi, że pomiędzy elementami powiniem być przecinek: {{Code|", "}}, został on specjalnie objęty w cudzysłowy, aby zilustrować, że po przecinku znajduje się spacja, * {{Code|nowa linia}} {{Patrz|nowa linia}} - w przeciwieństwo do zmiennej {{LinkPatrz|akapit}}, używany zamiast niej, pisze jedną nową linię, a nie dwie, jako: {{Code|\n}}, * {{Code|wyliczanka}} {{Patrz|wyliczanka}} - wylicza elementy z przecinkami, stawiając przed ostatnim elementem zamiast jego wyraz wyliczania {{Code|i}}, * {{Code|początek}} {{Patrz|początek}} - mówi, że na początku musi znajdować się przecinek, * {{Code|myślnik}} {{Patrz|myślnik}} - mówi, że jeśli nie ma początku przecinka, to stawiany jest myślnik, używany zamiast {{LinkPatrz|początek}}, * {{Code|warunkowe}} {{Patrz|warunkowe}} - instrukcje wikikodu, takie jak: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}, zostaną w kodzie rozwinięte, a później ciągłe właściwe elementy wikikodu otoczone dwoma dolnymi myślnikami zostaną rozwinięte do pewnej postaci, funkcja używa do tego {{LinkŚródtytuł|p.InstrukcjeWarunkowe}}, ** {{Code|parametr}} {{Patrz|parametr}} - używany w towarzystwie z {{LinkPatrz|warunkowe}}, mówiący że, derektywy znakowe ciągłe otoczone dwoma dolnymi myślnikami, zostaną zastąpione odpowiedmimi szablonami, w przeciwnym wypadku niepodania tej wartości lub jego pustej, wtedy te derektywy zostaną zastąpione w postaci rozwiniętej tych szablonów. ** Funkcja w tym warunku zwraca ciąg znaków rozwiniętego warunku. Funkcja posiada też mikroszablony, które są zdefiniowane w kodzie łańcuchów {{LinkPatrz|tab_lancuch}}: * {{Code|<nowiki>{{min}}</nowiki>}} - minimalna wartość szeregu zmiennych, określana przez {{LinkPatrz|minimum}}, * {{Code|<nowiki>{{max}}</nowiki>}} - a tutaj ich maksymalna, określana przez {{LinkPatrz|maksimum}}. Te dwie zmienne są podstawiane do uzyskanego ciągu. Funkcja zwraca te części rozwiniętego tekstu wikikodu, jeśli podano {{LinkPatrz|warunkowe}}, co do instrukcji warunkowych i te bez wewnętrznych klamerek - specjalne kody, czyki te otoczone z dwóch stron dolnumi myślnikami, a pozostałe część jest za to nierozwinięta. == {{Śródtytuł|p.InstrukcjeWarunkowe}}{{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}} {{Patrz|ciag}} - podany ciąg do rozwinięcia z instrukcji warunkowych wewnątrz nie posiadający klamerek, * {{Code|derektywy_specjalne}} {{Patrz|derektywy_specjalne}} - używa do zastępowania specjalnych derektyw, podane po prawej stronie w ramce pływającej, * {{Code|derektywy_parametrowe}} {{Patrz|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: {{LinkŚródtytuł|BudowaSzereguZDanych}}, poprzez: {{LinkŚródtytuł|p.Powtarzaj}}. 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 == === {{Śródtytuł|p.RozpakujArgumenty}}{{Code|p.RozpakujArgumenty}} === Funkcje uruchamia się 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. === {{Śródtytuł|p.PakujParametry}}{{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> Parametry funkcji: * {{Code|args}} {{Patrz|args}} - tablica {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. 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}}, z użyciem funkcji: {{LzLua|mw.text.jsonEncode}}, z drugim parametrem: {{Code|mw.text.JSON_PRESERVE_KEYS}} {{Patrz|mw.text.JSON_PRESERVE_KEYS}}. === {{Śródtytuł|p.RozpakujParametry}}{{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 w niej zwracany. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.RozpakujParametry = function (zmienna_z_parametrami) return mw.text.jsonDecode(zmienna_z_parametrami,mw.text.JSON_PRESERVE_KEYS); end; </syntaxhighlight> Parametry funkcji: * {{Code|zmienna_z_parametrami}} {{Patrz|zmienna_z_parametrami}} - tablica {{Code|JSON}}. 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}}, z użyciem funkcji: {{LzLua|mw.text.jsonDecode}}, z użzyciem drugiego parametru: {{LinkPatrz|mw.text.JSON_PRESERVE_KEYS}}. == {{Śródtytuł|p["Rozwiń"]}}{{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> Parameetry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon rozwija wikikod podany w zmiennej {{Code|1}}, w parametrach szablonu rodzica. * 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}}: <syntaxhighlight lang="lua"> p["Rozwiń"] = function(frame) return frame:getParent():preprocess(frame.args[1]); end; </syntaxhighlight> == {{Śródtytuł|p.Log}}{{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> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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}}: <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 == === {{Śródtytuł|p.Szablon}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p.Szablon = function(frame) return ParserBlokowy(frame,0); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Szablon|Nazwa=<nazwa szablonu>|...}} </syntaxhighlight> === {{Śródtytuł|p["Moduł"]}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p["Moduł"] = function(frame) return ParserBlokowy(frame,1); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Moduł|Nazwa=<nazwa modułu>|Funkcja=<nazwa funkcji>|...}} </syntaxhighlight> === {{Śródtytuł|p.Parser}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p.Parser = function(frame) return ParserBlokowy(frame,2); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Parser|Nazwa=<nazwa parsera>|...}} </syntaxhighlight> == Funkcje książkowe == === {{Śródtytuł|p.Q}}{{Code|p.Q}} === Funkcja uruchamia szablon o podanej nazwie w pierwszym parametrze z przedrostkiem {{Code|Książka:}} przed nazwą szablonu. Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.Q =function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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ą (parametry nazwane, które są wliczane 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}}}} === {{Śródtytuł|p.N}}{{Code|p.N}} === Funkcja uruchamiana we wnętrzu szablonu {{s|N}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on. Funkcja przed nazwą szablonu, czy modułu, zostawia w wpis w postaci przedrostka {{Code|Książka:}}. Czy zostanie dodana przed tym nazwa przestrzeni nazw, to zależy od niepodania niepustej zmiennej {{Parametr|n}}, a zmienna {{Parametr|p|1}} - to przed nim jest dodawana przestrzeń nazw szablonu {{Np|Template|link=tak}}, {{Parametr|p|2}} - modułu {{Np|Module|link=tak}} i {{Parametr|p|3}} - kategorii. Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.N=function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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}}}} === {{Śródtytuł|p.A}}{{Code|p.A}} === Funkcja uruchamiana we wnętrzu szablonu {{s|A}}, która przyjmuje jego parametry, i tak samo działa, jak on. Funkcja usuwa przedrostek {{Code|Książka:}} w nazwie szablonu, czy modułu. Gdy jest podany parametr: {{Parametr|p|tak}}, to dla przestrzeni niebędących: {{Np|Template|link=tak}}, {{Np|Module|link=tak}} i {{Np|Category|link=tak}}, jest zwracany wtedy przez nią parametr pierwszy fukcji, dla tych wartości właśnie wyliczonych przestrzeni usuwany jest przedristek {{Code|Książka:}}. Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.A=function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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 == === {{Śródtytuł|p.Powtarzaj}}{{Code|p.Powtarzaj}} === Funkcja służy do powtarzalnego generowania wikikodu ze składników jego kroku przy pomocy określonych zmiennych rodzica. * Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.Powtarzaj = function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Funkcja może przyjmować tylko parametry nienazwane albo tylko nazwane, albo nienazwane i nazwane (gdy jest ustawiony parametr {{Code|różne}} {{Patrz|różne}}). 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}} {{LinkPatrz|różne}}, która wtedy ma wskazywać na wartość niepustą. ; Najważniejsze parametry, które są to opcjonalne, to są{{dk}} * {{Code|start}} {{Patrz|start}} - liczba, która wskazuje początek liczenia - domyślna wartość to {{Code|1}}, * {{Code|koniec}} {{Patrz|koniec}} - liczba, która wskazuje koniec liczenia. ; Numer końca liczenia parametrów nienazwanych lub nazwanych, czy nazwanychi nienazwanych{{dk}} * Elementy w {{Code|parametry}} {{Patrz|parametry}} mogą modyfikować odpowiednio parametry: {{Code|start}} {{LinkPatrz|start}} i {{Code|koniec}} {{LinkPatrz|koniec}}. * Ze zmiennej {{LinkPatrz|parametry}} jest liczona odpowiednia zmienna {{LinkPatrz|tabela}} dopuzczalnych zmiennych do liczenia. * Funkcja {{Code|Wylicz_skoncz_na_koncu}},którego algorytm podomy w tej poyzcji, tzn. koniec liczenia parametrów nienazwanych musi być policzony, jeżeli nie ma parametrów nazwanych w tabeli {{Code|tabela}} {{Patrz|tabela}}. A przeciwnie, jeżeli nie jest ustawiony parametr {{Code|różne}} {{LinkPatrz|różne}} nie na wartość niepustą, wtedy jest liczony parametr maksimum parametrów nazwanych, przeciwnie wtedy liczy się parametr maksimum numeracyjne parametrów numerowanych, czyli zmienną: {{Code|maksimum numeracyjne}} {{Patrz|maksimum numeracyjne}}, jeśli on ma wartość niepustą, wtedy liczy się maksimum parametrów nienazwanych, a jeżeli ona ma przeciwną wartość, to się liczy maksimum parametrów nazwanych, jak nienazwanych. Na podstawie tego mamy policzony odpowiednio taki koniec liczenia modyfikacji zwracany i policzony przez tą funkcję. ; Parametr {{Code|dodatkowe}}{{dk}} * To maksimum parametrów nazwanych, dla jakieś podstawy parametrów, są pomijane parametry z: {{Code|dodatkowe}}, która jest zestawem podstaw parametrów oddzielonych średnikami, jest właśnie podany ten parametr w nim. Przykładem jego jest: * {{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. ; Format parametru {{Parametr|parametry}}{{dk}} * 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 równa liczbie {{Code|5}}, oddzielonych średnikami. ; Opis parametru {{Parametr|parametry}}{{dk}} 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 w wartościach: {{Code|zmienna 1>}}, {{Code|<zmienna 2>}} i {{Code|<zmienna 3>}}, w których są pewne nazwy bazowe parametrów bez numerka na jej końcu, w zmiennej {{Code|parametry}} można nie podawać dalszych elementów 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ć nawet tego znaku,gdy nic nie ma po równa się) dla danego problemu funkcji. ; Wikikod pojedynczego kroku liczenia całości wygenerowanego wikikodu dla wszystkich zmiennych{{dk}} * 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)}}. ; Parametr {{Parametr|start}}, wartość początkowa{{dk}} * Gdy parametr {{Code|tonumber(frame.args["start"]) or 1}}, jest równy zero, funkcja zwraca błąd: {{Code|(początek jest ustawiony na zero)}}. ; Brak parametrów szablonu{{dk}} * 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. ; Parametr {{Parametr|nic}}{{dk}} * Gdy {{Code|nic}} przyjmuje wartość, i gdy pomijamy parametr, lub on przyjmuje wartość pustą, wtedy a funkcja nie może wygenerować żadnego kroku iteracji, to wtedy jest zwracana wartość parametru {{Code|nic}} lub ciąg pusty. ; Inne parametry{{dk}} * Parametr {{Code|po kolei}} {{Patrz|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|zaznacz}} {{Patrz|zaznacz}} - liczby oddzielone średnikami, które przy parametrach nazwanych o pewnych numerach i numerkach nie mają być uwzględnione przy niepustym parametrze {{Code|po kolei}} {{LinkPatrz|po kolei}}, a przy jego przeciwnej wartości za to mają być użyte. * 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}} {{Patrz|_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 wikikodami, wtedy ta funkcja używa do tego liczenia{{dk}} * Jest to funkcja {{LinkŚródtytuł|BudowaSzereguZDanych}}. * Wywołanie funkcji jest takie: {{Pre|lancuch_znakow {{=}} BudowaSzereguZDanych(frame,tab_lancuch,minimum or 0,maksimum);}} ; Parametry funkcji {{LinkŚródtytuł|BudowaSzereguZDanych}}. * One są wraz z jego parametrami podane w postaci jego parametrów ramki {{Code|frame}}, które jednocześnie są parametrami {{LinkŚródtytuł|p.Powtarzaj}}, używa się je 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ą {{LzLua|frame:preprocess}}, i jest zwracany jako wartość omawianej funkcji. ; Przykłady{{dk}} * Funkcja jest używana np. w silnikach szablonów, np.: {{s|Osobny artykuł/silnik}} szablonu {{s|Osobny artykuł}}, jak i do niego 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}}. === {{Śródtytuł|p.PowtarzajOdDo}}{{Code|p.PowtarzajOdDo}} === Funkcja służy do iteracji, od jakieś liczby do jakieś innej, podanego wikikodu dla danego kroku {{Code|1}}, iterując to, co krok określony zmienną: {{Code|krok}}. * 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ę{{dk}} {{nobold|{{Code|{{m|Ramka|Rozwiń}}}}}}, lub go rozwija na końcu, na podstawie kolejnych kroków iteracji{{dk}} * {{Code|start}} - początek iteracji dokonywany przez ta funkcję, * {{Code|koniec}} - koniec iteracji dokonywany przez ta funkcję, * {{Code|krok}} - krok iteracji, co który numer 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{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}} * {{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ą{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}} * {{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{{dk}} {{nobold|{{s|Chem/silnik}}}}, w tym nadrzędnym{{dk}} {{nobold|{{s|Chem}}}}, przykłady jego działania{{dk}} * {{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. === {{Śródtytuł|p["PrzetwarzajIterującCiąg"]}}{{Code|p["PrzetwarzajIterującCiąg"]}} === Funkcja do iteracji wikikodu po parametrach oddzielonych średniami w parametrze ramki {{Code|cią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{{dk}} * {{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{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}} * {{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ą{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}} * {{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>}} jest kolejny parametr, oddzielonych od pozastałych średniami, z: {{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}}: {{LzLua|frame:preprocess}}, jeśli: {{Code|nie rozwiń}}, nie przybiera wartości niepustej. === {{Śródtytuł|p["PowtarzajWedług"]}}{{Code|p["PowtarzajWedług"]}} === Funkcja wyszukująca elementy według wzoru począwszy od numeru, określonego przez {{Code|start}}, aż do zakończenia danych kolenych sprawdzania od tej liczby, czy taka strona istnieje, numerek jest określony przez pewien wikikod, określony przez {{Code|<nowiki>{{_}}</nowiki>}}, którymusi być podany we wzorze {{Code|wzor}}. Ona w ten sposób dla istniejących stron ustawia pewne łańcuchy, które są łączone znakami {{Code|", "}}, a na końcu samym {{Code|" i "}}. 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 strony{{dk}} {{nobold|„{{Ns:Template}}{{dk}}Polecane książki/”}}, a oto przykład{{dk}}{{nobold|{{Parametr|wzór|{{Ns:Template}}{{dk}}Polecane książki/{{((}}_{{))}}}}}}{{dk}} * {{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}}}} == {{Śródtytuł|p["LiczbaPrawychUkośników"]}}{{Code|p["LiczbaPrawychUkośników"]}} == Funkcja liczy, ile jest prawych ukośników w adresie strony podany jako pierwszy parametr ramki. * 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. ; Parametry fubkcji{{dk}} * {{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}}}} == {{Śródtytuł|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}}{{Code|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}} == Funkcja liczy maksymalny numer kolejnej strony liczonej według wzoru {{Code|wzor}}, musi być we wzorze podany element {{Code|<nowiki>{{_}}</nowiki>}}, aby mógł to robić. * 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/”, czyli dla stron o ogólnym wzorze: {{Parametr|wzór|{{Ns:Template}}:Polecane książki/{{((}}_{{))}}}}. ; Parametry funkcji{{dk}} * {{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 == === {{Śródtytuł|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}}{{Code|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}} === Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy minimalny numer takich zmiennych. * 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*)}}. ; Parametry funkcji{{dk}} * {{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}}}} === {{Śródtytuł|p.IleJestTakichOdpowiednikowychZmiennych}}{{Code|p.IleJestTakichOdpowiednikowychZmiennych}} === Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy ile jest takich zmiennych. * 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. ; Parametry funkcji{{dk}} * {{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}}}} == {{Śródtytuł|p["Parametr w tablicy nazw"]}}{{Code|p["Parametr w tablicy nazw"]}} == Funkcja bada, czy jest taki parametr {{Code|pozycja}} w tablicy nazw określonej zmienną {{Code|parametry}}, której elementy są oddzielone średnikami. * 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. ; Parametry funkcji{{dk}} * {{Code|parametry}} - lista parametrów oddzielonych średnikiem, * {{Code|pozycja}} - szukana lista w tablicy parametrów, * {{Code|od dużej}} - czy parametr: {{Code|pozycja}}, i elementy listy: {{Code|parametry}}, 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}}, a to ostatnie jest to wartość języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, która po transformacji na wikikod jest zamieniana na ciąg pusty, więc ona nadaje się do instrukcji warunkowych. === 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> 7hx8n1ucg32gy24r78zkulv61v47q13 553400 553399 2026-08-29T20:18:24Z Persino 2851 /* Funkcje parametrów i argumentów */ 553400 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. Funkcje, w tym module, uruchamia się tylko w ramce w szablonie, bo są tylko do tego przygotowane. One służą do powtarzania parametrów rodzica, czy przodka, iteracji pojedynczego kroku wikikodu, jakiś sprawdzeń, do liczenia odpowiedników i związanych z tym parametrami, itp.. == Funcje lokalne modułu == === {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} === Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, tylko w module {{Code|{{ld2|Ramka}}}}, szablonów, modułów i parserów w ramce. Uruchamiana jest przez funkcje: {{LinkŚródtytuł|p.Szablon}} - funkcja do uruchamiania szablonów, {{LinkŚródtytuł|p["Moduł"]}} - funkcja do uruchamiania modułów, i {{LinkŚródtytuł|p.Parser}} - funkcja do uruchamiania parserów. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ParserBlokowy(frame, co_ma_wywolac)...end; </syntaxhighlight> ; Parametry funkcji{{dk}} * {{Code|frame}} {{Patrz|frame}} - funkcja ramkki funkcji tablica transportu modułu, * {{Code|co_ma_wywolac}} {{Patrz|co_ma_wywolac}} - ten parametr przyjmuje wartość liczbową, która jeżeli {{Tt|0}} - to uruchamiany jest szablon, jeżeli {{Tt|1}} - moduł, jeżeli {{Code|2}} - to parser, jeżeli on ma inne wartości, tzn.: {{Tt|2}}, a {{Tt|3}} i dalej, to już dany szablon. ; Parametry ramki funkcji tablicy transportu modułu{{dk}} * Parametry podstawowe: ** {{Code|Nazwa}} {{Patrz|Nazwa}} - jest to pełna nazwa szablonu, modułu, czy parsera, ** {{Code|bez argumentów rodzica}} {{Patrz|bez argumentów rodzica}} - tablica parametrów oddzielonych średnikami, których obiekt uruchamiany nie może przyjmować, nawet jeżeli one są, ** {{Code|nazwa szablonu rodzica}} {{Patrz|nazwa szablonu rodzica}} - jest to zmienna przechowująca nazwę szablonu rodzica ramki dziecka,a nawet któreś z jego przodków, ** {{Code|bez argumentów nienazwanych rodzica}} {{Patrz|bez argumentów nienazwanych rodzica}} - szablon w ramce nie przyjmuje parametrów nienazwanych, określonych liczbą, podanych w rodzicu ramki, ** {{Code|potomek}} {{Patrz|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}} {{Patrz|nie potomek}} - zmienna mówiąca, że to nie jest potomek szablonu, używana, gdy nie jest określona zmienna ramki {{LinkPatrz|zmienna z parametrami rodzica}}, wtedy taka ramka jest traktowana jak normalna ramka, której jedynie trzeba przekazać parametry rodzica, nie przodka, wtedy do niej nie są przekazywane parametry: {{LinkPatrz|parametry rodzica}} (ta zmienna jest wtedy ustawiana, gdy nie jest niepusty parametr {{LinkPatrz|bez dodatkowych sprawdzeń}}), {{LinkPatrz|bez argumentów szablonu}}, i {{LinkPatrz|nazwa szablonu rodzica}} (jeśli ta wartość rodzica nie istnieje, to nadawana jest jej aktualna nazwa szablonu rodzica, a nie przodka, normalnie jest to przodka, a w szczególności rodzica) i {{LinkPatrz|potomek}} (ustawiany na stałą wartość niepustą), ** {{Code|bez argumentów szablonu}} {{Patrz|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ń}} {{Patrz|bez dodatkowych sprawdzeń}} - nie jest uruchamiana walidacja parametrów szablonu rodzica, ** {{Code|parametry rodzica}} {{Patrz|parametry rodzica}} - zmienna przedstawiająca parametry rodzica, czy któreś ze przodków, przekazane do ramki: {{m|Sprawdź|Parametry}} - dodane przez tę funkcję, ** {{Code|zmienna z parametrami rodzica}} {{Patrz|zmienna z parametrami rodzica}} - parametr mówiący, czy ma tworzyć zmienne z parametrami rodzica {{LinkPatrz|parametry rodzica}}, a jeżeli nie jest on, z zadnych z jego potomków podany, to zmienna {{LinkPatrz|parametry rodzica}} jest przekazywana na kolejnego przodka, ** {{Code|zmienna z argumentami ramki}} {{Patrz|zmienna z argumentami ramki}} - zmienna mówiąca, czy mają być tworzone parametry ramki, które nie są sprawdzane 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}} {{Patrz|zmienna z nazwą szablonu rodzica}} - parametr, czy ma tworzyć zmienną: {{LinkPatrz|nazwa szablonu rodzica}}, ** {{Code|parametry funkcji modułu pudełek}} {{Patrz|parametry funkcji modułu pudełek}} - czy do funkcji mają wchodzić parametry modułu pudełek, które są ponumerowane dodatkowym numerkiem, ** {{Code|parametry podstawowe funkcji modułu pudełek}} {{Patrz|parametry podstawowe funkcji modułu pudełek}} - czy do funkcji mają wchodzić podstawowe parametry funkcji modułu pudełek, te które nie mają dodatkowego numerka, ** {{Code|usuń z parametrów ramki}} {{Patrz|usuń z parametrów ramki}} - parametry ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, przedstawiający zmienne oddzielone średnikami, które nie mają być uwzględnione przy uruchamianiu danego obiektu. * {{Code|Funkcja}} {{Patrz|Funkcja}} - nazwa funkcji w module, który ma wywołać w ramce ta funkcja, w przypadku, gdy parametr {{LinkPatrz|co_ma_wywolac}} ma wartość {{Tt|1}}, czyli wywołujemy funkcję {{LinkŚródtytuł|p["Moduł"]}}. Funkcja uruchamia szablon, moduł, czy ramkę, w zależności od drugiego parametru funkcji, z parametrami rodzica ramki bez parametrów opisanych zmienną: {{LinkPatrz|bez argumentów szablonu}}, i bez parametrów wskazanych przez zmienną: {{Code|usuń z parametrów ramki}}. Za pomocą tej funkcji możemy wielopoziomowo wywoływać funkcje przekazując parametry od najwyższego poziomu do najniższego. Ta funkcja służy przede wszystkim 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 do uruchamiania szablonów, a uruchamianie funkcji modułu, w tym funkcji {{m|Cytuj|custom}} w szablonie {{s|PrzypisStrona}}. Przykładem wywołania szablonu, która jest w szablonie: {{s|Wzór}}, w którym jest wywoływany inny szablon, tym razem silnik, tzn. {{s|Wzór/silnik}}: <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> === {{Śródtytuł|BudowaSzereguZDanych}}{{Code|BudowaSzereguZDanych}} === Funkcja do uruchamiania się 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> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tab_lancuch}} {{Patrz|tab_lancuch}} - pewna tablica transportu funkcji. * Zmienne do mikroszablonów: ** {{Code|minimum}} {{Patrz|minimum}} - liczba mówiąca o minimum, ** {{Code|maksimum}} {{Patrz|maksimum}} - liczba mówiąca o maksimum. Parametry ramki funkcji tablicy transportu modułu: * {{Code|akapit}} {{Patrz|akapit}} - jeśli niepusta, to ona definiuje akapit ze znaków {{Code|\n\n}}, przeciwnym wypadku elementy łańcucha nie są łączone w akapity, * {{Code|przecinek}} {{Patrz|przecinek}} - jeśli niepuste, to mówi, że pomiędzy elementami powiniem być przecinek: {{Code|", "}}, został on specjalnie objęty w cudzysłowy, aby zilustrować, że po przecinku znajduje się spacja, * {{Code|nowa linia}} {{Patrz|nowa linia}} - w przeciwieństwo do zmiennej {{LinkPatrz|akapit}}, używany zamiast niej, pisze jedną nową linię, a nie dwie, jako: {{Code|\n}}, * {{Code|wyliczanka}} {{Patrz|wyliczanka}} - wylicza elementy z przecinkami, stawiając przed ostatnim elementem zamiast jego wyraz wyliczania {{Code|i}}, * {{Code|początek}} {{Patrz|początek}} - mówi, że na początku musi znajdować się przecinek, * {{Code|myślnik}} {{Patrz|myślnik}} - mówi, że jeśli nie ma początku przecinka, to stawiany jest myślnik, używany zamiast {{LinkPatrz|początek}}, * {{Code|warunkowe}} {{Patrz|warunkowe}} - instrukcje wikikodu, takie jak: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}, zostaną w kodzie rozwinięte, a później ciągłe właściwe elementy wikikodu otoczone dwoma dolnymi myślnikami zostaną rozwinięte do pewnej postaci, funkcja używa do tego {{LinkŚródtytuł|p.InstrukcjeWarunkowe}}, ** {{Code|parametr}} {{Patrz|parametr}} - używany w towarzystwie z {{LinkPatrz|warunkowe}}, mówiący że, derektywy znakowe ciągłe otoczone dwoma dolnymi myślnikami, zostaną zastąpione odpowiedmimi szablonami, w przeciwnym wypadku niepodania tej wartości lub jego pustej, wtedy te derektywy zostaną zastąpione w postaci rozwiniętej tych szablonów. ** Funkcja w tym warunku zwraca ciąg znaków rozwiniętego warunku. Funkcja posiada też mikroszablony, które są zdefiniowane w kodzie łańcuchów {{LinkPatrz|tab_lancuch}}: * {{Code|<nowiki>{{min}}</nowiki>}} - minimalna wartość szeregu zmiennych, określana przez {{LinkPatrz|minimum}}, * {{Code|<nowiki>{{max}}</nowiki>}} - a tutaj ich maksymalna, określana przez {{LinkPatrz|maksimum}}. Te dwie zmienne są podstawiane do uzyskanego ciągu. Funkcja zwraca te części rozwiniętego tekstu wikikodu, jeśli podano {{LinkPatrz|warunkowe}}, co do instrukcji warunkowych i te bez wewnętrznych klamerek - specjalne kody, czyki te otoczone z dwóch stron dolnumi myślnikami, a pozostałe część jest za to nierozwinięta. == {{Śródtytuł|p.InstrukcjeWarunkowe}}{{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}} {{Patrz|ciag}} - podany ciąg do rozwinięcia z instrukcji warunkowych wewnątrz nie posiadający klamerek, * {{Code|derektywy_specjalne}} {{Patrz|derektywy_specjalne}} - używa do zastępowania specjalnych derektyw, podane po prawej stronie w ramce pływającej, * {{Code|derektywy_parametrowe}} {{Patrz|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: {{LinkŚródtytuł|BudowaSzereguZDanych}}, poprzez: {{LinkŚródtytuł|p.Powtarzaj}}. 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 == === {{Śródtytuł|p.RozpakujArgumenty}}{{Code|p.RozpakujArgumenty}} === Funkcje uruchamia się 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. === {{Śródtytuł|p.PakujParametry}}{{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> Parametry funkcji: * {{Code|args}} {{Patrz|args}} - tablica {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Ten szablon nazywa parametry, jakby nienazwane w tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera) z tablicy {{lpg|Lua}} (tutaj od jedynki), do tablicy nazwanej, jak to robi się w {{Lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonEncode}}, z drugim parametrem: {{Code|mw.text.JSON_PRESERVE_KEYS}} {{Patrz|mw.text.JSON_PRESERVE_KEYS}}. === {{Śródtytuł|p.RozpakujParametry}}{{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 w niej zwracany. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.RozpakujParametry = function (zmienna_z_parametrami) return mw.text.jsonDecode(zmienna_z_parametrami,mw.text.JSON_PRESERVE_KEYS); end; </syntaxhighlight> Parametry funkcji: * {{Code|zmienna_z_parametrami}} {{Patrz|zmienna_z_parametrami}} - tablica {{Code|JSON}}. Ten szablon nazywa parametry nienazwane w tablicy {{lpg|Lua}} (tutaj od jedynki) z tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera), do tablicy nienazwanej z nazwanej, jak to robi się w {{Lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonDecode}}, z użzyciem drugiego parametru: {{LinkPatrz|mw.text.JSON_PRESERVE_KEYS}}. == {{Śródtytuł|p["Rozwiń"]}}{{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> Parameetry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon rozwija wikikod podany w zmiennej {{Code|1}}, w parametrach szablonu rodzica. * 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}}: <syntaxhighlight lang="lua"> p["Rozwiń"] = function(frame) return frame:getParent():preprocess(frame.args[1]); end; </syntaxhighlight> == {{Śródtytuł|p.Log}}{{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> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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}}: <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 == === {{Śródtytuł|p.Szablon}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p.Szablon = function(frame) return ParserBlokowy(frame,0); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Szablon|Nazwa=<nazwa szablonu>|...}} </syntaxhighlight> === {{Śródtytuł|p["Moduł"]}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p["Moduł"] = function(frame) return ParserBlokowy(frame,1); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Moduł|Nazwa=<nazwa modułu>|Funkcja=<nazwa funkcji>|...}} </syntaxhighlight> === {{Śródtytuł|p.Parser}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p.Parser = function(frame) return ParserBlokowy(frame,2); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Parser|Nazwa=<nazwa parsera>|...}} </syntaxhighlight> == Funkcje książkowe == === {{Śródtytuł|p.Q}}{{Code|p.Q}} === Funkcja uruchamia szablon o podanej nazwie w pierwszym parametrze z przedrostkiem {{Code|Książka:}} przed nazwą szablonu. Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.Q =function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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ą (parametry nazwane, które są wliczane 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}}}} === {{Śródtytuł|p.N}}{{Code|p.N}} === Funkcja uruchamiana we wnętrzu szablonu {{s|N}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on. Funkcja przed nazwą szablonu, czy modułu, zostawia w wpis w postaci przedrostka {{Code|Książka:}}. Czy zostanie dodana przed tym nazwa przestrzeni nazw, to zależy od niepodania niepustej zmiennej {{Parametr|n}}, a zmienna {{Parametr|p|1}} - to przed nim jest dodawana przestrzeń nazw szablonu {{Np|Template|link=tak}}, {{Parametr|p|2}} - modułu {{Np|Module|link=tak}} i {{Parametr|p|3}} - kategorii. Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.N=function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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}}}} === {{Śródtytuł|p.A}}{{Code|p.A}} === Funkcja uruchamiana we wnętrzu szablonu {{s|A}}, która przyjmuje jego parametry, i tak samo działa, jak on. Funkcja usuwa przedrostek {{Code|Książka:}} w nazwie szablonu, czy modułu. Gdy jest podany parametr: {{Parametr|p|tak}}, to dla przestrzeni niebędących: {{Np|Template|link=tak}}, {{Np|Module|link=tak}} i {{Np|Category|link=tak}}, jest zwracany wtedy przez nią parametr pierwszy fukcji, dla tych wartości właśnie wyliczonych przestrzeni usuwany jest przedristek {{Code|Książka:}}. Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.A=function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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 == === {{Śródtytuł|p.Powtarzaj}}{{Code|p.Powtarzaj}} === Funkcja służy do powtarzalnego generowania wikikodu ze składników jego kroku przy pomocy określonych zmiennych rodzica. * Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.Powtarzaj = function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Funkcja może przyjmować tylko parametry nienazwane albo tylko nazwane, albo nienazwane i nazwane (gdy jest ustawiony parametr {{Code|różne}} {{Patrz|różne}}). 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}} {{LinkPatrz|różne}}, która wtedy ma wskazywać na wartość niepustą. ; Najważniejsze parametry, które są to opcjonalne, to są{{dk}} * {{Code|start}} {{Patrz|start}} - liczba, która wskazuje początek liczenia - domyślna wartość to {{Code|1}}, * {{Code|koniec}} {{Patrz|koniec}} - liczba, która wskazuje koniec liczenia. ; Numer końca liczenia parametrów nienazwanych lub nazwanych, czy nazwanychi nienazwanych{{dk}} * Elementy w {{Code|parametry}} {{Patrz|parametry}} mogą modyfikować odpowiednio parametry: {{Code|start}} {{LinkPatrz|start}} i {{Code|koniec}} {{LinkPatrz|koniec}}. * Ze zmiennej {{LinkPatrz|parametry}} jest liczona odpowiednia zmienna {{LinkPatrz|tabela}} dopuzczalnych zmiennych do liczenia. * Funkcja {{Code|Wylicz_skoncz_na_koncu}},którego algorytm podomy w tej poyzcji, tzn. koniec liczenia parametrów nienazwanych musi być policzony, jeżeli nie ma parametrów nazwanych w tabeli {{Code|tabela}} {{Patrz|tabela}}. A przeciwnie, jeżeli nie jest ustawiony parametr {{Code|różne}} {{LinkPatrz|różne}} nie na wartość niepustą, wtedy jest liczony parametr maksimum parametrów nazwanych, przeciwnie wtedy liczy się parametr maksimum numeracyjne parametrów numerowanych, czyli zmienną: {{Code|maksimum numeracyjne}} {{Patrz|maksimum numeracyjne}}, jeśli on ma wartość niepustą, wtedy liczy się maksimum parametrów nienazwanych, a jeżeli ona ma przeciwną wartość, to się liczy maksimum parametrów nazwanych, jak nienazwanych. Na podstawie tego mamy policzony odpowiednio taki koniec liczenia modyfikacji zwracany i policzony przez tą funkcję. ; Parametr {{Code|dodatkowe}}{{dk}} * To maksimum parametrów nazwanych, dla jakieś podstawy parametrów, są pomijane parametry z: {{Code|dodatkowe}}, która jest zestawem podstaw parametrów oddzielonych średnikami, jest właśnie podany ten parametr w nim. Przykładem jego jest: * {{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. ; Format parametru {{Parametr|parametry}}{{dk}} * 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 równa liczbie {{Code|5}}, oddzielonych średnikami. ; Opis parametru {{Parametr|parametry}}{{dk}} 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 w wartościach: {{Code|zmienna 1>}}, {{Code|<zmienna 2>}} i {{Code|<zmienna 3>}}, w których są pewne nazwy bazowe parametrów bez numerka na jej końcu, w zmiennej {{Code|parametry}} można nie podawać dalszych elementów 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ć nawet tego znaku,gdy nic nie ma po równa się) dla danego problemu funkcji. ; Wikikod pojedynczego kroku liczenia całości wygenerowanego wikikodu dla wszystkich zmiennych{{dk}} * 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)}}. ; Parametr {{Parametr|start}}, wartość początkowa{{dk}} * Gdy parametr {{Code|tonumber(frame.args["start"]) or 1}}, jest równy zero, funkcja zwraca błąd: {{Code|(początek jest ustawiony na zero)}}. ; Brak parametrów szablonu{{dk}} * 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. ; Parametr {{Parametr|nic}}{{dk}} * Gdy {{Code|nic}} przyjmuje wartość, i gdy pomijamy parametr, lub on przyjmuje wartość pustą, wtedy a funkcja nie może wygenerować żadnego kroku iteracji, to wtedy jest zwracana wartość parametru {{Code|nic}} lub ciąg pusty. ; Inne parametry{{dk}} * Parametr {{Code|po kolei}} {{Patrz|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|zaznacz}} {{Patrz|zaznacz}} - liczby oddzielone średnikami, które przy parametrach nazwanych o pewnych numerach i numerkach nie mają być uwzględnione przy niepustym parametrze {{Code|po kolei}} {{LinkPatrz|po kolei}}, a przy jego przeciwnej wartości za to mają być użyte. * 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}} {{Patrz|_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 wikikodami, wtedy ta funkcja używa do tego liczenia{{dk}} * Jest to funkcja {{LinkŚródtytuł|BudowaSzereguZDanych}}. * Wywołanie funkcji jest takie: {{Pre|lancuch_znakow {{=}} BudowaSzereguZDanych(frame,tab_lancuch,minimum or 0,maksimum);}} ; Parametry funkcji {{LinkŚródtytuł|BudowaSzereguZDanych}}. * One są wraz z jego parametrami podane w postaci jego parametrów ramki {{Code|frame}}, które jednocześnie są parametrami {{LinkŚródtytuł|p.Powtarzaj}}, używa się je 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ą {{LzLua|frame:preprocess}}, i jest zwracany jako wartość omawianej funkcji. ; Przykłady{{dk}} * Funkcja jest używana np. w silnikach szablonów, np.: {{s|Osobny artykuł/silnik}} szablonu {{s|Osobny artykuł}}, jak i do niego 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}}. === {{Śródtytuł|p.PowtarzajOdDo}}{{Code|p.PowtarzajOdDo}} === Funkcja służy do iteracji, od jakieś liczby do jakieś innej, podanego wikikodu dla danego kroku {{Code|1}}, iterując to, co krok określony zmienną: {{Code|krok}}. * 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ę{{dk}} {{nobold|{{Code|{{m|Ramka|Rozwiń}}}}}}, lub go rozwija na końcu, na podstawie kolejnych kroków iteracji{{dk}} * {{Code|start}} - początek iteracji dokonywany przez ta funkcję, * {{Code|koniec}} - koniec iteracji dokonywany przez ta funkcję, * {{Code|krok}} - krok iteracji, co który numer 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{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}} * {{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ą{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}} * {{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{{dk}} {{nobold|{{s|Chem/silnik}}}}, w tym nadrzędnym{{dk}} {{nobold|{{s|Chem}}}}, przykłady jego działania{{dk}} * {{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. === {{Śródtytuł|p["PrzetwarzajIterującCiąg"]}}{{Code|p["PrzetwarzajIterującCiąg"]}} === Funkcja do iteracji wikikodu po parametrach oddzielonych średniami w parametrze ramki {{Code|cią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{{dk}} * {{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{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}} * {{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ą{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}} * {{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>}} jest kolejny parametr, oddzielonych od pozastałych średniami, z: {{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}}: {{LzLua|frame:preprocess}}, jeśli: {{Code|nie rozwiń}}, nie przybiera wartości niepustej. === {{Śródtytuł|p["PowtarzajWedług"]}}{{Code|p["PowtarzajWedług"]}} === Funkcja wyszukująca elementy według wzoru począwszy od numeru, określonego przez {{Code|start}}, aż do zakończenia danych kolenych sprawdzania od tej liczby, czy taka strona istnieje, numerek jest określony przez pewien wikikod, określony przez {{Code|<nowiki>{{_}}</nowiki>}}, którymusi być podany we wzorze {{Code|wzor}}. Ona w ten sposób dla istniejących stron ustawia pewne łańcuchy, które są łączone znakami {{Code|", "}}, a na końcu samym {{Code|" i "}}. 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 strony{{dk}} {{nobold|„{{Ns:Template}}{{dk}}Polecane książki/”}}, a oto przykład{{dk}}{{nobold|{{Parametr|wzór|{{Ns:Template}}{{dk}}Polecane książki/{{((}}_{{))}}}}}}{{dk}} * {{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}}}} == {{Śródtytuł|p["LiczbaPrawychUkośników"]}}{{Code|p["LiczbaPrawychUkośników"]}} == Funkcja liczy, ile jest prawych ukośników w adresie strony podany jako pierwszy parametr ramki. * 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. ; Parametry fubkcji{{dk}} * {{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}}}} == {{Śródtytuł|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}}{{Code|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}} == Funkcja liczy maksymalny numer kolejnej strony liczonej według wzoru {{Code|wzor}}, musi być we wzorze podany element {{Code|<nowiki>{{_}}</nowiki>}}, aby mógł to robić. * 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/”, czyli dla stron o ogólnym wzorze: {{Parametr|wzór|{{Ns:Template}}:Polecane książki/{{((}}_{{))}}}}. ; Parametry funkcji{{dk}} * {{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 == === {{Śródtytuł|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}}{{Code|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}} === Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy minimalny numer takich zmiennych. * 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*)}}. ; Parametry funkcji{{dk}} * {{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}}}} === {{Śródtytuł|p.IleJestTakichOdpowiednikowychZmiennych}}{{Code|p.IleJestTakichOdpowiednikowychZmiennych}} === Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy ile jest takich zmiennych. * 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. ; Parametry funkcji{{dk}} * {{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}}}} == {{Śródtytuł|p["Parametr w tablicy nazw"]}}{{Code|p["Parametr w tablicy nazw"]}} == Funkcja bada, czy jest taki parametr {{Code|pozycja}} w tablicy nazw określonej zmienną {{Code|parametry}}, której elementy są oddzielone średnikami. * 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. ; Parametry funkcji{{dk}} * {{Code|parametry}} - lista parametrów oddzielonych średnikiem, * {{Code|pozycja}} - szukana lista w tablicy parametrów, * {{Code|od dużej}} - czy parametr: {{Code|pozycja}}, i elementy listy: {{Code|parametry}}, 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}}, a to ostatnie jest to wartość języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, która po transformacji na wikikod jest zamieniana na ciąg pusty, więc ona nadaje się do instrukcji warunkowych. === 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> 4lochcgp8vswu6xf3sv5vsewi0it8th 553401 553400 2026-08-29T20:22:42Z Persino 2851 /* Funkcje parametrów i argumentów */ 553401 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. Funkcje, w tym module, uruchamia się tylko w ramce w szablonie, bo są tylko do tego przygotowane. One służą do powtarzania parametrów rodzica, czy przodka, iteracji pojedynczego kroku wikikodu, jakiś sprawdzeń, do liczenia odpowiedników i związanych z tym parametrami, itp.. == Funcje lokalne modułu == === {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} === Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, tylko w module {{Code|{{ld2|Ramka}}}}, szablonów, modułów i parserów w ramce. Uruchamiana jest przez funkcje: {{LinkŚródtytuł|p.Szablon}} - funkcja do uruchamiania szablonów, {{LinkŚródtytuł|p["Moduł"]}} - funkcja do uruchamiania modułów, i {{LinkŚródtytuł|p.Parser}} - funkcja do uruchamiania parserów. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ParserBlokowy(frame, co_ma_wywolac)...end; </syntaxhighlight> ; Parametry funkcji{{dk}} * {{Code|frame}} {{Patrz|frame}} - funkcja ramkki funkcji tablica transportu modułu, * {{Code|co_ma_wywolac}} {{Patrz|co_ma_wywolac}} - ten parametr przyjmuje wartość liczbową, która jeżeli {{Tt|0}} - to uruchamiany jest szablon, jeżeli {{Tt|1}} - moduł, jeżeli {{Code|2}} - to parser, jeżeli on ma inne wartości, tzn.: {{Tt|2}}, a {{Tt|3}} i dalej, to już dany szablon. ; Parametry ramki funkcji tablicy transportu modułu{{dk}} * Parametry podstawowe: ** {{Code|Nazwa}} {{Patrz|Nazwa}} - jest to pełna nazwa szablonu, modułu, czy parsera, ** {{Code|bez argumentów rodzica}} {{Patrz|bez argumentów rodzica}} - tablica parametrów oddzielonych średnikami, których obiekt uruchamiany nie może przyjmować, nawet jeżeli one są, ** {{Code|nazwa szablonu rodzica}} {{Patrz|nazwa szablonu rodzica}} - jest to zmienna przechowująca nazwę szablonu rodzica ramki dziecka,a nawet któreś z jego przodków, ** {{Code|bez argumentów nienazwanych rodzica}} {{Patrz|bez argumentów nienazwanych rodzica}} - szablon w ramce nie przyjmuje parametrów nienazwanych, określonych liczbą, podanych w rodzicu ramki, ** {{Code|potomek}} {{Patrz|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}} {{Patrz|nie potomek}} - zmienna mówiąca, że to nie jest potomek szablonu, używana, gdy nie jest określona zmienna ramki {{LinkPatrz|zmienna z parametrami rodzica}}, wtedy taka ramka jest traktowana jak normalna ramka, której jedynie trzeba przekazać parametry rodzica, nie przodka, wtedy do niej nie są przekazywane parametry: {{LinkPatrz|parametry rodzica}} (ta zmienna jest wtedy ustawiana, gdy nie jest niepusty parametr {{LinkPatrz|bez dodatkowych sprawdzeń}}), {{LinkPatrz|bez argumentów szablonu}}, i {{LinkPatrz|nazwa szablonu rodzica}} (jeśli ta wartość rodzica nie istnieje, to nadawana jest jej aktualna nazwa szablonu rodzica, a nie przodka, normalnie jest to przodka, a w szczególności rodzica) i {{LinkPatrz|potomek}} (ustawiany na stałą wartość niepustą), ** {{Code|bez argumentów szablonu}} {{Patrz|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ń}} {{Patrz|bez dodatkowych sprawdzeń}} - nie jest uruchamiana walidacja parametrów szablonu rodzica, ** {{Code|parametry rodzica}} {{Patrz|parametry rodzica}} - zmienna przedstawiająca parametry rodzica, czy któreś ze przodków, przekazane do ramki: {{m|Sprawdź|Parametry}} - dodane przez tę funkcję, ** {{Code|zmienna z parametrami rodzica}} {{Patrz|zmienna z parametrami rodzica}} - parametr mówiący, czy ma tworzyć zmienne z parametrami rodzica {{LinkPatrz|parametry rodzica}}, a jeżeli nie jest on, z zadnych z jego potomków podany, to zmienna {{LinkPatrz|parametry rodzica}} jest przekazywana na kolejnego przodka, ** {{Code|zmienna z argumentami ramki}} {{Patrz|zmienna z argumentami ramki}} - zmienna mówiąca, czy mają być tworzone parametry ramki, które nie są sprawdzane 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}} {{Patrz|zmienna z nazwą szablonu rodzica}} - parametr, czy ma tworzyć zmienną: {{LinkPatrz|nazwa szablonu rodzica}}, ** {{Code|parametry funkcji modułu pudełek}} {{Patrz|parametry funkcji modułu pudełek}} - czy do funkcji mają wchodzić parametry modułu pudełek, które są ponumerowane dodatkowym numerkiem, ** {{Code|parametry podstawowe funkcji modułu pudełek}} {{Patrz|parametry podstawowe funkcji modułu pudełek}} - czy do funkcji mają wchodzić podstawowe parametry funkcji modułu pudełek, te które nie mają dodatkowego numerka, ** {{Code|usuń z parametrów ramki}} {{Patrz|usuń z parametrów ramki}} - parametry ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, przedstawiający zmienne oddzielone średnikami, które nie mają być uwzględnione przy uruchamianiu danego obiektu. * {{Code|Funkcja}} {{Patrz|Funkcja}} - nazwa funkcji w module, który ma wywołać w ramce ta funkcja, w przypadku, gdy parametr {{LinkPatrz|co_ma_wywolac}} ma wartość {{Tt|1}}, czyli wywołujemy funkcję {{LinkŚródtytuł|p["Moduł"]}}. Funkcja uruchamia szablon, moduł, czy ramkę, w zależności od drugiego parametru funkcji, z parametrami rodzica ramki bez parametrów opisanych zmienną: {{LinkPatrz|bez argumentów szablonu}}, i bez parametrów wskazanych przez zmienną: {{Code|usuń z parametrów ramki}}. Za pomocą tej funkcji możemy wielopoziomowo wywoływać funkcje przekazując parametry od najwyższego poziomu do najniższego. Ta funkcja służy przede wszystkim 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 do uruchamiania szablonów, a uruchamianie funkcji modułu, w tym funkcji {{m|Cytuj|custom}} w szablonie {{s|PrzypisStrona}}. Przykładem wywołania szablonu, która jest w szablonie: {{s|Wzór}}, w którym jest wywoływany inny szablon, tym razem silnik, tzn. {{s|Wzór/silnik}}: <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> === {{Śródtytuł|BudowaSzereguZDanych}}{{Code|BudowaSzereguZDanych}} === Funkcja do uruchamiania się 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> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tab_lancuch}} {{Patrz|tab_lancuch}} - pewna tablica transportu funkcji. * Zmienne do mikroszablonów: ** {{Code|minimum}} {{Patrz|minimum}} - liczba mówiąca o minimum, ** {{Code|maksimum}} {{Patrz|maksimum}} - liczba mówiąca o maksimum. Parametry ramki funkcji tablicy transportu modułu: * {{Code|akapit}} {{Patrz|akapit}} - jeśli niepusta, to ona definiuje akapit ze znaków {{Code|\n\n}}, przeciwnym wypadku elementy łańcucha nie są łączone w akapity, * {{Code|przecinek}} {{Patrz|przecinek}} - jeśli niepuste, to mówi, że pomiędzy elementami powiniem być przecinek: {{Code|", "}}, został on specjalnie objęty w cudzysłowy, aby zilustrować, że po przecinku znajduje się spacja, * {{Code|nowa linia}} {{Patrz|nowa linia}} - w przeciwieństwo do zmiennej {{LinkPatrz|akapit}}, używany zamiast niej, pisze jedną nową linię, a nie dwie, jako: {{Code|\n}}, * {{Code|wyliczanka}} {{Patrz|wyliczanka}} - wylicza elementy z przecinkami, stawiając przed ostatnim elementem zamiast jego wyraz wyliczania {{Code|i}}, * {{Code|początek}} {{Patrz|początek}} - mówi, że na początku musi znajdować się przecinek, * {{Code|myślnik}} {{Patrz|myślnik}} - mówi, że jeśli nie ma początku przecinka, to stawiany jest myślnik, używany zamiast {{LinkPatrz|początek}}, * {{Code|warunkowe}} {{Patrz|warunkowe}} - instrukcje wikikodu, takie jak: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}, zostaną w kodzie rozwinięte, a później ciągłe właściwe elementy wikikodu otoczone dwoma dolnymi myślnikami zostaną rozwinięte do pewnej postaci, funkcja używa do tego {{LinkŚródtytuł|p.InstrukcjeWarunkowe}}, ** {{Code|parametr}} {{Patrz|parametr}} - używany w towarzystwie z {{LinkPatrz|warunkowe}}, mówiący że, derektywy znakowe ciągłe otoczone dwoma dolnymi myślnikami, zostaną zastąpione odpowiedmimi szablonami, w przeciwnym wypadku niepodania tej wartości lub jego pustej, wtedy te derektywy zostaną zastąpione w postaci rozwiniętej tych szablonów. ** Funkcja w tym warunku zwraca ciąg znaków rozwiniętego warunku. Funkcja posiada też mikroszablony, które są zdefiniowane w kodzie łańcuchów {{LinkPatrz|tab_lancuch}}: * {{Code|<nowiki>{{min}}</nowiki>}} - minimalna wartość szeregu zmiennych, określana przez {{LinkPatrz|minimum}}, * {{Code|<nowiki>{{max}}</nowiki>}} - a tutaj ich maksymalna, określana przez {{LinkPatrz|maksimum}}. Te dwie zmienne są podstawiane do uzyskanego ciągu. Funkcja zwraca te części rozwiniętego tekstu wikikodu, jeśli podano {{LinkPatrz|warunkowe}}, co do instrukcji warunkowych i te bez wewnętrznych klamerek - specjalne kody, czyki te otoczone z dwóch stron dolnumi myślnikami, a pozostałe część jest za to nierozwinięta. == {{Śródtytuł|p.InstrukcjeWarunkowe}}{{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}} {{Patrz|ciag}} - podany ciąg do rozwinięcia z instrukcji warunkowych wewnątrz nie posiadający klamerek, * {{Code|derektywy_specjalne}} {{Patrz|derektywy_specjalne}} - używa do zastępowania specjalnych derektyw, podane po prawej stronie w ramce pływającej, * {{Code|derektywy_parametrowe}} {{Patrz|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: {{LinkŚródtytuł|BudowaSzereguZDanych}}, poprzez: {{LinkŚródtytuł|p.Powtarzaj}}. 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 == === {{Śródtytuł|p.RozpakujArgumenty}}{{Code|p.RozpakujArgumenty}} === Ta funkcja jest do rozpakowywania zmiennych z podanego parametru, których zmienne są oddzieloe średnikami. * Funkcje uruchamia się 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. === {{Śródtytuł|p.PakujParametry}}{{Code|p.PakujParametry}} === Ta funkcja jest do pakowania tablicy, języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w tablicę {{lpg|JSON}}. * Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Funkcja pakuje parametry tablicy {{lpg|Lua}} do tablicy: {{lpg|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> Parametry funkcji: * {{Code|args}} {{Patrz|args}} - tablica {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Ten szablon nazywa parametry, jakby nienazwane w tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera) z tablicy {{lpg|Lua}} (tutaj od jedynki), do tablicy nazwanej, jak to robi się w {{Lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonEncode}}, z drugim parametrem: {{Code|mw.text.JSON_PRESERVE_KEYS}} {{Patrz|mw.text.JSON_PRESERVE_KEYS}}. === {{Śródtytuł|p.RozpakujParametry}}{{Code|p.RozpakujParametry}} === Ta funkcja jest do rozpakowywania tablicy {{lpg|JSON}} w tablicę języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}} * 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 w niej zwracany. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.RozpakujParametry = function (zmienna_z_parametrami) return mw.text.jsonDecode(zmienna_z_parametrami,mw.text.JSON_PRESERVE_KEYS); end; </syntaxhighlight> Parametry funkcji: * {{Code|zmienna_z_parametrami}} {{Patrz|zmienna_z_parametrami}} - tablica {{lpg|JSON}}. Ten szablon nazywa parametry nienazwane w tablicy {{lpg|Lua}} (tutaj od jedynki) z tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera), do tablicy nienazwanej z nazwanej, jak to robi się w {{Lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonDecode}}, z użyciem drugiego parametru: {{LinkPatrz|mw.text.JSON_PRESERVE_KEYS}}. == {{Śródtytuł|p["Rozwiń"]}}{{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> Parameetry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon rozwija wikikod podany w zmiennej {{Code|1}}, w parametrach szablonu rodzica. * 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}}: <syntaxhighlight lang="lua"> p["Rozwiń"] = function(frame) return frame:getParent():preprocess(frame.args[1]); end; </syntaxhighlight> == {{Śródtytuł|p.Log}}{{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> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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}}: <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 == === {{Śródtytuł|p.Szablon}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p.Szablon = function(frame) return ParserBlokowy(frame,0); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Szablon|Nazwa=<nazwa szablonu>|...}} </syntaxhighlight> === {{Śródtytuł|p["Moduł"]}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p["Moduł"] = function(frame) return ParserBlokowy(frame,1); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Moduł|Nazwa=<nazwa modułu>|Funkcja=<nazwa funkcji>|...}} </syntaxhighlight> === {{Śródtytuł|p.Parser}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p.Parser = function(frame) return ParserBlokowy(frame,2); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Parser|Nazwa=<nazwa parsera>|...}} </syntaxhighlight> == Funkcje książkowe == === {{Śródtytuł|p.Q}}{{Code|p.Q}} === Funkcja uruchamia szablon o podanej nazwie w pierwszym parametrze z przedrostkiem {{Code|Książka:}} przed nazwą szablonu. Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.Q =function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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ą (parametry nazwane, które są wliczane 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}}}} === {{Śródtytuł|p.N}}{{Code|p.N}} === Funkcja uruchamiana we wnętrzu szablonu {{s|N}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on. Funkcja przed nazwą szablonu, czy modułu, zostawia w wpis w postaci przedrostka {{Code|Książka:}}. Czy zostanie dodana przed tym nazwa przestrzeni nazw, to zależy od niepodania niepustej zmiennej {{Parametr|n}}, a zmienna {{Parametr|p|1}} - to przed nim jest dodawana przestrzeń nazw szablonu {{Np|Template|link=tak}}, {{Parametr|p|2}} - modułu {{Np|Module|link=tak}} i {{Parametr|p|3}} - kategorii. Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.N=function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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}}}} === {{Śródtytuł|p.A}}{{Code|p.A}} === Funkcja uruchamiana we wnętrzu szablonu {{s|A}}, która przyjmuje jego parametry, i tak samo działa, jak on. Funkcja usuwa przedrostek {{Code|Książka:}} w nazwie szablonu, czy modułu. Gdy jest podany parametr: {{Parametr|p|tak}}, to dla przestrzeni niebędących: {{Np|Template|link=tak}}, {{Np|Module|link=tak}} i {{Np|Category|link=tak}}, jest zwracany wtedy przez nią parametr pierwszy fukcji, dla tych wartości właśnie wyliczonych przestrzeni usuwany jest przedristek {{Code|Książka:}}. Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.A=function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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 == === {{Śródtytuł|p.Powtarzaj}}{{Code|p.Powtarzaj}} === Funkcja służy do powtarzalnego generowania wikikodu ze składników jego kroku przy pomocy określonych zmiennych rodzica. * Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.Powtarzaj = function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Funkcja może przyjmować tylko parametry nienazwane albo tylko nazwane, albo nienazwane i nazwane (gdy jest ustawiony parametr {{Code|różne}} {{Patrz|różne}}). 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}} {{LinkPatrz|różne}}, która wtedy ma wskazywać na wartość niepustą. ; Najważniejsze parametry, które są to opcjonalne, to są{{dk}} * {{Code|start}} {{Patrz|start}} - liczba, która wskazuje początek liczenia - domyślna wartość to {{Code|1}}, * {{Code|koniec}} {{Patrz|koniec}} - liczba, która wskazuje koniec liczenia. ; Numer końca liczenia parametrów nienazwanych lub nazwanych, czy nazwanychi nienazwanych{{dk}} * Elementy w {{Code|parametry}} {{Patrz|parametry}} mogą modyfikować odpowiednio parametry: {{Code|start}} {{LinkPatrz|start}} i {{Code|koniec}} {{LinkPatrz|koniec}}. * Ze zmiennej {{LinkPatrz|parametry}} jest liczona odpowiednia zmienna {{LinkPatrz|tabela}} dopuzczalnych zmiennych do liczenia. * Funkcja {{Code|Wylicz_skoncz_na_koncu}},którego algorytm podomy w tej poyzcji, tzn. koniec liczenia parametrów nienazwanych musi być policzony, jeżeli nie ma parametrów nazwanych w tabeli {{Code|tabela}} {{Patrz|tabela}}. A przeciwnie, jeżeli nie jest ustawiony parametr {{Code|różne}} {{LinkPatrz|różne}} nie na wartość niepustą, wtedy jest liczony parametr maksimum parametrów nazwanych, przeciwnie wtedy liczy się parametr maksimum numeracyjne parametrów numerowanych, czyli zmienną: {{Code|maksimum numeracyjne}} {{Patrz|maksimum numeracyjne}}, jeśli on ma wartość niepustą, wtedy liczy się maksimum parametrów nienazwanych, a jeżeli ona ma przeciwną wartość, to się liczy maksimum parametrów nazwanych, jak nienazwanych. Na podstawie tego mamy policzony odpowiednio taki koniec liczenia modyfikacji zwracany i policzony przez tą funkcję. ; Parametr {{Code|dodatkowe}}{{dk}} * To maksimum parametrów nazwanych, dla jakieś podstawy parametrów, są pomijane parametry z: {{Code|dodatkowe}}, która jest zestawem podstaw parametrów oddzielonych średnikami, jest właśnie podany ten parametr w nim. Przykładem jego jest: * {{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. ; Format parametru {{Parametr|parametry}}{{dk}} * 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 równa liczbie {{Code|5}}, oddzielonych średnikami. ; Opis parametru {{Parametr|parametry}}{{dk}} 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 w wartościach: {{Code|zmienna 1>}}, {{Code|<zmienna 2>}} i {{Code|<zmienna 3>}}, w których są pewne nazwy bazowe parametrów bez numerka na jej końcu, w zmiennej {{Code|parametry}} można nie podawać dalszych elementów 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ć nawet tego znaku,gdy nic nie ma po równa się) dla danego problemu funkcji. ; Wikikod pojedynczego kroku liczenia całości wygenerowanego wikikodu dla wszystkich zmiennych{{dk}} * 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)}}. ; Parametr {{Parametr|start}}, wartość początkowa{{dk}} * Gdy parametr {{Code|tonumber(frame.args["start"]) or 1}}, jest równy zero, funkcja zwraca błąd: {{Code|(początek jest ustawiony na zero)}}. ; Brak parametrów szablonu{{dk}} * 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. ; Parametr {{Parametr|nic}}{{dk}} * Gdy {{Code|nic}} przyjmuje wartość, i gdy pomijamy parametr, lub on przyjmuje wartość pustą, wtedy a funkcja nie może wygenerować żadnego kroku iteracji, to wtedy jest zwracana wartość parametru {{Code|nic}} lub ciąg pusty. ; Inne parametry{{dk}} * Parametr {{Code|po kolei}} {{Patrz|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|zaznacz}} {{Patrz|zaznacz}} - liczby oddzielone średnikami, które przy parametrach nazwanych o pewnych numerach i numerkach nie mają być uwzględnione przy niepustym parametrze {{Code|po kolei}} {{LinkPatrz|po kolei}}, a przy jego przeciwnej wartości za to mają być użyte. * 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}} {{Patrz|_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 wikikodami, wtedy ta funkcja używa do tego liczenia{{dk}} * Jest to funkcja {{LinkŚródtytuł|BudowaSzereguZDanych}}. * Wywołanie funkcji jest takie: {{Pre|lancuch_znakow {{=}} BudowaSzereguZDanych(frame,tab_lancuch,minimum or 0,maksimum);}} ; Parametry funkcji {{LinkŚródtytuł|BudowaSzereguZDanych}}. * One są wraz z jego parametrami podane w postaci jego parametrów ramki {{Code|frame}}, które jednocześnie są parametrami {{LinkŚródtytuł|p.Powtarzaj}}, używa się je 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ą {{LzLua|frame:preprocess}}, i jest zwracany jako wartość omawianej funkcji. ; Przykłady{{dk}} * Funkcja jest używana np. w silnikach szablonów, np.: {{s|Osobny artykuł/silnik}} szablonu {{s|Osobny artykuł}}, jak i do niego 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}}. === {{Śródtytuł|p.PowtarzajOdDo}}{{Code|p.PowtarzajOdDo}} === Funkcja służy do iteracji, od jakieś liczby do jakieś innej, podanego wikikodu dla danego kroku {{Code|1}}, iterując to, co krok określony zmienną: {{Code|krok}}. * 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ę{{dk}} {{nobold|{{Code|{{m|Ramka|Rozwiń}}}}}}, lub go rozwija na końcu, na podstawie kolejnych kroków iteracji{{dk}} * {{Code|start}} - początek iteracji dokonywany przez ta funkcję, * {{Code|koniec}} - koniec iteracji dokonywany przez ta funkcję, * {{Code|krok}} - krok iteracji, co który numer 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{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}} * {{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ą{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}} * {{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{{dk}} {{nobold|{{s|Chem/silnik}}}}, w tym nadrzędnym{{dk}} {{nobold|{{s|Chem}}}}, przykłady jego działania{{dk}} * {{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. === {{Śródtytuł|p["PrzetwarzajIterującCiąg"]}}{{Code|p["PrzetwarzajIterującCiąg"]}} === Funkcja do iteracji wikikodu po parametrach oddzielonych średniami w parametrze ramki {{Code|cią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{{dk}} * {{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{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}} * {{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ą{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}} * {{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>}} jest kolejny parametr, oddzielonych od pozastałych średniami, z: {{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}}: {{LzLua|frame:preprocess}}, jeśli: {{Code|nie rozwiń}}, nie przybiera wartości niepustej. === {{Śródtytuł|p["PowtarzajWedług"]}}{{Code|p["PowtarzajWedług"]}} === Funkcja wyszukująca elementy według wzoru począwszy od numeru, określonego przez {{Code|start}}, aż do zakończenia danych kolenych sprawdzania od tej liczby, czy taka strona istnieje, numerek jest określony przez pewien wikikod, określony przez {{Code|<nowiki>{{_}}</nowiki>}}, którymusi być podany we wzorze {{Code|wzor}}. Ona w ten sposób dla istniejących stron ustawia pewne łańcuchy, które są łączone znakami {{Code|", "}}, a na końcu samym {{Code|" i "}}. 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 strony{{dk}} {{nobold|„{{Ns:Template}}{{dk}}Polecane książki/”}}, a oto przykład{{dk}}{{nobold|{{Parametr|wzór|{{Ns:Template}}{{dk}}Polecane książki/{{((}}_{{))}}}}}}{{dk}} * {{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}}}} == {{Śródtytuł|p["LiczbaPrawychUkośników"]}}{{Code|p["LiczbaPrawychUkośników"]}} == Funkcja liczy, ile jest prawych ukośników w adresie strony podany jako pierwszy parametr ramki. * 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. ; Parametry fubkcji{{dk}} * {{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}}}} == {{Śródtytuł|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}}{{Code|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}} == Funkcja liczy maksymalny numer kolejnej strony liczonej według wzoru {{Code|wzor}}, musi być we wzorze podany element {{Code|<nowiki>{{_}}</nowiki>}}, aby mógł to robić. * 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/”, czyli dla stron o ogólnym wzorze: {{Parametr|wzór|{{Ns:Template}}:Polecane książki/{{((}}_{{))}}}}. ; Parametry funkcji{{dk}} * {{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 == === {{Śródtytuł|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}}{{Code|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}} === Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy minimalny numer takich zmiennych. * 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*)}}. ; Parametry funkcji{{dk}} * {{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}}}} === {{Śródtytuł|p.IleJestTakichOdpowiednikowychZmiennych}}{{Code|p.IleJestTakichOdpowiednikowychZmiennych}} === Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy ile jest takich zmiennych. * 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. ; Parametry funkcji{{dk}} * {{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}}}} == {{Śródtytuł|p["Parametr w tablicy nazw"]}}{{Code|p["Parametr w tablicy nazw"]}} == Funkcja bada, czy jest taki parametr {{Code|pozycja}} w tablicy nazw określonej zmienną {{Code|parametry}}, której elementy są oddzielone średnikami. * 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. ; Parametry funkcji{{dk}} * {{Code|parametry}} - lista parametrów oddzielonych średnikiem, * {{Code|pozycja}} - szukana lista w tablicy parametrów, * {{Code|od dużej}} - czy parametr: {{Code|pozycja}}, i elementy listy: {{Code|parametry}}, 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}}, a to ostatnie jest to wartość języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, która po transformacji na wikikod jest zamieniana na ciąg pusty, więc ona nadaje się do instrukcji warunkowych. === 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> owxnowymazaqx04uip42ctfk9skar5f 553402 553401 2026-08-29T20:24:30Z Persino 2851 /* Funkcje parametrów i argumentów */ 553402 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. Funkcje, w tym module, uruchamia się tylko w ramce w szablonie, bo są tylko do tego przygotowane. One służą do powtarzania parametrów rodzica, czy przodka, iteracji pojedynczego kroku wikikodu, jakiś sprawdzeń, do liczenia odpowiedników i związanych z tym parametrami, itp.. == Funcje lokalne modułu == === {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} === Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, tylko w module {{Code|{{ld2|Ramka}}}}, szablonów, modułów i parserów w ramce. Uruchamiana jest przez funkcje: {{LinkŚródtytuł|p.Szablon}} - funkcja do uruchamiania szablonów, {{LinkŚródtytuł|p["Moduł"]}} - funkcja do uruchamiania modułów, i {{LinkŚródtytuł|p.Parser}} - funkcja do uruchamiania parserów. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ParserBlokowy(frame, co_ma_wywolac)...end; </syntaxhighlight> ; Parametry funkcji{{dk}} * {{Code|frame}} {{Patrz|frame}} - funkcja ramkki funkcji tablica transportu modułu, * {{Code|co_ma_wywolac}} {{Patrz|co_ma_wywolac}} - ten parametr przyjmuje wartość liczbową, która jeżeli {{Tt|0}} - to uruchamiany jest szablon, jeżeli {{Tt|1}} - moduł, jeżeli {{Code|2}} - to parser, jeżeli on ma inne wartości, tzn.: {{Tt|2}}, a {{Tt|3}} i dalej, to już dany szablon. ; Parametry ramki funkcji tablicy transportu modułu{{dk}} * Parametry podstawowe: ** {{Code|Nazwa}} {{Patrz|Nazwa}} - jest to pełna nazwa szablonu, modułu, czy parsera, ** {{Code|bez argumentów rodzica}} {{Patrz|bez argumentów rodzica}} - tablica parametrów oddzielonych średnikami, których obiekt uruchamiany nie może przyjmować, nawet jeżeli one są, ** {{Code|nazwa szablonu rodzica}} {{Patrz|nazwa szablonu rodzica}} - jest to zmienna przechowująca nazwę szablonu rodzica ramki dziecka,a nawet któreś z jego przodków, ** {{Code|bez argumentów nienazwanych rodzica}} {{Patrz|bez argumentów nienazwanych rodzica}} - szablon w ramce nie przyjmuje parametrów nienazwanych, określonych liczbą, podanych w rodzicu ramki, ** {{Code|potomek}} {{Patrz|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}} {{Patrz|nie potomek}} - zmienna mówiąca, że to nie jest potomek szablonu, używana, gdy nie jest określona zmienna ramki {{LinkPatrz|zmienna z parametrami rodzica}}, wtedy taka ramka jest traktowana jak normalna ramka, której jedynie trzeba przekazać parametry rodzica, nie przodka, wtedy do niej nie są przekazywane parametry: {{LinkPatrz|parametry rodzica}} (ta zmienna jest wtedy ustawiana, gdy nie jest niepusty parametr {{LinkPatrz|bez dodatkowych sprawdzeń}}), {{LinkPatrz|bez argumentów szablonu}}, i {{LinkPatrz|nazwa szablonu rodzica}} (jeśli ta wartość rodzica nie istnieje, to nadawana jest jej aktualna nazwa szablonu rodzica, a nie przodka, normalnie jest to przodka, a w szczególności rodzica) i {{LinkPatrz|potomek}} (ustawiany na stałą wartość niepustą), ** {{Code|bez argumentów szablonu}} {{Patrz|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ń}} {{Patrz|bez dodatkowych sprawdzeń}} - nie jest uruchamiana walidacja parametrów szablonu rodzica, ** {{Code|parametry rodzica}} {{Patrz|parametry rodzica}} - zmienna przedstawiająca parametry rodzica, czy któreś ze przodków, przekazane do ramki: {{m|Sprawdź|Parametry}} - dodane przez tę funkcję, ** {{Code|zmienna z parametrami rodzica}} {{Patrz|zmienna z parametrami rodzica}} - parametr mówiący, czy ma tworzyć zmienne z parametrami rodzica {{LinkPatrz|parametry rodzica}}, a jeżeli nie jest on, z zadnych z jego potomków podany, to zmienna {{LinkPatrz|parametry rodzica}} jest przekazywana na kolejnego przodka, ** {{Code|zmienna z argumentami ramki}} {{Patrz|zmienna z argumentami ramki}} - zmienna mówiąca, czy mają być tworzone parametry ramki, które nie są sprawdzane 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}} {{Patrz|zmienna z nazwą szablonu rodzica}} - parametr, czy ma tworzyć zmienną: {{LinkPatrz|nazwa szablonu rodzica}}, ** {{Code|parametry funkcji modułu pudełek}} {{Patrz|parametry funkcji modułu pudełek}} - czy do funkcji mają wchodzić parametry modułu pudełek, które są ponumerowane dodatkowym numerkiem, ** {{Code|parametry podstawowe funkcji modułu pudełek}} {{Patrz|parametry podstawowe funkcji modułu pudełek}} - czy do funkcji mają wchodzić podstawowe parametry funkcji modułu pudełek, te które nie mają dodatkowego numerka, ** {{Code|usuń z parametrów ramki}} {{Patrz|usuń z parametrów ramki}} - parametry ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, przedstawiający zmienne oddzielone średnikami, które nie mają być uwzględnione przy uruchamianiu danego obiektu. * {{Code|Funkcja}} {{Patrz|Funkcja}} - nazwa funkcji w module, który ma wywołać w ramce ta funkcja, w przypadku, gdy parametr {{LinkPatrz|co_ma_wywolac}} ma wartość {{Tt|1}}, czyli wywołujemy funkcję {{LinkŚródtytuł|p["Moduł"]}}. Funkcja uruchamia szablon, moduł, czy ramkę, w zależności od drugiego parametru funkcji, z parametrami rodzica ramki bez parametrów opisanych zmienną: {{LinkPatrz|bez argumentów szablonu}}, i bez parametrów wskazanych przez zmienną: {{Code|usuń z parametrów ramki}}. Za pomocą tej funkcji możemy wielopoziomowo wywoływać funkcje przekazując parametry od najwyższego poziomu do najniższego. Ta funkcja służy przede wszystkim 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 do uruchamiania szablonów, a uruchamianie funkcji modułu, w tym funkcji {{m|Cytuj|custom}} w szablonie {{s|PrzypisStrona}}. Przykładem wywołania szablonu, która jest w szablonie: {{s|Wzór}}, w którym jest wywoływany inny szablon, tym razem silnik, tzn. {{s|Wzór/silnik}}: <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> === {{Śródtytuł|BudowaSzereguZDanych}}{{Code|BudowaSzereguZDanych}} === Funkcja do uruchamiania się 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> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tab_lancuch}} {{Patrz|tab_lancuch}} - pewna tablica transportu funkcji. * Zmienne do mikroszablonów: ** {{Code|minimum}} {{Patrz|minimum}} - liczba mówiąca o minimum, ** {{Code|maksimum}} {{Patrz|maksimum}} - liczba mówiąca o maksimum. Parametry ramki funkcji tablicy transportu modułu: * {{Code|akapit}} {{Patrz|akapit}} - jeśli niepusta, to ona definiuje akapit ze znaków {{Code|\n\n}}, przeciwnym wypadku elementy łańcucha nie są łączone w akapity, * {{Code|przecinek}} {{Patrz|przecinek}} - jeśli niepuste, to mówi, że pomiędzy elementami powiniem być przecinek: {{Code|", "}}, został on specjalnie objęty w cudzysłowy, aby zilustrować, że po przecinku znajduje się spacja, * {{Code|nowa linia}} {{Patrz|nowa linia}} - w przeciwieństwo do zmiennej {{LinkPatrz|akapit}}, używany zamiast niej, pisze jedną nową linię, a nie dwie, jako: {{Code|\n}}, * {{Code|wyliczanka}} {{Patrz|wyliczanka}} - wylicza elementy z przecinkami, stawiając przed ostatnim elementem zamiast jego wyraz wyliczania {{Code|i}}, * {{Code|początek}} {{Patrz|początek}} - mówi, że na początku musi znajdować się przecinek, * {{Code|myślnik}} {{Patrz|myślnik}} - mówi, że jeśli nie ma początku przecinka, to stawiany jest myślnik, używany zamiast {{LinkPatrz|początek}}, * {{Code|warunkowe}} {{Patrz|warunkowe}} - instrukcje wikikodu, takie jak: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}, zostaną w kodzie rozwinięte, a później ciągłe właściwe elementy wikikodu otoczone dwoma dolnymi myślnikami zostaną rozwinięte do pewnej postaci, funkcja używa do tego {{LinkŚródtytuł|p.InstrukcjeWarunkowe}}, ** {{Code|parametr}} {{Patrz|parametr}} - używany w towarzystwie z {{LinkPatrz|warunkowe}}, mówiący że, derektywy znakowe ciągłe otoczone dwoma dolnymi myślnikami, zostaną zastąpione odpowiedmimi szablonami, w przeciwnym wypadku niepodania tej wartości lub jego pustej, wtedy te derektywy zostaną zastąpione w postaci rozwiniętej tych szablonów. ** Funkcja w tym warunku zwraca ciąg znaków rozwiniętego warunku. Funkcja posiada też mikroszablony, które są zdefiniowane w kodzie łańcuchów {{LinkPatrz|tab_lancuch}}: * {{Code|<nowiki>{{min}}</nowiki>}} - minimalna wartość szeregu zmiennych, określana przez {{LinkPatrz|minimum}}, * {{Code|<nowiki>{{max}}</nowiki>}} - a tutaj ich maksymalna, określana przez {{LinkPatrz|maksimum}}. Te dwie zmienne są podstawiane do uzyskanego ciągu. Funkcja zwraca te części rozwiniętego tekstu wikikodu, jeśli podano {{LinkPatrz|warunkowe}}, co do instrukcji warunkowych i te bez wewnętrznych klamerek - specjalne kody, czyki te otoczone z dwóch stron dolnumi myślnikami, a pozostałe część jest za to nierozwinięta. == {{Śródtytuł|p.InstrukcjeWarunkowe}}{{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}} {{Patrz|ciag}} - podany ciąg do rozwinięcia z instrukcji warunkowych wewnątrz nie posiadający klamerek, * {{Code|derektywy_specjalne}} {{Patrz|derektywy_specjalne}} - używa do zastępowania specjalnych derektyw, podane po prawej stronie w ramce pływającej, * {{Code|derektywy_parametrowe}} {{Patrz|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: {{LinkŚródtytuł|BudowaSzereguZDanych}}, poprzez: {{LinkŚródtytuł|p.Powtarzaj}}. 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 == === {{Śródtytuł|p.RozpakujArgumenty}}{{Code|p.RozpakujArgumenty}} === Ta funkcja jest do rozpakowywania zmiennych z podanego parametru, których zmienne są oddzieloe średnikami. * Funkcja uruchamia się 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. === {{Śródtytuł|p.PakujParametry}}{{Code|p.PakujParametry}} === Ta funkcja jest do pakowania tablicy, języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w tablicę {{lpg|JSON}}. * Funkcja się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Funkcja pakuje parametry tablicy {{lpg|Lua}} do tablicy: {{lpg|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> Parametry funkcji: * {{Code|args}} {{Patrz|args}} - tablica {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Ten szablon nazywa parametry, jakby nienazwane w tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera) z tablicy {{lpg|Lua}} (tutaj od jedynki), do tablicy nazwanej, jak to robi się w {{Lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonEncode}}, z drugim parametrem: {{Code|mw.text.JSON_PRESERVE_KEYS}} {{Patrz|mw.text.JSON_PRESERVE_KEYS}}. === {{Śródtytuł|p.RozpakujParametry}}{{Code|p.RozpakujParametry}} === Ta funkcja jest do rozpakowywania tablicy {{lpg|JSON}} w tablicę języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}} * 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 w niej zwracany. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.RozpakujParametry = function (zmienna_z_parametrami) return mw.text.jsonDecode(zmienna_z_parametrami,mw.text.JSON_PRESERVE_KEYS); end; </syntaxhighlight> Parametry funkcji: * {{Code|zmienna_z_parametrami}} {{Patrz|zmienna_z_parametrami}} - tablica {{lpg|JSON}}. Ten szablon nazywa parametry nienazwane w tablicy {{lpg|Lua}} (tutaj od jedynki) z tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera), do tablicy nienazwanej z nazwanej, jak to robi się w {{Lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonDecode}}, z użyciem drugiego parametru: {{LinkPatrz|mw.text.JSON_PRESERVE_KEYS}}. == {{Śródtytuł|p["Rozwiń"]}}{{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> Parameetry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon rozwija wikikod podany w zmiennej {{Code|1}}, w parametrach szablonu rodzica. * 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}}: <syntaxhighlight lang="lua"> p["Rozwiń"] = function(frame) return frame:getParent():preprocess(frame.args[1]); end; </syntaxhighlight> == {{Śródtytuł|p.Log}}{{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> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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}}: <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 == === {{Śródtytuł|p.Szablon}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p.Szablon = function(frame) return ParserBlokowy(frame,0); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Szablon|Nazwa=<nazwa szablonu>|...}} </syntaxhighlight> === {{Śródtytuł|p["Moduł"]}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p["Moduł"] = function(frame) return ParserBlokowy(frame,1); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Moduł|Nazwa=<nazwa modułu>|Funkcja=<nazwa funkcji>|...}} </syntaxhighlight> === {{Śródtytuł|p.Parser}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p.Parser = function(frame) return ParserBlokowy(frame,2); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Parser|Nazwa=<nazwa parsera>|...}} </syntaxhighlight> == Funkcje książkowe == === {{Śródtytuł|p.Q}}{{Code|p.Q}} === Funkcja uruchamia szablon o podanej nazwie w pierwszym parametrze z przedrostkiem {{Code|Książka:}} przed nazwą szablonu. Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.Q =function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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ą (parametry nazwane, które są wliczane 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}}}} === {{Śródtytuł|p.N}}{{Code|p.N}} === Funkcja uruchamiana we wnętrzu szablonu {{s|N}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on. Funkcja przed nazwą szablonu, czy modułu, zostawia w wpis w postaci przedrostka {{Code|Książka:}}. Czy zostanie dodana przed tym nazwa przestrzeni nazw, to zależy od niepodania niepustej zmiennej {{Parametr|n}}, a zmienna {{Parametr|p|1}} - to przed nim jest dodawana przestrzeń nazw szablonu {{Np|Template|link=tak}}, {{Parametr|p|2}} - modułu {{Np|Module|link=tak}} i {{Parametr|p|3}} - kategorii. Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.N=function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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}}}} === {{Śródtytuł|p.A}}{{Code|p.A}} === Funkcja uruchamiana we wnętrzu szablonu {{s|A}}, która przyjmuje jego parametry, i tak samo działa, jak on. Funkcja usuwa przedrostek {{Code|Książka:}} w nazwie szablonu, czy modułu. Gdy jest podany parametr: {{Parametr|p|tak}}, to dla przestrzeni niebędących: {{Np|Template|link=tak}}, {{Np|Module|link=tak}} i {{Np|Category|link=tak}}, jest zwracany wtedy przez nią parametr pierwszy fukcji, dla tych wartości właśnie wyliczonych przestrzeni usuwany jest przedristek {{Code|Książka:}}. Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.A=function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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 == === {{Śródtytuł|p.Powtarzaj}}{{Code|p.Powtarzaj}} === Funkcja służy do powtarzalnego generowania wikikodu ze składników jego kroku przy pomocy określonych zmiennych rodzica. * Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.Powtarzaj = function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Funkcja może przyjmować tylko parametry nienazwane albo tylko nazwane, albo nienazwane i nazwane (gdy jest ustawiony parametr {{Code|różne}} {{Patrz|różne}}). 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}} {{LinkPatrz|różne}}, która wtedy ma wskazywać na wartość niepustą. ; Najważniejsze parametry, które są to opcjonalne, to są{{dk}} * {{Code|start}} {{Patrz|start}} - liczba, która wskazuje początek liczenia - domyślna wartość to {{Code|1}}, * {{Code|koniec}} {{Patrz|koniec}} - liczba, która wskazuje koniec liczenia. ; Numer końca liczenia parametrów nienazwanych lub nazwanych, czy nazwanychi nienazwanych{{dk}} * Elementy w {{Code|parametry}} {{Patrz|parametry}} mogą modyfikować odpowiednio parametry: {{Code|start}} {{LinkPatrz|start}} i {{Code|koniec}} {{LinkPatrz|koniec}}. * Ze zmiennej {{LinkPatrz|parametry}} jest liczona odpowiednia zmienna {{LinkPatrz|tabela}} dopuzczalnych zmiennych do liczenia. * Funkcja {{Code|Wylicz_skoncz_na_koncu}},którego algorytm podomy w tej poyzcji, tzn. koniec liczenia parametrów nienazwanych musi być policzony, jeżeli nie ma parametrów nazwanych w tabeli {{Code|tabela}} {{Patrz|tabela}}. A przeciwnie, jeżeli nie jest ustawiony parametr {{Code|różne}} {{LinkPatrz|różne}} nie na wartość niepustą, wtedy jest liczony parametr maksimum parametrów nazwanych, przeciwnie wtedy liczy się parametr maksimum numeracyjne parametrów numerowanych, czyli zmienną: {{Code|maksimum numeracyjne}} {{Patrz|maksimum numeracyjne}}, jeśli on ma wartość niepustą, wtedy liczy się maksimum parametrów nienazwanych, a jeżeli ona ma przeciwną wartość, to się liczy maksimum parametrów nazwanych, jak nienazwanych. Na podstawie tego mamy policzony odpowiednio taki koniec liczenia modyfikacji zwracany i policzony przez tą funkcję. ; Parametr {{Code|dodatkowe}}{{dk}} * To maksimum parametrów nazwanych, dla jakieś podstawy parametrów, są pomijane parametry z: {{Code|dodatkowe}}, która jest zestawem podstaw parametrów oddzielonych średnikami, jest właśnie podany ten parametr w nim. Przykładem jego jest: * {{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. ; Format parametru {{Parametr|parametry}}{{dk}} * 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 równa liczbie {{Code|5}}, oddzielonych średnikami. ; Opis parametru {{Parametr|parametry}}{{dk}} 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 w wartościach: {{Code|zmienna 1>}}, {{Code|<zmienna 2>}} i {{Code|<zmienna 3>}}, w których są pewne nazwy bazowe parametrów bez numerka na jej końcu, w zmiennej {{Code|parametry}} można nie podawać dalszych elementów 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ć nawet tego znaku,gdy nic nie ma po równa się) dla danego problemu funkcji. ; Wikikod pojedynczego kroku liczenia całości wygenerowanego wikikodu dla wszystkich zmiennych{{dk}} * 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)}}. ; Parametr {{Parametr|start}}, wartość początkowa{{dk}} * Gdy parametr {{Code|tonumber(frame.args["start"]) or 1}}, jest równy zero, funkcja zwraca błąd: {{Code|(początek jest ustawiony na zero)}}. ; Brak parametrów szablonu{{dk}} * 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. ; Parametr {{Parametr|nic}}{{dk}} * Gdy {{Code|nic}} przyjmuje wartość, i gdy pomijamy parametr, lub on przyjmuje wartość pustą, wtedy a funkcja nie może wygenerować żadnego kroku iteracji, to wtedy jest zwracana wartość parametru {{Code|nic}} lub ciąg pusty. ; Inne parametry{{dk}} * Parametr {{Code|po kolei}} {{Patrz|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|zaznacz}} {{Patrz|zaznacz}} - liczby oddzielone średnikami, które przy parametrach nazwanych o pewnych numerach i numerkach nie mają być uwzględnione przy niepustym parametrze {{Code|po kolei}} {{LinkPatrz|po kolei}}, a przy jego przeciwnej wartości za to mają być użyte. * 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}} {{Patrz|_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 wikikodami, wtedy ta funkcja używa do tego liczenia{{dk}} * Jest to funkcja {{LinkŚródtytuł|BudowaSzereguZDanych}}. * Wywołanie funkcji jest takie: {{Pre|lancuch_znakow {{=}} BudowaSzereguZDanych(frame,tab_lancuch,minimum or 0,maksimum);}} ; Parametry funkcji {{LinkŚródtytuł|BudowaSzereguZDanych}}. * One są wraz z jego parametrami podane w postaci jego parametrów ramki {{Code|frame}}, które jednocześnie są parametrami {{LinkŚródtytuł|p.Powtarzaj}}, używa się je 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ą {{LzLua|frame:preprocess}}, i jest zwracany jako wartość omawianej funkcji. ; Przykłady{{dk}} * Funkcja jest używana np. w silnikach szablonów, np.: {{s|Osobny artykuł/silnik}} szablonu {{s|Osobny artykuł}}, jak i do niego 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}}. === {{Śródtytuł|p.PowtarzajOdDo}}{{Code|p.PowtarzajOdDo}} === Funkcja służy do iteracji, od jakieś liczby do jakieś innej, podanego wikikodu dla danego kroku {{Code|1}}, iterując to, co krok określony zmienną: {{Code|krok}}. * 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ę{{dk}} {{nobold|{{Code|{{m|Ramka|Rozwiń}}}}}}, lub go rozwija na końcu, na podstawie kolejnych kroków iteracji{{dk}} * {{Code|start}} - początek iteracji dokonywany przez ta funkcję, * {{Code|koniec}} - koniec iteracji dokonywany przez ta funkcję, * {{Code|krok}} - krok iteracji, co który numer 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{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}} * {{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ą{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}} * {{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{{dk}} {{nobold|{{s|Chem/silnik}}}}, w tym nadrzędnym{{dk}} {{nobold|{{s|Chem}}}}, przykłady jego działania{{dk}} * {{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. === {{Śródtytuł|p["PrzetwarzajIterującCiąg"]}}{{Code|p["PrzetwarzajIterującCiąg"]}} === Funkcja do iteracji wikikodu po parametrach oddzielonych średniami w parametrze ramki {{Code|cią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{{dk}} * {{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{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}} * {{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ą{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}} * {{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>}} jest kolejny parametr, oddzielonych od pozastałych średniami, z: {{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}}: {{LzLua|frame:preprocess}}, jeśli: {{Code|nie rozwiń}}, nie przybiera wartości niepustej. === {{Śródtytuł|p["PowtarzajWedług"]}}{{Code|p["PowtarzajWedług"]}} === Funkcja wyszukująca elementy według wzoru począwszy od numeru, określonego przez {{Code|start}}, aż do zakończenia danych kolenych sprawdzania od tej liczby, czy taka strona istnieje, numerek jest określony przez pewien wikikod, określony przez {{Code|<nowiki>{{_}}</nowiki>}}, którymusi być podany we wzorze {{Code|wzor}}. Ona w ten sposób dla istniejących stron ustawia pewne łańcuchy, które są łączone znakami {{Code|", "}}, a na końcu samym {{Code|" i "}}. 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 strony{{dk}} {{nobold|„{{Ns:Template}}{{dk}}Polecane książki/”}}, a oto przykład{{dk}}{{nobold|{{Parametr|wzór|{{Ns:Template}}{{dk}}Polecane książki/{{((}}_{{))}}}}}}{{dk}} * {{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}}}} == {{Śródtytuł|p["LiczbaPrawychUkośników"]}}{{Code|p["LiczbaPrawychUkośników"]}} == Funkcja liczy, ile jest prawych ukośników w adresie strony podany jako pierwszy parametr ramki. * 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. ; Parametry fubkcji{{dk}} * {{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}}}} == {{Śródtytuł|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}}{{Code|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}} == Funkcja liczy maksymalny numer kolejnej strony liczonej według wzoru {{Code|wzor}}, musi być we wzorze podany element {{Code|<nowiki>{{_}}</nowiki>}}, aby mógł to robić. * 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/”, czyli dla stron o ogólnym wzorze: {{Parametr|wzór|{{Ns:Template}}:Polecane książki/{{((}}_{{))}}}}. ; Parametry funkcji{{dk}} * {{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 == === {{Śródtytuł|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}}{{Code|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}} === Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy minimalny numer takich zmiennych. * 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*)}}. ; Parametry funkcji{{dk}} * {{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}}}} === {{Śródtytuł|p.IleJestTakichOdpowiednikowychZmiennych}}{{Code|p.IleJestTakichOdpowiednikowychZmiennych}} === Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy ile jest takich zmiennych. * 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. ; Parametry funkcji{{dk}} * {{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}}}} == {{Śródtytuł|p["Parametr w tablicy nazw"]}}{{Code|p["Parametr w tablicy nazw"]}} == Funkcja bada, czy jest taki parametr {{Code|pozycja}} w tablicy nazw określonej zmienną {{Code|parametry}}, której elementy są oddzielone średnikami. * 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. ; Parametry funkcji{{dk}} * {{Code|parametry}} - lista parametrów oddzielonych średnikiem, * {{Code|pozycja}} - szukana lista w tablicy parametrów, * {{Code|od dużej}} - czy parametr: {{Code|pozycja}}, i elementy listy: {{Code|parametry}}, 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}}, a to ostatnie jest to wartość języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, która po transformacji na wikikod jest zamieniana na ciąg pusty, więc ona nadaje się do instrukcji warunkowych. === 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> 96bfiymvw54zq6htfennyxuoukkhpmm 553403 553402 2026-08-29T20:25:02Z Persino 2851 /* Funkcje parametrów i argumentów */ 553403 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. Funkcje, w tym module, uruchamia się tylko w ramce w szablonie, bo są tylko do tego przygotowane. One służą do powtarzania parametrów rodzica, czy przodka, iteracji pojedynczego kroku wikikodu, jakiś sprawdzeń, do liczenia odpowiedników i związanych z tym parametrami, itp.. == Funcje lokalne modułu == === {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} === Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, tylko w module {{Code|{{ld2|Ramka}}}}, szablonów, modułów i parserów w ramce. Uruchamiana jest przez funkcje: {{LinkŚródtytuł|p.Szablon}} - funkcja do uruchamiania szablonów, {{LinkŚródtytuł|p["Moduł"]}} - funkcja do uruchamiania modułów, i {{LinkŚródtytuł|p.Parser}} - funkcja do uruchamiania parserów. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ParserBlokowy(frame, co_ma_wywolac)...end; </syntaxhighlight> ; Parametry funkcji{{dk}} * {{Code|frame}} {{Patrz|frame}} - funkcja ramkki funkcji tablica transportu modułu, * {{Code|co_ma_wywolac}} {{Patrz|co_ma_wywolac}} - ten parametr przyjmuje wartość liczbową, która jeżeli {{Tt|0}} - to uruchamiany jest szablon, jeżeli {{Tt|1}} - moduł, jeżeli {{Code|2}} - to parser, jeżeli on ma inne wartości, tzn.: {{Tt|2}}, a {{Tt|3}} i dalej, to już dany szablon. ; Parametry ramki funkcji tablicy transportu modułu{{dk}} * Parametry podstawowe: ** {{Code|Nazwa}} {{Patrz|Nazwa}} - jest to pełna nazwa szablonu, modułu, czy parsera, ** {{Code|bez argumentów rodzica}} {{Patrz|bez argumentów rodzica}} - tablica parametrów oddzielonych średnikami, których obiekt uruchamiany nie może przyjmować, nawet jeżeli one są, ** {{Code|nazwa szablonu rodzica}} {{Patrz|nazwa szablonu rodzica}} - jest to zmienna przechowująca nazwę szablonu rodzica ramki dziecka,a nawet któreś z jego przodków, ** {{Code|bez argumentów nienazwanych rodzica}} {{Patrz|bez argumentów nienazwanych rodzica}} - szablon w ramce nie przyjmuje parametrów nienazwanych, określonych liczbą, podanych w rodzicu ramki, ** {{Code|potomek}} {{Patrz|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}} {{Patrz|nie potomek}} - zmienna mówiąca, że to nie jest potomek szablonu, używana, gdy nie jest określona zmienna ramki {{LinkPatrz|zmienna z parametrami rodzica}}, wtedy taka ramka jest traktowana jak normalna ramka, której jedynie trzeba przekazać parametry rodzica, nie przodka, wtedy do niej nie są przekazywane parametry: {{LinkPatrz|parametry rodzica}} (ta zmienna jest wtedy ustawiana, gdy nie jest niepusty parametr {{LinkPatrz|bez dodatkowych sprawdzeń}}), {{LinkPatrz|bez argumentów szablonu}}, i {{LinkPatrz|nazwa szablonu rodzica}} (jeśli ta wartość rodzica nie istnieje, to nadawana jest jej aktualna nazwa szablonu rodzica, a nie przodka, normalnie jest to przodka, a w szczególności rodzica) i {{LinkPatrz|potomek}} (ustawiany na stałą wartość niepustą), ** {{Code|bez argumentów szablonu}} {{Patrz|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ń}} {{Patrz|bez dodatkowych sprawdzeń}} - nie jest uruchamiana walidacja parametrów szablonu rodzica, ** {{Code|parametry rodzica}} {{Patrz|parametry rodzica}} - zmienna przedstawiająca parametry rodzica, czy któreś ze przodków, przekazane do ramki: {{m|Sprawdź|Parametry}} - dodane przez tę funkcję, ** {{Code|zmienna z parametrami rodzica}} {{Patrz|zmienna z parametrami rodzica}} - parametr mówiący, czy ma tworzyć zmienne z parametrami rodzica {{LinkPatrz|parametry rodzica}}, a jeżeli nie jest on, z zadnych z jego potomków podany, to zmienna {{LinkPatrz|parametry rodzica}} jest przekazywana na kolejnego przodka, ** {{Code|zmienna z argumentami ramki}} {{Patrz|zmienna z argumentami ramki}} - zmienna mówiąca, czy mają być tworzone parametry ramki, które nie są sprawdzane 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}} {{Patrz|zmienna z nazwą szablonu rodzica}} - parametr, czy ma tworzyć zmienną: {{LinkPatrz|nazwa szablonu rodzica}}, ** {{Code|parametry funkcji modułu pudełek}} {{Patrz|parametry funkcji modułu pudełek}} - czy do funkcji mają wchodzić parametry modułu pudełek, które są ponumerowane dodatkowym numerkiem, ** {{Code|parametry podstawowe funkcji modułu pudełek}} {{Patrz|parametry podstawowe funkcji modułu pudełek}} - czy do funkcji mają wchodzić podstawowe parametry funkcji modułu pudełek, te które nie mają dodatkowego numerka, ** {{Code|usuń z parametrów ramki}} {{Patrz|usuń z parametrów ramki}} - parametry ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, przedstawiający zmienne oddzielone średnikami, które nie mają być uwzględnione przy uruchamianiu danego obiektu. * {{Code|Funkcja}} {{Patrz|Funkcja}} - nazwa funkcji w module, który ma wywołać w ramce ta funkcja, w przypadku, gdy parametr {{LinkPatrz|co_ma_wywolac}} ma wartość {{Tt|1}}, czyli wywołujemy funkcję {{LinkŚródtytuł|p["Moduł"]}}. Funkcja uruchamia szablon, moduł, czy ramkę, w zależności od drugiego parametru funkcji, z parametrami rodzica ramki bez parametrów opisanych zmienną: {{LinkPatrz|bez argumentów szablonu}}, i bez parametrów wskazanych przez zmienną: {{Code|usuń z parametrów ramki}}. Za pomocą tej funkcji możemy wielopoziomowo wywoływać funkcje przekazując parametry od najwyższego poziomu do najniższego. Ta funkcja służy przede wszystkim 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 do uruchamiania szablonów, a uruchamianie funkcji modułu, w tym funkcji {{m|Cytuj|custom}} w szablonie {{s|PrzypisStrona}}. Przykładem wywołania szablonu, która jest w szablonie: {{s|Wzór}}, w którym jest wywoływany inny szablon, tym razem silnik, tzn. {{s|Wzór/silnik}}: <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> === {{Śródtytuł|BudowaSzereguZDanych}}{{Code|BudowaSzereguZDanych}} === Funkcja do uruchamiania się 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> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tab_lancuch}} {{Patrz|tab_lancuch}} - pewna tablica transportu funkcji. * Zmienne do mikroszablonów: ** {{Code|minimum}} {{Patrz|minimum}} - liczba mówiąca o minimum, ** {{Code|maksimum}} {{Patrz|maksimum}} - liczba mówiąca o maksimum. Parametry ramki funkcji tablicy transportu modułu: * {{Code|akapit}} {{Patrz|akapit}} - jeśli niepusta, to ona definiuje akapit ze znaków {{Code|\n\n}}, przeciwnym wypadku elementy łańcucha nie są łączone w akapity, * {{Code|przecinek}} {{Patrz|przecinek}} - jeśli niepuste, to mówi, że pomiędzy elementami powiniem być przecinek: {{Code|", "}}, został on specjalnie objęty w cudzysłowy, aby zilustrować, że po przecinku znajduje się spacja, * {{Code|nowa linia}} {{Patrz|nowa linia}} - w przeciwieństwo do zmiennej {{LinkPatrz|akapit}}, używany zamiast niej, pisze jedną nową linię, a nie dwie, jako: {{Code|\n}}, * {{Code|wyliczanka}} {{Patrz|wyliczanka}} - wylicza elementy z przecinkami, stawiając przed ostatnim elementem zamiast jego wyraz wyliczania {{Code|i}}, * {{Code|początek}} {{Patrz|początek}} - mówi, że na początku musi znajdować się przecinek, * {{Code|myślnik}} {{Patrz|myślnik}} - mówi, że jeśli nie ma początku przecinka, to stawiany jest myślnik, używany zamiast {{LinkPatrz|początek}}, * {{Code|warunkowe}} {{Patrz|warunkowe}} - instrukcje wikikodu, takie jak: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}, zostaną w kodzie rozwinięte, a później ciągłe właściwe elementy wikikodu otoczone dwoma dolnymi myślnikami zostaną rozwinięte do pewnej postaci, funkcja używa do tego {{LinkŚródtytuł|p.InstrukcjeWarunkowe}}, ** {{Code|parametr}} {{Patrz|parametr}} - używany w towarzystwie z {{LinkPatrz|warunkowe}}, mówiący że, derektywy znakowe ciągłe otoczone dwoma dolnymi myślnikami, zostaną zastąpione odpowiedmimi szablonami, w przeciwnym wypadku niepodania tej wartości lub jego pustej, wtedy te derektywy zostaną zastąpione w postaci rozwiniętej tych szablonów. ** Funkcja w tym warunku zwraca ciąg znaków rozwiniętego warunku. Funkcja posiada też mikroszablony, które są zdefiniowane w kodzie łańcuchów {{LinkPatrz|tab_lancuch}}: * {{Code|<nowiki>{{min}}</nowiki>}} - minimalna wartość szeregu zmiennych, określana przez {{LinkPatrz|minimum}}, * {{Code|<nowiki>{{max}}</nowiki>}} - a tutaj ich maksymalna, określana przez {{LinkPatrz|maksimum}}. Te dwie zmienne są podstawiane do uzyskanego ciągu. Funkcja zwraca te części rozwiniętego tekstu wikikodu, jeśli podano {{LinkPatrz|warunkowe}}, co do instrukcji warunkowych i te bez wewnętrznych klamerek - specjalne kody, czyki te otoczone z dwóch stron dolnumi myślnikami, a pozostałe część jest za to nierozwinięta. == {{Śródtytuł|p.InstrukcjeWarunkowe}}{{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}} {{Patrz|ciag}} - podany ciąg do rozwinięcia z instrukcji warunkowych wewnątrz nie posiadający klamerek, * {{Code|derektywy_specjalne}} {{Patrz|derektywy_specjalne}} - używa do zastępowania specjalnych derektyw, podane po prawej stronie w ramce pływającej, * {{Code|derektywy_parametrowe}} {{Patrz|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: {{LinkŚródtytuł|BudowaSzereguZDanych}}, poprzez: {{LinkŚródtytuł|p.Powtarzaj}}. 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 == === {{Śródtytuł|p.RozpakujArgumenty}}{{Code|p.RozpakujArgumenty}} === Ta funkcja jest do rozpakowywania zmiennych z podanego parametru, których zmienne są oddzieloe średnikami. * Funkcja uruchamia się 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. === {{Śródtytuł|p.PakujParametry}}{{Code|p.PakujParametry}} === Ta funkcja jest do pakowania tablicy, języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w tablicę {{lpg|JSON}}. * Funkcja się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Funkcja pakuje parametry tablicy {{lpg|Lua}} do tablicy: {{lpg|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> Parametry funkcji: * {{Code|args}} {{Patrz|args}} - tablica {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Ten szablon nazywa parametry, jakby nienazwane w tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera) z tablicy {{lpg|Lua}} (tutaj od jedynki), do tablicy nazwanej, jak to robi się w {{lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonEncode}}, z drugim parametrem: {{Code|mw.text.JSON_PRESERVE_KEYS}} {{Patrz|mw.text.JSON_PRESERVE_KEYS}}. === {{Śródtytuł|p.RozpakujParametry}}{{Code|p.RozpakujParametry}} === Ta funkcja jest do rozpakowywania tablicy {{lpg|JSON}} w tablicę języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}} * 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 w niej zwracany. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.RozpakujParametry = function (zmienna_z_parametrami) return mw.text.jsonDecode(zmienna_z_parametrami,mw.text.JSON_PRESERVE_KEYS); end; </syntaxhighlight> Parametry funkcji: * {{Code|zmienna_z_parametrami}} {{Patrz|zmienna_z_parametrami}} - tablica {{lpg|JSON}}. Ten szablon nazywa parametry nienazwane w tablicy {{lpg|Lua}} (tutaj od jedynki) z tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera), do tablicy nienazwanej z nazwanej, jak to robi się w {{Lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonDecode}}, z użyciem drugiego parametru: {{LinkPatrz|mw.text.JSON_PRESERVE_KEYS}}. == {{Śródtytuł|p["Rozwiń"]}}{{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> Parameetry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon rozwija wikikod podany w zmiennej {{Code|1}}, w parametrach szablonu rodzica. * 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}}: <syntaxhighlight lang="lua"> p["Rozwiń"] = function(frame) return frame:getParent():preprocess(frame.args[1]); end; </syntaxhighlight> == {{Śródtytuł|p.Log}}{{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> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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}}: <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 == === {{Śródtytuł|p.Szablon}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p.Szablon = function(frame) return ParserBlokowy(frame,0); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Szablon|Nazwa=<nazwa szablonu>|...}} </syntaxhighlight> === {{Śródtytuł|p["Moduł"]}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p["Moduł"] = function(frame) return ParserBlokowy(frame,1); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Moduł|Nazwa=<nazwa modułu>|Funkcja=<nazwa funkcji>|...}} </syntaxhighlight> === {{Śródtytuł|p.Parser}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p.Parser = function(frame) return ParserBlokowy(frame,2); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Parser|Nazwa=<nazwa parsera>|...}} </syntaxhighlight> == Funkcje książkowe == === {{Śródtytuł|p.Q}}{{Code|p.Q}} === Funkcja uruchamia szablon o podanej nazwie w pierwszym parametrze z przedrostkiem {{Code|Książka:}} przed nazwą szablonu. Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.Q =function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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ą (parametry nazwane, które są wliczane 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}}}} === {{Śródtytuł|p.N}}{{Code|p.N}} === Funkcja uruchamiana we wnętrzu szablonu {{s|N}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on. Funkcja przed nazwą szablonu, czy modułu, zostawia w wpis w postaci przedrostka {{Code|Książka:}}. Czy zostanie dodana przed tym nazwa przestrzeni nazw, to zależy od niepodania niepustej zmiennej {{Parametr|n}}, a zmienna {{Parametr|p|1}} - to przed nim jest dodawana przestrzeń nazw szablonu {{Np|Template|link=tak}}, {{Parametr|p|2}} - modułu {{Np|Module|link=tak}} i {{Parametr|p|3}} - kategorii. Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.N=function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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}}}} === {{Śródtytuł|p.A}}{{Code|p.A}} === Funkcja uruchamiana we wnętrzu szablonu {{s|A}}, która przyjmuje jego parametry, i tak samo działa, jak on. Funkcja usuwa przedrostek {{Code|Książka:}} w nazwie szablonu, czy modułu. Gdy jest podany parametr: {{Parametr|p|tak}}, to dla przestrzeni niebędących: {{Np|Template|link=tak}}, {{Np|Module|link=tak}} i {{Np|Category|link=tak}}, jest zwracany wtedy przez nią parametr pierwszy fukcji, dla tych wartości właśnie wyliczonych przestrzeni usuwany jest przedristek {{Code|Książka:}}. Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.A=function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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 == === {{Śródtytuł|p.Powtarzaj}}{{Code|p.Powtarzaj}} === Funkcja służy do powtarzalnego generowania wikikodu ze składników jego kroku przy pomocy określonych zmiennych rodzica. * Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.Powtarzaj = function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Funkcja może przyjmować tylko parametry nienazwane albo tylko nazwane, albo nienazwane i nazwane (gdy jest ustawiony parametr {{Code|różne}} {{Patrz|różne}}). 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}} {{LinkPatrz|różne}}, która wtedy ma wskazywać na wartość niepustą. ; Najważniejsze parametry, które są to opcjonalne, to są{{dk}} * {{Code|start}} {{Patrz|start}} - liczba, która wskazuje początek liczenia - domyślna wartość to {{Code|1}}, * {{Code|koniec}} {{Patrz|koniec}} - liczba, która wskazuje koniec liczenia. ; Numer końca liczenia parametrów nienazwanych lub nazwanych, czy nazwanychi nienazwanych{{dk}} * Elementy w {{Code|parametry}} {{Patrz|parametry}} mogą modyfikować odpowiednio parametry: {{Code|start}} {{LinkPatrz|start}} i {{Code|koniec}} {{LinkPatrz|koniec}}. * Ze zmiennej {{LinkPatrz|parametry}} jest liczona odpowiednia zmienna {{LinkPatrz|tabela}} dopuzczalnych zmiennych do liczenia. * Funkcja {{Code|Wylicz_skoncz_na_koncu}},którego algorytm podomy w tej poyzcji, tzn. koniec liczenia parametrów nienazwanych musi być policzony, jeżeli nie ma parametrów nazwanych w tabeli {{Code|tabela}} {{Patrz|tabela}}. A przeciwnie, jeżeli nie jest ustawiony parametr {{Code|różne}} {{LinkPatrz|różne}} nie na wartość niepustą, wtedy jest liczony parametr maksimum parametrów nazwanych, przeciwnie wtedy liczy się parametr maksimum numeracyjne parametrów numerowanych, czyli zmienną: {{Code|maksimum numeracyjne}} {{Patrz|maksimum numeracyjne}}, jeśli on ma wartość niepustą, wtedy liczy się maksimum parametrów nienazwanych, a jeżeli ona ma przeciwną wartość, to się liczy maksimum parametrów nazwanych, jak nienazwanych. Na podstawie tego mamy policzony odpowiednio taki koniec liczenia modyfikacji zwracany i policzony przez tą funkcję. ; Parametr {{Code|dodatkowe}}{{dk}} * To maksimum parametrów nazwanych, dla jakieś podstawy parametrów, są pomijane parametry z: {{Code|dodatkowe}}, która jest zestawem podstaw parametrów oddzielonych średnikami, jest właśnie podany ten parametr w nim. Przykładem jego jest: * {{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. ; Format parametru {{Parametr|parametry}}{{dk}} * 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 równa liczbie {{Code|5}}, oddzielonych średnikami. ; Opis parametru {{Parametr|parametry}}{{dk}} 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 w wartościach: {{Code|zmienna 1>}}, {{Code|<zmienna 2>}} i {{Code|<zmienna 3>}}, w których są pewne nazwy bazowe parametrów bez numerka na jej końcu, w zmiennej {{Code|parametry}} można nie podawać dalszych elementów 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ć nawet tego znaku,gdy nic nie ma po równa się) dla danego problemu funkcji. ; Wikikod pojedynczego kroku liczenia całości wygenerowanego wikikodu dla wszystkich zmiennych{{dk}} * 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)}}. ; Parametr {{Parametr|start}}, wartość początkowa{{dk}} * Gdy parametr {{Code|tonumber(frame.args["start"]) or 1}}, jest równy zero, funkcja zwraca błąd: {{Code|(początek jest ustawiony na zero)}}. ; Brak parametrów szablonu{{dk}} * 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. ; Parametr {{Parametr|nic}}{{dk}} * Gdy {{Code|nic}} przyjmuje wartość, i gdy pomijamy parametr, lub on przyjmuje wartość pustą, wtedy a funkcja nie może wygenerować żadnego kroku iteracji, to wtedy jest zwracana wartość parametru {{Code|nic}} lub ciąg pusty. ; Inne parametry{{dk}} * Parametr {{Code|po kolei}} {{Patrz|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|zaznacz}} {{Patrz|zaznacz}} - liczby oddzielone średnikami, które przy parametrach nazwanych o pewnych numerach i numerkach nie mają być uwzględnione przy niepustym parametrze {{Code|po kolei}} {{LinkPatrz|po kolei}}, a przy jego przeciwnej wartości za to mają być użyte. * 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}} {{Patrz|_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 wikikodami, wtedy ta funkcja używa do tego liczenia{{dk}} * Jest to funkcja {{LinkŚródtytuł|BudowaSzereguZDanych}}. * Wywołanie funkcji jest takie: {{Pre|lancuch_znakow {{=}} BudowaSzereguZDanych(frame,tab_lancuch,minimum or 0,maksimum);}} ; Parametry funkcji {{LinkŚródtytuł|BudowaSzereguZDanych}}. * One są wraz z jego parametrami podane w postaci jego parametrów ramki {{Code|frame}}, które jednocześnie są parametrami {{LinkŚródtytuł|p.Powtarzaj}}, używa się je 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ą {{LzLua|frame:preprocess}}, i jest zwracany jako wartość omawianej funkcji. ; Przykłady{{dk}} * Funkcja jest używana np. w silnikach szablonów, np.: {{s|Osobny artykuł/silnik}} szablonu {{s|Osobny artykuł}}, jak i do niego 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}}. === {{Śródtytuł|p.PowtarzajOdDo}}{{Code|p.PowtarzajOdDo}} === Funkcja służy do iteracji, od jakieś liczby do jakieś innej, podanego wikikodu dla danego kroku {{Code|1}}, iterując to, co krok określony zmienną: {{Code|krok}}. * 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ę{{dk}} {{nobold|{{Code|{{m|Ramka|Rozwiń}}}}}}, lub go rozwija na końcu, na podstawie kolejnych kroków iteracji{{dk}} * {{Code|start}} - początek iteracji dokonywany przez ta funkcję, * {{Code|koniec}} - koniec iteracji dokonywany przez ta funkcję, * {{Code|krok}} - krok iteracji, co który numer 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{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}} * {{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ą{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}} * {{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{{dk}} {{nobold|{{s|Chem/silnik}}}}, w tym nadrzędnym{{dk}} {{nobold|{{s|Chem}}}}, przykłady jego działania{{dk}} * {{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. === {{Śródtytuł|p["PrzetwarzajIterującCiąg"]}}{{Code|p["PrzetwarzajIterującCiąg"]}} === Funkcja do iteracji wikikodu po parametrach oddzielonych średniami w parametrze ramki {{Code|cią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{{dk}} * {{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{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}} * {{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ą{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}} * {{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>}} jest kolejny parametr, oddzielonych od pozastałych średniami, z: {{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}}: {{LzLua|frame:preprocess}}, jeśli: {{Code|nie rozwiń}}, nie przybiera wartości niepustej. === {{Śródtytuł|p["PowtarzajWedług"]}}{{Code|p["PowtarzajWedług"]}} === Funkcja wyszukująca elementy według wzoru począwszy od numeru, określonego przez {{Code|start}}, aż do zakończenia danych kolenych sprawdzania od tej liczby, czy taka strona istnieje, numerek jest określony przez pewien wikikod, określony przez {{Code|<nowiki>{{_}}</nowiki>}}, którymusi być podany we wzorze {{Code|wzor}}. Ona w ten sposób dla istniejących stron ustawia pewne łańcuchy, które są łączone znakami {{Code|", "}}, a na końcu samym {{Code|" i "}}. 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 strony{{dk}} {{nobold|„{{Ns:Template}}{{dk}}Polecane książki/”}}, a oto przykład{{dk}}{{nobold|{{Parametr|wzór|{{Ns:Template}}{{dk}}Polecane książki/{{((}}_{{))}}}}}}{{dk}} * {{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}}}} == {{Śródtytuł|p["LiczbaPrawychUkośników"]}}{{Code|p["LiczbaPrawychUkośników"]}} == Funkcja liczy, ile jest prawych ukośników w adresie strony podany jako pierwszy parametr ramki. * 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. ; Parametry fubkcji{{dk}} * {{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}}}} == {{Śródtytuł|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}}{{Code|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}} == Funkcja liczy maksymalny numer kolejnej strony liczonej według wzoru {{Code|wzor}}, musi być we wzorze podany element {{Code|<nowiki>{{_}}</nowiki>}}, aby mógł to robić. * 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/”, czyli dla stron o ogólnym wzorze: {{Parametr|wzór|{{Ns:Template}}:Polecane książki/{{((}}_{{))}}}}. ; Parametry funkcji{{dk}} * {{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 == === {{Śródtytuł|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}}{{Code|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}} === Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy minimalny numer takich zmiennych. * 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*)}}. ; Parametry funkcji{{dk}} * {{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}}}} === {{Śródtytuł|p.IleJestTakichOdpowiednikowychZmiennych}}{{Code|p.IleJestTakichOdpowiednikowychZmiennych}} === Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy ile jest takich zmiennych. * 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. ; Parametry funkcji{{dk}} * {{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}}}} == {{Śródtytuł|p["Parametr w tablicy nazw"]}}{{Code|p["Parametr w tablicy nazw"]}} == Funkcja bada, czy jest taki parametr {{Code|pozycja}} w tablicy nazw określonej zmienną {{Code|parametry}}, której elementy są oddzielone średnikami. * 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. ; Parametry funkcji{{dk}} * {{Code|parametry}} - lista parametrów oddzielonych średnikiem, * {{Code|pozycja}} - szukana lista w tablicy parametrów, * {{Code|od dużej}} - czy parametr: {{Code|pozycja}}, i elementy listy: {{Code|parametry}}, 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}}, a to ostatnie jest to wartość języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, która po transformacji na wikikod jest zamieniana na ciąg pusty, więc ona nadaje się do instrukcji warunkowych. === 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> mewgs0ih61rf0h8gnsq2iwi1dt87apo 553404 553403 2026-08-29T20:29:32Z Persino 2851 /* {{Śródtytuł|BudowaSzereguZDanych}}{{Code|BudowaSzereguZDanych}} */ 553404 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. Funkcje, w tym module, uruchamia się tylko w ramce w szablonie, bo są tylko do tego przygotowane. One służą do powtarzania parametrów rodzica, czy przodka, iteracji pojedynczego kroku wikikodu, jakiś sprawdzeń, do liczenia odpowiedników i związanych z tym parametrami, itp.. == Funcje lokalne modułu == === {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} === Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, tylko w module {{Code|{{ld2|Ramka}}}}, szablonów, modułów i parserów w ramce. Uruchamiana jest przez funkcje: {{LinkŚródtytuł|p.Szablon}} - funkcja do uruchamiania szablonów, {{LinkŚródtytuł|p["Moduł"]}} - funkcja do uruchamiania modułów, i {{LinkŚródtytuł|p.Parser}} - funkcja do uruchamiania parserów. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ParserBlokowy(frame, co_ma_wywolac)...end; </syntaxhighlight> ; Parametry funkcji{{dk}} * {{Code|frame}} {{Patrz|frame}} - funkcja ramkki funkcji tablica transportu modułu, * {{Code|co_ma_wywolac}} {{Patrz|co_ma_wywolac}} - ten parametr przyjmuje wartość liczbową, która jeżeli {{Tt|0}} - to uruchamiany jest szablon, jeżeli {{Tt|1}} - moduł, jeżeli {{Code|2}} - to parser, jeżeli on ma inne wartości, tzn.: {{Tt|2}}, a {{Tt|3}} i dalej, to już dany szablon. ; Parametry ramki funkcji tablicy transportu modułu{{dk}} * Parametry podstawowe: ** {{Code|Nazwa}} {{Patrz|Nazwa}} - jest to pełna nazwa szablonu, modułu, czy parsera, ** {{Code|bez argumentów rodzica}} {{Patrz|bez argumentów rodzica}} - tablica parametrów oddzielonych średnikami, których obiekt uruchamiany nie może przyjmować, nawet jeżeli one są, ** {{Code|nazwa szablonu rodzica}} {{Patrz|nazwa szablonu rodzica}} - jest to zmienna przechowująca nazwę szablonu rodzica ramki dziecka,a nawet któreś z jego przodków, ** {{Code|bez argumentów nienazwanych rodzica}} {{Patrz|bez argumentów nienazwanych rodzica}} - szablon w ramce nie przyjmuje parametrów nienazwanych, określonych liczbą, podanych w rodzicu ramki, ** {{Code|potomek}} {{Patrz|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}} {{Patrz|nie potomek}} - zmienna mówiąca, że to nie jest potomek szablonu, używana, gdy nie jest określona zmienna ramki {{LinkPatrz|zmienna z parametrami rodzica}}, wtedy taka ramka jest traktowana jak normalna ramka, której jedynie trzeba przekazać parametry rodzica, nie przodka, wtedy do niej nie są przekazywane parametry: {{LinkPatrz|parametry rodzica}} (ta zmienna jest wtedy ustawiana, gdy nie jest niepusty parametr {{LinkPatrz|bez dodatkowych sprawdzeń}}), {{LinkPatrz|bez argumentów szablonu}}, i {{LinkPatrz|nazwa szablonu rodzica}} (jeśli ta wartość rodzica nie istnieje, to nadawana jest jej aktualna nazwa szablonu rodzica, a nie przodka, normalnie jest to przodka, a w szczególności rodzica) i {{LinkPatrz|potomek}} (ustawiany na stałą wartość niepustą), ** {{Code|bez argumentów szablonu}} {{Patrz|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ń}} {{Patrz|bez dodatkowych sprawdzeń}} - nie jest uruchamiana walidacja parametrów szablonu rodzica, ** {{Code|parametry rodzica}} {{Patrz|parametry rodzica}} - zmienna przedstawiająca parametry rodzica, czy któreś ze przodków, przekazane do ramki: {{m|Sprawdź|Parametry}} - dodane przez tę funkcję, ** {{Code|zmienna z parametrami rodzica}} {{Patrz|zmienna z parametrami rodzica}} - parametr mówiący, czy ma tworzyć zmienne z parametrami rodzica {{LinkPatrz|parametry rodzica}}, a jeżeli nie jest on, z zadnych z jego potomków podany, to zmienna {{LinkPatrz|parametry rodzica}} jest przekazywana na kolejnego przodka, ** {{Code|zmienna z argumentami ramki}} {{Patrz|zmienna z argumentami ramki}} - zmienna mówiąca, czy mają być tworzone parametry ramki, które nie są sprawdzane 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}} {{Patrz|zmienna z nazwą szablonu rodzica}} - parametr, czy ma tworzyć zmienną: {{LinkPatrz|nazwa szablonu rodzica}}, ** {{Code|parametry funkcji modułu pudełek}} {{Patrz|parametry funkcji modułu pudełek}} - czy do funkcji mają wchodzić parametry modułu pudełek, które są ponumerowane dodatkowym numerkiem, ** {{Code|parametry podstawowe funkcji modułu pudełek}} {{Patrz|parametry podstawowe funkcji modułu pudełek}} - czy do funkcji mają wchodzić podstawowe parametry funkcji modułu pudełek, te które nie mają dodatkowego numerka, ** {{Code|usuń z parametrów ramki}} {{Patrz|usuń z parametrów ramki}} - parametry ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, przedstawiający zmienne oddzielone średnikami, które nie mają być uwzględnione przy uruchamianiu danego obiektu. * {{Code|Funkcja}} {{Patrz|Funkcja}} - nazwa funkcji w module, który ma wywołać w ramce ta funkcja, w przypadku, gdy parametr {{LinkPatrz|co_ma_wywolac}} ma wartość {{Tt|1}}, czyli wywołujemy funkcję {{LinkŚródtytuł|p["Moduł"]}}. Funkcja uruchamia szablon, moduł, czy ramkę, w zależności od drugiego parametru funkcji, z parametrami rodzica ramki bez parametrów opisanych zmienną: {{LinkPatrz|bez argumentów szablonu}}, i bez parametrów wskazanych przez zmienną: {{Code|usuń z parametrów ramki}}. Za pomocą tej funkcji możemy wielopoziomowo wywoływać funkcje przekazując parametry od najwyższego poziomu do najniższego. Ta funkcja służy przede wszystkim 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 do uruchamiania szablonów, a uruchamianie funkcji modułu, w tym funkcji {{m|Cytuj|custom}} w szablonie {{s|PrzypisStrona}}. Przykładem wywołania szablonu, która jest w szablonie: {{s|Wzór}}, w którym jest wywoływany inny szablon, tym razem silnik, tzn. {{s|Wzór/silnik}}: <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> === {{Śródtytuł|BudowaSzereguZDanych}}{{Code|BudowaSzereguZDanych}} === Funkcja do uruchamiania się 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> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tab_lancuch}} {{Patrz|tab_lancuch}} - pewna tablica transportu funkcji. * Zmienne do mikroszablonów: ** {{Code|minimum}} {{Patrz|minimum}} - liczba mówiąca o minimum, ** {{Code|maksimum}} {{Patrz|maksimum}} - liczba mówiąca o maksimum. Parametry ramki funkcji tablicy transportu modułu: * {{Code|akapit}} {{Patrz|akapit}} - jeśli niepusta, to ona definiuje akapit ze znaków {{Code|\n\n}}, przeciwnym wypadku elementy łańcucha nie są łączone w akapity, * {{Code|przecinek}} {{Patrz|przecinek}} - jeśli niepuste, to mówi, że pomiędzy elementami powiniem być przecinek: {{Code|", "}}, został on specjalnie objęty w cudzysłowy, aby zilustrować, że po przecinku znajduje się spacja, * {{Code|nowa linia}} {{Patrz|nowa linia}} - w przeciwieństwo do zmiennej {{LinkPatrz|akapit}}, używany zamiast niej, pisze jedną nową linię, a nie dwie, jako: {{Code|\n}}, * {{Code|wyliczanka}} {{Patrz|wyliczanka}} - wylicza elementy z przecinkami, stawiając przed ostatnim elementem zamiast jego wyraz wyliczania {{Code|i}}, * {{Code|początek}} {{Patrz|początek}} - mówi, że na początku musi znajdować się przecinek, * {{Code|myślnik}} {{Patrz|myślnik}} - mówi, że jeśli nie ma początku przecinka, to stawiany jest myślnik, używany zamiast {{LinkPatrz|początek}}, * {{Code|warunkowe}} {{Patrz|warunkowe}} - instrukcje wikikodu, takie jak: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}, zostaną w kodzie rozwinięte, a później ciągłe właściwe elementy wikikodu otoczone dwoma dolnymi myślnikami zostaną rozwinięte do pewnej postaci, funkcja używa do tego {{LinkŚródtytuł|p.InstrukcjeWarunkowe}}, ** {{Code|parametr}} {{Patrz|parametr}} - używany w towarzystwie z {{LinkPatrz|warunkowe}}, mówiący że, derektywy znakowe ciągłe otoczone dwoma dolnymi myślnikami, zostaną zastąpione odpowiedmimi szablonami, w przeciwnym wypadku niepodania tej wartości lub jego pustej, wtedy te derektywy zostaną zastąpione w postaci rozwiniętej tych szablonów. ** Funkcja w tym warunku zwraca ciąg znaków rozwiniętego warunku. Funkcja posiada też mikroszablony, które są zdefiniowane w kodzie łańcuchów {{LinkPatrz|tab_lancuch}}: * {{Code|<nowiki>{{min}}</nowiki>}} - minimalna wartość szeregu zmiennych, określana przez {{LinkPatrz|minimum}}, * {{Code|<nowiki>{{max}}</nowiki>}} - a tutaj ich maksymalna, określana przez {{LinkPatrz|maksimum}}. Te dwie zmienne są podstawiane do uzyskanego ciągu. Funkcja zwraca te części rozwiniętego tekstu wikikodu, jeśli podano {{LinkPatrz|warunkowe}}, co do instrukcji warunkowych, i też te bez wewnętrznych klamerek, czyli specjalne kody, czyli te otoczone z dwóch stron dolnumi myślnikami, a pozostałe część tak uzyskana jest za to nierozwinięta. == {{Śródtytuł|p.InstrukcjeWarunkowe}}{{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}} {{Patrz|ciag}} - podany ciąg do rozwinięcia z instrukcji warunkowych wewnątrz nie posiadający klamerek, * {{Code|derektywy_specjalne}} {{Patrz|derektywy_specjalne}} - używa do zastępowania specjalnych derektyw, podane po prawej stronie w ramce pływającej, * {{Code|derektywy_parametrowe}} {{Patrz|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: {{LinkŚródtytuł|BudowaSzereguZDanych}}, poprzez: {{LinkŚródtytuł|p.Powtarzaj}}. 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 == === {{Śródtytuł|p.RozpakujArgumenty}}{{Code|p.RozpakujArgumenty}} === Ta funkcja jest do rozpakowywania zmiennych z podanego parametru, których zmienne są oddzieloe średnikami. * Funkcja uruchamia się 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. === {{Śródtytuł|p.PakujParametry}}{{Code|p.PakujParametry}} === Ta funkcja jest do pakowania tablicy, języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w tablicę {{lpg|JSON}}. * Funkcja się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Funkcja pakuje parametry tablicy {{lpg|Lua}} do tablicy: {{lpg|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> Parametry funkcji: * {{Code|args}} {{Patrz|args}} - tablica {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Ten szablon nazywa parametry, jakby nienazwane w tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera) z tablicy {{lpg|Lua}} (tutaj od jedynki), do tablicy nazwanej, jak to robi się w {{lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonEncode}}, z drugim parametrem: {{Code|mw.text.JSON_PRESERVE_KEYS}} {{Patrz|mw.text.JSON_PRESERVE_KEYS}}. === {{Śródtytuł|p.RozpakujParametry}}{{Code|p.RozpakujParametry}} === Ta funkcja jest do rozpakowywania tablicy {{lpg|JSON}} w tablicę języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}} * 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 w niej zwracany. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.RozpakujParametry = function (zmienna_z_parametrami) return mw.text.jsonDecode(zmienna_z_parametrami,mw.text.JSON_PRESERVE_KEYS); end; </syntaxhighlight> Parametry funkcji: * {{Code|zmienna_z_parametrami}} {{Patrz|zmienna_z_parametrami}} - tablica {{lpg|JSON}}. Ten szablon nazywa parametry nienazwane w tablicy {{lpg|Lua}} (tutaj od jedynki) z tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera), do tablicy nienazwanej z nazwanej, jak to robi się w {{Lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonDecode}}, z użyciem drugiego parametru: {{LinkPatrz|mw.text.JSON_PRESERVE_KEYS}}. == {{Śródtytuł|p["Rozwiń"]}}{{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> Parameetry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon rozwija wikikod podany w zmiennej {{Code|1}}, w parametrach szablonu rodzica. * 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}}: <syntaxhighlight lang="lua"> p["Rozwiń"] = function(frame) return frame:getParent():preprocess(frame.args[1]); end; </syntaxhighlight> == {{Śródtytuł|p.Log}}{{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> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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}}: <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 == === {{Śródtytuł|p.Szablon}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p.Szablon = function(frame) return ParserBlokowy(frame,0); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Szablon|Nazwa=<nazwa szablonu>|...}} </syntaxhighlight> === {{Śródtytuł|p["Moduł"]}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p["Moduł"] = function(frame) return ParserBlokowy(frame,1); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Moduł|Nazwa=<nazwa modułu>|Funkcja=<nazwa funkcji>|...}} </syntaxhighlight> === {{Śródtytuł|p.Parser}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p.Parser = function(frame) return ParserBlokowy(frame,2); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Parser|Nazwa=<nazwa parsera>|...}} </syntaxhighlight> == Funkcje książkowe == === {{Śródtytuł|p.Q}}{{Code|p.Q}} === Funkcja uruchamia szablon o podanej nazwie w pierwszym parametrze z przedrostkiem {{Code|Książka:}} przed nazwą szablonu. Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.Q =function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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ą (parametry nazwane, które są wliczane 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}}}} === {{Śródtytuł|p.N}}{{Code|p.N}} === Funkcja uruchamiana we wnętrzu szablonu {{s|N}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on. Funkcja przed nazwą szablonu, czy modułu, zostawia w wpis w postaci przedrostka {{Code|Książka:}}. Czy zostanie dodana przed tym nazwa przestrzeni nazw, to zależy od niepodania niepustej zmiennej {{Parametr|n}}, a zmienna {{Parametr|p|1}} - to przed nim jest dodawana przestrzeń nazw szablonu {{Np|Template|link=tak}}, {{Parametr|p|2}} - modułu {{Np|Module|link=tak}} i {{Parametr|p|3}} - kategorii. Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.N=function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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}}}} === {{Śródtytuł|p.A}}{{Code|p.A}} === Funkcja uruchamiana we wnętrzu szablonu {{s|A}}, która przyjmuje jego parametry, i tak samo działa, jak on. Funkcja usuwa przedrostek {{Code|Książka:}} w nazwie szablonu, czy modułu. Gdy jest podany parametr: {{Parametr|p|tak}}, to dla przestrzeni niebędących: {{Np|Template|link=tak}}, {{Np|Module|link=tak}} i {{Np|Category|link=tak}}, jest zwracany wtedy przez nią parametr pierwszy fukcji, dla tych wartości właśnie wyliczonych przestrzeni usuwany jest przedristek {{Code|Książka:}}. Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.A=function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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 == === {{Śródtytuł|p.Powtarzaj}}{{Code|p.Powtarzaj}} === Funkcja służy do powtarzalnego generowania wikikodu ze składników jego kroku przy pomocy określonych zmiennych rodzica. * Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.Powtarzaj = function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Funkcja może przyjmować tylko parametry nienazwane albo tylko nazwane, albo nienazwane i nazwane (gdy jest ustawiony parametr {{Code|różne}} {{Patrz|różne}}). 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}} {{LinkPatrz|różne}}, która wtedy ma wskazywać na wartość niepustą. ; Najważniejsze parametry, które są to opcjonalne, to są{{dk}} * {{Code|start}} {{Patrz|start}} - liczba, która wskazuje początek liczenia - domyślna wartość to {{Code|1}}, * {{Code|koniec}} {{Patrz|koniec}} - liczba, która wskazuje koniec liczenia. ; Numer końca liczenia parametrów nienazwanych lub nazwanych, czy nazwanychi nienazwanych{{dk}} * Elementy w {{Code|parametry}} {{Patrz|parametry}} mogą modyfikować odpowiednio parametry: {{Code|start}} {{LinkPatrz|start}} i {{Code|koniec}} {{LinkPatrz|koniec}}. * Ze zmiennej {{LinkPatrz|parametry}} jest liczona odpowiednia zmienna {{LinkPatrz|tabela}} dopuzczalnych zmiennych do liczenia. * Funkcja {{Code|Wylicz_skoncz_na_koncu}},którego algorytm podomy w tej poyzcji, tzn. koniec liczenia parametrów nienazwanych musi być policzony, jeżeli nie ma parametrów nazwanych w tabeli {{Code|tabela}} {{Patrz|tabela}}. A przeciwnie, jeżeli nie jest ustawiony parametr {{Code|różne}} {{LinkPatrz|różne}} nie na wartość niepustą, wtedy jest liczony parametr maksimum parametrów nazwanych, przeciwnie wtedy liczy się parametr maksimum numeracyjne parametrów numerowanych, czyli zmienną: {{Code|maksimum numeracyjne}} {{Patrz|maksimum numeracyjne}}, jeśli on ma wartość niepustą, wtedy liczy się maksimum parametrów nienazwanych, a jeżeli ona ma przeciwną wartość, to się liczy maksimum parametrów nazwanych, jak nienazwanych. Na podstawie tego mamy policzony odpowiednio taki koniec liczenia modyfikacji zwracany i policzony przez tą funkcję. ; Parametr {{Code|dodatkowe}}{{dk}} * To maksimum parametrów nazwanych, dla jakieś podstawy parametrów, są pomijane parametry z: {{Code|dodatkowe}}, która jest zestawem podstaw parametrów oddzielonych średnikami, jest właśnie podany ten parametr w nim. Przykładem jego jest: * {{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. ; Format parametru {{Parametr|parametry}}{{dk}} * 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 równa liczbie {{Code|5}}, oddzielonych średnikami. ; Opis parametru {{Parametr|parametry}}{{dk}} 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 w wartościach: {{Code|zmienna 1>}}, {{Code|<zmienna 2>}} i {{Code|<zmienna 3>}}, w których są pewne nazwy bazowe parametrów bez numerka na jej końcu, w zmiennej {{Code|parametry}} można nie podawać dalszych elementów 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ć nawet tego znaku,gdy nic nie ma po równa się) dla danego problemu funkcji. ; Wikikod pojedynczego kroku liczenia całości wygenerowanego wikikodu dla wszystkich zmiennych{{dk}} * 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)}}. ; Parametr {{Parametr|start}}, wartość początkowa{{dk}} * Gdy parametr {{Code|tonumber(frame.args["start"]) or 1}}, jest równy zero, funkcja zwraca błąd: {{Code|(początek jest ustawiony na zero)}}. ; Brak parametrów szablonu{{dk}} * 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. ; Parametr {{Parametr|nic}}{{dk}} * Gdy {{Code|nic}} przyjmuje wartość, i gdy pomijamy parametr, lub on przyjmuje wartość pustą, wtedy a funkcja nie może wygenerować żadnego kroku iteracji, to wtedy jest zwracana wartość parametru {{Code|nic}} lub ciąg pusty. ; Inne parametry{{dk}} * Parametr {{Code|po kolei}} {{Patrz|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|zaznacz}} {{Patrz|zaznacz}} - liczby oddzielone średnikami, które przy parametrach nazwanych o pewnych numerach i numerkach nie mają być uwzględnione przy niepustym parametrze {{Code|po kolei}} {{LinkPatrz|po kolei}}, a przy jego przeciwnej wartości za to mają być użyte. * 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}} {{Patrz|_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 wikikodami, wtedy ta funkcja używa do tego liczenia{{dk}} * Jest to funkcja {{LinkŚródtytuł|BudowaSzereguZDanych}}. * Wywołanie funkcji jest takie: {{Pre|lancuch_znakow {{=}} BudowaSzereguZDanych(frame,tab_lancuch,minimum or 0,maksimum);}} ; Parametry funkcji {{LinkŚródtytuł|BudowaSzereguZDanych}}. * One są wraz z jego parametrami podane w postaci jego parametrów ramki {{Code|frame}}, które jednocześnie są parametrami {{LinkŚródtytuł|p.Powtarzaj}}, używa się je 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ą {{LzLua|frame:preprocess}}, i jest zwracany jako wartość omawianej funkcji. ; Przykłady{{dk}} * Funkcja jest używana np. w silnikach szablonów, np.: {{s|Osobny artykuł/silnik}} szablonu {{s|Osobny artykuł}}, jak i do niego 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}}. === {{Śródtytuł|p.PowtarzajOdDo}}{{Code|p.PowtarzajOdDo}} === Funkcja służy do iteracji, od jakieś liczby do jakieś innej, podanego wikikodu dla danego kroku {{Code|1}}, iterując to, co krok określony zmienną: {{Code|krok}}. * 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ę{{dk}} {{nobold|{{Code|{{m|Ramka|Rozwiń}}}}}}, lub go rozwija na końcu, na podstawie kolejnych kroków iteracji{{dk}} * {{Code|start}} - początek iteracji dokonywany przez ta funkcję, * {{Code|koniec}} - koniec iteracji dokonywany przez ta funkcję, * {{Code|krok}} - krok iteracji, co który numer 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{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}} * {{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ą{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}} * {{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{{dk}} {{nobold|{{s|Chem/silnik}}}}, w tym nadrzędnym{{dk}} {{nobold|{{s|Chem}}}}, przykłady jego działania{{dk}} * {{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. === {{Śródtytuł|p["PrzetwarzajIterującCiąg"]}}{{Code|p["PrzetwarzajIterującCiąg"]}} === Funkcja do iteracji wikikodu po parametrach oddzielonych średniami w parametrze ramki {{Code|cią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{{dk}} * {{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{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}} * {{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ą{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}} * {{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>}} jest kolejny parametr, oddzielonych od pozastałych średniami, z: {{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}}: {{LzLua|frame:preprocess}}, jeśli: {{Code|nie rozwiń}}, nie przybiera wartości niepustej. === {{Śródtytuł|p["PowtarzajWedług"]}}{{Code|p["PowtarzajWedług"]}} === Funkcja wyszukująca elementy według wzoru począwszy od numeru, określonego przez {{Code|start}}, aż do zakończenia danych kolenych sprawdzania od tej liczby, czy taka strona istnieje, numerek jest określony przez pewien wikikod, określony przez {{Code|<nowiki>{{_}}</nowiki>}}, którymusi być podany we wzorze {{Code|wzor}}. Ona w ten sposób dla istniejących stron ustawia pewne łańcuchy, które są łączone znakami {{Code|", "}}, a na końcu samym {{Code|" i "}}. 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 strony{{dk}} {{nobold|„{{Ns:Template}}{{dk}}Polecane książki/”}}, a oto przykład{{dk}}{{nobold|{{Parametr|wzór|{{Ns:Template}}{{dk}}Polecane książki/{{((}}_{{))}}}}}}{{dk}} * {{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}}}} == {{Śródtytuł|p["LiczbaPrawychUkośników"]}}{{Code|p["LiczbaPrawychUkośników"]}} == Funkcja liczy, ile jest prawych ukośników w adresie strony podany jako pierwszy parametr ramki. * 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. ; Parametry fubkcji{{dk}} * {{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}}}} == {{Śródtytuł|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}}{{Code|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}} == Funkcja liczy maksymalny numer kolejnej strony liczonej według wzoru {{Code|wzor}}, musi być we wzorze podany element {{Code|<nowiki>{{_}}</nowiki>}}, aby mógł to robić. * 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/”, czyli dla stron o ogólnym wzorze: {{Parametr|wzór|{{Ns:Template}}:Polecane książki/{{((}}_{{))}}}}. ; Parametry funkcji{{dk}} * {{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 == === {{Śródtytuł|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}}{{Code|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}} === Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy minimalny numer takich zmiennych. * 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*)}}. ; Parametry funkcji{{dk}} * {{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}}}} === {{Śródtytuł|p.IleJestTakichOdpowiednikowychZmiennych}}{{Code|p.IleJestTakichOdpowiednikowychZmiennych}} === Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy ile jest takich zmiennych. * 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. ; Parametry funkcji{{dk}} * {{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}}}} == {{Śródtytuł|p["Parametr w tablicy nazw"]}}{{Code|p["Parametr w tablicy nazw"]}} == Funkcja bada, czy jest taki parametr {{Code|pozycja}} w tablicy nazw określonej zmienną {{Code|parametry}}, której elementy są oddzielone średnikami. * 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. ; Parametry funkcji{{dk}} * {{Code|parametry}} - lista parametrów oddzielonych średnikiem, * {{Code|pozycja}} - szukana lista w tablicy parametrów, * {{Code|od dużej}} - czy parametr: {{Code|pozycja}}, i elementy listy: {{Code|parametry}}, 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}}, a to ostatnie jest to wartość języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, która po transformacji na wikikod jest zamieniana na ciąg pusty, więc ona nadaje się do instrukcji warunkowych. === 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> 9rftf4jjp6fj0kexbya8shkfk22c5vk 553405 553404 2026-08-29T20:36:05Z Persino 2851 /* Funkcje książkowe */ 553405 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. Funkcje, w tym module, uruchamia się tylko w ramce w szablonie, bo są tylko do tego przygotowane. One służą do powtarzania parametrów rodzica, czy przodka, iteracji pojedynczego kroku wikikodu, jakiś sprawdzeń, do liczenia odpowiedników i związanych z tym parametrami, itp.. == Funcje lokalne modułu == === {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} === Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, tylko w module {{Code|{{ld2|Ramka}}}}, szablonów, modułów i parserów w ramce. Uruchamiana jest przez funkcje: {{LinkŚródtytuł|p.Szablon}} - funkcja do uruchamiania szablonów, {{LinkŚródtytuł|p["Moduł"]}} - funkcja do uruchamiania modułów, i {{LinkŚródtytuł|p.Parser}} - funkcja do uruchamiania parserów. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ParserBlokowy(frame, co_ma_wywolac)...end; </syntaxhighlight> ; Parametry funkcji{{dk}} * {{Code|frame}} {{Patrz|frame}} - funkcja ramkki funkcji tablica transportu modułu, * {{Code|co_ma_wywolac}} {{Patrz|co_ma_wywolac}} - ten parametr przyjmuje wartość liczbową, która jeżeli {{Tt|0}} - to uruchamiany jest szablon, jeżeli {{Tt|1}} - moduł, jeżeli {{Code|2}} - to parser, jeżeli on ma inne wartości, tzn.: {{Tt|2}}, a {{Tt|3}} i dalej, to już dany szablon. ; Parametry ramki funkcji tablicy transportu modułu{{dk}} * Parametry podstawowe: ** {{Code|Nazwa}} {{Patrz|Nazwa}} - jest to pełna nazwa szablonu, modułu, czy parsera, ** {{Code|bez argumentów rodzica}} {{Patrz|bez argumentów rodzica}} - tablica parametrów oddzielonych średnikami, których obiekt uruchamiany nie może przyjmować, nawet jeżeli one są, ** {{Code|nazwa szablonu rodzica}} {{Patrz|nazwa szablonu rodzica}} - jest to zmienna przechowująca nazwę szablonu rodzica ramki dziecka,a nawet któreś z jego przodków, ** {{Code|bez argumentów nienazwanych rodzica}} {{Patrz|bez argumentów nienazwanych rodzica}} - szablon w ramce nie przyjmuje parametrów nienazwanych, określonych liczbą, podanych w rodzicu ramki, ** {{Code|potomek}} {{Patrz|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}} {{Patrz|nie potomek}} - zmienna mówiąca, że to nie jest potomek szablonu, używana, gdy nie jest określona zmienna ramki {{LinkPatrz|zmienna z parametrami rodzica}}, wtedy taka ramka jest traktowana jak normalna ramka, której jedynie trzeba przekazać parametry rodzica, nie przodka, wtedy do niej nie są przekazywane parametry: {{LinkPatrz|parametry rodzica}} (ta zmienna jest wtedy ustawiana, gdy nie jest niepusty parametr {{LinkPatrz|bez dodatkowych sprawdzeń}}), {{LinkPatrz|bez argumentów szablonu}}, i {{LinkPatrz|nazwa szablonu rodzica}} (jeśli ta wartość rodzica nie istnieje, to nadawana jest jej aktualna nazwa szablonu rodzica, a nie przodka, normalnie jest to przodka, a w szczególności rodzica) i {{LinkPatrz|potomek}} (ustawiany na stałą wartość niepustą), ** {{Code|bez argumentów szablonu}} {{Patrz|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ń}} {{Patrz|bez dodatkowych sprawdzeń}} - nie jest uruchamiana walidacja parametrów szablonu rodzica, ** {{Code|parametry rodzica}} {{Patrz|parametry rodzica}} - zmienna przedstawiająca parametry rodzica, czy któreś ze przodków, przekazane do ramki: {{m|Sprawdź|Parametry}} - dodane przez tę funkcję, ** {{Code|zmienna z parametrami rodzica}} {{Patrz|zmienna z parametrami rodzica}} - parametr mówiący, czy ma tworzyć zmienne z parametrami rodzica {{LinkPatrz|parametry rodzica}}, a jeżeli nie jest on, z zadnych z jego potomków podany, to zmienna {{LinkPatrz|parametry rodzica}} jest przekazywana na kolejnego przodka, ** {{Code|zmienna z argumentami ramki}} {{Patrz|zmienna z argumentami ramki}} - zmienna mówiąca, czy mają być tworzone parametry ramki, które nie są sprawdzane 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}} {{Patrz|zmienna z nazwą szablonu rodzica}} - parametr, czy ma tworzyć zmienną: {{LinkPatrz|nazwa szablonu rodzica}}, ** {{Code|parametry funkcji modułu pudełek}} {{Patrz|parametry funkcji modułu pudełek}} - czy do funkcji mają wchodzić parametry modułu pudełek, które są ponumerowane dodatkowym numerkiem, ** {{Code|parametry podstawowe funkcji modułu pudełek}} {{Patrz|parametry podstawowe funkcji modułu pudełek}} - czy do funkcji mają wchodzić podstawowe parametry funkcji modułu pudełek, te które nie mają dodatkowego numerka, ** {{Code|usuń z parametrów ramki}} {{Patrz|usuń z parametrów ramki}} - parametry ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, przedstawiający zmienne oddzielone średnikami, które nie mają być uwzględnione przy uruchamianiu danego obiektu. * {{Code|Funkcja}} {{Patrz|Funkcja}} - nazwa funkcji w module, który ma wywołać w ramce ta funkcja, w przypadku, gdy parametr {{LinkPatrz|co_ma_wywolac}} ma wartość {{Tt|1}}, czyli wywołujemy funkcję {{LinkŚródtytuł|p["Moduł"]}}. Funkcja uruchamia szablon, moduł, czy ramkę, w zależności od drugiego parametru funkcji, z parametrami rodzica ramki bez parametrów opisanych zmienną: {{LinkPatrz|bez argumentów szablonu}}, i bez parametrów wskazanych przez zmienną: {{Code|usuń z parametrów ramki}}. Za pomocą tej funkcji możemy wielopoziomowo wywoływać funkcje przekazując parametry od najwyższego poziomu do najniższego. Ta funkcja służy przede wszystkim 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 do uruchamiania szablonów, a uruchamianie funkcji modułu, w tym funkcji {{m|Cytuj|custom}} w szablonie {{s|PrzypisStrona}}. Przykładem wywołania szablonu, która jest w szablonie: {{s|Wzór}}, w którym jest wywoływany inny szablon, tym razem silnik, tzn. {{s|Wzór/silnik}}: <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> === {{Śródtytuł|BudowaSzereguZDanych}}{{Code|BudowaSzereguZDanych}} === Funkcja do uruchamiania się 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> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tab_lancuch}} {{Patrz|tab_lancuch}} - pewna tablica transportu funkcji. * Zmienne do mikroszablonów: ** {{Code|minimum}} {{Patrz|minimum}} - liczba mówiąca o minimum, ** {{Code|maksimum}} {{Patrz|maksimum}} - liczba mówiąca o maksimum. Parametry ramki funkcji tablicy transportu modułu: * {{Code|akapit}} {{Patrz|akapit}} - jeśli niepusta, to ona definiuje akapit ze znaków {{Code|\n\n}}, przeciwnym wypadku elementy łańcucha nie są łączone w akapity, * {{Code|przecinek}} {{Patrz|przecinek}} - jeśli niepuste, to mówi, że pomiędzy elementami powiniem być przecinek: {{Code|", "}}, został on specjalnie objęty w cudzysłowy, aby zilustrować, że po przecinku znajduje się spacja, * {{Code|nowa linia}} {{Patrz|nowa linia}} - w przeciwieństwo do zmiennej {{LinkPatrz|akapit}}, używany zamiast niej, pisze jedną nową linię, a nie dwie, jako: {{Code|\n}}, * {{Code|wyliczanka}} {{Patrz|wyliczanka}} - wylicza elementy z przecinkami, stawiając przed ostatnim elementem zamiast jego wyraz wyliczania {{Code|i}}, * {{Code|początek}} {{Patrz|początek}} - mówi, że na początku musi znajdować się przecinek, * {{Code|myślnik}} {{Patrz|myślnik}} - mówi, że jeśli nie ma początku przecinka, to stawiany jest myślnik, używany zamiast {{LinkPatrz|początek}}, * {{Code|warunkowe}} {{Patrz|warunkowe}} - instrukcje wikikodu, takie jak: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}, zostaną w kodzie rozwinięte, a później ciągłe właściwe elementy wikikodu otoczone dwoma dolnymi myślnikami zostaną rozwinięte do pewnej postaci, funkcja używa do tego {{LinkŚródtytuł|p.InstrukcjeWarunkowe}}, ** {{Code|parametr}} {{Patrz|parametr}} - używany w towarzystwie z {{LinkPatrz|warunkowe}}, mówiący że, derektywy znakowe ciągłe otoczone dwoma dolnymi myślnikami, zostaną zastąpione odpowiedmimi szablonami, w przeciwnym wypadku niepodania tej wartości lub jego pustej, wtedy te derektywy zostaną zastąpione w postaci rozwiniętej tych szablonów. ** Funkcja w tym warunku zwraca ciąg znaków rozwiniętego warunku. Funkcja posiada też mikroszablony, które są zdefiniowane w kodzie łańcuchów {{LinkPatrz|tab_lancuch}}: * {{Code|<nowiki>{{min}}</nowiki>}} - minimalna wartość szeregu zmiennych, określana przez {{LinkPatrz|minimum}}, * {{Code|<nowiki>{{max}}</nowiki>}} - a tutaj ich maksymalna, określana przez {{LinkPatrz|maksimum}}. Te dwie zmienne są podstawiane do uzyskanego ciągu. Funkcja zwraca te części rozwiniętego tekstu wikikodu, jeśli podano {{LinkPatrz|warunkowe}}, co do instrukcji warunkowych, i też te bez wewnętrznych klamerek, czyli specjalne kody, czyli te otoczone z dwóch stron dolnumi myślnikami, a pozostałe część tak uzyskana jest za to nierozwinięta. == {{Śródtytuł|p.InstrukcjeWarunkowe}}{{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}} {{Patrz|ciag}} - podany ciąg do rozwinięcia z instrukcji warunkowych wewnątrz nie posiadający klamerek, * {{Code|derektywy_specjalne}} {{Patrz|derektywy_specjalne}} - używa do zastępowania specjalnych derektyw, podane po prawej stronie w ramce pływającej, * {{Code|derektywy_parametrowe}} {{Patrz|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: {{LinkŚródtytuł|BudowaSzereguZDanych}}, poprzez: {{LinkŚródtytuł|p.Powtarzaj}}. 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 == === {{Śródtytuł|p.RozpakujArgumenty}}{{Code|p.RozpakujArgumenty}} === Ta funkcja jest do rozpakowywania zmiennych z podanego parametru, których zmienne są oddzieloe średnikami. * Funkcja uruchamia się 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. === {{Śródtytuł|p.PakujParametry}}{{Code|p.PakujParametry}} === Ta funkcja jest do pakowania tablicy, języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w tablicę {{lpg|JSON}}. * Funkcja się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Funkcja pakuje parametry tablicy {{lpg|Lua}} do tablicy: {{lpg|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> Parametry funkcji: * {{Code|args}} {{Patrz|args}} - tablica {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Ten szablon nazywa parametry, jakby nienazwane w tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera) z tablicy {{lpg|Lua}} (tutaj od jedynki), do tablicy nazwanej, jak to robi się w {{lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonEncode}}, z drugim parametrem: {{Code|mw.text.JSON_PRESERVE_KEYS}} {{Patrz|mw.text.JSON_PRESERVE_KEYS}}. === {{Śródtytuł|p.RozpakujParametry}}{{Code|p.RozpakujParametry}} === Ta funkcja jest do rozpakowywania tablicy {{lpg|JSON}} w tablicę języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}} * 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 w niej zwracany. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.RozpakujParametry = function (zmienna_z_parametrami) return mw.text.jsonDecode(zmienna_z_parametrami,mw.text.JSON_PRESERVE_KEYS); end; </syntaxhighlight> Parametry funkcji: * {{Code|zmienna_z_parametrami}} {{Patrz|zmienna_z_parametrami}} - tablica {{lpg|JSON}}. Ten szablon nazywa parametry nienazwane w tablicy {{lpg|Lua}} (tutaj od jedynki) z tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera), do tablicy nienazwanej z nazwanej, jak to robi się w {{Lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonDecode}}, z użyciem drugiego parametru: {{LinkPatrz|mw.text.JSON_PRESERVE_KEYS}}. == {{Śródtytuł|p["Rozwiń"]}}{{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> Parameetry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon rozwija wikikod podany w zmiennej {{Code|1}}, w parametrach szablonu rodzica. * 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}}: <syntaxhighlight lang="lua"> p["Rozwiń"] = function(frame) return frame:getParent():preprocess(frame.args[1]); end; </syntaxhighlight> == {{Śródtytuł|p.Log}}{{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> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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}}: <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 == === {{Śródtytuł|p.Szablon}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p.Szablon = function(frame) return ParserBlokowy(frame,0); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Szablon|Nazwa=<nazwa szablonu>|...}} </syntaxhighlight> === {{Śródtytuł|p["Moduł"]}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p["Moduł"] = function(frame) return ParserBlokowy(frame,1); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Moduł|Nazwa=<nazwa modułu>|Funkcja=<nazwa funkcji>|...}} </syntaxhighlight> === {{Śródtytuł|p.Parser}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p.Parser = function(frame) return ParserBlokowy(frame,2); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Parser|Nazwa=<nazwa parsera>|...}} </syntaxhighlight> == Funkcje książkowe == === {{Śródtytuł|p.Q}}{{Code|p.Q}} === Funkcja uruchamiana we wnętrzu szablonu {{s|N}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on. * Jego specjalne odpowiedniki to {{s|T}} i {{s|T2}}. Funkcja uruchamia szablon o podanej nazwie w pierwszym parametrze z dodanym przedrostkiem {{Code|Książka:}} przed nazwą szablonu. * Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.Q =function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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ą (parametry nazwane, które są wliczane 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}}}} === {{Śródtytuł|p.N}}{{Code|p.N}} === Funkcja uruchamiana we wnętrzu szablonu {{s|N}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on. Funkcja przed nazwą szablonu, czy modułu, zostawia w wpis w postaci przedrostka {{Code|Książka:}}. Czy zostanie dodana przed tym nazwa przestrzeni nazw, to zależy od niepodania niepustej zmiennej {{Parametr|n}}, a zmienna {{Parametr|p|1}} - to przed nim jest dodawana przestrzeń nazw szablonu {{Np|Template|link=tak}}, {{Parametr|p|2}} - modułu {{Np|Module|link=tak}} i {{Parametr|p|3}} - kategorii. * Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.N=function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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}}}} === {{Śródtytuł|p.A}}{{Code|p.A}} === Funkcja uruchamiana we wnętrzu szablonu {{s|A}}, która przyjmuje jego parametry, i tak samo działa, jak on. Funkcja usuwa przedrostek {{Code|Książka:}} w nazwie szablonu, czy modułu. Gdy jest podany parametr: {{Parametr|p|tak}}, to dla przestrzeni niebędących: {{Np|Template|link=tak}}, {{Np|Module|link=tak}} i {{Np|Category|link=tak}}, jest zwracany wtedy przez nią parametr pierwszy funkcji. Dla tych wartości właśnie wyliczonych przestrzeni usuwany jest przedrostek {{Code|Książka:}}. Funkcja generuje nazwę z prestrzenią nazw. * Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.A=function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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 == === {{Śródtytuł|p.Powtarzaj}}{{Code|p.Powtarzaj}} === Funkcja służy do powtarzalnego generowania wikikodu ze składników jego kroku przy pomocy określonych zmiennych rodzica. * Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.Powtarzaj = function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Funkcja może przyjmować tylko parametry nienazwane albo tylko nazwane, albo nienazwane i nazwane (gdy jest ustawiony parametr {{Code|różne}} {{Patrz|różne}}). 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}} {{LinkPatrz|różne}}, która wtedy ma wskazywać na wartość niepustą. ; Najważniejsze parametry, które są to opcjonalne, to są{{dk}} * {{Code|start}} {{Patrz|start}} - liczba, która wskazuje początek liczenia - domyślna wartość to {{Code|1}}, * {{Code|koniec}} {{Patrz|koniec}} - liczba, która wskazuje koniec liczenia. ; Numer końca liczenia parametrów nienazwanych lub nazwanych, czy nazwanychi nienazwanych{{dk}} * Elementy w {{Code|parametry}} {{Patrz|parametry}} mogą modyfikować odpowiednio parametry: {{Code|start}} {{LinkPatrz|start}} i {{Code|koniec}} {{LinkPatrz|koniec}}. * Ze zmiennej {{LinkPatrz|parametry}} jest liczona odpowiednia zmienna {{LinkPatrz|tabela}} dopuzczalnych zmiennych do liczenia. * Funkcja {{Code|Wylicz_skoncz_na_koncu}},którego algorytm podomy w tej poyzcji, tzn. koniec liczenia parametrów nienazwanych musi być policzony, jeżeli nie ma parametrów nazwanych w tabeli {{Code|tabela}} {{Patrz|tabela}}. A przeciwnie, jeżeli nie jest ustawiony parametr {{Code|różne}} {{LinkPatrz|różne}} nie na wartość niepustą, wtedy jest liczony parametr maksimum parametrów nazwanych, przeciwnie wtedy liczy się parametr maksimum numeracyjne parametrów numerowanych, czyli zmienną: {{Code|maksimum numeracyjne}} {{Patrz|maksimum numeracyjne}}, jeśli on ma wartość niepustą, wtedy liczy się maksimum parametrów nienazwanych, a jeżeli ona ma przeciwną wartość, to się liczy maksimum parametrów nazwanych, jak nienazwanych. Na podstawie tego mamy policzony odpowiednio taki koniec liczenia modyfikacji zwracany i policzony przez tą funkcję. ; Parametr {{Code|dodatkowe}}{{dk}} * To maksimum parametrów nazwanych, dla jakieś podstawy parametrów, są pomijane parametry z: {{Code|dodatkowe}}, która jest zestawem podstaw parametrów oddzielonych średnikami, jest właśnie podany ten parametr w nim. Przykładem jego jest: * {{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. ; Format parametru {{Parametr|parametry}}{{dk}} * 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 równa liczbie {{Code|5}}, oddzielonych średnikami. ; Opis parametru {{Parametr|parametry}}{{dk}} 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 w wartościach: {{Code|zmienna 1>}}, {{Code|<zmienna 2>}} i {{Code|<zmienna 3>}}, w których są pewne nazwy bazowe parametrów bez numerka na jej końcu, w zmiennej {{Code|parametry}} można nie podawać dalszych elementów 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ć nawet tego znaku,gdy nic nie ma po równa się) dla danego problemu funkcji. ; Wikikod pojedynczego kroku liczenia całości wygenerowanego wikikodu dla wszystkich zmiennych{{dk}} * 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)}}. ; Parametr {{Parametr|start}}, wartość początkowa{{dk}} * Gdy parametr {{Code|tonumber(frame.args["start"]) or 1}}, jest równy zero, funkcja zwraca błąd: {{Code|(początek jest ustawiony na zero)}}. ; Brak parametrów szablonu{{dk}} * 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. ; Parametr {{Parametr|nic}}{{dk}} * Gdy {{Code|nic}} przyjmuje wartość, i gdy pomijamy parametr, lub on przyjmuje wartość pustą, wtedy a funkcja nie może wygenerować żadnego kroku iteracji, to wtedy jest zwracana wartość parametru {{Code|nic}} lub ciąg pusty. ; Inne parametry{{dk}} * Parametr {{Code|po kolei}} {{Patrz|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|zaznacz}} {{Patrz|zaznacz}} - liczby oddzielone średnikami, które przy parametrach nazwanych o pewnych numerach i numerkach nie mają być uwzględnione przy niepustym parametrze {{Code|po kolei}} {{LinkPatrz|po kolei}}, a przy jego przeciwnej wartości za to mają być użyte. * 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}} {{Patrz|_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 wikikodami, wtedy ta funkcja używa do tego liczenia{{dk}} * Jest to funkcja {{LinkŚródtytuł|BudowaSzereguZDanych}}. * Wywołanie funkcji jest takie: {{Pre|lancuch_znakow {{=}} BudowaSzereguZDanych(frame,tab_lancuch,minimum or 0,maksimum);}} ; Parametry funkcji {{LinkŚródtytuł|BudowaSzereguZDanych}}. * One są wraz z jego parametrami podane w postaci jego parametrów ramki {{Code|frame}}, które jednocześnie są parametrami {{LinkŚródtytuł|p.Powtarzaj}}, używa się je 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ą {{LzLua|frame:preprocess}}, i jest zwracany jako wartość omawianej funkcji. ; Przykłady{{dk}} * Funkcja jest używana np. w silnikach szablonów, np.: {{s|Osobny artykuł/silnik}} szablonu {{s|Osobny artykuł}}, jak i do niego 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}}. === {{Śródtytuł|p.PowtarzajOdDo}}{{Code|p.PowtarzajOdDo}} === Funkcja służy do iteracji, od jakieś liczby do jakieś innej, podanego wikikodu dla danego kroku {{Code|1}}, iterując to, co krok określony zmienną: {{Code|krok}}. * 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ę{{dk}} {{nobold|{{Code|{{m|Ramka|Rozwiń}}}}}}, lub go rozwija na końcu, na podstawie kolejnych kroków iteracji{{dk}} * {{Code|start}} - początek iteracji dokonywany przez ta funkcję, * {{Code|koniec}} - koniec iteracji dokonywany przez ta funkcję, * {{Code|krok}} - krok iteracji, co który numer 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{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}} * {{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ą{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}} * {{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{{dk}} {{nobold|{{s|Chem/silnik}}}}, w tym nadrzędnym{{dk}} {{nobold|{{s|Chem}}}}, przykłady jego działania{{dk}} * {{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. === {{Śródtytuł|p["PrzetwarzajIterującCiąg"]}}{{Code|p["PrzetwarzajIterującCiąg"]}} === Funkcja do iteracji wikikodu po parametrach oddzielonych średniami w parametrze ramki {{Code|cią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{{dk}} * {{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{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}} * {{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ą{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}} * {{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>}} jest kolejny parametr, oddzielonych od pozastałych średniami, z: {{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}}: {{LzLua|frame:preprocess}}, jeśli: {{Code|nie rozwiń}}, nie przybiera wartości niepustej. === {{Śródtytuł|p["PowtarzajWedług"]}}{{Code|p["PowtarzajWedług"]}} === Funkcja wyszukująca elementy według wzoru począwszy od numeru, określonego przez {{Code|start}}, aż do zakończenia danych kolenych sprawdzania od tej liczby, czy taka strona istnieje, numerek jest określony przez pewien wikikod, określony przez {{Code|<nowiki>{{_}}</nowiki>}}, którymusi być podany we wzorze {{Code|wzor}}. Ona w ten sposób dla istniejących stron ustawia pewne łańcuchy, które są łączone znakami {{Code|", "}}, a na końcu samym {{Code|" i "}}. 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 strony{{dk}} {{nobold|„{{Ns:Template}}{{dk}}Polecane książki/”}}, a oto przykład{{dk}}{{nobold|{{Parametr|wzór|{{Ns:Template}}{{dk}}Polecane książki/{{((}}_{{))}}}}}}{{dk}} * {{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}}}} == {{Śródtytuł|p["LiczbaPrawychUkośników"]}}{{Code|p["LiczbaPrawychUkośników"]}} == Funkcja liczy, ile jest prawych ukośników w adresie strony podany jako pierwszy parametr ramki. * 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. ; Parametry fubkcji{{dk}} * {{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}}}} == {{Śródtytuł|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}}{{Code|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}} == Funkcja liczy maksymalny numer kolejnej strony liczonej według wzoru {{Code|wzor}}, musi być we wzorze podany element {{Code|<nowiki>{{_}}</nowiki>}}, aby mógł to robić. * 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/”, czyli dla stron o ogólnym wzorze: {{Parametr|wzór|{{Ns:Template}}:Polecane książki/{{((}}_{{))}}}}. ; Parametry funkcji{{dk}} * {{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 == === {{Śródtytuł|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}}{{Code|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}} === Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy minimalny numer takich zmiennych. * 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*)}}. ; Parametry funkcji{{dk}} * {{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}}}} === {{Śródtytuł|p.IleJestTakichOdpowiednikowychZmiennych}}{{Code|p.IleJestTakichOdpowiednikowychZmiennych}} === Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy ile jest takich zmiennych. * 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. ; Parametry funkcji{{dk}} * {{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}}}} == {{Śródtytuł|p["Parametr w tablicy nazw"]}}{{Code|p["Parametr w tablicy nazw"]}} == Funkcja bada, czy jest taki parametr {{Code|pozycja}} w tablicy nazw określonej zmienną {{Code|parametry}}, której elementy są oddzielone średnikami. * 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. ; Parametry funkcji{{dk}} * {{Code|parametry}} - lista parametrów oddzielonych średnikiem, * {{Code|pozycja}} - szukana lista w tablicy parametrów, * {{Code|od dużej}} - czy parametr: {{Code|pozycja}}, i elementy listy: {{Code|parametry}}, 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}}, a to ostatnie jest to wartość języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, która po transformacji na wikikod jest zamieniana na ciąg pusty, więc ona nadaje się do instrukcji warunkowych. === 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> 9fhchgknjs57koptxgrv2c4wlfjc3cj 553406 553405 2026-08-29T20:37:42Z Persino 2851 /* {{Śródtytuł|p.Q}}{{Code|p.Q}} */ 553406 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. Funkcje, w tym module, uruchamia się tylko w ramce w szablonie, bo są tylko do tego przygotowane. One służą do powtarzania parametrów rodzica, czy przodka, iteracji pojedynczego kroku wikikodu, jakiś sprawdzeń, do liczenia odpowiedników i związanych z tym parametrami, itp.. == Funcje lokalne modułu == === {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} === Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, tylko w module {{Code|{{ld2|Ramka}}}}, szablonów, modułów i parserów w ramce. Uruchamiana jest przez funkcje: {{LinkŚródtytuł|p.Szablon}} - funkcja do uruchamiania szablonów, {{LinkŚródtytuł|p["Moduł"]}} - funkcja do uruchamiania modułów, i {{LinkŚródtytuł|p.Parser}} - funkcja do uruchamiania parserów. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ParserBlokowy(frame, co_ma_wywolac)...end; </syntaxhighlight> ; Parametry funkcji{{dk}} * {{Code|frame}} {{Patrz|frame}} - funkcja ramkki funkcji tablica transportu modułu, * {{Code|co_ma_wywolac}} {{Patrz|co_ma_wywolac}} - ten parametr przyjmuje wartość liczbową, która jeżeli {{Tt|0}} - to uruchamiany jest szablon, jeżeli {{Tt|1}} - moduł, jeżeli {{Code|2}} - to parser, jeżeli on ma inne wartości, tzn.: {{Tt|2}}, a {{Tt|3}} i dalej, to już dany szablon. ; Parametry ramki funkcji tablicy transportu modułu{{dk}} * Parametry podstawowe: ** {{Code|Nazwa}} {{Patrz|Nazwa}} - jest to pełna nazwa szablonu, modułu, czy parsera, ** {{Code|bez argumentów rodzica}} {{Patrz|bez argumentów rodzica}} - tablica parametrów oddzielonych średnikami, których obiekt uruchamiany nie może przyjmować, nawet jeżeli one są, ** {{Code|nazwa szablonu rodzica}} {{Patrz|nazwa szablonu rodzica}} - jest to zmienna przechowująca nazwę szablonu rodzica ramki dziecka,a nawet któreś z jego przodków, ** {{Code|bez argumentów nienazwanych rodzica}} {{Patrz|bez argumentów nienazwanych rodzica}} - szablon w ramce nie przyjmuje parametrów nienazwanych, określonych liczbą, podanych w rodzicu ramki, ** {{Code|potomek}} {{Patrz|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}} {{Patrz|nie potomek}} - zmienna mówiąca, że to nie jest potomek szablonu, używana, gdy nie jest określona zmienna ramki {{LinkPatrz|zmienna z parametrami rodzica}}, wtedy taka ramka jest traktowana jak normalna ramka, której jedynie trzeba przekazać parametry rodzica, nie przodka, wtedy do niej nie są przekazywane parametry: {{LinkPatrz|parametry rodzica}} (ta zmienna jest wtedy ustawiana, gdy nie jest niepusty parametr {{LinkPatrz|bez dodatkowych sprawdzeń}}), {{LinkPatrz|bez argumentów szablonu}}, i {{LinkPatrz|nazwa szablonu rodzica}} (jeśli ta wartość rodzica nie istnieje, to nadawana jest jej aktualna nazwa szablonu rodzica, a nie przodka, normalnie jest to przodka, a w szczególności rodzica) i {{LinkPatrz|potomek}} (ustawiany na stałą wartość niepustą), ** {{Code|bez argumentów szablonu}} {{Patrz|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ń}} {{Patrz|bez dodatkowych sprawdzeń}} - nie jest uruchamiana walidacja parametrów szablonu rodzica, ** {{Code|parametry rodzica}} {{Patrz|parametry rodzica}} - zmienna przedstawiająca parametry rodzica, czy któreś ze przodków, przekazane do ramki: {{m|Sprawdź|Parametry}} - dodane przez tę funkcję, ** {{Code|zmienna z parametrami rodzica}} {{Patrz|zmienna z parametrami rodzica}} - parametr mówiący, czy ma tworzyć zmienne z parametrami rodzica {{LinkPatrz|parametry rodzica}}, a jeżeli nie jest on, z zadnych z jego potomków podany, to zmienna {{LinkPatrz|parametry rodzica}} jest przekazywana na kolejnego przodka, ** {{Code|zmienna z argumentami ramki}} {{Patrz|zmienna z argumentami ramki}} - zmienna mówiąca, czy mają być tworzone parametry ramki, które nie są sprawdzane 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}} {{Patrz|zmienna z nazwą szablonu rodzica}} - parametr, czy ma tworzyć zmienną: {{LinkPatrz|nazwa szablonu rodzica}}, ** {{Code|parametry funkcji modułu pudełek}} {{Patrz|parametry funkcji modułu pudełek}} - czy do funkcji mają wchodzić parametry modułu pudełek, które są ponumerowane dodatkowym numerkiem, ** {{Code|parametry podstawowe funkcji modułu pudełek}} {{Patrz|parametry podstawowe funkcji modułu pudełek}} - czy do funkcji mają wchodzić podstawowe parametry funkcji modułu pudełek, te które nie mają dodatkowego numerka, ** {{Code|usuń z parametrów ramki}} {{Patrz|usuń z parametrów ramki}} - parametry ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, przedstawiający zmienne oddzielone średnikami, które nie mają być uwzględnione przy uruchamianiu danego obiektu. * {{Code|Funkcja}} {{Patrz|Funkcja}} - nazwa funkcji w module, który ma wywołać w ramce ta funkcja, w przypadku, gdy parametr {{LinkPatrz|co_ma_wywolac}} ma wartość {{Tt|1}}, czyli wywołujemy funkcję {{LinkŚródtytuł|p["Moduł"]}}. Funkcja uruchamia szablon, moduł, czy ramkę, w zależności od drugiego parametru funkcji, z parametrami rodzica ramki bez parametrów opisanych zmienną: {{LinkPatrz|bez argumentów szablonu}}, i bez parametrów wskazanych przez zmienną: {{Code|usuń z parametrów ramki}}. Za pomocą tej funkcji możemy wielopoziomowo wywoływać funkcje przekazując parametry od najwyższego poziomu do najniższego. Ta funkcja służy przede wszystkim 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 do uruchamiania szablonów, a uruchamianie funkcji modułu, w tym funkcji {{m|Cytuj|custom}} w szablonie {{s|PrzypisStrona}}. Przykładem wywołania szablonu, która jest w szablonie: {{s|Wzór}}, w którym jest wywoływany inny szablon, tym razem silnik, tzn. {{s|Wzór/silnik}}: <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> === {{Śródtytuł|BudowaSzereguZDanych}}{{Code|BudowaSzereguZDanych}} === Funkcja do uruchamiania się 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> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tab_lancuch}} {{Patrz|tab_lancuch}} - pewna tablica transportu funkcji. * Zmienne do mikroszablonów: ** {{Code|minimum}} {{Patrz|minimum}} - liczba mówiąca o minimum, ** {{Code|maksimum}} {{Patrz|maksimum}} - liczba mówiąca o maksimum. Parametry ramki funkcji tablicy transportu modułu: * {{Code|akapit}} {{Patrz|akapit}} - jeśli niepusta, to ona definiuje akapit ze znaków {{Code|\n\n}}, przeciwnym wypadku elementy łańcucha nie są łączone w akapity, * {{Code|przecinek}} {{Patrz|przecinek}} - jeśli niepuste, to mówi, że pomiędzy elementami powiniem być przecinek: {{Code|", "}}, został on specjalnie objęty w cudzysłowy, aby zilustrować, że po przecinku znajduje się spacja, * {{Code|nowa linia}} {{Patrz|nowa linia}} - w przeciwieństwo do zmiennej {{LinkPatrz|akapit}}, używany zamiast niej, pisze jedną nową linię, a nie dwie, jako: {{Code|\n}}, * {{Code|wyliczanka}} {{Patrz|wyliczanka}} - wylicza elementy z przecinkami, stawiając przed ostatnim elementem zamiast jego wyraz wyliczania {{Code|i}}, * {{Code|początek}} {{Patrz|początek}} - mówi, że na początku musi znajdować się przecinek, * {{Code|myślnik}} {{Patrz|myślnik}} - mówi, że jeśli nie ma początku przecinka, to stawiany jest myślnik, używany zamiast {{LinkPatrz|początek}}, * {{Code|warunkowe}} {{Patrz|warunkowe}} - instrukcje wikikodu, takie jak: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}, zostaną w kodzie rozwinięte, a później ciągłe właściwe elementy wikikodu otoczone dwoma dolnymi myślnikami zostaną rozwinięte do pewnej postaci, funkcja używa do tego {{LinkŚródtytuł|p.InstrukcjeWarunkowe}}, ** {{Code|parametr}} {{Patrz|parametr}} - używany w towarzystwie z {{LinkPatrz|warunkowe}}, mówiący że, derektywy znakowe ciągłe otoczone dwoma dolnymi myślnikami, zostaną zastąpione odpowiedmimi szablonami, w przeciwnym wypadku niepodania tej wartości lub jego pustej, wtedy te derektywy zostaną zastąpione w postaci rozwiniętej tych szablonów. ** Funkcja w tym warunku zwraca ciąg znaków rozwiniętego warunku. Funkcja posiada też mikroszablony, które są zdefiniowane w kodzie łańcuchów {{LinkPatrz|tab_lancuch}}: * {{Code|<nowiki>{{min}}</nowiki>}} - minimalna wartość szeregu zmiennych, określana przez {{LinkPatrz|minimum}}, * {{Code|<nowiki>{{max}}</nowiki>}} - a tutaj ich maksymalna, określana przez {{LinkPatrz|maksimum}}. Te dwie zmienne są podstawiane do uzyskanego ciągu. Funkcja zwraca te części rozwiniętego tekstu wikikodu, jeśli podano {{LinkPatrz|warunkowe}}, co do instrukcji warunkowych, i też te bez wewnętrznych klamerek, czyli specjalne kody, czyli te otoczone z dwóch stron dolnumi myślnikami, a pozostałe część tak uzyskana jest za to nierozwinięta. == {{Śródtytuł|p.InstrukcjeWarunkowe}}{{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}} {{Patrz|ciag}} - podany ciąg do rozwinięcia z instrukcji warunkowych wewnątrz nie posiadający klamerek, * {{Code|derektywy_specjalne}} {{Patrz|derektywy_specjalne}} - używa do zastępowania specjalnych derektyw, podane po prawej stronie w ramce pływającej, * {{Code|derektywy_parametrowe}} {{Patrz|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: {{LinkŚródtytuł|BudowaSzereguZDanych}}, poprzez: {{LinkŚródtytuł|p.Powtarzaj}}. 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 == === {{Śródtytuł|p.RozpakujArgumenty}}{{Code|p.RozpakujArgumenty}} === Ta funkcja jest do rozpakowywania zmiennych z podanego parametru, których zmienne są oddzieloe średnikami. * Funkcja uruchamia się 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. === {{Śródtytuł|p.PakujParametry}}{{Code|p.PakujParametry}} === Ta funkcja jest do pakowania tablicy, języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w tablicę {{lpg|JSON}}. * Funkcja się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Funkcja pakuje parametry tablicy {{lpg|Lua}} do tablicy: {{lpg|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> Parametry funkcji: * {{Code|args}} {{Patrz|args}} - tablica {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Ten szablon nazywa parametry, jakby nienazwane w tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera) z tablicy {{lpg|Lua}} (tutaj od jedynki), do tablicy nazwanej, jak to robi się w {{lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonEncode}}, z drugim parametrem: {{Code|mw.text.JSON_PRESERVE_KEYS}} {{Patrz|mw.text.JSON_PRESERVE_KEYS}}. === {{Śródtytuł|p.RozpakujParametry}}{{Code|p.RozpakujParametry}} === Ta funkcja jest do rozpakowywania tablicy {{lpg|JSON}} w tablicę języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}} * 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 w niej zwracany. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.RozpakujParametry = function (zmienna_z_parametrami) return mw.text.jsonDecode(zmienna_z_parametrami,mw.text.JSON_PRESERVE_KEYS); end; </syntaxhighlight> Parametry funkcji: * {{Code|zmienna_z_parametrami}} {{Patrz|zmienna_z_parametrami}} - tablica {{lpg|JSON}}. Ten szablon nazywa parametry nienazwane w tablicy {{lpg|Lua}} (tutaj od jedynki) z tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera), do tablicy nienazwanej z nazwanej, jak to robi się w {{Lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonDecode}}, z użyciem drugiego parametru: {{LinkPatrz|mw.text.JSON_PRESERVE_KEYS}}. == {{Śródtytuł|p["Rozwiń"]}}{{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> Parameetry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon rozwija wikikod podany w zmiennej {{Code|1}}, w parametrach szablonu rodzica. * 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}}: <syntaxhighlight lang="lua"> p["Rozwiń"] = function(frame) return frame:getParent():preprocess(frame.args[1]); end; </syntaxhighlight> == {{Śródtytuł|p.Log}}{{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> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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}}: <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 == === {{Śródtytuł|p.Szablon}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p.Szablon = function(frame) return ParserBlokowy(frame,0); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Szablon|Nazwa=<nazwa szablonu>|...}} </syntaxhighlight> === {{Śródtytuł|p["Moduł"]}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p["Moduł"] = function(frame) return ParserBlokowy(frame,1); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Moduł|Nazwa=<nazwa modułu>|Funkcja=<nazwa funkcji>|...}} </syntaxhighlight> === {{Śródtytuł|p.Parser}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p.Parser = function(frame) return ParserBlokowy(frame,2); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Parser|Nazwa=<nazwa parsera>|...}} </syntaxhighlight> == Funkcje książkowe == === {{Śródtytuł|p.Q}}{{Code|p.Q}} === Funkcja uruchamiana we wnętrzu szablonu {{s|Q}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on. * Jego specjalne odpowiedniki to {{s|T}} i {{s|T2}}. Funkcja uruchamia szablon o podanej nazwie w pierwszym parametrze z dodanym przedrostkiem {{Code|Książka:}} przed nazwą szablonu. * Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.Q =function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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ą (parametry nazwane, które są wliczane 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}}}} === {{Śródtytuł|p.N}}{{Code|p.N}} === Funkcja uruchamiana we wnętrzu szablonu {{s|N}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on. Funkcja przed nazwą szablonu, czy modułu, zostawia w wpis w postaci przedrostka {{Code|Książka:}}. Czy zostanie dodana przed tym nazwa przestrzeni nazw, to zależy od niepodania niepustej zmiennej {{Parametr|n}}, a zmienna {{Parametr|p|1}} - to przed nim jest dodawana przestrzeń nazw szablonu {{Np|Template|link=tak}}, {{Parametr|p|2}} - modułu {{Np|Module|link=tak}} i {{Parametr|p|3}} - kategorii. * Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.N=function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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}}}} === {{Śródtytuł|p.A}}{{Code|p.A}} === Funkcja uruchamiana we wnętrzu szablonu {{s|A}}, która przyjmuje jego parametry, i tak samo działa, jak on. Funkcja usuwa przedrostek {{Code|Książka:}} w nazwie szablonu, czy modułu. Gdy jest podany parametr: {{Parametr|p|tak}}, to dla przestrzeni niebędących: {{Np|Template|link=tak}}, {{Np|Module|link=tak}} i {{Np|Category|link=tak}}, jest zwracany wtedy przez nią parametr pierwszy funkcji. Dla tych wartości właśnie wyliczonych przestrzeni usuwany jest przedrostek {{Code|Książka:}}. Funkcja generuje nazwę z prestrzenią nazw. * Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.A=function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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 == === {{Śródtytuł|p.Powtarzaj}}{{Code|p.Powtarzaj}} === Funkcja służy do powtarzalnego generowania wikikodu ze składników jego kroku przy pomocy określonych zmiennych rodzica. * Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.Powtarzaj = function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Funkcja może przyjmować tylko parametry nienazwane albo tylko nazwane, albo nienazwane i nazwane (gdy jest ustawiony parametr {{Code|różne}} {{Patrz|różne}}). 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}} {{LinkPatrz|różne}}, która wtedy ma wskazywać na wartość niepustą. ; Najważniejsze parametry, które są to opcjonalne, to są{{dk}} * {{Code|start}} {{Patrz|start}} - liczba, która wskazuje początek liczenia - domyślna wartość to {{Code|1}}, * {{Code|koniec}} {{Patrz|koniec}} - liczba, która wskazuje koniec liczenia. ; Numer końca liczenia parametrów nienazwanych lub nazwanych, czy nazwanychi nienazwanych{{dk}} * Elementy w {{Code|parametry}} {{Patrz|parametry}} mogą modyfikować odpowiednio parametry: {{Code|start}} {{LinkPatrz|start}} i {{Code|koniec}} {{LinkPatrz|koniec}}. * Ze zmiennej {{LinkPatrz|parametry}} jest liczona odpowiednia zmienna {{LinkPatrz|tabela}} dopuzczalnych zmiennych do liczenia. * Funkcja {{Code|Wylicz_skoncz_na_koncu}},którego algorytm podomy w tej poyzcji, tzn. koniec liczenia parametrów nienazwanych musi być policzony, jeżeli nie ma parametrów nazwanych w tabeli {{Code|tabela}} {{Patrz|tabela}}. A przeciwnie, jeżeli nie jest ustawiony parametr {{Code|różne}} {{LinkPatrz|różne}} nie na wartość niepustą, wtedy jest liczony parametr maksimum parametrów nazwanych, przeciwnie wtedy liczy się parametr maksimum numeracyjne parametrów numerowanych, czyli zmienną: {{Code|maksimum numeracyjne}} {{Patrz|maksimum numeracyjne}}, jeśli on ma wartość niepustą, wtedy liczy się maksimum parametrów nienazwanych, a jeżeli ona ma przeciwną wartość, to się liczy maksimum parametrów nazwanych, jak nienazwanych. Na podstawie tego mamy policzony odpowiednio taki koniec liczenia modyfikacji zwracany i policzony przez tą funkcję. ; Parametr {{Code|dodatkowe}}{{dk}} * To maksimum parametrów nazwanych, dla jakieś podstawy parametrów, są pomijane parametry z: {{Code|dodatkowe}}, która jest zestawem podstaw parametrów oddzielonych średnikami, jest właśnie podany ten parametr w nim. Przykładem jego jest: * {{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. ; Format parametru {{Parametr|parametry}}{{dk}} * 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 równa liczbie {{Code|5}}, oddzielonych średnikami. ; Opis parametru {{Parametr|parametry}}{{dk}} 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 w wartościach: {{Code|zmienna 1>}}, {{Code|<zmienna 2>}} i {{Code|<zmienna 3>}}, w których są pewne nazwy bazowe parametrów bez numerka na jej końcu, w zmiennej {{Code|parametry}} można nie podawać dalszych elementów 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ć nawet tego znaku,gdy nic nie ma po równa się) dla danego problemu funkcji. ; Wikikod pojedynczego kroku liczenia całości wygenerowanego wikikodu dla wszystkich zmiennych{{dk}} * 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)}}. ; Parametr {{Parametr|start}}, wartość początkowa{{dk}} * Gdy parametr {{Code|tonumber(frame.args["start"]) or 1}}, jest równy zero, funkcja zwraca błąd: {{Code|(początek jest ustawiony na zero)}}. ; Brak parametrów szablonu{{dk}} * 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. ; Parametr {{Parametr|nic}}{{dk}} * Gdy {{Code|nic}} przyjmuje wartość, i gdy pomijamy parametr, lub on przyjmuje wartość pustą, wtedy a funkcja nie może wygenerować żadnego kroku iteracji, to wtedy jest zwracana wartość parametru {{Code|nic}} lub ciąg pusty. ; Inne parametry{{dk}} * Parametr {{Code|po kolei}} {{Patrz|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|zaznacz}} {{Patrz|zaznacz}} - liczby oddzielone średnikami, które przy parametrach nazwanych o pewnych numerach i numerkach nie mają być uwzględnione przy niepustym parametrze {{Code|po kolei}} {{LinkPatrz|po kolei}}, a przy jego przeciwnej wartości za to mają być użyte. * 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}} {{Patrz|_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 wikikodami, wtedy ta funkcja używa do tego liczenia{{dk}} * Jest to funkcja {{LinkŚródtytuł|BudowaSzereguZDanych}}. * Wywołanie funkcji jest takie: {{Pre|lancuch_znakow {{=}} BudowaSzereguZDanych(frame,tab_lancuch,minimum or 0,maksimum);}} ; Parametry funkcji {{LinkŚródtytuł|BudowaSzereguZDanych}}. * One są wraz z jego parametrami podane w postaci jego parametrów ramki {{Code|frame}}, które jednocześnie są parametrami {{LinkŚródtytuł|p.Powtarzaj}}, używa się je 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ą {{LzLua|frame:preprocess}}, i jest zwracany jako wartość omawianej funkcji. ; Przykłady{{dk}} * Funkcja jest używana np. w silnikach szablonów, np.: {{s|Osobny artykuł/silnik}} szablonu {{s|Osobny artykuł}}, jak i do niego 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}}. === {{Śródtytuł|p.PowtarzajOdDo}}{{Code|p.PowtarzajOdDo}} === Funkcja służy do iteracji, od jakieś liczby do jakieś innej, podanego wikikodu dla danego kroku {{Code|1}}, iterując to, co krok określony zmienną: {{Code|krok}}. * 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ę{{dk}} {{nobold|{{Code|{{m|Ramka|Rozwiń}}}}}}, lub go rozwija na końcu, na podstawie kolejnych kroków iteracji{{dk}} * {{Code|start}} - początek iteracji dokonywany przez ta funkcję, * {{Code|koniec}} - koniec iteracji dokonywany przez ta funkcję, * {{Code|krok}} - krok iteracji, co który numer 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{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}} * {{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ą{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}} * {{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{{dk}} {{nobold|{{s|Chem/silnik}}}}, w tym nadrzędnym{{dk}} {{nobold|{{s|Chem}}}}, przykłady jego działania{{dk}} * {{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. === {{Śródtytuł|p["PrzetwarzajIterującCiąg"]}}{{Code|p["PrzetwarzajIterującCiąg"]}} === Funkcja do iteracji wikikodu po parametrach oddzielonych średniami w parametrze ramki {{Code|cią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{{dk}} * {{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{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}} * {{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ą{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}} * {{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>}} jest kolejny parametr, oddzielonych od pozastałych średniami, z: {{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}}: {{LzLua|frame:preprocess}}, jeśli: {{Code|nie rozwiń}}, nie przybiera wartości niepustej. === {{Śródtytuł|p["PowtarzajWedług"]}}{{Code|p["PowtarzajWedług"]}} === Funkcja wyszukująca elementy według wzoru począwszy od numeru, określonego przez {{Code|start}}, aż do zakończenia danych kolenych sprawdzania od tej liczby, czy taka strona istnieje, numerek jest określony przez pewien wikikod, określony przez {{Code|<nowiki>{{_}}</nowiki>}}, którymusi być podany we wzorze {{Code|wzor}}. Ona w ten sposób dla istniejących stron ustawia pewne łańcuchy, które są łączone znakami {{Code|", "}}, a na końcu samym {{Code|" i "}}. 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 strony{{dk}} {{nobold|„{{Ns:Template}}{{dk}}Polecane książki/”}}, a oto przykład{{dk}}{{nobold|{{Parametr|wzór|{{Ns:Template}}{{dk}}Polecane książki/{{((}}_{{))}}}}}}{{dk}} * {{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}}}} == {{Śródtytuł|p["LiczbaPrawychUkośników"]}}{{Code|p["LiczbaPrawychUkośników"]}} == Funkcja liczy, ile jest prawych ukośników w adresie strony podany jako pierwszy parametr ramki. * 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. ; Parametry fubkcji{{dk}} * {{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}}}} == {{Śródtytuł|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}}{{Code|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}} == Funkcja liczy maksymalny numer kolejnej strony liczonej według wzoru {{Code|wzor}}, musi być we wzorze podany element {{Code|<nowiki>{{_}}</nowiki>}}, aby mógł to robić. * 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/”, czyli dla stron o ogólnym wzorze: {{Parametr|wzór|{{Ns:Template}}:Polecane książki/{{((}}_{{))}}}}. ; Parametry funkcji{{dk}} * {{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 == === {{Śródtytuł|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}}{{Code|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}} === Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy minimalny numer takich zmiennych. * 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*)}}. ; Parametry funkcji{{dk}} * {{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}}}} === {{Śródtytuł|p.IleJestTakichOdpowiednikowychZmiennych}}{{Code|p.IleJestTakichOdpowiednikowychZmiennych}} === Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy ile jest takich zmiennych. * 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. ; Parametry funkcji{{dk}} * {{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}}}} == {{Śródtytuł|p["Parametr w tablicy nazw"]}}{{Code|p["Parametr w tablicy nazw"]}} == Funkcja bada, czy jest taki parametr {{Code|pozycja}} w tablicy nazw określonej zmienną {{Code|parametry}}, której elementy są oddzielone średnikami. * 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. ; Parametry funkcji{{dk}} * {{Code|parametry}} - lista parametrów oddzielonych średnikiem, * {{Code|pozycja}} - szukana lista w tablicy parametrów, * {{Code|od dużej}} - czy parametr: {{Code|pozycja}}, i elementy listy: {{Code|parametry}}, 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}}, a to ostatnie jest to wartość języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, która po transformacji na wikikod jest zamieniana na ciąg pusty, więc ona nadaje się do instrukcji warunkowych. === 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> ffvvwe7g5peh0e9yass9riqt1m13nhl 553407 553406 2026-08-29T20:44:13Z Persino 2851 /* {{Śródtytuł|p.Powtarzaj}}{{Code|p.Powtarzaj}} */ 553407 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. Funkcje, w tym module, uruchamia się tylko w ramce w szablonie, bo są tylko do tego przygotowane. One służą do powtarzania parametrów rodzica, czy przodka, iteracji pojedynczego kroku wikikodu, jakiś sprawdzeń, do liczenia odpowiedników i związanych z tym parametrami, itp.. == Funcje lokalne modułu == === {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} === Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, tylko w module {{Code|{{ld2|Ramka}}}}, szablonów, modułów i parserów w ramce. Uruchamiana jest przez funkcje: {{LinkŚródtytuł|p.Szablon}} - funkcja do uruchamiania szablonów, {{LinkŚródtytuł|p["Moduł"]}} - funkcja do uruchamiania modułów, i {{LinkŚródtytuł|p.Parser}} - funkcja do uruchamiania parserów. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ParserBlokowy(frame, co_ma_wywolac)...end; </syntaxhighlight> ; Parametry funkcji{{dk}} * {{Code|frame}} {{Patrz|frame}} - funkcja ramkki funkcji tablica transportu modułu, * {{Code|co_ma_wywolac}} {{Patrz|co_ma_wywolac}} - ten parametr przyjmuje wartość liczbową, która jeżeli {{Tt|0}} - to uruchamiany jest szablon, jeżeli {{Tt|1}} - moduł, jeżeli {{Code|2}} - to parser, jeżeli on ma inne wartości, tzn.: {{Tt|2}}, a {{Tt|3}} i dalej, to już dany szablon. ; Parametry ramki funkcji tablicy transportu modułu{{dk}} * Parametry podstawowe: ** {{Code|Nazwa}} {{Patrz|Nazwa}} - jest to pełna nazwa szablonu, modułu, czy parsera, ** {{Code|bez argumentów rodzica}} {{Patrz|bez argumentów rodzica}} - tablica parametrów oddzielonych średnikami, których obiekt uruchamiany nie może przyjmować, nawet jeżeli one są, ** {{Code|nazwa szablonu rodzica}} {{Patrz|nazwa szablonu rodzica}} - jest to zmienna przechowująca nazwę szablonu rodzica ramki dziecka,a nawet któreś z jego przodków, ** {{Code|bez argumentów nienazwanych rodzica}} {{Patrz|bez argumentów nienazwanych rodzica}} - szablon w ramce nie przyjmuje parametrów nienazwanych, określonych liczbą, podanych w rodzicu ramki, ** {{Code|potomek}} {{Patrz|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}} {{Patrz|nie potomek}} - zmienna mówiąca, że to nie jest potomek szablonu, używana, gdy nie jest określona zmienna ramki {{LinkPatrz|zmienna z parametrami rodzica}}, wtedy taka ramka jest traktowana jak normalna ramka, której jedynie trzeba przekazać parametry rodzica, nie przodka, wtedy do niej nie są przekazywane parametry: {{LinkPatrz|parametry rodzica}} (ta zmienna jest wtedy ustawiana, gdy nie jest niepusty parametr {{LinkPatrz|bez dodatkowych sprawdzeń}}), {{LinkPatrz|bez argumentów szablonu}}, i {{LinkPatrz|nazwa szablonu rodzica}} (jeśli ta wartość rodzica nie istnieje, to nadawana jest jej aktualna nazwa szablonu rodzica, a nie przodka, normalnie jest to przodka, a w szczególności rodzica) i {{LinkPatrz|potomek}} (ustawiany na stałą wartość niepustą), ** {{Code|bez argumentów szablonu}} {{Patrz|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ń}} {{Patrz|bez dodatkowych sprawdzeń}} - nie jest uruchamiana walidacja parametrów szablonu rodzica, ** {{Code|parametry rodzica}} {{Patrz|parametry rodzica}} - zmienna przedstawiająca parametry rodzica, czy któreś ze przodków, przekazane do ramki: {{m|Sprawdź|Parametry}} - dodane przez tę funkcję, ** {{Code|zmienna z parametrami rodzica}} {{Patrz|zmienna z parametrami rodzica}} - parametr mówiący, czy ma tworzyć zmienne z parametrami rodzica {{LinkPatrz|parametry rodzica}}, a jeżeli nie jest on, z zadnych z jego potomków podany, to zmienna {{LinkPatrz|parametry rodzica}} jest przekazywana na kolejnego przodka, ** {{Code|zmienna z argumentami ramki}} {{Patrz|zmienna z argumentami ramki}} - zmienna mówiąca, czy mają być tworzone parametry ramki, które nie są sprawdzane 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}} {{Patrz|zmienna z nazwą szablonu rodzica}} - parametr, czy ma tworzyć zmienną: {{LinkPatrz|nazwa szablonu rodzica}}, ** {{Code|parametry funkcji modułu pudełek}} {{Patrz|parametry funkcji modułu pudełek}} - czy do funkcji mają wchodzić parametry modułu pudełek, które są ponumerowane dodatkowym numerkiem, ** {{Code|parametry podstawowe funkcji modułu pudełek}} {{Patrz|parametry podstawowe funkcji modułu pudełek}} - czy do funkcji mają wchodzić podstawowe parametry funkcji modułu pudełek, te które nie mają dodatkowego numerka, ** {{Code|usuń z parametrów ramki}} {{Patrz|usuń z parametrów ramki}} - parametry ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, przedstawiający zmienne oddzielone średnikami, które nie mają być uwzględnione przy uruchamianiu danego obiektu. * {{Code|Funkcja}} {{Patrz|Funkcja}} - nazwa funkcji w module, który ma wywołać w ramce ta funkcja, w przypadku, gdy parametr {{LinkPatrz|co_ma_wywolac}} ma wartość {{Tt|1}}, czyli wywołujemy funkcję {{LinkŚródtytuł|p["Moduł"]}}. Funkcja uruchamia szablon, moduł, czy ramkę, w zależności od drugiego parametru funkcji, z parametrami rodzica ramki bez parametrów opisanych zmienną: {{LinkPatrz|bez argumentów szablonu}}, i bez parametrów wskazanych przez zmienną: {{Code|usuń z parametrów ramki}}. Za pomocą tej funkcji możemy wielopoziomowo wywoływać funkcje przekazując parametry od najwyższego poziomu do najniższego. Ta funkcja służy przede wszystkim 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 do uruchamiania szablonów, a uruchamianie funkcji modułu, w tym funkcji {{m|Cytuj|custom}} w szablonie {{s|PrzypisStrona}}. Przykładem wywołania szablonu, która jest w szablonie: {{s|Wzór}}, w którym jest wywoływany inny szablon, tym razem silnik, tzn. {{s|Wzór/silnik}}: <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> === {{Śródtytuł|BudowaSzereguZDanych}}{{Code|BudowaSzereguZDanych}} === Funkcja do uruchamiania się 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> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tab_lancuch}} {{Patrz|tab_lancuch}} - pewna tablica transportu funkcji. * Zmienne do mikroszablonów: ** {{Code|minimum}} {{Patrz|minimum}} - liczba mówiąca o minimum, ** {{Code|maksimum}} {{Patrz|maksimum}} - liczba mówiąca o maksimum. Parametry ramki funkcji tablicy transportu modułu: * {{Code|akapit}} {{Patrz|akapit}} - jeśli niepusta, to ona definiuje akapit ze znaków {{Code|\n\n}}, przeciwnym wypadku elementy łańcucha nie są łączone w akapity, * {{Code|przecinek}} {{Patrz|przecinek}} - jeśli niepuste, to mówi, że pomiędzy elementami powiniem być przecinek: {{Code|", "}}, został on specjalnie objęty w cudzysłowy, aby zilustrować, że po przecinku znajduje się spacja, * {{Code|nowa linia}} {{Patrz|nowa linia}} - w przeciwieństwo do zmiennej {{LinkPatrz|akapit}}, używany zamiast niej, pisze jedną nową linię, a nie dwie, jako: {{Code|\n}}, * {{Code|wyliczanka}} {{Patrz|wyliczanka}} - wylicza elementy z przecinkami, stawiając przed ostatnim elementem zamiast jego wyraz wyliczania {{Code|i}}, * {{Code|początek}} {{Patrz|początek}} - mówi, że na początku musi znajdować się przecinek, * {{Code|myślnik}} {{Patrz|myślnik}} - mówi, że jeśli nie ma początku przecinka, to stawiany jest myślnik, używany zamiast {{LinkPatrz|początek}}, * {{Code|warunkowe}} {{Patrz|warunkowe}} - instrukcje wikikodu, takie jak: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}, zostaną w kodzie rozwinięte, a później ciągłe właściwe elementy wikikodu otoczone dwoma dolnymi myślnikami zostaną rozwinięte do pewnej postaci, funkcja używa do tego {{LinkŚródtytuł|p.InstrukcjeWarunkowe}}, ** {{Code|parametr}} {{Patrz|parametr}} - używany w towarzystwie z {{LinkPatrz|warunkowe}}, mówiący że, derektywy znakowe ciągłe otoczone dwoma dolnymi myślnikami, zostaną zastąpione odpowiedmimi szablonami, w przeciwnym wypadku niepodania tej wartości lub jego pustej, wtedy te derektywy zostaną zastąpione w postaci rozwiniętej tych szablonów. ** Funkcja w tym warunku zwraca ciąg znaków rozwiniętego warunku. Funkcja posiada też mikroszablony, które są zdefiniowane w kodzie łańcuchów {{LinkPatrz|tab_lancuch}}: * {{Code|<nowiki>{{min}}</nowiki>}} - minimalna wartość szeregu zmiennych, określana przez {{LinkPatrz|minimum}}, * {{Code|<nowiki>{{max}}</nowiki>}} - a tutaj ich maksymalna, określana przez {{LinkPatrz|maksimum}}. Te dwie zmienne są podstawiane do uzyskanego ciągu. Funkcja zwraca te części rozwiniętego tekstu wikikodu, jeśli podano {{LinkPatrz|warunkowe}}, co do instrukcji warunkowych, i też te bez wewnętrznych klamerek, czyli specjalne kody, czyli te otoczone z dwóch stron dolnumi myślnikami, a pozostałe część tak uzyskana jest za to nierozwinięta. == {{Śródtytuł|p.InstrukcjeWarunkowe}}{{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}} {{Patrz|ciag}} - podany ciąg do rozwinięcia z instrukcji warunkowych wewnątrz nie posiadający klamerek, * {{Code|derektywy_specjalne}} {{Patrz|derektywy_specjalne}} - używa do zastępowania specjalnych derektyw, podane po prawej stronie w ramce pływającej, * {{Code|derektywy_parametrowe}} {{Patrz|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: {{LinkŚródtytuł|BudowaSzereguZDanych}}, poprzez: {{LinkŚródtytuł|p.Powtarzaj}}. 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 == === {{Śródtytuł|p.RozpakujArgumenty}}{{Code|p.RozpakujArgumenty}} === Ta funkcja jest do rozpakowywania zmiennych z podanego parametru, których zmienne są oddzieloe średnikami. * Funkcja uruchamia się 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. === {{Śródtytuł|p.PakujParametry}}{{Code|p.PakujParametry}} === Ta funkcja jest do pakowania tablicy, języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w tablicę {{lpg|JSON}}. * Funkcja się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Funkcja pakuje parametry tablicy {{lpg|Lua}} do tablicy: {{lpg|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> Parametry funkcji: * {{Code|args}} {{Patrz|args}} - tablica {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Ten szablon nazywa parametry, jakby nienazwane w tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera) z tablicy {{lpg|Lua}} (tutaj od jedynki), do tablicy nazwanej, jak to robi się w {{lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonEncode}}, z drugim parametrem: {{Code|mw.text.JSON_PRESERVE_KEYS}} {{Patrz|mw.text.JSON_PRESERVE_KEYS}}. === {{Śródtytuł|p.RozpakujParametry}}{{Code|p.RozpakujParametry}} === Ta funkcja jest do rozpakowywania tablicy {{lpg|JSON}} w tablicę języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}} * 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 w niej zwracany. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.RozpakujParametry = function (zmienna_z_parametrami) return mw.text.jsonDecode(zmienna_z_parametrami,mw.text.JSON_PRESERVE_KEYS); end; </syntaxhighlight> Parametry funkcji: * {{Code|zmienna_z_parametrami}} {{Patrz|zmienna_z_parametrami}} - tablica {{lpg|JSON}}. Ten szablon nazywa parametry nienazwane w tablicy {{lpg|Lua}} (tutaj od jedynki) z tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera), do tablicy nienazwanej z nazwanej, jak to robi się w {{Lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonDecode}}, z użyciem drugiego parametru: {{LinkPatrz|mw.text.JSON_PRESERVE_KEYS}}. == {{Śródtytuł|p["Rozwiń"]}}{{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> Parameetry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon rozwija wikikod podany w zmiennej {{Code|1}}, w parametrach szablonu rodzica. * 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}}: <syntaxhighlight lang="lua"> p["Rozwiń"] = function(frame) return frame:getParent():preprocess(frame.args[1]); end; </syntaxhighlight> == {{Śródtytuł|p.Log}}{{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> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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}}: <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 == === {{Śródtytuł|p.Szablon}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p.Szablon = function(frame) return ParserBlokowy(frame,0); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Szablon|Nazwa=<nazwa szablonu>|...}} </syntaxhighlight> === {{Śródtytuł|p["Moduł"]}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p["Moduł"] = function(frame) return ParserBlokowy(frame,1); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Moduł|Nazwa=<nazwa modułu>|Funkcja=<nazwa funkcji>|...}} </syntaxhighlight> === {{Śródtytuł|p.Parser}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p.Parser = function(frame) return ParserBlokowy(frame,2); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Parser|Nazwa=<nazwa parsera>|...}} </syntaxhighlight> == Funkcje książkowe == === {{Śródtytuł|p.Q}}{{Code|p.Q}} === Funkcja uruchamiana we wnętrzu szablonu {{s|Q}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on. * Jego specjalne odpowiedniki to {{s|T}} i {{s|T2}}. Funkcja uruchamia szablon o podanej nazwie w pierwszym parametrze z dodanym przedrostkiem {{Code|Książka:}} przed nazwą szablonu. * Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.Q =function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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ą (parametry nazwane, które są wliczane 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}}}} === {{Śródtytuł|p.N}}{{Code|p.N}} === Funkcja uruchamiana we wnętrzu szablonu {{s|N}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on. Funkcja przed nazwą szablonu, czy modułu, zostawia w wpis w postaci przedrostka {{Code|Książka:}}. Czy zostanie dodana przed tym nazwa przestrzeni nazw, to zależy od niepodania niepustej zmiennej {{Parametr|n}}, a zmienna {{Parametr|p|1}} - to przed nim jest dodawana przestrzeń nazw szablonu {{Np|Template|link=tak}}, {{Parametr|p|2}} - modułu {{Np|Module|link=tak}} i {{Parametr|p|3}} - kategorii. * Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.N=function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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}}}} === {{Śródtytuł|p.A}}{{Code|p.A}} === Funkcja uruchamiana we wnętrzu szablonu {{s|A}}, która przyjmuje jego parametry, i tak samo działa, jak on. Funkcja usuwa przedrostek {{Code|Książka:}} w nazwie szablonu, czy modułu. Gdy jest podany parametr: {{Parametr|p|tak}}, to dla przestrzeni niebędących: {{Np|Template|link=tak}}, {{Np|Module|link=tak}} i {{Np|Category|link=tak}}, jest zwracany wtedy przez nią parametr pierwszy funkcji. Dla tych wartości właśnie wyliczonych przestrzeni usuwany jest przedrostek {{Code|Książka:}}. Funkcja generuje nazwę z prestrzenią nazw. * Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.A=function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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 == === {{Śródtytuł|p.Powtarzaj}}{{Code|p.Powtarzaj}} === Funkcja służy do powtarzalnego generowania wikikodu ze składników jego kroku przy pomocy określonych zmiennych rodzica. * Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.Powtarzaj = function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Funkcja może przyjmować tylko parametry nienazwane albo tylko nazwane, albo nienazwane i nazwane (gdy jest ustawiony parametr {{Code|różne}} {{Patrz|różne}}). 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}} {{LinkPatrz|różne}}, która wtedy ma wskazywać na wartość niepustą. ; Najważniejsze parametry, które są to opcjonalne, to są{{dk}} * {{Code|start}} {{Patrz|start}} - liczba, która wskazuje początek liczenia - domyślna wartość to {{Code|1}}, * {{Code|koniec}} {{Patrz|koniec}} - liczba, która wskazuje koniec liczenia. ; Numer końca liczenia parametrów nienazwanych lub nazwanych, czy nazwanychi nienazwanych{{dk}} * Elementy w {{Code|parametry}} {{Patrz|parametry}} mogą modyfikować odpowiednio parametry: {{Code|start}} {{LinkPatrz|start}} i {{Code|koniec}} {{LinkPatrz|koniec}}. * Ze zmiennej {{LinkPatrz|parametry}} jest liczona odpowiednia zmienna {{LinkPatrz|tabela}} dopuzczalnych zmiennych do liczenia. * Funkcja {{Code|Wylicz_skoncz_na_koncu}},którego algorytm podomy w tej poyzcji, tzn. koniec liczenia parametrów nienazwanych musi być policzony, jeżeli nie ma parametrów nazwanych w tabeli {{Code|tabela}} {{Patrz|tabela}}. A przeciwnie, jeżeli nie jest ustawiony parametr {{Code|różne}} {{LinkPatrz|różne}} nie na wartość niepustą, wtedy jest liczony parametr maksimum parametrów nazwanych, przeciwnie wtedy liczy się parametr maksimum numeracyjne parametrów numerowanych, czyli zmienną: {{Code|maksimum numeracyjne}} {{Patrz|maksimum numeracyjne}}, jeśli on ma wartość niepustą, wtedy liczy się maksimum parametrów nienazwanych, a jeżeli ona ma przeciwną wartość, to się liczy maksimum parametrów nazwanych, jak nienazwanych. Na podstawie tego mamy policzony odpowiednio taki koniec liczenia modyfikacji zwracany i policzony przez tą funkcję. ; Parametr {{Code|dodatkowe}}{{dk}} * To maksimum parametrów nazwanych, dla jakieś podstawy parametrów, są pomijane parametry z: {{Code|dodatkowe}}, która jest zestawem podstaw parametrów oddzielonych średnikami, jest właśnie podany ten parametr w nim. Przykładem jego jest: * {{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. ; Format parametru {{Parametr|parametry}}{{dk}} * 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 równa liczbie {{Code|5}}, oddzielonych średnikami. ; Opis parametru {{Parametr|parametry}}{{dk}} 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 w wartościach: {{Code|zmienna 1>}}, {{Code|<zmienna 2>}} i {{Code|<zmienna 3>}}, w których są pewne nazwy bazowe parametrów bez numerka na jej końcu, w zmiennej {{Code|parametry}} można nie podawać dalszych elementów 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ć nawet tego znaku,gdy nic nie ma po równa się) dla danego problemu funkcji. ; Wikikod pojedynczego kroku liczenia całości wygenerowanego wikikodu dla wszystkich zmiennych{{dk}} * 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)}}. ; Parametr {{Parametr|start}}, wartość początkowa{{dk}} * Gdy parametr {{Code|tonumber(frame.args["start"]) or 1}}, jest równy zero, funkcja zwraca błąd: {{Code|(początek jest ustawiony na zero)}}. ; Brak parametrów szablonu{{dk}} * 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. ; Parametr {{Parametr|nic}}{{dk}} * Gdy {{Code|nic}} przyjmuje wartość, i gdy pomijamy parametr, lub on przyjmuje wartość pustą, wtedy a funkcja nie może wygenerować żadnego kroku iteracji, to wtedy jest zwracana wartość parametru {{Code|nic}} lub ciąg pusty. ; Inne parametry{{dk}} * Parametr {{Code|po kolei}} {{Patrz|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|zaznacz}} {{Patrz|zaznacz}} - liczby oddzielone średnikami, które przy parametrach nazwanych o pewnych numerach i numerkach nie mają być uwzględnione przy niepustym parametrze {{Code|po kolei}} {{LinkPatrz|po kolei}}, a przy jego przeciwnej wartości za to mają być użyte. * 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}} {{Patrz|_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>}}. Domyślną wartością {{Code|_i}} jest {{Code|_}}. ; W wyniku iteracji otrzymamy tablicę ciągów łańcuchów z wikikodami, wtedy ta funkcja używa do tego liczenia{{dk}} * Jest to funkcja {{LinkŚródtytuł|BudowaSzereguZDanych}}. * Wywołanie funkcji jest takie: {{Pre|lancuch_znakow {{=}} BudowaSzereguZDanych(frame,tab_lancuch,minimum or 0,maksimum);}} ; Parametry funkcji {{LinkŚródtytuł|BudowaSzereguZDanych}}. * One są wraz z jego parametrami podane w postaci jego parametrów ramki {{Code|frame}}, które jednocześnie są parametrami {{LinkŚródtytuł|p.Powtarzaj}}, używa się je 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ą {{LzLua|frame:preprocess}}, i jest zwracany jako wartość omawianej funkcji. ; Przykłady{{dk}} * Funkcja jest używana np. w silnikach szablonów, np.: {{s|Osobny artykuł/silnik}} szablonu {{s|Osobny artykuł}}, jak i do niego 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}}. === {{Śródtytuł|p.PowtarzajOdDo}}{{Code|p.PowtarzajOdDo}} === Funkcja służy do iteracji, od jakieś liczby do jakieś innej, podanego wikikodu dla danego kroku {{Code|1}}, iterując to, co krok określony zmienną: {{Code|krok}}. * 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ę{{dk}} {{nobold|{{Code|{{m|Ramka|Rozwiń}}}}}}, lub go rozwija na końcu, na podstawie kolejnych kroków iteracji{{dk}} * {{Code|start}} - początek iteracji dokonywany przez ta funkcję, * {{Code|koniec}} - koniec iteracji dokonywany przez ta funkcję, * {{Code|krok}} - krok iteracji, co który numer 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{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}} * {{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ą{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}} * {{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{{dk}} {{nobold|{{s|Chem/silnik}}}}, w tym nadrzędnym{{dk}} {{nobold|{{s|Chem}}}}, przykłady jego działania{{dk}} * {{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. === {{Śródtytuł|p["PrzetwarzajIterującCiąg"]}}{{Code|p["PrzetwarzajIterującCiąg"]}} === Funkcja do iteracji wikikodu po parametrach oddzielonych średniami w parametrze ramki {{Code|cią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{{dk}} * {{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{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}} * {{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ą{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}} * {{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>}} jest kolejny parametr, oddzielonych od pozastałych średniami, z: {{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}}: {{LzLua|frame:preprocess}}, jeśli: {{Code|nie rozwiń}}, nie przybiera wartości niepustej. === {{Śródtytuł|p["PowtarzajWedług"]}}{{Code|p["PowtarzajWedług"]}} === Funkcja wyszukująca elementy według wzoru począwszy od numeru, określonego przez {{Code|start}}, aż do zakończenia danych kolenych sprawdzania od tej liczby, czy taka strona istnieje, numerek jest określony przez pewien wikikod, określony przez {{Code|<nowiki>{{_}}</nowiki>}}, którymusi być podany we wzorze {{Code|wzor}}. Ona w ten sposób dla istniejących stron ustawia pewne łańcuchy, które są łączone znakami {{Code|", "}}, a na końcu samym {{Code|" i "}}. 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 strony{{dk}} {{nobold|„{{Ns:Template}}{{dk}}Polecane książki/”}}, a oto przykład{{dk}}{{nobold|{{Parametr|wzór|{{Ns:Template}}{{dk}}Polecane książki/{{((}}_{{))}}}}}}{{dk}} * {{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}}}} == {{Śródtytuł|p["LiczbaPrawychUkośników"]}}{{Code|p["LiczbaPrawychUkośników"]}} == Funkcja liczy, ile jest prawych ukośników w adresie strony podany jako pierwszy parametr ramki. * 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. ; Parametry fubkcji{{dk}} * {{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}}}} == {{Śródtytuł|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}}{{Code|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}} == Funkcja liczy maksymalny numer kolejnej strony liczonej według wzoru {{Code|wzor}}, musi być we wzorze podany element {{Code|<nowiki>{{_}}</nowiki>}}, aby mógł to robić. * 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/”, czyli dla stron o ogólnym wzorze: {{Parametr|wzór|{{Ns:Template}}:Polecane książki/{{((}}_{{))}}}}. ; Parametry funkcji{{dk}} * {{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 == === {{Śródtytuł|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}}{{Code|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}} === Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy minimalny numer takich zmiennych. * 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*)}}. ; Parametry funkcji{{dk}} * {{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}}}} === {{Śródtytuł|p.IleJestTakichOdpowiednikowychZmiennych}}{{Code|p.IleJestTakichOdpowiednikowychZmiennych}} === Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy ile jest takich zmiennych. * 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. ; Parametry funkcji{{dk}} * {{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}}}} == {{Śródtytuł|p["Parametr w tablicy nazw"]}}{{Code|p["Parametr w tablicy nazw"]}} == Funkcja bada, czy jest taki parametr {{Code|pozycja}} w tablicy nazw określonej zmienną {{Code|parametry}}, której elementy są oddzielone średnikami. * 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. ; Parametry funkcji{{dk}} * {{Code|parametry}} - lista parametrów oddzielonych średnikiem, * {{Code|pozycja}} - szukana lista w tablicy parametrów, * {{Code|od dużej}} - czy parametr: {{Code|pozycja}}, i elementy listy: {{Code|parametry}}, 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}}, a to ostatnie jest to wartość języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, która po transformacji na wikikod jest zamieniana na ciąg pusty, więc ona nadaje się do instrukcji warunkowych. === 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> jj4ytyb68gn9prh0vtyzayizoqhlvef 553408 553407 2026-08-29T21:29:02Z Persino 2851 /* {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} */ 553408 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. Funkcje, w tym module, uruchamia się tylko w ramce w szablonie, bo są tylko do tego przygotowane. One służą do powtarzania parametrów rodzica, czy przodka, iteracji pojedynczego kroku wikikodu, jakiś sprawdzeń, do liczenia odpowiedników i związanych z tym parametrami, itp.. == Funcje lokalne modułu == === {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} === Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, tylko w module {{Code|{{ld2|Ramka}}}}, szablonów, modułów i parserów w ramce. Uruchamiana jest przez funkcje: {{LinkŚródtytuł|p.Szablon}} - funkcja do uruchamiania szablonów, {{LinkŚródtytuł|p["Moduł"]}} - funkcja do uruchamiania modułów, i {{LinkŚródtytuł|p.Parser}} - funkcja do uruchamiania parserów. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ParserBlokowy(frame, co_ma_wywolac)...end; </syntaxhighlight> ; Parametry funkcji{{dk}} * {{Code|frame}} {{Patrz|frame}} - funkcja ramkki funkcji tablica transportu modułu, * {{Code|co_ma_wywolac}} {{Patrz|co_ma_wywolac}} - ten parametr przyjmuje wartość liczbową, która jeżeli {{Tt|0}} - to uruchamiany jest szablon, jeżeli {{Tt|1}} - moduł, jeżeli {{Code|2}} - to parser, jeżeli on ma inne wartości, tzn.: {{Tt|2}}, a {{Tt|3}} i dalej, to już dany szablon. ; Parametry ramki funkcji tablicy transportu modułu{{dk}} * Parametry podstawowe: ** {{Code|Nazwa}} {{Patrz|Nazwa}} - jest to pełna nazwa szablonu, modułu, czy parsera, ** {{Code|bez argumentów rodzica}} {{Patrz|bez argumentów rodzica}} - tablica parametrów oddzielonych średnikami, których obiekt uruchamiany nie może przyjmować, nawet jeżeli one są, ** {{Code|nazwa szablonu rodzica}} {{Patrz|nazwa szablonu rodzica}} - jest to zmienna przechowująca nazwę szablonu rodzica ramki dziecka,a nawet któreś z jego przodków, ** {{Code|bez argumentów nienazwanych rodzica}} {{Patrz|bez argumentów nienazwanych rodzica}} - szablon w ramce nie przyjmuje parametrów nienazwanych, określonych liczbą, podanych w rodzicu ramki, ** {{Code|potomek}} {{Patrz|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}} {{Patrz|nie potomek}} - zmienna mówiąca, że to nie jest potomek szablonu, używana, gdy nie jest określona zmienna ramki {{LinkPatrz|zmienna z parametrami rodzica}}, wtedy taka ramka jest traktowana jak normalna ramka, której jedynie trzeba przekazać parametry rodzica, nie przodka, wtedy do niej nie są przekazywane parametry: {{LinkPatrz|parametry rodzica}} (ta zmienna jest wtedy ustawiana, gdy nie jest niepusty parametr {{LinkPatrz|bez dodatkowych sprawdzeń}}), {{LinkPatrz|bez argumentów szablonu}}, i {{LinkPatrz|nazwa szablonu rodzica}} (jeśli ta wartość rodzica nie istnieje, to nadawana jest jej aktualna nazwa szablonu rodzica, a nie przodka, normalnie jest to przodka, a w szczególności rodzica) i {{LinkPatrz|potomek}} (ustawiany na stałą wartość niepustą), ** {{Code|bez argumentów szablonu}} {{Patrz|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ń}} {{Patrz|bez dodatkowych sprawdzeń}} - nie jest uruchamiana walidacja parametrów szablonu rodzica, ** {{Code|parametry rodzica}} {{Patrz|parametry rodzica}} - zmienna przedstawiająca parametry rodzica, czy któreś ze przodków, przekazane do ramki: {{m|Sprawdź|Parametry}} - dodane przez tę funkcję, ** {{Code|zmienna z parametrami rodzica}} {{Patrz|zmienna z parametrami rodzica}} - parametr mówiący, czy ma tworzyć zmienne z parametrami rodzica {{LinkPatrz|parametry rodzica}}, a jeżeli nie jest on, z zadnych z jego potomków podany, to zmienna {{LinkPatrz|parametry rodzica}} jest przekazywana na kolejnego przodka, ** {{Code|zmienna z argumentami ramki}} {{Patrz|zmienna z argumentami ramki}} - zmienna mówiąca, czy mają być tworzone parametry ramki, które nie są sprawdzane 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}} {{Patrz|zmienna z nazwą szablonu rodzica}} - parametr, czy ma tworzyć zmienną: {{LinkPatrz|nazwa szablonu rodzica}}, ** {{Code|parametry funkcji modułu pudełek}} {{Patrz|parametry funkcji modułu pudełek}} - czy do funkcji mają wchodzić parametry modułu pudełek, które są ponumerowane dodatkowym numerkiem, ** {{Code|parametry podstawowe funkcji modułu pudełek}} {{Patrz|parametry podstawowe funkcji modułu pudełek}} - czy do funkcji mają wchodzić podstawowe parametry funkcji modułu pudełek, te które nie mają dodatkowego numerka, ** {{Code|usuń z parametrów ramki}} {{Patrz|usuń z parametrów ramki}} - parametry ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, przedstawiający zmienne oddzielone średnikami, które nie mają być uwzględnione przy uruchamianiu danego obiektu. * {{Code|Funkcja}} {{Patrz|Funkcja}} - nazwa funkcji w module, który ma wywołać w ramce ta funkcja, w przypadku, gdy parametr {{LinkPatrz|co_ma_wywolac}} ma wartość {{Tt|1}}, czyli wywołujemy funkcję {{LinkŚródtytuł|p["Moduł"]}}. Funkcja uruchamia szablon, moduł, czy ramkę, w zależności od drugiego parametru funkcji, z parametrami rodzica ramki bez parametrów opisanych zmienną: {{LinkPatrz|bez argumentów szablonu}}, i bez parametrów ramki wskazanych przez: {{Code|usuń z parametrów ramki}}. Za pomocą tej funkcji możemy wielopoziomowo wywoływać funkcje przekazując parametry od najwyższego poziomu do najniższego. Ta funkcja służy przede wszystkim 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 do uruchamiania szablonów, a uruchamianie funkcji modułu, w tym funkcji {{m|Cytuj|custom}} w szablonie {{s|PrzypisStrona}}. Przykładem wywołania szablonu, która jest w szablonie: {{s|Wzór}}, w którym jest wywoływany inny szablon, tym razem silnik, tzn. {{s|Wzór/silnik}}: <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> === {{Śródtytuł|BudowaSzereguZDanych}}{{Code|BudowaSzereguZDanych}} === Funkcja do uruchamiania się 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> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tab_lancuch}} {{Patrz|tab_lancuch}} - pewna tablica transportu funkcji. * Zmienne do mikroszablonów: ** {{Code|minimum}} {{Patrz|minimum}} - liczba mówiąca o minimum, ** {{Code|maksimum}} {{Patrz|maksimum}} - liczba mówiąca o maksimum. Parametry ramki funkcji tablicy transportu modułu: * {{Code|akapit}} {{Patrz|akapit}} - jeśli niepusta, to ona definiuje akapit ze znaków {{Code|\n\n}}, przeciwnym wypadku elementy łańcucha nie są łączone w akapity, * {{Code|przecinek}} {{Patrz|przecinek}} - jeśli niepuste, to mówi, że pomiędzy elementami powiniem być przecinek: {{Code|", "}}, został on specjalnie objęty w cudzysłowy, aby zilustrować, że po przecinku znajduje się spacja, * {{Code|nowa linia}} {{Patrz|nowa linia}} - w przeciwieństwo do zmiennej {{LinkPatrz|akapit}}, używany zamiast niej, pisze jedną nową linię, a nie dwie, jako: {{Code|\n}}, * {{Code|wyliczanka}} {{Patrz|wyliczanka}} - wylicza elementy z przecinkami, stawiając przed ostatnim elementem zamiast jego wyraz wyliczania {{Code|i}}, * {{Code|początek}} {{Patrz|początek}} - mówi, że na początku musi znajdować się przecinek, * {{Code|myślnik}} {{Patrz|myślnik}} - mówi, że jeśli nie ma początku przecinka, to stawiany jest myślnik, używany zamiast {{LinkPatrz|początek}}, * {{Code|warunkowe}} {{Patrz|warunkowe}} - instrukcje wikikodu, takie jak: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}, zostaną w kodzie rozwinięte, a później ciągłe właściwe elementy wikikodu otoczone dwoma dolnymi myślnikami zostaną rozwinięte do pewnej postaci, funkcja używa do tego {{LinkŚródtytuł|p.InstrukcjeWarunkowe}}, ** {{Code|parametr}} {{Patrz|parametr}} - używany w towarzystwie z {{LinkPatrz|warunkowe}}, mówiący że, derektywy znakowe ciągłe otoczone dwoma dolnymi myślnikami, zostaną zastąpione odpowiedmimi szablonami, w przeciwnym wypadku niepodania tej wartości lub jego pustej, wtedy te derektywy zostaną zastąpione w postaci rozwiniętej tych szablonów. ** Funkcja w tym warunku zwraca ciąg znaków rozwiniętego warunku. Funkcja posiada też mikroszablony, które są zdefiniowane w kodzie łańcuchów {{LinkPatrz|tab_lancuch}}: * {{Code|<nowiki>{{min}}</nowiki>}} - minimalna wartość szeregu zmiennych, określana przez {{LinkPatrz|minimum}}, * {{Code|<nowiki>{{max}}</nowiki>}} - a tutaj ich maksymalna, określana przez {{LinkPatrz|maksimum}}. Te dwie zmienne są podstawiane do uzyskanego ciągu. Funkcja zwraca te części rozwiniętego tekstu wikikodu, jeśli podano {{LinkPatrz|warunkowe}}, co do instrukcji warunkowych, i też te bez wewnętrznych klamerek, czyli specjalne kody, czyli te otoczone z dwóch stron dolnumi myślnikami, a pozostałe część tak uzyskana jest za to nierozwinięta. == {{Śródtytuł|p.InstrukcjeWarunkowe}}{{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}} {{Patrz|ciag}} - podany ciąg do rozwinięcia z instrukcji warunkowych wewnątrz nie posiadający klamerek, * {{Code|derektywy_specjalne}} {{Patrz|derektywy_specjalne}} - używa do zastępowania specjalnych derektyw, podane po prawej stronie w ramce pływającej, * {{Code|derektywy_parametrowe}} {{Patrz|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: {{LinkŚródtytuł|BudowaSzereguZDanych}}, poprzez: {{LinkŚródtytuł|p.Powtarzaj}}. 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 == === {{Śródtytuł|p.RozpakujArgumenty}}{{Code|p.RozpakujArgumenty}} === Ta funkcja jest do rozpakowywania zmiennych z podanego parametru, których zmienne są oddzieloe średnikami. * Funkcja uruchamia się 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. === {{Śródtytuł|p.PakujParametry}}{{Code|p.PakujParametry}} === Ta funkcja jest do pakowania tablicy, języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w tablicę {{lpg|JSON}}. * Funkcja się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Funkcja pakuje parametry tablicy {{lpg|Lua}} do tablicy: {{lpg|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> Parametry funkcji: * {{Code|args}} {{Patrz|args}} - tablica {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Ten szablon nazywa parametry, jakby nienazwane w tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera) z tablicy {{lpg|Lua}} (tutaj od jedynki), do tablicy nazwanej, jak to robi się w {{lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonEncode}}, z drugim parametrem: {{Code|mw.text.JSON_PRESERVE_KEYS}} {{Patrz|mw.text.JSON_PRESERVE_KEYS}}. === {{Śródtytuł|p.RozpakujParametry}}{{Code|p.RozpakujParametry}} === Ta funkcja jest do rozpakowywania tablicy {{lpg|JSON}} w tablicę języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}} * 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 w niej zwracany. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.RozpakujParametry = function (zmienna_z_parametrami) return mw.text.jsonDecode(zmienna_z_parametrami,mw.text.JSON_PRESERVE_KEYS); end; </syntaxhighlight> Parametry funkcji: * {{Code|zmienna_z_parametrami}} {{Patrz|zmienna_z_parametrami}} - tablica {{lpg|JSON}}. Ten szablon nazywa parametry nienazwane w tablicy {{lpg|Lua}} (tutaj od jedynki) z tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera), do tablicy nienazwanej z nazwanej, jak to robi się w {{Lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonDecode}}, z użyciem drugiego parametru: {{LinkPatrz|mw.text.JSON_PRESERVE_KEYS}}. == {{Śródtytuł|p["Rozwiń"]}}{{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> Parameetry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon rozwija wikikod podany w zmiennej {{Code|1}}, w parametrach szablonu rodzica. * 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}}: <syntaxhighlight lang="lua"> p["Rozwiń"] = function(frame) return frame:getParent():preprocess(frame.args[1]); end; </syntaxhighlight> == {{Śródtytuł|p.Log}}{{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> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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}}: <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 == === {{Śródtytuł|p.Szablon}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p.Szablon = function(frame) return ParserBlokowy(frame,0); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Szablon|Nazwa=<nazwa szablonu>|...}} </syntaxhighlight> === {{Śródtytuł|p["Moduł"]}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p["Moduł"] = function(frame) return ParserBlokowy(frame,1); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Moduł|Nazwa=<nazwa modułu>|Funkcja=<nazwa funkcji>|...}} </syntaxhighlight> === {{Śródtytuł|p.Parser}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p.Parser = function(frame) return ParserBlokowy(frame,2); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Parser|Nazwa=<nazwa parsera>|...}} </syntaxhighlight> == Funkcje książkowe == === {{Śródtytuł|p.Q}}{{Code|p.Q}} === Funkcja uruchamiana we wnętrzu szablonu {{s|Q}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on. * Jego specjalne odpowiedniki to {{s|T}} i {{s|T2}}. Funkcja uruchamia szablon o podanej nazwie w pierwszym parametrze z dodanym przedrostkiem {{Code|Książka:}} przed nazwą szablonu. * Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.Q =function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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ą (parametry nazwane, które są wliczane 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}}}} === {{Śródtytuł|p.N}}{{Code|p.N}} === Funkcja uruchamiana we wnętrzu szablonu {{s|N}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on. Funkcja przed nazwą szablonu, czy modułu, zostawia w wpis w postaci przedrostka {{Code|Książka:}}. Czy zostanie dodana przed tym nazwa przestrzeni nazw, to zależy od niepodania niepustej zmiennej {{Parametr|n}}, a zmienna {{Parametr|p|1}} - to przed nim jest dodawana przestrzeń nazw szablonu {{Np|Template|link=tak}}, {{Parametr|p|2}} - modułu {{Np|Module|link=tak}} i {{Parametr|p|3}} - kategorii. * Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.N=function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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}}}} === {{Śródtytuł|p.A}}{{Code|p.A}} === Funkcja uruchamiana we wnętrzu szablonu {{s|A}}, która przyjmuje jego parametry, i tak samo działa, jak on. Funkcja usuwa przedrostek {{Code|Książka:}} w nazwie szablonu, czy modułu. Gdy jest podany parametr: {{Parametr|p|tak}}, to dla przestrzeni niebędących: {{Np|Template|link=tak}}, {{Np|Module|link=tak}} i {{Np|Category|link=tak}}, jest zwracany wtedy przez nią parametr pierwszy funkcji. Dla tych wartości właśnie wyliczonych przestrzeni usuwany jest przedrostek {{Code|Książka:}}. Funkcja generuje nazwę z prestrzenią nazw. * Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.A=function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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 == === {{Śródtytuł|p.Powtarzaj}}{{Code|p.Powtarzaj}} === Funkcja służy do powtarzalnego generowania wikikodu ze składników jego kroku przy pomocy określonych zmiennych rodzica. * Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.Powtarzaj = function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Funkcja może przyjmować tylko parametry nienazwane albo tylko nazwane, albo nienazwane i nazwane (gdy jest ustawiony parametr {{Code|różne}} {{Patrz|różne}}). 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}} {{LinkPatrz|różne}}, która wtedy ma wskazywać na wartość niepustą. ; Najważniejsze parametry, które są to opcjonalne, to są{{dk}} * {{Code|start}} {{Patrz|start}} - liczba, która wskazuje początek liczenia - domyślna wartość to {{Code|1}}, * {{Code|koniec}} {{Patrz|koniec}} - liczba, która wskazuje koniec liczenia. ; Numer końca liczenia parametrów nienazwanych lub nazwanych, czy nazwanychi nienazwanych{{dk}} * Elementy w {{Code|parametry}} {{Patrz|parametry}} mogą modyfikować odpowiednio parametry: {{Code|start}} {{LinkPatrz|start}} i {{Code|koniec}} {{LinkPatrz|koniec}}. * Ze zmiennej {{LinkPatrz|parametry}} jest liczona odpowiednia zmienna {{LinkPatrz|tabela}} dopuzczalnych zmiennych do liczenia. * Funkcja {{Code|Wylicz_skoncz_na_koncu}},którego algorytm podomy w tej poyzcji, tzn. koniec liczenia parametrów nienazwanych musi być policzony, jeżeli nie ma parametrów nazwanych w tabeli {{Code|tabela}} {{Patrz|tabela}}. A przeciwnie, jeżeli nie jest ustawiony parametr {{Code|różne}} {{LinkPatrz|różne}} nie na wartość niepustą, wtedy jest liczony parametr maksimum parametrów nazwanych, przeciwnie wtedy liczy się parametr maksimum numeracyjne parametrów numerowanych, czyli zmienną: {{Code|maksimum numeracyjne}} {{Patrz|maksimum numeracyjne}}, jeśli on ma wartość niepustą, wtedy liczy się maksimum parametrów nienazwanych, a jeżeli ona ma przeciwną wartość, to się liczy maksimum parametrów nazwanych, jak nienazwanych. Na podstawie tego mamy policzony odpowiednio taki koniec liczenia modyfikacji zwracany i policzony przez tą funkcję. ; Parametr {{Code|dodatkowe}}{{dk}} * To maksimum parametrów nazwanych, dla jakieś podstawy parametrów, są pomijane parametry z: {{Code|dodatkowe}}, która jest zestawem podstaw parametrów oddzielonych średnikami, jest właśnie podany ten parametr w nim. Przykładem jego jest: * {{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. ; Format parametru {{Parametr|parametry}}{{dk}} * 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 równa liczbie {{Code|5}}, oddzielonych średnikami. ; Opis parametru {{Parametr|parametry}}{{dk}} 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 w wartościach: {{Code|zmienna 1>}}, {{Code|<zmienna 2>}} i {{Code|<zmienna 3>}}, w których są pewne nazwy bazowe parametrów bez numerka na jej końcu, w zmiennej {{Code|parametry}} można nie podawać dalszych elementów 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ć nawet tego znaku,gdy nic nie ma po równa się) dla danego problemu funkcji. ; Wikikod pojedynczego kroku liczenia całości wygenerowanego wikikodu dla wszystkich zmiennych{{dk}} * 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)}}. ; Parametr {{Parametr|start}}, wartość początkowa{{dk}} * Gdy parametr {{Code|tonumber(frame.args["start"]) or 1}}, jest równy zero, funkcja zwraca błąd: {{Code|(początek jest ustawiony na zero)}}. ; Brak parametrów szablonu{{dk}} * 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. ; Parametr {{Parametr|nic}}{{dk}} * Gdy {{Code|nic}} przyjmuje wartość, i gdy pomijamy parametr, lub on przyjmuje wartość pustą, wtedy a funkcja nie może wygenerować żadnego kroku iteracji, to wtedy jest zwracana wartość parametru {{Code|nic}} lub ciąg pusty. ; Inne parametry{{dk}} * Parametr {{Code|po kolei}} {{Patrz|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|zaznacz}} {{Patrz|zaznacz}} - liczby oddzielone średnikami, które przy parametrach nazwanych o pewnych numerach i numerkach nie mają być uwzględnione przy niepustym parametrze {{Code|po kolei}} {{LinkPatrz|po kolei}}, a przy jego przeciwnej wartości za to mają być użyte. * 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}} {{Patrz|_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>}}. Domyślną wartością {{Code|_i}} jest {{Code|_}}. ; W wyniku iteracji otrzymamy tablicę ciągów łańcuchów z wikikodami, wtedy ta funkcja używa do tego liczenia{{dk}} * Jest to funkcja {{LinkŚródtytuł|BudowaSzereguZDanych}}. * Wywołanie funkcji jest takie: {{Pre|lancuch_znakow {{=}} BudowaSzereguZDanych(frame,tab_lancuch,minimum or 0,maksimum);}} ; Parametry funkcji {{LinkŚródtytuł|BudowaSzereguZDanych}}. * One są wraz z jego parametrami podane w postaci jego parametrów ramki {{Code|frame}}, które jednocześnie są parametrami {{LinkŚródtytuł|p.Powtarzaj}}, używa się je 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ą {{LzLua|frame:preprocess}}, i jest zwracany jako wartość omawianej funkcji. ; Przykłady{{dk}} * Funkcja jest używana np. w silnikach szablonów, np.: {{s|Osobny artykuł/silnik}} szablonu {{s|Osobny artykuł}}, jak i do niego 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}}. === {{Śródtytuł|p.PowtarzajOdDo}}{{Code|p.PowtarzajOdDo}} === Funkcja służy do iteracji, od jakieś liczby do jakieś innej, podanego wikikodu dla danego kroku {{Code|1}}, iterując to, co krok określony zmienną: {{Code|krok}}. * 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ę{{dk}} {{nobold|{{Code|{{m|Ramka|Rozwiń}}}}}}, lub go rozwija na końcu, na podstawie kolejnych kroków iteracji{{dk}} * {{Code|start}} - początek iteracji dokonywany przez ta funkcję, * {{Code|koniec}} - koniec iteracji dokonywany przez ta funkcję, * {{Code|krok}} - krok iteracji, co który numer 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{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}} * {{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ą{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}} * {{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{{dk}} {{nobold|{{s|Chem/silnik}}}}, w tym nadrzędnym{{dk}} {{nobold|{{s|Chem}}}}, przykłady jego działania{{dk}} * {{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. === {{Śródtytuł|p["PrzetwarzajIterującCiąg"]}}{{Code|p["PrzetwarzajIterującCiąg"]}} === Funkcja do iteracji wikikodu po parametrach oddzielonych średniami w parametrze ramki {{Code|cią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{{dk}} * {{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{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}} * {{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ą{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}} * {{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>}} jest kolejny parametr, oddzielonych od pozastałych średniami, z: {{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}}: {{LzLua|frame:preprocess}}, jeśli: {{Code|nie rozwiń}}, nie przybiera wartości niepustej. === {{Śródtytuł|p["PowtarzajWedług"]}}{{Code|p["PowtarzajWedług"]}} === Funkcja wyszukująca elementy według wzoru począwszy od numeru, określonego przez {{Code|start}}, aż do zakończenia danych kolenych sprawdzania od tej liczby, czy taka strona istnieje, numerek jest określony przez pewien wikikod, określony przez {{Code|<nowiki>{{_}}</nowiki>}}, którymusi być podany we wzorze {{Code|wzor}}. Ona w ten sposób dla istniejących stron ustawia pewne łańcuchy, które są łączone znakami {{Code|", "}}, a na końcu samym {{Code|" i "}}. 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 strony{{dk}} {{nobold|„{{Ns:Template}}{{dk}}Polecane książki/”}}, a oto przykład{{dk}}{{nobold|{{Parametr|wzór|{{Ns:Template}}{{dk}}Polecane książki/{{((}}_{{))}}}}}}{{dk}} * {{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}}}} == {{Śródtytuł|p["LiczbaPrawychUkośników"]}}{{Code|p["LiczbaPrawychUkośników"]}} == Funkcja liczy, ile jest prawych ukośników w adresie strony podany jako pierwszy parametr ramki. * 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. ; Parametry fubkcji{{dk}} * {{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}}}} == {{Śródtytuł|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}}{{Code|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}} == Funkcja liczy maksymalny numer kolejnej strony liczonej według wzoru {{Code|wzor}}, musi być we wzorze podany element {{Code|<nowiki>{{_}}</nowiki>}}, aby mógł to robić. * 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/”, czyli dla stron o ogólnym wzorze: {{Parametr|wzór|{{Ns:Template}}:Polecane książki/{{((}}_{{))}}}}. ; Parametry funkcji{{dk}} * {{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 == === {{Śródtytuł|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}}{{Code|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}} === Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy minimalny numer takich zmiennych. * 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*)}}. ; Parametry funkcji{{dk}} * {{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}}}} === {{Śródtytuł|p.IleJestTakichOdpowiednikowychZmiennych}}{{Code|p.IleJestTakichOdpowiednikowychZmiennych}} === Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy ile jest takich zmiennych. * 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. ; Parametry funkcji{{dk}} * {{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}}}} == {{Śródtytuł|p["Parametr w tablicy nazw"]}}{{Code|p["Parametr w tablicy nazw"]}} == Funkcja bada, czy jest taki parametr {{Code|pozycja}} w tablicy nazw określonej zmienną {{Code|parametry}}, której elementy są oddzielone średnikami. * 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. ; Parametry funkcji{{dk}} * {{Code|parametry}} - lista parametrów oddzielonych średnikiem, * {{Code|pozycja}} - szukana lista w tablicy parametrów, * {{Code|od dużej}} - czy parametr: {{Code|pozycja}}, i elementy listy: {{Code|parametry}}, 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}}, a to ostatnie jest to wartość języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, która po transformacji na wikikod jest zamieniana na ciąg pusty, więc ona nadaje się do instrukcji warunkowych. === 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> hh7vvoa95sqvzqke6ie735m0dgpoowq 553411 553408 2026-08-29T21:44:56Z Persino 2851 /* {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} */ 553411 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. Funkcje, w tym module, uruchamia się tylko w ramce w szablonie, bo są tylko do tego przygotowane. One służą do powtarzania parametrów rodzica, czy przodka, iteracji pojedynczego kroku wikikodu, jakiś sprawdzeń, do liczenia odpowiedników i związanych z tym parametrami, itp.. == Funcje lokalne modułu == === {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} === Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, tylko w module {{Code|{{ld2|Ramka}}}}, szablonów, modułów i parserów w ramce. Uruchamiana jest przez funkcje: {{LinkŚródtytuł|p.Szablon}} - funkcja do uruchamiania szablonów, {{LinkŚródtytuł|p["Moduł"]}} - funkcja do uruchamiania modułów, i {{LinkŚródtytuł|p.Parser}} - funkcja do uruchamiania parserów. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ParserBlokowy(frame, co_ma_wywolac)...end; </syntaxhighlight> ; Parametry funkcji{{dk}} * {{Code|frame}} {{Patrz|frame}} - funkcja ramkki funkcji tablica transportu modułu, * {{Code|co_ma_wywolac}} {{Patrz|co_ma_wywolac}} - ten parametr przyjmuje wartość liczbową, która jeżeli {{Tt|0}} - to uruchamiany jest szablon, jeżeli {{Tt|1}} - moduł, jeżeli {{Code|2}} - to parser, jeżeli on ma inne wartości, tzn.: {{Tt|2}}, a {{Tt|3}} i dalej, to już dany szablon. ; Parametry ramki funkcji tablicy transportu modułu{{dk}} * Parametry podstawowe: ** {{Code|Nazwa}} {{Patrz|Nazwa}} - jest to pełna nazwa szablonu, modułu, czy parsera, ** {{Code|bez argumentów rodzica}} {{Patrz|bez argumentów rodzica}} - tablica parametrów oddzielonych średnikami, których obiekt uruchamiany nie może przyjmować, nawet jeżeli one są, ** {{Code|nazwa szablonu rodzica}} {{Patrz|nazwa szablonu rodzica}} - jest to zmienna przechowująca nazwę szablonu rodzica ramki dziecka,a nawet któreś z jego przodków, ** {{Code|bez argumentów nienazwanych rodzica}} {{Patrz|bez argumentów nienazwanych rodzica}} - szablon w ramce nie przyjmuje parametrów nienazwanych, określonych liczbą, podanych w rodzicu ramki, ** {{Code|potomek}} {{Patrz|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}} {{Patrz|nie potomek}} - zmienna mówiąca, że to nie jest potomek szablonu, używana, gdy nie jest określona zmienna ramki {{LinkPatrz|zmienna z parametrami rodzica}}, wtedy taka ramka jest traktowana jak normalna ramka, której jedynie trzeba przekazać parametry rodzica, nie przodka, wtedy do niej nie są przekazywane parametry: {{LinkPatrz|parametry rodzica}} (ta zmienna jest wtedy ustawiana, gdy nie jest niepusty parametr {{LinkPatrz|bez dodatkowych sprawdzeń}}), {{LinkPatrz|bez argumentów szablonu}}, i {{LinkPatrz|nazwa szablonu rodzica}} (jeśli ta wartość rodzica nie istnieje, to nadawana jest jej aktualna nazwa szablonu rodzica, a nie przodka, normalnie jest to przodka, a w szczególności rodzica) i {{LinkPatrz|potomek}} (ustawiany na stałą wartość niepustą), ** {{Code|bez argumentów szablonu}} {{Patrz|bez argumentów szablonu}} - zmienna oddzielonych średnikami parametrów, których nie wolno uwzględniać w walidacji błędów w {{m|Sprawdź|Parametry}}, ta tablica jest wkładana do parametrów ramki, gdy nie podany jest niepusty parametr w niej {{Code|zmienna z argumentami ramki}} {{LinkPatrz|zmienna z argumentami ramki}}, a jeżeli ten argument jednak jest niepusty, wtedy do tej zmiennej są wliczane parametry ramki, które nie są argumentami wbudowanymi w tą funkcję. ** {{Code|bez dodatkowych sprawdzeń}} {{Patrz|bez dodatkowych sprawdzeń}} - nie jest uruchamiana walidacja parametrów szablonu rodzica, ** {{Code|parametry rodzica}} {{Patrz|parametry rodzica}} - zmienna przedstawiająca parametry rodzica, czy któreś ze przodków, przekazane do ramki: {{m|Sprawdź|Parametry}} - dodane przez tę funkcję, ** {{Code|zmienna z parametrami rodzica}} {{Patrz|zmienna z parametrami rodzica}} - parametr mówiący, czy ma tworzyć zmienne z parametrami rodzica {{LinkPatrz|parametry rodzica}}, a jeżeli nie jest on, z zadnych z jego potomków podany, to zmienna {{LinkPatrz|parametry rodzica}} jest przekazywana na kolejnego przodka, ** {{Code|zmienna z argumentami ramki}} {{Patrz|zmienna z argumentami ramki}} - zmienna mówiąca, czy mają być tworzone parametry ramki, które nie są sprawdzane 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}} {{Patrz|zmienna z nazwą szablonu rodzica}} - parametr, czy ma tworzyć zmienną: {{LinkPatrz|nazwa szablonu rodzica}}, ** {{Code|parametry funkcji modułu pudełek}} {{Patrz|parametry funkcji modułu pudełek}} - czy do funkcji mają wchodzić parametry modułu pudełek, które są ponumerowane dodatkowym numerkiem, ** {{Code|parametry podstawowe funkcji modułu pudełek}} {{Patrz|parametry podstawowe funkcji modułu pudełek}} - czy do funkcji mają wchodzić podstawowe parametry funkcji modułu pudełek, te które nie mają dodatkowego numerka, ** {{Code|usuń z parametrów ramki}} {{Patrz|usuń z parametrów ramki}} - parametry ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, przedstawiający zmienne oddzielone średnikami, które nie mają być uwzględnione przy uruchamianiu danego obiektu. * {{Code|Funkcja}} {{Patrz|Funkcja}} - nazwa funkcji w module, który ma wywołać w ramce ta funkcja, w przypadku, gdy parametr {{LinkPatrz|co_ma_wywolac}} ma wartość {{Tt|1}}, czyli wywołujemy funkcję {{LinkŚródtytuł|p["Moduł"]}}. Funkcja uruchamia szablon, moduł, czy ramkę, w zależności od drugiego parametru funkcji, z parametrami rodzica ramki bez parametrów opisanych zmienną: {{LinkPatrz|bez argumentów szablonu}}, i bez parametrów ramki wskazanych przez: {{Code|usuń z parametrów ramki}}. Za pomocą tej funkcji możemy wielopoziomowo wywoływać funkcje przekazując parametry od najwyższego poziomu do najniższego. Ta funkcja służy przede wszystkim 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 do uruchamiania szablonów, a uruchamianie funkcji modułu, w tym funkcji {{m|Cytuj|custom}} w szablonie {{s|PrzypisStrona}}. Przykładem wywołania szablonu, która jest w szablonie: {{s|Wzór}}, w którym jest wywoływany inny szablon, tym razem silnik, tzn. {{s|Wzór/silnik}}: <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> === {{Śródtytuł|BudowaSzereguZDanych}}{{Code|BudowaSzereguZDanych}} === Funkcja do uruchamiania się 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> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tab_lancuch}} {{Patrz|tab_lancuch}} - pewna tablica transportu funkcji. * Zmienne do mikroszablonów: ** {{Code|minimum}} {{Patrz|minimum}} - liczba mówiąca o minimum, ** {{Code|maksimum}} {{Patrz|maksimum}} - liczba mówiąca o maksimum. Parametry ramki funkcji tablicy transportu modułu: * {{Code|akapit}} {{Patrz|akapit}} - jeśli niepusta, to ona definiuje akapit ze znaków {{Code|\n\n}}, przeciwnym wypadku elementy łańcucha nie są łączone w akapity, * {{Code|przecinek}} {{Patrz|przecinek}} - jeśli niepuste, to mówi, że pomiędzy elementami powiniem być przecinek: {{Code|", "}}, został on specjalnie objęty w cudzysłowy, aby zilustrować, że po przecinku znajduje się spacja, * {{Code|nowa linia}} {{Patrz|nowa linia}} - w przeciwieństwo do zmiennej {{LinkPatrz|akapit}}, używany zamiast niej, pisze jedną nową linię, a nie dwie, jako: {{Code|\n}}, * {{Code|wyliczanka}} {{Patrz|wyliczanka}} - wylicza elementy z przecinkami, stawiając przed ostatnim elementem zamiast jego wyraz wyliczania {{Code|i}}, * {{Code|początek}} {{Patrz|początek}} - mówi, że na początku musi znajdować się przecinek, * {{Code|myślnik}} {{Patrz|myślnik}} - mówi, że jeśli nie ma początku przecinka, to stawiany jest myślnik, używany zamiast {{LinkPatrz|początek}}, * {{Code|warunkowe}} {{Patrz|warunkowe}} - instrukcje wikikodu, takie jak: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}, zostaną w kodzie rozwinięte, a później ciągłe właściwe elementy wikikodu otoczone dwoma dolnymi myślnikami zostaną rozwinięte do pewnej postaci, funkcja używa do tego {{LinkŚródtytuł|p.InstrukcjeWarunkowe}}, ** {{Code|parametr}} {{Patrz|parametr}} - używany w towarzystwie z {{LinkPatrz|warunkowe}}, mówiący że, derektywy znakowe ciągłe otoczone dwoma dolnymi myślnikami, zostaną zastąpione odpowiedmimi szablonami, w przeciwnym wypadku niepodania tej wartości lub jego pustej, wtedy te derektywy zostaną zastąpione w postaci rozwiniętej tych szablonów. ** Funkcja w tym warunku zwraca ciąg znaków rozwiniętego warunku. Funkcja posiada też mikroszablony, które są zdefiniowane w kodzie łańcuchów {{LinkPatrz|tab_lancuch}}: * {{Code|<nowiki>{{min}}</nowiki>}} - minimalna wartość szeregu zmiennych, określana przez {{LinkPatrz|minimum}}, * {{Code|<nowiki>{{max}}</nowiki>}} - a tutaj ich maksymalna, określana przez {{LinkPatrz|maksimum}}. Te dwie zmienne są podstawiane do uzyskanego ciągu. Funkcja zwraca te części rozwiniętego tekstu wikikodu, jeśli podano {{LinkPatrz|warunkowe}}, co do instrukcji warunkowych, i też te bez wewnętrznych klamerek, czyli specjalne kody, czyli te otoczone z dwóch stron dolnumi myślnikami, a pozostałe część tak uzyskana jest za to nierozwinięta. == {{Śródtytuł|p.InstrukcjeWarunkowe}}{{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}} {{Patrz|ciag}} - podany ciąg do rozwinięcia z instrukcji warunkowych wewnątrz nie posiadający klamerek, * {{Code|derektywy_specjalne}} {{Patrz|derektywy_specjalne}} - używa do zastępowania specjalnych derektyw, podane po prawej stronie w ramce pływającej, * {{Code|derektywy_parametrowe}} {{Patrz|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: {{LinkŚródtytuł|BudowaSzereguZDanych}}, poprzez: {{LinkŚródtytuł|p.Powtarzaj}}. 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 == === {{Śródtytuł|p.RozpakujArgumenty}}{{Code|p.RozpakujArgumenty}} === Ta funkcja jest do rozpakowywania zmiennych z podanego parametru, których zmienne są oddzieloe średnikami. * Funkcja uruchamia się 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. === {{Śródtytuł|p.PakujParametry}}{{Code|p.PakujParametry}} === Ta funkcja jest do pakowania tablicy, języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w tablicę {{lpg|JSON}}. * Funkcja się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Funkcja pakuje parametry tablicy {{lpg|Lua}} do tablicy: {{lpg|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> Parametry funkcji: * {{Code|args}} {{Patrz|args}} - tablica {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Ten szablon nazywa parametry, jakby nienazwane w tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera) z tablicy {{lpg|Lua}} (tutaj od jedynki), do tablicy nazwanej, jak to robi się w {{lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonEncode}}, z drugim parametrem: {{Code|mw.text.JSON_PRESERVE_KEYS}} {{Patrz|mw.text.JSON_PRESERVE_KEYS}}. === {{Śródtytuł|p.RozpakujParametry}}{{Code|p.RozpakujParametry}} === Ta funkcja jest do rozpakowywania tablicy {{lpg|JSON}} w tablicę języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}} * 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 w niej zwracany. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.RozpakujParametry = function (zmienna_z_parametrami) return mw.text.jsonDecode(zmienna_z_parametrami,mw.text.JSON_PRESERVE_KEYS); end; </syntaxhighlight> Parametry funkcji: * {{Code|zmienna_z_parametrami}} {{Patrz|zmienna_z_parametrami}} - tablica {{lpg|JSON}}. Ten szablon nazywa parametry nienazwane w tablicy {{lpg|Lua}} (tutaj od jedynki) z tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera), do tablicy nienazwanej z nazwanej, jak to robi się w {{Lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonDecode}}, z użyciem drugiego parametru: {{LinkPatrz|mw.text.JSON_PRESERVE_KEYS}}. == {{Śródtytuł|p["Rozwiń"]}}{{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> Parameetry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon rozwija wikikod podany w zmiennej {{Code|1}}, w parametrach szablonu rodzica. * 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}}: <syntaxhighlight lang="lua"> p["Rozwiń"] = function(frame) return frame:getParent():preprocess(frame.args[1]); end; </syntaxhighlight> == {{Śródtytuł|p.Log}}{{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> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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}}: <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 == === {{Śródtytuł|p.Szablon}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p.Szablon = function(frame) return ParserBlokowy(frame,0); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Szablon|Nazwa=<nazwa szablonu>|...}} </syntaxhighlight> === {{Śródtytuł|p["Moduł"]}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p["Moduł"] = function(frame) return ParserBlokowy(frame,1); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Moduł|Nazwa=<nazwa modułu>|Funkcja=<nazwa funkcji>|...}} </syntaxhighlight> === {{Śródtytuł|p.Parser}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p.Parser = function(frame) return ParserBlokowy(frame,2); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Parser|Nazwa=<nazwa parsera>|...}} </syntaxhighlight> == Funkcje książkowe == === {{Śródtytuł|p.Q}}{{Code|p.Q}} === Funkcja uruchamiana we wnętrzu szablonu {{s|Q}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on. * Jego specjalne odpowiedniki to {{s|T}} i {{s|T2}}. Funkcja uruchamia szablon o podanej nazwie w pierwszym parametrze z dodanym przedrostkiem {{Code|Książka:}} przed nazwą szablonu. * Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.Q =function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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ą (parametry nazwane, które są wliczane 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}}}} === {{Śródtytuł|p.N}}{{Code|p.N}} === Funkcja uruchamiana we wnętrzu szablonu {{s|N}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on. Funkcja przed nazwą szablonu, czy modułu, zostawia w wpis w postaci przedrostka {{Code|Książka:}}. Czy zostanie dodana przed tym nazwa przestrzeni nazw, to zależy od niepodania niepustej zmiennej {{Parametr|n}}, a zmienna {{Parametr|p|1}} - to przed nim jest dodawana przestrzeń nazw szablonu {{Np|Template|link=tak}}, {{Parametr|p|2}} - modułu {{Np|Module|link=tak}} i {{Parametr|p|3}} - kategorii. * Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.N=function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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}}}} === {{Śródtytuł|p.A}}{{Code|p.A}} === Funkcja uruchamiana we wnętrzu szablonu {{s|A}}, która przyjmuje jego parametry, i tak samo działa, jak on. Funkcja usuwa przedrostek {{Code|Książka:}} w nazwie szablonu, czy modułu. Gdy jest podany parametr: {{Parametr|p|tak}}, to dla przestrzeni niebędących: {{Np|Template|link=tak}}, {{Np|Module|link=tak}} i {{Np|Category|link=tak}}, jest zwracany wtedy przez nią parametr pierwszy funkcji. Dla tych wartości właśnie wyliczonych przestrzeni usuwany jest przedrostek {{Code|Książka:}}. Funkcja generuje nazwę z prestrzenią nazw. * Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.A=function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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 == === {{Śródtytuł|p.Powtarzaj}}{{Code|p.Powtarzaj}} === Funkcja służy do powtarzalnego generowania wikikodu ze składników jego kroku przy pomocy określonych zmiennych rodzica. * Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.Powtarzaj = function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Funkcja może przyjmować tylko parametry nienazwane albo tylko nazwane, albo nienazwane i nazwane (gdy jest ustawiony parametr {{Code|różne}} {{Patrz|różne}}). 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}} {{LinkPatrz|różne}}, która wtedy ma wskazywać na wartość niepustą. ; Najważniejsze parametry, które są to opcjonalne, to są{{dk}} * {{Code|start}} {{Patrz|start}} - liczba, która wskazuje początek liczenia - domyślna wartość to {{Code|1}}, * {{Code|koniec}} {{Patrz|koniec}} - liczba, która wskazuje koniec liczenia. ; Numer końca liczenia parametrów nienazwanych lub nazwanych, czy nazwanychi nienazwanych{{dk}} * Elementy w {{Code|parametry}} {{Patrz|parametry}} mogą modyfikować odpowiednio parametry: {{Code|start}} {{LinkPatrz|start}} i {{Code|koniec}} {{LinkPatrz|koniec}}. * Ze zmiennej {{LinkPatrz|parametry}} jest liczona odpowiednia zmienna {{LinkPatrz|tabela}} dopuzczalnych zmiennych do liczenia. * Funkcja {{Code|Wylicz_skoncz_na_koncu}},którego algorytm podomy w tej poyzcji, tzn. koniec liczenia parametrów nienazwanych musi być policzony, jeżeli nie ma parametrów nazwanych w tabeli {{Code|tabela}} {{Patrz|tabela}}. A przeciwnie, jeżeli nie jest ustawiony parametr {{Code|różne}} {{LinkPatrz|różne}} nie na wartość niepustą, wtedy jest liczony parametr maksimum parametrów nazwanych, przeciwnie wtedy liczy się parametr maksimum numeracyjne parametrów numerowanych, czyli zmienną: {{Code|maksimum numeracyjne}} {{Patrz|maksimum numeracyjne}}, jeśli on ma wartość niepustą, wtedy liczy się maksimum parametrów nienazwanych, a jeżeli ona ma przeciwną wartość, to się liczy maksimum parametrów nazwanych, jak nienazwanych. Na podstawie tego mamy policzony odpowiednio taki koniec liczenia modyfikacji zwracany i policzony przez tą funkcję. ; Parametr {{Code|dodatkowe}}{{dk}} * To maksimum parametrów nazwanych, dla jakieś podstawy parametrów, są pomijane parametry z: {{Code|dodatkowe}}, która jest zestawem podstaw parametrów oddzielonych średnikami, jest właśnie podany ten parametr w nim. Przykładem jego jest: * {{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. ; Format parametru {{Parametr|parametry}}{{dk}} * 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 równa liczbie {{Code|5}}, oddzielonych średnikami. ; Opis parametru {{Parametr|parametry}}{{dk}} 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 w wartościach: {{Code|zmienna 1>}}, {{Code|<zmienna 2>}} i {{Code|<zmienna 3>}}, w których są pewne nazwy bazowe parametrów bez numerka na jej końcu, w zmiennej {{Code|parametry}} można nie podawać dalszych elementów 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ć nawet tego znaku,gdy nic nie ma po równa się) dla danego problemu funkcji. ; Wikikod pojedynczego kroku liczenia całości wygenerowanego wikikodu dla wszystkich zmiennych{{dk}} * 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)}}. ; Parametr {{Parametr|start}}, wartość początkowa{{dk}} * Gdy parametr {{Code|tonumber(frame.args["start"]) or 1}}, jest równy zero, funkcja zwraca błąd: {{Code|(początek jest ustawiony na zero)}}. ; Brak parametrów szablonu{{dk}} * 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. ; Parametr {{Parametr|nic}}{{dk}} * Gdy {{Code|nic}} przyjmuje wartość, i gdy pomijamy parametr, lub on przyjmuje wartość pustą, wtedy a funkcja nie może wygenerować żadnego kroku iteracji, to wtedy jest zwracana wartość parametru {{Code|nic}} lub ciąg pusty. ; Inne parametry{{dk}} * Parametr {{Code|po kolei}} {{Patrz|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|zaznacz}} {{Patrz|zaznacz}} - liczby oddzielone średnikami, które przy parametrach nazwanych o pewnych numerach i numerkach nie mają być uwzględnione przy niepustym parametrze {{Code|po kolei}} {{LinkPatrz|po kolei}}, a przy jego przeciwnej wartości za to mają być użyte. * 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}} {{Patrz|_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>}}. Domyślną wartością {{Code|_i}} jest {{Code|_}}. ; W wyniku iteracji otrzymamy tablicę ciągów łańcuchów z wikikodami, wtedy ta funkcja używa do tego liczenia{{dk}} * Jest to funkcja {{LinkŚródtytuł|BudowaSzereguZDanych}}. * Wywołanie funkcji jest takie: {{Pre|lancuch_znakow {{=}} BudowaSzereguZDanych(frame,tab_lancuch,minimum or 0,maksimum);}} ; Parametry funkcji {{LinkŚródtytuł|BudowaSzereguZDanych}}. * One są wraz z jego parametrami podane w postaci jego parametrów ramki {{Code|frame}}, które jednocześnie są parametrami {{LinkŚródtytuł|p.Powtarzaj}}, używa się je 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ą {{LzLua|frame:preprocess}}, i jest zwracany jako wartość omawianej funkcji. ; Przykłady{{dk}} * Funkcja jest używana np. w silnikach szablonów, np.: {{s|Osobny artykuł/silnik}} szablonu {{s|Osobny artykuł}}, jak i do niego 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}}. === {{Śródtytuł|p.PowtarzajOdDo}}{{Code|p.PowtarzajOdDo}} === Funkcja służy do iteracji, od jakieś liczby do jakieś innej, podanego wikikodu dla danego kroku {{Code|1}}, iterując to, co krok określony zmienną: {{Code|krok}}. * 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ę{{dk}} {{nobold|{{Code|{{m|Ramka|Rozwiń}}}}}}, lub go rozwija na końcu, na podstawie kolejnych kroków iteracji{{dk}} * {{Code|start}} - początek iteracji dokonywany przez ta funkcję, * {{Code|koniec}} - koniec iteracji dokonywany przez ta funkcję, * {{Code|krok}} - krok iteracji, co który numer 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{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}} * {{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ą{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}} * {{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{{dk}} {{nobold|{{s|Chem/silnik}}}}, w tym nadrzędnym{{dk}} {{nobold|{{s|Chem}}}}, przykłady jego działania{{dk}} * {{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. === {{Śródtytuł|p["PrzetwarzajIterującCiąg"]}}{{Code|p["PrzetwarzajIterującCiąg"]}} === Funkcja do iteracji wikikodu po parametrach oddzielonych średniami w parametrze ramki {{Code|cią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{{dk}} * {{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{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}} * {{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ą{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}} * {{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>}} jest kolejny parametr, oddzielonych od pozastałych średniami, z: {{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}}: {{LzLua|frame:preprocess}}, jeśli: {{Code|nie rozwiń}}, nie przybiera wartości niepustej. === {{Śródtytuł|p["PowtarzajWedług"]}}{{Code|p["PowtarzajWedług"]}} === Funkcja wyszukująca elementy według wzoru począwszy od numeru, określonego przez {{Code|start}}, aż do zakończenia danych kolenych sprawdzania od tej liczby, czy taka strona istnieje, numerek jest określony przez pewien wikikod, określony przez {{Code|<nowiki>{{_}}</nowiki>}}, którymusi być podany we wzorze {{Code|wzor}}. Ona w ten sposób dla istniejących stron ustawia pewne łańcuchy, które są łączone znakami {{Code|", "}}, a na końcu samym {{Code|" i "}}. 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 strony{{dk}} {{nobold|„{{Ns:Template}}{{dk}}Polecane książki/”}}, a oto przykład{{dk}}{{nobold|{{Parametr|wzór|{{Ns:Template}}{{dk}}Polecane książki/{{((}}_{{))}}}}}}{{dk}} * {{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}}}} == {{Śródtytuł|p["LiczbaPrawychUkośników"]}}{{Code|p["LiczbaPrawychUkośników"]}} == Funkcja liczy, ile jest prawych ukośników w adresie strony podany jako pierwszy parametr ramki. * 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. ; Parametry fubkcji{{dk}} * {{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}}}} == {{Śródtytuł|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}}{{Code|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}} == Funkcja liczy maksymalny numer kolejnej strony liczonej według wzoru {{Code|wzor}}, musi być we wzorze podany element {{Code|<nowiki>{{_}}</nowiki>}}, aby mógł to robić. * 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/”, czyli dla stron o ogólnym wzorze: {{Parametr|wzór|{{Ns:Template}}:Polecane książki/{{((}}_{{))}}}}. ; Parametry funkcji{{dk}} * {{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 == === {{Śródtytuł|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}}{{Code|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}} === Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy minimalny numer takich zmiennych. * 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*)}}. ; Parametry funkcji{{dk}} * {{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}}}} === {{Śródtytuł|p.IleJestTakichOdpowiednikowychZmiennych}}{{Code|p.IleJestTakichOdpowiednikowychZmiennych}} === Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy ile jest takich zmiennych. * 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. ; Parametry funkcji{{dk}} * {{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}}}} == {{Śródtytuł|p["Parametr w tablicy nazw"]}}{{Code|p["Parametr w tablicy nazw"]}} == Funkcja bada, czy jest taki parametr {{Code|pozycja}} w tablicy nazw określonej zmienną {{Code|parametry}}, której elementy są oddzielone średnikami. * 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. ; Parametry funkcji{{dk}} * {{Code|parametry}} - lista parametrów oddzielonych średnikiem, * {{Code|pozycja}} - szukana lista w tablicy parametrów, * {{Code|od dużej}} - czy parametr: {{Code|pozycja}}, i elementy listy: {{Code|parametry}}, 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}}, a to ostatnie jest to wartość języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, która po transformacji na wikikod jest zamieniana na ciąg pusty, więc ona nadaje się do instrukcji warunkowych. === 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> 30h738boa1u8uqsd0bvuck010a0hz0n 553413 553411 2026-08-29T22:20:00Z Persino 2851 /* {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} */ 553413 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. Funkcje, w tym module, uruchamia się tylko w ramce w szablonie, bo są tylko do tego przygotowane. One służą do powtarzania parametrów rodzica, czy przodka, iteracji pojedynczego kroku wikikodu, jakiś sprawdzeń, do liczenia odpowiedników i związanych z tym parametrami, itp.. == Funcje lokalne modułu == === {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} === Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, tylko w module {{Code|{{ld2|Ramka}}}}, szablonów, modułów i parserów w ramce. Uruchamiana jest przez funkcje: {{LinkŚródtytuł|p.Szablon}} - funkcja do uruchamiania szablonów, {{LinkŚródtytuł|p["Moduł"]}} - funkcja do uruchamiania modułów, i {{LinkŚródtytuł|p.Parser}} - funkcja do uruchamiania parserów. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ParserBlokowy(frame, co_ma_wywolac)...end; </syntaxhighlight> ; Parametry funkcji{{dk}} * {{Code|frame}} {{Patrz|frame}} - funkcja ramkki funkcji tablica transportu modułu, * {{Code|co_ma_wywolac}} {{Patrz|co_ma_wywolac}} - ten parametr przyjmuje wartość liczbową, która jeżeli {{Tt|0}} - to uruchamiany jest szablon, jeżeli {{Tt|1}} - moduł, jeżeli {{Code|2}} - to parser, jeżeli on ma inne wartości, tzn.: {{Tt|2}}, a {{Tt|3}} i dalej, to już dany szablon. ; Parametry ramki funkcji tablicy transportu modułu{{dk}} * Parametry podstawowe: ** {{Code|Nazwa}} {{Patrz|Nazwa}} - jest to pełna nazwa szablonu, modułu, czy parsera, ** {{Code|bez argumentów rodzica}} {{Patrz|bez argumentów rodzica}} - tablica parametrów oddzielonych średnikami, których obiekt uruchamiany nie może przyjmować, nawet jeżeli one są, ** {{Code|nazwa szablonu rodzica}} {{Patrz|nazwa szablonu rodzica}} - jest to zmienna przechowująca nazwę szablonu rodzica ramki dziecka,a nawet któreś z jego przodków, ** {{Code|bez argumentów nienazwanych rodzica}} {{Patrz|bez argumentów nienazwanych rodzica}} - szablon w ramce nie przyjmuje parametrów nienazwanych, określonych liczbą, podanych w rodzicu ramki, ** {{Code|potomek}} {{Patrz|potomek}} - zmienna mówiąca, że to jest potomek rodzica ramki, tą zmienną podaje się w parametrze {{Code|bez argumentów rodzica}} {{LinkPatrz|bez argumentów rodzica}}, jeżeli nie jest podany parametr {{Code|nie potomek}} - dodane przez tę funkcję, tej zmiennej nie używa się bezpośrednio w kodzie ramki, sama ta ramka tworzy automatycznie ten niepusty parametr, jedynie go można użyć przy wielopoziomowym przekazywaniu parametrów rodzica, do ustawiania pewnych wartości prametrów w budowanych w tą funkcję, ** {{Code|nie potomek}} {{Patrz|nie potomek}} - zmienna mówiąca, że to nie jest potomek szablonu, używana, gdy nie jest określona istniejąca zmienna ramki {{LinkPatrz|zmienna z parametrami rodzica}}, wtedy taka ramka jest traktowana jak normalna ramka, której jedynie trzeba przekazać parametry rodzica, nie przodka, wtedy do niej nie są przekazywane parametry: {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}} (ta zmienna jest wtedy ustawiana, gdy nie jest niepusty parametr {{Code|bez dodatkowych sprawdzeń}} {{LinkPatrz|bez dodatkowych sprawdzeń}}), {{Code|bez argumentów szablonu}} {{LinkPatrz|bez argumentów szablonu}} i {{LinkPatrz|potomek}} (ustawiany na stałą wartość niepustą). Jeżeli zmienna ogólnie {{Code|nie potomek}} {{LinkPatrz|nie potomek}} tam została podana, lub nie, wtedy zawsze {{Code|nazwa szablonu rodzic}} {{LinkPatrz|nazwa szablonu rodzica}} (jeśli ta wartość rodzica nie istnieje, to nadawana jest jej aktualna nazwa szablonu rodzica, a nie przodka, normalnie jest to przodka, a w szczególności rodzica). ** {{Code|bez argumentów szablonu}} {{Patrz|bez argumentów szablonu}} - zmienna oddzielonych średnikami parametrów, których nie wolno uwzględniać w walidacji błędów w {{m|Sprawdź|Parametry}}, ta tablica jest wkładana do parametrów ramki, gdy nie podany jest niepusty parametr w niej {{Code|zmienna z argumentami ramki}} {{LinkPatrz|zmienna z argumentami ramki}}, a jeżeli ten argument jednak jest niepusty, wtedy do tej zmiennej są wliczane parametry ramki, które nie są argumentami wbudowanymi w tą funkcję. ** {{Code|bez dodatkowych sprawdzeń}} {{Patrz|bez dodatkowych sprawdzeń}} - nie jest uruchamiana walidacja parametrów szablonu rodzica, ** {{Code|parametry rodzica}} {{Patrz|parametry rodzica}} - zmienna przedstawiająca parametry rodzica, czy któreś ze przodków, przekazane do ramki: {{m|Sprawdź|Parametry}} - dodane przez tę funkcję, ** {{Code|zmienna z parametrami rodzica}} {{Patrz|zmienna z parametrami rodzica}} - parametr mówiący, czy ma tworzyć zmienne z parametrami rodzica {{LinkPatrz|parametry rodzica}}, a jeżeli nie jest on, z zadnych z jego potomków podany, to zmienna {{LinkPatrz|parametry rodzica}} jest przekazywana na kolejnego przodka, ** {{Code|zmienna z argumentami ramki}} {{Patrz|zmienna z argumentami ramki}} - zmienna mówiąca, czy mają być tworzone parametry ramki, które nie są sprawdzane 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}} {{Patrz|zmienna z nazwą szablonu rodzica}} - parametr, gdy niepusty, wtedy jest tworzona zmienna: {{LinkPatrz|nazwa szablonu rodzica}}, niepusty parametr {{Code|potomek}} {{LinkPatrz|potomek}}, tworzona jest niepusta lista parametrów {{Code|bez argumentów szablonu}} {{LinkPatrz|bez argumentów szablonu}}, powtarzana jest zmienna {{Code|bez dodatkowych sprawdzeń}} {{LinkPatrz|bez dodatkowych sprawdzeń}}, i tworzona jest dodatkowa parametr z {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}}, jeśli nie podano niepustego parametru {{Code|bez dodatkowych sprawdzeń}} {{LinkPatrz|bez dodatkowych sprawdzeń}}, ** {{Code|parametry funkcji modułu pudełek}} {{Patrz|parametry funkcji modułu pudełek}} - czy do funkcji mają wchodzić parametry modułu pudełek, które są ponumerowane dodatkowym numerkiem, ** {{Code|parametry podstawowe funkcji modułu pudełek}} {{Patrz|parametry podstawowe funkcji modułu pudełek}} - czy do funkcji mają wchodzić podstawowe parametry funkcji modułu pudełek, te które nie mają dodatkowego numerka, ** {{Code|usuń z parametrów ramki}} {{Patrz|usuń z parametrów ramki}} - parametry ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, przedstawiający zmienne oddzielone średnikami, które nie mają być uwzględnione przy uruchamianiu danego obiektu. * {{Code|Funkcja}} {{Patrz|Funkcja}} - nazwa funkcji w module, który ma wywołać w ramce ta funkcja, w przypadku, gdy parametr {{LinkPatrz|co_ma_wywolac}} ma wartość {{Tt|1}}, czyli wywołujemy funkcję {{LinkŚródtytuł|p["Moduł"]}}. Funkcja uruchamia szablon, moduł, czy ramkę, w zależności od drugiego parametru funkcji, z parametrami rodzica ramki bez parametrów opisanych zmienną: {{LinkPatrz|bez argumentów szablonu}}, i bez parametrów ramki wskazanych przez: {{Code|usuń z parametrów ramki}}. Za pomocą tej funkcji możemy wielopoziomowo wywoływać funkcje przekazując parametry od najwyższego poziomu do najniższego. Ta funkcja służy przede wszystkim 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 do uruchamiania szablonów, a uruchamianie funkcji modułu, w tym funkcji {{m|Cytuj|custom}} w szablonie {{s|PrzypisStrona}}. Przykładem wywołania szablonu, która jest w szablonie: {{s|Wzór}}, w którym jest wywoływany inny szablon, tym razem silnik, tzn. {{s|Wzór/silnik}}: <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> === {{Śródtytuł|BudowaSzereguZDanych}}{{Code|BudowaSzereguZDanych}} === Funkcja do uruchamiania się 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> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tab_lancuch}} {{Patrz|tab_lancuch}} - pewna tablica transportu funkcji. * Zmienne do mikroszablonów: ** {{Code|minimum}} {{Patrz|minimum}} - liczba mówiąca o minimum, ** {{Code|maksimum}} {{Patrz|maksimum}} - liczba mówiąca o maksimum. Parametry ramki funkcji tablicy transportu modułu: * {{Code|akapit}} {{Patrz|akapit}} - jeśli niepusta, to ona definiuje akapit ze znaków {{Code|\n\n}}, przeciwnym wypadku elementy łańcucha nie są łączone w akapity, * {{Code|przecinek}} {{Patrz|przecinek}} - jeśli niepuste, to mówi, że pomiędzy elementami powiniem być przecinek: {{Code|", "}}, został on specjalnie objęty w cudzysłowy, aby zilustrować, że po przecinku znajduje się spacja, * {{Code|nowa linia}} {{Patrz|nowa linia}} - w przeciwieństwo do zmiennej {{LinkPatrz|akapit}}, używany zamiast niej, pisze jedną nową linię, a nie dwie, jako: {{Code|\n}}, * {{Code|wyliczanka}} {{Patrz|wyliczanka}} - wylicza elementy z przecinkami, stawiając przed ostatnim elementem zamiast jego wyraz wyliczania {{Code|i}}, * {{Code|początek}} {{Patrz|początek}} - mówi, że na początku musi znajdować się przecinek, * {{Code|myślnik}} {{Patrz|myślnik}} - mówi, że jeśli nie ma początku przecinka, to stawiany jest myślnik, używany zamiast {{LinkPatrz|początek}}, * {{Code|warunkowe}} {{Patrz|warunkowe}} - instrukcje wikikodu, takie jak: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}, zostaną w kodzie rozwinięte, a później ciągłe właściwe elementy wikikodu otoczone dwoma dolnymi myślnikami zostaną rozwinięte do pewnej postaci, funkcja używa do tego {{LinkŚródtytuł|p.InstrukcjeWarunkowe}}, ** {{Code|parametr}} {{Patrz|parametr}} - używany w towarzystwie z {{LinkPatrz|warunkowe}}, mówiący że, derektywy znakowe ciągłe otoczone dwoma dolnymi myślnikami, zostaną zastąpione odpowiedmimi szablonami, w przeciwnym wypadku niepodania tej wartości lub jego pustej, wtedy te derektywy zostaną zastąpione w postaci rozwiniętej tych szablonów. ** Funkcja w tym warunku zwraca ciąg znaków rozwiniętego warunku. Funkcja posiada też mikroszablony, które są zdefiniowane w kodzie łańcuchów {{LinkPatrz|tab_lancuch}}: * {{Code|<nowiki>{{min}}</nowiki>}} - minimalna wartość szeregu zmiennych, określana przez {{LinkPatrz|minimum}}, * {{Code|<nowiki>{{max}}</nowiki>}} - a tutaj ich maksymalna, określana przez {{LinkPatrz|maksimum}}. Te dwie zmienne są podstawiane do uzyskanego ciągu. Funkcja zwraca te części rozwiniętego tekstu wikikodu, jeśli podano {{LinkPatrz|warunkowe}}, co do instrukcji warunkowych, i też te bez wewnętrznych klamerek, czyli specjalne kody, czyli te otoczone z dwóch stron dolnumi myślnikami, a pozostałe część tak uzyskana jest za to nierozwinięta. == {{Śródtytuł|p.InstrukcjeWarunkowe}}{{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}} {{Patrz|ciag}} - podany ciąg do rozwinięcia z instrukcji warunkowych wewnątrz nie posiadający klamerek, * {{Code|derektywy_specjalne}} {{Patrz|derektywy_specjalne}} - używa do zastępowania specjalnych derektyw, podane po prawej stronie w ramce pływającej, * {{Code|derektywy_parametrowe}} {{Patrz|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: {{LinkŚródtytuł|BudowaSzereguZDanych}}, poprzez: {{LinkŚródtytuł|p.Powtarzaj}}. 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 == === {{Śródtytuł|p.RozpakujArgumenty}}{{Code|p.RozpakujArgumenty}} === Ta funkcja jest do rozpakowywania zmiennych z podanego parametru, których zmienne są oddzieloe średnikami. * Funkcja uruchamia się 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. === {{Śródtytuł|p.PakujParametry}}{{Code|p.PakujParametry}} === Ta funkcja jest do pakowania tablicy, języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w tablicę {{lpg|JSON}}. * Funkcja się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Funkcja pakuje parametry tablicy {{lpg|Lua}} do tablicy: {{lpg|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> Parametry funkcji: * {{Code|args}} {{Patrz|args}} - tablica {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Ten szablon nazywa parametry, jakby nienazwane w tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera) z tablicy {{lpg|Lua}} (tutaj od jedynki), do tablicy nazwanej, jak to robi się w {{lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonEncode}}, z drugim parametrem: {{Code|mw.text.JSON_PRESERVE_KEYS}} {{Patrz|mw.text.JSON_PRESERVE_KEYS}}. === {{Śródtytuł|p.RozpakujParametry}}{{Code|p.RozpakujParametry}} === Ta funkcja jest do rozpakowywania tablicy {{lpg|JSON}} w tablicę języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}} * 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 w niej zwracany. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.RozpakujParametry = function (zmienna_z_parametrami) return mw.text.jsonDecode(zmienna_z_parametrami,mw.text.JSON_PRESERVE_KEYS); end; </syntaxhighlight> Parametry funkcji: * {{Code|zmienna_z_parametrami}} {{Patrz|zmienna_z_parametrami}} - tablica {{lpg|JSON}}. Ten szablon nazywa parametry nienazwane w tablicy {{lpg|Lua}} (tutaj od jedynki) z tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera), do tablicy nienazwanej z nazwanej, jak to robi się w {{Lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonDecode}}, z użyciem drugiego parametru: {{LinkPatrz|mw.text.JSON_PRESERVE_KEYS}}. == {{Śródtytuł|p["Rozwiń"]}}{{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> Parameetry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon rozwija wikikod podany w zmiennej {{Code|1}}, w parametrach szablonu rodzica. * 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}}: <syntaxhighlight lang="lua"> p["Rozwiń"] = function(frame) return frame:getParent():preprocess(frame.args[1]); end; </syntaxhighlight> == {{Śródtytuł|p.Log}}{{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> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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}}: <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 == === {{Śródtytuł|p.Szablon}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p.Szablon = function(frame) return ParserBlokowy(frame,0); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Szablon|Nazwa=<nazwa szablonu>|...}} </syntaxhighlight> === {{Śródtytuł|p["Moduł"]}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p["Moduł"] = function(frame) return ParserBlokowy(frame,1); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Moduł|Nazwa=<nazwa modułu>|Funkcja=<nazwa funkcji>|...}} </syntaxhighlight> === {{Śródtytuł|p.Parser}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p.Parser = function(frame) return ParserBlokowy(frame,2); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Parser|Nazwa=<nazwa parsera>|...}} </syntaxhighlight> == Funkcje książkowe == === {{Śródtytuł|p.Q}}{{Code|p.Q}} === Funkcja uruchamiana we wnętrzu szablonu {{s|Q}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on. * Jego specjalne odpowiedniki to {{s|T}} i {{s|T2}}. Funkcja uruchamia szablon o podanej nazwie w pierwszym parametrze z dodanym przedrostkiem {{Code|Książka:}} przed nazwą szablonu. * Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.Q =function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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ą (parametry nazwane, które są wliczane 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}}}} === {{Śródtytuł|p.N}}{{Code|p.N}} === Funkcja uruchamiana we wnętrzu szablonu {{s|N}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on. Funkcja przed nazwą szablonu, czy modułu, zostawia w wpis w postaci przedrostka {{Code|Książka:}}. Czy zostanie dodana przed tym nazwa przestrzeni nazw, to zależy od niepodania niepustej zmiennej {{Parametr|n}}, a zmienna {{Parametr|p|1}} - to przed nim jest dodawana przestrzeń nazw szablonu {{Np|Template|link=tak}}, {{Parametr|p|2}} - modułu {{Np|Module|link=tak}} i {{Parametr|p|3}} - kategorii. * Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.N=function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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}}}} === {{Śródtytuł|p.A}}{{Code|p.A}} === Funkcja uruchamiana we wnętrzu szablonu {{s|A}}, która przyjmuje jego parametry, i tak samo działa, jak on. Funkcja usuwa przedrostek {{Code|Książka:}} w nazwie szablonu, czy modułu. Gdy jest podany parametr: {{Parametr|p|tak}}, to dla przestrzeni niebędących: {{Np|Template|link=tak}}, {{Np|Module|link=tak}} i {{Np|Category|link=tak}}, jest zwracany wtedy przez nią parametr pierwszy funkcji. Dla tych wartości właśnie wyliczonych przestrzeni usuwany jest przedrostek {{Code|Książka:}}. Funkcja generuje nazwę z prestrzenią nazw. * Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.A=function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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 == === {{Śródtytuł|p.Powtarzaj}}{{Code|p.Powtarzaj}} === Funkcja służy do powtarzalnego generowania wikikodu ze składników jego kroku przy pomocy określonych zmiennych rodzica. * Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.Powtarzaj = function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Funkcja może przyjmować tylko parametry nienazwane albo tylko nazwane, albo nienazwane i nazwane (gdy jest ustawiony parametr {{Code|różne}} {{Patrz|różne}}). 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}} {{LinkPatrz|różne}}, która wtedy ma wskazywać na wartość niepustą. ; Najważniejsze parametry, które są to opcjonalne, to są{{dk}} * {{Code|start}} {{Patrz|start}} - liczba, która wskazuje początek liczenia - domyślna wartość to {{Code|1}}, * {{Code|koniec}} {{Patrz|koniec}} - liczba, która wskazuje koniec liczenia. ; Numer końca liczenia parametrów nienazwanych lub nazwanych, czy nazwanychi nienazwanych{{dk}} * Elementy w {{Code|parametry}} {{Patrz|parametry}} mogą modyfikować odpowiednio parametry: {{Code|start}} {{LinkPatrz|start}} i {{Code|koniec}} {{LinkPatrz|koniec}}. * Ze zmiennej {{LinkPatrz|parametry}} jest liczona odpowiednia zmienna {{LinkPatrz|tabela}} dopuzczalnych zmiennych do liczenia. * Funkcja {{Code|Wylicz_skoncz_na_koncu}},którego algorytm podomy w tej poyzcji, tzn. koniec liczenia parametrów nienazwanych musi być policzony, jeżeli nie ma parametrów nazwanych w tabeli {{Code|tabela}} {{Patrz|tabela}}. A przeciwnie, jeżeli nie jest ustawiony parametr {{Code|różne}} {{LinkPatrz|różne}} nie na wartość niepustą, wtedy jest liczony parametr maksimum parametrów nazwanych, przeciwnie wtedy liczy się parametr maksimum numeracyjne parametrów numerowanych, czyli zmienną: {{Code|maksimum numeracyjne}} {{Patrz|maksimum numeracyjne}}, jeśli on ma wartość niepustą, wtedy liczy się maksimum parametrów nienazwanych, a jeżeli ona ma przeciwną wartość, to się liczy maksimum parametrów nazwanych, jak nienazwanych. Na podstawie tego mamy policzony odpowiednio taki koniec liczenia modyfikacji zwracany i policzony przez tą funkcję. ; Parametr {{Code|dodatkowe}}{{dk}} * To maksimum parametrów nazwanych, dla jakieś podstawy parametrów, są pomijane parametry z: {{Code|dodatkowe}}, która jest zestawem podstaw parametrów oddzielonych średnikami, jest właśnie podany ten parametr w nim. Przykładem jego jest: * {{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. ; Format parametru {{Parametr|parametry}}{{dk}} * 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 równa liczbie {{Code|5}}, oddzielonych średnikami. ; Opis parametru {{Parametr|parametry}}{{dk}} 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 w wartościach: {{Code|zmienna 1>}}, {{Code|<zmienna 2>}} i {{Code|<zmienna 3>}}, w których są pewne nazwy bazowe parametrów bez numerka na jej końcu, w zmiennej {{Code|parametry}} można nie podawać dalszych elementów 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ć nawet tego znaku,gdy nic nie ma po równa się) dla danego problemu funkcji. ; Wikikod pojedynczego kroku liczenia całości wygenerowanego wikikodu dla wszystkich zmiennych{{dk}} * 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)}}. ; Parametr {{Parametr|start}}, wartość początkowa{{dk}} * Gdy parametr {{Code|tonumber(frame.args["start"]) or 1}}, jest równy zero, funkcja zwraca błąd: {{Code|(początek jest ustawiony na zero)}}. ; Brak parametrów szablonu{{dk}} * 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. ; Parametr {{Parametr|nic}}{{dk}} * Gdy {{Code|nic}} przyjmuje wartość, i gdy pomijamy parametr, lub on przyjmuje wartość pustą, wtedy a funkcja nie może wygenerować żadnego kroku iteracji, to wtedy jest zwracana wartość parametru {{Code|nic}} lub ciąg pusty. ; Inne parametry{{dk}} * Parametr {{Code|po kolei}} {{Patrz|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|zaznacz}} {{Patrz|zaznacz}} - liczby oddzielone średnikami, które przy parametrach nazwanych o pewnych numerach i numerkach nie mają być uwzględnione przy niepustym parametrze {{Code|po kolei}} {{LinkPatrz|po kolei}}, a przy jego przeciwnej wartości za to mają być użyte. * 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}} {{Patrz|_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>}}. Domyślną wartością {{Code|_i}} jest {{Code|_}}. ; W wyniku iteracji otrzymamy tablicę ciągów łańcuchów z wikikodami, wtedy ta funkcja używa do tego liczenia{{dk}} * Jest to funkcja {{LinkŚródtytuł|BudowaSzereguZDanych}}. * Wywołanie funkcji jest takie: {{Pre|lancuch_znakow {{=}} BudowaSzereguZDanych(frame,tab_lancuch,minimum or 0,maksimum);}} ; Parametry funkcji {{LinkŚródtytuł|BudowaSzereguZDanych}}. * One są wraz z jego parametrami podane w postaci jego parametrów ramki {{Code|frame}}, które jednocześnie są parametrami {{LinkŚródtytuł|p.Powtarzaj}}, używa się je 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ą {{LzLua|frame:preprocess}}, i jest zwracany jako wartość omawianej funkcji. ; Przykłady{{dk}} * Funkcja jest używana np. w silnikach szablonów, np.: {{s|Osobny artykuł/silnik}} szablonu {{s|Osobny artykuł}}, jak i do niego 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}}. === {{Śródtytuł|p.PowtarzajOdDo}}{{Code|p.PowtarzajOdDo}} === Funkcja służy do iteracji, od jakieś liczby do jakieś innej, podanego wikikodu dla danego kroku {{Code|1}}, iterując to, co krok określony zmienną: {{Code|krok}}. * 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ę{{dk}} {{nobold|{{Code|{{m|Ramka|Rozwiń}}}}}}, lub go rozwija na końcu, na podstawie kolejnych kroków iteracji{{dk}} * {{Code|start}} - początek iteracji dokonywany przez ta funkcję, * {{Code|koniec}} - koniec iteracji dokonywany przez ta funkcję, * {{Code|krok}} - krok iteracji, co który numer 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{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}} * {{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ą{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}} * {{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{{dk}} {{nobold|{{s|Chem/silnik}}}}, w tym nadrzędnym{{dk}} {{nobold|{{s|Chem}}}}, przykłady jego działania{{dk}} * {{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. === {{Śródtytuł|p["PrzetwarzajIterującCiąg"]}}{{Code|p["PrzetwarzajIterującCiąg"]}} === Funkcja do iteracji wikikodu po parametrach oddzielonych średniami w parametrze ramki {{Code|cią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{{dk}} * {{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{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}} * {{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ą{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}} * {{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>}} jest kolejny parametr, oddzielonych od pozastałych średniami, z: {{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}}: {{LzLua|frame:preprocess}}, jeśli: {{Code|nie rozwiń}}, nie przybiera wartości niepustej. === {{Śródtytuł|p["PowtarzajWedług"]}}{{Code|p["PowtarzajWedług"]}} === Funkcja wyszukująca elementy według wzoru począwszy od numeru, określonego przez {{Code|start}}, aż do zakończenia danych kolenych sprawdzania od tej liczby, czy taka strona istnieje, numerek jest określony przez pewien wikikod, określony przez {{Code|<nowiki>{{_}}</nowiki>}}, którymusi być podany we wzorze {{Code|wzor}}. Ona w ten sposób dla istniejących stron ustawia pewne łańcuchy, które są łączone znakami {{Code|", "}}, a na końcu samym {{Code|" i "}}. 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 strony{{dk}} {{nobold|„{{Ns:Template}}{{dk}}Polecane książki/”}}, a oto przykład{{dk}}{{nobold|{{Parametr|wzór|{{Ns:Template}}{{dk}}Polecane książki/{{((}}_{{))}}}}}}{{dk}} * {{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}}}} == {{Śródtytuł|p["LiczbaPrawychUkośników"]}}{{Code|p["LiczbaPrawychUkośników"]}} == Funkcja liczy, ile jest prawych ukośników w adresie strony podany jako pierwszy parametr ramki. * 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. ; Parametry fubkcji{{dk}} * {{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}}}} == {{Śródtytuł|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}}{{Code|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}} == Funkcja liczy maksymalny numer kolejnej strony liczonej według wzoru {{Code|wzor}}, musi być we wzorze podany element {{Code|<nowiki>{{_}}</nowiki>}}, aby mógł to robić. * 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/”, czyli dla stron o ogólnym wzorze: {{Parametr|wzór|{{Ns:Template}}:Polecane książki/{{((}}_{{))}}}}. ; Parametry funkcji{{dk}} * {{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 == === {{Śródtytuł|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}}{{Code|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}} === Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy minimalny numer takich zmiennych. * 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*)}}. ; Parametry funkcji{{dk}} * {{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}}}} === {{Śródtytuł|p.IleJestTakichOdpowiednikowychZmiennych}}{{Code|p.IleJestTakichOdpowiednikowychZmiennych}} === Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy ile jest takich zmiennych. * 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. ; Parametry funkcji{{dk}} * {{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}}}} == {{Śródtytuł|p["Parametr w tablicy nazw"]}}{{Code|p["Parametr w tablicy nazw"]}} == Funkcja bada, czy jest taki parametr {{Code|pozycja}} w tablicy nazw określonej zmienną {{Code|parametry}}, której elementy są oddzielone średnikami. * 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. ; Parametry funkcji{{dk}} * {{Code|parametry}} - lista parametrów oddzielonych średnikiem, * {{Code|pozycja}} - szukana lista w tablicy parametrów, * {{Code|od dużej}} - czy parametr: {{Code|pozycja}}, i elementy listy: {{Code|parametry}}, 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}}, a to ostatnie jest to wartość języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, która po transformacji na wikikod jest zamieniana na ciąg pusty, więc ona nadaje się do instrukcji warunkowych. === 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> debodesci6sj72aprl2s43zhnnfxn73 553414 553413 2026-08-29T22:39:39Z Persino 2851 /* {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} */ 553414 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. Funkcje, w tym module, uruchamia się tylko w ramce w szablonie, bo są tylko do tego przygotowane. One służą do powtarzania parametrów rodzica, czy przodka, iteracji pojedynczego kroku wikikodu, jakiś sprawdzeń, do liczenia odpowiedników i związanych z tym parametrami, itp.. == Funcje lokalne modułu == === {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} === Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, tylko w module {{Code|{{ld2|Ramka}}}}, szablonów, modułów i parserów w ramce. Uruchamiana jest przez funkcje: {{LinkŚródtytuł|p.Szablon}} - funkcja do uruchamiania szablonów, {{LinkŚródtytuł|p["Moduł"]}} - funkcja do uruchamiania modułów, i {{LinkŚródtytuł|p.Parser}} - funkcja do uruchamiania parserów. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ParserBlokowy(frame, co_ma_wywolac)...end; </syntaxhighlight> ; Parametry funkcji{{dk}} * {{Code|frame}} {{Patrz|frame}} - funkcja ramkki funkcji tablica transportu modułu, * {{Code|co_ma_wywolac}} {{Patrz|co_ma_wywolac}} - ten parametr przyjmuje wartość liczbową, która jeżeli {{Tt|0}} - to uruchamiany jest szablon, jeżeli {{Tt|1}} - moduł, jeżeli {{Code|2}} - to parser, jeżeli on ma inne wartości, tzn.: {{Tt|2}}, a {{Tt|3}} i dalej, to już dany szablon. ; Parametry ramki funkcji tablicy transportu modułu{{dk}} * Parametry podstawowe: ** {{Code|Nazwa}} {{Patrz|Nazwa}} - jest to pełna nazwa szablonu, modułu, czy parsera, ** {{Code|bez argumentów rodzica}} {{Patrz|bez argumentów rodzica}} - tablica parametrów oddzielonych średnikami, których obiekt uruchamiany nie może przyjmować, nawet jeżeli one są, ** {{Code|nazwa szablonu rodzica}} {{Patrz|nazwa szablonu rodzica}} - jest to zmienna przechowująca nazwę szablonu rodzica ramki dziecka,a nawet któreś z jego przodków, ** {{Code|bez argumentów nienazwanych rodzica}} {{Patrz|bez argumentów nienazwanych rodzica}} - szablon w ramce nie przyjmuje parametrów nienazwanych, określonych liczbą, podanych w rodzicu ramki, ** {{Code|potomek}} {{Patrz|potomek}} - zmienna mówiąca, że to jest potomek rodzica ramki, tą zmienną podaje się w parametrze {{Code|bez argumentów rodzica}} {{LinkPatrz|bez argumentów rodzica}}, jeżeli nie jest podany parametr {{Code|nie potomek}} - dodane przez tę funkcję, tej zmiennej nie używa się bezpośrednio w kodzie ramki, sama ta ramka tworzy automatycznie ten niepusty parametr, jedynie go można użyć przy wielopoziomowym przekazywaniu parametrów rodzica, do ustawiania pewnych wartości prametrów w budowanych w tą funkcję, ** {{Code|nie potomek}} {{Patrz|nie potomek}} - zmienna mówiąca, że to nie jest potomek szablonu, używana, gdy nie jest określona istniejąca zmienna ramki {{LinkPatrz|zmienna z parametrami rodzica}}, wtedy taka ramka jest traktowana jak normalna ramka, której jedynie trzeba przekazać parametry rodzica, nie przodka, wtedy do niej nie są przekazywane parametry: {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}} (ta zmienna jest wtedy ustawiana, gdy nie jest niepusty parametr {{Code|bez dodatkowych sprawdzeń}} {{LinkPatrz|bez dodatkowych sprawdzeń}}), {{Code|bez argumentów szablonu}} {{LinkPatrz|bez argumentów szablonu}} i {{LinkPatrz|potomek}} (ustawiany na stałą wartość niepustą). Jeżeli zmienna ogólnie {{Code|nie potomek}} {{LinkPatrz|nie potomek}} tam została podana, lub nie, wtedy zawsze {{Code|nazwa szablonu rodzic}} {{LinkPatrz|nazwa szablonu rodzica}} (jeśli ta wartość rodzica nie istnieje, to nadawana jest jej aktualna nazwa szablonu rodzica, a nie przodka, normalnie jest to przodka, a w szczególności rodzica). ** {{Code|bez argumentów szablonu}} {{Patrz|bez argumentów szablonu}} - zmienna oddzielonych średnikami parametrów, których nie wolno uwzględniać w walidacji błędów w {{m|Sprawdź|Parametry}}, ta tablica jest wkładana do parametrów ramki, gdy nie podany jest niepusty parametr w niej {{Code|zmienna z argumentami ramki}} {{LinkPatrz|zmienna z argumentami ramki}}, a jeżeli ten argument jednak jest niepusty, wtedy do tej zmiennej są wliczane parametry ramki, które nie są argumentami wbudowanymi w tą funkcję. ** {{Code|bez dodatkowych sprawdzeń}} {{Patrz|bez dodatkowych sprawdzeń}} - nie jest uruchamiana walidacja parametrów szablonu rodzica, czyli wtedy do dziecka nie jest przekazywany parametr {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}} i nie jest ustawiana zmienna, ale za to ten parametr jest powtarzany w parametrach dziecka, ** {{Code|parametry rodzica}} {{Patrz|parametry rodzica}} - zmienna przedstawiająca parametry rodzica, czy któreś ze przodków, przekazane do ramki: {{m|Sprawdź|Parametry}} - dodane przez tę funkcję, ** {{Code|zmienna z parametrami rodzica}} {{Patrz|zmienna z parametrami rodzica}} - jeśli wartość jego jest niepusta, wtedy parametr mówiący, czy ma tworzyć zmienne z parametrami rodzica {{LinkPatrz|parametry rodzica}} {{LinkPatrz|parametry rodzica}} jest przekazywana do dziecka w postaci wygenerowanej listy parametrów rodzica wraz z zwartościami przez funkcję, w przypadku innej jego wartości, to parametr {{LinkPatrz|parametry rodzica}} {{LinkPatrz|parametry rodzica}} jest przekazywany normalnie, jeżeli ta ramka byłaby potomkiem, czyli parametry byłyby przekazywane od przodka, i nie byłby ustawiony parametr {{Code|nie potomek}} {{LinkPatrz|nie potomek}}, ** {{Code|zmienna z argumentami ramki}} {{Patrz|zmienna z argumentami ramki}} - zmienna mówiąca, czy mają być tworzone parametry ramki, które nie są sprawdzane 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}} {{Patrz|zmienna z nazwą szablonu rodzica}} - parametr, gdy niepusty, wtedy jest tworzona zmienna: {{LinkPatrz|nazwa szablonu rodzica}}, niepusty parametr {{Code|potomek}} {{LinkPatrz|potomek}}, tworzona jest niepusta lista parametrów {{Code|bez argumentów szablonu}} {{LinkPatrz|bez argumentów szablonu}}, powtarzana jest zmienna {{Code|bez dodatkowych sprawdzeń}} {{LinkPatrz|bez dodatkowych sprawdzeń}}, i tworzona jest dodatkowa parametr z {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}}, jeśli nie podano niepustego parametru {{Code|bez dodatkowych sprawdzeń}} {{LinkPatrz|bez dodatkowych sprawdzeń}}, ** {{Code|parametry funkcji modułu pudełek}} {{Patrz|parametry funkcji modułu pudełek}} - czy do funkcji mają wchodzić parametry modułu pudełek, które są ponumerowane dodatkowym numerkiem, ** {{Code|parametry podstawowe funkcji modułu pudełek}} {{Patrz|parametry podstawowe funkcji modułu pudełek}} - czy do funkcji mają wchodzić podstawowe parametry funkcji modułu pudełek, te które nie mają dodatkowego numerka, ** {{Code|usuń z parametrów ramki}} {{Patrz|usuń z parametrów ramki}} - parametry ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, przedstawiający zmienne oddzielone średnikami, które nie mają być uwzględnione przy uruchamianiu danego obiektu. * {{Code|Funkcja}} {{Patrz|Funkcja}} - nazwa funkcji w module, który ma wywołać w ramce ta funkcja, w przypadku, gdy parametr {{LinkPatrz|co_ma_wywolac}} ma wartość {{Tt|1}}, czyli wywołujemy funkcję {{LinkŚródtytuł|p["Moduł"]}}. Funkcja uruchamia szablon, moduł, czy ramkę, w zależności od drugiego parametru funkcji, z parametrami rodzica ramki bez parametrów opisanych zmienną: {{LinkPatrz|bez argumentów szablonu}}, i bez parametrów ramki wskazanych przez: {{Code|usuń z parametrów ramki}}. Za pomocą tej funkcji możemy wielopoziomowo wywoływać funkcje przekazując parametry od najwyższego poziomu do najniższego. Ta funkcja służy przede wszystkim 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 do uruchamiania szablonów, a uruchamianie funkcji modułu, w tym funkcji {{m|Cytuj|custom}} w szablonie {{s|PrzypisStrona}}. Przykładem wywołania szablonu, która jest w szablonie: {{s|Wzór}}, w którym jest wywoływany inny szablon, tym razem silnik, tzn. {{s|Wzór/silnik}}: <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> === {{Śródtytuł|BudowaSzereguZDanych}}{{Code|BudowaSzereguZDanych}} === Funkcja do uruchamiania się 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> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tab_lancuch}} {{Patrz|tab_lancuch}} - pewna tablica transportu funkcji. * Zmienne do mikroszablonów: ** {{Code|minimum}} {{Patrz|minimum}} - liczba mówiąca o minimum, ** {{Code|maksimum}} {{Patrz|maksimum}} - liczba mówiąca o maksimum. Parametry ramki funkcji tablicy transportu modułu: * {{Code|akapit}} {{Patrz|akapit}} - jeśli niepusta, to ona definiuje akapit ze znaków {{Code|\n\n}}, przeciwnym wypadku elementy łańcucha nie są łączone w akapity, * {{Code|przecinek}} {{Patrz|przecinek}} - jeśli niepuste, to mówi, że pomiędzy elementami powiniem być przecinek: {{Code|", "}}, został on specjalnie objęty w cudzysłowy, aby zilustrować, że po przecinku znajduje się spacja, * {{Code|nowa linia}} {{Patrz|nowa linia}} - w przeciwieństwo do zmiennej {{LinkPatrz|akapit}}, używany zamiast niej, pisze jedną nową linię, a nie dwie, jako: {{Code|\n}}, * {{Code|wyliczanka}} {{Patrz|wyliczanka}} - wylicza elementy z przecinkami, stawiając przed ostatnim elementem zamiast jego wyraz wyliczania {{Code|i}}, * {{Code|początek}} {{Patrz|początek}} - mówi, że na początku musi znajdować się przecinek, * {{Code|myślnik}} {{Patrz|myślnik}} - mówi, że jeśli nie ma początku przecinka, to stawiany jest myślnik, używany zamiast {{LinkPatrz|początek}}, * {{Code|warunkowe}} {{Patrz|warunkowe}} - instrukcje wikikodu, takie jak: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}, zostaną w kodzie rozwinięte, a później ciągłe właściwe elementy wikikodu otoczone dwoma dolnymi myślnikami zostaną rozwinięte do pewnej postaci, funkcja używa do tego {{LinkŚródtytuł|p.InstrukcjeWarunkowe}}, ** {{Code|parametr}} {{Patrz|parametr}} - używany w towarzystwie z {{LinkPatrz|warunkowe}}, mówiący że, derektywy znakowe ciągłe otoczone dwoma dolnymi myślnikami, zostaną zastąpione odpowiedmimi szablonami, w przeciwnym wypadku niepodania tej wartości lub jego pustej, wtedy te derektywy zostaną zastąpione w postaci rozwiniętej tych szablonów. ** Funkcja w tym warunku zwraca ciąg znaków rozwiniętego warunku. Funkcja posiada też mikroszablony, które są zdefiniowane w kodzie łańcuchów {{LinkPatrz|tab_lancuch}}: * {{Code|<nowiki>{{min}}</nowiki>}} - minimalna wartość szeregu zmiennych, określana przez {{LinkPatrz|minimum}}, * {{Code|<nowiki>{{max}}</nowiki>}} - a tutaj ich maksymalna, określana przez {{LinkPatrz|maksimum}}. Te dwie zmienne są podstawiane do uzyskanego ciągu. Funkcja zwraca te części rozwiniętego tekstu wikikodu, jeśli podano {{LinkPatrz|warunkowe}}, co do instrukcji warunkowych, i też te bez wewnętrznych klamerek, czyli specjalne kody, czyli te otoczone z dwóch stron dolnumi myślnikami, a pozostałe część tak uzyskana jest za to nierozwinięta. == {{Śródtytuł|p.InstrukcjeWarunkowe}}{{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}} {{Patrz|ciag}} - podany ciąg do rozwinięcia z instrukcji warunkowych wewnątrz nie posiadający klamerek, * {{Code|derektywy_specjalne}} {{Patrz|derektywy_specjalne}} - używa do zastępowania specjalnych derektyw, podane po prawej stronie w ramce pływającej, * {{Code|derektywy_parametrowe}} {{Patrz|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: {{LinkŚródtytuł|BudowaSzereguZDanych}}, poprzez: {{LinkŚródtytuł|p.Powtarzaj}}. 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 == === {{Śródtytuł|p.RozpakujArgumenty}}{{Code|p.RozpakujArgumenty}} === Ta funkcja jest do rozpakowywania zmiennych z podanego parametru, których zmienne są oddzieloe średnikami. * Funkcja uruchamia się 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. === {{Śródtytuł|p.PakujParametry}}{{Code|p.PakujParametry}} === Ta funkcja jest do pakowania tablicy, języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w tablicę {{lpg|JSON}}. * Funkcja się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Funkcja pakuje parametry tablicy {{lpg|Lua}} do tablicy: {{lpg|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> Parametry funkcji: * {{Code|args}} {{Patrz|args}} - tablica {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Ten szablon nazywa parametry, jakby nienazwane w tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera) z tablicy {{lpg|Lua}} (tutaj od jedynki), do tablicy nazwanej, jak to robi się w {{lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonEncode}}, z drugim parametrem: {{Code|mw.text.JSON_PRESERVE_KEYS}} {{Patrz|mw.text.JSON_PRESERVE_KEYS}}. === {{Śródtytuł|p.RozpakujParametry}}{{Code|p.RozpakujParametry}} === Ta funkcja jest do rozpakowywania tablicy {{lpg|JSON}} w tablicę języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}} * 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 w niej zwracany. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.RozpakujParametry = function (zmienna_z_parametrami) return mw.text.jsonDecode(zmienna_z_parametrami,mw.text.JSON_PRESERVE_KEYS); end; </syntaxhighlight> Parametry funkcji: * {{Code|zmienna_z_parametrami}} {{Patrz|zmienna_z_parametrami}} - tablica {{lpg|JSON}}. Ten szablon nazywa parametry nienazwane w tablicy {{lpg|Lua}} (tutaj od jedynki) z tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera), do tablicy nienazwanej z nazwanej, jak to robi się w {{Lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonDecode}}, z użyciem drugiego parametru: {{LinkPatrz|mw.text.JSON_PRESERVE_KEYS}}. == {{Śródtytuł|p["Rozwiń"]}}{{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> Parameetry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon rozwija wikikod podany w zmiennej {{Code|1}}, w parametrach szablonu rodzica. * 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}}: <syntaxhighlight lang="lua"> p["Rozwiń"] = function(frame) return frame:getParent():preprocess(frame.args[1]); end; </syntaxhighlight> == {{Śródtytuł|p.Log}}{{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> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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}}: <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 == === {{Śródtytuł|p.Szablon}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p.Szablon = function(frame) return ParserBlokowy(frame,0); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Szablon|Nazwa=<nazwa szablonu>|...}} </syntaxhighlight> === {{Śródtytuł|p["Moduł"]}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p["Moduł"] = function(frame) return ParserBlokowy(frame,1); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Moduł|Nazwa=<nazwa modułu>|Funkcja=<nazwa funkcji>|...}} </syntaxhighlight> === {{Śródtytuł|p.Parser}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p.Parser = function(frame) return ParserBlokowy(frame,2); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Parser|Nazwa=<nazwa parsera>|...}} </syntaxhighlight> == Funkcje książkowe == === {{Śródtytuł|p.Q}}{{Code|p.Q}} === Funkcja uruchamiana we wnętrzu szablonu {{s|Q}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on. * Jego specjalne odpowiedniki to {{s|T}} i {{s|T2}}. Funkcja uruchamia szablon o podanej nazwie w pierwszym parametrze z dodanym przedrostkiem {{Code|Książka:}} przed nazwą szablonu. * Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.Q =function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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ą (parametry nazwane, które są wliczane 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}}}} === {{Śródtytuł|p.N}}{{Code|p.N}} === Funkcja uruchamiana we wnętrzu szablonu {{s|N}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on. Funkcja przed nazwą szablonu, czy modułu, zostawia w wpis w postaci przedrostka {{Code|Książka:}}. Czy zostanie dodana przed tym nazwa przestrzeni nazw, to zależy od niepodania niepustej zmiennej {{Parametr|n}}, a zmienna {{Parametr|p|1}} - to przed nim jest dodawana przestrzeń nazw szablonu {{Np|Template|link=tak}}, {{Parametr|p|2}} - modułu {{Np|Module|link=tak}} i {{Parametr|p|3}} - kategorii. * Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.N=function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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}}}} === {{Śródtytuł|p.A}}{{Code|p.A}} === Funkcja uruchamiana we wnętrzu szablonu {{s|A}}, która przyjmuje jego parametry, i tak samo działa, jak on. Funkcja usuwa przedrostek {{Code|Książka:}} w nazwie szablonu, czy modułu. Gdy jest podany parametr: {{Parametr|p|tak}}, to dla przestrzeni niebędących: {{Np|Template|link=tak}}, {{Np|Module|link=tak}} i {{Np|Category|link=tak}}, jest zwracany wtedy przez nią parametr pierwszy funkcji. Dla tych wartości właśnie wyliczonych przestrzeni usuwany jest przedrostek {{Code|Książka:}}. Funkcja generuje nazwę z prestrzenią nazw. * Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.A=function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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 == === {{Śródtytuł|p.Powtarzaj}}{{Code|p.Powtarzaj}} === Funkcja służy do powtarzalnego generowania wikikodu ze składników jego kroku przy pomocy określonych zmiennych rodzica. * Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.Powtarzaj = function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Funkcja może przyjmować tylko parametry nienazwane albo tylko nazwane, albo nienazwane i nazwane (gdy jest ustawiony parametr {{Code|różne}} {{Patrz|różne}}). 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}} {{LinkPatrz|różne}}, która wtedy ma wskazywać na wartość niepustą. ; Najważniejsze parametry, które są to opcjonalne, to są{{dk}} * {{Code|start}} {{Patrz|start}} - liczba, która wskazuje początek liczenia - domyślna wartość to {{Code|1}}, * {{Code|koniec}} {{Patrz|koniec}} - liczba, która wskazuje koniec liczenia. ; Numer końca liczenia parametrów nienazwanych lub nazwanych, czy nazwanychi nienazwanych{{dk}} * Elementy w {{Code|parametry}} {{Patrz|parametry}} mogą modyfikować odpowiednio parametry: {{Code|start}} {{LinkPatrz|start}} i {{Code|koniec}} {{LinkPatrz|koniec}}. * Ze zmiennej {{LinkPatrz|parametry}} jest liczona odpowiednia zmienna {{LinkPatrz|tabela}} dopuzczalnych zmiennych do liczenia. * Funkcja {{Code|Wylicz_skoncz_na_koncu}},którego algorytm podomy w tej poyzcji, tzn. koniec liczenia parametrów nienazwanych musi być policzony, jeżeli nie ma parametrów nazwanych w tabeli {{Code|tabela}} {{Patrz|tabela}}. A przeciwnie, jeżeli nie jest ustawiony parametr {{Code|różne}} {{LinkPatrz|różne}} nie na wartość niepustą, wtedy jest liczony parametr maksimum parametrów nazwanych, przeciwnie wtedy liczy się parametr maksimum numeracyjne parametrów numerowanych, czyli zmienną: {{Code|maksimum numeracyjne}} {{Patrz|maksimum numeracyjne}}, jeśli on ma wartość niepustą, wtedy liczy się maksimum parametrów nienazwanych, a jeżeli ona ma przeciwną wartość, to się liczy maksimum parametrów nazwanych, jak nienazwanych. Na podstawie tego mamy policzony odpowiednio taki koniec liczenia modyfikacji zwracany i policzony przez tą funkcję. ; Parametr {{Code|dodatkowe}}{{dk}} * To maksimum parametrów nazwanych, dla jakieś podstawy parametrów, są pomijane parametry z: {{Code|dodatkowe}}, która jest zestawem podstaw parametrów oddzielonych średnikami, jest właśnie podany ten parametr w nim. Przykładem jego jest: * {{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. ; Format parametru {{Parametr|parametry}}{{dk}} * 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 równa liczbie {{Code|5}}, oddzielonych średnikami. ; Opis parametru {{Parametr|parametry}}{{dk}} 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 w wartościach: {{Code|zmienna 1>}}, {{Code|<zmienna 2>}} i {{Code|<zmienna 3>}}, w których są pewne nazwy bazowe parametrów bez numerka na jej końcu, w zmiennej {{Code|parametry}} można nie podawać dalszych elementów 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ć nawet tego znaku,gdy nic nie ma po równa się) dla danego problemu funkcji. ; Wikikod pojedynczego kroku liczenia całości wygenerowanego wikikodu dla wszystkich zmiennych{{dk}} * 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)}}. ; Parametr {{Parametr|start}}, wartość początkowa{{dk}} * Gdy parametr {{Code|tonumber(frame.args["start"]) or 1}}, jest równy zero, funkcja zwraca błąd: {{Code|(początek jest ustawiony na zero)}}. ; Brak parametrów szablonu{{dk}} * 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. ; Parametr {{Parametr|nic}}{{dk}} * Gdy {{Code|nic}} przyjmuje wartość, i gdy pomijamy parametr, lub on przyjmuje wartość pustą, wtedy a funkcja nie może wygenerować żadnego kroku iteracji, to wtedy jest zwracana wartość parametru {{Code|nic}} lub ciąg pusty. ; Inne parametry{{dk}} * Parametr {{Code|po kolei}} {{Patrz|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|zaznacz}} {{Patrz|zaznacz}} - liczby oddzielone średnikami, które przy parametrach nazwanych o pewnych numerach i numerkach nie mają być uwzględnione przy niepustym parametrze {{Code|po kolei}} {{LinkPatrz|po kolei}}, a przy jego przeciwnej wartości za to mają być użyte. * 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}} {{Patrz|_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>}}. Domyślną wartością {{Code|_i}} jest {{Code|_}}. ; W wyniku iteracji otrzymamy tablicę ciągów łańcuchów z wikikodami, wtedy ta funkcja używa do tego liczenia{{dk}} * Jest to funkcja {{LinkŚródtytuł|BudowaSzereguZDanych}}. * Wywołanie funkcji jest takie: {{Pre|lancuch_znakow {{=}} BudowaSzereguZDanych(frame,tab_lancuch,minimum or 0,maksimum);}} ; Parametry funkcji {{LinkŚródtytuł|BudowaSzereguZDanych}}. * One są wraz z jego parametrami podane w postaci jego parametrów ramki {{Code|frame}}, które jednocześnie są parametrami {{LinkŚródtytuł|p.Powtarzaj}}, używa się je 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ą {{LzLua|frame:preprocess}}, i jest zwracany jako wartość omawianej funkcji. ; Przykłady{{dk}} * Funkcja jest używana np. w silnikach szablonów, np.: {{s|Osobny artykuł/silnik}} szablonu {{s|Osobny artykuł}}, jak i do niego 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}}. === {{Śródtytuł|p.PowtarzajOdDo}}{{Code|p.PowtarzajOdDo}} === Funkcja służy do iteracji, od jakieś liczby do jakieś innej, podanego wikikodu dla danego kroku {{Code|1}}, iterując to, co krok określony zmienną: {{Code|krok}}. * 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ę{{dk}} {{nobold|{{Code|{{m|Ramka|Rozwiń}}}}}}, lub go rozwija na końcu, na podstawie kolejnych kroków iteracji{{dk}} * {{Code|start}} - początek iteracji dokonywany przez ta funkcję, * {{Code|koniec}} - koniec iteracji dokonywany przez ta funkcję, * {{Code|krok}} - krok iteracji, co który numer 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{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}} * {{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ą{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}} * {{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{{dk}} {{nobold|{{s|Chem/silnik}}}}, w tym nadrzędnym{{dk}} {{nobold|{{s|Chem}}}}, przykłady jego działania{{dk}} * {{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. === {{Śródtytuł|p["PrzetwarzajIterującCiąg"]}}{{Code|p["PrzetwarzajIterującCiąg"]}} === Funkcja do iteracji wikikodu po parametrach oddzielonych średniami w parametrze ramki {{Code|cią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{{dk}} * {{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{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}} * {{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ą{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}} * {{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>}} jest kolejny parametr, oddzielonych od pozastałych średniami, z: {{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}}: {{LzLua|frame:preprocess}}, jeśli: {{Code|nie rozwiń}}, nie przybiera wartości niepustej. === {{Śródtytuł|p["PowtarzajWedług"]}}{{Code|p["PowtarzajWedług"]}} === Funkcja wyszukująca elementy według wzoru począwszy od numeru, określonego przez {{Code|start}}, aż do zakończenia danych kolenych sprawdzania od tej liczby, czy taka strona istnieje, numerek jest określony przez pewien wikikod, określony przez {{Code|<nowiki>{{_}}</nowiki>}}, którymusi być podany we wzorze {{Code|wzor}}. Ona w ten sposób dla istniejących stron ustawia pewne łańcuchy, które są łączone znakami {{Code|", "}}, a na końcu samym {{Code|" i "}}. 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 strony{{dk}} {{nobold|„{{Ns:Template}}{{dk}}Polecane książki/”}}, a oto przykład{{dk}}{{nobold|{{Parametr|wzór|{{Ns:Template}}{{dk}}Polecane książki/{{((}}_{{))}}}}}}{{dk}} * {{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}}}} == {{Śródtytuł|p["LiczbaPrawychUkośników"]}}{{Code|p["LiczbaPrawychUkośników"]}} == Funkcja liczy, ile jest prawych ukośników w adresie strony podany jako pierwszy parametr ramki. * 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. ; Parametry fubkcji{{dk}} * {{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}}}} == {{Śródtytuł|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}}{{Code|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}} == Funkcja liczy maksymalny numer kolejnej strony liczonej według wzoru {{Code|wzor}}, musi być we wzorze podany element {{Code|<nowiki>{{_}}</nowiki>}}, aby mógł to robić. * 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/”, czyli dla stron o ogólnym wzorze: {{Parametr|wzór|{{Ns:Template}}:Polecane książki/{{((}}_{{))}}}}. ; Parametry funkcji{{dk}} * {{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 == === {{Śródtytuł|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}}{{Code|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}} === Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy minimalny numer takich zmiennych. * 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*)}}. ; Parametry funkcji{{dk}} * {{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}}}} === {{Śródtytuł|p.IleJestTakichOdpowiednikowychZmiennych}}{{Code|p.IleJestTakichOdpowiednikowychZmiennych}} === Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy ile jest takich zmiennych. * 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. ; Parametry funkcji{{dk}} * {{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}}}} == {{Śródtytuł|p["Parametr w tablicy nazw"]}}{{Code|p["Parametr w tablicy nazw"]}} == Funkcja bada, czy jest taki parametr {{Code|pozycja}} w tablicy nazw określonej zmienną {{Code|parametry}}, której elementy są oddzielone średnikami. * 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. ; Parametry funkcji{{dk}} * {{Code|parametry}} - lista parametrów oddzielonych średnikiem, * {{Code|pozycja}} - szukana lista w tablicy parametrów, * {{Code|od dużej}} - czy parametr: {{Code|pozycja}}, i elementy listy: {{Code|parametry}}, 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}}, a to ostatnie jest to wartość języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, która po transformacji na wikikod jest zamieniana na ciąg pusty, więc ona nadaje się do instrukcji warunkowych. === 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> 9myyz5xh8182hz815k3h9a298lum7sa 553415 553414 2026-08-29T22:44:47Z Persino 2851 /* {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} */ 553415 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. Funkcje, w tym module, uruchamia się tylko w ramce w szablonie, bo są tylko do tego przygotowane. One służą do powtarzania parametrów rodzica, czy przodka, iteracji pojedynczego kroku wikikodu, jakiś sprawdzeń, do liczenia odpowiedników i związanych z tym parametrami, itp.. == Funcje lokalne modułu == === {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} === Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, tylko w module {{Code|{{ld2|Ramka}}}}, szablonów, modułów i parserów w ramce. Uruchamiana jest przez funkcje: {{LinkŚródtytuł|p.Szablon}} - funkcja do uruchamiania szablonów, {{LinkŚródtytuł|p["Moduł"]}} - funkcja do uruchamiania modułów, i {{LinkŚródtytuł|p.Parser}} - funkcja do uruchamiania parserów. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ParserBlokowy(frame, co_ma_wywolac)...end; </syntaxhighlight> ; Parametry funkcji{{dk}} * {{Code|frame}} {{Patrz|frame}} - funkcja ramkki funkcji tablica transportu modułu, * {{Code|co_ma_wywolac}} {{Patrz|co_ma_wywolac}} - ten parametr przyjmuje wartość liczbową, która jeżeli {{Tt|0}} - to uruchamiany jest szablon, jeżeli {{Tt|1}} - moduł, jeżeli {{Code|2}} - to parser, jeżeli on ma inne wartości, tzn.: {{Tt|2}}, a {{Tt|3}} i dalej, to już dany szablon. ; Parametry ramki funkcji tablicy transportu modułu{{dk}} * Parametry podstawowe: ** {{Code|Nazwa}} {{Patrz|Nazwa}} - jest to pełna nazwa szablonu, modułu, czy parsera, ** {{Code|bez argumentów rodzica}} {{Patrz|bez argumentów rodzica}} - tablica parametrów oddzielonych średnikami, których obiekt uruchamiany nie może przyjmować, nawet jeżeli one są, ** {{Code|nazwa szablonu rodzica}} {{Patrz|nazwa szablonu rodzica}} - jest to zmienna przechowująca nazwę szablonu rodzica ramki dziecka,a nawet któreś z jego przodków, ** {{Code|bez argumentów nienazwanych rodzica}} {{Patrz|bez argumentów nienazwanych rodzica}} - szablon w ramce nie przyjmuje parametrów nienazwanych, określonych liczbą, podanych w rodzicu ramki, ** {{Code|potomek}} {{Patrz|potomek}} - zmienna mówiąca, że to jest potomek rodzica ramki, tą zmienną podaje się w parametrze {{Code|bez argumentów rodzica}} {{LinkPatrz|bez argumentów rodzica}}, jeżeli nie jest podany parametr {{Code|nie potomek}} - dodane przez tę funkcję, tej zmiennej nie używa się bezpośrednio w kodzie ramki, sama ta ramka tworzy automatycznie ten niepusty parametr, jedynie go można użyć przy wielopoziomowym przekazywaniu parametrów rodzica, do ustawiania pewnych wartości prametrów w budowanych w tą funkcję, ** {{Code|nie potomek}} {{Patrz|nie potomek}} - zmienna mówiąca, że to nie jest potomek szablonu, używana, gdy nie jest określona istniejąca zmienna ramki {{LinkPatrz|zmienna z parametrami rodzica}}, wtedy taka ramka jest traktowana jak normalna ramka, której jedynie trzeba przekazać parametry rodzica, nie przodka, wtedy do niej nie są przekazywane parametry: {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}} (ta zmienna jest wtedy ustawiana, gdy nie jest niepusty parametr {{Code|bez dodatkowych sprawdzeń}} {{LinkPatrz|bez dodatkowych sprawdzeń}}), {{Code|bez argumentów szablonu}} {{LinkPatrz|bez argumentów szablonu}} i {{LinkPatrz|potomek}} (ustawiany na stałą wartość niepustą). Jeżeli zmienna ogólnie {{Code|nie potomek}} {{LinkPatrz|nie potomek}} tam została podana, lub nie, wtedy zawsze {{Code|nazwa szablonu rodzic}} {{LinkPatrz|nazwa szablonu rodzica}} (jeśli ta wartość rodzica nie istnieje, to nadawana jest jej aktualna nazwa szablonu rodzica, a nie przodka, normalnie jest to przodka, a w szczególności rodzica). ** {{Code|bez argumentów szablonu}} {{Patrz|bez argumentów szablonu}} - zmienna oddzielonych średnikami parametrów, których nie wolno uwzględniać w walidacji błędów w {{m|Sprawdź|Parametry}}, ta tablica jest wkładana do parametrów ramki, gdy nie podany jest niepusty parametr w niej {{Code|zmienna z argumentami ramki}} {{LinkPatrz|zmienna z argumentami ramki}}, a jeżeli ten argument jednak jest niepusty, wtedy do tej zmiennej są wliczane parametry ramki, które nie są argumentami wbudowanymi w tą funkcję. ** {{Code|bez dodatkowych sprawdzeń}} {{Patrz|bez dodatkowych sprawdzeń}} - nie jest uruchamiana walidacja parametrów szablonu rodzica, czyli wtedy do dziecka nie jest przekazywany parametr {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}} i nie jest ustawiana zmienna, ale za to ten parametr jest powtarzany w parametrach dziecka, ** {{Code|parametry rodzica}} {{Patrz|parametry rodzica}} - zmienna przedstawiająca parametry rodzica, czy któreś ze przodków, przekazane do ramki: {{m|Sprawdź|Parametry}} - dodane przez tę funkcję, ** {{Code|zmienna z parametrami rodzica}} {{Patrz|zmienna z parametrami rodzica}} - jeśli wartość jego jest niepusta, wtedy parametr mówiący, czy ma tworzyć zmienne z parametrami rodzica {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}} jest przekazywana do dziecka w postaci wygenerowanej listy parametrów rodzica wraz z zwartościami przez funkcję, w przypadku innej jego wartości, to parametr {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}} jest przekazywany normalnie, jeżeli ta ramka byłaby potomkiem, czyli parametry byłyby przekazywane od przodka, i nie byłby ustawiony parametr {{Code|nie potomek}} {{LinkPatrz|nie potomek}}, ** {{Code|zmienna z argumentami ramki}} {{Patrz|zmienna z argumentami ramki}} - zmienna mówiąca, czy mają być tworzone parametry ramki, które nie są sprawdzane 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}} {{Patrz|zmienna z nazwą szablonu rodzica}} - parametr, gdy niepusty, wtedy jest tworzona zmienna: {{LinkPatrz|nazwa szablonu rodzica}}, niepusty parametr {{Code|potomek}} {{LinkPatrz|potomek}}, tworzona jest niepusta lista parametrów {{Code|bez argumentów szablonu}} {{LinkPatrz|bez argumentów szablonu}}, powtarzana jest zmienna {{Code|bez dodatkowych sprawdzeń}} {{LinkPatrz|bez dodatkowych sprawdzeń}}, i tworzona jest dodatkowa parametr z {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}}, jeśli nie podano niepustego parametru {{Code|bez dodatkowych sprawdzeń}} {{LinkPatrz|bez dodatkowych sprawdzeń}}, ** {{Code|parametry funkcji modułu pudełek}} {{Patrz|parametry funkcji modułu pudełek}} - czy do funkcji mają wchodzić parametry modułu pudełek, które są ponumerowane dodatkowym numerkiem, ** {{Code|parametry podstawowe funkcji modułu pudełek}} {{Patrz|parametry podstawowe funkcji modułu pudełek}} - czy do funkcji mają wchodzić podstawowe parametry funkcji modułu pudełek, te które nie mają dodatkowego numerka, ** {{Code|usuń z parametrów ramki}} {{Patrz|usuń z parametrów ramki}} - parametry ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, przedstawiający zmienne oddzielone średnikami, które nie mają być uwzględnione przy uruchamianiu danego obiektu. * {{Code|Funkcja}} {{Patrz|Funkcja}} - nazwa funkcji w module, który ma wywołać w ramce ta funkcja, w przypadku, gdy parametr {{LinkPatrz|co_ma_wywolac}} ma wartość {{Tt|1}}, czyli wywołujemy funkcję {{LinkŚródtytuł|p["Moduł"]}}. Funkcja uruchamia szablon, moduł, czy ramkę, w zależności od drugiego parametru funkcji, z parametrami rodzica ramki bez parametrów opisanych zmienną: {{LinkPatrz|bez argumentów szablonu}}, i bez parametrów ramki wskazanych przez: {{Code|usuń z parametrów ramki}}. Za pomocą tej funkcji możemy wielopoziomowo wywoływać funkcje przekazując parametry od najwyższego poziomu do najniższego. Ta funkcja służy przede wszystkim 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 do uruchamiania szablonów, a uruchamianie funkcji modułu, w tym funkcji {{m|Cytuj|custom}} w szablonie {{s|PrzypisStrona}}. Przykładem wywołania szablonu, która jest w szablonie: {{s|Wzór}}, w którym jest wywoływany inny szablon, tym razem silnik, tzn. {{s|Wzór/silnik}}: <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> === {{Śródtytuł|BudowaSzereguZDanych}}{{Code|BudowaSzereguZDanych}} === Funkcja do uruchamiania się 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> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tab_lancuch}} {{Patrz|tab_lancuch}} - pewna tablica transportu funkcji. * Zmienne do mikroszablonów: ** {{Code|minimum}} {{Patrz|minimum}} - liczba mówiąca o minimum, ** {{Code|maksimum}} {{Patrz|maksimum}} - liczba mówiąca o maksimum. Parametry ramki funkcji tablicy transportu modułu: * {{Code|akapit}} {{Patrz|akapit}} - jeśli niepusta, to ona definiuje akapit ze znaków {{Code|\n\n}}, przeciwnym wypadku elementy łańcucha nie są łączone w akapity, * {{Code|przecinek}} {{Patrz|przecinek}} - jeśli niepuste, to mówi, że pomiędzy elementami powiniem być przecinek: {{Code|", "}}, został on specjalnie objęty w cudzysłowy, aby zilustrować, że po przecinku znajduje się spacja, * {{Code|nowa linia}} {{Patrz|nowa linia}} - w przeciwieństwo do zmiennej {{LinkPatrz|akapit}}, używany zamiast niej, pisze jedną nową linię, a nie dwie, jako: {{Code|\n}}, * {{Code|wyliczanka}} {{Patrz|wyliczanka}} - wylicza elementy z przecinkami, stawiając przed ostatnim elementem zamiast jego wyraz wyliczania {{Code|i}}, * {{Code|początek}} {{Patrz|początek}} - mówi, że na początku musi znajdować się przecinek, * {{Code|myślnik}} {{Patrz|myślnik}} - mówi, że jeśli nie ma początku przecinka, to stawiany jest myślnik, używany zamiast {{LinkPatrz|początek}}, * {{Code|warunkowe}} {{Patrz|warunkowe}} - instrukcje wikikodu, takie jak: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}, zostaną w kodzie rozwinięte, a później ciągłe właściwe elementy wikikodu otoczone dwoma dolnymi myślnikami zostaną rozwinięte do pewnej postaci, funkcja używa do tego {{LinkŚródtytuł|p.InstrukcjeWarunkowe}}, ** {{Code|parametr}} {{Patrz|parametr}} - używany w towarzystwie z {{LinkPatrz|warunkowe}}, mówiący że, derektywy znakowe ciągłe otoczone dwoma dolnymi myślnikami, zostaną zastąpione odpowiedmimi szablonami, w przeciwnym wypadku niepodania tej wartości lub jego pustej, wtedy te derektywy zostaną zastąpione w postaci rozwiniętej tych szablonów. ** Funkcja w tym warunku zwraca ciąg znaków rozwiniętego warunku. Funkcja posiada też mikroszablony, które są zdefiniowane w kodzie łańcuchów {{LinkPatrz|tab_lancuch}}: * {{Code|<nowiki>{{min}}</nowiki>}} - minimalna wartość szeregu zmiennych, określana przez {{LinkPatrz|minimum}}, * {{Code|<nowiki>{{max}}</nowiki>}} - a tutaj ich maksymalna, określana przez {{LinkPatrz|maksimum}}. Te dwie zmienne są podstawiane do uzyskanego ciągu. Funkcja zwraca te części rozwiniętego tekstu wikikodu, jeśli podano {{LinkPatrz|warunkowe}}, co do instrukcji warunkowych, i też te bez wewnętrznych klamerek, czyli specjalne kody, czyli te otoczone z dwóch stron dolnumi myślnikami, a pozostałe część tak uzyskana jest za to nierozwinięta. == {{Śródtytuł|p.InstrukcjeWarunkowe}}{{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}} {{Patrz|ciag}} - podany ciąg do rozwinięcia z instrukcji warunkowych wewnątrz nie posiadający klamerek, * {{Code|derektywy_specjalne}} {{Patrz|derektywy_specjalne}} - używa do zastępowania specjalnych derektyw, podane po prawej stronie w ramce pływającej, * {{Code|derektywy_parametrowe}} {{Patrz|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: {{LinkŚródtytuł|BudowaSzereguZDanych}}, poprzez: {{LinkŚródtytuł|p.Powtarzaj}}. 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 == === {{Śródtytuł|p.RozpakujArgumenty}}{{Code|p.RozpakujArgumenty}} === Ta funkcja jest do rozpakowywania zmiennych z podanego parametru, których zmienne są oddzieloe średnikami. * Funkcja uruchamia się 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. === {{Śródtytuł|p.PakujParametry}}{{Code|p.PakujParametry}} === Ta funkcja jest do pakowania tablicy, języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w tablicę {{lpg|JSON}}. * Funkcja się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Funkcja pakuje parametry tablicy {{lpg|Lua}} do tablicy: {{lpg|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> Parametry funkcji: * {{Code|args}} {{Patrz|args}} - tablica {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Ten szablon nazywa parametry, jakby nienazwane w tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera) z tablicy {{lpg|Lua}} (tutaj od jedynki), do tablicy nazwanej, jak to robi się w {{lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonEncode}}, z drugim parametrem: {{Code|mw.text.JSON_PRESERVE_KEYS}} {{Patrz|mw.text.JSON_PRESERVE_KEYS}}. === {{Śródtytuł|p.RozpakujParametry}}{{Code|p.RozpakujParametry}} === Ta funkcja jest do rozpakowywania tablicy {{lpg|JSON}} w tablicę języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}} * 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 w niej zwracany. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.RozpakujParametry = function (zmienna_z_parametrami) return mw.text.jsonDecode(zmienna_z_parametrami,mw.text.JSON_PRESERVE_KEYS); end; </syntaxhighlight> Parametry funkcji: * {{Code|zmienna_z_parametrami}} {{Patrz|zmienna_z_parametrami}} - tablica {{lpg|JSON}}. Ten szablon nazywa parametry nienazwane w tablicy {{lpg|Lua}} (tutaj od jedynki) z tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera), do tablicy nienazwanej z nazwanej, jak to robi się w {{Lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonDecode}}, z użyciem drugiego parametru: {{LinkPatrz|mw.text.JSON_PRESERVE_KEYS}}. == {{Śródtytuł|p["Rozwiń"]}}{{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> Parameetry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon rozwija wikikod podany w zmiennej {{Code|1}}, w parametrach szablonu rodzica. * 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}}: <syntaxhighlight lang="lua"> p["Rozwiń"] = function(frame) return frame:getParent():preprocess(frame.args[1]); end; </syntaxhighlight> == {{Śródtytuł|p.Log}}{{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> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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}}: <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 == === {{Śródtytuł|p.Szablon}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p.Szablon = function(frame) return ParserBlokowy(frame,0); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Szablon|Nazwa=<nazwa szablonu>|...}} </syntaxhighlight> === {{Śródtytuł|p["Moduł"]}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p["Moduł"] = function(frame) return ParserBlokowy(frame,1); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Moduł|Nazwa=<nazwa modułu>|Funkcja=<nazwa funkcji>|...}} </syntaxhighlight> === {{Śródtytuł|p.Parser}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p.Parser = function(frame) return ParserBlokowy(frame,2); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Parser|Nazwa=<nazwa parsera>|...}} </syntaxhighlight> == Funkcje książkowe == === {{Śródtytuł|p.Q}}{{Code|p.Q}} === Funkcja uruchamiana we wnętrzu szablonu {{s|Q}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on. * Jego specjalne odpowiedniki to {{s|T}} i {{s|T2}}. Funkcja uruchamia szablon o podanej nazwie w pierwszym parametrze z dodanym przedrostkiem {{Code|Książka:}} przed nazwą szablonu. * Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.Q =function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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ą (parametry nazwane, które są wliczane 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}}}} === {{Śródtytuł|p.N}}{{Code|p.N}} === Funkcja uruchamiana we wnętrzu szablonu {{s|N}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on. Funkcja przed nazwą szablonu, czy modułu, zostawia w wpis w postaci przedrostka {{Code|Książka:}}. Czy zostanie dodana przed tym nazwa przestrzeni nazw, to zależy od niepodania niepustej zmiennej {{Parametr|n}}, a zmienna {{Parametr|p|1}} - to przed nim jest dodawana przestrzeń nazw szablonu {{Np|Template|link=tak}}, {{Parametr|p|2}} - modułu {{Np|Module|link=tak}} i {{Parametr|p|3}} - kategorii. * Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.N=function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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}}}} === {{Śródtytuł|p.A}}{{Code|p.A}} === Funkcja uruchamiana we wnętrzu szablonu {{s|A}}, która przyjmuje jego parametry, i tak samo działa, jak on. Funkcja usuwa przedrostek {{Code|Książka:}} w nazwie szablonu, czy modułu. Gdy jest podany parametr: {{Parametr|p|tak}}, to dla przestrzeni niebędących: {{Np|Template|link=tak}}, {{Np|Module|link=tak}} i {{Np|Category|link=tak}}, jest zwracany wtedy przez nią parametr pierwszy funkcji. Dla tych wartości właśnie wyliczonych przestrzeni usuwany jest przedrostek {{Code|Książka:}}. Funkcja generuje nazwę z prestrzenią nazw. * Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.A=function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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 == === {{Śródtytuł|p.Powtarzaj}}{{Code|p.Powtarzaj}} === Funkcja służy do powtarzalnego generowania wikikodu ze składników jego kroku przy pomocy określonych zmiennych rodzica. * Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.Powtarzaj = function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Funkcja może przyjmować tylko parametry nienazwane albo tylko nazwane, albo nienazwane i nazwane (gdy jest ustawiony parametr {{Code|różne}} {{Patrz|różne}}). 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}} {{LinkPatrz|różne}}, która wtedy ma wskazywać na wartość niepustą. ; Najważniejsze parametry, które są to opcjonalne, to są{{dk}} * {{Code|start}} {{Patrz|start}} - liczba, która wskazuje początek liczenia - domyślna wartość to {{Code|1}}, * {{Code|koniec}} {{Patrz|koniec}} - liczba, która wskazuje koniec liczenia. ; Numer końca liczenia parametrów nienazwanych lub nazwanych, czy nazwanychi nienazwanych{{dk}} * Elementy w {{Code|parametry}} {{Patrz|parametry}} mogą modyfikować odpowiednio parametry: {{Code|start}} {{LinkPatrz|start}} i {{Code|koniec}} {{LinkPatrz|koniec}}. * Ze zmiennej {{LinkPatrz|parametry}} jest liczona odpowiednia zmienna {{LinkPatrz|tabela}} dopuzczalnych zmiennych do liczenia. * Funkcja {{Code|Wylicz_skoncz_na_koncu}},którego algorytm podomy w tej poyzcji, tzn. koniec liczenia parametrów nienazwanych musi być policzony, jeżeli nie ma parametrów nazwanych w tabeli {{Code|tabela}} {{Patrz|tabela}}. A przeciwnie, jeżeli nie jest ustawiony parametr {{Code|różne}} {{LinkPatrz|różne}} nie na wartość niepustą, wtedy jest liczony parametr maksimum parametrów nazwanych, przeciwnie wtedy liczy się parametr maksimum numeracyjne parametrów numerowanych, czyli zmienną: {{Code|maksimum numeracyjne}} {{Patrz|maksimum numeracyjne}}, jeśli on ma wartość niepustą, wtedy liczy się maksimum parametrów nienazwanych, a jeżeli ona ma przeciwną wartość, to się liczy maksimum parametrów nazwanych, jak nienazwanych. Na podstawie tego mamy policzony odpowiednio taki koniec liczenia modyfikacji zwracany i policzony przez tą funkcję. ; Parametr {{Code|dodatkowe}}{{dk}} * To maksimum parametrów nazwanych, dla jakieś podstawy parametrów, są pomijane parametry z: {{Code|dodatkowe}}, która jest zestawem podstaw parametrów oddzielonych średnikami, jest właśnie podany ten parametr w nim. Przykładem jego jest: * {{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. ; Format parametru {{Parametr|parametry}}{{dk}} * 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 równa liczbie {{Code|5}}, oddzielonych średnikami. ; Opis parametru {{Parametr|parametry}}{{dk}} 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 w wartościach: {{Code|zmienna 1>}}, {{Code|<zmienna 2>}} i {{Code|<zmienna 3>}}, w których są pewne nazwy bazowe parametrów bez numerka na jej końcu, w zmiennej {{Code|parametry}} można nie podawać dalszych elementów 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ć nawet tego znaku,gdy nic nie ma po równa się) dla danego problemu funkcji. ; Wikikod pojedynczego kroku liczenia całości wygenerowanego wikikodu dla wszystkich zmiennych{{dk}} * 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)}}. ; Parametr {{Parametr|start}}, wartość początkowa{{dk}} * Gdy parametr {{Code|tonumber(frame.args["start"]) or 1}}, jest równy zero, funkcja zwraca błąd: {{Code|(początek jest ustawiony na zero)}}. ; Brak parametrów szablonu{{dk}} * 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. ; Parametr {{Parametr|nic}}{{dk}} * Gdy {{Code|nic}} przyjmuje wartość, i gdy pomijamy parametr, lub on przyjmuje wartość pustą, wtedy a funkcja nie może wygenerować żadnego kroku iteracji, to wtedy jest zwracana wartość parametru {{Code|nic}} lub ciąg pusty. ; Inne parametry{{dk}} * Parametr {{Code|po kolei}} {{Patrz|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|zaznacz}} {{Patrz|zaznacz}} - liczby oddzielone średnikami, które przy parametrach nazwanych o pewnych numerach i numerkach nie mają być uwzględnione przy niepustym parametrze {{Code|po kolei}} {{LinkPatrz|po kolei}}, a przy jego przeciwnej wartości za to mają być użyte. * 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}} {{Patrz|_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>}}. Domyślną wartością {{Code|_i}} jest {{Code|_}}. ; W wyniku iteracji otrzymamy tablicę ciągów łańcuchów z wikikodami, wtedy ta funkcja używa do tego liczenia{{dk}} * Jest to funkcja {{LinkŚródtytuł|BudowaSzereguZDanych}}. * Wywołanie funkcji jest takie: {{Pre|lancuch_znakow {{=}} BudowaSzereguZDanych(frame,tab_lancuch,minimum or 0,maksimum);}} ; Parametry funkcji {{LinkŚródtytuł|BudowaSzereguZDanych}}. * One są wraz z jego parametrami podane w postaci jego parametrów ramki {{Code|frame}}, które jednocześnie są parametrami {{LinkŚródtytuł|p.Powtarzaj}}, używa się je 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ą {{LzLua|frame:preprocess}}, i jest zwracany jako wartość omawianej funkcji. ; Przykłady{{dk}} * Funkcja jest używana np. w silnikach szablonów, np.: {{s|Osobny artykuł/silnik}} szablonu {{s|Osobny artykuł}}, jak i do niego 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}}. === {{Śródtytuł|p.PowtarzajOdDo}}{{Code|p.PowtarzajOdDo}} === Funkcja służy do iteracji, od jakieś liczby do jakieś innej, podanego wikikodu dla danego kroku {{Code|1}}, iterując to, co krok określony zmienną: {{Code|krok}}. * 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ę{{dk}} {{nobold|{{Code|{{m|Ramka|Rozwiń}}}}}}, lub go rozwija na końcu, na podstawie kolejnych kroków iteracji{{dk}} * {{Code|start}} - początek iteracji dokonywany przez ta funkcję, * {{Code|koniec}} - koniec iteracji dokonywany przez ta funkcję, * {{Code|krok}} - krok iteracji, co który numer 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{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}} * {{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ą{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}} * {{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{{dk}} {{nobold|{{s|Chem/silnik}}}}, w tym nadrzędnym{{dk}} {{nobold|{{s|Chem}}}}, przykłady jego działania{{dk}} * {{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. === {{Śródtytuł|p["PrzetwarzajIterującCiąg"]}}{{Code|p["PrzetwarzajIterującCiąg"]}} === Funkcja do iteracji wikikodu po parametrach oddzielonych średniami w parametrze ramki {{Code|cią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{{dk}} * {{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{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}} * {{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ą{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}} * {{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>}} jest kolejny parametr, oddzielonych od pozastałych średniami, z: {{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}}: {{LzLua|frame:preprocess}}, jeśli: {{Code|nie rozwiń}}, nie przybiera wartości niepustej. === {{Śródtytuł|p["PowtarzajWedług"]}}{{Code|p["PowtarzajWedług"]}} === Funkcja wyszukująca elementy według wzoru począwszy od numeru, określonego przez {{Code|start}}, aż do zakończenia danych kolenych sprawdzania od tej liczby, czy taka strona istnieje, numerek jest określony przez pewien wikikod, określony przez {{Code|<nowiki>{{_}}</nowiki>}}, którymusi być podany we wzorze {{Code|wzor}}. Ona w ten sposób dla istniejących stron ustawia pewne łańcuchy, które są łączone znakami {{Code|", "}}, a na końcu samym {{Code|" i "}}. 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 strony{{dk}} {{nobold|„{{Ns:Template}}{{dk}}Polecane książki/”}}, a oto przykład{{dk}}{{nobold|{{Parametr|wzór|{{Ns:Template}}{{dk}}Polecane książki/{{((}}_{{))}}}}}}{{dk}} * {{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}}}} == {{Śródtytuł|p["LiczbaPrawychUkośników"]}}{{Code|p["LiczbaPrawychUkośników"]}} == Funkcja liczy, ile jest prawych ukośników w adresie strony podany jako pierwszy parametr ramki. * 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. ; Parametry fubkcji{{dk}} * {{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}}}} == {{Śródtytuł|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}}{{Code|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}} == Funkcja liczy maksymalny numer kolejnej strony liczonej według wzoru {{Code|wzor}}, musi być we wzorze podany element {{Code|<nowiki>{{_}}</nowiki>}}, aby mógł to robić. * 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/”, czyli dla stron o ogólnym wzorze: {{Parametr|wzór|{{Ns:Template}}:Polecane książki/{{((}}_{{))}}}}. ; Parametry funkcji{{dk}} * {{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 == === {{Śródtytuł|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}}{{Code|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}} === Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy minimalny numer takich zmiennych. * 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*)}}. ; Parametry funkcji{{dk}} * {{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}}}} === {{Śródtytuł|p.IleJestTakichOdpowiednikowychZmiennych}}{{Code|p.IleJestTakichOdpowiednikowychZmiennych}} === Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy ile jest takich zmiennych. * 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. ; Parametry funkcji{{dk}} * {{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}}}} == {{Śródtytuł|p["Parametr w tablicy nazw"]}}{{Code|p["Parametr w tablicy nazw"]}} == Funkcja bada, czy jest taki parametr {{Code|pozycja}} w tablicy nazw określonej zmienną {{Code|parametry}}, której elementy są oddzielone średnikami. * 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. ; Parametry funkcji{{dk}} * {{Code|parametry}} - lista parametrów oddzielonych średnikiem, * {{Code|pozycja}} - szukana lista w tablicy parametrów, * {{Code|od dużej}} - czy parametr: {{Code|pozycja}}, i elementy listy: {{Code|parametry}}, 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}}, a to ostatnie jest to wartość języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, która po transformacji na wikikod jest zamieniana na ciąg pusty, więc ona nadaje się do instrukcji warunkowych. === 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> o2nx397i1k1xsbmom6y3rcop3k1dbmt 553416 553415 2026-08-29T22:46:49Z Persino 2851 /* {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} */ 553416 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. Funkcje, w tym module, uruchamia się tylko w ramce w szablonie, bo są tylko do tego przygotowane. One służą do powtarzania parametrów rodzica, czy przodka, iteracji pojedynczego kroku wikikodu, jakiś sprawdzeń, do liczenia odpowiedników i związanych z tym parametrami, itp.. == Funcje lokalne modułu == === {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} === Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, tylko w module {{Code|{{ld2|Ramka}}}}, szablonów, modułów i parserów w ramce. Uruchamiana jest przez funkcje: {{LinkŚródtytuł|p.Szablon}} - funkcja do uruchamiania szablonów, {{LinkŚródtytuł|p["Moduł"]}} - funkcja do uruchamiania modułów, i {{LinkŚródtytuł|p.Parser}} - funkcja do uruchamiania parserów. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ParserBlokowy(frame, co_ma_wywolac)...end; </syntaxhighlight> ; Parametry funkcji{{dk}} * {{Code|frame}} {{Patrz|frame}} - funkcja ramkki funkcji tablica transportu modułu, * {{Code|co_ma_wywolac}} {{Patrz|co_ma_wywolac}} - ten parametr przyjmuje wartość liczbową, która jeżeli {{Tt|0}} - to uruchamiany jest szablon, jeżeli {{Tt|1}} - moduł, jeżeli {{Code|2}} - to parser, jeżeli on ma inne wartości, tzn.: {{Tt|2}}, a {{Tt|3}} i dalej, to już dany szablon. ; Parametry ramki funkcji tablicy transportu modułu{{dk}} * Parametry podstawowe: ** {{Code|Nazwa}} {{Patrz|Nazwa}} - jest to pełna nazwa szablonu, modułu, czy parsera, ** {{Code|bez argumentów rodzica}} {{Patrz|bez argumentów rodzica}} - tablica parametrów oddzielonych średnikami, których obiekt uruchamiany nie może przyjmować, nawet jeżeli one są, ** {{Code|nazwa szablonu rodzica}} {{Patrz|nazwa szablonu rodzica}} - jest to zmienna przechowująca nazwę szablonu rodzica ramki dziecka,a nawet któreś z jego przodków, ** {{Code|bez argumentów nienazwanych rodzica}} {{Patrz|bez argumentów nienazwanych rodzica}} - szablon w ramce nie przyjmuje parametrów nienazwanych, określonych liczbą, podanych w rodzicu ramki, ** {{Code|potomek}} {{Patrz|potomek}} - zmienna mówiąca, że to jest potomek rodzica ramki, tą zmienną podaje się w parametrze {{Code|bez argumentów rodzica}} {{LinkPatrz|bez argumentów rodzica}}, jeżeli nie jest podany parametr {{Code|nie potomek}} - dodane przez tę funkcję, tej zmiennej nie używa się bezpośrednio w kodzie ramki, sama ta ramka tworzy automatycznie ten niepusty parametr, jedynie go można użyć przy wielopoziomowym przekazywaniu parametrów rodzica, do ustawiania pewnych wartości prametrów w budowanych w tą funkcję, ** {{Code|nie potomek}} {{Patrz|nie potomek}} - zmienna mówiąca, że to nie jest potomek szablonu, używana, gdy nie jest określona istniejąca zmienna ramki {{LinkPatrz|zmienna z parametrami rodzica}}, wtedy taka ramka jest traktowana jak normalna ramka, której jedynie trzeba przekazać parametry rodzica, nie przodka, wtedy do niej nie są przekazywane parametry: {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}} (ta zmienna jest wtedy ustawiana, gdy nie jest niepusty parametr {{Code|bez dodatkowych sprawdzeń}} {{LinkPatrz|bez dodatkowych sprawdzeń}}), {{Code|bez argumentów szablonu}} {{LinkPatrz|bez argumentów szablonu}} i {{LinkPatrz|potomek}} (ustawiany na stałą wartość niepustą). Jeżeli zmienna ogólnie {{Code|nie potomek}} {{LinkPatrz|nie potomek}} tam została podana, lub nie, wtedy zawsze {{Code|nazwa szablonu rodzic}} {{LinkPatrz|nazwa szablonu rodzica}} (jeśli ta wartość rodzica nie istnieje, to nadawana jest jej aktualna nazwa szablonu rodzica, a nie przodka, normalnie jest to przodka, a w szczególności rodzica). ** {{Code|bez argumentów szablonu}} {{Patrz|bez argumentów szablonu}} - zmienna oddzielonych średnikami parametrów, których nie wolno uwzględniać w walidacji błędów w {{m|Sprawdź|Parametry}}, ta tablica jest wkładana do parametrów ramki, gdy nie podany jest niepusty parametr w niej {{Code|zmienna z argumentami ramki}} {{LinkPatrz|zmienna z argumentami ramki}}, a jeżeli ten argument jednak jest niepusty, wtedy do tej zmiennej są wliczane parametry ramki, które nie są argumentami wbudowanymi w tą funkcję. ** {{Code|bez dodatkowych sprawdzeń}} {{Patrz|bez dodatkowych sprawdzeń}} - nie jest uruchamiana walidacja parametrów szablonu rodzica, czyli wtedy do dziecka nie jest przekazywany parametr {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}} i nie jest ustawiana zmienna, ale za to ten parametr jest powtarzany w parametrach dziecka, ** {{Code|parametry rodzica}} {{Patrz|parametry rodzica}} - zmienna przedstawiająca parametry rodzica, czy któreś ze przodków, przekazane do ramki: {{m|Sprawdź|Parametry}} - dodane przez tę funkcję, ** {{Code|zmienna z parametrami rodzica}} {{Patrz|zmienna z parametrami rodzica}} - jeśli wartość jego jest niepusta, wtedy parametr mówiący, czy ma tworzyć zmienne z parametrami rodzica {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}} jest przekazywana do dziecka w postaci wygenerowanej listy parametrów rodzica wraz z zwartościami przez funkcję, w przypadku innej jego wartości, to ten parametr rodzica jest przekazywany normalnie, jeżeli ta ramka byłaby potomkiem, czyli parametry byłyby przekazywane od przodka, i nie byłby ustawiony parametr {{Code|nie potomek}} {{LinkPatrz|nie potomek}}, ** {{Code|zmienna z argumentami ramki}} {{Patrz|zmienna z argumentami ramki}} - zmienna mówiąca, czy mają być tworzone parametry ramki, które nie są sprawdzane 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}} {{Patrz|zmienna z nazwą szablonu rodzica}} - parametr, gdy niepusty, wtedy jest tworzona zmienna: {{LinkPatrz|nazwa szablonu rodzica}}, niepusty parametr {{Code|potomek}} {{LinkPatrz|potomek}}, tworzona jest niepusta lista parametrów {{Code|bez argumentów szablonu}} {{LinkPatrz|bez argumentów szablonu}}, powtarzana jest zmienna {{Code|bez dodatkowych sprawdzeń}} {{LinkPatrz|bez dodatkowych sprawdzeń}}, i tworzona jest dodatkowa parametr z {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}}, jeśli nie podano niepustego parametru {{Code|bez dodatkowych sprawdzeń}} {{LinkPatrz|bez dodatkowych sprawdzeń}}, ** {{Code|parametry funkcji modułu pudełek}} {{Patrz|parametry funkcji modułu pudełek}} - czy do funkcji mają wchodzić parametry modułu pudełek, które są ponumerowane dodatkowym numerkiem, ** {{Code|parametry podstawowe funkcji modułu pudełek}} {{Patrz|parametry podstawowe funkcji modułu pudełek}} - czy do funkcji mają wchodzić podstawowe parametry funkcji modułu pudełek, te które nie mają dodatkowego numerka, ** {{Code|usuń z parametrów ramki}} {{Patrz|usuń z parametrów ramki}} - parametry ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, przedstawiający zmienne oddzielone średnikami, które nie mają być uwzględnione przy uruchamianiu danego obiektu. * {{Code|Funkcja}} {{Patrz|Funkcja}} - nazwa funkcji w module, który ma wywołać w ramce ta funkcja, w przypadku, gdy parametr {{LinkPatrz|co_ma_wywolac}} ma wartość {{Tt|1}}, czyli wywołujemy funkcję {{LinkŚródtytuł|p["Moduł"]}}. Funkcja uruchamia szablon, moduł, czy ramkę, w zależności od drugiego parametru funkcji, z parametrami rodzica ramki bez parametrów opisanych zmienną: {{LinkPatrz|bez argumentów szablonu}}, i bez parametrów ramki wskazanych przez: {{Code|usuń z parametrów ramki}}. Za pomocą tej funkcji możemy wielopoziomowo wywoływać funkcje przekazując parametry od najwyższego poziomu do najniższego. Ta funkcja służy przede wszystkim 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 do uruchamiania szablonów, a uruchamianie funkcji modułu, w tym funkcji {{m|Cytuj|custom}} w szablonie {{s|PrzypisStrona}}. Przykładem wywołania szablonu, która jest w szablonie: {{s|Wzór}}, w którym jest wywoływany inny szablon, tym razem silnik, tzn. {{s|Wzór/silnik}}: <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> === {{Śródtytuł|BudowaSzereguZDanych}}{{Code|BudowaSzereguZDanych}} === Funkcja do uruchamiania się 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> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tab_lancuch}} {{Patrz|tab_lancuch}} - pewna tablica transportu funkcji. * Zmienne do mikroszablonów: ** {{Code|minimum}} {{Patrz|minimum}} - liczba mówiąca o minimum, ** {{Code|maksimum}} {{Patrz|maksimum}} - liczba mówiąca o maksimum. Parametry ramki funkcji tablicy transportu modułu: * {{Code|akapit}} {{Patrz|akapit}} - jeśli niepusta, to ona definiuje akapit ze znaków {{Code|\n\n}}, przeciwnym wypadku elementy łańcucha nie są łączone w akapity, * {{Code|przecinek}} {{Patrz|przecinek}} - jeśli niepuste, to mówi, że pomiędzy elementami powiniem być przecinek: {{Code|", "}}, został on specjalnie objęty w cudzysłowy, aby zilustrować, że po przecinku znajduje się spacja, * {{Code|nowa linia}} {{Patrz|nowa linia}} - w przeciwieństwo do zmiennej {{LinkPatrz|akapit}}, używany zamiast niej, pisze jedną nową linię, a nie dwie, jako: {{Code|\n}}, * {{Code|wyliczanka}} {{Patrz|wyliczanka}} - wylicza elementy z przecinkami, stawiając przed ostatnim elementem zamiast jego wyraz wyliczania {{Code|i}}, * {{Code|początek}} {{Patrz|początek}} - mówi, że na początku musi znajdować się przecinek, * {{Code|myślnik}} {{Patrz|myślnik}} - mówi, że jeśli nie ma początku przecinka, to stawiany jest myślnik, używany zamiast {{LinkPatrz|początek}}, * {{Code|warunkowe}} {{Patrz|warunkowe}} - instrukcje wikikodu, takie jak: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}, zostaną w kodzie rozwinięte, a później ciągłe właściwe elementy wikikodu otoczone dwoma dolnymi myślnikami zostaną rozwinięte do pewnej postaci, funkcja używa do tego {{LinkŚródtytuł|p.InstrukcjeWarunkowe}}, ** {{Code|parametr}} {{Patrz|parametr}} - używany w towarzystwie z {{LinkPatrz|warunkowe}}, mówiący że, derektywy znakowe ciągłe otoczone dwoma dolnymi myślnikami, zostaną zastąpione odpowiedmimi szablonami, w przeciwnym wypadku niepodania tej wartości lub jego pustej, wtedy te derektywy zostaną zastąpione w postaci rozwiniętej tych szablonów. ** Funkcja w tym warunku zwraca ciąg znaków rozwiniętego warunku. Funkcja posiada też mikroszablony, które są zdefiniowane w kodzie łańcuchów {{LinkPatrz|tab_lancuch}}: * {{Code|<nowiki>{{min}}</nowiki>}} - minimalna wartość szeregu zmiennych, określana przez {{LinkPatrz|minimum}}, * {{Code|<nowiki>{{max}}</nowiki>}} - a tutaj ich maksymalna, określana przez {{LinkPatrz|maksimum}}. Te dwie zmienne są podstawiane do uzyskanego ciągu. Funkcja zwraca te części rozwiniętego tekstu wikikodu, jeśli podano {{LinkPatrz|warunkowe}}, co do instrukcji warunkowych, i też te bez wewnętrznych klamerek, czyli specjalne kody, czyli te otoczone z dwóch stron dolnumi myślnikami, a pozostałe część tak uzyskana jest za to nierozwinięta. == {{Śródtytuł|p.InstrukcjeWarunkowe}}{{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}} {{Patrz|ciag}} - podany ciąg do rozwinięcia z instrukcji warunkowych wewnątrz nie posiadający klamerek, * {{Code|derektywy_specjalne}} {{Patrz|derektywy_specjalne}} - używa do zastępowania specjalnych derektyw, podane po prawej stronie w ramce pływającej, * {{Code|derektywy_parametrowe}} {{Patrz|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: {{LinkŚródtytuł|BudowaSzereguZDanych}}, poprzez: {{LinkŚródtytuł|p.Powtarzaj}}. 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 == === {{Śródtytuł|p.RozpakujArgumenty}}{{Code|p.RozpakujArgumenty}} === Ta funkcja jest do rozpakowywania zmiennych z podanego parametru, których zmienne są oddzieloe średnikami. * Funkcja uruchamia się 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. === {{Śródtytuł|p.PakujParametry}}{{Code|p.PakujParametry}} === Ta funkcja jest do pakowania tablicy, języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w tablicę {{lpg|JSON}}. * Funkcja się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Funkcja pakuje parametry tablicy {{lpg|Lua}} do tablicy: {{lpg|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> Parametry funkcji: * {{Code|args}} {{Patrz|args}} - tablica {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Ten szablon nazywa parametry, jakby nienazwane w tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera) z tablicy {{lpg|Lua}} (tutaj od jedynki), do tablicy nazwanej, jak to robi się w {{lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonEncode}}, z drugim parametrem: {{Code|mw.text.JSON_PRESERVE_KEYS}} {{Patrz|mw.text.JSON_PRESERVE_KEYS}}. === {{Śródtytuł|p.RozpakujParametry}}{{Code|p.RozpakujParametry}} === Ta funkcja jest do rozpakowywania tablicy {{lpg|JSON}} w tablicę języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}} * 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 w niej zwracany. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.RozpakujParametry = function (zmienna_z_parametrami) return mw.text.jsonDecode(zmienna_z_parametrami,mw.text.JSON_PRESERVE_KEYS); end; </syntaxhighlight> Parametry funkcji: * {{Code|zmienna_z_parametrami}} {{Patrz|zmienna_z_parametrami}} - tablica {{lpg|JSON}}. Ten szablon nazywa parametry nienazwane w tablicy {{lpg|Lua}} (tutaj od jedynki) z tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera), do tablicy nienazwanej z nazwanej, jak to robi się w {{Lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonDecode}}, z użyciem drugiego parametru: {{LinkPatrz|mw.text.JSON_PRESERVE_KEYS}}. == {{Śródtytuł|p["Rozwiń"]}}{{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> Parameetry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon rozwija wikikod podany w zmiennej {{Code|1}}, w parametrach szablonu rodzica. * 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}}: <syntaxhighlight lang="lua"> p["Rozwiń"] = function(frame) return frame:getParent():preprocess(frame.args[1]); end; </syntaxhighlight> == {{Śródtytuł|p.Log}}{{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> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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}}: <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 == === {{Śródtytuł|p.Szablon}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p.Szablon = function(frame) return ParserBlokowy(frame,0); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Szablon|Nazwa=<nazwa szablonu>|...}} </syntaxhighlight> === {{Śródtytuł|p["Moduł"]}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p["Moduł"] = function(frame) return ParserBlokowy(frame,1); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Moduł|Nazwa=<nazwa modułu>|Funkcja=<nazwa funkcji>|...}} </syntaxhighlight> === {{Śródtytuł|p.Parser}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p.Parser = function(frame) return ParserBlokowy(frame,2); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Parser|Nazwa=<nazwa parsera>|...}} </syntaxhighlight> == Funkcje książkowe == === {{Śródtytuł|p.Q}}{{Code|p.Q}} === Funkcja uruchamiana we wnętrzu szablonu {{s|Q}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on. * Jego specjalne odpowiedniki to {{s|T}} i {{s|T2}}. Funkcja uruchamia szablon o podanej nazwie w pierwszym parametrze z dodanym przedrostkiem {{Code|Książka:}} przed nazwą szablonu. * Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.Q =function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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ą (parametry nazwane, które są wliczane 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}}}} === {{Śródtytuł|p.N}}{{Code|p.N}} === Funkcja uruchamiana we wnętrzu szablonu {{s|N}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on. Funkcja przed nazwą szablonu, czy modułu, zostawia w wpis w postaci przedrostka {{Code|Książka:}}. Czy zostanie dodana przed tym nazwa przestrzeni nazw, to zależy od niepodania niepustej zmiennej {{Parametr|n}}, a zmienna {{Parametr|p|1}} - to przed nim jest dodawana przestrzeń nazw szablonu {{Np|Template|link=tak}}, {{Parametr|p|2}} - modułu {{Np|Module|link=tak}} i {{Parametr|p|3}} - kategorii. * Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.N=function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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}}}} === {{Śródtytuł|p.A}}{{Code|p.A}} === Funkcja uruchamiana we wnętrzu szablonu {{s|A}}, która przyjmuje jego parametry, i tak samo działa, jak on. Funkcja usuwa przedrostek {{Code|Książka:}} w nazwie szablonu, czy modułu. Gdy jest podany parametr: {{Parametr|p|tak}}, to dla przestrzeni niebędących: {{Np|Template|link=tak}}, {{Np|Module|link=tak}} i {{Np|Category|link=tak}}, jest zwracany wtedy przez nią parametr pierwszy funkcji. Dla tych wartości właśnie wyliczonych przestrzeni usuwany jest przedrostek {{Code|Książka:}}. Funkcja generuje nazwę z prestrzenią nazw. * Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.A=function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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 == === {{Śródtytuł|p.Powtarzaj}}{{Code|p.Powtarzaj}} === Funkcja służy do powtarzalnego generowania wikikodu ze składników jego kroku przy pomocy określonych zmiennych rodzica. * Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.Powtarzaj = function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Funkcja może przyjmować tylko parametry nienazwane albo tylko nazwane, albo nienazwane i nazwane (gdy jest ustawiony parametr {{Code|różne}} {{Patrz|różne}}). 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}} {{LinkPatrz|różne}}, która wtedy ma wskazywać na wartość niepustą. ; Najważniejsze parametry, które są to opcjonalne, to są{{dk}} * {{Code|start}} {{Patrz|start}} - liczba, która wskazuje początek liczenia - domyślna wartość to {{Code|1}}, * {{Code|koniec}} {{Patrz|koniec}} - liczba, która wskazuje koniec liczenia. ; Numer końca liczenia parametrów nienazwanych lub nazwanych, czy nazwanychi nienazwanych{{dk}} * Elementy w {{Code|parametry}} {{Patrz|parametry}} mogą modyfikować odpowiednio parametry: {{Code|start}} {{LinkPatrz|start}} i {{Code|koniec}} {{LinkPatrz|koniec}}. * Ze zmiennej {{LinkPatrz|parametry}} jest liczona odpowiednia zmienna {{LinkPatrz|tabela}} dopuzczalnych zmiennych do liczenia. * Funkcja {{Code|Wylicz_skoncz_na_koncu}},którego algorytm podomy w tej poyzcji, tzn. koniec liczenia parametrów nienazwanych musi być policzony, jeżeli nie ma parametrów nazwanych w tabeli {{Code|tabela}} {{Patrz|tabela}}. A przeciwnie, jeżeli nie jest ustawiony parametr {{Code|różne}} {{LinkPatrz|różne}} nie na wartość niepustą, wtedy jest liczony parametr maksimum parametrów nazwanych, przeciwnie wtedy liczy się parametr maksimum numeracyjne parametrów numerowanych, czyli zmienną: {{Code|maksimum numeracyjne}} {{Patrz|maksimum numeracyjne}}, jeśli on ma wartość niepustą, wtedy liczy się maksimum parametrów nienazwanych, a jeżeli ona ma przeciwną wartość, to się liczy maksimum parametrów nazwanych, jak nienazwanych. Na podstawie tego mamy policzony odpowiednio taki koniec liczenia modyfikacji zwracany i policzony przez tą funkcję. ; Parametr {{Code|dodatkowe}}{{dk}} * To maksimum parametrów nazwanych, dla jakieś podstawy parametrów, są pomijane parametry z: {{Code|dodatkowe}}, która jest zestawem podstaw parametrów oddzielonych średnikami, jest właśnie podany ten parametr w nim. Przykładem jego jest: * {{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. ; Format parametru {{Parametr|parametry}}{{dk}} * 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 równa liczbie {{Code|5}}, oddzielonych średnikami. ; Opis parametru {{Parametr|parametry}}{{dk}} 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 w wartościach: {{Code|zmienna 1>}}, {{Code|<zmienna 2>}} i {{Code|<zmienna 3>}}, w których są pewne nazwy bazowe parametrów bez numerka na jej końcu, w zmiennej {{Code|parametry}} można nie podawać dalszych elementów 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ć nawet tego znaku,gdy nic nie ma po równa się) dla danego problemu funkcji. ; Wikikod pojedynczego kroku liczenia całości wygenerowanego wikikodu dla wszystkich zmiennych{{dk}} * 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)}}. ; Parametr {{Parametr|start}}, wartość początkowa{{dk}} * Gdy parametr {{Code|tonumber(frame.args["start"]) or 1}}, jest równy zero, funkcja zwraca błąd: {{Code|(początek jest ustawiony na zero)}}. ; Brak parametrów szablonu{{dk}} * 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. ; Parametr {{Parametr|nic}}{{dk}} * Gdy {{Code|nic}} przyjmuje wartość, i gdy pomijamy parametr, lub on przyjmuje wartość pustą, wtedy a funkcja nie może wygenerować żadnego kroku iteracji, to wtedy jest zwracana wartość parametru {{Code|nic}} lub ciąg pusty. ; Inne parametry{{dk}} * Parametr {{Code|po kolei}} {{Patrz|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|zaznacz}} {{Patrz|zaznacz}} - liczby oddzielone średnikami, które przy parametrach nazwanych o pewnych numerach i numerkach nie mają być uwzględnione przy niepustym parametrze {{Code|po kolei}} {{LinkPatrz|po kolei}}, a przy jego przeciwnej wartości za to mają być użyte. * 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}} {{Patrz|_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>}}. Domyślną wartością {{Code|_i}} jest {{Code|_}}. ; W wyniku iteracji otrzymamy tablicę ciągów łańcuchów z wikikodami, wtedy ta funkcja używa do tego liczenia{{dk}} * Jest to funkcja {{LinkŚródtytuł|BudowaSzereguZDanych}}. * Wywołanie funkcji jest takie: {{Pre|lancuch_znakow {{=}} BudowaSzereguZDanych(frame,tab_lancuch,minimum or 0,maksimum);}} ; Parametry funkcji {{LinkŚródtytuł|BudowaSzereguZDanych}}. * One są wraz z jego parametrami podane w postaci jego parametrów ramki {{Code|frame}}, które jednocześnie są parametrami {{LinkŚródtytuł|p.Powtarzaj}}, używa się je 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ą {{LzLua|frame:preprocess}}, i jest zwracany jako wartość omawianej funkcji. ; Przykłady{{dk}} * Funkcja jest używana np. w silnikach szablonów, np.: {{s|Osobny artykuł/silnik}} szablonu {{s|Osobny artykuł}}, jak i do niego 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}}. === {{Śródtytuł|p.PowtarzajOdDo}}{{Code|p.PowtarzajOdDo}} === Funkcja służy do iteracji, od jakieś liczby do jakieś innej, podanego wikikodu dla danego kroku {{Code|1}}, iterując to, co krok określony zmienną: {{Code|krok}}. * 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ę{{dk}} {{nobold|{{Code|{{m|Ramka|Rozwiń}}}}}}, lub go rozwija na końcu, na podstawie kolejnych kroków iteracji{{dk}} * {{Code|start}} - początek iteracji dokonywany przez ta funkcję, * {{Code|koniec}} - koniec iteracji dokonywany przez ta funkcję, * {{Code|krok}} - krok iteracji, co który numer 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{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}} * {{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ą{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}} * {{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{{dk}} {{nobold|{{s|Chem/silnik}}}}, w tym nadrzędnym{{dk}} {{nobold|{{s|Chem}}}}, przykłady jego działania{{dk}} * {{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. === {{Śródtytuł|p["PrzetwarzajIterującCiąg"]}}{{Code|p["PrzetwarzajIterującCiąg"]}} === Funkcja do iteracji wikikodu po parametrach oddzielonych średniami w parametrze ramki {{Code|cią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{{dk}} * {{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{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}} * {{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ą{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}} * {{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>}} jest kolejny parametr, oddzielonych od pozastałych średniami, z: {{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}}: {{LzLua|frame:preprocess}}, jeśli: {{Code|nie rozwiń}}, nie przybiera wartości niepustej. === {{Śródtytuł|p["PowtarzajWedług"]}}{{Code|p["PowtarzajWedług"]}} === Funkcja wyszukująca elementy według wzoru począwszy od numeru, określonego przez {{Code|start}}, aż do zakończenia danych kolenych sprawdzania od tej liczby, czy taka strona istnieje, numerek jest określony przez pewien wikikod, określony przez {{Code|<nowiki>{{_}}</nowiki>}}, którymusi być podany we wzorze {{Code|wzor}}. Ona w ten sposób dla istniejących stron ustawia pewne łańcuchy, które są łączone znakami {{Code|", "}}, a na końcu samym {{Code|" i "}}. 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 strony{{dk}} {{nobold|„{{Ns:Template}}{{dk}}Polecane książki/”}}, a oto przykład{{dk}}{{nobold|{{Parametr|wzór|{{Ns:Template}}{{dk}}Polecane książki/{{((}}_{{))}}}}}}{{dk}} * {{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}}}} == {{Śródtytuł|p["LiczbaPrawychUkośników"]}}{{Code|p["LiczbaPrawychUkośników"]}} == Funkcja liczy, ile jest prawych ukośników w adresie strony podany jako pierwszy parametr ramki. * 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. ; Parametry fubkcji{{dk}} * {{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}}}} == {{Śródtytuł|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}}{{Code|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}} == Funkcja liczy maksymalny numer kolejnej strony liczonej według wzoru {{Code|wzor}}, musi być we wzorze podany element {{Code|<nowiki>{{_}}</nowiki>}}, aby mógł to robić. * 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/”, czyli dla stron o ogólnym wzorze: {{Parametr|wzór|{{Ns:Template}}:Polecane książki/{{((}}_{{))}}}}. ; Parametry funkcji{{dk}} * {{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 == === {{Śródtytuł|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}}{{Code|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}} === Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy minimalny numer takich zmiennych. * 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*)}}. ; Parametry funkcji{{dk}} * {{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}}}} === {{Śródtytuł|p.IleJestTakichOdpowiednikowychZmiennych}}{{Code|p.IleJestTakichOdpowiednikowychZmiennych}} === Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy ile jest takich zmiennych. * 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. ; Parametry funkcji{{dk}} * {{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}}}} == {{Śródtytuł|p["Parametr w tablicy nazw"]}}{{Code|p["Parametr w tablicy nazw"]}} == Funkcja bada, czy jest taki parametr {{Code|pozycja}} w tablicy nazw określonej zmienną {{Code|parametry}}, której elementy są oddzielone średnikami. * 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. ; Parametry funkcji{{dk}} * {{Code|parametry}} - lista parametrów oddzielonych średnikiem, * {{Code|pozycja}} - szukana lista w tablicy parametrów, * {{Code|od dużej}} - czy parametr: {{Code|pozycja}}, i elementy listy: {{Code|parametry}}, 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}}, a to ostatnie jest to wartość języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, która po transformacji na wikikod jest zamieniana na ciąg pusty, więc ona nadaje się do instrukcji warunkowych. === 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> cc3d533xxuepk20168my63f9snznyqt 553417 553416 2026-08-29T22:50:41Z Persino 2851 /* {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} */ 553417 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. Funkcje, w tym module, uruchamia się tylko w ramce w szablonie, bo są tylko do tego przygotowane. One służą do powtarzania parametrów rodzica, czy przodka, iteracji pojedynczego kroku wikikodu, jakiś sprawdzeń, do liczenia odpowiedników i związanych z tym parametrami, itp.. == Funcje lokalne modułu == === {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} === Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, tylko w module {{Code|{{ld2|Ramka}}}}, szablonów, modułów i parserów w ramce. Uruchamiana jest przez funkcje: {{LinkŚródtytuł|p.Szablon}} - funkcja do uruchamiania szablonów, {{LinkŚródtytuł|p["Moduł"]}} - funkcja do uruchamiania modułów, i {{LinkŚródtytuł|p.Parser}} - funkcja do uruchamiania parserów. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ParserBlokowy(frame, co_ma_wywolac)...end; </syntaxhighlight> ; Parametry funkcji{{dk}} * {{Code|frame}} {{Patrz|frame}} - funkcja ramkki funkcji tablica transportu modułu, * {{Code|co_ma_wywolac}} {{Patrz|co_ma_wywolac}} - ten parametr przyjmuje wartość liczbową, która jeżeli {{Tt|0}} - to uruchamiany jest szablon, jeżeli {{Tt|1}} - moduł, jeżeli {{Code|2}} - to parser, jeżeli on ma inne wartości, tzn.: {{Tt|2}}, a {{Tt|3}} i dalej, to już dany szablon. ; Parametry ramki funkcji tablicy transportu modułu{{dk}} * Parametry podstawowe: ** {{Code|Nazwa}} {{Patrz|Nazwa}} - jest to pełna nazwa szablonu, modułu, czy parsera, ** {{Code|bez argumentów rodzica}} {{Patrz|bez argumentów rodzica}} - tablica parametrów oddzielonych średnikami, których obiekt uruchamiany nie może przyjmować, nawet jeżeli one są, ** {{Code|nazwa szablonu rodzica}} {{Patrz|nazwa szablonu rodzica}} - jest to zmienna przechowująca nazwę szablonu rodzica ramki dziecka,a nawet któreś z jego przodków, ** {{Code|bez argumentów nienazwanych rodzica}} {{Patrz|bez argumentów nienazwanych rodzica}} - szablon w ramce nie przyjmuje parametrów nienazwanych, określonych liczbą, podanych w rodzicu ramki, ** {{Code|potomek}} {{Patrz|potomek}} - zmienna mówiąca, że to jest potomek rodzica ramki, tą zmienną podaje się w parametrze {{Code|bez argumentów rodzica}} {{LinkPatrz|bez argumentów rodzica}}, jeżeli nie jest podany parametr {{Code|nie potomek}} - dodane przez tę funkcję, tej zmiennej nie używa się bezpośrednio w kodzie ramki, sama ta ramka tworzy automatycznie ten niepusty parametr, jedynie go można użyć przy wielopoziomowym przekazywaniu parametrów rodzica, do ustawiania pewnych wartości prametrów w budowanych w tą funkcję, ** {{Code|nie potomek}} {{Patrz|nie potomek}} - zmienna mówiąca, że to nie jest potomek szablonu, używana, gdy nie jest określona istniejąca zmienna ramki {{LinkPatrz|zmienna z parametrami rodzica}}, wtedy taka ramka jest traktowana jak normalna ramka, której jedynie trzeba przekazać parametry rodzica, nie przodka, wtedy do niej nie są przekazywane parametry: {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}} (ta zmienna jest wtedy ustawiana, gdy nie jest niepusty parametr {{Code|bez dodatkowych sprawdzeń}} {{LinkPatrz|bez dodatkowych sprawdzeń}}), {{Code|bez argumentów szablonu}} {{LinkPatrz|bez argumentów szablonu}} i {{LinkPatrz|potomek}} (ustawiany na stałą wartość niepustą). Jeżeli zmienna ogólnie {{Code|nie potomek}} {{LinkPatrz|nie potomek}} tam została podana, lub nie, wtedy zawsze {{Code|nazwa szablonu rodzic}} {{LinkPatrz|nazwa szablonu rodzica}} (jeśli ta wartość rodzica nie istnieje, to nadawana jest jej aktualna nazwa szablonu rodzica, a nie przodka, normalnie jest to przodka, a w szczególności rodzica). ** {{Code|bez argumentów szablonu}} {{Patrz|bez argumentów szablonu}} - zmienna oddzielonych średnikami parametrów, których nie wolno uwzględniać w walidacji błędów w {{m|Sprawdź|Parametry}}, ta tablica jest wkładana do parametrów ramki, gdy nie podany jest niepusty parametr w niej {{Code|zmienna z argumentami ramki}} {{LinkPatrz|zmienna z argumentami ramki}}, a jeżeli ten argument jednak jest niepusty, wtedy do tej zmiennej są wliczane parametry ramki, które nie są argumentami wbudowanymi w tą funkcję. ** {{Code|bez dodatkowych sprawdzeń}} {{Patrz|bez dodatkowych sprawdzeń}} - nie jest uruchamiana walidacja parametrów szablonu rodzica, czyli wtedy do dziecka nie jest przekazywany parametr {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}} i nie jest ustawiana zmienna, ale za to ten parametr jest powtarzany w parametrach dziecka, ** {{Code|parametry rodzica}} {{Patrz|parametry rodzica}} - zmienna przedstawiająca parametry rodzica, czy któreś ze przodków, przekazane do ramki: {{m|Sprawdź|Parametry}} - dodane przez tę funkcję, ** {{Code|zmienna z parametrami rodzica}} {{Patrz|zmienna z parametrami rodzica}} - jeśli wartość jego jest niepusta, wtedy parametr mówiący, czy ma tworzyć zmienne z parametrami rodzica {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}} jest przekazywana do dziecka w postaci wygenerowanej listy parametrów rodzica wraz z zwartościami przez funkcję, w przypadku innej jego wartości, to ten parametr rodzica jest przekazywany normalnie, jeżeli ta ramka byłaby potomkiem, czyli parametry byłyby przekazywane od przodka, i nie byłby ustawiony parametr {{Code|nie potomek}} {{LinkPatrz|nie potomek}}, ** {{Code|zmienna z argumentami ramki}} {{Patrz|zmienna z argumentami ramki}} - zmienna mówiąca, czy mają być tworzone parametry ramki, które nie są sprawdzane 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}} {{Patrz|zmienna z nazwą szablonu rodzica}} - parametr, gdy niepusty, wtedy jest tworzona zmienna: {{LinkPatrz|nazwa szablonu rodzica}}, niepusty parametr {{Code|potomek}} {{LinkPatrz|potomek}}, tworzona jest niepusta lista parametrów {{Code|bez argumentów szablonu}} {{LinkPatrz|bez argumentów szablonu}}, powtarzana jest zmienna {{Code|bez dodatkowych sprawdzeń}} {{LinkPatrz|bez dodatkowych sprawdzeń}}, i tworzona jest dodatkowa parametr z {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}}, jeśli nie podano niepustego parametru {{Code|bez dodatkowych sprawdzeń}} {{LinkPatrz|bez dodatkowych sprawdzeń}}, ** {{Code|parametry funkcji modułu pudełek}} {{Patrz|parametry funkcji modułu pudełek}} - czy do funkcji mają wchodzić parametry modułu pudełek, które są ponumerowane dodatkowym numerkiem, ** {{Code|parametry podstawowe funkcji modułu pudełek}} {{Patrz|parametry podstawowe funkcji modułu pudełek}} - czy do funkcji mają wchodzić podstawowe parametry funkcji modułu pudełek, te które nie mają dodatkowego numerka, ** {{Code|usuń z parametrów ramki}} {{Patrz|usuń z parametrów ramki}} - parametry ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, przedstawiający zmienne oddzielone średnikami, które nie mają być uwzględnione przy uruchamianiu danego obiektu. * {{Code|Funkcja}} {{Patrz|Funkcja}} - nazwa funkcji w module, który ma wywołać w ramce ta funkcja, w przypadku, gdy parametr {{LinkPatrz|co_ma_wywolac}} ma wartość {{Tt|1}}, czyli wywołujemy funkcję {{LinkŚródtytuł|p["Moduł"]}}. Funkcja uruchamia szablon, moduł, czy ramkę, w zależności od drugiego parametru funkcji, z parametrami rodzica ramki bez parametrów opisanych zmienną: {{LinkPatrz|bez argumentów szablonu}}, i bez parametrów ramki wskazanych przez: {{Code|usuń z parametrów ramki}}. Za pomocą tej funkcji możemy wielopoziomowo wywoływać funkcje przekazując parametry od najwyższego poziomu do najniższego. Ta funkcja służy przede wszystkim 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 do uruchamiania szablonów, a uruchamianie funkcji modułu, w tym funkcji {{m|Cytuj|custom}} (przyjmująca jedynie parametry ramki, nie rodzica, to nie jest funkcja {{m|Cytuj|auto}}, by potrzebowała ona elementów rodzica) w szablonie {{s|PrzypisStrona}}. Przykładem wywołania szablonu, która jest w szablonie: {{s|Wzór}}, w którym jest wywoływany inny szablon, tym razem silnik, tzn. {{s|Wzór/silnik}}: <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> === {{Śródtytuł|BudowaSzereguZDanych}}{{Code|BudowaSzereguZDanych}} === Funkcja do uruchamiania się 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> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tab_lancuch}} {{Patrz|tab_lancuch}} - pewna tablica transportu funkcji. * Zmienne do mikroszablonów: ** {{Code|minimum}} {{Patrz|minimum}} - liczba mówiąca o minimum, ** {{Code|maksimum}} {{Patrz|maksimum}} - liczba mówiąca o maksimum. Parametry ramki funkcji tablicy transportu modułu: * {{Code|akapit}} {{Patrz|akapit}} - jeśli niepusta, to ona definiuje akapit ze znaków {{Code|\n\n}}, przeciwnym wypadku elementy łańcucha nie są łączone w akapity, * {{Code|przecinek}} {{Patrz|przecinek}} - jeśli niepuste, to mówi, że pomiędzy elementami powiniem być przecinek: {{Code|", "}}, został on specjalnie objęty w cudzysłowy, aby zilustrować, że po przecinku znajduje się spacja, * {{Code|nowa linia}} {{Patrz|nowa linia}} - w przeciwieństwo do zmiennej {{LinkPatrz|akapit}}, używany zamiast niej, pisze jedną nową linię, a nie dwie, jako: {{Code|\n}}, * {{Code|wyliczanka}} {{Patrz|wyliczanka}} - wylicza elementy z przecinkami, stawiając przed ostatnim elementem zamiast jego wyraz wyliczania {{Code|i}}, * {{Code|początek}} {{Patrz|początek}} - mówi, że na początku musi znajdować się przecinek, * {{Code|myślnik}} {{Patrz|myślnik}} - mówi, że jeśli nie ma początku przecinka, to stawiany jest myślnik, używany zamiast {{LinkPatrz|początek}}, * {{Code|warunkowe}} {{Patrz|warunkowe}} - instrukcje wikikodu, takie jak: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}, zostaną w kodzie rozwinięte, a później ciągłe właściwe elementy wikikodu otoczone dwoma dolnymi myślnikami zostaną rozwinięte do pewnej postaci, funkcja używa do tego {{LinkŚródtytuł|p.InstrukcjeWarunkowe}}, ** {{Code|parametr}} {{Patrz|parametr}} - używany w towarzystwie z {{LinkPatrz|warunkowe}}, mówiący że, derektywy znakowe ciągłe otoczone dwoma dolnymi myślnikami, zostaną zastąpione odpowiedmimi szablonami, w przeciwnym wypadku niepodania tej wartości lub jego pustej, wtedy te derektywy zostaną zastąpione w postaci rozwiniętej tych szablonów. ** Funkcja w tym warunku zwraca ciąg znaków rozwiniętego warunku. Funkcja posiada też mikroszablony, które są zdefiniowane w kodzie łańcuchów {{LinkPatrz|tab_lancuch}}: * {{Code|<nowiki>{{min}}</nowiki>}} - minimalna wartość szeregu zmiennych, określana przez {{LinkPatrz|minimum}}, * {{Code|<nowiki>{{max}}</nowiki>}} - a tutaj ich maksymalna, określana przez {{LinkPatrz|maksimum}}. Te dwie zmienne są podstawiane do uzyskanego ciągu. Funkcja zwraca te części rozwiniętego tekstu wikikodu, jeśli podano {{LinkPatrz|warunkowe}}, co do instrukcji warunkowych, i też te bez wewnętrznych klamerek, czyli specjalne kody, czyli te otoczone z dwóch stron dolnumi myślnikami, a pozostałe część tak uzyskana jest za to nierozwinięta. == {{Śródtytuł|p.InstrukcjeWarunkowe}}{{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}} {{Patrz|ciag}} - podany ciąg do rozwinięcia z instrukcji warunkowych wewnątrz nie posiadający klamerek, * {{Code|derektywy_specjalne}} {{Patrz|derektywy_specjalne}} - używa do zastępowania specjalnych derektyw, podane po prawej stronie w ramce pływającej, * {{Code|derektywy_parametrowe}} {{Patrz|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: {{LinkŚródtytuł|BudowaSzereguZDanych}}, poprzez: {{LinkŚródtytuł|p.Powtarzaj}}. 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 == === {{Śródtytuł|p.RozpakujArgumenty}}{{Code|p.RozpakujArgumenty}} === Ta funkcja jest do rozpakowywania zmiennych z podanego parametru, których zmienne są oddzieloe średnikami. * Funkcja uruchamia się 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. === {{Śródtytuł|p.PakujParametry}}{{Code|p.PakujParametry}} === Ta funkcja jest do pakowania tablicy, języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w tablicę {{lpg|JSON}}. * Funkcja się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Funkcja pakuje parametry tablicy {{lpg|Lua}} do tablicy: {{lpg|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> Parametry funkcji: * {{Code|args}} {{Patrz|args}} - tablica {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Ten szablon nazywa parametry, jakby nienazwane w tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera) z tablicy {{lpg|Lua}} (tutaj od jedynki), do tablicy nazwanej, jak to robi się w {{lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonEncode}}, z drugim parametrem: {{Code|mw.text.JSON_PRESERVE_KEYS}} {{Patrz|mw.text.JSON_PRESERVE_KEYS}}. === {{Śródtytuł|p.RozpakujParametry}}{{Code|p.RozpakujParametry}} === Ta funkcja jest do rozpakowywania tablicy {{lpg|JSON}} w tablicę języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}} * 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 w niej zwracany. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.RozpakujParametry = function (zmienna_z_parametrami) return mw.text.jsonDecode(zmienna_z_parametrami,mw.text.JSON_PRESERVE_KEYS); end; </syntaxhighlight> Parametry funkcji: * {{Code|zmienna_z_parametrami}} {{Patrz|zmienna_z_parametrami}} - tablica {{lpg|JSON}}. Ten szablon nazywa parametry nienazwane w tablicy {{lpg|Lua}} (tutaj od jedynki) z tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera), do tablicy nienazwanej z nazwanej, jak to robi się w {{Lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonDecode}}, z użyciem drugiego parametru: {{LinkPatrz|mw.text.JSON_PRESERVE_KEYS}}. == {{Śródtytuł|p["Rozwiń"]}}{{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> Parameetry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon rozwija wikikod podany w zmiennej {{Code|1}}, w parametrach szablonu rodzica. * 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}}: <syntaxhighlight lang="lua"> p["Rozwiń"] = function(frame) return frame:getParent():preprocess(frame.args[1]); end; </syntaxhighlight> == {{Śródtytuł|p.Log}}{{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> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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}}: <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 == === {{Śródtytuł|p.Szablon}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p.Szablon = function(frame) return ParserBlokowy(frame,0); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Szablon|Nazwa=<nazwa szablonu>|...}} </syntaxhighlight> === {{Śródtytuł|p["Moduł"]}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p["Moduł"] = function(frame) return ParserBlokowy(frame,1); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Moduł|Nazwa=<nazwa modułu>|Funkcja=<nazwa funkcji>|...}} </syntaxhighlight> === {{Śródtytuł|p.Parser}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p.Parser = function(frame) return ParserBlokowy(frame,2); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Parser|Nazwa=<nazwa parsera>|...}} </syntaxhighlight> == Funkcje książkowe == === {{Śródtytuł|p.Q}}{{Code|p.Q}} === Funkcja uruchamiana we wnętrzu szablonu {{s|Q}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on. * Jego specjalne odpowiedniki to {{s|T}} i {{s|T2}}. Funkcja uruchamia szablon o podanej nazwie w pierwszym parametrze z dodanym przedrostkiem {{Code|Książka:}} przed nazwą szablonu. * Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.Q =function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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ą (parametry nazwane, które są wliczane 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}}}} === {{Śródtytuł|p.N}}{{Code|p.N}} === Funkcja uruchamiana we wnętrzu szablonu {{s|N}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on. Funkcja przed nazwą szablonu, czy modułu, zostawia w wpis w postaci przedrostka {{Code|Książka:}}. Czy zostanie dodana przed tym nazwa przestrzeni nazw, to zależy od niepodania niepustej zmiennej {{Parametr|n}}, a zmienna {{Parametr|p|1}} - to przed nim jest dodawana przestrzeń nazw szablonu {{Np|Template|link=tak}}, {{Parametr|p|2}} - modułu {{Np|Module|link=tak}} i {{Parametr|p|3}} - kategorii. * Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.N=function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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}}}} === {{Śródtytuł|p.A}}{{Code|p.A}} === Funkcja uruchamiana we wnętrzu szablonu {{s|A}}, która przyjmuje jego parametry, i tak samo działa, jak on. Funkcja usuwa przedrostek {{Code|Książka:}} w nazwie szablonu, czy modułu. Gdy jest podany parametr: {{Parametr|p|tak}}, to dla przestrzeni niebędących: {{Np|Template|link=tak}}, {{Np|Module|link=tak}} i {{Np|Category|link=tak}}, jest zwracany wtedy przez nią parametr pierwszy funkcji. Dla tych wartości właśnie wyliczonych przestrzeni usuwany jest przedrostek {{Code|Książka:}}. Funkcja generuje nazwę z prestrzenią nazw. * Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.A=function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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 == === {{Śródtytuł|p.Powtarzaj}}{{Code|p.Powtarzaj}} === Funkcja służy do powtarzalnego generowania wikikodu ze składników jego kroku przy pomocy określonych zmiennych rodzica. * Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.Powtarzaj = function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Funkcja może przyjmować tylko parametry nienazwane albo tylko nazwane, albo nienazwane i nazwane (gdy jest ustawiony parametr {{Code|różne}} {{Patrz|różne}}). 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}} {{LinkPatrz|różne}}, która wtedy ma wskazywać na wartość niepustą. ; Najważniejsze parametry, które są to opcjonalne, to są{{dk}} * {{Code|start}} {{Patrz|start}} - liczba, która wskazuje początek liczenia - domyślna wartość to {{Code|1}}, * {{Code|koniec}} {{Patrz|koniec}} - liczba, która wskazuje koniec liczenia. ; Numer końca liczenia parametrów nienazwanych lub nazwanych, czy nazwanychi nienazwanych{{dk}} * Elementy w {{Code|parametry}} {{Patrz|parametry}} mogą modyfikować odpowiednio parametry: {{Code|start}} {{LinkPatrz|start}} i {{Code|koniec}} {{LinkPatrz|koniec}}. * Ze zmiennej {{LinkPatrz|parametry}} jest liczona odpowiednia zmienna {{LinkPatrz|tabela}} dopuzczalnych zmiennych do liczenia. * Funkcja {{Code|Wylicz_skoncz_na_koncu}},którego algorytm podomy w tej poyzcji, tzn. koniec liczenia parametrów nienazwanych musi być policzony, jeżeli nie ma parametrów nazwanych w tabeli {{Code|tabela}} {{Patrz|tabela}}. A przeciwnie, jeżeli nie jest ustawiony parametr {{Code|różne}} {{LinkPatrz|różne}} nie na wartość niepustą, wtedy jest liczony parametr maksimum parametrów nazwanych, przeciwnie wtedy liczy się parametr maksimum numeracyjne parametrów numerowanych, czyli zmienną: {{Code|maksimum numeracyjne}} {{Patrz|maksimum numeracyjne}}, jeśli on ma wartość niepustą, wtedy liczy się maksimum parametrów nienazwanych, a jeżeli ona ma przeciwną wartość, to się liczy maksimum parametrów nazwanych, jak nienazwanych. Na podstawie tego mamy policzony odpowiednio taki koniec liczenia modyfikacji zwracany i policzony przez tą funkcję. ; Parametr {{Code|dodatkowe}}{{dk}} * To maksimum parametrów nazwanych, dla jakieś podstawy parametrów, są pomijane parametry z: {{Code|dodatkowe}}, która jest zestawem podstaw parametrów oddzielonych średnikami, jest właśnie podany ten parametr w nim. Przykładem jego jest: * {{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. ; Format parametru {{Parametr|parametry}}{{dk}} * 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 równa liczbie {{Code|5}}, oddzielonych średnikami. ; Opis parametru {{Parametr|parametry}}{{dk}} 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 w wartościach: {{Code|zmienna 1>}}, {{Code|<zmienna 2>}} i {{Code|<zmienna 3>}}, w których są pewne nazwy bazowe parametrów bez numerka na jej końcu, w zmiennej {{Code|parametry}} można nie podawać dalszych elementów 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ć nawet tego znaku,gdy nic nie ma po równa się) dla danego problemu funkcji. ; Wikikod pojedynczego kroku liczenia całości wygenerowanego wikikodu dla wszystkich zmiennych{{dk}} * 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)}}. ; Parametr {{Parametr|start}}, wartość początkowa{{dk}} * Gdy parametr {{Code|tonumber(frame.args["start"]) or 1}}, jest równy zero, funkcja zwraca błąd: {{Code|(początek jest ustawiony na zero)}}. ; Brak parametrów szablonu{{dk}} * 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. ; Parametr {{Parametr|nic}}{{dk}} * Gdy {{Code|nic}} przyjmuje wartość, i gdy pomijamy parametr, lub on przyjmuje wartość pustą, wtedy a funkcja nie może wygenerować żadnego kroku iteracji, to wtedy jest zwracana wartość parametru {{Code|nic}} lub ciąg pusty. ; Inne parametry{{dk}} * Parametr {{Code|po kolei}} {{Patrz|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|zaznacz}} {{Patrz|zaznacz}} - liczby oddzielone średnikami, które przy parametrach nazwanych o pewnych numerach i numerkach nie mają być uwzględnione przy niepustym parametrze {{Code|po kolei}} {{LinkPatrz|po kolei}}, a przy jego przeciwnej wartości za to mają być użyte. * 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}} {{Patrz|_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>}}. Domyślną wartością {{Code|_i}} jest {{Code|_}}. ; W wyniku iteracji otrzymamy tablicę ciągów łańcuchów z wikikodami, wtedy ta funkcja używa do tego liczenia{{dk}} * Jest to funkcja {{LinkŚródtytuł|BudowaSzereguZDanych}}. * Wywołanie funkcji jest takie: {{Pre|lancuch_znakow {{=}} BudowaSzereguZDanych(frame,tab_lancuch,minimum or 0,maksimum);}} ; Parametry funkcji {{LinkŚródtytuł|BudowaSzereguZDanych}}. * One są wraz z jego parametrami podane w postaci jego parametrów ramki {{Code|frame}}, które jednocześnie są parametrami {{LinkŚródtytuł|p.Powtarzaj}}, używa się je 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ą {{LzLua|frame:preprocess}}, i jest zwracany jako wartość omawianej funkcji. ; Przykłady{{dk}} * Funkcja jest używana np. w silnikach szablonów, np.: {{s|Osobny artykuł/silnik}} szablonu {{s|Osobny artykuł}}, jak i do niego 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}}. === {{Śródtytuł|p.PowtarzajOdDo}}{{Code|p.PowtarzajOdDo}} === Funkcja służy do iteracji, od jakieś liczby do jakieś innej, podanego wikikodu dla danego kroku {{Code|1}}, iterując to, co krok określony zmienną: {{Code|krok}}. * 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ę{{dk}} {{nobold|{{Code|{{m|Ramka|Rozwiń}}}}}}, lub go rozwija na końcu, na podstawie kolejnych kroków iteracji{{dk}} * {{Code|start}} - początek iteracji dokonywany przez ta funkcję, * {{Code|koniec}} - koniec iteracji dokonywany przez ta funkcję, * {{Code|krok}} - krok iteracji, co który numer 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{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}} * {{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ą{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}} * {{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{{dk}} {{nobold|{{s|Chem/silnik}}}}, w tym nadrzędnym{{dk}} {{nobold|{{s|Chem}}}}, przykłady jego działania{{dk}} * {{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. === {{Śródtytuł|p["PrzetwarzajIterującCiąg"]}}{{Code|p["PrzetwarzajIterującCiąg"]}} === Funkcja do iteracji wikikodu po parametrach oddzielonych średniami w parametrze ramki {{Code|cią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{{dk}} * {{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{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}} * {{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ą{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}} * {{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>}} jest kolejny parametr, oddzielonych od pozastałych średniami, z: {{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}}: {{LzLua|frame:preprocess}}, jeśli: {{Code|nie rozwiń}}, nie przybiera wartości niepustej. === {{Śródtytuł|p["PowtarzajWedług"]}}{{Code|p["PowtarzajWedług"]}} === Funkcja wyszukująca elementy według wzoru począwszy od numeru, określonego przez {{Code|start}}, aż do zakończenia danych kolenych sprawdzania od tej liczby, czy taka strona istnieje, numerek jest określony przez pewien wikikod, określony przez {{Code|<nowiki>{{_}}</nowiki>}}, którymusi być podany we wzorze {{Code|wzor}}. Ona w ten sposób dla istniejących stron ustawia pewne łańcuchy, które są łączone znakami {{Code|", "}}, a na końcu samym {{Code|" i "}}. 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 strony{{dk}} {{nobold|„{{Ns:Template}}{{dk}}Polecane książki/”}}, a oto przykład{{dk}}{{nobold|{{Parametr|wzór|{{Ns:Template}}{{dk}}Polecane książki/{{((}}_{{))}}}}}}{{dk}} * {{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}}}} == {{Śródtytuł|p["LiczbaPrawychUkośników"]}}{{Code|p["LiczbaPrawychUkośników"]}} == Funkcja liczy, ile jest prawych ukośników w adresie strony podany jako pierwszy parametr ramki. * 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. ; Parametry fubkcji{{dk}} * {{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}}}} == {{Śródtytuł|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}}{{Code|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}} == Funkcja liczy maksymalny numer kolejnej strony liczonej według wzoru {{Code|wzor}}, musi być we wzorze podany element {{Code|<nowiki>{{_}}</nowiki>}}, aby mógł to robić. * 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/”, czyli dla stron o ogólnym wzorze: {{Parametr|wzór|{{Ns:Template}}:Polecane książki/{{((}}_{{))}}}}. ; Parametry funkcji{{dk}} * {{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 == === {{Śródtytuł|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}}{{Code|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}} === Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy minimalny numer takich zmiennych. * 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*)}}. ; Parametry funkcji{{dk}} * {{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}}}} === {{Śródtytuł|p.IleJestTakichOdpowiednikowychZmiennych}}{{Code|p.IleJestTakichOdpowiednikowychZmiennych}} === Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy ile jest takich zmiennych. * 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. ; Parametry funkcji{{dk}} * {{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}}}} == {{Śródtytuł|p["Parametr w tablicy nazw"]}}{{Code|p["Parametr w tablicy nazw"]}} == Funkcja bada, czy jest taki parametr {{Code|pozycja}} w tablicy nazw określonej zmienną {{Code|parametry}}, której elementy są oddzielone średnikami. * 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. ; Parametry funkcji{{dk}} * {{Code|parametry}} - lista parametrów oddzielonych średnikiem, * {{Code|pozycja}} - szukana lista w tablicy parametrów, * {{Code|od dużej}} - czy parametr: {{Code|pozycja}}, i elementy listy: {{Code|parametry}}, 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}}, a to ostatnie jest to wartość języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, która po transformacji na wikikod jest zamieniana na ciąg pusty, więc ona nadaje się do instrukcji warunkowych. === 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> h9hv965vfzvrfcj6taaul8wpctolind 553418 553417 2026-08-29T22:55:09Z Persino 2851 /* {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} */ 553418 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. Funkcje, w tym module, uruchamia się tylko w ramce w szablonie, bo są tylko do tego przygotowane. One służą do powtarzania parametrów rodzica, czy przodka, iteracji pojedynczego kroku wikikodu, jakiś sprawdzeń, do liczenia odpowiedników i związanych z tym parametrami, itp.. == Funcje lokalne modułu == === {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} === Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, tylko w module {{Code|{{ld2|Ramka}}}}, szablonów, modułów i parserów w ramce. Uruchamiana jest przez funkcje: {{LinkŚródtytuł|p.Szablon}} - funkcja do uruchamiania szablonów, {{LinkŚródtytuł|p["Moduł"]}} - funkcja do uruchamiania modułów, i {{LinkŚródtytuł|p.Parser}} - funkcja do uruchamiania parserów. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ParserBlokowy(frame, co_ma_wywolac)...end; </syntaxhighlight> ; Parametry funkcji{{dk}} * {{Code|frame}} {{Patrz|frame}} - funkcja ramkki funkcji tablica transportu modułu, * {{Code|co_ma_wywolac}} {{Patrz|co_ma_wywolac}} - ten parametr przyjmuje wartość liczbową, która jeżeli {{Tt|0}} - to uruchamiany jest szablon, jeżeli {{Tt|1}} - moduł, jeżeli {{Code|2}} - to parser, jeżeli on ma inne wartości, tzn.: {{Tt|2}}, a {{Tt|3}} i dalej, to już dany szablon. ; Parametry ramki funkcji tablicy transportu modułu{{dk}} * Parametry podstawowe - parametry ramki, niezawsze parametry przekazywane obiektowi w ramce, czasami od rodzica: ** {{Code|Nazwa}} {{Patrz|Nazwa}} - jest to pełna nazwa szablonu, modułu, czy parsera, ** {{Code|bez argumentów rodzica}} {{Patrz|bez argumentów rodzica}} - tablica parametrów oddzielonych średnikami, których obiekt uruchamiany nie może przyjmować, nawet jeżeli one są, ** {{Code|nazwa szablonu rodzica}} {{Patrz|nazwa szablonu rodzica}} - jest to zmienna przechowująca nazwę szablonu rodzica ramki dziecka,a nawet któreś z jego przodków, ** {{Code|bez argumentów nienazwanych rodzica}} {{Patrz|bez argumentów nienazwanych rodzica}} - szablon w ramce nie przyjmuje parametrów nienazwanych, określonych liczbą, podanych w rodzicu ramki, ** {{Code|potomek}} {{Patrz|potomek}} - zmienna mówiąca, że to jest potomek rodzica ramki, tą zmienną podaje się w parametrze {{Code|bez argumentów rodzica}} {{LinkPatrz|bez argumentów rodzica}}, jeżeli nie jest podany parametr {{Code|nie potomek}} - dodane przez tę funkcję, tej zmiennej nie używa się bezpośrednio w kodzie ramki, sama ta ramka tworzy automatycznie ten niepusty parametr, jedynie go można użyć przy wielopoziomowym przekazywaniu parametrów rodzica, do ustawiania pewnych wartości prametrów w budowanych w tą funkcję, ** {{Code|nie potomek}} {{Patrz|nie potomek}} - zmienna mówiąca, że to nie jest potomek szablonu, używana, gdy nie jest określona istniejąca zmienna ramki {{LinkPatrz|zmienna z parametrami rodzica}}, wtedy taka ramka jest traktowana jak normalna ramka, której jedynie trzeba przekazać parametry rodzica, nie przodka, wtedy do niej nie są przekazywane parametry: {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}} (ta zmienna jest wtedy ustawiana, gdy nie jest niepusty parametr {{Code|bez dodatkowych sprawdzeń}} {{LinkPatrz|bez dodatkowych sprawdzeń}}), {{Code|bez argumentów szablonu}} {{LinkPatrz|bez argumentów szablonu}} i {{LinkPatrz|potomek}} (ustawiany na stałą wartość niepustą). Jeżeli zmienna ogólnie {{Code|nie potomek}} {{LinkPatrz|nie potomek}} tam została podana, lub nie, wtedy zawsze {{Code|nazwa szablonu rodzic}} {{LinkPatrz|nazwa szablonu rodzica}} (jeśli ta wartość rodzica nie istnieje, to nadawana jest jej aktualna nazwa szablonu rodzica, a nie przodka, normalnie jest to przodka, a w szczególności rodzica). ** {{Code|bez argumentów szablonu}} {{Patrz|bez argumentów szablonu}} - zmienna oddzielonych średnikami parametrów, których nie wolno uwzględniać w walidacji błędów w {{m|Sprawdź|Parametry}}, ta tablica jest wkładana do parametrów ramki, gdy nie podany jest niepusty parametr w niej {{Code|zmienna z argumentami ramki}} {{LinkPatrz|zmienna z argumentami ramki}}, a jeżeli ten argument jednak jest niepusty, wtedy do tej zmiennej są wliczane parametry ramki, które nie są argumentami wbudowanymi w tą funkcję. ** {{Code|bez dodatkowych sprawdzeń}} {{Patrz|bez dodatkowych sprawdzeń}} - nie jest uruchamiana walidacja parametrów szablonu rodzica, czyli wtedy do dziecka nie jest przekazywany parametr {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}} i nie jest ustawiana zmienna, ale za to ten parametr jest powtarzany w parametrach dziecka, ** {{Code|parametry rodzica}} {{Patrz|parametry rodzica}} - zmienna przedstawiająca parametry rodzica, czy któreś ze przodków, przekazane do ramki: {{m|Sprawdź|Parametry}} - dodane przez tę funkcję, ** {{Code|zmienna z parametrami rodzica}} {{Patrz|zmienna z parametrami rodzica}} - jeśli wartość jego jest niepusta, wtedy parametr mówiący, czy ma tworzyć zmienne z parametrami rodzica {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}} jest przekazywana do dziecka w postaci wygenerowanej listy parametrów rodzica wraz z zwartościami przez funkcję, w przypadku innej jego wartości, to ten parametr rodzica jest przekazywany normalnie, jeżeli ta ramka byłaby potomkiem, czyli parametry byłyby przekazywane od przodka, i nie byłby ustawiony parametr {{Code|nie potomek}} {{LinkPatrz|nie potomek}}, ** {{Code|zmienna z argumentami ramki}} {{Patrz|zmienna z argumentami ramki}} - zmienna mówiąca, czy mają być tworzone parametry ramki, które nie są sprawdzane 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}} {{Patrz|zmienna z nazwą szablonu rodzica}} - parametr, gdy niepusty, wtedy jest tworzona zmienna: {{LinkPatrz|nazwa szablonu rodzica}}, niepusty parametr {{Code|potomek}} {{LinkPatrz|potomek}}, tworzona jest niepusta lista parametrów {{Code|bez argumentów szablonu}} {{LinkPatrz|bez argumentów szablonu}}, powtarzana jest zmienna {{Code|bez dodatkowych sprawdzeń}} {{LinkPatrz|bez dodatkowych sprawdzeń}}, i tworzona jest dodatkowa parametr z {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}}, jeśli nie podano niepustego parametru {{Code|bez dodatkowych sprawdzeń}} {{LinkPatrz|bez dodatkowych sprawdzeń}}, ** {{Code|parametry funkcji modułu pudełek}} {{Patrz|parametry funkcji modułu pudełek}} - czy do funkcji mają wchodzić parametry modułu pudełek, które są ponumerowane dodatkowym numerkiem, ** {{Code|parametry podstawowe funkcji modułu pudełek}} {{Patrz|parametry podstawowe funkcji modułu pudełek}} - czy do funkcji mają wchodzić podstawowe parametry funkcji modułu pudełek, te które nie mają dodatkowego numerka, ** {{Code|usuń z parametrów ramki}} {{Patrz|usuń z parametrów ramki}} - parametry ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, przedstawiający zmienne oddzielone średnikami, które nie mają być uwzględnione przy uruchamianiu danego obiektu. * {{Code|Funkcja}} {{Patrz|Funkcja}} - nazwa funkcji w module, który ma wywołać w ramce ta funkcja, w przypadku, gdy parametr {{LinkPatrz|co_ma_wywolac}} ma wartość {{Tt|1}}, czyli wywołujemy funkcję {{LinkŚródtytuł|p["Moduł"]}}. Funkcja uruchamia szablon, moduł, czy ramkę, w zależności od drugiego parametru funkcji, z parametrami rodzica ramki bez parametrów opisanych zmienną: {{LinkPatrz|bez argumentów szablonu}}, i bez parametrów ramki wskazanych przez: {{Code|usuń z parametrów ramki}}. Za pomocą tej funkcji możemy wielopoziomowo wywoływać funkcje przekazując parametry od najwyższego poziomu do najniższego. Ta funkcja służy przede wszystkim 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 do uruchamiania szablonów, a uruchamianie funkcji modułu, w tym funkcji {{m|Cytuj|custom}} (przyjmująca jedynie parametry ramki, nie rodzica, to nie jest funkcja {{m|Cytuj|auto}}, by potrzebowała ona elementów rodzica) w szablonie {{s|PrzypisStrona}}. Przykładem wywołania szablonu, która jest w szablonie: {{s|Wzór}}, w którym jest wywoływany inny szablon, tym razem silnik, tzn. {{s|Wzór/silnik}}: <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> === {{Śródtytuł|BudowaSzereguZDanych}}{{Code|BudowaSzereguZDanych}} === Funkcja do uruchamiania się 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> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tab_lancuch}} {{Patrz|tab_lancuch}} - pewna tablica transportu funkcji. * Zmienne do mikroszablonów: ** {{Code|minimum}} {{Patrz|minimum}} - liczba mówiąca o minimum, ** {{Code|maksimum}} {{Patrz|maksimum}} - liczba mówiąca o maksimum. Parametry ramki funkcji tablicy transportu modułu: * {{Code|akapit}} {{Patrz|akapit}} - jeśli niepusta, to ona definiuje akapit ze znaków {{Code|\n\n}}, przeciwnym wypadku elementy łańcucha nie są łączone w akapity, * {{Code|przecinek}} {{Patrz|przecinek}} - jeśli niepuste, to mówi, że pomiędzy elementami powiniem być przecinek: {{Code|", "}}, został on specjalnie objęty w cudzysłowy, aby zilustrować, że po przecinku znajduje się spacja, * {{Code|nowa linia}} {{Patrz|nowa linia}} - w przeciwieństwo do zmiennej {{LinkPatrz|akapit}}, używany zamiast niej, pisze jedną nową linię, a nie dwie, jako: {{Code|\n}}, * {{Code|wyliczanka}} {{Patrz|wyliczanka}} - wylicza elementy z przecinkami, stawiając przed ostatnim elementem zamiast jego wyraz wyliczania {{Code|i}}, * {{Code|początek}} {{Patrz|początek}} - mówi, że na początku musi znajdować się przecinek, * {{Code|myślnik}} {{Patrz|myślnik}} - mówi, że jeśli nie ma początku przecinka, to stawiany jest myślnik, używany zamiast {{LinkPatrz|początek}}, * {{Code|warunkowe}} {{Patrz|warunkowe}} - instrukcje wikikodu, takie jak: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}, zostaną w kodzie rozwinięte, a później ciągłe właściwe elementy wikikodu otoczone dwoma dolnymi myślnikami zostaną rozwinięte do pewnej postaci, funkcja używa do tego {{LinkŚródtytuł|p.InstrukcjeWarunkowe}}, ** {{Code|parametr}} {{Patrz|parametr}} - używany w towarzystwie z {{LinkPatrz|warunkowe}}, mówiący że, derektywy znakowe ciągłe otoczone dwoma dolnymi myślnikami, zostaną zastąpione odpowiedmimi szablonami, w przeciwnym wypadku niepodania tej wartości lub jego pustej, wtedy te derektywy zostaną zastąpione w postaci rozwiniętej tych szablonów. ** Funkcja w tym warunku zwraca ciąg znaków rozwiniętego warunku. Funkcja posiada też mikroszablony, które są zdefiniowane w kodzie łańcuchów {{LinkPatrz|tab_lancuch}}: * {{Code|<nowiki>{{min}}</nowiki>}} - minimalna wartość szeregu zmiennych, określana przez {{LinkPatrz|minimum}}, * {{Code|<nowiki>{{max}}</nowiki>}} - a tutaj ich maksymalna, określana przez {{LinkPatrz|maksimum}}. Te dwie zmienne są podstawiane do uzyskanego ciągu. Funkcja zwraca te części rozwiniętego tekstu wikikodu, jeśli podano {{LinkPatrz|warunkowe}}, co do instrukcji warunkowych, i też te bez wewnętrznych klamerek, czyli specjalne kody, czyli te otoczone z dwóch stron dolnumi myślnikami, a pozostałe część tak uzyskana jest za to nierozwinięta. == {{Śródtytuł|p.InstrukcjeWarunkowe}}{{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}} {{Patrz|ciag}} - podany ciąg do rozwinięcia z instrukcji warunkowych wewnątrz nie posiadający klamerek, * {{Code|derektywy_specjalne}} {{Patrz|derektywy_specjalne}} - używa do zastępowania specjalnych derektyw, podane po prawej stronie w ramce pływającej, * {{Code|derektywy_parametrowe}} {{Patrz|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: {{LinkŚródtytuł|BudowaSzereguZDanych}}, poprzez: {{LinkŚródtytuł|p.Powtarzaj}}. 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 == === {{Śródtytuł|p.RozpakujArgumenty}}{{Code|p.RozpakujArgumenty}} === Ta funkcja jest do rozpakowywania zmiennych z podanego parametru, których zmienne są oddzieloe średnikami. * Funkcja uruchamia się 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. === {{Śródtytuł|p.PakujParametry}}{{Code|p.PakujParametry}} === Ta funkcja jest do pakowania tablicy, języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w tablicę {{lpg|JSON}}. * Funkcja się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Funkcja pakuje parametry tablicy {{lpg|Lua}} do tablicy: {{lpg|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> Parametry funkcji: * {{Code|args}} {{Patrz|args}} - tablica {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Ten szablon nazywa parametry, jakby nienazwane w tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera) z tablicy {{lpg|Lua}} (tutaj od jedynki), do tablicy nazwanej, jak to robi się w {{lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonEncode}}, z drugim parametrem: {{Code|mw.text.JSON_PRESERVE_KEYS}} {{Patrz|mw.text.JSON_PRESERVE_KEYS}}. === {{Śródtytuł|p.RozpakujParametry}}{{Code|p.RozpakujParametry}} === Ta funkcja jest do rozpakowywania tablicy {{lpg|JSON}} w tablicę języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}} * 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 w niej zwracany. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.RozpakujParametry = function (zmienna_z_parametrami) return mw.text.jsonDecode(zmienna_z_parametrami,mw.text.JSON_PRESERVE_KEYS); end; </syntaxhighlight> Parametry funkcji: * {{Code|zmienna_z_parametrami}} {{Patrz|zmienna_z_parametrami}} - tablica {{lpg|JSON}}. Ten szablon nazywa parametry nienazwane w tablicy {{lpg|Lua}} (tutaj od jedynki) z tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera), do tablicy nienazwanej z nazwanej, jak to robi się w {{Lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonDecode}}, z użyciem drugiego parametru: {{LinkPatrz|mw.text.JSON_PRESERVE_KEYS}}. == {{Śródtytuł|p["Rozwiń"]}}{{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> Parameetry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon rozwija wikikod podany w zmiennej {{Code|1}}, w parametrach szablonu rodzica. * 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}}: <syntaxhighlight lang="lua"> p["Rozwiń"] = function(frame) return frame:getParent():preprocess(frame.args[1]); end; </syntaxhighlight> == {{Śródtytuł|p.Log}}{{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> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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}}: <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 == === {{Śródtytuł|p.Szablon}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p.Szablon = function(frame) return ParserBlokowy(frame,0); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Szablon|Nazwa=<nazwa szablonu>|...}} </syntaxhighlight> === {{Śródtytuł|p["Moduł"]}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p["Moduł"] = function(frame) return ParserBlokowy(frame,1); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Moduł|Nazwa=<nazwa modułu>|Funkcja=<nazwa funkcji>|...}} </syntaxhighlight> === {{Śródtytuł|p.Parser}}{{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 pełna funkcji: <syntaxhighlight lang="lua"> p.Parser = function(frame) return ParserBlokowy(frame,2); end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}. Funkcję uruchamia się w ramce szablonu, przykład: <syntaxhighlight lang="mediawiki"> {{#invoke:Ramka|Parser|Nazwa=<nazwa parsera>|...}} </syntaxhighlight> == Funkcje książkowe == === {{Śródtytuł|p.Q}}{{Code|p.Q}} === Funkcja uruchamiana we wnętrzu szablonu {{s|Q}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on. * Jego specjalne odpowiedniki to {{s|T}} i {{s|T2}}. Funkcja uruchamia szablon o podanej nazwie w pierwszym parametrze z dodanym przedrostkiem {{Code|Książka:}} przed nazwą szablonu. * Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.Q =function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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ą (parametry nazwane, które są wliczane 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}}}} === {{Śródtytuł|p.N}}{{Code|p.N}} === Funkcja uruchamiana we wnętrzu szablonu {{s|N}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on. Funkcja przed nazwą szablonu, czy modułu, zostawia w wpis w postaci przedrostka {{Code|Książka:}}. Czy zostanie dodana przed tym nazwa przestrzeni nazw, to zależy od niepodania niepustej zmiennej {{Parametr|n}}, a zmienna {{Parametr|p|1}} - to przed nim jest dodawana przestrzeń nazw szablonu {{Np|Template|link=tak}}, {{Parametr|p|2}} - modułu {{Np|Module|link=tak}} i {{Parametr|p|3}} - kategorii. * Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.N=function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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}}}} === {{Śródtytuł|p.A}}{{Code|p.A}} === Funkcja uruchamiana we wnętrzu szablonu {{s|A}}, która przyjmuje jego parametry, i tak samo działa, jak on. Funkcja usuwa przedrostek {{Code|Książka:}} w nazwie szablonu, czy modułu. Gdy jest podany parametr: {{Parametr|p|tak}}, to dla przestrzeni niebędących: {{Np|Template|link=tak}}, {{Np|Module|link=tak}} i {{Np|Category|link=tak}}, jest zwracany wtedy przez nią parametr pierwszy funkcji. Dla tych wartości właśnie wyliczonych przestrzeni usuwany jest przedrostek {{Code|Książka:}}. Funkcja generuje nazwę z prestrzenią nazw. * Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.A=function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. 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 == === {{Śródtytuł|p.Powtarzaj}}{{Code|p.Powtarzaj}} === Funkcja służy do powtarzalnego generowania wikikodu ze składników jego kroku przy pomocy określonych zmiennych rodzica. * Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.Powtarzaj = function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}. Funkcja może przyjmować tylko parametry nienazwane albo tylko nazwane, albo nienazwane i nazwane (gdy jest ustawiony parametr {{Code|różne}} {{Patrz|różne}}). 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}} {{LinkPatrz|różne}}, która wtedy ma wskazywać na wartość niepustą. ; Najważniejsze parametry, które są to opcjonalne, to są{{dk}} * {{Code|start}} {{Patrz|start}} - liczba, która wskazuje początek liczenia - domyślna wartość to {{Code|1}}, * {{Code|koniec}} {{Patrz|koniec}} - liczba, która wskazuje koniec liczenia. ; Numer końca liczenia parametrów nienazwanych lub nazwanych, czy nazwanychi nienazwanych{{dk}} * Elementy w {{Code|parametry}} {{Patrz|parametry}} mogą modyfikować odpowiednio parametry: {{Code|start}} {{LinkPatrz|start}} i {{Code|koniec}} {{LinkPatrz|koniec}}. * Ze zmiennej {{LinkPatrz|parametry}} jest liczona odpowiednia zmienna {{LinkPatrz|tabela}} dopuzczalnych zmiennych do liczenia. * Funkcja {{Code|Wylicz_skoncz_na_koncu}},którego algorytm podomy w tej poyzcji, tzn. koniec liczenia parametrów nienazwanych musi być policzony, jeżeli nie ma parametrów nazwanych w tabeli {{Code|tabela}} {{Patrz|tabela}}. A przeciwnie, jeżeli nie jest ustawiony parametr {{Code|różne}} {{LinkPatrz|różne}} nie na wartość niepustą, wtedy jest liczony parametr maksimum parametrów nazwanych, przeciwnie wtedy liczy się parametr maksimum numeracyjne parametrów numerowanych, czyli zmienną: {{Code|maksimum numeracyjne}} {{Patrz|maksimum numeracyjne}}, jeśli on ma wartość niepustą, wtedy liczy się maksimum parametrów nienazwanych, a jeżeli ona ma przeciwną wartość, to się liczy maksimum parametrów nazwanych, jak nienazwanych. Na podstawie tego mamy policzony odpowiednio taki koniec liczenia modyfikacji zwracany i policzony przez tą funkcję. ; Parametr {{Code|dodatkowe}}{{dk}} * To maksimum parametrów nazwanych, dla jakieś podstawy parametrów, są pomijane parametry z: {{Code|dodatkowe}}, która jest zestawem podstaw parametrów oddzielonych średnikami, jest właśnie podany ten parametr w nim. Przykładem jego jest: * {{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. ; Format parametru {{Parametr|parametry}}{{dk}} * 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 równa liczbie {{Code|5}}, oddzielonych średnikami. ; Opis parametru {{Parametr|parametry}}{{dk}} 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 w wartościach: {{Code|zmienna 1>}}, {{Code|<zmienna 2>}} i {{Code|<zmienna 3>}}, w których są pewne nazwy bazowe parametrów bez numerka na jej końcu, w zmiennej {{Code|parametry}} można nie podawać dalszych elementów 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ć nawet tego znaku,gdy nic nie ma po równa się) dla danego problemu funkcji. ; Wikikod pojedynczego kroku liczenia całości wygenerowanego wikikodu dla wszystkich zmiennych{{dk}} * 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)}}. ; Parametr {{Parametr|start}}, wartość początkowa{{dk}} * Gdy parametr {{Code|tonumber(frame.args["start"]) or 1}}, jest równy zero, funkcja zwraca błąd: {{Code|(początek jest ustawiony na zero)}}. ; Brak parametrów szablonu{{dk}} * 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. ; Parametr {{Parametr|nic}}{{dk}} * Gdy {{Code|nic}} przyjmuje wartość, i gdy pomijamy parametr, lub on przyjmuje wartość pustą, wtedy a funkcja nie może wygenerować żadnego kroku iteracji, to wtedy jest zwracana wartość parametru {{Code|nic}} lub ciąg pusty. ; Inne parametry{{dk}} * Parametr {{Code|po kolei}} {{Patrz|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|zaznacz}} {{Patrz|zaznacz}} - liczby oddzielone średnikami, które przy parametrach nazwanych o pewnych numerach i numerkach nie mają być uwzględnione przy niepustym parametrze {{Code|po kolei}} {{LinkPatrz|po kolei}}, a przy jego przeciwnej wartości za to mają być użyte. * 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}} {{Patrz|_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>}}. Domyślną wartością {{Code|_i}} jest {{Code|_}}. ; W wyniku iteracji otrzymamy tablicę ciągów łańcuchów z wikikodami, wtedy ta funkcja używa do tego liczenia{{dk}} * Jest to funkcja {{LinkŚródtytuł|BudowaSzereguZDanych}}. * Wywołanie funkcji jest takie: {{Pre|lancuch_znakow {{=}} BudowaSzereguZDanych(frame,tab_lancuch,minimum or 0,maksimum);}} ; Parametry funkcji {{LinkŚródtytuł|BudowaSzereguZDanych}}. * One są wraz z jego parametrami podane w postaci jego parametrów ramki {{Code|frame}}, które jednocześnie są parametrami {{LinkŚródtytuł|p.Powtarzaj}}, używa się je 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ą {{LzLua|frame:preprocess}}, i jest zwracany jako wartość omawianej funkcji. ; Przykłady{{dk}} * Funkcja jest używana np. w silnikach szablonów, np.: {{s|Osobny artykuł/silnik}} szablonu {{s|Osobny artykuł}}, jak i do niego 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}}. === {{Śródtytuł|p.PowtarzajOdDo}}{{Code|p.PowtarzajOdDo}} === Funkcja służy do iteracji, od jakieś liczby do jakieś innej, podanego wikikodu dla danego kroku {{Code|1}}, iterując to, co krok określony zmienną: {{Code|krok}}. * 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ę{{dk}} {{nobold|{{Code|{{m|Ramka|Rozwiń}}}}}}, lub go rozwija na końcu, na podstawie kolejnych kroków iteracji{{dk}} * {{Code|start}} - początek iteracji dokonywany przez ta funkcję, * {{Code|koniec}} - koniec iteracji dokonywany przez ta funkcję, * {{Code|krok}} - krok iteracji, co który numer 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{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}} * {{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ą{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}} * {{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{{dk}} {{nobold|{{s|Chem/silnik}}}}, w tym nadrzędnym{{dk}} {{nobold|{{s|Chem}}}}, przykłady jego działania{{dk}} * {{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. === {{Śródtytuł|p["PrzetwarzajIterującCiąg"]}}{{Code|p["PrzetwarzajIterującCiąg"]}} === Funkcja do iteracji wikikodu po parametrach oddzielonych średniami w parametrze ramki {{Code|cią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{{dk}} * {{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{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}} * {{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ą{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}} * {{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>}} jest kolejny parametr, oddzielonych od pozastałych średniami, z: {{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}}: {{LzLua|frame:preprocess}}, jeśli: {{Code|nie rozwiń}}, nie przybiera wartości niepustej. === {{Śródtytuł|p["PowtarzajWedług"]}}{{Code|p["PowtarzajWedług"]}} === Funkcja wyszukująca elementy według wzoru począwszy od numeru, określonego przez {{Code|start}}, aż do zakończenia danych kolenych sprawdzania od tej liczby, czy taka strona istnieje, numerek jest określony przez pewien wikikod, określony przez {{Code|<nowiki>{{_}}</nowiki>}}, którymusi być podany we wzorze {{Code|wzor}}. Ona w ten sposób dla istniejących stron ustawia pewne łańcuchy, które są łączone znakami {{Code|", "}}, a na końcu samym {{Code|" i "}}. 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 strony{{dk}} {{nobold|„{{Ns:Template}}{{dk}}Polecane książki/”}}, a oto przykład{{dk}}{{nobold|{{Parametr|wzór|{{Ns:Template}}{{dk}}Polecane książki/{{((}}_{{))}}}}}}{{dk}} * {{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}}}} == {{Śródtytuł|p["LiczbaPrawychUkośników"]}}{{Code|p["LiczbaPrawychUkośników"]}} == Funkcja liczy, ile jest prawych ukośników w adresie strony podany jako pierwszy parametr ramki. * 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. ; Parametry fubkcji{{dk}} * {{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}}}} == {{Śródtytuł|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}}{{Code|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}} == Funkcja liczy maksymalny numer kolejnej strony liczonej według wzoru {{Code|wzor}}, musi być we wzorze podany element {{Code|<nowiki>{{_}}</nowiki>}}, aby mógł to robić. * 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/”, czyli dla stron o ogólnym wzorze: {{Parametr|wzór|{{Ns:Template}}:Polecane książki/{{((}}_{{))}}}}. ; Parametry funkcji{{dk}} * {{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 == === {{Śródtytuł|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}}{{Code|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}} === Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy minimalny numer takich zmiennych. * 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*)}}. ; Parametry funkcji{{dk}} * {{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}}}} === {{Śródtytuł|p.IleJestTakichOdpowiednikowychZmiennych}}{{Code|p.IleJestTakichOdpowiednikowychZmiennych}} === Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy ile jest takich zmiennych. * 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. ; Parametry funkcji{{dk}} * {{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}}}} == {{Śródtytuł|p["Parametr w tablicy nazw"]}}{{Code|p["Parametr w tablicy nazw"]}} == Funkcja bada, czy jest taki parametr {{Code|pozycja}} w tablicy nazw określonej zmienną {{Code|parametry}}, której elementy są oddzielone średnikami. * 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. ; Parametry funkcji{{dk}} * {{Code|parametry}} - lista parametrów oddzielonych średnikiem, * {{Code|pozycja}} - szukana lista w tablicy parametrów, * {{Code|od dużej}} - czy parametr: {{Code|pozycja}}, i elementy listy: {{Code|parametry}}, 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}}, a to ostatnie jest to wartość języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, która po transformacji na wikikod jest zamieniana na ciąg pusty, więc ona nadaje się do instrukcji warunkowych. === 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> h03muitghu8j1ytv3s6xte6yirt3bvg Wikibooks:Moduły/Parametry 4 63291 553439 553301 2026-08-30T02:20:32Z Persino 2851 /* Spis treści */ 553439 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> bx64ah44m3y9dkq643hh8u0celh01jw Wikibooks:Moduły/Html 4 63462 553441 552191 2026-08-30T02:49:39Z Persino 2851 553441 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Html}}|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 html_modul=require("Module:Html"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Moduł zawiera funkcje do posługiwania się dziesiętnymi, szesnastkowymi i literowymi kodami {{Strong|HTML}} i zamieniania ich na odpowiednie znaki, zamieniania znaków na ich kody dziesiętne, i odwrotnie. Kodowaniem i dekodowaniem {{Strong|URL}} adresów internetowych, parametrów i nagłówków. Rozdzielaniem pełnych adresów na nazwę strony, zapytanie i nagłówek, odpowiednich ich kodowaniem, a potem ich łączenie z powrotem do innej wartości zwykle niż wcześniej tego samego ciągu. == {{Code|p.KodowanieOmijanieFunkcyjne}} == Funkcja wywołuje funkcję modułu {{Code|{{ld2|Szeregi}}}} zwaną {{Code|{{sr|#p.SzeregiOmijanieFunkcyjne|p=Szeregi}}}}. Domyślnym wzorem jest {{Code|<nowiki>&([^&;%s]+);</nowiki>}}, ale można go zmienić na inny. Drugą funkcją podawaną do tej funkcji jest domyślnym obiektem funkcyjnym anonimowym, który nie podaje się do funkcji w nagłówku: <syntaxhighlight lang="lua"> function(kod) return "&"..kod..";"; end </syntaxhighlight> Gdzie {{Code|kod}} jest elementem przechwytywanym kodu {{Strong|HTML}}, który jest określony poprzez nawiasy okrągłe we wzorze podawanym jako argument lub, jeśli jest on równy {{Code|nil}}, wtedy we wzorze domyślnym, który w takim razie jest rozpatrywany. Funkcja służy do omijania wszystkich kodów {{Strong|HTML}} lub tylko niektórych i robienia na nich operacji za pomocą funkcji podawanej jako ostatni parametr. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KodowanieOmijanieFunkcyjne(html,normalnie,wzor,funkcja)...end; </syntaxhighlight> Parametry funkcji: * {{Code|html}} - ciąg do przetworzenia, w częściach bez parametrów omijanych, * {{Code|normalnie}} - czy ma przetwarzać tekst pomijając, w przeciwnym wypadku tak nie robi, * {{Code|wzor}} - wzór do elementów pomijanych, wzór może mieć tylko jeden element przechwytywany, * {{Code|funkcja}} - funkcja robiąca operacje na przetworzonych subciągach bez elementów pomijanych. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local tekst="Oto jest tekst wywołania: \"&#35;\""; local tekst2=html_modul.KodowanieOmijanieFunkcyjne(tekst,true,"&(#35);",function(tekst) return mw.uri.encode(tekst); end); </syntaxhighlight> Wyniki działania: <syntaxhighlight lang="lua"> local tekst2="Oto+jest+tekst+wywo%C5%82ania%3A+%22&#35;%22"; </syntaxhighlight> == {{Code|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}} == Funkcja zamienia znaki specjalne wikikodu i wyrażeń regularnych na kody dziesiętne {{Strong|HTML}}. Zamieniane znaki, to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to nie jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>|[]()+-*?.^$%'</nowiki>}}. Jest ona potrzebna do zamiany nazw stron nazw wewnętrznych na {{NS|l=tak}}, a w nich te znaki na kody {{Code|HTML}}, by wykorzystać później to w funkcji: {{Code|mw.title.makeTitle}}. Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]=function(frame)...end; </syntaxhighlight> Parametry ramki funkcji tablicy transportu: * {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}}. Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument. Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}. Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie: <syntaxhighlight lang="mediawiki"> {{#invoke:Html|TransformacjaKlasyZnakowejDoKoduHtmlCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}} </syntaxhighlight> Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local tekst="Oto jest link: [[user:użytkownik|(Użytkownik)]]."; -- Równoważne: local tekst2=html_modul["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]{tekst=tekst,}; -- Równoważne: local tekst2=html_modul["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]{args={tekst=tekst,},}; local tekst2=html_modul["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](tekst); </syntaxhighlight> Wyniki działania: <syntaxhighlight lang="lua"> local tekst2="Oto jest link: &#91;&#91;user:użytkownik&#124;&#40;Użytkownik&#41;&#93;&#93;&#46;"; </syntaxhighlight> == {{Code|p["TransformacjaKoduHtmlDoZnakuCiągu"]}} == Zamienia w tekście znaki kodów {{Strong|HTML}} dziesiętne i szesnastkowe na odpowiednie znaki {{Strong|Unicode}}. Kody dziesiętne oznaczone są wyrażone wyrażeniem regularnym: {{Code|<nowiki>&#(%d+);</nowiki>}}, a szesnastkowe: {{Code|<nowiki>&#x(%x+);</nowiki>}}. Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["TransformacjaKoduHtmlDoZnakuCiągu"]=function(frame)...end; </syntaxhighlight> Parametry ramki funkcji tablicy transportu: * {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany kodów {{Strong|HTML}}, dziesiętnych i szesnastkowych, na znaki. Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument. Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}. Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie: <syntaxhighlight lang="mediawiki"> {{#invoke:Html|TransformacjaKoduHtmlDoZnakuCiągu|tekst=Oto jest link: &#91;&#91;user:użytkownik&#124;&#40;Użytkownik&#41;&#93;&#93;&#46;}} </syntaxhighlight> Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local tekst="Oto jest link: &#91;&#91;user:użytkownik&#124;&#40;Użytkownik&#41;&#93;&#93;&#46;"; -- Równoważne: local tekst2=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"]{tekst=tekst,}; -- Równoważne: local tekst2=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"]{args={tekst=tekst,},}; local tekst2=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](tekst); </syntaxhighlight> Wyniki działania: <syntaxhighlight lang="lua"> local tekst2="Oto jest link: [[user:użytkownik|(Użytkownik)]]."; </syntaxhighlight> == {{Code|p.ZnakiSpecjalneTaguNowiki}} == Funkcja zamienia znaki specjalne, w tekście (w zawartości pomiędzy tagami tagu {{Tag|nowiki}}, by potem je tam umieścić, by pierwotna zawartość równała się tekstowi wyświetlanemu (aby on zamieniał się na tylko zwykły tekst, by nie był dalej rozwijalny względem funkcji: {{Code|frame:preproces}})), wikikodu na kody dziesiętne {{Strong|HTML}}. Zamieniane znaki to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>!{}|=<>[]</nowiki>}}. Dlatego te znaki, bo {{Code|<nowiki>=<>[]</nowiki>}} są częścią tagów mechanizmu {{Strong|HTML}}, a w tagach mogą być też linki wewnętrzne, czy zewnętrzne, i nierozwinięte szablony, a więc też i {{Code|<nowiki>{}|</nowiki>}}, a elementy {{Code|<nowiki>!{}|=</nowiki>}} są one częścią wiki-tabelek mechanizmu {{Code|MediaWiki}}, elementy te też mogą występować, gdzieś indziej w tekście w wikikodzie, również ze znakiem {{Code|<nowiki>=</nowiki>}} i z innymi tutaj wspomnianymi znakami tagowymi, też trzeba je zakodować nimi. Tak je kodujemy przez tę funkcję, by tak uzyskany tekst nie miał elementów mechanizmu {{Strong|HTML}}, ani {{Strong|MediaWiki}}. Funkcja potrzebuje, do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZnakiSpecjalneTaguNowiki(frame)...end; </syntaxhighlight> Parametry ramki funkcji tablicy transportu: * {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany znaków, z zestawu znaków specjalnych wskazanych w funkcji, występujących w tagach języka '''HTML''' do dziesiętnego kodu {{Strong|HTML}}. Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument. Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}. Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie: <syntaxhighlight lang="mediawiki"> {{#invoke:Html|ZnakiSpecjalneTaguNowiki|tekst=<span id="toc">Oto jest tekst, i link: [[Pomoc:Spis treści|Spis treści]]</span>.}} </syntaxhighlight> Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local tekst="<span id=\"toc\">Oto jest tekst, i link: [[Pomoc:Spis treści|Spis treści]]</span>."; -- Równoważne: local tekst2=html_modul.ZnakiSpecjalneTaguNowiki{tekst=tekst,}; -- Równoważne: local tekst2=html_modul.ZnakiSpecjalneTaguNowiki{args={tekst=tekst,},}; local tekst2=html_modul.ZnakiSpecjalneTaguNowiki(tekst); </syntaxhighlight> Wyniki działania: <syntaxhighlight lang="lua"> local tekst2="&#60;span id&#61;\"toc\"&#62;Oto jest tekst, i link: &#91;&#91;Pomoc:Spis treści&#124;Spis treści&#93;&#93;&#60;/span&#62;."; </syntaxhighlight> == {{Code|p.ZnakiSpecjalneWikiLinku}} == Zamienia znaki specjalne transformacji nagłówka adresów '''HTML''' (nagłówek zaczyna się od znaku {{Code|<nowiki>#</nowiki>}} - na samym końcu, w adresach stron, ale na samym początku w nich) na specjalne kody {{Strong|HTML}}. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]</nowiki>}}. Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZnakiSpecjalneWikiLinku(frame)...end; </syntaxhighlight> Parametry ramki funkcji tablicy transportu: * {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}}. Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument. Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}. Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie: <syntaxhighlight lang="mediawiki"> {{#invoke:Html|ZnakiSpecjalneWikiLinku|tekst={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}} </syntaxhighlight> Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local tekst="[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}"; -- Równoważne: local tekst2=html_modul.ZnakiSpecjalneWikiLinku{tekst=tekst,}; -- Równoważne: local tekst2=html_modul.ZnakiSpecjalneWikiLinku{args={tekst=tekst,},}; local html2=html_modul.ZnakiSpecjalneWikiLinku(tekst); </syntaxhighlight> Wyniki działania: <syntaxhighlight lang="lua"> local tekst2="&#91;pl&#93; Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: &#123;&#123;Szablon do używania&#124;parametr 1=wartość1&#124;parametr 2=wartość2&#125;&#125;"; </syntaxhighlight> == {{Code|p.EncodeSpecjalneZnakiHtml}} == Zamienia znaki specjalne adresu strony, jego parametrów (bez {{Code|<nowiki>?</nowiki>}} - wskazującej na początek adresu strony z parametrami, {{Code|<nowiki>&</nowiki>}} - oddzielające zmienne i ich wartości, {{Code|<nowiki>=</nowiki>}} - oddzielającej parametr od jej wartości w zmiennej) i nagłówka (bez {{Code|<nowiki>#</nowiki>}} na samym początku) na specjalne kody {{Strong|HTML}}, aby były one odróżnialne od innych specjalnych znaków adresów '''HTML'''. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]#=?&</nowiki>}}. Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EncodeSpecjalneZnakiHtml(frame,normalnie)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|normalnie}} - czy ma omijać kody {{Strong|HTML}}. Parametry ramki funkcji tablicy transportu: * {{Code|html}} - zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}}, * {{Code|normalnie}} - czy ma omijać kody {{Strong|HTML}}, jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji. Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument. Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|html}}. Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie: <syntaxhighlight lang="mediawiki"> {{#invoke:Html|EncodeSpecjalneZnakiHtml|html={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}} </syntaxhighlight> Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|html2}} poniżej. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local html="[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}"; -- Równoważne: local html2=html_modul.EncodeSpecjalneZnakiHtml{html=html,}; -- Równoważne: local html2=html_modul.EncodeSpecjalneZnakiHtml{args={html=html,},}; local html2=html_modul.EncodeSpecjalneZnakiHtml(tekst); </syntaxhighlight> Wyniki działania: <syntaxhighlight lang="lua"> local html2="&#91;pl&#93; Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: &#123;&#123;Szablon do używania&#124;parametr 1&#61;wartość1&#124;parametr 2&#61;wartość2&#125;&#125;"; </syntaxhighlight> == {{Code|p.EncodeZnakProloguList}} == Szablon zamienia pierwszy znak wiki-listy (więc znak po {{Code|<nowiki>\n</nowiki>}}), tzn. znaki z: {{Code|<nowiki>#*;:</nowiki>}} na kod {{Strong|HTML}}, a znak bezpośrednio na samym początku od pewnego momentu, tzn. ten znak jest po znaku lub samym początku, to jest określane przez wyrażenie regularne: {{Code|<nowiki>^\n?</nowiki>}}, ten znak wiki-listy zamieniany jest na ten kod, a początkowy znak nowej linii, jeżeli istnieje, jest usuwany. To jest przyszykowane po to, gdyby w szablonie pierwszy wygenerowany znak, był tym znakiem listy (wtedy mechanizm {{Strong|MediaWiki}} generuje bezpośrednio przed nim znak nowej linii, który jest na początku łańcucha wygenerowany przez to), a więc ta funkcja służy też do tego. Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EncodeZnakProloguList(frame)...end; </syntaxhighlight> Parametry ramki funkcji tablicy transportu: * {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany z podanego zestawu znaków pierwszych znaków listy, mechanizmu {{Strong|MediaWiki}}, do dziesiętnego kodu {{Strong|HTML}}. Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument. Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}. Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie: <syntaxhighlight lang="mediawiki"> {{#invoke:Html|EncodeZnakProloguList|tekst= * Oto jest pierwszy element listy, *: Oto jest drugi element listy. }} </syntaxhighlight> Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local tekst="\n* Oto jest pierwszy element listy,\n*: Oto jest drugi element listy."; -- Równoważne: local tekst2=html_modul.EncodeZnakProloguList{tekst=tekst,}; -- Równoważne: local tekst2=html_modul.EncodeZnakProloguList{args={tekst=tekst,},}; local tekst2=html_modul.EncodeZnakProloguList(tekst); </syntaxhighlight> Wyniki działania: <syntaxhighlight lang="lua"> local tekst2="&#42; Oto jest pierwszy element listy,\n&#42;: Oto jest drugi element listy."; </syntaxhighlight> == {{Code|p.ParametryPrzypisaniaZnakowegoEncodeHtml}} == Eliminuje znaki specjalne nazw stron, bez parametrów, a parametry, tam gdzie one nie mogą występować, a jednak występują, opisujące parametry, tzn. od czego zaczynają się one, jak są one oddzielone, jak oddzielone są nazwy od ich wartości w przypadku parametru. Funkcja zamienia znaki {{Code|<nowiki>=%?&</nowiki>}} na kody dziesiętne {{Strong|HTML}}. Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Funkcja potrafi opcjonalnie omijać kody {{Strong|HTML}}, w zależności od podanego drugiego parametru. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParametryPrzypisaniaZnakowegoEncodeHtml(frame,normalnie)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|normalnie}} - czy ma omijać kody {{Strong|HTML}}. Parametry ramki funkcji tablicy transportu: * {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}}, * {{Code|normalnie}} - czy ma omijać kody {{Strong|HTML}}, jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji. Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument. Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}. Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie: <syntaxhighlight lang="mediawiki"> {{#invoke:Html|ParametryPrzypisaniaZnakowegoEncodeHtml|tekst=Wikibooks:Strona?action=edit&section=2}} </syntaxhighlight> Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local tekst="Wikibooks:Strona?action=edit&section=2"; -- Równoważne: local tekst2=html_modul.ParametryPrzypisaniaZnakowegoEncodeHtml{tekst=tekst,}; -- Równoważne: local tekst2=html_modul.ParametryPrzypisaniaZnakowegoEncodeHtml{args={tekst=tekst,},}; local tekst2=html_modul.ParametryPrzypisaniaZnakowegoEncodeHtml(tekst); </syntaxhighlight> Wyniki działania: <syntaxhighlight lang="lua"> local tekst2="Wikibooks:Strona&#63;action&#61;edit&#38;section&#61;2"; </syntaxhighlight> == {{Code|p.PrzypisanieZnakoweEncodeHtml}} == Eliminuje znaki specjalne nazw stron, oddzielające nazwy parametrów od ich wartości, aby jak dana zmienna jest nienazwana (numerowana), aby nie była traktowana jako nazwana ze względu na występowanie znaku równości {{Code|{{=}}}}. Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PrzypisanieZnakoweEncodeHtml(frame)...end; </syntaxhighlight> Parametry ramki funkcji tablicy transportu: * {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany znaków przypisania {{Code|{{=}}}} do dziesiętnego kodu {{Strong|HTML}}. Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument. Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}. Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie: <syntaxhighlight lang="mediawiki"> {{#invoke:Html|PrzypisanieZnakoweEncodeHtml|tekst=Wikibooks:Strona=Parametry}} </syntaxhighlight> Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local tekst="Wikibooks:Strona=Parametry"; -- Równoważne: local tekst2=html_modul.PrzypisanieZnakoweEncodeHtml{tekst=tekst,}; -- Równoważne: local tekst2=html_modul.PrzypisanieZnakoweEncodeHtml{args={tekst=tekst,},}; local tekst2=html_modul.PrzypisanieZnakoweEncodeHtml(tekst); </syntaxhighlight> Wyniki działania: <syntaxhighlight lang="lua"> local tekst2="Wikibooks:Strona&#61;Parametry"; </syntaxhighlight> Użycie w szablonie w postaci parametry nienazwanego (numerowanego): <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|Wikibooks:Strona=Parametry}} </syntaxhighlight> może powodować pewne problemy, ta zmienna nie zostanie nazwana jako nienazwana, tylko jako nazwana o nazwie parametru {{Code|Wikibooks:Strona}} i wartości {{Code|Parametry}}. Aby tego uniknąć, wypadałoby napisać to wywołanie: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|Wikibooks:Strona&#61;Parametry}} </syntaxhighlight> Wtedy to zostanie na pewno zostanie potraktowane jako zmienna nienazwana (numerowana). Szczególnie to jest ważne, gdy używamy funkcji: {{Code|{{sr|#p["Rozwiń"]|p=Ramka}}}}, do rozwijania parametrów. W takim przypadku trzeba używać funkcji: {{Code|{{sr|#p.PrzypisanieZnakoweEncodeHtml|p=Html}}}}, aby zamienić przypisanie na parametr numerowany. == {{Code|p.ZamianaDwukropkaNaKodHtml}} == Zamienia dwukropki na kody dziesiętne {{Strong|HTML}}, tam gdzie one mają specjalne znaczenie, a po wyeliminowaniu ich (po zamianie) tracą owe znaczenie. Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZamianaDwukropkaNaKodHtml(frame)...end; </syntaxhighlight> Parametry ramki funkcji tablicy transportu: * {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany ze znaku dwukropka do dziesiętnego kodu {{Strong|HTML}}. Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument. Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}. Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie: <syntaxhighlight lang="mediawiki"> {{#invoke:Html|ZamianaDwukropkaNaKodHtml|tekst=subst:msg:Szablon:Nazwa_strony}} </syntaxhighlight> Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local tekst="subst:msg:Szablon:Nazwa_strony"; -- Równoważne: local tekst2=html_modul.ZamianaDwukropkaNaKodHtml{tekst=tekst,}; -- Równoważne: local tekst2=html_modul.ZamianaDwukropkaNaKodHtml{args={tekst=tekst,},}; local tekst2=html_modul.ZamianaDwukropkaNaKodHtml(tekst); </syntaxhighlight> Wyniki działania: <syntaxhighlight lang="lua"> local tekst2="subst&#58;msg&#58;Szablon&#58;Nazwa_strony"; </syntaxhighlight> == {{Code|p.KodHTMLZnaku}} == === Odpowiednik szablonowy === Odpowiednik szablonowy jest pod nazwą {{s|KodHTMLZnaku}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce. === Funkcja biblioteczna === Zamienia zadany znak na kod dziesiętny {{Strong|HTML}}, wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&amp;}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|&num;}}}}. Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KodHTMLZnaku(frame)...end; </syntaxhighlight> Parametry ramki funkcji tablicy transportu: * {{Code|1}} - zmienna, pod którym jest znak do zamiany na kod dziesiętny {{Strong|HTML}}, * {{Code|2}} - czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&amp;}}}}, a znak {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|&num;}}}}. Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument, ale wtedy musi być podany parametr {{Parametr|wyspecjalizowana|tak}}, gdy mamy zmienną {{Code|frame.args}}, a jeżeli ten argument nie został podany z wartością niepustą, wtedy są wyszukiwane elementy z {{Code|frame:getParent().args}}. Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}}. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local znak="k"; -- Równoważne: local tekst2=html_modul.KodHTMLZnaku{[1]=znak,}; -- Równoważne: local tekst2=html_modul.KodHTMLZnaku{args={[1]=znak,},}; local tekst2=html_modul.KodHTMLZnaku(znak); -- Równoważne: local tekst3=html_modul.KodHTMLZnaku{[1]=znak,[1]="tak",}; local tekst3=html_modul.KodHTMLZnaku{args={[1]=znak,[2]="tak",},}; </syntaxhighlight> Wyniki działania: <syntaxhighlight lang="lua"> local tekst2="&#107;"; local tekst3="&amp;&num;107;"; </syntaxhighlight> Szablonowo taką zamianę możemy napisać: * {{Code|{{s|KodHTMLZnaku|k}}}} → {{Tt|{{KodHTMLZnaku|k}}}} * {{Code|{{s|Nowiki|{{s|KodHTMLZnaku|k}}}}}} → {{Tt|{{Nowiki|{{KodHTMLZnaku|k}}}}}} * {{Code|{{s|KodHTMLZnaku|k|tak}}}} → {{Tt|{{KodHTMLZnaku|k|tak}}}} * {{Code|{{s|Nowiki|{{s|KodHTMLZnaku|k|tak}}}}}} → {{Tt|{{Nowiki|{{KodHTMLZnaku|k|tak}}}}}} Równie dobrze możemy napisać takie wywołania w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: <syntaxhighlight lang="mediawiki"> <!-- Wyświetla wynik: "&#107;"; --> {{#invoke:Html|KodHTMLZnaku|k|wyspecjalizowana=tak}} <!-- Wyświetla wynik: "&amp;&num;107;"; --> {{#invoke:Html|KodHTMLZnaku|k|tak|wyspecjalizowana=tak}} </syntaxhighlight> == {{Code|p["KodyHTMLZnakówWikiCiągu"]}} == === Odpowiednik szablonowy === Odpowiednik szablonowy jest pod nazwą {{s|KodyHTMLZnakówWikiCiągu}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce. === Funkcja biblioteczna === Zamienia ściśle określone znaki (zestaw kodów znajduje się na stronie: {{Code|{{ls2|KodyHTMLZnakówWikiCiągu/opis}}}}) na kody dziesiętne {{Strong|HTML}}, wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&amp;}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|&num;}}}}. Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p["KodyHTMLZnakówWikiCiągu"](frame)...end; </syntaxhighlight> Parametry ramki funkcji tablicy transportu: * {{Code|1}} - ciąg, pod którym są możliwe ściśle określone znaki są zamieniane na kod {{Strong|HTML}}, ciąg ten jest ze znakami wiki w UTF8, * {{Code|2}} - czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&amp;}}}} i {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|&num;}}}}. Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument, ale wtedy musi być podany parametr {{Parametr|wyspecjalizowana|tak}}, gdy mamy zmienną {{Code|frame.args}}, a jeżeli ten argument nie został podany z wartością niepustą, wtedy są wyszukiwane elementy z {{Code|frame:getParent().args}}. Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}}. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local tekst="k{{s"; -- Równoważne: local tekst2=html_modul["KodyHTMLZnakówWikiCiągu"]{[1]=tekst,}; -- Równoważne: local tekst2=html_modul["KodyHTMLZnakówWikiCiągu"]{args={[1]=tekst,},}; local tekst2=html_modul["KodyHTMLZnakówWikiCiągu"](znak); -- Równoważne: local tekst3=html_modul["KodyHTMLZnakówWikiCiągu"]{[1]=tekst,[1]="tak",}; local tekst3=html_modul["KodyHTMLZnakówWikiCiągu"]{args={[1]=tekst,[2]="tak",},}; </syntaxhighlight> Wyniki działania: <syntaxhighlight lang="lua"> local tekst2="k&#123;&#123;s"; local tekst3="k&amp;&num;123;&amp;&num;123;s"; </syntaxhighlight> Szablonowo taką zamianę możemy napisać: * {{Code|{{s|KodyHTMLZnakówWikiCiągu|k{{s|((}}s}}}} → {{Tt|{{KodyHTMLZnakówWikiCiągu|k{{((}}s}}}} * {{Code|{{s|Nowiki|{{s|KodyHTMLZnakówWikiCiągu|k{{s|((}}s}}}}}} → {{Tt|{{Nowiki|{{KodyHTMLZnakówWikiCiągu|k{{((}}s}}}}}} * {{Code|{{s|KodyHTMLZnakówWikiCiągu|k{{s|((}}s|tak}}}} → {{Tt|{{KodyHTMLZnakówWikiCiągu|k{{((}}s|tak}}}} * {{Code|{{s|Nowiki|{{s|KodyHTMLZnakówWikiCiągu|k{{s|((}}s|tak}}}}}} → {{Tt|{{Nowiki|{{KodyHTMLZnakówWikiCiągu|k{{((}}s|tak}}}}}} Równie dobrze możemy napisać takie wywołania w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: <syntaxhighlight lang="mediawiki"> <!-- Wyświetla wynik: "k&#123;&#123;s"; --> {{#invoke:Html|KodyHTMLZnakówWikiCiągu|k{{((}}s|wyspecjalizowana=tak}} <!-- Wyświetla wynik: "k&amp;&num;123;&amp;&num;123;s"; --> {{#invoke:Html|KodyHTMLZnakówWikiCiągu|k{{((}}s|tak|wyspecjalizowana=tak}} </syntaxhighlight> == {{Code|p.EncodeId}} == Funkcja służy do opcjonalnego dekodowania ciągów znakowych według {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, i cały ciąg od specjalnych znaków jest transformowany przez funkcję {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EncodeId(id,bez_transformacji)...end; </syntaxhighlight> Parametry nieramkowe normalne funkcji: * {{Code|id}} - ciąg do przeinaczenia, * {{Code|bez_transformacji}} - gdy nie {{Code|false}} lub {{Code|nil}}, funkcja nie transformuje na podstawie: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local id="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obs%C5%82uga"; local id2=html_modul.EncodeId(id,false); </syntaxhighlight> Wynikiem tego: <syntaxhighlight lang="lua"> local id2="https://pl.wikibooks.org/w/index.php&#63;title&#61;Szablon:Link wewnętrzny&#38;action&#61;edit&#35;Obsługa"; </syntaxhighlight> Gdy: {{Code|bez_transformacji{{=}}true}}, funkcja działa jak: {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, ale wtedy {{Code|frame{{=}}id}}. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local id="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obs%C5%82uga"; local id2=html_modul.EncodeId(id,true); </syntaxhighlight> Wynikiem działania jest wartość ostatniej zmiennej: <syntaxhighlight lang="lua"> local id2="https://pl.wikibooks.org/w/index.php&#63;title&#61;Szablon:Link_wewn%C4%99trzny&#38;action&#61;edit&#35;Obs%C5%82uga"; </syntaxhighlight> == {{Code|p.UsuwanieSpecjalnychNieschematycznychSymboli}} == Usuwa z tekstu znak numer {{Code|8206}} zestawu {{lpg|Unicode}}, który można napisać, jeśli jest widoczny na ekranie komputera {{Code|&#8206;}} (znak {{Code|{{Nowiki|&#8206;}}}}). Ten znak oczywiście Unicode jest w grupie zwanej invisible Unicode characters i służy do ustawiania kierunku tekstu lewo do prawo. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UsuwanieSpecjalnychNieschematycznychSymboli(parametr)...end; </syntaxhighlight> Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); -- Tutaj jest zakodowany znak HTML, o kodzie dziesiętnym "&#8206;", składający się z trzech bajtów: "&#226;", "&#128;" i "&#142;"; local tekst="Oto jest znak: &#8206;."; -- Zamiana tego kodu na znak; tekst=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](tekst); -- Tekst bez tego znaku, bo on został w tym wywołaniu całkowicie usunięty; tekst=html_modul.UsuwanieSpecjalnychNieschematycznychSymboli(tekst); </syntaxhighlight> Wynikiem tego kodu jest wartość ukryta pod zmienną: <syntaxhighlight lang="lua"> local tekst="Oto jest znak: ."; </syntaxhighlight> == {{Code|p.EncodeWiki}} == Funkcja transformuje kody {{Strong|HTML}} do znaku przy pomocy funkcji {{Code|{{sr|#p["TransformacjaKoduHtmlDoZnakuCiągu"]|p=Html}}}}, usuwa nieschematyczne znaki o kodzie {{Code|{{Nowiki|&#8206;}}}} dzięki funkcji: {{Code|{{sr|#|p=Html}}}}, następnie opcjonalnie usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu, i zamienia wewnątrz znaki kolejne odstępów lub dolnych myślników na jeden dolny myślnik na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, dalej zaraz funkcja {{LzLua|mw.text.encode}} koduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EncodeWiki(parametr,czy_nie_odstepy)...end; </syntaxhighlight> Parametry funkcji: * {{Code|parametr}} - tekst, który chcemy zakodować, * {{Code|czy_nie_odstepy}} - czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local parametr="__Oto jest znak: \"&#8206;\" i inne_znaki_w_URL: \"https://pl.wikibooks.org/w/index.php&#63;title&#61;Szablon:Link wewnętrzny&#38;action&#61;edit&#35;Obsługa;\"__"; local parametr2=html_modul.EncodeWiki(parametr,false); local parametr3=html_modul.EncodeWiki(parametr,true); </syntaxhighlight> Wynikiem działania tej funkcji jest parametr {{Code|parametr2}} i {{Code|parametr3}}, którego wartości: <syntaxhighlight lang="lua"> local parametr2="Oto_jest_znak:_&quot;&quot;_i_inne_znaki_w_URL:_&quot;https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewnętrzny&amp;action=edit#Obsługa;&quot;"; local parametr3="__Oto jest znak: &quot;&quot; i inne_znaki_w_URL: &quot;https://pl.wikibooks.org/w/index.php?title=Szablon:Link wewnętrzny&amp;action=edit#Obsługa;&quot;__"; </syntaxhighlight> == {{Code|p.DecodeWiki}} == Funkcja {{LzLua|mw.text.decode}} dekoduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Następnie usuwa nieschematyczne symbole: {{Code|{{Nowiki|&#8206;}}}}, dzięki funkcji: {{Code|{{sr|#|p=Html}}}}, następnie działa opcjonalnie funkcją, która usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu oraz zamieniając wewnątrz znaki kolejne odstępów lub dolnych myślników na jedną dolną spacją na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DecodeWiki(parametr,czy_nie_odstepy)...end; </syntaxhighlight> Parametry funkcji: * {{Code|parametr}} - tekst, który chcemy odkodować, * {{Code|czy_nie_odstepy}} - czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local parametr="__Oto jest znak: &quot;&#8206;&quot; i inne_znaki_w_URL: &quot;https://pl.wikibooks.org/w/index.php&#63;title&#61;Szablon:Link wewnętrzny&#38;action&#61;edit&#35;Obsługa;&quot;__"; local parametr2=html_modul.DecodeWiki(parametr,false); local parametr3=html_modul.DecodeWiki(parametr,true); </syntaxhighlight> Wynikiem działania tej funkcji jest parametr {{Code|parametr2}} i {{Code|parametr3}}, którego wartość: <syntaxhighlight lang="lua"> local parametr2="Oto jest znak: \"\" i inne znaki w URL: \"https://pl.wikibooks.org/w/index.php?title=Szablon:Link wewnętrzny&action=edit#Obsługa;\""; local parametr3="__Oto jest znak: \"\" i inne_znaki_w_URL: \"https://pl.wikibooks.org/w/index.php?title=Szablon:Link wewnętrzny&action=edit#Obsługa;\"__"; </syntaxhighlight> == {{Code|p.IsEncodedHtml}} == Funkcja sprawdza, czy można uznać, że funkcja jest zakodowana, tzn. dalej nie warto jej kodować przy pomocy funkcji: {{LzLua|mw.uri.encode}}, czy dekodować, bo już można uznać ją za odkodowaną, czyli nie trzeba stosować funkcji: {{LzLua|mw.uri.decode}}. Funkcja zwraca wartość {{Code|true}}, jak można uznać tekst za zakodowany i {{Code|false}}, gdy jest niezakodowana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.IsEncodedHtml(parametr,encode,encode_real)..end; </syntaxhighlight> Parametry funkcji: * {{Code|parametr}} - parametr do sprawdzenia - wymagany, * {{Code|encode}} - gdy jest sprawdzana tylko obecność znaku {{Code|%}}, * {{Code|encode_real}} - gdy jest sprawdzana, nie tylko obecność znaku {{Code|%}}, też czy {{Code|parametr}} jest ciągiem podporządkowanym wyrażeniu regularnemu {{Code|<nowiki>^[%w%p%s]*$</nowiki>}}. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); -- Pierwszy przykład: local parametr1="abc?edit=action"; -- Wartość zmiennej obliczona jest: czy_tak1=true, czyli parametr1 można uznać za zakodowany; local czy_tak1=html_modul.IsEncodedHtml(parametr1,true,false); -- Drugi przykład: local parametr2="a%YTbc?edit=action;"; -- Wartość zmiennej obliczona jest: czy_tak2=false; czyli parametr2można uznać, że nie jest zakodowany; local czy_tak2=html_modul.IsEncodedHtml(parametr2,true,false); </syntaxhighlight> == {{Code|p.EncodeHtml}} == Funkcja sprawdza, czy podany parametr do transformacji uznać za zakodowany, jeżeli za taki zostanie uznany, wtedy zostanie, to on zostanie potraktowany funkcją {{Code|{{sr|#p.EncodeWiki|p=Html}}}}, a jeżeli nie to zostanie wywołana funkcja: {{Code|{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|b=tak}}}} (z parametrem "WIKI"). Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EncodeHtml(parametr,encode,encode_real,czy_nie_odstepy)...end; </syntaxhighlight> Parametry funkcji: * {{Code|parametr}} - parametr do transformacji kodowania, * {{Code|encode}} i {{Code|encode_real}} - te parametry to samo oznaczają, co w funkcji: {{Code|{{sr|#p.IsEncodedHtml|p=Html}}}}, * {{Code|czy_nie_odstepy}} - to samo oznacza, co w funkcji {{Code|{{sr|#p.EncodeWiki|p=Html}}}}. {{Hr}} Przykłady pierwszy - podany tekst już zakodowany: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); -- Tekst do zakodowania; local parametr="abc___&#63;action&#61;edit&#38;section&#61;21&#35;nagłówek"; -- Tekst zostanie uznany za zakodowany, sprawdzane, czy on ma znaki "%", czyli on tego nie posiada; local parametr2=html_modul.EncodeHtml(parametr,true,false,false); </syntaxhighlight> Wynik zmiennej {{Code|parametr2}} jest ukryty pod jego wartością: <syntaxhighlight lang="lua"> -- Widzimy, że podwojone myślniki dolne zostały zamienione na pojedyncze, kody HTML zostały zamienione na znaki, a znak "&#38;", czyli "&" został zamieniony na "&amp;"; local parametr2="abc_?action=edit&amp;section=21#nagłówek"; </syntaxhighlight> {{Hr}} Przykłady drugi - podany tekst jeszcze nie zakodowany: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); -- Tekst do zakodowania; local parametr="a%YTbc___?action=edit;"; -- Tekst zostanie uznany za niezakodowany, czy on ma znaki "%", czyli on to posiada; local parametr2=html_modul.EncodeHtml(parametr,true,false,false); </syntaxhighlight> Wynik zmiennej {{Code|parametr2}} jest ukryty pod jego wartością: <syntaxhighlight lang="lua"> -- Widzimy, że znak "%" został zakodowany funkcją mw.uri.encode, podobnie tą funkcją zostały zakodowane: "?" i "="; local parametr2="a%25YTbc___%3Faction%3Dedit;"; </syntaxhighlight> == {{Code|p.DecodeHtml}} == Funkcja sprawdza, czy {{Code|parametr}}, czy można uznać za zakodowany, a jeżeli można, to on zostanie w zależnosci od parametru {{Code|spacje}}, to odpowiednio zostanie wywołana {{LzLua|mw.uri.decode}}, a następnie w zależności od parametru (opis w parametrach) zostanie wywołana odpowiednia funkcja odkoduwująca lub kodująca {{Code|wiki}}. Jeżeli ciąg rzeczywiście jest uznany za niezakodowany jest podobnie odpowiednio z tylko z wywołaniami funkcji {{Code|wiki}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DecodeHtml(parametr,spacje,encode,encode_real,czy_nie_odstepy)...end; </syntaxhighlight> Parametry funkcji: * {{Code|parametr}} - parametr do odkodowania, * {{Code|spacje}} - gdy parametr odpowiada {{Code|true}} używa funkcji {{Code|{{sr|#p.DecodeWiki|p=Html}}}}, w przeciwnym wypadku: {{Code|{{sr|#p.EncodeWiki|p=Html}}}}, ale wpierw musi zostać wywołana funkcja {{LzLua|mw.uri.decode}} w przypadku, gdy ciąg zostanie uznany za zakodowany, jak to robi funkcja {{LzLua|mw.uri.encode}}, * {{Code|encode}} i {{Code|encode_real}} - te parametry są używane przez funkcje {{Code|{{sr|#p.IsEncodedHtml|p=Html}}}}, * {{Code|czy_nie_odstepy}} - gdy ciąg został uznany za niezakodowany, wtedy to jest drugi parametr funkcji: {{Code|{{sr|#p.DecodeWiki|p=Html}}}} lub {{Code|{{sr|#p.EncodeWiki|p=Html}}}}. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); -- Parametr zawiera znaki zakodowane funkcją mw.uri.encode i kody HTML znaków; local parametr="a%25YTbc___%3Faction%3Dedit&#38;section&#61;23;"; local parametr2=html_modul.DecodeHtml(parametr,true); </syntaxhighlight> Wynik funkcji jest ukryty pod adresem: <syntaxhighlight lang="lua"> -- Funkcja została uznana za zakodowaną i odkodowano ją funkcją mw.uri.decode, dalej dwa dolne myślniki zostały zamienione na jedną spację, a kody HTML zostały zamienione na odpowiednie znaki; local parametr2="a%YTbc ?action=edit&section=23;"; </syntaxhighlight> == {{Code|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}} == Szuka atrybutów w cudzysłowach i w nich elementy {{Code|<nowiki><>&</nowiki>}} zamienia na kody dziesiętne {{Strong|HTML}}, a także znaki lewego ukośnika {{Code|<nowiki>\</nowiki>}} też na to. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik)...end; </syntaxhighlight> Parametry funkcji: * {{Code|znacznik}} - atrybut do przetwarzania, aby w nim zamienić niektóre znaki, które przeszkadzają w analizie na kody, o odpowiednim formacie, {{Strong|HTML}}. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local tekst="<span id=\"Znaki<>\\\"\">To jest zawartość</span>"; local tekst2=html_modul.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(tekst); </syntaxhighlight> Wartość tej zmiennej jest ukryta pod {{Code|tekst2}}: <syntaxhighlight lang="lua"> -- Widzimy, że został sam jeden atrybut ze znakami HTML wewnątrz; local tekst2="<span id=\"Znaki&lt;&gt;&#92;&#34;\">To jest zawartość</span>"; </syntaxhighlight> == {{Code|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)}} == Zamienia kody {{Strong|HTML}}, tzn.: {{Code|{{Nowiki|&lt;}}}}, {{Code|{{Nowiki|&gt;}}}} i {{Code|{{Nowiki|&amp;}}}}, na odpowiednio znaki, a także elementy {{Code|{{Nowiki|&#92;&#34;}}}} na {{Code|<nowiki>\"</nowiki>}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)...end; </syntaxhighlight> Parametry funkcji: * {{Code|value}} - parametr do transformacji niektórych kodów {{Strong|HTML}} na znaki. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local tekst="&lt;a href=\"/wiki/Strona?tytan1=1&amp;tytan2=2\" id=\"Strona:&#92;&#34;nazwa&#92;&#34;\"&gt;Zawartość znacznika&lt;/a&gt;"; local tekst2=html_modul.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(tekst); </syntaxhighlight> Otrzymana zawartość jest pod {{Code|tekst2}}: <syntaxhighlight lang="lua"> -- Widzimy, że kody odpowiednie HTML, tzn.: "&lt;", "&gt;" i "&amp;" zostały zamienione na odpowwiednie znaki; local tekst2="<a href=\"/wiki/Strona?tytan1=1&tytan2=2\" id=\"Strona:\\\"nazwa\\\"\">Zawartość znacznika</a>"; </syntaxhighlight> == {{Code|p["NagłówekStronyAdresu"]}} == Funkcja wydziela nagłówek z adresu strony, funkcja ma własną tabelę buforową nazw. Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["NagłówekStronyAdresu"]=function(frame,czy_nie_dolne_myslniki,tabela_nazw_adresu)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki funkcji tablicy transportu, * {{Code|czy_nie_dolne_myslniki}} - gdy {{Code|true}}, jeśli w nagłówku nie ma prawa być dolnych myślników, * {{Code|tabela_nazw_adresu}} - tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}. Funkcja usuwa zbędne odstępy i dolne myślniki na końcach nagłówka, i powtarzające się znaki będące odstępami lub dolnymi myślnikami są zastępowane przez jedną spację, gdy {{Code|czy_nie_dolne_myslniki}} równa jest wartości odpowiadającej {{Code|true}}, w przeciwnym wypadku zamieniana jest ona na jeden dolny myślnik. Parametry funkcji ramki parametry {{Code|frame}}: * {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}} - nazwa jednostki (strony), tzn. jego adres, * {{Code|czy_nie_dolne_myslniki}} (parametr funkcji), {{Code|2}} lub {{Code|z nie dolnymi z myślnikami}} - znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji. Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}}. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local strona="https://pl.wikibooks.org/wiki/Strona ___ główna ? action____=____edit ____&____ section = 2 # ____ Nagłówek____________strony "; local tabela_nazw_adresu={}; -- Równoważne: local naglowek=html_modul["NagłówekStronyAdresu"](strona,true,tabela_nazw_adresu); local naglowek=html_modul["NagłówekStronyAdresu"]({strona=strona,["z nie dolnymi z myślnikami"]=true,},nil,tabela_nazw_adresu); </syntaxhighlight> Wartość nagłówka jest w zmiennej: <syntaxhighlight lang="lua"> -- Wydzielono z adresu strony, nagłówek usuwając z niego myślniki dolne i trimując zawartość; local naglowek="Nagłówek strony"; </syntaxhighlight> == {{Code|p["ParametryStronyAdresu"]}} == Funkcja wydziela parametry z adresu strony, funkcja ma własną tabelę buforową nazw. Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ParametryStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki funkcji tablicy transportu, * {{Code|czy_naprawiaj}} - parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów adresu, wydzieloną z pełnego adresu strony, * {{Code|tabela_nazw_adresu}} - tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}. Parametry funkcji ramki parametry {{Code|frame}}: * {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}} - nazwa jednostki (strony), tzn. jego adres, * {{Code|czy_naprawiaj}} (parametr funkcji), {{Code|2}} lub {{Code|czy naprawiać}} - znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji. Kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, są w kolejności, w jakim te one przedstawiono. Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}}. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local strona="https://pl.wikibooks.org/wiki/Strona ___ główna ? action____=____edit ____&____ section = 2 # ____ Nagłówek____________strony "; local tabela_nazw_adresu={}; -- Równoważne: local parametry=html_modul["ParametryStronyAdresu"](strona,true,tabela_nazw_adresu); local parametry=html_modul["ParametryStronyAdresu"]({strona=strona,["czy naprawiać"]=true,},nil,tabela_nazw_adresu); </syntaxhighlight> Wartość nagłówka jest w zmiennej: <syntaxhighlight lang="lua"> -- Wydzielono z adresu strony parametry, usuwając z niego zbędne odstępy i myślniki dolne; local parametry="action=edit&section=2"; </syntaxhighlight> == {{Code|p["NazwaStronyAdresu"]}} == Funkcja wydziela nazwę strony z adresu strony, funkcja ma własną tabelę buforową nazw. Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["NazwaStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki funkcji tablicy transportu, * {{Code|czy_naprawiaj}} - parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z adresu strony, bez parametrów i nagłówka, wydzieloną z pełnego adresu strony, * {{Code|tabela_nazw_adresu}} - tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}. Parametry funkcji ramki parametry {{Code|frame}}: * {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}} - nazwa jednostki (strony), tzn. jego adres, * {{Code|czy_naprawiaj}} (parametr funkcji), {{Code|2}} lub {{Code|czy naprawiać}} - znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji. Kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, są w kolejności, w jakim te one przedstawiono. Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}}. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local strona="https://pl.wikibooks.org/wiki/Strona ___ główna ? action____=____edit ____&____ section = 2 # ____ Nagłówek____________strony "; local tabela_nazw_adresu={}; -- Równoważne: local parametry=html_modul["NazwaStronyAdresu"](strona,true,tabela_nazw_adresu); local nazwa_strony=html_modul["NazwaStronyAdresu"]({strona=strona,["czy naprawiać"]=true,},nil,tabela_nazw_adresu); </syntaxhighlight> Wartość nagłówka jest w zmiennej: <syntaxhighlight lang="lua"> -- Wydzielono z adresu strony nazwę strony adresu, usuwając z niego zbędne odstępy i myślniki dolne; local nazwa_strony="https://pl.wikibooks.org/wiki/Strona_główna"; </syntaxhighlight> == {{Code|p["NazwaStronyZParametrówStronyAdresu"]}} == Funkcja wydziela nazwę strony z parametrów adresu strony. Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}. <syntaxhighlight lang="lua"> p["NazwaStronyZParametrówStronyAdresu"]=function(frame,czy_naprawiaj)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki funkcji tablicy transportu, * {{Code|czy_naprawiaj}} - parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów strony adresu, i czy zamieniać je na pojedyncze spacje wewnątrz nazwy artykułu wydzieloną z parametrów strony. Parametry funkcji ramki parametry {{Code|frame}}: * {{Code|1}} lub {{Code|parametry}} - nazwa jednostki (strony), tzn. jego adres, * {{Code|czy_naprawiaj}} (parametr funkcji), {{Code|2}} lub {{Code|czy naprawiać}} - znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji. Kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, są w kolejności, w jakim te one przedstawiono. Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}} lub {{Code|parametry}}. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local strona="title=Strona ___ główna & action____=____edit ____&____ section = 2 # ____ Nagłówek____________strony "; -- Równoważne: local parametry=html_modul["NazwaStronyZParametrówStronyAdresu"](strona,true); local nazwa_strony=html_modul["NazwaStronyZParametrówStronyAdresu"]({parametry=strona,["czy naprawiać"]=true,},nil); </syntaxhighlight> Wartość nagłówka jest w zmiennej: <syntaxhighlight lang="lua"> -- Wydzielono z adresu strony nazwę artykułu, usuwając z niego zbędne odstępy i myślniki dolne; local nazwa_strony="Strona główna"; </syntaxhighlight> == {{Code|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}} == Funkcja poprawia pełny adres strony, rozdzielając ją na części, a później łącząc. Funkcja ma własną tabelę buforową nazw. Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki funkcji tablicy transportu, * {{Code|czy_naprawiaj}} - parametr przedstawiający, czy ma naprawiać pełny adres strony, działając w sposób specyficzny w zależności od funkcji, która operuje na jej częściach, wykorzystując funkcje, które są napisane w linii zaraz poniżej, * {{Code|tabela_nazw_adresu}} - tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}. Parametry funkcji ramki parametry {{Code|frame}}: * {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}} - nazwa jednostki (strony), tzn. jego adres, * {{Code|czy_naprawiaj}} (parametr funkcji), {{Code|2}} lub {{Code|czy naprawiać}} - znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji. Kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, są w kolejności, w jakim te one przedstawiono. Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}}. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local strona="https://pl.wikibooks.org/wiki/Strona ___ główna ? action____=____edit ____&____ section = 2 # ____ Nagłówek____________strony "; local tabela_nazw_adresu={}; -- Równoważne: local parametry=html_modul["PoprawAdresNagłówkaOrazParametrówStronyAdresu"](strona,true,tabela_nazw_adresu); local adres=html_modul["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]({strona=strona,["czy naprawiać"]=true,},nil,tabela_nazw_adresu); </syntaxhighlight> Wartość pełnego adresu strony poprawiona jest w zmiennej: <syntaxhighlight lang="lua"> -- Wydzielono z pełnego adresu strony adres, parametry i nagłówek, naprawione i złączone ze sobą w pełny poprawiony adres; local adres="https://pl.wikibooks.org/wiki/Strona_główna?action=edit&section=2#Nagłówek strony"; </syntaxhighlight> == {{Code|p.URLStrona}} == Funkcja z adresu '''URL''' wydziela nazwę serwera i nazwę strony. On nie może zawierać w sobie protokołu, tylko musi zaczynać od {{Code|<nowiki>//</nowiki>}}. Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.URLStrona(frame)...end; </syntaxhighlight> Parametry ramki: * {{Code|1}} lub {{Code|url}} - adres strony, * {{Code|2}} lub {{Code|ukośnik}} - czy do nazwy strony ma wliczać ukośnik. Kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, są w kolejności, w jakim te one przedstawiono. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"): local url="//pl.wikibooks.org/wiki/Strona_artykułu"; local serwer,nazwa=html_modul.URLStrona{url=url,["ukośnik"]=true,}; </syntaxhighlight> Wartości zmiennych kryją się pod: <syntaxhighlight lang="lua"> -- Widzimy, że nazwa serwera jest bez prawych ukośników; local serwer="pl.wikibooks.org"; -- Nazwa strony zaczyna się bez ukośnika, bo powiedzieliśmy funkcji, by nie brał prawych ukośników, które są na początku nazwy strony, bez nazwy serwera i protokołu, ale w sobie może mieć on, ale nie musi; local nazwa="wiki/Strona_artykułu"; -- Gdyby było ["ukośnik"]=false, to wtedy otrzymalibyśmy inny wynik, czyli: local nazwa="/wiki/Strona_artykułu"; </syntaxhighlight> == {{Code|p["UrlBezProtokołu"]}} == Funkcja adresowi z protokołem usuwa to właśnie, a jak podamy adres „mail”, to podaje nazwę tego adresu, bez niego. Drugą zwracaną nazwą jest nazwa protokołu,a jak się nie da go wyznaczyć, to funkcja zwraca wartość {{Code|nil}}. Trzecia wartość, to numer sposoby, a jeżeli żaden sposób nie pasuje, to ta wartość jest {{Code|-1}}, a gdy adres mail {{Code|1}}, dla adresu z protokołem {{Code|2}}, a dla adresu bez protokołu {{Code|3}}. Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["UrlBezProtokołu"]=function(frame)...end; </syntaxhighlight> Parametry ramki: * {{Code|1}} lub {{Code|url}} - adres strony, ewentualnie z opcjonalnym protokołem. Kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, są w kolejności, w jakim te one przedstawiono. Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}} lub {{Code|url}}. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local mail="użytkownik@skrzynka.org"; -- Równoważnie: local adres1,protokol1,sposob1=html_modul["UrlBezProtokołu"](mail); local adres1,protokol1,sposob1=html_modul["UrlBezProtokołu"]{url=mail,}; --- local url="https://pl.wikibooks.org/wiki/Strona"; -- Równoważnie: local adres2,protokol2,sposob2=html_modul["UrlBezProtokołu"](url); local adres2,protokol2,sposob2=html_modul["UrlBezProtokołu"]{url=url,}; --- local url="//pl.wikibooks.org/wiki/Strona"; -- Równoważnie: local adres3,protokol3,sposob3=html_modul["UrlBezProtokołu"](url); local adres3,protokol3,sposob3=html_modul["UrlBezProtokołu"]{url=url,}; --- local url="pl.wikibooks.org/wiki/Strona"; -- Równoważnie: local adres4,protokol4,sposob4=html_modul["UrlBezProtokołu"](url); local adres4,protokol4,sposob4=html_modul["UrlBezProtokołu"]{url=url,}; </syntaxhighlight> Wyniki otrzymane z powyższych przykładów są: <syntaxhighlight lang="lua"> local adres1,protokol1,sposob1="//skrzynka.org","mail",1; local adres2,protokol2,sposob2="//pl.wikibooks.org/wiki/Strona","https",2; local adres3,protokol3,sposob3="//pl.wikibooks.org/wiki/Strona",nil,3; local adres4,protokol4,sposob4="//pl.wikibooks.org/wiki/Strona",nil,-1; </syntaxhighlight> == {{Code|p.DecodeKoduHTMLZnaku}} == Zamienia kody {{Strong|HTML}}, tzn. literowe (ogólny wzór {{Code|<nowiki>&(%a+);</nowiki>}}), dziesiętne (ogólny wzór {{Code|<nowiki>&#(%d+);</nowiki>}}) i szesnastkowe (ogólny wzór {{Code|<nowiki>&#x(%x+);</nowiki>}}) na odpowiednie znaki. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DecodeKoduHTMLZnaku(tekst)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} - tekst do zamienienia z dziesiętnymi, szesnastkowymi i literowymi kodami {{Strong|HTML}} na odpowiednie znaki. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); -- Tekst z kodami HTML: literowymi, dziesiętnymi i szesnastkowymi; local tekst="Oto jest link: &#x5B;&#x5B;Strona&#124;Nazwa linku&#93;&#x5D;, a w nim spacje niełamliwe&nbsp;i inne znaki: z alfabetu greckiego jak: &alpha;&Alpha;&beta;&Beta;&gamma;&Gamma;&delta;&Delta;&epsilon;&Epsilon;&zeta;&Zeta;&eta;&Eta;&theta;&Theta;&iota;&Iota;&kappa;&Kappa;&lambda;&Lambda;&mu;&Mu;&nu;&Nu;&xi;&Xi;&omicron;&Omicron;&pi;&Pi;&rho;&Rho;&sigma;&Sigma;&tau;&Tau;&upsilon;&Upsilon;&phi;&Phi;&chi;&Chi;&psi;&Psi;&omega;&Omega;"; -- Wywołanie funkcji odkodujący kody HTML; local tekst2=html_modul.DecodeKoduHTMLZnaku(tekst); </syntaxhighlight> Otrzymany wynik jest pod zmienną: <syntaxhighlight lang="lua"> -- Widzimy, że tekst został zdekodowany ze znaków HTML; local tekst2="Oto jest link: [[Strona|Nazwa linku]], a w nim spacje niełamliwe i inne znaki: z alfabetu greckiego jak: αΑβΒγΓδΔεΕζΖηΗθΘιΙκΚλΛμΜνΝξΞοΟπΠρΡσΣτΤυΥφΦχΧψΨωΩ"; </syntaxhighlight> == {{Code|p.ZamianaEncodeTekst}} == Adres strony dekoduje funkcją: {{LzLua|mw.uri.decode}}, następnie koduje, jeszcze więcej niż było na samym początku, według: {{LzLua|w.uri.encode}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZamianaEncodeTekst(tekst)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} - tekst do odkodowania i zakodowania jeszcze więcej niż było na początku zakodowane. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local tekst="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obs%C5%82uga"; local tekst2=html_modul.ZamianaEncodeTekst(tekst); </syntaxhighlight> Wynikiem funkcji, co kryje się pod zmienną {{Code|tekst2}}: <syntaxhighlight lang="lua"> local tekst2="https%3A%2F%2Fpl.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DSzablon%3ALink_wewn%C4%99trzny%26action%3Dedit%23Obs%C5%82uga"; </syntaxhighlight> == {{Code|p.ZamianaEncodeNaPodstawieWzoruTekstu}} == Funkcja wyszukuje tekst do zamiany i działa na niego funkcją: {{Code|{{sr|#p.ZamianaEncodeTekst|p=Html}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,wzor)...end; </syntaxhighlight> Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); -- Tekst nie do końca zakodowany wydzielonego według poniższego wzoru; local tekst="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obsługa"; -- Wzór, który wydziela części do kodowania jeszcze bardziej niż były na samym początku; local wzor="[^/%?%=&:%#]+"; -- Wywołanie funkcji kodującej; local tekst2=html_modul.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,wzor); </syntaxhighlight> Wynikiem funkcji, co kryje się pod zmienną: <syntaxhighlight lang="lua"> -- Zakodowało jeszcze więcej niż na samym początku było zakodowane; local tekst2="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obs%C5%82uga"; </syntaxhighlight> == {{Code|p.StronaParametryIdentyfikacjaAdresuHtml}} == Funkcja z całkowitego adresu składający się z adresu właściwego, parametrów i nagłówka, rozdzielane jest na trzy części, z których się składa. Funkcja sprawdza, czy jakikolwiek kody {{Strong|HTML}} występują w pełnym adresie strony, jeżeli są to przedtem koduje jeszcze lepiej kody znaków {{Code|<nowiki>#</nowiki>}}, przy pomocy funkcji: {{Code|{{sr|#p.EncodeHashKoduHtmlTekstu|p=Html}}}}, a później w kodach {{Strong|HTML}} znak {{Code|<nowiki>#</nowiki>}} jest zamieniany na kod literowy {{Strong|HTML}}, czyli: {{Code|{{Nowiki|&num;}}}}, funkcją: {{Code|{{sr|#p.EncodeTempHashKoduHtmlTekstu|p=Html}}}} (jeżeli w adresie kody istnieją), wtedy cos powstaje w rodzaju dla kodu dziesietnego: {{Code|<nowiki>&&num;(%d+);</nowiki>}}, i szesnastkowego: {{Code|<nowiki>&&num;x(%x+);</nowiki>}} - gdzie w nich {{Code|<nowiki>#</nowiki>}} został zamieniony na {{Code|{{Nowiki|&num;}}}}, które są przedstawione według wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Funkcja rozdziela to na trzy części, a później odkodowuje każdą część funkcją: {{Code|{{sr|#p.DecodeTempHashKoduHtmlTekstu|p=Html}}}} (jeżeli w adresie kody w ogóle istniały), i podobnie później: {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}} (jeżeli kody znaku: {{Code|<nowiki>#</nowiki>}}, były wcześniej). Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.StronaParametryIdentyfikacjaAdresuHtml(adres)...end; </syntaxhighlight> Parametry funkcji: * {{Code|adres}} - adres do potrzelenia na trzy części. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local adres="https://pl.wikibooks.org/wiki/Strona&#32;główna&num;&#x23;&#35;To_nie_jest nagłówek?action=edit&section=2#Nagłówek strony"; -- Adresstrony jedynie rozkładaa się na: "strona", "parametry" i "nagłówek"; local strona,parametry,naglowek=html_modul.StronaParametryIdentyfikacjaAdresuHtml(adres); </syntaxhighlight> Otrzymane wartości tych zmiennych kryją się pod adresami: <syntaxhighlight lang="lua"> local strona,parametry,naglowek="https://pl.wikibooks.org/wiki/Strona&#32;główna&#35;&#35;&#35;To_nie_jest nagłówek","action=edit&section=2","Nagłówek strony",3; </syntaxhighlight> Funkcja zwraca trzy wartości, tzn. adres właściwy (bez parametrów i nagłówka), parametry (używane jako dodatek do adresów przy formułowaniu formularzy) i nagłówek (który jest adresem na stronie do odpowiedniego elementu o danym atrybucie: {{Code|id}}). == {{Code|p.TworzenieAdresuHtml}} == Funkcja łączy, stronę, parametry i nagłówek strony, w pełną nazwę strony (adresu), dalej jest uruchamiana funkcja ddekodująca ciagi znakowe: {{Code|{{Nowiki|&amp;&num;}}}}. Funkcja wykorzystuje do dekodowania tego {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.TworzenieAdresuHtml(strona,parametry,naglowek)...end; </syntaxhighlight> Parametry funkcji: * {{Code|strona}} - nromalny adres strony, bez parametrów i nagłówka, * {{Code|parametry}} - parametry strony w formacie {{Code|nazwa{{=}}wartość}} oddzielone od siebie znakiem {{Code|<nowiki>&</nowiki>}}, * {{Code|nagłówek}} - nagłówek linkujący do {{Code|id}} jakiegos elementyna stronie, Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local strona,parametry,naglowek,ile="https://pl.wikibooks.org/wiki/Strona&#32;główna&num;&#35;&#x23;To_nie_jest nagłówek","action=edit&section=2","Nagłówek strony",3; local adres=html_modul.TworzenieAdresuHtml(strona,parametry,naglowek); </syntaxhighlight> Otrzymany pełny pojedynczy adres strony, z normalnym adresem strony z parametrami i nagłówkiem, jest ukryta: <syntaxhighlight lang="lua"> local adres="https://pl.wikibooks.org/wiki/Strona&#32;główna&#35;&#35;&#35;To_nie_jest nagłówek?action=edit&section=2#Nagłówek strony"; </syntaxhighlight> Funkcja zwraca całkowity adres z adresem właściwym, parametrami (po {{Code|<nowiki>?</nowiki>}}, jeżeli po nim występują wartości przyrównane nazwą zmiennych {{Strong|HTML}}) i nagłówkiem (po {{Code|<nowiki>#</nowiki>}}). == {{Code|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}} == Pełny adres strony, bezprotokolarny (lub protokolarny, jeżeli rozdzielimy, w pierwszej funkcji anonimowej w tej nagłówku, na protokół i adres bezprotokolarny, czyli na dwie części, zrobimy operacje, a później je złączymy w nim), linków zewnętrznych lub wewnętrznych, z adresem właściwym, parametrami i nagłówkiem strony, po podziale na je trzy części funkcją {{Code|{{sr|#p.StronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}, następnie na każdą z tych elementów działamy odpowiednimi funkcjami, a potem ich wyniki łączymy w pełny adres strony funkcją {{Code|{{sr|#p.TworzenieAdresuHtml|p=Html}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,funkcja_strona,funkcja_parametry,funkcja_naglowek)...end; </syntaxhighlight> Parametry funkcji: * {{Code|adres}} - pełny adres do przetworzenia, * {{Code|funkcja_strona}} - funkcja, którą działamy na właściwy adres strony, bez parametrów i nagłówka, * {{Code|funkcja_parametry}} - funkcja, którą działamy na parametry adresu strony, * {{Code|funkcja_naglowek}} - funkcja, którą działamy na nagłówek strony adresu. Przykład takiego wywołania: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local function EncodeParametryURL(a,b,c,funkcja_operacji) return a..funkcja_operacji(b).."="..funkcja_operacji(c); end; local function OperacjeHtml(adres,funkcja_operacji) adres=mw.ustring.gsub(adres,"^(%??)([^&=]*)=([^&]*)",function(a,b,c)return EncodeParametryURL(a,b,c,funkcja_operacji);end); adres=mw.ustring.gsub(adres,"(&)([^&=]*)=([^&]*)",function(a,b,c)return EncodeParametryURL(a,b,c,funkcja_operacji);end); return adres; end; local funkcja_operacji={ [1]=function(tekst) return p.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,"[^/]+",p.ZamianaEncodeTekst); end, [2]=function(tekst) return p.ZamianaEncodeTekst(tekst); end, [3]=function(tekst) return p.ZamianaEncodeTekst(tekst); end, }; return html_modul.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres, -- Funkcja: funkcja_strona; function(strona,Func) strona=Func(strona); return strona; end, -- Funkcja: funkcja_parametry; OperacjeHtml, -- Funkcja: funkcja_naglowek; function(naglowek,Func) naglowek=Func(naglowek); return naglowek; end, funkcja_operacji ); </syntaxhighlight> == {{Code|p.EncodeParametryURL}} == Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}. Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale. Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.ZamianaEncodeTekst|p=Html}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.EncodeParametryURL(adres,w_adresie,funkcja_strona,funkcja_naglowek)...end; </syntaxhighlight> Parametry funkcji: * {{Code|adres}} - pełny adres strony z parametrami i nagłówkiem, * {{Code|w_adresie}} - czy rozpatrywać cały adres, a nie tylko parametry, * {{Code|funkcja_strona}} - funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka, * {{Code|funkcja_naglowek}} - funkcja, którą działamy na nagłówek. Przykłady takiego wywołania: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local adres="//pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obsługa"; local adres2=html_modul.EncodeParametryURL(adres,true, function(strona,Func) strona=Func(strona); return strona; end, function(naglowek,Func) naglowek=Func(naglowek); return naglowek; end); </syntaxhighlight> Wartość zmiennej {{Code|adres2}} jest w wartości: <syntaxhighlight lang="lua"> local adres2="//pl.wikibooks.org/w/index.php?title=Szablon%3ALink_wewn%C4%99trzny&action=edit#Obs%C5%82uga"; </syntaxhighlight> == {{Code|p.EncodeZaawansowanyParametryURL}} == Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}. Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale. Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, ale przed nim wywoływana ajest funkcja {{LzLua|mw.uri.decode}}, a po nim {{LzLua|mw.uri.encode}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EncodeZaawansowanyParametryURL(adres,w_adresie,funkcja_strona,funkcja_naglowek)...end; </syntaxhighlight> Parametry funkcji: * {{Code|adres}} - pełny adres strony z parametrami i nagłówkiem, * {{Code|w_adresie}} - czy rozpatrywać cały adres, a nie tylko parametry, * {{Code|funkcja_strona}} - funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka, * {{Code|funkcja_naglowek}} - funkcja, którą działamy na nagłówek. Przykłady takiego wywołania: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local adres="Szablon:Link_wewnętrzny?action=edit#Obsługa?"; local adres2=html_modul.EncodeZaawansowanyParametryURL(adres,true, function(strona,Func) strona=Func(strona); return strona; end, function(naglowek,Func) naglowek=Func(naglowek); return naglowek; end); </syntaxhighlight> Wartość zmiennej {{Code|adres2}} jest w wartości: <syntaxhighlight lang="lua"> local adres2="Szablon%3ALink_wewn%C4%99trzny?action=edit#Obs%C5%82uga%26%2363%3B"; </syntaxhighlight> == {{Code|p.EncodeParametryHtml}} == Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}. Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale. Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.EncodeHtml|p=Html}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EncodeParametryHtml(parametr,w_adresie,funkcja_strona,funkcja_naglowek)...end; </syntaxhighlight> Parametry funkcji: * {{Code|adres}} - pełny adres strony z parametrami i nagłówkiem, * {{Code|w_adresie}} - czy rozpatrywać cały adres, a nie tylko parametry, * {{Code|funkcja_strona}} - funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka, * {{Code|funkcja_naglowek}} - funkcja, którą działamy na nagłówek. Przykłady takiego wywołania: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local adres="Szablon:Link_wewnętrzny?action=edit#Obsługa?"; local adres2=html_modul.EncodeParametryHtml(adres,true, function(strona,Func) strona=Func(strona); return strona; end, function(naglowek,Func) naglowek=Func(naglowek); return naglowek; end); </syntaxhighlight> Wartość zmiennej {{Code|adres2}} jest w wartości: <syntaxhighlight lang="lua"> local adres2="Szablon:Link_wewn%C4%99trzny?action=edit#Obs%C5%82uga%3F"; </syntaxhighlight> == {{Code|p.EncodeZaawansowanyParametryHtml}} == Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}. Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale. Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.EncodePodstawoweHtmlTekstu|p=Html}}}}, a przed nim wywoływana jest {{LzLua|mw.uri.decode}}, a po nim jeżeli jest włączone kodowanie w zmiennej drugiej funkcji, wtedy {{LzLua|mw.uri.encode}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EncodeZaawansowanyParametryHtml(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end; </syntaxhighlight> Parametry funkcji: * {{Code|adres}} - pełny adres strony z parametrami i nagłówkiem, * {{Code|z_kodowaniem}} - czy ostateczny nagłówek ma być zakodowany, * {{Code|w_adresie}} - czy rozpatrywać cały adres, a nie tylko parametry, * {{Code|funkcja_strona}} - funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka, * {{Code|funkcja_naglowek}} - funkcja, którą działamy na nagłówek. Przykłady takiego wywołania: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local adres="Szablon:Link_wewnętrzny?action=edit#Obsługa?"; local adres2=html_modul.EncodeZaawansowanyParametryHtml(adres,true,true, function(strona,Func) strona=Func(strona); return strona; end, function(naglowek,Func) naglowek=Func(naglowek); return naglowek; end); </syntaxhighlight> Wartość zmiennej {{Code|adres2}} jest w wartości: <syntaxhighlight lang="lua"> local adres2="Szablon%3ALink_wewn%C4%99trzny?action=edit#Obs%C5%82uga%26%2363%3B"; </syntaxhighlight> == {{Code|p.EncodeHashKoduHtmlTekstu}} == Funkcja koduje kod {{Strong|HTML}} znaku {{Code|<nowiki>#</nowiki>}}, czyli {{Code|{{Nowiki|&num;}}}}, {{Code|{{Nowiki|&#35;}}}} i {{Code|{{Nowiki|&#x23;}}}}. Te wszystkie kody funkcja zamienia je z każdnych na kod: {{Code|{{Nowiki|&amp;num;}}}}. Funkcja zwraca przetworzony tekst, ze zmienną {{Code|ile}} mówiącej ile jest możliwych kodów na stronie, także z {{Code|ile2}} wskazującej, ile jest kodów na stronie rozwazanego znaku. Funkcja używana, gdy nie chcemy, by dodatkowe znaki {{Code|<nowiki>#</nowiki>}} przeskadzały na rozkład adresu strony na właściwy adres, parametry i nagłówek strony, co po rozkładzie wywoływana jest jego też jego funkcja odwrotna {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}}, a tak powstałe znaki {{Code|{{Nowiki|&#35;}}}} ze wszystkich tych kodów {{Code|<nowiki>#</nowiki>}} według pewnych funkcji modułu {{Code|{{ld2|Html}}}}, że one nie zostaną odkodowane, bo są one pomijane. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EncodeHashKoduHtmlTekstu(tekst)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} - tekst do przetworzenia. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); -- Kody do zamienienia local tekst="&num;, &#35; i &#x23;"; -- Przetwarzanie tekstu local tekst2,ile,ile2=html_modul.EncodeHashKoduHtmlTekstu(tekst); </syntaxhighlight> Wynik jest pod zmienną: <syntaxhighlight lang="lua"> -- Wszystkie możliwe warianty funkcja zamieniła na to samo, czyli na: "&amp;num;" kodu HTML "&num;" dla znaku "#"; local tekst2,ile,ile2="&amp;num;, &amp;num; i &amp;num;",3,3; </syntaxhighlight> == {{Code|p.DecodeHashKoduHtmlTekstu}} == Jeżeli dokonano zamiany możliwych kodów {{Code|{{Nowiki|&num;}}}}, {{Code|{{Nowiki|&#35;}}}} i {{Code|{{Nowiki|&#x23;}}}} na {{Code|{{Nowiki|&num;num}}}}, wtedy druga zmienna jest większa od zera, wtedy możliwa jest tego zamiana na kod {{Code|{{Nowiki|&#35;}}}} kodu {{Code|{{Nowiki|&num;num}}}}, używając tej funkcji. Funkcja używana, gdy właściwy adres, parametry i nagłówek strony zostały po rozłączeniu na te części z pełnego adresu strony, wraz z innymi funkcjami odkodowującymi znaki niektóre {{Strong|HTML}}, oraz jeżeli ciało jej wersji prostej została wywołana wcześniej. Jest to odwrotność funkcji {{Code|{{sr|#p.EncodeHashKoduHtmlTekstu|p=Html}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DecodeHashKoduHtmlTekstu(tekst,ile)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} - tekst do przetworzenia, * {{Code|ile}} - {{Code|<nowiki>ile>0</nowiki>}}, jeżeli dokonano możliwych zamian kodów znaku {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|&num;num}}}}. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); -- Zamienione wcześniej kody: tekstu "&num;, &#35; i &#x23;", kolejno na "&amp;num;"; local tekst="&amp;num;, &amp;num; i &amp;num;"; -- Odkodowanie znaków "&amp;num;" w tekście; local tekst2=html_modul.DecodeHashKoduHtmlTekstu(tekst,3); </syntaxhighlight> Wynik jest ukryty pod zmienną: <syntaxhighlight lang="lua"> local tekst2="&#35;, &#35; i &#35;"; </syntaxhighlight> == {{Code|p.EncodeTempHashKoduHtmlTekstu}} == Jeżeli mamy jakieś kody {{Strong|HTML}}, to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|&num;}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EncodeTempHashKoduHtmlTekstu(tekst)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} - tekst do przetworzenia. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); -- Mamy tutaj kody HTML znaku: "#", czyli: "&#35;" i "&#x23;" oraz jeden od spacji: "&#32;";, a tam "#"zamieniamy na "&num;"; local tekst="https://pl.wikibooks.org/wiki/Strona&#32;główna&#35;&#35;&#x23;To_nie_jest nagłówek?action=edit&section=2#Nagłówek strony"; -- Otrzymamy przetworzony tekst oraz ile uzyskamy znaków z kodem HTML dziesiętnym "ile1" i szesnastkowym "ile2"; local tekst2,ile1,ile2=html_modul.EncodeTempHashKoduHtmlTekstu(tekst); </syntaxhighlight> Wynik tego jest pod zmienną: <syntaxhighlight lang="lua"> local tekst2,ile1,ile2="https://pl.wikibooks.org/wiki/Strona&&num;32;główna&&num;35;&&num;35;&&num;x23;To_nie_jest nagłówek?action=edit&section=2#Nagłówek strony",3,1; </syntaxhighlight> == {{Code|p.DecodeTempHashKoduHtmlTekstu}} == Jeżeli mamy jakieś kody {{Strong|HTML}}, to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|&num;}}}}. One tak zostały zamienione funkcją {{Code|{{sr|#p.EncodeTempHashKoduHtmlTekstu|p=Html}}}}. Po rozłożeniu na trzy części pełnego adresu strony, tzn. na właściwy adres, parametry i nagłówek strony, możemy wywołać dla każdej z nich tę funkcję, wykonując operację odwrotną. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DecodeTempHashKoduHtmlTekstu(tekst,ile1,ile2)...end; </syntaxhighlight> Parametry zwykłe funkcji: * {{Code|tekst}} - tekst do przetworzenia i po rozdzieleniu na trzy części, * {{Code|ile1}} - ile jest przetworzonych kodów dziesietnych prez funkcje do rozważanej prostej, * {{Code|ile2}} - ile jest przetworzonych kodów szesnastkowych przez funkcją do rozważanej prostej. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); -- Mamy tutaj kody HTML znaku: "#", czyli: "&&num;35;" i "&&num;x23;" oraz jeden od spacji: "&&num;32;";, a tam "#"zamieniamy na "&num;"; local tekst="https://pl.wikibooks.org/wiki/Strona&&num;32;główna&&num;35;&&num;35;&&num;x23;To_nie_jest nagłówek?action=edit&section=2#Nagłówek strony"; -- Otrzymamy przetworzony tekst, do którego wsadzamy ile uzyskamy znaków z kodem HTML dziesiętnym "ile1" i szesnastkowym "ile2" w wywołaniu local tekst,ile1,ile2=p.EncodeTempHashKoduHtmlTekstu(tekst); local tekst2=html_modul.EncodeTempHashKoduHtmlTekstu(tekst,3,1); </syntaxhighlight> Wynik tego jest pod zmienną: <syntaxhighlight lang="lua"> local tekst2="https://pl.wikibooks.org/wiki/Strona&#32;główna&#35;&#35;&#x23;To_nie_jest nagłówek?action=edit&section=2#Nagłówek strony"; </syntaxhighlight> == {{Code|p.AdresDomniemanieBezProtokolarnyEncodeURL}} == Funkcja domyślnie koduje adres bezprotokolarny, a z podaniem drugiej wartości {{Code|true}} protokolarny. Funkcja wykorzystuje funkcję {{Code|{{sr|#p.ZamianaEncodeNaPodstawieWzoruTekstu|p=Html}}}}. A jeżeli druga wartość odpowiada prawdziwości, to korzystamy z {{Code|{{sr|#p["UrlBezProtokołu"]|p=Html}}}} na rozkład na adres bezprotokolarny i protokół. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AdresDomniemanieBezProtokolarnyEncodeURL(adres,protokolarny)...end; </syntaxhighlight> Parametry funkcji: * {{Code|adres}} - adres do zakodowania, * {{Code|protokolarny}} - czy ma rozkładać adres na nazwę strony i protokół. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); -- Adres protokonalny; local adres11="https://pl.wikibooks.org/wiki/Strona_główna?action=edit&section=2#Nagłówek strony"; local adres12=html_modul.AdresDomniemanieBezProtokolarnyEncodeURL(adres11,true); -- Adres bezprotokonalny; local adres21="//pl.wikibooks.org/wiki/Strona_główna?action=edit&section=2#Nagłówek strony"; local adres22=html_modul.AdresDomniemanieBezProtokolarnyEncodeURL(adres21,false); </syntaxhighlight> Wynik wartości {{Code|adres12}} i {{Code|adres12}}: <syntaxhighlight lang="lua"> -- Zakodowany adres z protokołem local adres12="https://pl.wikibooks.org/wiki/Strona_g%C5%82%C3%B3wna?action=edit&section=2#Nag%C5%82%C3%B3wek%20strony"; -- Zakodowany adres bez protokołu local adres22="//pl.wikibooks.org/wiki/Strona_g%C5%82%C3%B3wna?action=edit&section=2#Nag%C5%82%C3%B3wek%20strony"; </syntaxhighlight> == {{Code|p.UriEncode}} == Funkcja do kodowania adresów tylko z protokołem, wartości bez protokołu nie obsługuje. Wykorzystuje {{Code|{{sr|#p.AdresDomniemanieBezProtokolarnyEncodeURL|p=Html}}}}. Do wyszukiwania adresów jest brana funkcja {{Code|{{sr|#p.PobierzParametr|p=Html}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UriEncode(frame)...end; </syntaxhighlight> Parametry tablicy ramki tablicy transportu: * {{Code|html}} - adres z protokołem strony. Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|html}}. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); -- Adres protokonalny; local adres="https://pl.wikibooks.org/wiki/Strona_główna?action=edit&section=2#Nagłówek strony"; -- Równoważnie: local adres2=html_modul.UriEncode{html=adres,}; local adres2=html_modul.UriEncode(adres); </syntaxhighlight> Wynik jest w zmiennej: <syntaxhighlight lang="lua"> local adres2="https://pl.wikibooks.org/wiki/Strona_g%C5%82%C3%B3wna?action=edit&section=2#Nag%C5%82%C3%B3wek%20strony"; </syntaxhighlight> == {{Code|p.EncodePodstawoweHtmlTekstu}} == Funkcja blokuje odkodowywanie możliwych kodów {{Strong|HTML}} znaku {{Code|<nowiki>#</nowiki>}}, w tym celu wywoływana jest funkcja: {{Code|{{sr|#p.KodowanieOmijanieFunkcyjne(html,...)|p=Html}}}}, do omijania tego znaku, funkcja omija tylko znaki zapisane w kodach {{Strong|HTML}}, tzn. {{Code|{{Nowiki|&#35}}}}, w tym celu wszystkie kody tego znaku zamieniamy na jeden, przed wywołaniem tej funkcji, funkcjami: {{Code|{{sr|#p.EncodeHashKoduHtmlTekstu|p=Html}}}} i {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}}. Ta funkcja w pierwszym kroku, w nim we wspomnianej funkcji wywołanej w funkcji anonimowej, wywołuje funkcję dekodujące znaki, czyli: {{Code|{{sr|#p.DecodeKoduHTMLZnaku|p=Html}}}}, do odkodowania kodów, {{Strong|HTML}}, dziesiętnych, szesnastkowych i literowych. Na samym końcu kodowane są specjalne znaki na podstawie: {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, na kody {{Strong|HTML}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|elementy_adresu_strony}} - funkcja do podstawowego kodowania adresu. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local adres="Szablon:Link_wewnętrzny?action=edit#Obsługa?"; local adres2=html_modul.EncodePodstawoweHtmlTekstu(adres); </syntaxhighlight> Wartość zmiennej jest ukryta pod: <syntaxhighlight lang="lua"> local adres2="Szablon:Link_wewnętrzny&#63;action&#61;edit&#35;Obsługa&#63;"; </syntaxhighlight> == {{Code|p.EncodeElementyAdresuStrony}} == Gdy mamy problem (przypadek) z parametrami adresu strony,wtedy do kodowania wywoływana jest funkcja {{Code|{{sr|#p.EncodeZaawansowanyParametryHtml|p=Html}}}}, a gdy posługujemy się właściwym adresem strony lub nagłówkiem, wtedy dekodujemy '''URL''' funkcją {{LzLua|mw.uri.decode}}, następnie {{Code|{{sr|#p.EncodePodstawoweHtmlTekstu|p=Html}}}}, i jeżeli mały włączone kodowanie, następnie {{LzLua|mw.uri.encode}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EncodeElementyAdresuStrony(elementy_adresu_strony,czy_parametry_strony,z_kodowaniem)...end; </syntaxhighlight> Parametry funkcji: * {{Code|elementy_adresu_strony}} - element adresu strony, * {{Code|czy_parametry_strony}} - czy parametry strony rozważać, jako że wtedy jest taki adres jako parametry, * {{Code|z_kodowaniem}} - czy jest włączone kodowanie funkcji po odkodowaniu i pewnych operacjach w tej funkcji. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local elementy_adresu_strony="Obsługa?"; local elementy_adresu_strony2=html_modul.EncodeElementyAdresuStrony(elementy_adresu_strony,false,true); </syntaxhighlight> Wartość zmiennej jest ukryta pod: <syntaxhighlight lang="lua"> local elementy_adresu_strony2="Obs%C5%82uga%26%2363%3B"; </syntaxhighlight> == {{Code|p.AdresProjektuEncodeHtml}} == Funkcja korzysta do dekodowania na samym początku '''URL''' {{LzLua|mw.uri.decode}}, a na końcu {{LzLua|mw.uri.encode}}, jeżeli jest włączone kodowanie, między czasie korzysta z {{Code|{{sr|#p.EncodePodstawoweHtmlTekstu|p=Html}}}}. Główny elementem funkcyjnym jest {{Code|{{sr|#p.EncodeZaawansowanyParametryHtml|p=Html}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AdresProjektuEncodeHtml(frame,z_kodowaniem,protokolarny)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|z_kodowaniem}} - czy końcowo kodować, * {{Code|protokolarny}} - czy uważać przy kodowaniu na protokoły pełnych adresów stron. Parametry tablicy ramki tabeli transportu: * {{Code|html}} - adres do kodowania, * {{Code|encode}} - czy kodować. Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|html}}. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local adres="https://pl.wikibooks.org/wiki/Strona_&główna?&?action=edit&section=2&title=Nazwa strony szablonu: {{!}}#Nagłówek strony"; local adres2=html_modul.AdresProjektuEncodeHtml(adres,false,true); local adres3=html_modul.AdresProjektuEncodeHtml(adres,true,true); </syntaxhighlight> Wartość zmiennej jest ukryta pod: <syntaxhighlight lang="lua"> local adres2="https://pl.wikibooks.org/wiki/Strona_&#38;główna&#63;&#38;?action=edit&section=2&title=Nazwa strony szablonu: &#123;&#123;!&#125;&#125;#Nagłówek strony"; local adres3="https://pl.wikibooks.org/wiki/Strona_%26%2338%3Bg%C5%82%C3%B3wna%26%2363%3B%26%2338%3B?action=edit&section=2&title=Nazwa%20strony%20szablonu%3A%20%26%23123%3B%26%23123%3B%21%26%23125%3B%26%23125%3B#Nag%C5%82%C3%B3wek%20strony"; </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 9q8usaehetv5s8j6vmkn984m6ryychw 553442 553441 2026-08-30T03:18:12Z Persino 2851 553442 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Html}}|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 html_modul=require("Module:Html"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Moduł zawiera funkcje do posługiwania się dziesiętnymi, szesnastkowymi i literowymi kodami {{Strong|HTML}} i zamieniania ich na odpowiednie znaki, zamieniania znaków na ich kody dziesiętne, i odwrotnie. Kodowaniem i dekodowaniem {{Strong|URL}} adresów internetowych, parametrów i nagłówków. Rozdzielaniem pełnych adresów na nazwę strony, zapytanie i nagłówek, odpowiednich ich kodowaniem, a potem ich łączenie z powrotem do innej wartości zwykle niż wcześniej tego samego ciągu. == {{Code|p.KodowanieOmijanieFunkcyjne}} == Funkcja wywołuje funkcję modułu {{Code|{{ld2|Szeregi}}}} zwaną {{Code|{{sr|#p.SzeregiOmijanieFunkcyjne|p=Szeregi}}}}. Domyślnym wzorem jest {{Code|<nowiki>&([^&;%s]+);</nowiki>}}, ale można go zmienić na inny. Drugą funkcją podawaną do tej funkcji jest domyślnym obiektem funkcyjnym anonimowym, który nie podaje się do funkcji w nagłówku: <syntaxhighlight lang="lua"> function(kod) return "&"..kod..";"; end </syntaxhighlight> Gdzie {{Code|kod}} jest elementem przechwytywanym kodu {{Strong|HTML}}, który jest określony poprzez nawiasy okrągłe we wzorze podawanym jako argument lub, jeśli jest on równy {{Code|nil}}, wtedy we wzorze domyślnym, który w takim razie jest rozpatrywany. Funkcja służy do omijania wszystkich kodów {{Strong|HTML}} lub tylko niektórych i robienia na nich operacji za pomocą funkcji podawanej jako ostatni parametr. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KodowanieOmijanieFunkcyjne(html,normalnie,wzor,funkcja)...end; </syntaxhighlight> Parametry funkcji: * {{Code|html}} - ciąg do przetworzenia, w częściach bez parametrów omijanych, * {{Code|normalnie}} - czy ma przetwarzać tekst pomijając, w przeciwnym wypadku tak nie robi, * {{Code|wzor}} - wzór do elementów pomijanych, wzór może mieć tylko jeden element przechwytywany, * {{Code|funkcja}} - funkcja robiąca operacje na przetworzonych subciągach bez elementów pomijanych. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local tekst="Oto jest tekst wywołania: \"&#35;\""; local tekst2=html_modul.KodowanieOmijanieFunkcyjne(tekst,true,"&(#35);",function(tekst) return mw.uri.encode(tekst); end); </syntaxhighlight> Wyniki działania: <syntaxhighlight lang="lua"> local tekst2="Oto+jest+tekst+wywo%C5%82ania%3A+%22&#35;%22"; </syntaxhighlight> == {{Code|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}} == Funkcja zamienia znaki specjalne wikikodu i wyrażeń regularnych na kody dziesiętne {{Strong|HTML}}. Zamieniane znaki, to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to nie jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>|[]()+-*?.^$%'</nowiki>}}. Jest ona potrzebna do zamiany nazw stron nazw wewnętrznych na {{NS|l=tak}}, a w nich te znaki na kody {{Code|HTML}}, by wykorzystać później to w funkcji: {{Code|mw.title.makeTitle}}. Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]=function(frame)...end; </syntaxhighlight> Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: * {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}}. Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument. Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}. Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie: <syntaxhighlight lang="mediawiki"> {{#invoke:Html|TransformacjaKlasyZnakowejDoKoduHtmlCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}} </syntaxhighlight> Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local tekst="Oto jest link: [[user:użytkownik|(Użytkownik)]]."; -- Równoważne: local tekst2=html_modul["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]{tekst=tekst,}; -- Równoważne: local tekst2=html_modul["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]{args={tekst=tekst,},}; local tekst2=html_modul["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](tekst); </syntaxhighlight> Wyniki działania: <syntaxhighlight lang="lua"> local tekst2="Oto jest link: &#91;&#91;user:użytkownik&#124;&#40;Użytkownik&#41;&#93;&#93;&#46;"; </syntaxhighlight> == {{Code|p["TransformacjaKoduHtmlDoZnakuCiągu"]}} == Zamienia w tekście znaki kodów {{Strong|HTML}} dziesiętne i szesnastkowe na odpowiednie znaki {{Strong|Unicode}}. Kody dziesiętne oznaczone są wyrażone wyrażeniem regularnym: {{Code|<nowiki>&#(%d+);</nowiki>}}, a szesnastkowe: {{Code|<nowiki>&#x(%x+);</nowiki>}}. Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["TransformacjaKoduHtmlDoZnakuCiągu"]=function(frame)...end; </syntaxhighlight> Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: * {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany kodów {{Strong|HTML}}, dziesiętnych i szesnastkowych, na znaki. Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument. Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}. Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie: <syntaxhighlight lang="mediawiki"> {{#invoke:Html|TransformacjaKoduHtmlDoZnakuCiągu|tekst=Oto jest link: &#91;&#91;user:użytkownik&#124;&#40;Użytkownik&#41;&#93;&#93;&#46;}} </syntaxhighlight> Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local tekst="Oto jest link: &#91;&#91;user:użytkownik&#124;&#40;Użytkownik&#41;&#93;&#93;&#46;"; -- Równoważne: local tekst2=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"]{tekst=tekst,}; -- Równoważne: local tekst2=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"]{args={tekst=tekst,},}; local tekst2=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](tekst); </syntaxhighlight> Wyniki działania: <syntaxhighlight lang="lua"> local tekst2="Oto jest link: [[user:użytkownik|(Użytkownik)]]."; </syntaxhighlight> == {{Code|p.ZnakiSpecjalneTaguNowiki}} == Funkcja zamienia znaki specjalne, w tekście (w zawartości pomiędzy tagami tagu {{Tag|nowiki}}, by potem je tam umieścić, by pierwotna zawartość równała się tekstowi wyświetlanemu (aby on zamieniał się na tylko zwykły tekst, by nie był dalej rozwijalny względem funkcji: {{Code|frame:preproces}})), wikikodu na kody dziesiętne {{Strong|HTML}}. Zamieniane znaki to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>!{}|=<>[]</nowiki>}}. Dlatego te znaki, bo {{Code|<nowiki>=<>[]</nowiki>}} są częścią tagów mechanizmu {{Strong|HTML}}, a w tagach mogą być też linki wewnętrzne, czy zewnętrzne, i nierozwinięte szablony, a więc też i {{Code|<nowiki>{}|</nowiki>}}, a elementy {{Code|<nowiki>!{}|=</nowiki>}} są one częścią wiki-tabelek mechanizmu {{Code|MediaWiki}}, elementy te też mogą występować, gdzieś indziej w tekście w wikikodzie, również ze znakiem {{Code|<nowiki>=</nowiki>}} i z innymi tutaj wspomnianymi znakami tagowymi, też trzeba je zakodować nimi. Tak je kodujemy przez tę funkcję, by tak uzyskany tekst nie miał elementów mechanizmu {{Strong|HTML}}, ani {{Strong|MediaWiki}}. Funkcja potrzebuje, do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZnakiSpecjalneTaguNowiki(frame)...end; </syntaxhighlight> Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: * {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany znaków, z zestawu znaków specjalnych wskazanych w funkcji, występujących w tagach języka '''HTML''' do dziesiętnego kodu {{Strong|HTML}}. Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument. Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}. Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie: <syntaxhighlight lang="mediawiki"> {{#invoke:Html|ZnakiSpecjalneTaguNowiki|tekst=<span id="toc">Oto jest tekst, i link: [[Pomoc:Spis treści|Spis treści]]</span>.}} </syntaxhighlight> Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local tekst="<span id=\"toc\">Oto jest tekst, i link: [[Pomoc:Spis treści|Spis treści]]</span>."; -- Równoważne: local tekst2=html_modul.ZnakiSpecjalneTaguNowiki{tekst=tekst,}; -- Równoważne: local tekst2=html_modul.ZnakiSpecjalneTaguNowiki{args={tekst=tekst,},}; local tekst2=html_modul.ZnakiSpecjalneTaguNowiki(tekst); </syntaxhighlight> Wyniki działania: <syntaxhighlight lang="lua"> local tekst2="&#60;span id&#61;\"toc\"&#62;Oto jest tekst, i link: &#91;&#91;Pomoc:Spis treści&#124;Spis treści&#93;&#93;&#60;/span&#62;."; </syntaxhighlight> == {{Code|p.ZnakiSpecjalneWikiLinku}} == Zamienia znaki specjalne transformacji nagłówka adresów '''HTML''' (nagłówek zaczyna się od znaku {{Code|<nowiki>#</nowiki>}} - na samym końcu, w adresach stron, ale na samym początku w nich) na specjalne kody {{Strong|HTML}}. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]</nowiki>}}. Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZnakiSpecjalneWikiLinku(frame)...end; </syntaxhighlight> Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: * {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}}. Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument. Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}. Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie: <syntaxhighlight lang="mediawiki"> {{#invoke:Html|ZnakiSpecjalneWikiLinku|tekst={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}} </syntaxhighlight> Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local tekst="[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}"; -- Równoważne: local tekst2=html_modul.ZnakiSpecjalneWikiLinku{tekst=tekst,}; -- Równoważne: local tekst2=html_modul.ZnakiSpecjalneWikiLinku{args={tekst=tekst,},}; local html2=html_modul.ZnakiSpecjalneWikiLinku(tekst); </syntaxhighlight> Wyniki działania: <syntaxhighlight lang="lua"> local tekst2="&#91;pl&#93; Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: &#123;&#123;Szablon do używania&#124;parametr 1=wartość1&#124;parametr 2=wartość2&#125;&#125;"; </syntaxhighlight> == {{Code|p.EncodeSpecjalneZnakiHtml}} == Zamienia znaki specjalne adresu strony, jego parametrów (bez {{Code|<nowiki>?</nowiki>}} - wskazującej na początek adresu strony z parametrami, {{Code|<nowiki>&</nowiki>}} - oddzielające zmienne i ich wartości, {{Code|<nowiki>=</nowiki>}} - oddzielającej parametr od jej wartości w zmiennej) i nagłówka (bez {{Code|<nowiki>#</nowiki>}} na samym początku) na specjalne kody {{Strong|HTML}}, aby były one odróżnialne od innych specjalnych znaków adresów '''HTML'''. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]#=?&</nowiki>}}. Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EncodeSpecjalneZnakiHtml(frame,normalnie)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki funkcji tablicy transportu modułu, * {{Code|normalnie}} - czy ma omijać kody {{Strong|HTML}}. Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: * {{Code|html}} - zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}}, * {{Code|normalnie}} - czy ma omijać kody {{Strong|HTML}}, jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji. Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument. Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|html}}. Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie: <syntaxhighlight lang="mediawiki"> {{#invoke:Html|EncodeSpecjalneZnakiHtml|html={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}} </syntaxhighlight> Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|html2}} poniżej. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local html="[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}"; -- Równoważne: local html2=html_modul.EncodeSpecjalneZnakiHtml{html=html,}; -- Równoważne: local html2=html_modul.EncodeSpecjalneZnakiHtml{args={html=html,},}; local html2=html_modul.EncodeSpecjalneZnakiHtml(tekst); </syntaxhighlight> Wyniki działania: <syntaxhighlight lang="lua"> local html2="&#91;pl&#93; Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: &#123;&#123;Szablon do używania&#124;parametr 1&#61;wartość1&#124;parametr 2&#61;wartość2&#125;&#125;"; </syntaxhighlight> == {{Code|p.EncodeZnakProloguList}} == Szablon zamienia pierwszy znak wiki-listy (więc znak po {{Code|<nowiki>\n</nowiki>}}), tzn. znaki z: {{Code|<nowiki>#*;:</nowiki>}} na kod {{Strong|HTML}}, a znak bezpośrednio na samym początku od pewnego momentu, tzn. ten znak jest po znaku lub samym początku, to jest określane przez wyrażenie regularne: {{Code|<nowiki>^\n?</nowiki>}}, ten znak wiki-listy zamieniany jest na ten kod, a początkowy znak nowej linii, jeżeli istnieje, jest usuwany. To jest przyszykowane po to, gdyby w szablonie pierwszy wygenerowany znak, był tym znakiem listy (wtedy mechanizm {{Strong|MediaWiki}} generuje bezpośrednio przed nim znak nowej linii, który jest na początku łańcucha wygenerowany przez to), a więc ta funkcja służy też do tego. Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EncodeZnakProloguList(frame)...end; </syntaxhighlight> Parametry ramki funkcji tablicy transportu: * {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany z podanego zestawu znaków pierwszych znaków listy, mechanizmu {{Strong|MediaWiki}}, do dziesiętnego kodu {{Strong|HTML}}. Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument. Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}. Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie: <syntaxhighlight lang="mediawiki"> {{#invoke:Html|EncodeZnakProloguList|tekst= * Oto jest pierwszy element listy, *: Oto jest drugi element listy. }} </syntaxhighlight> Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local tekst="\n* Oto jest pierwszy element listy,\n*: Oto jest drugi element listy."; -- Równoważne: local tekst2=html_modul.EncodeZnakProloguList{tekst=tekst,}; -- Równoważne: local tekst2=html_modul.EncodeZnakProloguList{args={tekst=tekst,},}; local tekst2=html_modul.EncodeZnakProloguList(tekst); </syntaxhighlight> Wyniki działania: <syntaxhighlight lang="lua"> local tekst2="&#42; Oto jest pierwszy element listy,\n&#42;: Oto jest drugi element listy."; </syntaxhighlight> == {{Code|p.ParametryPrzypisaniaZnakowegoEncodeHtml}} == Eliminuje znaki specjalne nazw stron, bez parametrów, a parametry, tam gdzie one nie mogą występować, a jednak występują, opisujące parametry, tzn. od czego zaczynają się one, jak są one oddzielone, jak oddzielone są nazwy od ich wartości w przypadku parametru. Funkcja zamienia znaki {{Code|<nowiki>=%?&</nowiki>}} na kody dziesiętne {{Strong|HTML}}. Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Funkcja potrafi opcjonalnie omijać kody {{Strong|HTML}}, w zależności od podanego drugiego parametru. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParametryPrzypisaniaZnakowegoEncodeHtml(frame,normalnie)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki funkcji tablicy transportu modułu, * {{Code|normalnie}} - czy ma omijać kody {{Strong|HTML}}. Parametry ramki funkcji tablicy transportu: * {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}}, * {{Code|normalnie}} - czy ma omijać kody {{Strong|HTML}}, jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji. Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument. Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}. Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie: <syntaxhighlight lang="mediawiki"> {{#invoke:Html|ParametryPrzypisaniaZnakowegoEncodeHtml|tekst=Wikibooks:Strona?action=edit&section=2}} </syntaxhighlight> Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local tekst="Wikibooks:Strona?action=edit&section=2"; -- Równoważne: local tekst2=html_modul.ParametryPrzypisaniaZnakowegoEncodeHtml{tekst=tekst,}; -- Równoważne: local tekst2=html_modul.ParametryPrzypisaniaZnakowegoEncodeHtml{args={tekst=tekst,},}; local tekst2=html_modul.ParametryPrzypisaniaZnakowegoEncodeHtml(tekst); </syntaxhighlight> Wyniki działania: <syntaxhighlight lang="lua"> local tekst2="Wikibooks:Strona&#63;action&#61;edit&#38;section&#61;2"; </syntaxhighlight> == {{Code|p.PrzypisanieZnakoweEncodeHtml}} == Eliminuje znaki specjalne nazw stron, oddzielające nazwy parametrów od ich wartości, aby jak dana zmienna jest nienazwana (numerowana), aby nie była traktowana jako nazwana ze względu na występowanie znaku równości {{Code|{{=}}}}. Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PrzypisanieZnakoweEncodeHtml(frame)...end; </syntaxhighlight> Parametry ramki funkcji tablicy transportu: * {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany znaków przypisania {{Code|{{=}}}} do dziesiętnego kodu {{Strong|HTML}}. Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument. Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}. Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie: <syntaxhighlight lang="mediawiki"> {{#invoke:Html|PrzypisanieZnakoweEncodeHtml|tekst=Wikibooks:Strona=Parametry}} </syntaxhighlight> Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local tekst="Wikibooks:Strona=Parametry"; -- Równoważne: local tekst2=html_modul.PrzypisanieZnakoweEncodeHtml{tekst=tekst,}; -- Równoważne: local tekst2=html_modul.PrzypisanieZnakoweEncodeHtml{args={tekst=tekst,},}; local tekst2=html_modul.PrzypisanieZnakoweEncodeHtml(tekst); </syntaxhighlight> Wyniki działania: <syntaxhighlight lang="lua"> local tekst2="Wikibooks:Strona&#61;Parametry"; </syntaxhighlight> Użycie w szablonie w postaci parametry nienazwanego (numerowanego): <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|Wikibooks:Strona=Parametry}} </syntaxhighlight> może powodować pewne problemy, ta zmienna nie zostanie nazwana jako nienazwana, tylko jako nazwana o nazwie parametru {{Code|Wikibooks:Strona}} i wartości {{Code|Parametry}}. Aby tego uniknąć, wypadałoby napisać to wywołanie: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|Wikibooks:Strona&#61;Parametry}} </syntaxhighlight> Wtedy to zostanie na pewno zostanie potraktowane jako zmienna nienazwana (numerowana). Szczególnie to jest ważne, gdy używamy funkcji: {{Code|{{sr|#p["Rozwiń"]|p=Ramka}}}}, do rozwijania parametrów. W takim przypadku trzeba używać funkcji: {{Code|{{sr|#p.PrzypisanieZnakoweEncodeHtml|p=Html}}}}, aby zamienić przypisanie na parametr numerowany. == {{Code|p.ZamianaDwukropkaNaKodHtml}} == Zamienia dwukropki na kody dziesiętne {{Strong|HTML}}, tam gdzie one mają specjalne znaczenie, a po wyeliminowaniu ich (po zamianie) tracą owe znaczenie. Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZamianaDwukropkaNaKodHtml(frame)...end; </syntaxhighlight> Parametry ramki funkcji tablicy transportu: * {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany ze znaku dwukropka do dziesiętnego kodu {{Strong|HTML}}. Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument. Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}. Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie: <syntaxhighlight lang="mediawiki"> {{#invoke:Html|ZamianaDwukropkaNaKodHtml|tekst=subst:msg:Szablon:Nazwa_strony}} </syntaxhighlight> Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local tekst="subst:msg:Szablon:Nazwa_strony"; -- Równoważne: local tekst2=html_modul.ZamianaDwukropkaNaKodHtml{tekst=tekst,}; -- Równoważne: local tekst2=html_modul.ZamianaDwukropkaNaKodHtml{args={tekst=tekst,},}; local tekst2=html_modul.ZamianaDwukropkaNaKodHtml(tekst); </syntaxhighlight> Wyniki działania: <syntaxhighlight lang="lua"> local tekst2="subst&#58;msg&#58;Szablon&#58;Nazwa_strony"; </syntaxhighlight> == {{Code|p.KodHTMLZnaku}} == === Odpowiednik szablonowy === Odpowiednik szablonowy jest pod nazwą {{s|KodHTMLZnaku}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce. === Funkcja biblioteczna === Zamienia zadany znak na kod dziesiętny {{Strong|HTML}}, wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&amp;}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|&num;}}}}. Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KodHTMLZnaku(frame)...end; </syntaxhighlight> Parametry ramki funkcji tablicy transportu: * {{Code|1}} - zmienna, pod którym jest znak do zamiany na kod dziesiętny {{Strong|HTML}}, * {{Code|2}} - czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&amp;}}}}, a znak {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|&num;}}}}. Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument, ale wtedy musi być podany parametr {{Parametr|wyspecjalizowana|tak}}, gdy mamy zmienną {{Code|frame.args}}, a jeżeli ten argument nie został podany z wartością niepustą, wtedy są wyszukiwane elementy z {{Code|frame:getParent().args}}. Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}}. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local znak="k"; -- Równoważne: local tekst2=html_modul.KodHTMLZnaku{[1]=znak,}; -- Równoważne: local tekst2=html_modul.KodHTMLZnaku{args={[1]=znak,},}; local tekst2=html_modul.KodHTMLZnaku(znak); -- Równoważne: local tekst3=html_modul.KodHTMLZnaku{[1]=znak,[1]="tak",}; local tekst3=html_modul.KodHTMLZnaku{args={[1]=znak,[2]="tak",},}; </syntaxhighlight> Wyniki działania: <syntaxhighlight lang="lua"> local tekst2="&#107;"; local tekst3="&amp;&num;107;"; </syntaxhighlight> Szablonowo taką zamianę możemy napisać: * {{Code|{{s|KodHTMLZnaku|k}}}} → {{Tt|{{KodHTMLZnaku|k}}}} * {{Code|{{s|Nowiki|{{s|KodHTMLZnaku|k}}}}}} → {{Tt|{{Nowiki|{{KodHTMLZnaku|k}}}}}} * {{Code|{{s|KodHTMLZnaku|k|tak}}}} → {{Tt|{{KodHTMLZnaku|k|tak}}}} * {{Code|{{s|Nowiki|{{s|KodHTMLZnaku|k|tak}}}}}} → {{Tt|{{Nowiki|{{KodHTMLZnaku|k|tak}}}}}} Równie dobrze możemy napisać takie wywołania w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: <syntaxhighlight lang="mediawiki"> <!-- Wyświetla wynik: "&#107;"; --> {{#invoke:Html|KodHTMLZnaku|k|wyspecjalizowana=tak}} <!-- Wyświetla wynik: "&amp;&num;107;"; --> {{#invoke:Html|KodHTMLZnaku|k|tak|wyspecjalizowana=tak}} </syntaxhighlight> == {{Code|p["KodyHTMLZnakówWikiCiągu"]}} == === Odpowiednik szablonowy === Odpowiednik szablonowy jest pod nazwą {{s|KodyHTMLZnakówWikiCiągu}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce. === Funkcja biblioteczna === Zamienia ściśle określone znaki (zestaw kodów znajduje się na stronie: {{Code|{{ls2|KodyHTMLZnakówWikiCiągu/opis}}}}) na kody dziesiętne {{Strong|HTML}}, wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&amp;}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|&num;}}}}. Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p["KodyHTMLZnakówWikiCiągu"](frame)...end; </syntaxhighlight> Parametry ramki funkcji tablicy transportu: * {{Code|1}} - ciąg, pod którym są możliwe ściśle określone znaki są zamieniane na kod {{Strong|HTML}}, ciąg ten jest ze znakami wiki w UTF8, * {{Code|2}} - czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&amp;}}}} i {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|&num;}}}}. Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument, ale wtedy musi być podany parametr {{Parametr|wyspecjalizowana|tak}}, gdy mamy zmienną {{Code|frame.args}}, a jeżeli ten argument nie został podany z wartością niepustą, wtedy są wyszukiwane elementy z {{Code|frame:getParent().args}}. Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}}. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local tekst="k{{s"; -- Równoważne: local tekst2=html_modul["KodyHTMLZnakówWikiCiągu"]{[1]=tekst,}; -- Równoważne: local tekst2=html_modul["KodyHTMLZnakówWikiCiągu"]{args={[1]=tekst,},}; local tekst2=html_modul["KodyHTMLZnakówWikiCiągu"](znak); -- Równoważne: local tekst3=html_modul["KodyHTMLZnakówWikiCiągu"]{[1]=tekst,[1]="tak",}; local tekst3=html_modul["KodyHTMLZnakówWikiCiągu"]{args={[1]=tekst,[2]="tak",},}; </syntaxhighlight> Wyniki działania: <syntaxhighlight lang="lua"> local tekst2="k&#123;&#123;s"; local tekst3="k&amp;&num;123;&amp;&num;123;s"; </syntaxhighlight> Szablonowo taką zamianę możemy napisać: * {{Code|{{s|KodyHTMLZnakówWikiCiągu|k{{s|((}}s}}}} → {{Tt|{{KodyHTMLZnakówWikiCiągu|k{{((}}s}}}} * {{Code|{{s|Nowiki|{{s|KodyHTMLZnakówWikiCiągu|k{{s|((}}s}}}}}} → {{Tt|{{Nowiki|{{KodyHTMLZnakówWikiCiągu|k{{((}}s}}}}}} * {{Code|{{s|KodyHTMLZnakówWikiCiągu|k{{s|((}}s|tak}}}} → {{Tt|{{KodyHTMLZnakówWikiCiągu|k{{((}}s|tak}}}} * {{Code|{{s|Nowiki|{{s|KodyHTMLZnakówWikiCiągu|k{{s|((}}s|tak}}}}}} → {{Tt|{{Nowiki|{{KodyHTMLZnakówWikiCiągu|k{{((}}s|tak}}}}}} Równie dobrze możemy napisać takie wywołania w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: <syntaxhighlight lang="mediawiki"> <!-- Wyświetla wynik: "k&#123;&#123;s"; --> {{#invoke:Html|KodyHTMLZnakówWikiCiągu|k{{((}}s|wyspecjalizowana=tak}} <!-- Wyświetla wynik: "k&amp;&num;123;&amp;&num;123;s"; --> {{#invoke:Html|KodyHTMLZnakówWikiCiągu|k{{((}}s|tak|wyspecjalizowana=tak}} </syntaxhighlight> == {{Code|p.EncodeId}} == Funkcja służy do opcjonalnego dekodowania ciągów znakowych według {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, i cały ciąg od specjalnych znaków jest transformowany przez funkcję {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EncodeId(id,bez_transformacji)...end; </syntaxhighlight> Parametry nieramkowe normalne funkcji: * {{Code|id}} - ciąg do przeinaczenia, * {{Code|bez_transformacji}} - gdy nie {{Code|false}} lub {{Code|nil}}, funkcja nie transformuje na podstawie: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local id="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obs%C5%82uga"; local id2=html_modul.EncodeId(id,false); </syntaxhighlight> Wynikiem tego: <syntaxhighlight lang="lua"> local id2="https://pl.wikibooks.org/w/index.php&#63;title&#61;Szablon:Link wewnętrzny&#38;action&#61;edit&#35;Obsługa"; </syntaxhighlight> Gdy: {{Code|bez_transformacji{{=}}true}}, funkcja działa jak: {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, ale wtedy {{Code|frame{{=}}id}}. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local id="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obs%C5%82uga"; local id2=html_modul.EncodeId(id,true); </syntaxhighlight> Wynikiem działania jest wartość ostatniej zmiennej: <syntaxhighlight lang="lua"> local id2="https://pl.wikibooks.org/w/index.php&#63;title&#61;Szablon:Link_wewn%C4%99trzny&#38;action&#61;edit&#35;Obs%C5%82uga"; </syntaxhighlight> == {{Code|p.UsuwanieSpecjalnychNieschematycznychSymboli}} == Usuwa z tekstu znak numer {{Code|8206}} zestawu {{lpg|Unicode}}, który można napisać, jeśli jest widoczny na ekranie komputera {{Code|&#8206;}} (znak {{Code|{{Nowiki|&#8206;}}}}). Ten znak oczywiście Unicode jest w grupie zwanej invisible Unicode characters i służy do ustawiania kierunku tekstu lewo do prawo. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UsuwanieSpecjalnychNieschematycznychSymboli(parametr)...end; </syntaxhighlight> Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); -- Tutaj jest zakodowany znak HTML, o kodzie dziesiętnym "&#8206;", składający się z trzech bajtów: "&#226;", "&#128;" i "&#142;"; local tekst="Oto jest znak: &#8206;."; -- Zamiana tego kodu na znak; tekst=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](tekst); -- Tekst bez tego znaku, bo on został w tym wywołaniu całkowicie usunięty; tekst=html_modul.UsuwanieSpecjalnychNieschematycznychSymboli(tekst); </syntaxhighlight> Wynikiem tego kodu jest wartość ukryta pod zmienną: <syntaxhighlight lang="lua"> local tekst="Oto jest znak: ."; </syntaxhighlight> == {{Code|p.EncodeWiki}} == Funkcja transformuje kody {{Strong|HTML}} do znaku przy pomocy funkcji {{Code|{{sr|#p["TransformacjaKoduHtmlDoZnakuCiągu"]|p=Html}}}}, usuwa nieschematyczne znaki o kodzie {{Code|{{Nowiki|&#8206;}}}} dzięki funkcji: {{Code|{{sr|#|p=Html}}}}, następnie opcjonalnie usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu, i zamienia wewnątrz znaki kolejne odstępów lub dolnych myślników na jeden dolny myślnik na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, dalej zaraz funkcja {{LzLua|mw.text.encode}} koduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EncodeWiki(parametr,czy_nie_odstepy)...end; </syntaxhighlight> Parametry funkcji: * {{Code|parametr}} - tekst, który chcemy zakodować, * {{Code|czy_nie_odstepy}} - czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local parametr="__Oto jest znak: \"&#8206;\" i inne_znaki_w_URL: \"https://pl.wikibooks.org/w/index.php&#63;title&#61;Szablon:Link wewnętrzny&#38;action&#61;edit&#35;Obsługa;\"__"; local parametr2=html_modul.EncodeWiki(parametr,false); local parametr3=html_modul.EncodeWiki(parametr,true); </syntaxhighlight> Wynikiem działania tej funkcji jest parametr {{Code|parametr2}} i {{Code|parametr3}}, którego wartości: <syntaxhighlight lang="lua"> local parametr2="Oto_jest_znak:_&quot;&quot;_i_inne_znaki_w_URL:_&quot;https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewnętrzny&amp;action=edit#Obsługa;&quot;"; local parametr3="__Oto jest znak: &quot;&quot; i inne_znaki_w_URL: &quot;https://pl.wikibooks.org/w/index.php?title=Szablon:Link wewnętrzny&amp;action=edit#Obsługa;&quot;__"; </syntaxhighlight> == {{Code|p.DecodeWiki}} == Funkcja {{LzLua|mw.text.decode}} dekoduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Następnie usuwa nieschematyczne symbole: {{Code|{{Nowiki|&#8206;}}}}, dzięki funkcji: {{Code|{{sr|#|p=Html}}}}, następnie działa opcjonalnie funkcją, która usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu oraz zamieniając wewnątrz znaki kolejne odstępów lub dolnych myślników na jedną dolną spacją na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DecodeWiki(parametr,czy_nie_odstepy)...end; </syntaxhighlight> Parametry funkcji: * {{Code|parametr}} - tekst, który chcemy odkodować, * {{Code|czy_nie_odstepy}} - czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local parametr="__Oto jest znak: &quot;&#8206;&quot; i inne_znaki_w_URL: &quot;https://pl.wikibooks.org/w/index.php&#63;title&#61;Szablon:Link wewnętrzny&#38;action&#61;edit&#35;Obsługa;&quot;__"; local parametr2=html_modul.DecodeWiki(parametr,false); local parametr3=html_modul.DecodeWiki(parametr,true); </syntaxhighlight> Wynikiem działania tej funkcji jest parametr {{Code|parametr2}} i {{Code|parametr3}}, którego wartość: <syntaxhighlight lang="lua"> local parametr2="Oto jest znak: \"\" i inne znaki w URL: \"https://pl.wikibooks.org/w/index.php?title=Szablon:Link wewnętrzny&action=edit#Obsługa;\""; local parametr3="__Oto jest znak: \"\" i inne_znaki_w_URL: \"https://pl.wikibooks.org/w/index.php?title=Szablon:Link wewnętrzny&action=edit#Obsługa;\"__"; </syntaxhighlight> == {{Code|p.IsEncodedHtml}} == Funkcja sprawdza, czy można uznać, że funkcja jest zakodowana, tzn. dalej nie warto jej kodować przy pomocy funkcji: {{LzLua|mw.uri.encode}}, czy dekodować, bo już można uznać ją za odkodowaną, czyli nie trzeba stosować funkcji: {{LzLua|mw.uri.decode}}. Funkcja zwraca wartość {{Code|true}}, jak można uznać tekst za zakodowany i {{Code|false}}, gdy jest niezakodowana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.IsEncodedHtml(parametr,encode,encode_real)..end; </syntaxhighlight> Parametry funkcji: * {{Code|parametr}} - parametr do sprawdzenia - wymagany, * {{Code|encode}} - gdy jest sprawdzana tylko obecność znaku {{Code|%}}, * {{Code|encode_real}} - gdy jest sprawdzana, nie tylko obecność znaku {{Code|%}}, też czy {{Code|parametr}} jest ciągiem podporządkowanym wyrażeniu regularnemu {{Code|<nowiki>^[%w%p%s]*$</nowiki>}}. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); -- Pierwszy przykład: local parametr1="abc?edit=action"; -- Wartość zmiennej obliczona jest: czy_tak1=true, czyli parametr1 można uznać za zakodowany; local czy_tak1=html_modul.IsEncodedHtml(parametr1,true,false); -- Drugi przykład: local parametr2="a%YTbc?edit=action;"; -- Wartość zmiennej obliczona jest: czy_tak2=false; czyli parametr2można uznać, że nie jest zakodowany; local czy_tak2=html_modul.IsEncodedHtml(parametr2,true,false); </syntaxhighlight> == {{Code|p.EncodeHtml}} == Funkcja sprawdza, czy podany parametr do transformacji uznać za zakodowany, jeżeli za taki zostanie uznany, wtedy zostanie, to on zostanie potraktowany funkcją {{Code|{{sr|#p.EncodeWiki|p=Html}}}}, a jeżeli nie to zostanie wywołana funkcja: {{Code|{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|b=tak}}}} (z parametrem "WIKI"). Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EncodeHtml(parametr,encode,encode_real,czy_nie_odstepy)...end; </syntaxhighlight> Parametry funkcji: * {{Code|parametr}} - parametr do transformacji kodowania, * {{Code|encode}} i {{Code|encode_real}} - te parametry to samo oznaczają, co w funkcji: {{Code|{{sr|#p.IsEncodedHtml|p=Html}}}}, * {{Code|czy_nie_odstepy}} - to samo oznacza, co w funkcji {{Code|{{sr|#p.EncodeWiki|p=Html}}}}. {{Hr}} Przykłady pierwszy - podany tekst już zakodowany: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); -- Tekst do zakodowania; local parametr="abc___&#63;action&#61;edit&#38;section&#61;21&#35;nagłówek"; -- Tekst zostanie uznany za zakodowany, sprawdzane, czy on ma znaki "%", czyli on tego nie posiada; local parametr2=html_modul.EncodeHtml(parametr,true,false,false); </syntaxhighlight> Wynik zmiennej {{Code|parametr2}} jest ukryty pod jego wartością: <syntaxhighlight lang="lua"> -- Widzimy, że podwojone myślniki dolne zostały zamienione na pojedyncze, kody HTML zostały zamienione na znaki, a znak "&#38;", czyli "&" został zamieniony na "&amp;"; local parametr2="abc_?action=edit&amp;section=21#nagłówek"; </syntaxhighlight> {{Hr}} Przykłady drugi - podany tekst jeszcze nie zakodowany: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); -- Tekst do zakodowania; local parametr="a%YTbc___?action=edit;"; -- Tekst zostanie uznany za niezakodowany, czy on ma znaki "%", czyli on to posiada; local parametr2=html_modul.EncodeHtml(parametr,true,false,false); </syntaxhighlight> Wynik zmiennej {{Code|parametr2}} jest ukryty pod jego wartością: <syntaxhighlight lang="lua"> -- Widzimy, że znak "%" został zakodowany funkcją mw.uri.encode, podobnie tą funkcją zostały zakodowane: "?" i "="; local parametr2="a%25YTbc___%3Faction%3Dedit;"; </syntaxhighlight> == {{Code|p.DecodeHtml}} == Funkcja sprawdza, czy {{Code|parametr}}, czy można uznać za zakodowany, a jeżeli można, to on zostanie w zależnosci od parametru {{Code|spacje}}, to odpowiednio zostanie wywołana {{LzLua|mw.uri.decode}}, a następnie w zależności od parametru (opis w parametrach) zostanie wywołana odpowiednia funkcja odkoduwująca lub kodująca {{Code|wiki}}. Jeżeli ciąg rzeczywiście jest uznany za niezakodowany jest podobnie odpowiednio z tylko z wywołaniami funkcji {{Code|wiki}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DecodeHtml(parametr,spacje,encode,encode_real,czy_nie_odstepy)...end; </syntaxhighlight> Parametry funkcji: * {{Code|parametr}} - parametr do odkodowania, * {{Code|spacje}} - gdy parametr odpowiada {{Code|true}} używa funkcji {{Code|{{sr|#p.DecodeWiki|p=Html}}}}, w przeciwnym wypadku: {{Code|{{sr|#p.EncodeWiki|p=Html}}}}, ale wpierw musi zostać wywołana funkcja {{LzLua|mw.uri.decode}} w przypadku, gdy ciąg zostanie uznany za zakodowany, jak to robi funkcja {{LzLua|mw.uri.encode}}, * {{Code|encode}} i {{Code|encode_real}} - te parametry są używane przez funkcje {{Code|{{sr|#p.IsEncodedHtml|p=Html}}}}, * {{Code|czy_nie_odstepy}} - gdy ciąg został uznany za niezakodowany, wtedy to jest drugi parametr funkcji: {{Code|{{sr|#p.DecodeWiki|p=Html}}}} lub {{Code|{{sr|#p.EncodeWiki|p=Html}}}}. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); -- Parametr zawiera znaki zakodowane funkcją mw.uri.encode i kody HTML znaków; local parametr="a%25YTbc___%3Faction%3Dedit&#38;section&#61;23;"; local parametr2=html_modul.DecodeHtml(parametr,true); </syntaxhighlight> Wynik funkcji jest ukryty pod adresem: <syntaxhighlight lang="lua"> -- Funkcja została uznana za zakodowaną i odkodowano ją funkcją mw.uri.decode, dalej dwa dolne myślniki zostały zamienione na jedną spację, a kody HTML zostały zamienione na odpowiednie znaki; local parametr2="a%YTbc ?action=edit&section=23;"; </syntaxhighlight> == {{Code|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}} == Szuka atrybutów w cudzysłowach i w nich elementy {{Code|<nowiki><>&</nowiki>}} zamienia na kody dziesiętne {{Strong|HTML}}, a także znaki lewego ukośnika {{Code|<nowiki>\</nowiki>}} też na to. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik)...end; </syntaxhighlight> Parametry funkcji: * {{Code|znacznik}} - atrybut do przetwarzania, aby w nim zamienić niektóre znaki, które przeszkadzają w analizie na kody, o odpowiednim formacie, {{Strong|HTML}}. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local tekst="<span id=\"Znaki<>\\\"\">To jest zawartość</span>"; local tekst2=html_modul.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(tekst); </syntaxhighlight> Wartość tej zmiennej jest ukryta pod {{Code|tekst2}}: <syntaxhighlight lang="lua"> -- Widzimy, że został sam jeden atrybut ze znakami HTML wewnątrz; local tekst2="<span id=\"Znaki&lt;&gt;&#92;&#34;\">To jest zawartość</span>"; </syntaxhighlight> == {{Code|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)}} == Zamienia kody {{Strong|HTML}}, tzn.: {{Code|{{Nowiki|&lt;}}}}, {{Code|{{Nowiki|&gt;}}}} i {{Code|{{Nowiki|&amp;}}}}, na odpowiednio znaki, a także elementy {{Code|{{Nowiki|&#92;&#34;}}}} na {{Code|<nowiki>\"</nowiki>}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)...end; </syntaxhighlight> Parametry funkcji: * {{Code|value}} - parametr do transformacji niektórych kodów {{Strong|HTML}} na znaki. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local tekst="&lt;a href=\"/wiki/Strona?tytan1=1&amp;tytan2=2\" id=\"Strona:&#92;&#34;nazwa&#92;&#34;\"&gt;Zawartość znacznika&lt;/a&gt;"; local tekst2=html_modul.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(tekst); </syntaxhighlight> Otrzymana zawartość jest pod {{Code|tekst2}}: <syntaxhighlight lang="lua"> -- Widzimy, że kody odpowiednie HTML, tzn.: "&lt;", "&gt;" i "&amp;" zostały zamienione na odpowwiednie znaki; local tekst2="<a href=\"/wiki/Strona?tytan1=1&tytan2=2\" id=\"Strona:\\\"nazwa\\\"\">Zawartość znacznika</a>"; </syntaxhighlight> == {{Code|p["NagłówekStronyAdresu"]}} == Funkcja wydziela nagłówek z adresu strony, funkcja ma własną tabelę buforową nazw. Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["NagłówekStronyAdresu"]=function(frame,czy_nie_dolne_myslniki,tabela_nazw_adresu)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki funkcji tablicy transportu modułu, * {{Code|czy_nie_dolne_myslniki}} - gdy {{Code|true}}, jeśli w nagłówku nie ma prawa być dolnych myślników, * {{Code|tabela_nazw_adresu}} - tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}. Funkcja usuwa zbędne odstępy i dolne myślniki na końcach nagłówka, i powtarzające się znaki będące odstępami lub dolnymi myślnikami są zastępowane przez jedną spację, gdy {{Code|czy_nie_dolne_myslniki}} równa jest wartości odpowiadającej {{Code|true}}, w przeciwnym wypadku zamieniana jest ona na jeden dolny myślnik. Parametry funkcji ramki parametry {{Code|frame}}: * {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}} - nazwa jednostki (strony), tzn. jego adres, * {{Code|czy_nie_dolne_myslniki}} (parametr funkcji), {{Code|2}} lub {{Code|z nie dolnymi z myślnikami}} - znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji. Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}}. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local strona="https://pl.wikibooks.org/wiki/Strona ___ główna ? action____=____edit ____&____ section = 2 # ____ Nagłówek____________strony "; local tabela_nazw_adresu={}; -- Równoważne: local naglowek=html_modul["NagłówekStronyAdresu"](strona,true,tabela_nazw_adresu); local naglowek=html_modul["NagłówekStronyAdresu"]({strona=strona,["z nie dolnymi z myślnikami"]=true,},nil,tabela_nazw_adresu); </syntaxhighlight> Wartość nagłówka jest w zmiennej: <syntaxhighlight lang="lua"> -- Wydzielono z adresu strony, nagłówek usuwając z niego myślniki dolne i trimując zawartość; local naglowek="Nagłówek strony"; </syntaxhighlight> == {{Code|p["ParametryStronyAdresu"]}} == Funkcja wydziela parametry z adresu strony, funkcja ma własną tabelę buforową nazw. Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ParametryStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki funkcji tablicy transportu modułu, * {{Code|czy_naprawiaj}} - parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów adresu, wydzieloną z pełnego adresu strony, * {{Code|tabela_nazw_adresu}} - tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}. Parametry funkcji ramki parametry {{Code|frame}}: * {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}} - nazwa jednostki (strony), tzn. jego adres, * {{Code|czy_naprawiaj}} (parametr funkcji), {{Code|2}} lub {{Code|czy naprawiać}} - znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji. Kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, są w kolejności, w jakim te one przedstawiono. Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}}. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local strona="https://pl.wikibooks.org/wiki/Strona ___ główna ? action____=____edit ____&____ section = 2 # ____ Nagłówek____________strony "; local tabela_nazw_adresu={}; -- Równoważne: local parametry=html_modul["ParametryStronyAdresu"](strona,true,tabela_nazw_adresu); local parametry=html_modul["ParametryStronyAdresu"]({strona=strona,["czy naprawiać"]=true,},nil,tabela_nazw_adresu); </syntaxhighlight> Wartość nagłówka jest w zmiennej: <syntaxhighlight lang="lua"> -- Wydzielono z adresu strony parametry, usuwając z niego zbędne odstępy i myślniki dolne; local parametry="action=edit&section=2"; </syntaxhighlight> == {{Code|p["NazwaStronyAdresu"]}} == Funkcja wydziela nazwę strony z adresu strony, funkcja ma własną tabelę buforową nazw. Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["NazwaStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki funkcji tablicy transportu, * {{Code|czy_naprawiaj}} - parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z adresu strony, bez parametrów i nagłówka, wydzieloną z pełnego adresu strony, * {{Code|tabela_nazw_adresu}} - tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}. Parametry funkcji ramki parametry {{Code|frame}}: * {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}} - nazwa jednostki (strony), tzn. jego adres, * {{Code|czy_naprawiaj}} (parametr funkcji), {{Code|2}} lub {{Code|czy naprawiać}} - znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji. Kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, są w kolejności, w jakim te one przedstawiono. Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}}. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local strona="https://pl.wikibooks.org/wiki/Strona ___ główna ? action____=____edit ____&____ section = 2 # ____ Nagłówek____________strony "; local tabela_nazw_adresu={}; -- Równoważne: local parametry=html_modul["NazwaStronyAdresu"](strona,true,tabela_nazw_adresu); local nazwa_strony=html_modul["NazwaStronyAdresu"]({strona=strona,["czy naprawiać"]=true,},nil,tabela_nazw_adresu); </syntaxhighlight> Wartość nagłówka jest w zmiennej: <syntaxhighlight lang="lua"> -- Wydzielono z adresu strony nazwę strony adresu, usuwając z niego zbędne odstępy i myślniki dolne; local nazwa_strony="https://pl.wikibooks.org/wiki/Strona_główna"; </syntaxhighlight> == {{Code|p["NazwaStronyZParametrówStronyAdresu"]}} == Funkcja wydziela nazwę strony z parametrów adresu strony. Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}. <syntaxhighlight lang="lua"> p["NazwaStronyZParametrówStronyAdresu"]=function(frame,czy_naprawiaj)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki funkcji tablicy transportu modułu, * {{Code|czy_naprawiaj}} - parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów strony adresu, i czy zamieniać je na pojedyncze spacje wewnątrz nazwy artykułu wydzieloną z parametrów strony. Parametry funkcji ramki parametry {{Code|frame}}: * {{Code|1}} lub {{Code|parametry}} - nazwa jednostki (strony), tzn. jego adres, * {{Code|czy_naprawiaj}} (parametr funkcji), {{Code|2}} lub {{Code|czy naprawiać}} - znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji. Kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, są w kolejności, w jakim te one przedstawiono. Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}} lub {{Code|parametry}}. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local strona="title=Strona ___ główna & action____=____edit ____&____ section = 2 # ____ Nagłówek____________strony "; -- Równoważne: local parametry=html_modul["NazwaStronyZParametrówStronyAdresu"](strona,true); local nazwa_strony=html_modul["NazwaStronyZParametrówStronyAdresu"]({parametry=strona,["czy naprawiać"]=true,},nil); </syntaxhighlight> Wartość nagłówka jest w zmiennej: <syntaxhighlight lang="lua"> -- Wydzielono z adresu strony nazwę artykułu, usuwając z niego zbędne odstępy i myślniki dolne; local nazwa_strony="Strona główna"; </syntaxhighlight> == {{Code|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}} == Funkcja poprawia pełny adres strony, rozdzielając ją na części, a później łącząc. Funkcja ma własną tabelę buforową nazw. Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki funkcji tablicy transportu, * {{Code|czy_naprawiaj}} - parametr przedstawiający, czy ma naprawiać pełny adres strony, działając w sposób specyficzny w zależności od funkcji, która operuje na jej częściach, wykorzystując funkcje, które są napisane w linii zaraz poniżej, * {{Code|tabela_nazw_adresu}} - tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}. Parametry funkcji ramki parametry {{Code|frame}}: * {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}} - nazwa jednostki (strony), tzn. jego adres, * {{Code|czy_naprawiaj}} (parametr funkcji), {{Code|2}} lub {{Code|czy naprawiać}} - znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji. Kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, są w kolejności, w jakim te one przedstawiono. Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}}. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local strona="https://pl.wikibooks.org/wiki/Strona ___ główna ? action____=____edit ____&____ section = 2 # ____ Nagłówek____________strony "; local tabela_nazw_adresu={}; -- Równoważne: local parametry=html_modul["PoprawAdresNagłówkaOrazParametrówStronyAdresu"](strona,true,tabela_nazw_adresu); local adres=html_modul["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]({strona=strona,["czy naprawiać"]=true,},nil,tabela_nazw_adresu); </syntaxhighlight> Wartość pełnego adresu strony poprawiona jest w zmiennej: <syntaxhighlight lang="lua"> -- Wydzielono z pełnego adresu strony adres, parametry i nagłówek, naprawione i złączone ze sobą w pełny poprawiony adres; local adres="https://pl.wikibooks.org/wiki/Strona_główna?action=edit&section=2#Nagłówek strony"; </syntaxhighlight> == {{Code|p.URLStrona}} == Funkcja z adresu '''URL''' wydziela nazwę serwera i nazwę strony. On nie może zawierać w sobie protokołu, tylko musi zaczynać od {{Code|<nowiki>//</nowiki>}}. Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.URLStrona(frame)...end; </syntaxhighlight> Parametry ramki: * {{Code|1}} lub {{Code|url}} - adres strony, * {{Code|2}} lub {{Code|ukośnik}} - czy do nazwy strony ma wliczać ukośnik. Kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, są w kolejności, w jakim te one przedstawiono. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"): local url="//pl.wikibooks.org/wiki/Strona_artykułu"; local serwer,nazwa=html_modul.URLStrona{url=url,["ukośnik"]=true,}; </syntaxhighlight> Wartości zmiennych kryją się pod: <syntaxhighlight lang="lua"> -- Widzimy, że nazwa serwera jest bez prawych ukośników; local serwer="pl.wikibooks.org"; -- Nazwa strony zaczyna się bez ukośnika, bo powiedzieliśmy funkcji, by nie brał prawych ukośników, które są na początku nazwy strony, bez nazwy serwera i protokołu, ale w sobie może mieć on, ale nie musi; local nazwa="wiki/Strona_artykułu"; -- Gdyby było ["ukośnik"]=false, to wtedy otrzymalibyśmy inny wynik, czyli: local nazwa="/wiki/Strona_artykułu"; </syntaxhighlight> == {{Code|p["UrlBezProtokołu"]}} == Funkcja adresowi z protokołem usuwa to właśnie, a jak podamy adres „mail”, to podaje nazwę tego adresu, bez niego. Drugą zwracaną nazwą jest nazwa protokołu,a jak się nie da go wyznaczyć, to funkcja zwraca wartość {{Code|nil}}. Trzecia wartość, to numer sposoby, a jeżeli żaden sposób nie pasuje, to ta wartość jest {{Code|-1}}, a gdy adres mail {{Code|1}}, dla adresu z protokołem {{Code|2}}, a dla adresu bez protokołu {{Code|3}}. Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["UrlBezProtokołu"]=function(frame)...end; </syntaxhighlight> Parametry ramki: * {{Code|1}} lub {{Code|url}} - adres strony, ewentualnie z opcjonalnym protokołem. Kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, są w kolejności, w jakim te one przedstawiono. Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}} lub {{Code|url}}. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local mail="użytkownik@skrzynka.org"; -- Równoważnie: local adres1,protokol1,sposob1=html_modul["UrlBezProtokołu"](mail); local adres1,protokol1,sposob1=html_modul["UrlBezProtokołu"]{url=mail,}; --- local url="https://pl.wikibooks.org/wiki/Strona"; -- Równoważnie: local adres2,protokol2,sposob2=html_modul["UrlBezProtokołu"](url); local adres2,protokol2,sposob2=html_modul["UrlBezProtokołu"]{url=url,}; --- local url="//pl.wikibooks.org/wiki/Strona"; -- Równoważnie: local adres3,protokol3,sposob3=html_modul["UrlBezProtokołu"](url); local adres3,protokol3,sposob3=html_modul["UrlBezProtokołu"]{url=url,}; --- local url="pl.wikibooks.org/wiki/Strona"; -- Równoważnie: local adres4,protokol4,sposob4=html_modul["UrlBezProtokołu"](url); local adres4,protokol4,sposob4=html_modul["UrlBezProtokołu"]{url=url,}; </syntaxhighlight> Wyniki otrzymane z powyższych przykładów są: <syntaxhighlight lang="lua"> local adres1,protokol1,sposob1="//skrzynka.org","mail",1; local adres2,protokol2,sposob2="//pl.wikibooks.org/wiki/Strona","https",2; local adres3,protokol3,sposob3="//pl.wikibooks.org/wiki/Strona",nil,3; local adres4,protokol4,sposob4="//pl.wikibooks.org/wiki/Strona",nil,-1; </syntaxhighlight> == {{Code|p.DecodeKoduHTMLZnaku}} == Zamienia kody {{Strong|HTML}}, tzn. literowe (ogólny wzór {{Code|<nowiki>&(%a+);</nowiki>}}), dziesiętne (ogólny wzór {{Code|<nowiki>&#(%d+);</nowiki>}}) i szesnastkowe (ogólny wzór {{Code|<nowiki>&#x(%x+);</nowiki>}}) na odpowiednie znaki. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DecodeKoduHTMLZnaku(tekst)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} - tekst do zamienienia z dziesiętnymi, szesnastkowymi i literowymi kodami {{Strong|HTML}} na odpowiednie znaki. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); -- Tekst z kodami HTML: literowymi, dziesiętnymi i szesnastkowymi; local tekst="Oto jest link: &#x5B;&#x5B;Strona&#124;Nazwa linku&#93;&#x5D;, a w nim spacje niełamliwe&nbsp;i inne znaki: z alfabetu greckiego jak: &alpha;&Alpha;&beta;&Beta;&gamma;&Gamma;&delta;&Delta;&epsilon;&Epsilon;&zeta;&Zeta;&eta;&Eta;&theta;&Theta;&iota;&Iota;&kappa;&Kappa;&lambda;&Lambda;&mu;&Mu;&nu;&Nu;&xi;&Xi;&omicron;&Omicron;&pi;&Pi;&rho;&Rho;&sigma;&Sigma;&tau;&Tau;&upsilon;&Upsilon;&phi;&Phi;&chi;&Chi;&psi;&Psi;&omega;&Omega;"; -- Wywołanie funkcji odkodujący kody HTML; local tekst2=html_modul.DecodeKoduHTMLZnaku(tekst); </syntaxhighlight> Otrzymany wynik jest pod zmienną: <syntaxhighlight lang="lua"> -- Widzimy, że tekst został zdekodowany ze znaków HTML; local tekst2="Oto jest link: [[Strona|Nazwa linku]], a w nim spacje niełamliwe i inne znaki: z alfabetu greckiego jak: αΑβΒγΓδΔεΕζΖηΗθΘιΙκΚλΛμΜνΝξΞοΟπΠρΡσΣτΤυΥφΦχΧψΨωΩ"; </syntaxhighlight> == {{Code|p.ZamianaEncodeTekst}} == Adres strony dekoduje funkcją: {{LzLua|mw.uri.decode}}, następnie koduje, jeszcze więcej niż było na samym początku, według: {{LzLua|w.uri.encode}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZamianaEncodeTekst(tekst)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} - tekst do odkodowania i zakodowania jeszcze więcej niż było na początku zakodowane. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local tekst="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obs%C5%82uga"; local tekst2=html_modul.ZamianaEncodeTekst(tekst); </syntaxhighlight> Wynikiem funkcji, co kryje się pod zmienną {{Code|tekst2}}: <syntaxhighlight lang="lua"> local tekst2="https%3A%2F%2Fpl.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DSzablon%3ALink_wewn%C4%99trzny%26action%3Dedit%23Obs%C5%82uga"; </syntaxhighlight> == {{Code|p.ZamianaEncodeNaPodstawieWzoruTekstu}} == Funkcja wyszukuje tekst do zamiany i działa na niego funkcją: {{Code|{{sr|#p.ZamianaEncodeTekst|p=Html}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,wzor)...end; </syntaxhighlight> Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); -- Tekst nie do końca zakodowany wydzielonego według poniższego wzoru; local tekst="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obsługa"; -- Wzór, który wydziela części do kodowania jeszcze bardziej niż były na samym początku; local wzor="[^/%?%=&:%#]+"; -- Wywołanie funkcji kodującej; local tekst2=html_modul.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,wzor); </syntaxhighlight> Wynikiem funkcji, co kryje się pod zmienną: <syntaxhighlight lang="lua"> -- Zakodowało jeszcze więcej niż na samym początku było zakodowane; local tekst2="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obs%C5%82uga"; </syntaxhighlight> == {{Code|p.StronaParametryIdentyfikacjaAdresuHtml}} == Funkcja z całkowitego adresu składający się z adresu właściwego, parametrów i nagłówka, rozdzielane jest na trzy części, z których się składa. Funkcja sprawdza, czy jakikolwiek kody {{Strong|HTML}} występują w pełnym adresie strony, jeżeli są to przedtem koduje jeszcze lepiej kody znaków {{Code|<nowiki>#</nowiki>}}, przy pomocy funkcji: {{Code|{{sr|#p.EncodeHashKoduHtmlTekstu|p=Html}}}}, a później w kodach {{Strong|HTML}} znak {{Code|<nowiki>#</nowiki>}} jest zamieniany na kod literowy {{Strong|HTML}}, czyli: {{Code|{{Nowiki|&num;}}}}, funkcją: {{Code|{{sr|#p.EncodeTempHashKoduHtmlTekstu|p=Html}}}} (jeżeli w adresie kody istnieją), wtedy cos powstaje w rodzaju dla kodu dziesietnego: {{Code|<nowiki>&&num;(%d+);</nowiki>}}, i szesnastkowego: {{Code|<nowiki>&&num;x(%x+);</nowiki>}} - gdzie w nich {{Code|<nowiki>#</nowiki>}} został zamieniony na {{Code|{{Nowiki|&num;}}}}, które są przedstawione według wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Funkcja rozdziela to na trzy części, a później odkodowuje każdą część funkcją: {{Code|{{sr|#p.DecodeTempHashKoduHtmlTekstu|p=Html}}}} (jeżeli w adresie kody w ogóle istniały), i podobnie później: {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}} (jeżeli kody znaku: {{Code|<nowiki>#</nowiki>}}, były wcześniej). Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.StronaParametryIdentyfikacjaAdresuHtml(adres)...end; </syntaxhighlight> Parametry funkcji: * {{Code|adres}} - adres do potrzelenia na trzy części. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local adres="https://pl.wikibooks.org/wiki/Strona&#32;główna&num;&#x23;&#35;To_nie_jest nagłówek?action=edit&section=2#Nagłówek strony"; -- Adresstrony jedynie rozkładaa się na: "strona", "parametry" i "nagłówek"; local strona,parametry,naglowek=html_modul.StronaParametryIdentyfikacjaAdresuHtml(adres); </syntaxhighlight> Otrzymane wartości tych zmiennych kryją się pod adresami: <syntaxhighlight lang="lua"> local strona,parametry,naglowek="https://pl.wikibooks.org/wiki/Strona&#32;główna&#35;&#35;&#35;To_nie_jest nagłówek","action=edit&section=2","Nagłówek strony",3; </syntaxhighlight> Funkcja zwraca trzy wartości, tzn. adres właściwy (bez parametrów i nagłówka), parametry (używane jako dodatek do adresów przy formułowaniu formularzy) i nagłówek (który jest adresem na stronie do odpowiedniego elementu o danym atrybucie: {{Code|id}}). == {{Code|p.TworzenieAdresuHtml}} == Funkcja łączy, stronę, parametry i nagłówek strony, w pełną nazwę strony (adresu), dalej jest uruchamiana funkcja ddekodująca ciagi znakowe: {{Code|{{Nowiki|&amp;&num;}}}}. Funkcja wykorzystuje do dekodowania tego {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.TworzenieAdresuHtml(strona,parametry,naglowek)...end; </syntaxhighlight> Parametry funkcji: * {{Code|strona}} - nromalny adres strony, bez parametrów i nagłówka, * {{Code|parametry}} - parametry strony w formacie {{Code|nazwa{{=}}wartość}} oddzielone od siebie znakiem {{Code|<nowiki>&</nowiki>}}, * {{Code|nagłówek}} - nagłówek linkujący do {{Code|id}} jakiegos elementyna stronie, Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local strona,parametry,naglowek,ile="https://pl.wikibooks.org/wiki/Strona&#32;główna&num;&#35;&#x23;To_nie_jest nagłówek","action=edit&section=2","Nagłówek strony",3; local adres=html_modul.TworzenieAdresuHtml(strona,parametry,naglowek); </syntaxhighlight> Otrzymany pełny pojedynczy adres strony, z normalnym adresem strony z parametrami i nagłówkiem, jest ukryta: <syntaxhighlight lang="lua"> local adres="https://pl.wikibooks.org/wiki/Strona&#32;główna&#35;&#35;&#35;To_nie_jest nagłówek?action=edit&section=2#Nagłówek strony"; </syntaxhighlight> Funkcja zwraca całkowity adres z adresem właściwym, parametrami (po {{Code|<nowiki>?</nowiki>}}, jeżeli po nim występują wartości przyrównane nazwą zmiennych {{Strong|HTML}}) i nagłówkiem (po {{Code|<nowiki>#</nowiki>}}). == {{Code|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}} == Pełny adres strony, bezprotokolarny (lub protokolarny, jeżeli rozdzielimy, w pierwszej funkcji anonimowej w tej nagłówku, na protokół i adres bezprotokolarny, czyli na dwie części, zrobimy operacje, a później je złączymy w nim), linków zewnętrznych lub wewnętrznych, z adresem właściwym, parametrami i nagłówkiem strony, po podziale na je trzy części funkcją {{Code|{{sr|#p.StronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}, następnie na każdą z tych elementów działamy odpowiednimi funkcjami, a potem ich wyniki łączymy w pełny adres strony funkcją {{Code|{{sr|#p.TworzenieAdresuHtml|p=Html}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,funkcja_strona,funkcja_parametry,funkcja_naglowek)...end; </syntaxhighlight> Parametry funkcji: * {{Code|adres}} - pełny adres do przetworzenia, * {{Code|funkcja_strona}} - funkcja, którą działamy na właściwy adres strony, bez parametrów i nagłówka, * {{Code|funkcja_parametry}} - funkcja, którą działamy na parametry adresu strony, * {{Code|funkcja_naglowek}} - funkcja, którą działamy na nagłówek strony adresu. Przykład takiego wywołania: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local function EncodeParametryURL(a,b,c,funkcja_operacji) return a..funkcja_operacji(b).."="..funkcja_operacji(c); end; local function OperacjeHtml(adres,funkcja_operacji) adres=mw.ustring.gsub(adres,"^(%??)([^&=]*)=([^&]*)",function(a,b,c)return EncodeParametryURL(a,b,c,funkcja_operacji);end); adres=mw.ustring.gsub(adres,"(&)([^&=]*)=([^&]*)",function(a,b,c)return EncodeParametryURL(a,b,c,funkcja_operacji);end); return adres; end; local funkcja_operacji={ [1]=function(tekst) return p.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,"[^/]+",p.ZamianaEncodeTekst); end, [2]=function(tekst) return p.ZamianaEncodeTekst(tekst); end, [3]=function(tekst) return p.ZamianaEncodeTekst(tekst); end, }; return html_modul.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres, -- Funkcja: funkcja_strona; function(strona,Func) strona=Func(strona); return strona; end, -- Funkcja: funkcja_parametry; OperacjeHtml, -- Funkcja: funkcja_naglowek; function(naglowek,Func) naglowek=Func(naglowek); return naglowek; end, funkcja_operacji ); </syntaxhighlight> == {{Code|p.EncodeParametryURL}} == Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}. Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale. Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.ZamianaEncodeTekst|p=Html}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.EncodeParametryURL(adres,w_adresie,funkcja_strona,funkcja_naglowek)...end; </syntaxhighlight> Parametry funkcji: * {{Code|adres}} - pełny adres strony z parametrami i nagłówkiem, * {{Code|z_kodowaniem}} - czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania, * {{Code|w_adresie}} - czy rozpatrywać cały adres, a nie tylko parametry, * {{Code|funkcja_strona}} - funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka, * {{Code|funkcja_naglowek}} - funkcja, którą działamy na nagłówek. Przykłady takiego wywołania: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local adres="//pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obsługa"; local adres2=html_modul.EncodeParametryURL(adres,true, function(strona,Func) strona=Func(strona); return strona; end, function(naglowek,Func) naglowek=Func(naglowek); return naglowek; end); </syntaxhighlight> Wartość zmiennej {{Code|adres2}} jest w wartości: <syntaxhighlight lang="lua"> local adres2="//pl.wikibooks.org/w/index.php?title=Szablon%3ALink_wewn%C4%99trzny&action=edit#Obs%C5%82uga"; </syntaxhighlight> == {{Code|p.EncodeZaawansowanyParametryURL}} == Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}. Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale. Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, ale przed nim wywoływana ajest funkcja {{LzLua|mw.uri.decode}}, a po nim {{LzLua|mw.uri.encode}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EncodeZaawansowanyParametryURL(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end; </syntaxhighlight> Parametry funkcji: * {{Code|adres}} - pełny adres strony z parametrami i nagłówkiem, * {{Code|z_kodowaniem}} - czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania, * {{Code|w_adresie}} - czy rozpatrywać cały adres, a nie tylko parametry, * {{Code|funkcja_strona}} - funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka, * {{Code|funkcja_naglowek}} - funkcja, którą działamy na nagłówek. Przykłady takiego wywołania: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local adres="Szablon:Link_wewnętrzny?action=edit#Obsługa?"; local adres2=html_modul.EncodeZaawansowanyParametryURL(adres,true, function(strona,Func) strona=Func(strona); return strona; end, function(naglowek,Func) naglowek=Func(naglowek); return naglowek; end); </syntaxhighlight> Wartość zmiennej {{Code|adres2}} jest w wartości: <syntaxhighlight lang="lua"> local adres2="Szablon%3ALink_wewn%C4%99trzny?action=edit#Obs%C5%82uga%26%2363%3B"; </syntaxhighlight> == {{Code|p.EncodeParametryHtml}} == Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}. Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale. Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.EncodeHtml|p=Html}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EncodeParametryHtml(parametr,w_adresie,funkcja_strona,funkcja_naglowek)...end; </syntaxhighlight> Parametry funkcji: * {{Code|adres}} - pełny adres strony z parametrami i nagłówkiem, * {{Code|w_adresie}} - czy rozpatrywać cały adres, a nie tylko parametry, * {{Code|funkcja_strona}} - funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka, * {{Code|funkcja_naglowek}} - funkcja, którą działamy na nagłówek. Przykłady takiego wywołania: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local adres="Szablon:Link_wewnętrzny?action=edit#Obsługa?"; local adres2=html_modul.EncodeParametryHtml(adres,true, function(strona,Func) strona=Func(strona); return strona; end, function(naglowek,Func) naglowek=Func(naglowek); return naglowek; end); </syntaxhighlight> Wartość zmiennej {{Code|adres2}} jest w wartości: <syntaxhighlight lang="lua"> local adres2="Szablon:Link_wewn%C4%99trzny?action=edit#Obs%C5%82uga%3F"; </syntaxhighlight> == {{Code|p.EncodeZaawansowanyParametryHtml}} == Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}. Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale. Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.EncodePodstawoweHtmlTekstu|p=Html}}}}, a przed nim wywoływana jest {{LzLua|mw.uri.decode}}, a po nim jeżeli jest włączone kodowanie w zmiennej drugiej funkcji, wtedy {{LzLua|mw.uri.encode}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EncodeZaawansowanyParametryHtml(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end; </syntaxhighlight> Parametry funkcji: * {{Code|adres}} - pełny adres strony z parametrami i nagłówkiem, * {{Code|z_kodowaniem}} - czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania, * {{Code|w_adresie}} - czy rozpatrywać cały adres, a nie tylko parametry, * {{Code|funkcja_strona}} - funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka, * {{Code|funkcja_naglowek}} - funkcja, którą działamy na nagłówek. Przykłady takiego wywołania: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local adres="Szablon:Link_wewnętrzny?action=edit#Obsługa?"; local adres2=html_modul.EncodeZaawansowanyParametryHtml(adres,true,true, function(strona,Func) strona=Func(strona); return strona; end, function(naglowek,Func) naglowek=Func(naglowek); return naglowek; end); </syntaxhighlight> Wartość zmiennej {{Code|adres2}} jest w wartości: <syntaxhighlight lang="lua"> local adres2="Szablon%3ALink_wewn%C4%99trzny?action=edit#Obs%C5%82uga%26%2363%3B"; </syntaxhighlight> == {{Code|p.EncodeHashKoduHtmlTekstu}} == Funkcja koduje kod {{Strong|HTML}} znaku {{Code|<nowiki>#</nowiki>}}, czyli {{Code|{{Nowiki|&num;}}}}, {{Code|{{Nowiki|&#35;}}}} i {{Code|{{Nowiki|&#x23;}}}}. Te wszystkie kody funkcja zamienia je z każdnych na kod: {{Code|{{Nowiki|&amp;num;}}}}. Funkcja zwraca przetworzony tekst, ze zmienną {{Code|ile}} mówiącej ile jest możliwych kodów na stronie, także z {{Code|ile2}} wskazującej, ile jest kodów na stronie rozwazanego znaku. Funkcja używana, gdy nie chcemy, by dodatkowe znaki {{Code|<nowiki>#</nowiki>}} przeskadzały na rozkład adresu strony na właściwy adres, parametry i nagłówek strony, co po rozkładzie wywoływana jest jego też jego funkcja odwrotna {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}}, a tak powstałe znaki {{Code|{{Nowiki|&#35;}}}} ze wszystkich tych kodów {{Code|<nowiki>#</nowiki>}} według pewnych funkcji modułu {{Code|{{ld2|Html}}}}, że one nie zostaną odkodowane, bo są one pomijane. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EncodeHashKoduHtmlTekstu(tekst)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} - tekst do przetworzenia. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); -- Kody do zamienienia local tekst="&num;, &#35; i &#x23;"; -- Przetwarzanie tekstu local tekst2,ile,ile2=html_modul.EncodeHashKoduHtmlTekstu(tekst); </syntaxhighlight> Wynik jest pod zmienną: <syntaxhighlight lang="lua"> -- Wszystkie możliwe warianty funkcja zamieniła na to samo, czyli na: "&amp;num;" kodu HTML "&num;" dla znaku "#"; local tekst2,ile,ile2="&amp;num;, &amp;num; i &amp;num;",3,3; </syntaxhighlight> == {{Code|p.DecodeHashKoduHtmlTekstu}} == Jeżeli dokonano zamiany możliwych kodów {{Code|{{Nowiki|&num;}}}}, {{Code|{{Nowiki|&#35;}}}} i {{Code|{{Nowiki|&#x23;}}}} na {{Code|{{Nowiki|&num;num}}}}, wtedy druga zmienna jest większa od zera, wtedy możliwa jest tego zamiana na kod {{Code|{{Nowiki|&#35;}}}} kodu {{Code|{{Nowiki|&num;num}}}}, używając tej funkcji. Funkcja używana, gdy właściwy adres, parametry i nagłówek strony zostały po rozłączeniu na te części z pełnego adresu strony, wraz z innymi funkcjami odkodowującymi znaki niektóre {{Strong|HTML}}, oraz jeżeli ciało jej wersji prostej została wywołana wcześniej. Jest to odwrotność funkcji {{Code|{{sr|#p.EncodeHashKoduHtmlTekstu|p=Html}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DecodeHashKoduHtmlTekstu(tekst,ile)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} - tekst do przetworzenia, * {{Code|ile}} - {{Code|<nowiki>ile>0</nowiki>}}, jeżeli dokonano możliwych zamian kodów znaku {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|&num;num}}}}. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); -- Zamienione wcześniej kody: tekstu "&num;, &#35; i &#x23;", kolejno na "&amp;num;"; local tekst="&amp;num;, &amp;num; i &amp;num;"; -- Odkodowanie znaków "&amp;num;" w tekście; local tekst2=html_modul.DecodeHashKoduHtmlTekstu(tekst,3); </syntaxhighlight> Wynik jest ukryty pod zmienną: <syntaxhighlight lang="lua"> local tekst2="&#35;, &#35; i &#35;"; </syntaxhighlight> == {{Code|p.EncodeTempHashKoduHtmlTekstu}} == Jeżeli mamy jakieś kody {{Strong|HTML}}, to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|&num;}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EncodeTempHashKoduHtmlTekstu(tekst)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} - tekst do przetworzenia. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); -- Mamy tutaj kody HTML znaku: "#", czyli: "&#35;" i "&#x23;" oraz jeden od spacji: "&#32;";, a tam "#"zamieniamy na "&num;"; local tekst="https://pl.wikibooks.org/wiki/Strona&#32;główna&#35;&#35;&#x23;To_nie_jest nagłówek?action=edit&section=2#Nagłówek strony"; -- Otrzymamy przetworzony tekst oraz ile uzyskamy znaków z kodem HTML dziesiętnym "ile1" i szesnastkowym "ile2"; local tekst2,ile1,ile2=html_modul.EncodeTempHashKoduHtmlTekstu(tekst); </syntaxhighlight> Wynik tego jest pod zmienną: <syntaxhighlight lang="lua"> local tekst2,ile1,ile2="https://pl.wikibooks.org/wiki/Strona&&num;32;główna&&num;35;&&num;35;&&num;x23;To_nie_jest nagłówek?action=edit&section=2#Nagłówek strony",3,1; </syntaxhighlight> == {{Code|p.DecodeTempHashKoduHtmlTekstu}} == Jeżeli mamy jakieś kody {{Strong|HTML}}, to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|&num;}}}}. One tak zostały zamienione funkcją {{Code|{{sr|#p.EncodeTempHashKoduHtmlTekstu|p=Html}}}}. Po rozłożeniu na trzy części pełnego adresu strony, tzn. na właściwy adres, parametry i nagłówek strony, możemy wywołać dla każdej z nich tę funkcję, wykonując operację odwrotną. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DecodeTempHashKoduHtmlTekstu(tekst,ile1,ile2)...end; </syntaxhighlight> Parametry zwykłe funkcji: * {{Code|tekst}} - tekst do przetworzenia i po rozdzieleniu na trzy części, * {{Code|ile1}} - ile jest przetworzonych kodów dziesietnych prez funkcje do rozważanej prostej, * {{Code|ile2}} - ile jest przetworzonych kodów szesnastkowych przez funkcją do rozważanej prostej. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); -- Mamy tutaj kody HTML znaku: "#", czyli: "&&num;35;" i "&&num;x23;" oraz jeden od spacji: "&&num;32;";, a tam "#"zamieniamy na "&num;"; local tekst="https://pl.wikibooks.org/wiki/Strona&&num;32;główna&&num;35;&&num;35;&&num;x23;To_nie_jest nagłówek?action=edit&section=2#Nagłówek strony"; -- Otrzymamy przetworzony tekst, do którego wsadzamy ile uzyskamy znaków z kodem HTML dziesiętnym "ile1" i szesnastkowym "ile2" w wywołaniu local tekst,ile1,ile2=p.EncodeTempHashKoduHtmlTekstu(tekst); local tekst2=html_modul.EncodeTempHashKoduHtmlTekstu(tekst,3,1); </syntaxhighlight> Wynik tego jest pod zmienną: <syntaxhighlight lang="lua"> local tekst2="https://pl.wikibooks.org/wiki/Strona&#32;główna&#35;&#35;&#x23;To_nie_jest nagłówek?action=edit&section=2#Nagłówek strony"; </syntaxhighlight> == {{Code|p.AdresDomniemanieBezProtokolarnyEncodeURL}} == Funkcja domyślnie koduje adres bezprotokolarny, a z podaniem drugiej wartości {{Code|true}} protokolarny. Funkcja wykorzystuje funkcję {{Code|{{sr|#p.ZamianaEncodeNaPodstawieWzoruTekstu|p=Html}}}}. A jeżeli druga wartość odpowiada prawdziwości, to korzystamy z {{Code|{{sr|#p["UrlBezProtokołu"]|p=Html}}}} na rozkład na adres bezprotokolarny i protokół. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AdresDomniemanieBezProtokolarnyEncodeURL(adres,protokolarny)...end; </syntaxhighlight> Parametry funkcji: * {{Code|adres}} - adres do zakodowania, * {{Code|protokolarny}} - czy ma rozkładać adres na nazwę strony i protokół. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); -- Adres protokonalny; local adres11="https://pl.wikibooks.org/wiki/Strona_główna?action=edit&section=2#Nagłówek strony"; local adres12=html_modul.AdresDomniemanieBezProtokolarnyEncodeURL(adres11,true); -- Adres bezprotokonalny; local adres21="//pl.wikibooks.org/wiki/Strona_główna?action=edit&section=2#Nagłówek strony"; local adres22=html_modul.AdresDomniemanieBezProtokolarnyEncodeURL(adres21,false); </syntaxhighlight> Wynik wartości {{Code|adres12}} i {{Code|adres12}}: <syntaxhighlight lang="lua"> -- Zakodowany adres z protokołem local adres12="https://pl.wikibooks.org/wiki/Strona_g%C5%82%C3%B3wna?action=edit&section=2#Nag%C5%82%C3%B3wek%20strony"; -- Zakodowany adres bez protokołu local adres22="//pl.wikibooks.org/wiki/Strona_g%C5%82%C3%B3wna?action=edit&section=2#Nag%C5%82%C3%B3wek%20strony"; </syntaxhighlight> == {{Code|p.UriEncode}} == Funkcja do kodowania adresów tylko z protokołem, wartości bez protokołu nie obsługuje. Wykorzystuje {{Code|{{sr|#p.AdresDomniemanieBezProtokolarnyEncodeURL|p=Html}}}}. Do wyszukiwania adresów jest brana funkcja {{Code|{{sr|#p.PobierzParametr|p=Html}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UriEncode(frame)...end; </syntaxhighlight> Parametry tablicy ramki tablicy transportu: * {{Code|html}} - adres z protokołem strony. Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|html}}. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); -- Adres protokonalny; local adres="https://pl.wikibooks.org/wiki/Strona_główna?action=edit&section=2#Nagłówek strony"; -- Równoważnie: local adres2=html_modul.UriEncode{html=adres,}; local adres2=html_modul.UriEncode(adres); </syntaxhighlight> Wynik jest w zmiennej: <syntaxhighlight lang="lua"> local adres2="https://pl.wikibooks.org/wiki/Strona_g%C5%82%C3%B3wna?action=edit&section=2#Nag%C5%82%C3%B3wek%20strony"; </syntaxhighlight> == {{Code|p.EncodePodstawoweHtmlTekstu}} == Funkcja blokuje odkodowywanie możliwych kodów {{Strong|HTML}} znaku {{Code|<nowiki>#</nowiki>}}, w tym celu wywoływana jest funkcja: {{Code|{{sr|#p.KodowanieOmijanieFunkcyjne(html,...)|p=Html}}}}, do omijania tego znaku, funkcja omija tylko znaki zapisane w kodach {{Strong|HTML}}, tzn. {{Code|{{Nowiki|&#35}}}}, w tym celu wszystkie kody tego znaku zamieniamy na jeden, przed wywołaniem tej funkcji, funkcjami: {{Code|{{sr|#p.EncodeHashKoduHtmlTekstu|p=Html}}}} i {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}}. Ta funkcja w pierwszym kroku, w nim we wspomnianej funkcji wywołanej w funkcji anonimowej, wywołuje funkcję dekodujące znaki, czyli: {{Code|{{sr|#p.DecodeKoduHTMLZnaku|p=Html}}}}, do odkodowania kodów, {{Strong|HTML}}, dziesiętnych, szesnastkowych i literowych. Na samym końcu kodowane są specjalne znaki na podstawie: {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, na kody {{Strong|HTML}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|elementy_adresu_strony}} - funkcja do podstawowego kodowania adresu. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local adres="Szablon:Link_wewnętrzny?action=edit#Obsługa?"; local adres2=html_modul.EncodePodstawoweHtmlTekstu(adres); </syntaxhighlight> Wartość zmiennej jest ukryta pod: <syntaxhighlight lang="lua"> local adres2="Szablon:Link_wewnętrzny&#63;action&#61;edit&#35;Obsługa&#63;"; </syntaxhighlight> == {{Code|p.EncodeElementyAdresuStrony}} == Gdy mamy problem (przypadek) z parametrami adresu strony,wtedy do kodowania wywoływana jest funkcja {{Code|{{sr|#p.EncodeZaawansowanyParametryHtml|p=Html}}}}, a gdy posługujemy się właściwym adresem strony lub nagłówkiem, wtedy dekodujemy '''URL''' funkcją {{LzLua|mw.uri.decode}}, następnie {{Code|{{sr|#p.EncodePodstawoweHtmlTekstu|p=Html}}}}, i jeżeli mały włączone kodowanie, następnie {{LzLua|mw.uri.encode}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EncodeElementyAdresuStrony(elementy_adresu_strony,czy_parametry_strony,z_kodowaniem)...end; </syntaxhighlight> Parametry funkcji: * {{Code|elementy_adresu_strony}} - element adresu strony, * {{Code|czy_parametry_strony}} - czy parametry strony rozważać, jako że wtedy jest taki adres jako parametry, * {{Code|z_kodowaniem}} - czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local elementy_adresu_strony="Obsługa?"; local elementy_adresu_strony2=html_modul.EncodeElementyAdresuStrony(elementy_adresu_strony,false,true); </syntaxhighlight> Wartość zmiennej jest ukryta pod: <syntaxhighlight lang="lua"> local elementy_adresu_strony2="Obs%C5%82uga%26%2363%3B"; </syntaxhighlight> == {{Code|p.AdresProjektuEncodeHtml}} == Funkcja korzysta do dekodowania na samym początku '''URL''' {{LzLua|mw.uri.decode}}, a na końcu {{LzLua|mw.uri.encode}}, jeżeli jest włączone kodowanie, między czasie korzysta z {{Code|{{sr|#p.EncodePodstawoweHtmlTekstu|p=Html}}}}. Główny elementem funkcyjnym jest {{Code|{{sr|#p.EncodeZaawansowanyParametryHtml|p=Html}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AdresProjektuEncodeHtml(frame,z_kodowaniem,protokolarny)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki funkcji tablicy transportu modułu, * {{Code|z_kodowaniem}} - czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania, * {{Code|protokolarny}} - czy uważać przy kodowaniu na protokoły pełnych adresów stron. Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: * {{Code|html}} - adres do kodowania, * {{Code|encode}} - czy kodować. Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|html}}. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local adres="https://pl.wikibooks.org/wiki/Strona_&główna?&?action=edit&section=2&title=Nazwa strony szablonu: {{!}}#Nagłówek strony"; local adres2=html_modul.AdresProjektuEncodeHtml(adres,false,true); local adres3=html_modul.AdresProjektuEncodeHtml(adres,true,true); </syntaxhighlight> Wartość zmiennej jest ukryta pod: <syntaxhighlight lang="lua"> local adres2="https://pl.wikibooks.org/wiki/Strona_&#38;główna&#63;&#38;?action=edit&section=2&title=Nazwa strony szablonu: &#123;&#123;!&#125;&#125;#Nagłówek strony"; local adres3="https://pl.wikibooks.org/wiki/Strona_%26%2338%3Bg%C5%82%C3%B3wna%26%2363%3B%26%2338%3B?action=edit&section=2&title=Nazwa%20strony%20szablonu%3A%20%26%23123%3B%26%23123%3B%21%26%23125%3B%26%23125%3B#Nag%C5%82%C3%B3wek%20strony"; </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 2zkmi68tw54e247vnar8tkddfdx0k9s 553443 553442 2026-08-30T03:27:33Z Persino 2851 553443 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Html}}|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 html_modul=require("Module:Html"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Moduł zawiera funkcje do posługiwania się dziesiętnymi, szesnastkowymi i literowymi kodami {{Strong|HTML}} i zamieniania ich na odpowiednie znaki, zamieniania znaków na ich kody dziesiętne, i odwrotnie. Kodowaniem i dekodowaniem {{Strong|URL}} adresów internetowych, parametrów i nagłówków. Rozdzielaniem pełnych adresów na nazwę strony, zapytanie i nagłówek, odpowiednich ich kodowaniem, a potem ich łączenie z powrotem do innej wartości zwykle niż wcześniej tego samego ciągu. == {{Code|p.KodowanieOmijanieFunkcyjne}} == Funkcja wywołuje funkcję modułu {{Code|{{ld2|Szeregi}}}} zwaną {{Code|{{sr|#p.SzeregiOmijanieFunkcyjne|p=Szeregi}}}}. Domyślnym wzorem jest {{Code|<nowiki>&([^&;%s]+);</nowiki>}}, ale można go zmienić na inny. Drugą funkcją podawaną do tej funkcji jest domyślnym obiektem funkcyjnym anonimowym, który nie podaje się do funkcji w nagłówku: <syntaxhighlight lang="lua"> function(kod) return "&"..kod..";"; end </syntaxhighlight> Gdzie {{Code|kod}} jest elementem przechwytywanym kodu {{Strong|HTML}}, który jest określony poprzez nawiasy okrągłe we wzorze podawanym jako argument lub, jeśli jest on równy {{Code|nil}}, wtedy we wzorze domyślnym, który w takim razie jest rozpatrywany. Funkcja służy do omijania wszystkich kodów {{Strong|HTML}} lub tylko niektórych i robienia na nich operacji za pomocą funkcji podawanej jako ostatni parametr. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KodowanieOmijanieFunkcyjne(html,normalnie,wzor,funkcja)...end; </syntaxhighlight> Parametry funkcji: * {{Code|html}} - ciąg do przetworzenia, w częściach bez parametrów omijanych, * {{Code|normalnie}} - czy ma przetwarzać tekst pomijając, w przeciwnym wypadku tak nie robi, * {{Code|wzor}} - wzór do elementów pomijanych, wzór może mieć tylko jeden element przechwytywany, * {{Code|funkcja}} - funkcja robiąca operacje na przetworzonych subciągach bez elementów pomijanych. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local tekst="Oto jest tekst wywołania: \"&#35;\""; local tekst2=html_modul.KodowanieOmijanieFunkcyjne(tekst,true,"&(#35);",function(tekst) return mw.uri.encode(tekst); end); </syntaxhighlight> Wyniki działania: <syntaxhighlight lang="lua"> local tekst2="Oto+jest+tekst+wywo%C5%82ania%3A+%22&#35;%22"; </syntaxhighlight> == {{Code|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}} == Funkcja zamienia znaki specjalne wikikodu i wyrażeń regularnych na kody dziesiętne {{Strong|HTML}}. Zamieniane znaki, to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to nie jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>|[]()+-*?.^$%'</nowiki>}}. Jest ona potrzebna do zamiany nazw stron nazw wewnętrznych na {{NS|l=tak}}, a w nich te znaki na kody {{Code|HTML}}, by wykorzystać później to w funkcji: {{Code|mw.title.makeTitle}}. Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]=function(frame)...end; </syntaxhighlight> Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: * {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}}. Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument. Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}. Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie: <syntaxhighlight lang="mediawiki"> {{#invoke:Html|TransformacjaKlasyZnakowejDoKoduHtmlCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}} </syntaxhighlight> Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local tekst="Oto jest link: [[user:użytkownik|(Użytkownik)]]."; -- Równoważne: local tekst2=html_modul["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]{tekst=tekst,}; -- Równoważne: local tekst2=html_modul["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]{args={tekst=tekst,},}; local tekst2=html_modul["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](tekst); </syntaxhighlight> Wyniki działania: <syntaxhighlight lang="lua"> local tekst2="Oto jest link: &#91;&#91;user:użytkownik&#124;&#40;Użytkownik&#41;&#93;&#93;&#46;"; </syntaxhighlight> == {{Code|p["TransformacjaKoduHtmlDoZnakuCiągu"]}} == Zamienia w tekście znaki kodów {{Strong|HTML}} dziesiętne i szesnastkowe na odpowiednie znaki {{Strong|Unicode}}. Kody dziesiętne oznaczone są wyrażone wyrażeniem regularnym: {{Code|<nowiki>&#(%d+);</nowiki>}}, a szesnastkowe: {{Code|<nowiki>&#x(%x+);</nowiki>}}. Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["TransformacjaKoduHtmlDoZnakuCiągu"]=function(frame)...end; </syntaxhighlight> Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: * {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany kodów {{Strong|HTML}}, dziesiętnych i szesnastkowych, na znaki. Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument. Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}. Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie: <syntaxhighlight lang="mediawiki"> {{#invoke:Html|TransformacjaKoduHtmlDoZnakuCiągu|tekst=Oto jest link: &#91;&#91;user:użytkownik&#124;&#40;Użytkownik&#41;&#93;&#93;&#46;}} </syntaxhighlight> Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local tekst="Oto jest link: &#91;&#91;user:użytkownik&#124;&#40;Użytkownik&#41;&#93;&#93;&#46;"; -- Równoważne: local tekst2=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"]{tekst=tekst,}; -- Równoważne: local tekst2=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"]{args={tekst=tekst,},}; local tekst2=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](tekst); </syntaxhighlight> Wyniki działania: <syntaxhighlight lang="lua"> local tekst2="Oto jest link: [[user:użytkownik|(Użytkownik)]]."; </syntaxhighlight> == {{Code|p.ZnakiSpecjalneTaguNowiki}} == Funkcja zamienia znaki specjalne, w tekście (w zawartości pomiędzy tagami tagu {{Tag|nowiki}}, by potem je tam umieścić, by pierwotna zawartość równała się tekstowi wyświetlanemu (aby on zamieniał się na tylko zwykły tekst, by nie był dalej rozwijalny względem funkcji: {{Code|frame:preproces}})), wikikodu na kody dziesiętne {{Strong|HTML}}. Zamieniane znaki to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>!{}|=<>[]</nowiki>}}. Dlatego te znaki, bo {{Code|<nowiki>=<>[]</nowiki>}} są częścią tagów mechanizmu {{Strong|HTML}}, a w tagach mogą być też linki wewnętrzne, czy zewnętrzne, i nierozwinięte szablony, a więc też i {{Code|<nowiki>{}|</nowiki>}}, a elementy {{Code|<nowiki>!{}|=</nowiki>}} są one częścią wiki-tabelek mechanizmu {{Code|MediaWiki}}, elementy te też mogą występować, gdzieś indziej w tekście w wikikodzie, również ze znakiem {{Code|<nowiki>=</nowiki>}} i z innymi tutaj wspomnianymi znakami tagowymi, też trzeba je zakodować nimi. Tak je kodujemy przez tę funkcję, by tak uzyskany tekst nie miał elementów mechanizmu {{Strong|HTML}}, ani {{Strong|MediaWiki}}. Funkcja potrzebuje, do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZnakiSpecjalneTaguNowiki(frame)...end; </syntaxhighlight> Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: * {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany znaków, z zestawu znaków specjalnych wskazanych w funkcji, występujących w tagach języka '''HTML''' do dziesiętnego kodu {{Strong|HTML}}. Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument. Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}. Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie: <syntaxhighlight lang="mediawiki"> {{#invoke:Html|ZnakiSpecjalneTaguNowiki|tekst=<span id="toc">Oto jest tekst, i link: [[Pomoc:Spis treści|Spis treści]]</span>.}} </syntaxhighlight> Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local tekst="<span id=\"toc\">Oto jest tekst, i link: [[Pomoc:Spis treści|Spis treści]]</span>."; -- Równoważne: local tekst2=html_modul.ZnakiSpecjalneTaguNowiki{tekst=tekst,}; -- Równoważne: local tekst2=html_modul.ZnakiSpecjalneTaguNowiki{args={tekst=tekst,},}; local tekst2=html_modul.ZnakiSpecjalneTaguNowiki(tekst); </syntaxhighlight> Wyniki działania: <syntaxhighlight lang="lua"> local tekst2="&#60;span id&#61;\"toc\"&#62;Oto jest tekst, i link: &#91;&#91;Pomoc:Spis treści&#124;Spis treści&#93;&#93;&#60;/span&#62;."; </syntaxhighlight> == {{Code|p.ZnakiSpecjalneWikiLinku}} == Zamienia znaki specjalne transformacji nagłówka adresów '''HTML''' (nagłówek zaczyna się od znaku {{Code|<nowiki>#</nowiki>}} - na samym końcu, w adresach stron, ale na samym początku w nich) na specjalne kody {{Strong|HTML}}. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]</nowiki>}}. Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZnakiSpecjalneWikiLinku(frame)...end; </syntaxhighlight> Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: * {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}}. Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument. Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}. Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie: <syntaxhighlight lang="mediawiki"> {{#invoke:Html|ZnakiSpecjalneWikiLinku|tekst={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}} </syntaxhighlight> Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local tekst="[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}"; -- Równoważne: local tekst2=html_modul.ZnakiSpecjalneWikiLinku{tekst=tekst,}; -- Równoważne: local tekst2=html_modul.ZnakiSpecjalneWikiLinku{args={tekst=tekst,},}; local html2=html_modul.ZnakiSpecjalneWikiLinku(tekst); </syntaxhighlight> Wyniki działania: <syntaxhighlight lang="lua"> local tekst2="&#91;pl&#93; Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: &#123;&#123;Szablon do używania&#124;parametr 1=wartość1&#124;parametr 2=wartość2&#125;&#125;"; </syntaxhighlight> == {{Code|p.EncodeSpecjalneZnakiHtml}} == Zamienia znaki specjalne adresu strony, jego parametrów (bez {{Code|<nowiki>?</nowiki>}} - wskazującej na początek adresu strony z parametrami, {{Code|<nowiki>&</nowiki>}} - oddzielające zmienne i ich wartości, {{Code|<nowiki>=</nowiki>}} - oddzielającej parametr od jej wartości w zmiennej) i nagłówka (bez {{Code|<nowiki>#</nowiki>}} na samym początku) na specjalne kody {{Strong|HTML}}, aby były one odróżnialne od innych specjalnych znaków adresów '''HTML'''. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]#=?&</nowiki>}}. Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EncodeSpecjalneZnakiHtml(frame,normalnie)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki funkcji tablicy transportu modułu, * {{Code|normalnie}} - czy ma omijać kody {{Strong|HTML}}. Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: * {{Code|html}} - zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}}, * {{Code|normalnie}} - czy ma omijać kody {{Strong|HTML}}, jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji. Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument. Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|html}}. Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie: <syntaxhighlight lang="mediawiki"> {{#invoke:Html|EncodeSpecjalneZnakiHtml|html={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}} </syntaxhighlight> Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|html2}} poniżej. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local html="[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}"; -- Równoważne: local html2=html_modul.EncodeSpecjalneZnakiHtml{html=html,}; -- Równoważne: local html2=html_modul.EncodeSpecjalneZnakiHtml{args={html=html,},}; local html2=html_modul.EncodeSpecjalneZnakiHtml(tekst); </syntaxhighlight> Wyniki działania: <syntaxhighlight lang="lua"> local html2="&#91;pl&#93; Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: &#123;&#123;Szablon do używania&#124;parametr 1&#61;wartość1&#124;parametr 2&#61;wartość2&#125;&#125;"; </syntaxhighlight> == {{Code|p.EncodeZnakProloguList}} == Szablon zamienia pierwszy znak wiki-listy (więc znak po {{Code|<nowiki>\n</nowiki>}}), tzn. znaki z: {{Code|<nowiki>#*;:</nowiki>}} na kod {{Strong|HTML}}, a znak bezpośrednio na samym początku od pewnego momentu, tzn. ten znak jest po znaku lub samym początku, to jest określane przez wyrażenie regularne: {{Code|<nowiki>^\n?</nowiki>}}, ten znak wiki-listy zamieniany jest na ten kod, a początkowy znak nowej linii, jeżeli istnieje, jest usuwany. To jest przyszykowane po to, gdyby w szablonie pierwszy wygenerowany znak, był tym znakiem listy (wtedy mechanizm {{Strong|MediaWiki}} generuje bezpośrednio przed nim znak nowej linii, który jest na początku łańcucha wygenerowany przez to), a więc ta funkcja służy też do tego. Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EncodeZnakProloguList(frame)...end; </syntaxhighlight> Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: * {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany z podanego zestawu znaków pierwszych znaków listy, mechanizmu {{Strong|MediaWiki}}, do dziesiętnego kodu {{Strong|HTML}}. Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument. Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}. Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie: <syntaxhighlight lang="mediawiki"> {{#invoke:Html|EncodeZnakProloguList|tekst= * Oto jest pierwszy element listy, *: Oto jest drugi element listy. }} </syntaxhighlight> Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local tekst="\n* Oto jest pierwszy element listy,\n*: Oto jest drugi element listy."; -- Równoważne: local tekst2=html_modul.EncodeZnakProloguList{tekst=tekst,}; -- Równoważne: local tekst2=html_modul.EncodeZnakProloguList{args={tekst=tekst,},}; local tekst2=html_modul.EncodeZnakProloguList(tekst); </syntaxhighlight> Wyniki działania: <syntaxhighlight lang="lua"> local tekst2="&#42; Oto jest pierwszy element listy,\n&#42;: Oto jest drugi element listy."; </syntaxhighlight> == {{Code|p.ParametryPrzypisaniaZnakowegoEncodeHtml}} == Eliminuje znaki specjalne nazw stron, bez parametrów, a parametry, tam gdzie one nie mogą występować, a jednak występują, opisujące parametry, tzn. od czego zaczynają się one, jak są one oddzielone, jak oddzielone są nazwy od ich wartości w przypadku parametru. Funkcja zamienia znaki {{Code|<nowiki>=%?&</nowiki>}} na kody dziesiętne {{Strong|HTML}}. Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Funkcja potrafi opcjonalnie omijać kody {{Strong|HTML}}, w zależności od podanego drugiego parametru. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParametryPrzypisaniaZnakowegoEncodeHtml(frame,normalnie)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki funkcji tablicy transportu modułu, * {{Code|normalnie}} - czy ma omijać kody {{Strong|HTML}}. Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: * {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}}, * {{Code|normalnie}} - czy ma omijać kody {{Strong|HTML}}, jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji. Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument. Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}. Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie: <syntaxhighlight lang="mediawiki"> {{#invoke:Html|ParametryPrzypisaniaZnakowegoEncodeHtml|tekst=Wikibooks:Strona?action=edit&section=2}} </syntaxhighlight> Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local tekst="Wikibooks:Strona?action=edit&section=2"; -- Równoważne: local tekst2=html_modul.ParametryPrzypisaniaZnakowegoEncodeHtml{tekst=tekst,}; -- Równoważne: local tekst2=html_modul.ParametryPrzypisaniaZnakowegoEncodeHtml{args={tekst=tekst,},}; local tekst2=html_modul.ParametryPrzypisaniaZnakowegoEncodeHtml(tekst); </syntaxhighlight> Wyniki działania: <syntaxhighlight lang="lua"> local tekst2="Wikibooks:Strona&#63;action&#61;edit&#38;section&#61;2"; </syntaxhighlight> == {{Code|p.PrzypisanieZnakoweEncodeHtml}} == Eliminuje znaki specjalne nazw stron, oddzielające nazwy parametrów od ich wartości, aby jak dana zmienna jest nienazwana (numerowana), aby nie była traktowana jako nazwana ze względu na występowanie znaku równości {{Code|{{=}}}}. Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PrzypisanieZnakoweEncodeHtml(frame)...end; </syntaxhighlight> Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: * {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany znaków przypisania {{Code|{{=}}}} do dziesiętnego kodu {{Strong|HTML}}. Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument. Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}. Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie: <syntaxhighlight lang="mediawiki"> {{#invoke:Html|PrzypisanieZnakoweEncodeHtml|tekst=Wikibooks:Strona=Parametry}} </syntaxhighlight> Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local tekst="Wikibooks:Strona=Parametry"; -- Równoważne: local tekst2=html_modul.PrzypisanieZnakoweEncodeHtml{tekst=tekst,}; -- Równoważne: local tekst2=html_modul.PrzypisanieZnakoweEncodeHtml{args={tekst=tekst,},}; local tekst2=html_modul.PrzypisanieZnakoweEncodeHtml(tekst); </syntaxhighlight> Wyniki działania: <syntaxhighlight lang="lua"> local tekst2="Wikibooks:Strona&#61;Parametry"; </syntaxhighlight> Użycie w szablonie w postaci parametry nienazwanego (numerowanego): <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|Wikibooks:Strona=Parametry}} </syntaxhighlight> może powodować pewne problemy, ta zmienna nie zostanie nazwana jako nienazwana, tylko jako nazwana o nazwie parametru {{Code|Wikibooks:Strona}} i wartości {{Code|Parametry}}. Aby tego uniknąć, wypadałoby napisać to wywołanie: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|Wikibooks:Strona&#61;Parametry}} </syntaxhighlight> Wtedy to zostanie na pewno zostanie potraktowane jako zmienna nienazwana (numerowana). Szczególnie to jest ważne, gdy używamy funkcji: {{Code|{{sr|#p["Rozwiń"]|p=Ramka}}}}, do rozwijania parametrów. W takim przypadku trzeba używać funkcji: {{Code|{{sr|#p.PrzypisanieZnakoweEncodeHtml|p=Html}}}}, aby zamienić przypisanie na parametr numerowany. == {{Code|p.ZamianaDwukropkaNaKodHtml}} == Zamienia dwukropki na kody dziesiętne {{Strong|HTML}}, tam gdzie one mają specjalne znaczenie, a po wyeliminowaniu ich (po zamianie) tracą owe znaczenie. Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZamianaDwukropkaNaKodHtml(frame)...end; </syntaxhighlight> Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: * {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany ze znaku dwukropka do dziesiętnego kodu {{Strong|HTML}}. Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument. Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}. Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie: <syntaxhighlight lang="mediawiki"> {{#invoke:Html|ZamianaDwukropkaNaKodHtml|tekst=subst:msg:Szablon:Nazwa_strony}} </syntaxhighlight> Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local tekst="subst:msg:Szablon:Nazwa_strony"; -- Równoważne: local tekst2=html_modul.ZamianaDwukropkaNaKodHtml{tekst=tekst,}; -- Równoważne: local tekst2=html_modul.ZamianaDwukropkaNaKodHtml{args={tekst=tekst,},}; local tekst2=html_modul.ZamianaDwukropkaNaKodHtml(tekst); </syntaxhighlight> Wyniki działania: <syntaxhighlight lang="lua"> local tekst2="subst&#58;msg&#58;Szablon&#58;Nazwa_strony"; </syntaxhighlight> == {{Code|p.KodHTMLZnaku}} == === Odpowiednik szablonowy === Odpowiednik szablonowy jest pod nazwą {{s|KodHTMLZnaku}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce. === Funkcja biblioteczna === Zamienia zadany znak na kod dziesiętny {{Strong|HTML}}, wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&amp;}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|&num;}}}}. Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KodHTMLZnaku(frame)...end; </syntaxhighlight> Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: * {{Code|1}} - zmienna, pod którym jest znak do zamiany na kod dziesiętny {{Strong|HTML}}, * {{Code|2}} - czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&amp;}}}}, a znak {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|&num;}}}}. Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument, ale wtedy musi być podany parametr {{Parametr|wyspecjalizowana|tak}}, gdy mamy zmienną {{Code|frame.args}}, a jeżeli ten argument nie został podany z wartością niepustą, wtedy są wyszukiwane elementy z {{Code|frame:getParent().args}}. Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}}. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local znak="k"; -- Równoważne: local tekst2=html_modul.KodHTMLZnaku{[1]=znak,}; -- Równoważne: local tekst2=html_modul.KodHTMLZnaku{args={[1]=znak,},}; local tekst2=html_modul.KodHTMLZnaku(znak); -- Równoważne: local tekst3=html_modul.KodHTMLZnaku{[1]=znak,[1]="tak",}; local tekst3=html_modul.KodHTMLZnaku{args={[1]=znak,[2]="tak",},}; </syntaxhighlight> Wyniki działania: <syntaxhighlight lang="lua"> local tekst2="&#107;"; local tekst3="&amp;&num;107;"; </syntaxhighlight> Szablonowo taką zamianę możemy napisać: * {{Code|{{s|KodHTMLZnaku|k}}}} → {{Tt|{{KodHTMLZnaku|k}}}} * {{Code|{{s|Nowiki|{{s|KodHTMLZnaku|k}}}}}} → {{Tt|{{Nowiki|{{KodHTMLZnaku|k}}}}}} * {{Code|{{s|KodHTMLZnaku|k|tak}}}} → {{Tt|{{KodHTMLZnaku|k|tak}}}} * {{Code|{{s|Nowiki|{{s|KodHTMLZnaku|k|tak}}}}}} → {{Tt|{{Nowiki|{{KodHTMLZnaku|k|tak}}}}}} Równie dobrze możemy napisać takie wywołania w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: <syntaxhighlight lang="mediawiki"> <!-- Wyświetla wynik: "&#107;"; --> {{#invoke:Html|KodHTMLZnaku|k|wyspecjalizowana=tak}} <!-- Wyświetla wynik: "&amp;&num;107;"; --> {{#invoke:Html|KodHTMLZnaku|k|tak|wyspecjalizowana=tak}} </syntaxhighlight> == {{Code|p["KodyHTMLZnakówWikiCiągu"]}} == === Odpowiednik szablonowy === Odpowiednik szablonowy jest pod nazwą {{s|KodyHTMLZnakówWikiCiągu}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce. === Funkcja biblioteczna === Zamienia ściśle określone znaki (zestaw kodów znajduje się na stronie: {{Code|{{ls2|KodyHTMLZnakówWikiCiągu/opis}}}}) na kody dziesiętne {{Strong|HTML}}, wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&amp;}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|&num;}}}}. Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p["KodyHTMLZnakówWikiCiągu"](frame)...end; </syntaxhighlight> Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: * {{Code|1}} - ciąg, pod którym są możliwe ściśle określone znaki są zamieniane na kod {{Strong|HTML}}, ciąg ten jest ze znakami wiki w UTF8, * {{Code|2}} - czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&amp;}}}} i {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|&num;}}}}. Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument, ale wtedy musi być podany parametr {{Parametr|wyspecjalizowana|tak}}, gdy mamy zmienną {{Code|frame.args}}, a jeżeli ten argument nie został podany z wartością niepustą, wtedy są wyszukiwane elementy z {{Code|frame:getParent().args}}. Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}}. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local tekst="k{{s"; -- Równoważne: local tekst2=html_modul["KodyHTMLZnakówWikiCiągu"]{[1]=tekst,}; -- Równoważne: local tekst2=html_modul["KodyHTMLZnakówWikiCiągu"]{args={[1]=tekst,},}; local tekst2=html_modul["KodyHTMLZnakówWikiCiągu"](znak); -- Równoważne: local tekst3=html_modul["KodyHTMLZnakówWikiCiągu"]{[1]=tekst,[1]="tak",}; local tekst3=html_modul["KodyHTMLZnakówWikiCiągu"]{args={[1]=tekst,[2]="tak",},}; </syntaxhighlight> Wyniki działania: <syntaxhighlight lang="lua"> local tekst2="k&#123;&#123;s"; local tekst3="k&amp;&num;123;&amp;&num;123;s"; </syntaxhighlight> Szablonowo taką zamianę możemy napisać: * {{Code|{{s|KodyHTMLZnakówWikiCiągu|k{{s|((}}s}}}} → {{Tt|{{KodyHTMLZnakówWikiCiągu|k{{((}}s}}}} * {{Code|{{s|Nowiki|{{s|KodyHTMLZnakówWikiCiągu|k{{s|((}}s}}}}}} → {{Tt|{{Nowiki|{{KodyHTMLZnakówWikiCiągu|k{{((}}s}}}}}} * {{Code|{{s|KodyHTMLZnakówWikiCiągu|k{{s|((}}s|tak}}}} → {{Tt|{{KodyHTMLZnakówWikiCiągu|k{{((}}s|tak}}}} * {{Code|{{s|Nowiki|{{s|KodyHTMLZnakówWikiCiągu|k{{s|((}}s|tak}}}}}} → {{Tt|{{Nowiki|{{KodyHTMLZnakówWikiCiągu|k{{((}}s|tak}}}}}} Równie dobrze możemy napisać takie wywołania w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: <syntaxhighlight lang="mediawiki"> <!-- Wyświetla wynik: "k&#123;&#123;s"; --> {{#invoke:Html|KodyHTMLZnakówWikiCiągu|k{{((}}s|wyspecjalizowana=tak}} <!-- Wyświetla wynik: "k&amp;&num;123;&amp;&num;123;s"; --> {{#invoke:Html|KodyHTMLZnakówWikiCiągu|k{{((}}s|tak|wyspecjalizowana=tak}} </syntaxhighlight> == {{Code|p.EncodeId}} == Funkcja służy do opcjonalnego dekodowania ciągów znakowych według {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, i cały ciąg od specjalnych znaków jest transformowany przez funkcję {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EncodeId(id,bez_transformacji)...end; </syntaxhighlight> Parametry nieramkowe normalne funkcji: * {{Code|id}} - ciąg do przeinaczenia, * {{Code|bez_transformacji}} - gdy nie {{Code|false}} lub {{Code|nil}}, funkcja nie transformuje na podstawie: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local id="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obs%C5%82uga"; local id2=html_modul.EncodeId(id,false); </syntaxhighlight> Wynikiem tego: <syntaxhighlight lang="lua"> local id2="https://pl.wikibooks.org/w/index.php&#63;title&#61;Szablon:Link wewnętrzny&#38;action&#61;edit&#35;Obsługa"; </syntaxhighlight> Gdy: {{Code|bez_transformacji{{=}}true}}, funkcja działa jak: {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, ale wtedy {{Code|frame{{=}}id}}. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local id="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obs%C5%82uga"; local id2=html_modul.EncodeId(id,true); </syntaxhighlight> Wynikiem działania jest wartość ostatniej zmiennej: <syntaxhighlight lang="lua"> local id2="https://pl.wikibooks.org/w/index.php&#63;title&#61;Szablon:Link_wewn%C4%99trzny&#38;action&#61;edit&#35;Obs%C5%82uga"; </syntaxhighlight> == {{Code|p.UsuwanieSpecjalnychNieschematycznychSymboli}} == Usuwa z tekstu znak numer {{Code|8206}} zestawu {{lpg|Unicode}}, który można napisać, jeśli jest widoczny na ekranie komputera {{Code|&#8206;}} (znak {{Code|{{Nowiki|&#8206;}}}}). Ten znak oczywiście Unicode jest w grupie zwanej invisible Unicode characters i służy do ustawiania kierunku tekstu lewo do prawo. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UsuwanieSpecjalnychNieschematycznychSymboli(parametr)...end; </syntaxhighlight> Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); -- Tutaj jest zakodowany znak HTML, o kodzie dziesiętnym "&#8206;", składający się z trzech bajtów: "&#226;", "&#128;" i "&#142;"; local tekst="Oto jest znak: &#8206;."; -- Zamiana tego kodu na znak; tekst=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](tekst); -- Tekst bez tego znaku, bo on został w tym wywołaniu całkowicie usunięty; tekst=html_modul.UsuwanieSpecjalnychNieschematycznychSymboli(tekst); </syntaxhighlight> Wynikiem tego kodu jest wartość ukryta pod zmienną: <syntaxhighlight lang="lua"> local tekst="Oto jest znak: ."; </syntaxhighlight> == {{Code|p.EncodeWiki}} == Funkcja transformuje kody {{Strong|HTML}} do znaku przy pomocy funkcji {{Code|{{sr|#p["TransformacjaKoduHtmlDoZnakuCiągu"]|p=Html}}}}, usuwa nieschematyczne znaki o kodzie {{Code|{{Nowiki|&#8206;}}}} dzięki funkcji: {{Code|{{sr|#|p=Html}}}}, następnie opcjonalnie usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu, i zamienia wewnątrz znaki kolejne odstępów lub dolnych myślników na jeden dolny myślnik na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, dalej zaraz funkcja {{LzLua|mw.text.encode}} koduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EncodeWiki(parametr,czy_nie_odstepy)...end; </syntaxhighlight> Parametry funkcji: * {{Code|parametr}} - tekst, który chcemy zakodować, * {{Code|czy_nie_odstepy}} - czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local parametr="__Oto jest znak: \"&#8206;\" i inne_znaki_w_URL: \"https://pl.wikibooks.org/w/index.php&#63;title&#61;Szablon:Link wewnętrzny&#38;action&#61;edit&#35;Obsługa;\"__"; local parametr2=html_modul.EncodeWiki(parametr,false); local parametr3=html_modul.EncodeWiki(parametr,true); </syntaxhighlight> Wynikiem działania tej funkcji jest parametr {{Code|parametr2}} i {{Code|parametr3}}, którego wartości: <syntaxhighlight lang="lua"> local parametr2="Oto_jest_znak:_&quot;&quot;_i_inne_znaki_w_URL:_&quot;https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewnętrzny&amp;action=edit#Obsługa;&quot;"; local parametr3="__Oto jest znak: &quot;&quot; i inne_znaki_w_URL: &quot;https://pl.wikibooks.org/w/index.php?title=Szablon:Link wewnętrzny&amp;action=edit#Obsługa;&quot;__"; </syntaxhighlight> == {{Code|p.DecodeWiki}} == Funkcja {{LzLua|mw.text.decode}} dekoduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Następnie usuwa nieschematyczne symbole: {{Code|{{Nowiki|&#8206;}}}}, dzięki funkcji: {{Code|{{sr|#|p=Html}}}}, następnie działa opcjonalnie funkcją, która usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu oraz zamieniając wewnątrz znaki kolejne odstępów lub dolnych myślników na jedną dolną spacją na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DecodeWiki(parametr,czy_nie_odstepy)...end; </syntaxhighlight> Parametry funkcji: * {{Code|parametr}} - tekst, który chcemy odkodować, * {{Code|czy_nie_odstepy}} - czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local parametr="__Oto jest znak: &quot;&#8206;&quot; i inne_znaki_w_URL: &quot;https://pl.wikibooks.org/w/index.php&#63;title&#61;Szablon:Link wewnętrzny&#38;action&#61;edit&#35;Obsługa;&quot;__"; local parametr2=html_modul.DecodeWiki(parametr,false); local parametr3=html_modul.DecodeWiki(parametr,true); </syntaxhighlight> Wynikiem działania tej funkcji jest parametr {{Code|parametr2}} i {{Code|parametr3}}, którego wartość: <syntaxhighlight lang="lua"> local parametr2="Oto jest znak: \"\" i inne znaki w URL: \"https://pl.wikibooks.org/w/index.php?title=Szablon:Link wewnętrzny&action=edit#Obsługa;\""; local parametr3="__Oto jest znak: \"\" i inne_znaki_w_URL: \"https://pl.wikibooks.org/w/index.php?title=Szablon:Link wewnętrzny&action=edit#Obsługa;\"__"; </syntaxhighlight> == {{Code|p.IsEncodedHtml}} == Funkcja sprawdza, czy można uznać, że funkcja jest zakodowana, tzn. dalej nie warto jej kodować przy pomocy funkcji: {{LzLua|mw.uri.encode}}, czy dekodować, bo już można uznać ją za odkodowaną, czyli nie trzeba stosować funkcji: {{LzLua|mw.uri.decode}}. Funkcja zwraca wartość {{Code|true}}, jak można uznać tekst za zakodowany i {{Code|false}}, gdy jest niezakodowana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.IsEncodedHtml(parametr,encode,encode_real)..end; </syntaxhighlight> Parametry funkcji: * {{Code|parametr}} - parametr do sprawdzenia - wymagany, * {{Code|encode}} - gdy jest sprawdzana tylko obecność znaku {{Code|%}}, * {{Code|encode_real}} - gdy jest sprawdzana, nie tylko obecność znaku {{Code|%}}, też czy {{Code|parametr}} jest ciągiem podporządkowanym wyrażeniu regularnemu {{Code|<nowiki>^[%w%p%s]*$</nowiki>}}. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); -- Pierwszy przykład: local parametr1="abc?edit=action"; -- Wartość zmiennej obliczona jest: czy_tak1=true, czyli parametr1 można uznać za zakodowany; local czy_tak1=html_modul.IsEncodedHtml(parametr1,true,false); -- Drugi przykład: local parametr2="a%YTbc?edit=action;"; -- Wartość zmiennej obliczona jest: czy_tak2=false; czyli parametr2można uznać, że nie jest zakodowany; local czy_tak2=html_modul.IsEncodedHtml(parametr2,true,false); </syntaxhighlight> == {{Code|p.EncodeHtml}} == Funkcja sprawdza, czy podany parametr do transformacji uznać za zakodowany, jeżeli za taki zostanie uznany, wtedy zostanie, to on zostanie potraktowany funkcją {{Code|{{sr|#p.EncodeWiki|p=Html}}}}, a jeżeli nie to zostanie wywołana funkcja: {{Code|{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|b=tak}}}} (z parametrem "WIKI"). Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EncodeHtml(parametr,encode,encode_real,czy_nie_odstepy)...end; </syntaxhighlight> Parametry funkcji: * {{Code|parametr}} - parametr do transformacji kodowania, * {{Code|encode}} i {{Code|encode_real}} - te parametry to samo oznaczają, co w funkcji: {{Code|{{sr|#p.IsEncodedHtml|p=Html}}}}, * {{Code|czy_nie_odstepy}} - to samo oznacza, co w funkcji {{Code|{{sr|#p.EncodeWiki|p=Html}}}}. {{Hr}} Przykłady pierwszy - podany tekst już zakodowany: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); -- Tekst do zakodowania; local parametr="abc___&#63;action&#61;edit&#38;section&#61;21&#35;nagłówek"; -- Tekst zostanie uznany za zakodowany, sprawdzane, czy on ma znaki "%", czyli on tego nie posiada; local parametr2=html_modul.EncodeHtml(parametr,true,false,false); </syntaxhighlight> Wynik zmiennej {{Code|parametr2}} jest ukryty pod jego wartością: <syntaxhighlight lang="lua"> -- Widzimy, że podwojone myślniki dolne zostały zamienione na pojedyncze, kody HTML zostały zamienione na znaki, a znak "&#38;", czyli "&" został zamieniony na "&amp;"; local parametr2="abc_?action=edit&amp;section=21#nagłówek"; </syntaxhighlight> {{Hr}} Przykłady drugi - podany tekst jeszcze nie zakodowany: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); -- Tekst do zakodowania; local parametr="a%YTbc___?action=edit;"; -- Tekst zostanie uznany za niezakodowany, czy on ma znaki "%", czyli on to posiada; local parametr2=html_modul.EncodeHtml(parametr,true,false,false); </syntaxhighlight> Wynik zmiennej {{Code|parametr2}} jest ukryty pod jego wartością: <syntaxhighlight lang="lua"> -- Widzimy, że znak "%" został zakodowany funkcją mw.uri.encode, podobnie tą funkcją zostały zakodowane: "?" i "="; local parametr2="a%25YTbc___%3Faction%3Dedit;"; </syntaxhighlight> == {{Code|p.DecodeHtml}} == Funkcja sprawdza, czy {{Code|parametr}}, czy można uznać za zakodowany, a jeżeli można, to on zostanie w zależnosci od parametru {{Code|spacje}}, to odpowiednio zostanie wywołana {{LzLua|mw.uri.decode}}, a następnie w zależności od parametru (opis w parametrach) zostanie wywołana odpowiednia funkcja odkoduwująca lub kodująca {{Code|wiki}}. Jeżeli ciąg rzeczywiście jest uznany za niezakodowany jest podobnie odpowiednio z tylko z wywołaniami funkcji {{Code|wiki}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DecodeHtml(parametr,spacje,encode,encode_real,czy_nie_odstepy)...end; </syntaxhighlight> Parametry funkcji: * {{Code|parametr}} - parametr do odkodowania, * {{Code|spacje}} - gdy parametr odpowiada {{Code|true}} używa funkcji {{Code|{{sr|#p.DecodeWiki|p=Html}}}}, w przeciwnym wypadku: {{Code|{{sr|#p.EncodeWiki|p=Html}}}}, ale wpierw musi zostać wywołana funkcja {{LzLua|mw.uri.decode}} w przypadku, gdy ciąg zostanie uznany za zakodowany, jak to robi funkcja {{LzLua|mw.uri.encode}}, * {{Code|encode}} i {{Code|encode_real}} - te parametry są używane przez funkcje {{Code|{{sr|#p.IsEncodedHtml|p=Html}}}}, * {{Code|czy_nie_odstepy}} - gdy ciąg został uznany za niezakodowany, wtedy to jest drugi parametr funkcji: {{Code|{{sr|#p.DecodeWiki|p=Html}}}} lub {{Code|{{sr|#p.EncodeWiki|p=Html}}}}. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); -- Parametr zawiera znaki zakodowane funkcją mw.uri.encode i kody HTML znaków; local parametr="a%25YTbc___%3Faction%3Dedit&#38;section&#61;23;"; local parametr2=html_modul.DecodeHtml(parametr,true); </syntaxhighlight> Wynik funkcji jest ukryty pod adresem: <syntaxhighlight lang="lua"> -- Funkcja została uznana za zakodowaną i odkodowano ją funkcją mw.uri.decode, dalej dwa dolne myślniki zostały zamienione na jedną spację, a kody HTML zostały zamienione na odpowiednie znaki; local parametr2="a%YTbc ?action=edit&section=23;"; </syntaxhighlight> == {{Code|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}} == Szuka atrybutów w cudzysłowach i w nich elementy {{Code|<nowiki><>&</nowiki>}} zamienia na kody dziesiętne {{Strong|HTML}}, a także znaki lewego ukośnika {{Code|<nowiki>\</nowiki>}} też na to. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik)...end; </syntaxhighlight> Parametry funkcji: * {{Code|znacznik}} - atrybut do przetwarzania, aby w nim zamienić niektóre znaki, które przeszkadzają w analizie na kody, o odpowiednim formacie, {{Strong|HTML}}. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local tekst="<span id=\"Znaki<>\\\"\">To jest zawartość</span>"; local tekst2=html_modul.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(tekst); </syntaxhighlight> Wartość tej zmiennej jest ukryta pod {{Code|tekst2}}: <syntaxhighlight lang="lua"> -- Widzimy, że został sam jeden atrybut ze znakami HTML wewnątrz; local tekst2="<span id=\"Znaki&lt;&gt;&#92;&#34;\">To jest zawartość</span>"; </syntaxhighlight> == {{Code|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)}} == Zamienia kody {{Strong|HTML}}, tzn.: {{Code|{{Nowiki|&lt;}}}}, {{Code|{{Nowiki|&gt;}}}} i {{Code|{{Nowiki|&amp;}}}}, na odpowiednio znaki, a także elementy {{Code|{{Nowiki|&#92;&#34;}}}} na {{Code|<nowiki>\"</nowiki>}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)...end; </syntaxhighlight> Parametry funkcji: * {{Code|value}} - parametr do transformacji niektórych kodów {{Strong|HTML}} na znaki. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local tekst="&lt;a href=\"/wiki/Strona?tytan1=1&amp;tytan2=2\" id=\"Strona:&#92;&#34;nazwa&#92;&#34;\"&gt;Zawartość znacznika&lt;/a&gt;"; local tekst2=html_modul.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(tekst); </syntaxhighlight> Otrzymana zawartość jest pod {{Code|tekst2}}: <syntaxhighlight lang="lua"> -- Widzimy, że kody odpowiednie HTML, tzn.: "&lt;", "&gt;" i "&amp;" zostały zamienione na odpowwiednie znaki; local tekst2="<a href=\"/wiki/Strona?tytan1=1&tytan2=2\" id=\"Strona:\\\"nazwa\\\"\">Zawartość znacznika</a>"; </syntaxhighlight> == {{Code|p["NagłówekStronyAdresu"]}} == Funkcja wydziela nagłówek z adresu strony, funkcja ma własną tabelę buforową nazw. Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["NagłówekStronyAdresu"]=function(frame,czy_nie_dolne_myslniki,tabela_nazw_adresu)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki funkcji tablicy transportu modułu, * {{Code|czy_nie_dolne_myslniki}} - gdy {{Code|true}}, jeśli w nagłówku nie ma prawa być dolnych myślników, * {{Code|tabela_nazw_adresu}} - tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}. Funkcja usuwa zbędne odstępy i dolne myślniki na końcach nagłówka, i powtarzające się znaki będące odstępami lub dolnymi myślnikami są zastępowane przez jedną spację, gdy {{Code|czy_nie_dolne_myslniki}} równa jest wartości odpowiadającej {{Code|true}}, w przeciwnym wypadku zamieniana jest ona na jeden dolny myślnik. Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: * {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}} - nazwa jednostki (strony), tzn. jego adres, * {{Code|czy_nie_dolne_myslniki}} (parametr funkcji), {{Code|2}} lub {{Code|z nie dolnymi z myślnikami}} - znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji. Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}}. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local strona="https://pl.wikibooks.org/wiki/Strona ___ główna ? action____=____edit ____&____ section = 2 # ____ Nagłówek____________strony "; local tabela_nazw_adresu={}; -- Równoważne: local naglowek=html_modul["NagłówekStronyAdresu"](strona,true,tabela_nazw_adresu); local naglowek=html_modul["NagłówekStronyAdresu"]({strona=strona,["z nie dolnymi z myślnikami"]=true,},nil,tabela_nazw_adresu); </syntaxhighlight> Wartość nagłówka jest w zmiennej: <syntaxhighlight lang="lua"> -- Wydzielono z adresu strony, nagłówek usuwając z niego myślniki dolne i trimując zawartość; local naglowek="Nagłówek strony"; </syntaxhighlight> == {{Code|p["ParametryStronyAdresu"]}} == Funkcja wydziela parametry z adresu strony, funkcja ma własną tabelę buforową nazw. Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ParametryStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki funkcji tablicy transportu modułu, * {{Code|czy_naprawiaj}} - parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów adresu, wydzieloną z pełnego adresu strony, * {{Code|tabela_nazw_adresu}} - tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}. Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: * {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}} - nazwa jednostki (strony), tzn. jego adres, * {{Code|czy_naprawiaj}} (parametr funkcji), {{Code|2}} lub {{Code|czy naprawiać}} - znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji. Kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, są w kolejności, w jakim te one przedstawiono. Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}}. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local strona="https://pl.wikibooks.org/wiki/Strona ___ główna ? action____=____edit ____&____ section = 2 # ____ Nagłówek____________strony "; local tabela_nazw_adresu={}; -- Równoważne: local parametry=html_modul["ParametryStronyAdresu"](strona,true,tabela_nazw_adresu); local parametry=html_modul["ParametryStronyAdresu"]({strona=strona,["czy naprawiać"]=true,},nil,tabela_nazw_adresu); </syntaxhighlight> Wartość nagłówka jest w zmiennej: <syntaxhighlight lang="lua"> -- Wydzielono z adresu strony parametry, usuwając z niego zbędne odstępy i myślniki dolne; local parametry="action=edit&section=2"; </syntaxhighlight> == {{Code|p["NazwaStronyAdresu"]}} == Funkcja wydziela nazwę strony z adresu strony, funkcja ma własną tabelę buforową nazw. Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["NazwaStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki funkcji tablicy transportu, * {{Code|czy_naprawiaj}} - parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z adresu strony, bez parametrów i nagłówka, wydzieloną z pełnego adresu strony, * {{Code|tabela_nazw_adresu}} - tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}. Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: * {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}} - nazwa jednostki (strony), tzn. jego adres, * {{Code|czy_naprawiaj}} (parametr funkcji), {{Code|2}} lub {{Code|czy naprawiać}} - znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji. Kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, są w kolejności, w jakim te one przedstawiono. Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}}. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local strona="https://pl.wikibooks.org/wiki/Strona ___ główna ? action____=____edit ____&____ section = 2 # ____ Nagłówek____________strony "; local tabela_nazw_adresu={}; -- Równoważne: local parametry=html_modul["NazwaStronyAdresu"](strona,true,tabela_nazw_adresu); local nazwa_strony=html_modul["NazwaStronyAdresu"]({strona=strona,["czy naprawiać"]=true,},nil,tabela_nazw_adresu); </syntaxhighlight> Wartość nagłówka jest w zmiennej: <syntaxhighlight lang="lua"> -- Wydzielono z adresu strony nazwę strony adresu, usuwając z niego zbędne odstępy i myślniki dolne; local nazwa_strony="https://pl.wikibooks.org/wiki/Strona_główna"; </syntaxhighlight> == {{Code|p["NazwaStronyZParametrówStronyAdresu"]}} == Funkcja wydziela nazwę strony z parametrów adresu strony. Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}. <syntaxhighlight lang="lua"> p["NazwaStronyZParametrówStronyAdresu"]=function(frame,czy_naprawiaj)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki funkcji tablicy transportu modułu, * {{Code|czy_naprawiaj}} - parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów strony adresu, i czy zamieniać je na pojedyncze spacje wewnątrz nazwy artykułu wydzieloną z parametrów strony. Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: * {{Code|1}} lub {{Code|parametry}} - nazwa jednostki (strony), tzn. jego adres, * {{Code|czy_naprawiaj}} (parametr funkcji), {{Code|2}} lub {{Code|czy naprawiać}} - znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji. Kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, są w kolejności, w jakim te one przedstawiono. Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}} lub {{Code|parametry}}. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local strona="title=Strona ___ główna & action____=____edit ____&____ section = 2 # ____ Nagłówek____________strony "; -- Równoważne: local parametry=html_modul["NazwaStronyZParametrówStronyAdresu"](strona,true); local nazwa_strony=html_modul["NazwaStronyZParametrówStronyAdresu"]({parametry=strona,["czy naprawiać"]=true,},nil); </syntaxhighlight> Wartość nagłówka jest w zmiennej: <syntaxhighlight lang="lua"> -- Wydzielono z adresu strony nazwę artykułu, usuwając z niego zbędne odstępy i myślniki dolne; local nazwa_strony="Strona główna"; </syntaxhighlight> == {{Code|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}} == Funkcja poprawia pełny adres strony, rozdzielając ją na części, a później łącząc. Funkcja ma własną tabelę buforową nazw. Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki funkcji tablicy transportu, * {{Code|czy_naprawiaj}} - parametr przedstawiający, czy ma naprawiać pełny adres strony, działając w sposób specyficzny w zależności od funkcji, która operuje na jej częściach, wykorzystując funkcje, które są napisane w linii zaraz poniżej, * {{Code|tabela_nazw_adresu}} - tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}. Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: * {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}} - nazwa jednostki (strony), tzn. jego adres, * {{Code|czy_naprawiaj}} (parametr funkcji), {{Code|2}} lub {{Code|czy naprawiać}} - znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji. Kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, są w kolejności, w jakim te one przedstawiono. Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}}. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local strona="https://pl.wikibooks.org/wiki/Strona ___ główna ? action____=____edit ____&____ section = 2 # ____ Nagłówek____________strony "; local tabela_nazw_adresu={}; -- Równoważne: local parametry=html_modul["PoprawAdresNagłówkaOrazParametrówStronyAdresu"](strona,true,tabela_nazw_adresu); local adres=html_modul["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]({strona=strona,["czy naprawiać"]=true,},nil,tabela_nazw_adresu); </syntaxhighlight> Wartość pełnego adresu strony poprawiona jest w zmiennej: <syntaxhighlight lang="lua"> -- Wydzielono z pełnego adresu strony adres, parametry i nagłówek, naprawione i złączone ze sobą w pełny poprawiony adres; local adres="https://pl.wikibooks.org/wiki/Strona_główna?action=edit&section=2#Nagłówek strony"; </syntaxhighlight> == {{Code|p.URLStrona}} == Funkcja z adresu '''URL''' wydziela nazwę serwera i nazwę strony. On nie może zawierać w sobie protokołu, tylko musi zaczynać od {{Code|<nowiki>//</nowiki>}}. Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.URLStrona(frame)...end; </syntaxhighlight> Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: * {{Code|1}} lub {{Code|url}} - adres strony, * {{Code|2}} lub {{Code|ukośnik}} - czy do nazwy strony ma wliczać ukośnik. Kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, są w kolejności, w jakim te one przedstawiono. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"): local url="//pl.wikibooks.org/wiki/Strona_artykułu"; local serwer,nazwa=html_modul.URLStrona{url=url,["ukośnik"]=true,}; </syntaxhighlight> Wartości zmiennych kryją się pod: <syntaxhighlight lang="lua"> -- Widzimy, że nazwa serwera jest bez prawych ukośników; local serwer="pl.wikibooks.org"; -- Nazwa strony zaczyna się bez ukośnika, bo powiedzieliśmy funkcji, by nie brał prawych ukośników, które są na początku nazwy strony, bez nazwy serwera i protokołu, ale w sobie może mieć on, ale nie musi; local nazwa="wiki/Strona_artykułu"; -- Gdyby było ["ukośnik"]=false, to wtedy otrzymalibyśmy inny wynik, czyli: local nazwa="/wiki/Strona_artykułu"; </syntaxhighlight> == {{Code|p["UrlBezProtokołu"]}} == Funkcja adresowi z protokołem usuwa to właśnie, a jak podamy adres „mail”, to podaje nazwę tego adresu, bez niego. Drugą zwracaną nazwą jest nazwa protokołu,a jak się nie da go wyznaczyć, to funkcja zwraca wartość {{Code|nil}}. Trzecia wartość, to numer sposoby, a jeżeli żaden sposób nie pasuje, to ta wartość jest {{Code|-1}}, a gdy adres mail {{Code|1}}, dla adresu z protokołem {{Code|2}}, a dla adresu bez protokołu {{Code|3}}. Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["UrlBezProtokołu"]=function(frame)...end; </syntaxhighlight> Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: * {{Code|1}} lub {{Code|url}} - adres strony, ewentualnie z opcjonalnym protokołem. Kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, są w kolejności, w jakim te one przedstawiono. Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}} lub {{Code|url}}. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local mail="użytkownik@skrzynka.org"; -- Równoważnie: local adres1,protokol1,sposob1=html_modul["UrlBezProtokołu"](mail); local adres1,protokol1,sposob1=html_modul["UrlBezProtokołu"]{url=mail,}; --- local url="https://pl.wikibooks.org/wiki/Strona"; -- Równoważnie: local adres2,protokol2,sposob2=html_modul["UrlBezProtokołu"](url); local adres2,protokol2,sposob2=html_modul["UrlBezProtokołu"]{url=url,}; --- local url="//pl.wikibooks.org/wiki/Strona"; -- Równoważnie: local adres3,protokol3,sposob3=html_modul["UrlBezProtokołu"](url); local adres3,protokol3,sposob3=html_modul["UrlBezProtokołu"]{url=url,}; --- local url="pl.wikibooks.org/wiki/Strona"; -- Równoważnie: local adres4,protokol4,sposob4=html_modul["UrlBezProtokołu"](url); local adres4,protokol4,sposob4=html_modul["UrlBezProtokołu"]{url=url,}; </syntaxhighlight> Wyniki otrzymane z powyższych przykładów są: <syntaxhighlight lang="lua"> local adres1,protokol1,sposob1="//skrzynka.org","mail",1; local adres2,protokol2,sposob2="//pl.wikibooks.org/wiki/Strona","https",2; local adres3,protokol3,sposob3="//pl.wikibooks.org/wiki/Strona",nil,3; local adres4,protokol4,sposob4="//pl.wikibooks.org/wiki/Strona",nil,-1; </syntaxhighlight> == {{Code|p.DecodeKoduHTMLZnaku}} == Zamienia kody {{Strong|HTML}}, tzn. literowe (ogólny wzór {{Code|<nowiki>&(%a+);</nowiki>}}), dziesiętne (ogólny wzór {{Code|<nowiki>&#(%d+);</nowiki>}}) i szesnastkowe (ogólny wzór {{Code|<nowiki>&#x(%x+);</nowiki>}}) na odpowiednie znaki. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DecodeKoduHTMLZnaku(tekst)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} - tekst do zamienienia z dziesiętnymi, szesnastkowymi i literowymi kodami {{Strong|HTML}} na odpowiednie znaki. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); -- Tekst z kodami HTML: literowymi, dziesiętnymi i szesnastkowymi; local tekst="Oto jest link: &#x5B;&#x5B;Strona&#124;Nazwa linku&#93;&#x5D;, a w nim spacje niełamliwe&nbsp;i inne znaki: z alfabetu greckiego jak: &alpha;&Alpha;&beta;&Beta;&gamma;&Gamma;&delta;&Delta;&epsilon;&Epsilon;&zeta;&Zeta;&eta;&Eta;&theta;&Theta;&iota;&Iota;&kappa;&Kappa;&lambda;&Lambda;&mu;&Mu;&nu;&Nu;&xi;&Xi;&omicron;&Omicron;&pi;&Pi;&rho;&Rho;&sigma;&Sigma;&tau;&Tau;&upsilon;&Upsilon;&phi;&Phi;&chi;&Chi;&psi;&Psi;&omega;&Omega;"; -- Wywołanie funkcji odkodujący kody HTML; local tekst2=html_modul.DecodeKoduHTMLZnaku(tekst); </syntaxhighlight> Otrzymany wynik jest pod zmienną: <syntaxhighlight lang="lua"> -- Widzimy, że tekst został zdekodowany ze znaków HTML; local tekst2="Oto jest link: [[Strona|Nazwa linku]], a w nim spacje niełamliwe i inne znaki: z alfabetu greckiego jak: αΑβΒγΓδΔεΕζΖηΗθΘιΙκΚλΛμΜνΝξΞοΟπΠρΡσΣτΤυΥφΦχΧψΨωΩ"; </syntaxhighlight> == {{Code|p.ZamianaEncodeTekst}} == Adres strony dekoduje funkcją: {{LzLua|mw.uri.decode}}, następnie koduje, jeszcze więcej niż było na samym początku, według: {{LzLua|w.uri.encode}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZamianaEncodeTekst(tekst)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} - tekst do odkodowania i zakodowania jeszcze więcej niż było na początku zakodowane. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local tekst="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obs%C5%82uga"; local tekst2=html_modul.ZamianaEncodeTekst(tekst); </syntaxhighlight> Wynikiem funkcji, co kryje się pod zmienną {{Code|tekst2}}: <syntaxhighlight lang="lua"> local tekst2="https%3A%2F%2Fpl.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DSzablon%3ALink_wewn%C4%99trzny%26action%3Dedit%23Obs%C5%82uga"; </syntaxhighlight> == {{Code|p.ZamianaEncodeNaPodstawieWzoruTekstu}} == Funkcja wyszukuje tekst do zamiany i działa na niego funkcją: {{Code|{{sr|#p.ZamianaEncodeTekst|p=Html}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,wzor)...end; </syntaxhighlight> Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); -- Tekst nie do końca zakodowany wydzielonego według poniższego wzoru; local tekst="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obsługa"; -- Wzór, który wydziela części do kodowania jeszcze bardziej niż były na samym początku; local wzor="[^/%?%=&:%#]+"; -- Wywołanie funkcji kodującej; local tekst2=html_modul.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,wzor); </syntaxhighlight> Wynikiem funkcji, co kryje się pod zmienną: <syntaxhighlight lang="lua"> -- Zakodowało jeszcze więcej niż na samym początku było zakodowane; local tekst2="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obs%C5%82uga"; </syntaxhighlight> == {{Code|p.StronaParametryIdentyfikacjaAdresuHtml}} == Funkcja z całkowitego adresu składający się z adresu właściwego, parametrów i nagłówka, rozdzielane jest na trzy części, z których się składa. Funkcja sprawdza, czy jakikolwiek kody {{Strong|HTML}} występują w pełnym adresie strony, jeżeli są to przedtem koduje jeszcze lepiej kody znaków {{Code|<nowiki>#</nowiki>}}, przy pomocy funkcji: {{Code|{{sr|#p.EncodeHashKoduHtmlTekstu|p=Html}}}}, a później w kodach {{Strong|HTML}} znak {{Code|<nowiki>#</nowiki>}} jest zamieniany na kod literowy {{Strong|HTML}}, czyli: {{Code|{{Nowiki|&num;}}}}, funkcją: {{Code|{{sr|#p.EncodeTempHashKoduHtmlTekstu|p=Html}}}} (jeżeli w adresie kody istnieją), wtedy cos powstaje w rodzaju dla kodu dziesietnego: {{Code|<nowiki>&&num;(%d+);</nowiki>}}, i szesnastkowego: {{Code|<nowiki>&&num;x(%x+);</nowiki>}} - gdzie w nich {{Code|<nowiki>#</nowiki>}} został zamieniony na {{Code|{{Nowiki|&num;}}}}, które są przedstawione według wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Funkcja rozdziela to na trzy części, a później odkodowuje każdą część funkcją: {{Code|{{sr|#p.DecodeTempHashKoduHtmlTekstu|p=Html}}}} (jeżeli w adresie kody w ogóle istniały), i podobnie później: {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}} (jeżeli kody znaku: {{Code|<nowiki>#</nowiki>}}, były wcześniej). Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.StronaParametryIdentyfikacjaAdresuHtml(adres)...end; </syntaxhighlight> Parametry funkcji: * {{Code|adres}} - adres do potrzelenia na trzy części. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local adres="https://pl.wikibooks.org/wiki/Strona&#32;główna&num;&#x23;&#35;To_nie_jest nagłówek?action=edit&section=2#Nagłówek strony"; -- Adresstrony jedynie rozkładaa się na: "strona", "parametry" i "nagłówek"; local strona,parametry,naglowek=html_modul.StronaParametryIdentyfikacjaAdresuHtml(adres); </syntaxhighlight> Otrzymane wartości tych zmiennych kryją się pod adresami: <syntaxhighlight lang="lua"> local strona,parametry,naglowek="https://pl.wikibooks.org/wiki/Strona&#32;główna&#35;&#35;&#35;To_nie_jest nagłówek","action=edit&section=2","Nagłówek strony",3; </syntaxhighlight> Funkcja zwraca trzy wartości, tzn. adres właściwy (bez parametrów i nagłówka), parametry (używane jako dodatek do adresów przy formułowaniu formularzy) i nagłówek (który jest adresem na stronie do odpowiedniego elementu o danym atrybucie: {{Code|id}}). == {{Code|p.TworzenieAdresuHtml}} == Funkcja łączy, stronę, parametry i nagłówek strony, w pełną nazwę strony (adresu), dalej jest uruchamiana funkcja ddekodująca ciagi znakowe: {{Code|{{Nowiki|&amp;&num;}}}}. Funkcja wykorzystuje do dekodowania tego {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.TworzenieAdresuHtml(strona,parametry,naglowek)...end; </syntaxhighlight> Parametry funkcji: * {{Code|strona}} - nromalny adres strony, bez parametrów i nagłówka, * {{Code|parametry}} - parametry strony w formacie {{Code|nazwa{{=}}wartość}} oddzielone od siebie znakiem {{Code|<nowiki>&</nowiki>}}, * {{Code|nagłówek}} - nagłówek linkujący do {{Code|id}} jakiegos elementyna stronie, Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local strona,parametry,naglowek,ile="https://pl.wikibooks.org/wiki/Strona&#32;główna&num;&#35;&#x23;To_nie_jest nagłówek","action=edit&section=2","Nagłówek strony",3; local adres=html_modul.TworzenieAdresuHtml(strona,parametry,naglowek); </syntaxhighlight> Otrzymany pełny pojedynczy adres strony, z normalnym adresem strony z parametrami i nagłówkiem, jest ukryta: <syntaxhighlight lang="lua"> local adres="https://pl.wikibooks.org/wiki/Strona&#32;główna&#35;&#35;&#35;To_nie_jest nagłówek?action=edit&section=2#Nagłówek strony"; </syntaxhighlight> Funkcja zwraca całkowity adres z adresem właściwym, parametrami (po {{Code|<nowiki>?</nowiki>}}, jeżeli po nim występują wartości przyrównane nazwą zmiennych {{Strong|HTML}}) i nagłówkiem (po {{Code|<nowiki>#</nowiki>}}). == {{Code|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}} == Pełny adres strony, bezprotokolarny (lub protokolarny, jeżeli rozdzielimy, w pierwszej funkcji anonimowej w tej nagłówku, na protokół i adres bezprotokolarny, czyli na dwie części, zrobimy operacje, a później je złączymy w nim), linków zewnętrznych lub wewnętrznych, z adresem właściwym, parametrami i nagłówkiem strony, po podziale na je trzy części funkcją {{Code|{{sr|#p.StronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}, następnie na każdą z tych elementów działamy odpowiednimi funkcjami, a potem ich wyniki łączymy w pełny adres strony funkcją {{Code|{{sr|#p.TworzenieAdresuHtml|p=Html}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,funkcja_strona,funkcja_parametry,funkcja_naglowek)...end; </syntaxhighlight> Parametry funkcji: * {{Code|adres}} - pełny adres do przetworzenia, * {{Code|funkcja_strona}} - funkcja, którą działamy na właściwy adres strony, bez parametrów i nagłówka, * {{Code|funkcja_parametry}} - funkcja, którą działamy na parametry adresu strony, * {{Code|funkcja_naglowek}} - funkcja, którą działamy na nagłówek strony adresu. Przykład takiego wywołania: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local function EncodeParametryURL(a,b,c,funkcja_operacji) return a..funkcja_operacji(b).."="..funkcja_operacji(c); end; local function OperacjeHtml(adres,funkcja_operacji) adres=mw.ustring.gsub(adres,"^(%??)([^&=]*)=([^&]*)",function(a,b,c)return EncodeParametryURL(a,b,c,funkcja_operacji);end); adres=mw.ustring.gsub(adres,"(&)([^&=]*)=([^&]*)",function(a,b,c)return EncodeParametryURL(a,b,c,funkcja_operacji);end); return adres; end; local funkcja_operacji={ [1]=function(tekst) return p.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,"[^/]+",p.ZamianaEncodeTekst); end, [2]=function(tekst) return p.ZamianaEncodeTekst(tekst); end, [3]=function(tekst) return p.ZamianaEncodeTekst(tekst); end, }; return html_modul.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres, -- Funkcja: funkcja_strona; function(strona,Func) strona=Func(strona); return strona; end, -- Funkcja: funkcja_parametry; OperacjeHtml, -- Funkcja: funkcja_naglowek; function(naglowek,Func) naglowek=Func(naglowek); return naglowek; end, funkcja_operacji ); </syntaxhighlight> == {{Code|p.EncodeParametryURL}} == Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}. Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale. Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.ZamianaEncodeTekst|p=Html}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.EncodeParametryURL(adres,w_adresie,funkcja_strona,funkcja_naglowek)...end; </syntaxhighlight> Parametry funkcji: * {{Code|adres}} - pełny adres strony z parametrami i nagłówkiem, * {{Code|z_kodowaniem}} - czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania, * {{Code|w_adresie}} - czy rozpatrywać cały adres, a nie tylko parametry, * {{Code|funkcja_strona}} - funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka, * {{Code|funkcja_naglowek}} - funkcja, którą działamy na nagłówek. Przykłady takiego wywołania: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local adres="//pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obsługa"; local adres2=html_modul.EncodeParametryURL(adres,true, function(strona,Func) strona=Func(strona); return strona; end, function(naglowek,Func) naglowek=Func(naglowek); return naglowek; end); </syntaxhighlight> Wartość zmiennej {{Code|adres2}} jest w wartości: <syntaxhighlight lang="lua"> local adres2="//pl.wikibooks.org/w/index.php?title=Szablon%3ALink_wewn%C4%99trzny&action=edit#Obs%C5%82uga"; </syntaxhighlight> == {{Code|p.EncodeZaawansowanyParametryURL}} == Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}. Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale. Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, ale przed nim wywoływana ajest funkcja {{LzLua|mw.uri.decode}}, a po nim {{LzLua|mw.uri.encode}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EncodeZaawansowanyParametryURL(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end; </syntaxhighlight> Parametry funkcji: * {{Code|adres}} - pełny adres strony z parametrami i nagłówkiem, * {{Code|z_kodowaniem}} - czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania, * {{Code|w_adresie}} - czy rozpatrywać cały adres, a nie tylko parametry, * {{Code|funkcja_strona}} - funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka, * {{Code|funkcja_naglowek}} - funkcja, którą działamy na nagłówek. Przykłady takiego wywołania: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local adres="Szablon:Link_wewnętrzny?action=edit#Obsługa?"; local adres2=html_modul.EncodeZaawansowanyParametryURL(adres,true, function(strona,Func) strona=Func(strona); return strona; end, function(naglowek,Func) naglowek=Func(naglowek); return naglowek; end); </syntaxhighlight> Wartość zmiennej {{Code|adres2}} jest w wartości: <syntaxhighlight lang="lua"> local adres2="Szablon%3ALink_wewn%C4%99trzny?action=edit#Obs%C5%82uga%26%2363%3B"; </syntaxhighlight> == {{Code|p.EncodeParametryHtml}} == Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}. Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale. Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.EncodeHtml|p=Html}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EncodeParametryHtml(parametr,w_adresie,funkcja_strona,funkcja_naglowek)...end; </syntaxhighlight> Parametry funkcji: * {{Code|adres}} - pełny adres strony z parametrami i nagłówkiem, * {{Code|w_adresie}} - czy rozpatrywać cały adres, a nie tylko parametry, * {{Code|funkcja_strona}} - funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka, * {{Code|funkcja_naglowek}} - funkcja, którą działamy na nagłówek. Przykłady takiego wywołania: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local adres="Szablon:Link_wewnętrzny?action=edit#Obsługa?"; local adres2=html_modul.EncodeParametryHtml(adres,true, function(strona,Func) strona=Func(strona); return strona; end, function(naglowek,Func) naglowek=Func(naglowek); return naglowek; end); </syntaxhighlight> Wartość zmiennej {{Code|adres2}} jest w wartości: <syntaxhighlight lang="lua"> local adres2="Szablon:Link_wewn%C4%99trzny?action=edit#Obs%C5%82uga%3F"; </syntaxhighlight> == {{Code|p.EncodeZaawansowanyParametryHtml}} == Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}. Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale. Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.EncodePodstawoweHtmlTekstu|p=Html}}}}, a przed nim wywoływana jest {{LzLua|mw.uri.decode}}, a po nim jeżeli jest włączone kodowanie w zmiennej drugiej funkcji, wtedy {{LzLua|mw.uri.encode}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EncodeZaawansowanyParametryHtml(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end; </syntaxhighlight> Parametry funkcji: * {{Code|adres}} - pełny adres strony z parametrami i nagłówkiem, * {{Code|z_kodowaniem}} - czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania, * {{Code|w_adresie}} - czy rozpatrywać cały adres, a nie tylko parametry, * {{Code|funkcja_strona}} - funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka, * {{Code|funkcja_naglowek}} - funkcja, którą działamy na nagłówek. Przykłady takiego wywołania: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local adres="Szablon:Link_wewnętrzny?action=edit#Obsługa?"; local adres2=html_modul.EncodeZaawansowanyParametryHtml(adres,true,true, function(strona,Func) strona=Func(strona); return strona; end, function(naglowek,Func) naglowek=Func(naglowek); return naglowek; end); </syntaxhighlight> Wartość zmiennej {{Code|adres2}} jest w wartości: <syntaxhighlight lang="lua"> local adres2="Szablon%3ALink_wewn%C4%99trzny?action=edit#Obs%C5%82uga%26%2363%3B"; </syntaxhighlight> == {{Code|p.EncodeHashKoduHtmlTekstu}} == Funkcja koduje kod {{Strong|HTML}} znaku {{Code|<nowiki>#</nowiki>}}, czyli {{Code|{{Nowiki|&num;}}}}, {{Code|{{Nowiki|&#35;}}}} i {{Code|{{Nowiki|&#x23;}}}}. Te wszystkie kody funkcja zamienia je z każdnych na kod: {{Code|{{Nowiki|&amp;num;}}}}. Funkcja zwraca przetworzony tekst, ze zmienną {{Code|ile}} mówiącej ile jest możliwych kodów na stronie, także z {{Code|ile2}} wskazującej, ile jest kodów na stronie rozwazanego znaku. Funkcja używana, gdy nie chcemy, by dodatkowe znaki {{Code|<nowiki>#</nowiki>}} przeskadzały na rozkład adresu strony na właściwy adres, parametry i nagłówek strony, co po rozkładzie wywoływana jest jego też jego funkcja odwrotna {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}}, a tak powstałe znaki {{Code|{{Nowiki|&#35;}}}} ze wszystkich tych kodów {{Code|<nowiki>#</nowiki>}} według pewnych funkcji modułu {{Code|{{ld2|Html}}}}, że one nie zostaną odkodowane, bo są one pomijane. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EncodeHashKoduHtmlTekstu(tekst)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} - tekst do przetworzenia. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); -- Kody do zamienienia local tekst="&num;, &#35; i &#x23;"; -- Przetwarzanie tekstu local tekst2,ile,ile2=html_modul.EncodeHashKoduHtmlTekstu(tekst); </syntaxhighlight> Wynik jest pod zmienną: <syntaxhighlight lang="lua"> -- Wszystkie możliwe warianty funkcja zamieniła na to samo, czyli na: "&amp;num;" kodu HTML "&num;" dla znaku "#"; local tekst2,ile,ile2="&amp;num;, &amp;num; i &amp;num;",3,3; </syntaxhighlight> == {{Code|p.DecodeHashKoduHtmlTekstu}} == Jeżeli dokonano zamiany możliwych kodów {{Code|{{Nowiki|&num;}}}}, {{Code|{{Nowiki|&#35;}}}} i {{Code|{{Nowiki|&#x23;}}}} na {{Code|{{Nowiki|&num;num}}}}, wtedy druga zmienna jest większa od zera, wtedy możliwa jest tego zamiana na kod {{Code|{{Nowiki|&#35;}}}} kodu {{Code|{{Nowiki|&num;num}}}}, używając tej funkcji. Funkcja używana, gdy właściwy adres, parametry i nagłówek strony zostały po rozłączeniu na te części z pełnego adresu strony, wraz z innymi funkcjami odkodowującymi znaki niektóre {{Strong|HTML}}, oraz jeżeli ciało jej wersji prostej została wywołana wcześniej. Jest to odwrotność funkcji {{Code|{{sr|#p.EncodeHashKoduHtmlTekstu|p=Html}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DecodeHashKoduHtmlTekstu(tekst,ile)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} - tekst do przetworzenia, * {{Code|ile}} - {{Code|<nowiki>ile>0</nowiki>}}, jeżeli dokonano możliwych zamian kodów znaku {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|&num;num}}}}. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); -- Zamienione wcześniej kody: tekstu "&num;, &#35; i &#x23;", kolejno na "&amp;num;"; local tekst="&amp;num;, &amp;num; i &amp;num;"; -- Odkodowanie znaków "&amp;num;" w tekście; local tekst2=html_modul.DecodeHashKoduHtmlTekstu(tekst,3); </syntaxhighlight> Wynik jest ukryty pod zmienną: <syntaxhighlight lang="lua"> local tekst2="&#35;, &#35; i &#35;"; </syntaxhighlight> == {{Code|p.EncodeTempHashKoduHtmlTekstu}} == Jeżeli mamy jakieś kody {{Strong|HTML}}, to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|&num;}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EncodeTempHashKoduHtmlTekstu(tekst)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} - tekst do przetworzenia. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); -- Mamy tutaj kody HTML znaku: "#", czyli: "&#35;" i "&#x23;" oraz jeden od spacji: "&#32;";, a tam "#"zamieniamy na "&num;"; local tekst="https://pl.wikibooks.org/wiki/Strona&#32;główna&#35;&#35;&#x23;To_nie_jest nagłówek?action=edit&section=2#Nagłówek strony"; -- Otrzymamy przetworzony tekst oraz ile uzyskamy znaków z kodem HTML dziesiętnym "ile1" i szesnastkowym "ile2"; local tekst2,ile1,ile2=html_modul.EncodeTempHashKoduHtmlTekstu(tekst); </syntaxhighlight> Wynik tego jest pod zmienną: <syntaxhighlight lang="lua"> local tekst2,ile1,ile2="https://pl.wikibooks.org/wiki/Strona&&num;32;główna&&num;35;&&num;35;&&num;x23;To_nie_jest nagłówek?action=edit&section=2#Nagłówek strony",3,1; </syntaxhighlight> == {{Code|p.DecodeTempHashKoduHtmlTekstu}} == Jeżeli mamy jakieś kody {{Strong|HTML}}, to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|&num;}}}}. One tak zostały zamienione funkcją {{Code|{{sr|#p.EncodeTempHashKoduHtmlTekstu|p=Html}}}}. Po rozłożeniu na trzy części pełnego adresu strony, tzn. na właściwy adres, parametry i nagłówek strony, możemy wywołać dla każdej z nich tę funkcję, wykonując operację odwrotną. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DecodeTempHashKoduHtmlTekstu(tekst,ile1,ile2)...end; </syntaxhighlight> Parametry zwykłe funkcji: * {{Code|tekst}} - tekst do przetworzenia i po rozdzieleniu na trzy części, * {{Code|ile1}} - ile jest przetworzonych kodów dziesietnych prez funkcje do rozważanej prostej, * {{Code|ile2}} - ile jest przetworzonych kodów szesnastkowych przez funkcją do rozważanej prostej. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); -- Mamy tutaj kody HTML znaku: "#", czyli: "&&num;35;" i "&&num;x23;" oraz jeden od spacji: "&&num;32;";, a tam "#"zamieniamy na "&num;"; local tekst="https://pl.wikibooks.org/wiki/Strona&&num;32;główna&&num;35;&&num;35;&&num;x23;To_nie_jest nagłówek?action=edit&section=2#Nagłówek strony"; -- Otrzymamy przetworzony tekst, do którego wsadzamy ile uzyskamy znaków z kodem HTML dziesiętnym "ile1" i szesnastkowym "ile2" w wywołaniu local tekst,ile1,ile2=p.EncodeTempHashKoduHtmlTekstu(tekst); local tekst2=html_modul.EncodeTempHashKoduHtmlTekstu(tekst,3,1); </syntaxhighlight> Wynik tego jest pod zmienną: <syntaxhighlight lang="lua"> local tekst2="https://pl.wikibooks.org/wiki/Strona&#32;główna&#35;&#35;&#x23;To_nie_jest nagłówek?action=edit&section=2#Nagłówek strony"; </syntaxhighlight> == {{Code|p.AdresDomniemanieBezProtokolarnyEncodeURL}} == Funkcja domyślnie koduje adres bezprotokolarny, a z podaniem drugiej wartości {{Code|true}} protokolarny. Funkcja wykorzystuje funkcję {{Code|{{sr|#p.ZamianaEncodeNaPodstawieWzoruTekstu|p=Html}}}}. A jeżeli druga wartość odpowiada prawdziwości, to korzystamy z {{Code|{{sr|#p["UrlBezProtokołu"]|p=Html}}}} na rozkład na adres bezprotokolarny i protokół. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AdresDomniemanieBezProtokolarnyEncodeURL(adres,protokolarny)...end; </syntaxhighlight> Parametry funkcji: * {{Code|adres}} - adres do zakodowania, * {{Code|protokolarny}} - czy ma rozkładać adres na nazwę strony i protokół. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); -- Adres protokonalny; local adres11="https://pl.wikibooks.org/wiki/Strona_główna?action=edit&section=2#Nagłówek strony"; local adres12=html_modul.AdresDomniemanieBezProtokolarnyEncodeURL(adres11,true); -- Adres bezprotokonalny; local adres21="//pl.wikibooks.org/wiki/Strona_główna?action=edit&section=2#Nagłówek strony"; local adres22=html_modul.AdresDomniemanieBezProtokolarnyEncodeURL(adres21,false); </syntaxhighlight> Wynik wartości {{Code|adres12}} i {{Code|adres12}}: <syntaxhighlight lang="lua"> -- Zakodowany adres z protokołem local adres12="https://pl.wikibooks.org/wiki/Strona_g%C5%82%C3%B3wna?action=edit&section=2#Nag%C5%82%C3%B3wek%20strony"; -- Zakodowany adres bez protokołu local adres22="//pl.wikibooks.org/wiki/Strona_g%C5%82%C3%B3wna?action=edit&section=2#Nag%C5%82%C3%B3wek%20strony"; </syntaxhighlight> == {{Code|p.UriEncode}} == Funkcja do kodowania adresów tylko z protokołem, wartości bez protokołu nie obsługuje. Wykorzystuje {{Code|{{sr|#p.AdresDomniemanieBezProtokolarnyEncodeURL|p=Html}}}}. Do wyszukiwania adresów jest brana funkcja {{Code|{{sr|#p.PobierzParametr|p=Html}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UriEncode(frame)...end; </syntaxhighlight> Parametry tablicy ramki tablicy transportu: * {{Code|html}} - adres z protokołem strony. Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|html}}. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); -- Adres protokonalny; local adres="https://pl.wikibooks.org/wiki/Strona_główna?action=edit&section=2#Nagłówek strony"; -- Równoważnie: local adres2=html_modul.UriEncode{html=adres,}; local adres2=html_modul.UriEncode(adres); </syntaxhighlight> Wynik jest w zmiennej: <syntaxhighlight lang="lua"> local adres2="https://pl.wikibooks.org/wiki/Strona_g%C5%82%C3%B3wna?action=edit&section=2#Nag%C5%82%C3%B3wek%20strony"; </syntaxhighlight> == {{Code|p.EncodePodstawoweHtmlTekstu}} == Funkcja blokuje odkodowywanie możliwych kodów {{Strong|HTML}} znaku {{Code|<nowiki>#</nowiki>}}, w tym celu wywoływana jest funkcja: {{Code|{{sr|#p.KodowanieOmijanieFunkcyjne(html,...)|p=Html}}}}, do omijania tego znaku, funkcja omija tylko znaki zapisane w kodach {{Strong|HTML}}, tzn. {{Code|{{Nowiki|&#35}}}}, w tym celu wszystkie kody tego znaku zamieniamy na jeden, przed wywołaniem tej funkcji, funkcjami: {{Code|{{sr|#p.EncodeHashKoduHtmlTekstu|p=Html}}}} i {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}}. Ta funkcja w pierwszym kroku, w nim we wspomnianej funkcji wywołanej w funkcji anonimowej, wywołuje funkcję dekodujące znaki, czyli: {{Code|{{sr|#p.DecodeKoduHTMLZnaku|p=Html}}}}, do odkodowania kodów, {{Strong|HTML}}, dziesiętnych, szesnastkowych i literowych. Na samym końcu kodowane są specjalne znaki na podstawie: {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, na kody {{Strong|HTML}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|elementy_adresu_strony}} - funkcja do podstawowego kodowania adresu. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local adres="Szablon:Link_wewnętrzny?action=edit#Obsługa?"; local adres2=html_modul.EncodePodstawoweHtmlTekstu(adres); </syntaxhighlight> Wartość zmiennej jest ukryta pod: <syntaxhighlight lang="lua"> local adres2="Szablon:Link_wewnętrzny&#63;action&#61;edit&#35;Obsługa&#63;"; </syntaxhighlight> == {{Code|p.EncodeElementyAdresuStrony}} == Gdy mamy problem (przypadek) z parametrami adresu strony,wtedy do kodowania wywoływana jest funkcja {{Code|{{sr|#p.EncodeZaawansowanyParametryHtml|p=Html}}}}, a gdy posługujemy się właściwym adresem strony lub nagłówkiem, wtedy dekodujemy '''URL''' funkcją {{LzLua|mw.uri.decode}}, następnie {{Code|{{sr|#p.EncodePodstawoweHtmlTekstu|p=Html}}}}, i jeżeli mały włączone kodowanie, następnie {{LzLua|mw.uri.encode}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EncodeElementyAdresuStrony(elementy_adresu_strony,czy_parametry_strony,z_kodowaniem)...end; </syntaxhighlight> Parametry funkcji: * {{Code|elementy_adresu_strony}} - element adresu strony, * {{Code|czy_parametry_strony}} - czy parametry strony rozważać, jako że wtedy jest taki adres jako parametry, * {{Code|z_kodowaniem}} - czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local elementy_adresu_strony="Obsługa?"; local elementy_adresu_strony2=html_modul.EncodeElementyAdresuStrony(elementy_adresu_strony,false,true); </syntaxhighlight> Wartość zmiennej jest ukryta pod: <syntaxhighlight lang="lua"> local elementy_adresu_strony2="Obs%C5%82uga%26%2363%3B"; </syntaxhighlight> == {{Code|p.AdresProjektuEncodeHtml}} == Funkcja korzysta do dekodowania na samym początku '''URL''' {{LzLua|mw.uri.decode}}, a na końcu {{LzLua|mw.uri.encode}}, jeżeli jest włączone kodowanie, między czasie korzysta z {{Code|{{sr|#p.EncodePodstawoweHtmlTekstu|p=Html}}}}. Główny elementem funkcyjnym jest {{Code|{{sr|#p.EncodeZaawansowanyParametryHtml|p=Html}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AdresProjektuEncodeHtml(frame,z_kodowaniem,protokolarny)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki funkcji tablicy transportu modułu, * {{Code|z_kodowaniem}} - czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania, * {{Code|protokolarny}} - czy uważać przy kodowaniu na protokoły pełnych adresów stron. Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: * {{Code|html}} - adres do kodowania, * {{Code|encode}} - czy kodować. Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|html}}. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local adres="https://pl.wikibooks.org/wiki/Strona_&główna?&?action=edit&section=2&title=Nazwa strony szablonu: {{!}}#Nagłówek strony"; local adres2=html_modul.AdresProjektuEncodeHtml(adres,false,true); local adres3=html_modul.AdresProjektuEncodeHtml(adres,true,true); </syntaxhighlight> Wartość zmiennej jest ukryta pod: <syntaxhighlight lang="lua"> local adres2="https://pl.wikibooks.org/wiki/Strona_&#38;główna&#63;&#38;?action=edit&section=2&title=Nazwa strony szablonu: &#123;&#123;!&#125;&#125;#Nagłówek strony"; local adres3="https://pl.wikibooks.org/wiki/Strona_%26%2338%3Bg%C5%82%C3%B3wna%26%2363%3B%26%2338%3B?action=edit&section=2&title=Nazwa%20strony%20szablonu%3A%20%26%23123%3B%26%23123%3B%21%26%23125%3B%26%23125%3B#Nag%C5%82%C3%B3wek%20strony"; </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 3xs3uav0o0sg8ao5ia2kbfczrw3hzq3 553483 553443 2026-08-30T04:59:59Z Persino 2851 /* {{Code|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)}} */ 553483 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Html}}|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 html_modul=require("Module:Html"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Moduł zawiera funkcje do posługiwania się dziesiętnymi, szesnastkowymi i literowymi kodami {{Strong|HTML}} i zamieniania ich na odpowiednie znaki, zamieniania znaków na ich kody dziesiętne, i odwrotnie. Kodowaniem i dekodowaniem {{Strong|URL}} adresów internetowych, parametrów i nagłówków. Rozdzielaniem pełnych adresów na nazwę strony, zapytanie i nagłówek, odpowiednich ich kodowaniem, a potem ich łączenie z powrotem do innej wartości zwykle niż wcześniej tego samego ciągu. == {{Code|p.KodowanieOmijanieFunkcyjne}} == Funkcja wywołuje funkcję modułu {{Code|{{ld2|Szeregi}}}} zwaną {{Code|{{sr|#p.SzeregiOmijanieFunkcyjne|p=Szeregi}}}}. Domyślnym wzorem jest {{Code|<nowiki>&([^&;%s]+);</nowiki>}}, ale można go zmienić na inny. Drugą funkcją podawaną do tej funkcji jest domyślnym obiektem funkcyjnym anonimowym, który nie podaje się do funkcji w nagłówku: <syntaxhighlight lang="lua"> function(kod) return "&"..kod..";"; end </syntaxhighlight> Gdzie {{Code|kod}} jest elementem przechwytywanym kodu {{Strong|HTML}}, który jest określony poprzez nawiasy okrągłe we wzorze podawanym jako argument lub, jeśli jest on równy {{Code|nil}}, wtedy we wzorze domyślnym, który w takim razie jest rozpatrywany. Funkcja służy do omijania wszystkich kodów {{Strong|HTML}} lub tylko niektórych i robienia na nich operacji za pomocą funkcji podawanej jako ostatni parametr. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KodowanieOmijanieFunkcyjne(html,normalnie,wzor,funkcja)...end; </syntaxhighlight> Parametry funkcji: * {{Code|html}} - ciąg do przetworzenia, w częściach bez parametrów omijanych, * {{Code|normalnie}} - czy ma przetwarzać tekst pomijając, w przeciwnym wypadku tak nie robi, * {{Code|wzor}} - wzór do elementów pomijanych, wzór może mieć tylko jeden element przechwytywany, * {{Code|funkcja}} - funkcja robiąca operacje na przetworzonych subciągach bez elementów pomijanych. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local tekst="Oto jest tekst wywołania: \"&#35;\""; local tekst2=html_modul.KodowanieOmijanieFunkcyjne(tekst,true,"&(#35);",function(tekst) return mw.uri.encode(tekst); end); </syntaxhighlight> Wyniki działania: <syntaxhighlight lang="lua"> local tekst2="Oto+jest+tekst+wywo%C5%82ania%3A+%22&#35;%22"; </syntaxhighlight> == {{Code|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}} == Funkcja zamienia znaki specjalne wikikodu i wyrażeń regularnych na kody dziesiętne {{Strong|HTML}}. Zamieniane znaki, to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to nie jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>|[]()+-*?.^$%'</nowiki>}}. Jest ona potrzebna do zamiany nazw stron nazw wewnętrznych na {{NS|l=tak}}, a w nich te znaki na kody {{Code|HTML}}, by wykorzystać później to w funkcji: {{Code|mw.title.makeTitle}}. Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]=function(frame)...end; </syntaxhighlight> Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: * {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}}. Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument. Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}. Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie: <syntaxhighlight lang="mediawiki"> {{#invoke:Html|TransformacjaKlasyZnakowejDoKoduHtmlCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}} </syntaxhighlight> Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local tekst="Oto jest link: [[user:użytkownik|(Użytkownik)]]."; -- Równoważne: local tekst2=html_modul["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]{tekst=tekst,}; -- Równoważne: local tekst2=html_modul["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]{args={tekst=tekst,},}; local tekst2=html_modul["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](tekst); </syntaxhighlight> Wyniki działania: <syntaxhighlight lang="lua"> local tekst2="Oto jest link: &#91;&#91;user:użytkownik&#124;&#40;Użytkownik&#41;&#93;&#93;&#46;"; </syntaxhighlight> == {{Code|p["TransformacjaKoduHtmlDoZnakuCiągu"]}} == Zamienia w tekście znaki kodów {{Strong|HTML}} dziesiętne i szesnastkowe na odpowiednie znaki {{Strong|Unicode}}. Kody dziesiętne oznaczone są wyrażone wyrażeniem regularnym: {{Code|<nowiki>&#(%d+);</nowiki>}}, a szesnastkowe: {{Code|<nowiki>&#x(%x+);</nowiki>}}. Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["TransformacjaKoduHtmlDoZnakuCiągu"]=function(frame)...end; </syntaxhighlight> Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: * {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany kodów {{Strong|HTML}}, dziesiętnych i szesnastkowych, na znaki. Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument. Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}. Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie: <syntaxhighlight lang="mediawiki"> {{#invoke:Html|TransformacjaKoduHtmlDoZnakuCiągu|tekst=Oto jest link: &#91;&#91;user:użytkownik&#124;&#40;Użytkownik&#41;&#93;&#93;&#46;}} </syntaxhighlight> Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local tekst="Oto jest link: &#91;&#91;user:użytkownik&#124;&#40;Użytkownik&#41;&#93;&#93;&#46;"; -- Równoważne: local tekst2=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"]{tekst=tekst,}; -- Równoważne: local tekst2=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"]{args={tekst=tekst,},}; local tekst2=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](tekst); </syntaxhighlight> Wyniki działania: <syntaxhighlight lang="lua"> local tekst2="Oto jest link: [[user:użytkownik|(Użytkownik)]]."; </syntaxhighlight> == {{Code|p.ZnakiSpecjalneTaguNowiki}} == Funkcja zamienia znaki specjalne, w tekście (w zawartości pomiędzy tagami tagu {{Tag|nowiki}}, by potem je tam umieścić, by pierwotna zawartość równała się tekstowi wyświetlanemu (aby on zamieniał się na tylko zwykły tekst, by nie był dalej rozwijalny względem funkcji: {{Code|frame:preproces}})), wikikodu na kody dziesiętne {{Strong|HTML}}. Zamieniane znaki to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>!{}|=<>[]</nowiki>}}. Dlatego te znaki, bo {{Code|<nowiki>=<>[]</nowiki>}} są częścią tagów mechanizmu {{Strong|HTML}}, a w tagach mogą być też linki wewnętrzne, czy zewnętrzne, i nierozwinięte szablony, a więc też i {{Code|<nowiki>{}|</nowiki>}}, a elementy {{Code|<nowiki>!{}|=</nowiki>}} są one częścią wiki-tabelek mechanizmu {{Code|MediaWiki}}, elementy te też mogą występować, gdzieś indziej w tekście w wikikodzie, również ze znakiem {{Code|<nowiki>=</nowiki>}} i z innymi tutaj wspomnianymi znakami tagowymi, też trzeba je zakodować nimi. Tak je kodujemy przez tę funkcję, by tak uzyskany tekst nie miał elementów mechanizmu {{Strong|HTML}}, ani {{Strong|MediaWiki}}. Funkcja potrzebuje, do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZnakiSpecjalneTaguNowiki(frame)...end; </syntaxhighlight> Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: * {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany znaków, z zestawu znaków specjalnych wskazanych w funkcji, występujących w tagach języka '''HTML''' do dziesiętnego kodu {{Strong|HTML}}. Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument. Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}. Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie: <syntaxhighlight lang="mediawiki"> {{#invoke:Html|ZnakiSpecjalneTaguNowiki|tekst=<span id="toc">Oto jest tekst, i link: [[Pomoc:Spis treści|Spis treści]]</span>.}} </syntaxhighlight> Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local tekst="<span id=\"toc\">Oto jest tekst, i link: [[Pomoc:Spis treści|Spis treści]]</span>."; -- Równoważne: local tekst2=html_modul.ZnakiSpecjalneTaguNowiki{tekst=tekst,}; -- Równoważne: local tekst2=html_modul.ZnakiSpecjalneTaguNowiki{args={tekst=tekst,},}; local tekst2=html_modul.ZnakiSpecjalneTaguNowiki(tekst); </syntaxhighlight> Wyniki działania: <syntaxhighlight lang="lua"> local tekst2="&#60;span id&#61;\"toc\"&#62;Oto jest tekst, i link: &#91;&#91;Pomoc:Spis treści&#124;Spis treści&#93;&#93;&#60;/span&#62;."; </syntaxhighlight> == {{Code|p.ZnakiSpecjalneWikiLinku}} == Zamienia znaki specjalne transformacji nagłówka adresów '''HTML''' (nagłówek zaczyna się od znaku {{Code|<nowiki>#</nowiki>}} - na samym końcu, w adresach stron, ale na samym początku w nich) na specjalne kody {{Strong|HTML}}. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]</nowiki>}}. Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZnakiSpecjalneWikiLinku(frame)...end; </syntaxhighlight> Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: * {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}}. Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument. Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}. Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie: <syntaxhighlight lang="mediawiki"> {{#invoke:Html|ZnakiSpecjalneWikiLinku|tekst={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}} </syntaxhighlight> Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local tekst="[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}"; -- Równoważne: local tekst2=html_modul.ZnakiSpecjalneWikiLinku{tekst=tekst,}; -- Równoważne: local tekst2=html_modul.ZnakiSpecjalneWikiLinku{args={tekst=tekst,},}; local html2=html_modul.ZnakiSpecjalneWikiLinku(tekst); </syntaxhighlight> Wyniki działania: <syntaxhighlight lang="lua"> local tekst2="&#91;pl&#93; Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: &#123;&#123;Szablon do używania&#124;parametr 1=wartość1&#124;parametr 2=wartość2&#125;&#125;"; </syntaxhighlight> == {{Code|p.EncodeSpecjalneZnakiHtml}} == Zamienia znaki specjalne adresu strony, jego parametrów (bez {{Code|<nowiki>?</nowiki>}} - wskazującej na początek adresu strony z parametrami, {{Code|<nowiki>&</nowiki>}} - oddzielające zmienne i ich wartości, {{Code|<nowiki>=</nowiki>}} - oddzielającej parametr od jej wartości w zmiennej) i nagłówka (bez {{Code|<nowiki>#</nowiki>}} na samym początku) na specjalne kody {{Strong|HTML}}, aby były one odróżnialne od innych specjalnych znaków adresów '''HTML'''. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]#=?&</nowiki>}}. Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EncodeSpecjalneZnakiHtml(frame,normalnie)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki funkcji tablicy transportu modułu, * {{Code|normalnie}} - czy ma omijać kody {{Strong|HTML}}. Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: * {{Code|html}} - zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}}, * {{Code|normalnie}} - czy ma omijać kody {{Strong|HTML}}, jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji. Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument. Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|html}}. Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie: <syntaxhighlight lang="mediawiki"> {{#invoke:Html|EncodeSpecjalneZnakiHtml|html={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}} </syntaxhighlight> Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|html2}} poniżej. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local html="[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}"; -- Równoważne: local html2=html_modul.EncodeSpecjalneZnakiHtml{html=html,}; -- Równoważne: local html2=html_modul.EncodeSpecjalneZnakiHtml{args={html=html,},}; local html2=html_modul.EncodeSpecjalneZnakiHtml(tekst); </syntaxhighlight> Wyniki działania: <syntaxhighlight lang="lua"> local html2="&#91;pl&#93; Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: &#123;&#123;Szablon do używania&#124;parametr 1&#61;wartość1&#124;parametr 2&#61;wartość2&#125;&#125;"; </syntaxhighlight> == {{Code|p.EncodeZnakProloguList}} == Szablon zamienia pierwszy znak wiki-listy (więc znak po {{Code|<nowiki>\n</nowiki>}}), tzn. znaki z: {{Code|<nowiki>#*;:</nowiki>}} na kod {{Strong|HTML}}, a znak bezpośrednio na samym początku od pewnego momentu, tzn. ten znak jest po znaku lub samym początku, to jest określane przez wyrażenie regularne: {{Code|<nowiki>^\n?</nowiki>}}, ten znak wiki-listy zamieniany jest na ten kod, a początkowy znak nowej linii, jeżeli istnieje, jest usuwany. To jest przyszykowane po to, gdyby w szablonie pierwszy wygenerowany znak, był tym znakiem listy (wtedy mechanizm {{Strong|MediaWiki}} generuje bezpośrednio przed nim znak nowej linii, który jest na początku łańcucha wygenerowany przez to), a więc ta funkcja służy też do tego. Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EncodeZnakProloguList(frame)...end; </syntaxhighlight> Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: * {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany z podanego zestawu znaków pierwszych znaków listy, mechanizmu {{Strong|MediaWiki}}, do dziesiętnego kodu {{Strong|HTML}}. Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument. Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}. Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie: <syntaxhighlight lang="mediawiki"> {{#invoke:Html|EncodeZnakProloguList|tekst= * Oto jest pierwszy element listy, *: Oto jest drugi element listy. }} </syntaxhighlight> Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local tekst="\n* Oto jest pierwszy element listy,\n*: Oto jest drugi element listy."; -- Równoważne: local tekst2=html_modul.EncodeZnakProloguList{tekst=tekst,}; -- Równoważne: local tekst2=html_modul.EncodeZnakProloguList{args={tekst=tekst,},}; local tekst2=html_modul.EncodeZnakProloguList(tekst); </syntaxhighlight> Wyniki działania: <syntaxhighlight lang="lua"> local tekst2="&#42; Oto jest pierwszy element listy,\n&#42;: Oto jest drugi element listy."; </syntaxhighlight> == {{Code|p.ParametryPrzypisaniaZnakowegoEncodeHtml}} == Eliminuje znaki specjalne nazw stron, bez parametrów, a parametry, tam gdzie one nie mogą występować, a jednak występują, opisujące parametry, tzn. od czego zaczynają się one, jak są one oddzielone, jak oddzielone są nazwy od ich wartości w przypadku parametru. Funkcja zamienia znaki {{Code|<nowiki>=%?&</nowiki>}} na kody dziesiętne {{Strong|HTML}}. Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Funkcja potrafi opcjonalnie omijać kody {{Strong|HTML}}, w zależności od podanego drugiego parametru. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParametryPrzypisaniaZnakowegoEncodeHtml(frame,normalnie)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki funkcji tablicy transportu modułu, * {{Code|normalnie}} - czy ma omijać kody {{Strong|HTML}}. Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: * {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}}, * {{Code|normalnie}} - czy ma omijać kody {{Strong|HTML}}, jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji. Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument. Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}. Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie: <syntaxhighlight lang="mediawiki"> {{#invoke:Html|ParametryPrzypisaniaZnakowegoEncodeHtml|tekst=Wikibooks:Strona?action=edit&section=2}} </syntaxhighlight> Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local tekst="Wikibooks:Strona?action=edit&section=2"; -- Równoważne: local tekst2=html_modul.ParametryPrzypisaniaZnakowegoEncodeHtml{tekst=tekst,}; -- Równoważne: local tekst2=html_modul.ParametryPrzypisaniaZnakowegoEncodeHtml{args={tekst=tekst,},}; local tekst2=html_modul.ParametryPrzypisaniaZnakowegoEncodeHtml(tekst); </syntaxhighlight> Wyniki działania: <syntaxhighlight lang="lua"> local tekst2="Wikibooks:Strona&#63;action&#61;edit&#38;section&#61;2"; </syntaxhighlight> == {{Code|p.PrzypisanieZnakoweEncodeHtml}} == Eliminuje znaki specjalne nazw stron, oddzielające nazwy parametrów od ich wartości, aby jak dana zmienna jest nienazwana (numerowana), aby nie była traktowana jako nazwana ze względu na występowanie znaku równości {{Code|{{=}}}}. Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PrzypisanieZnakoweEncodeHtml(frame)...end; </syntaxhighlight> Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: * {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany znaków przypisania {{Code|{{=}}}} do dziesiętnego kodu {{Strong|HTML}}. Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument. Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}. Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie: <syntaxhighlight lang="mediawiki"> {{#invoke:Html|PrzypisanieZnakoweEncodeHtml|tekst=Wikibooks:Strona=Parametry}} </syntaxhighlight> Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local tekst="Wikibooks:Strona=Parametry"; -- Równoważne: local tekst2=html_modul.PrzypisanieZnakoweEncodeHtml{tekst=tekst,}; -- Równoważne: local tekst2=html_modul.PrzypisanieZnakoweEncodeHtml{args={tekst=tekst,},}; local tekst2=html_modul.PrzypisanieZnakoweEncodeHtml(tekst); </syntaxhighlight> Wyniki działania: <syntaxhighlight lang="lua"> local tekst2="Wikibooks:Strona&#61;Parametry"; </syntaxhighlight> Użycie w szablonie w postaci parametry nienazwanego (numerowanego): <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|Wikibooks:Strona=Parametry}} </syntaxhighlight> może powodować pewne problemy, ta zmienna nie zostanie nazwana jako nienazwana, tylko jako nazwana o nazwie parametru {{Code|Wikibooks:Strona}} i wartości {{Code|Parametry}}. Aby tego uniknąć, wypadałoby napisać to wywołanie: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|Wikibooks:Strona&#61;Parametry}} </syntaxhighlight> Wtedy to zostanie na pewno zostanie potraktowane jako zmienna nienazwana (numerowana). Szczególnie to jest ważne, gdy używamy funkcji: {{Code|{{sr|#p["Rozwiń"]|p=Ramka}}}}, do rozwijania parametrów. W takim przypadku trzeba używać funkcji: {{Code|{{sr|#p.PrzypisanieZnakoweEncodeHtml|p=Html}}}}, aby zamienić przypisanie na parametr numerowany. == {{Code|p.ZamianaDwukropkaNaKodHtml}} == Zamienia dwukropki na kody dziesiętne {{Strong|HTML}}, tam gdzie one mają specjalne znaczenie, a po wyeliminowaniu ich (po zamianie) tracą owe znaczenie. Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZamianaDwukropkaNaKodHtml(frame)...end; </syntaxhighlight> Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: * {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany ze znaku dwukropka do dziesiętnego kodu {{Strong|HTML}}. Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument. Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}. Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie: <syntaxhighlight lang="mediawiki"> {{#invoke:Html|ZamianaDwukropkaNaKodHtml|tekst=subst:msg:Szablon:Nazwa_strony}} </syntaxhighlight> Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local tekst="subst:msg:Szablon:Nazwa_strony"; -- Równoważne: local tekst2=html_modul.ZamianaDwukropkaNaKodHtml{tekst=tekst,}; -- Równoważne: local tekst2=html_modul.ZamianaDwukropkaNaKodHtml{args={tekst=tekst,},}; local tekst2=html_modul.ZamianaDwukropkaNaKodHtml(tekst); </syntaxhighlight> Wyniki działania: <syntaxhighlight lang="lua"> local tekst2="subst&#58;msg&#58;Szablon&#58;Nazwa_strony"; </syntaxhighlight> == {{Code|p.KodHTMLZnaku}} == === Odpowiednik szablonowy === Odpowiednik szablonowy jest pod nazwą {{s|KodHTMLZnaku}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce. === Funkcja biblioteczna === Zamienia zadany znak na kod dziesiętny {{Strong|HTML}}, wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&amp;}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|&num;}}}}. Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KodHTMLZnaku(frame)...end; </syntaxhighlight> Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: * {{Code|1}} - zmienna, pod którym jest znak do zamiany na kod dziesiętny {{Strong|HTML}}, * {{Code|2}} - czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&amp;}}}}, a znak {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|&num;}}}}. Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument, ale wtedy musi być podany parametr {{Parametr|wyspecjalizowana|tak}}, gdy mamy zmienną {{Code|frame.args}}, a jeżeli ten argument nie został podany z wartością niepustą, wtedy są wyszukiwane elementy z {{Code|frame:getParent().args}}. Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}}. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local znak="k"; -- Równoważne: local tekst2=html_modul.KodHTMLZnaku{[1]=znak,}; -- Równoważne: local tekst2=html_modul.KodHTMLZnaku{args={[1]=znak,},}; local tekst2=html_modul.KodHTMLZnaku(znak); -- Równoważne: local tekst3=html_modul.KodHTMLZnaku{[1]=znak,[1]="tak",}; local tekst3=html_modul.KodHTMLZnaku{args={[1]=znak,[2]="tak",},}; </syntaxhighlight> Wyniki działania: <syntaxhighlight lang="lua"> local tekst2="&#107;"; local tekst3="&amp;&num;107;"; </syntaxhighlight> Szablonowo taką zamianę możemy napisać: * {{Code|{{s|KodHTMLZnaku|k}}}} → {{Tt|{{KodHTMLZnaku|k}}}} * {{Code|{{s|Nowiki|{{s|KodHTMLZnaku|k}}}}}} → {{Tt|{{Nowiki|{{KodHTMLZnaku|k}}}}}} * {{Code|{{s|KodHTMLZnaku|k|tak}}}} → {{Tt|{{KodHTMLZnaku|k|tak}}}} * {{Code|{{s|Nowiki|{{s|KodHTMLZnaku|k|tak}}}}}} → {{Tt|{{Nowiki|{{KodHTMLZnaku|k|tak}}}}}} Równie dobrze możemy napisać takie wywołania w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: <syntaxhighlight lang="mediawiki"> <!-- Wyświetla wynik: "&#107;"; --> {{#invoke:Html|KodHTMLZnaku|k|wyspecjalizowana=tak}} <!-- Wyświetla wynik: "&amp;&num;107;"; --> {{#invoke:Html|KodHTMLZnaku|k|tak|wyspecjalizowana=tak}} </syntaxhighlight> == {{Code|p["KodyHTMLZnakówWikiCiągu"]}} == === Odpowiednik szablonowy === Odpowiednik szablonowy jest pod nazwą {{s|KodyHTMLZnakówWikiCiągu}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce. === Funkcja biblioteczna === Zamienia ściśle określone znaki (zestaw kodów znajduje się na stronie: {{Code|{{ls2|KodyHTMLZnakówWikiCiągu/opis}}}}) na kody dziesiętne {{Strong|HTML}}, wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&amp;}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|&num;}}}}. Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p["KodyHTMLZnakówWikiCiągu"](frame)...end; </syntaxhighlight> Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: * {{Code|1}} - ciąg, pod którym są możliwe ściśle określone znaki są zamieniane na kod {{Strong|HTML}}, ciąg ten jest ze znakami wiki w UTF8, * {{Code|2}} - czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&amp;}}}} i {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|&num;}}}}. Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument, ale wtedy musi być podany parametr {{Parametr|wyspecjalizowana|tak}}, gdy mamy zmienną {{Code|frame.args}}, a jeżeli ten argument nie został podany z wartością niepustą, wtedy są wyszukiwane elementy z {{Code|frame:getParent().args}}. Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}}. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local tekst="k{{s"; -- Równoważne: local tekst2=html_modul["KodyHTMLZnakówWikiCiągu"]{[1]=tekst,}; -- Równoważne: local tekst2=html_modul["KodyHTMLZnakówWikiCiągu"]{args={[1]=tekst,},}; local tekst2=html_modul["KodyHTMLZnakówWikiCiągu"](znak); -- Równoważne: local tekst3=html_modul["KodyHTMLZnakówWikiCiągu"]{[1]=tekst,[1]="tak",}; local tekst3=html_modul["KodyHTMLZnakówWikiCiągu"]{args={[1]=tekst,[2]="tak",},}; </syntaxhighlight> Wyniki działania: <syntaxhighlight lang="lua"> local tekst2="k&#123;&#123;s"; local tekst3="k&amp;&num;123;&amp;&num;123;s"; </syntaxhighlight> Szablonowo taką zamianę możemy napisać: * {{Code|{{s|KodyHTMLZnakówWikiCiągu|k{{s|((}}s}}}} → {{Tt|{{KodyHTMLZnakówWikiCiągu|k{{((}}s}}}} * {{Code|{{s|Nowiki|{{s|KodyHTMLZnakówWikiCiągu|k{{s|((}}s}}}}}} → {{Tt|{{Nowiki|{{KodyHTMLZnakówWikiCiągu|k{{((}}s}}}}}} * {{Code|{{s|KodyHTMLZnakówWikiCiągu|k{{s|((}}s|tak}}}} → {{Tt|{{KodyHTMLZnakówWikiCiągu|k{{((}}s|tak}}}} * {{Code|{{s|Nowiki|{{s|KodyHTMLZnakówWikiCiągu|k{{s|((}}s|tak}}}}}} → {{Tt|{{Nowiki|{{KodyHTMLZnakówWikiCiągu|k{{((}}s|tak}}}}}} Równie dobrze możemy napisać takie wywołania w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: <syntaxhighlight lang="mediawiki"> <!-- Wyświetla wynik: "k&#123;&#123;s"; --> {{#invoke:Html|KodyHTMLZnakówWikiCiągu|k{{((}}s|wyspecjalizowana=tak}} <!-- Wyświetla wynik: "k&amp;&num;123;&amp;&num;123;s"; --> {{#invoke:Html|KodyHTMLZnakówWikiCiągu|k{{((}}s|tak|wyspecjalizowana=tak}} </syntaxhighlight> == {{Code|p.EncodeId}} == Funkcja służy do opcjonalnego dekodowania ciągów znakowych według {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, i cały ciąg od specjalnych znaków jest transformowany przez funkcję {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EncodeId(id,bez_transformacji)...end; </syntaxhighlight> Parametry nieramkowe normalne funkcji: * {{Code|id}} - ciąg do przeinaczenia, * {{Code|bez_transformacji}} - gdy nie {{Code|false}} lub {{Code|nil}}, funkcja nie transformuje na podstawie: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local id="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obs%C5%82uga"; local id2=html_modul.EncodeId(id,false); </syntaxhighlight> Wynikiem tego: <syntaxhighlight lang="lua"> local id2="https://pl.wikibooks.org/w/index.php&#63;title&#61;Szablon:Link wewnętrzny&#38;action&#61;edit&#35;Obsługa"; </syntaxhighlight> Gdy: {{Code|bez_transformacji{{=}}true}}, funkcja działa jak: {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, ale wtedy {{Code|frame{{=}}id}}. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local id="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obs%C5%82uga"; local id2=html_modul.EncodeId(id,true); </syntaxhighlight> Wynikiem działania jest wartość ostatniej zmiennej: <syntaxhighlight lang="lua"> local id2="https://pl.wikibooks.org/w/index.php&#63;title&#61;Szablon:Link_wewn%C4%99trzny&#38;action&#61;edit&#35;Obs%C5%82uga"; </syntaxhighlight> == {{Code|p.UsuwanieSpecjalnychNieschematycznychSymboli}} == Usuwa z tekstu znak numer {{Code|8206}} zestawu {{lpg|Unicode}}, który można napisać, jeśli jest widoczny na ekranie komputera {{Code|&#8206;}} (znak {{Code|{{Nowiki|&#8206;}}}}). Ten znak oczywiście Unicode jest w grupie zwanej invisible Unicode characters i służy do ustawiania kierunku tekstu lewo do prawo. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UsuwanieSpecjalnychNieschematycznychSymboli(parametr)...end; </syntaxhighlight> Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); -- Tutaj jest zakodowany znak HTML, o kodzie dziesiętnym "&#8206;", składający się z trzech bajtów: "&#226;", "&#128;" i "&#142;"; local tekst="Oto jest znak: &#8206;."; -- Zamiana tego kodu na znak; tekst=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](tekst); -- Tekst bez tego znaku, bo on został w tym wywołaniu całkowicie usunięty; tekst=html_modul.UsuwanieSpecjalnychNieschematycznychSymboli(tekst); </syntaxhighlight> Wynikiem tego kodu jest wartość ukryta pod zmienną: <syntaxhighlight lang="lua"> local tekst="Oto jest znak: ."; </syntaxhighlight> == {{Code|p.EncodeWiki}} == Funkcja transformuje kody {{Strong|HTML}} do znaku przy pomocy funkcji {{Code|{{sr|#p["TransformacjaKoduHtmlDoZnakuCiągu"]|p=Html}}}}, usuwa nieschematyczne znaki o kodzie {{Code|{{Nowiki|&#8206;}}}} dzięki funkcji: {{Code|{{sr|#|p=Html}}}}, następnie opcjonalnie usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu, i zamienia wewnątrz znaki kolejne odstępów lub dolnych myślników na jeden dolny myślnik na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, dalej zaraz funkcja {{LzLua|mw.text.encode}} koduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EncodeWiki(parametr,czy_nie_odstepy)...end; </syntaxhighlight> Parametry funkcji: * {{Code|parametr}} - tekst, który chcemy zakodować, * {{Code|czy_nie_odstepy}} - czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local parametr="__Oto jest znak: \"&#8206;\" i inne_znaki_w_URL: \"https://pl.wikibooks.org/w/index.php&#63;title&#61;Szablon:Link wewnętrzny&#38;action&#61;edit&#35;Obsługa;\"__"; local parametr2=html_modul.EncodeWiki(parametr,false); local parametr3=html_modul.EncodeWiki(parametr,true); </syntaxhighlight> Wynikiem działania tej funkcji jest parametr {{Code|parametr2}} i {{Code|parametr3}}, którego wartości: <syntaxhighlight lang="lua"> local parametr2="Oto_jest_znak:_&quot;&quot;_i_inne_znaki_w_URL:_&quot;https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewnętrzny&amp;action=edit#Obsługa;&quot;"; local parametr3="__Oto jest znak: &quot;&quot; i inne_znaki_w_URL: &quot;https://pl.wikibooks.org/w/index.php?title=Szablon:Link wewnętrzny&amp;action=edit#Obsługa;&quot;__"; </syntaxhighlight> == {{Code|p.DecodeWiki}} == Funkcja {{LzLua|mw.text.decode}} dekoduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Następnie usuwa nieschematyczne symbole: {{Code|{{Nowiki|&#8206;}}}}, dzięki funkcji: {{Code|{{sr|#|p=Html}}}}, następnie działa opcjonalnie funkcją, która usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu oraz zamieniając wewnątrz znaki kolejne odstępów lub dolnych myślników na jedną dolną spacją na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DecodeWiki(parametr,czy_nie_odstepy)...end; </syntaxhighlight> Parametry funkcji: * {{Code|parametr}} - tekst, który chcemy odkodować, * {{Code|czy_nie_odstepy}} - czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local parametr="__Oto jest znak: &quot;&#8206;&quot; i inne_znaki_w_URL: &quot;https://pl.wikibooks.org/w/index.php&#63;title&#61;Szablon:Link wewnętrzny&#38;action&#61;edit&#35;Obsługa;&quot;__"; local parametr2=html_modul.DecodeWiki(parametr,false); local parametr3=html_modul.DecodeWiki(parametr,true); </syntaxhighlight> Wynikiem działania tej funkcji jest parametr {{Code|parametr2}} i {{Code|parametr3}}, którego wartość: <syntaxhighlight lang="lua"> local parametr2="Oto jest znak: \"\" i inne znaki w URL: \"https://pl.wikibooks.org/w/index.php?title=Szablon:Link wewnętrzny&action=edit#Obsługa;\""; local parametr3="__Oto jest znak: \"\" i inne_znaki_w_URL: \"https://pl.wikibooks.org/w/index.php?title=Szablon:Link wewnętrzny&action=edit#Obsługa;\"__"; </syntaxhighlight> == {{Code|p.IsEncodedHtml}} == Funkcja sprawdza, czy można uznać, że funkcja jest zakodowana, tzn. dalej nie warto jej kodować przy pomocy funkcji: {{LzLua|mw.uri.encode}}, czy dekodować, bo już można uznać ją za odkodowaną, czyli nie trzeba stosować funkcji: {{LzLua|mw.uri.decode}}. Funkcja zwraca wartość {{Code|true}}, jak można uznać tekst za zakodowany i {{Code|false}}, gdy jest niezakodowana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.IsEncodedHtml(parametr,encode,encode_real)..end; </syntaxhighlight> Parametry funkcji: * {{Code|parametr}} - parametr do sprawdzenia - wymagany, * {{Code|encode}} - gdy jest sprawdzana tylko obecność znaku {{Code|%}}, * {{Code|encode_real}} - gdy jest sprawdzana, nie tylko obecność znaku {{Code|%}}, też czy {{Code|parametr}} jest ciągiem podporządkowanym wyrażeniu regularnemu {{Code|<nowiki>^[%w%p%s]*$</nowiki>}}. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); -- Pierwszy przykład: local parametr1="abc?edit=action"; -- Wartość zmiennej obliczona jest: czy_tak1=true, czyli parametr1 można uznać za zakodowany; local czy_tak1=html_modul.IsEncodedHtml(parametr1,true,false); -- Drugi przykład: local parametr2="a%YTbc?edit=action;"; -- Wartość zmiennej obliczona jest: czy_tak2=false; czyli parametr2można uznać, że nie jest zakodowany; local czy_tak2=html_modul.IsEncodedHtml(parametr2,true,false); </syntaxhighlight> == {{Code|p.EncodeHtml}} == Funkcja sprawdza, czy podany parametr do transformacji uznać za zakodowany, jeżeli za taki zostanie uznany, wtedy zostanie, to on zostanie potraktowany funkcją {{Code|{{sr|#p.EncodeWiki|p=Html}}}}, a jeżeli nie to zostanie wywołana funkcja: {{Code|{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|b=tak}}}} (z parametrem "WIKI"). Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EncodeHtml(parametr,encode,encode_real,czy_nie_odstepy)...end; </syntaxhighlight> Parametry funkcji: * {{Code|parametr}} - parametr do transformacji kodowania, * {{Code|encode}} i {{Code|encode_real}} - te parametry to samo oznaczają, co w funkcji: {{Code|{{sr|#p.IsEncodedHtml|p=Html}}}}, * {{Code|czy_nie_odstepy}} - to samo oznacza, co w funkcji {{Code|{{sr|#p.EncodeWiki|p=Html}}}}. {{Hr}} Przykłady pierwszy - podany tekst już zakodowany: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); -- Tekst do zakodowania; local parametr="abc___&#63;action&#61;edit&#38;section&#61;21&#35;nagłówek"; -- Tekst zostanie uznany za zakodowany, sprawdzane, czy on ma znaki "%", czyli on tego nie posiada; local parametr2=html_modul.EncodeHtml(parametr,true,false,false); </syntaxhighlight> Wynik zmiennej {{Code|parametr2}} jest ukryty pod jego wartością: <syntaxhighlight lang="lua"> -- Widzimy, że podwojone myślniki dolne zostały zamienione na pojedyncze, kody HTML zostały zamienione na znaki, a znak "&#38;", czyli "&" został zamieniony na "&amp;"; local parametr2="abc_?action=edit&amp;section=21#nagłówek"; </syntaxhighlight> {{Hr}} Przykłady drugi - podany tekst jeszcze nie zakodowany: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); -- Tekst do zakodowania; local parametr="a%YTbc___?action=edit;"; -- Tekst zostanie uznany za niezakodowany, czy on ma znaki "%", czyli on to posiada; local parametr2=html_modul.EncodeHtml(parametr,true,false,false); </syntaxhighlight> Wynik zmiennej {{Code|parametr2}} jest ukryty pod jego wartością: <syntaxhighlight lang="lua"> -- Widzimy, że znak "%" został zakodowany funkcją mw.uri.encode, podobnie tą funkcją zostały zakodowane: "?" i "="; local parametr2="a%25YTbc___%3Faction%3Dedit;"; </syntaxhighlight> == {{Code|p.DecodeHtml}} == Funkcja sprawdza, czy {{Code|parametr}}, czy można uznać za zakodowany, a jeżeli można, to on zostanie w zależnosci od parametru {{Code|spacje}}, to odpowiednio zostanie wywołana {{LzLua|mw.uri.decode}}, a następnie w zależności od parametru (opis w parametrach) zostanie wywołana odpowiednia funkcja odkoduwująca lub kodująca {{Code|wiki}}. Jeżeli ciąg rzeczywiście jest uznany za niezakodowany jest podobnie odpowiednio z tylko z wywołaniami funkcji {{Code|wiki}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DecodeHtml(parametr,spacje,encode,encode_real,czy_nie_odstepy)...end; </syntaxhighlight> Parametry funkcji: * {{Code|parametr}} - parametr do odkodowania, * {{Code|spacje}} - gdy parametr odpowiada {{Code|true}} używa funkcji {{Code|{{sr|#p.DecodeWiki|p=Html}}}}, w przeciwnym wypadku: {{Code|{{sr|#p.EncodeWiki|p=Html}}}}, ale wpierw musi zostać wywołana funkcja {{LzLua|mw.uri.decode}} w przypadku, gdy ciąg zostanie uznany za zakodowany, jak to robi funkcja {{LzLua|mw.uri.encode}}, * {{Code|encode}} i {{Code|encode_real}} - te parametry są używane przez funkcje {{Code|{{sr|#p.IsEncodedHtml|p=Html}}}}, * {{Code|czy_nie_odstepy}} - gdy ciąg został uznany za niezakodowany, wtedy to jest drugi parametr funkcji: {{Code|{{sr|#p.DecodeWiki|p=Html}}}} lub {{Code|{{sr|#p.EncodeWiki|p=Html}}}}. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); -- Parametr zawiera znaki zakodowane funkcją mw.uri.encode i kody HTML znaków; local parametr="a%25YTbc___%3Faction%3Dedit&#38;section&#61;23;"; local parametr2=html_modul.DecodeHtml(parametr,true); </syntaxhighlight> Wynik funkcji jest ukryty pod adresem: <syntaxhighlight lang="lua"> -- Funkcja została uznana za zakodowaną i odkodowano ją funkcją mw.uri.decode, dalej dwa dolne myślniki zostały zamienione na jedną spację, a kody HTML zostały zamienione na odpowiednie znaki; local parametr2="a%YTbc ?action=edit&section=23;"; </syntaxhighlight> == {{Code|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}} == Szuka atrybutów w cudzysłowach i w nich elementy {{Code|<nowiki><>&</nowiki>}} zamienia na kody dziesiętne {{Strong|HTML}}, a także znaki lewego ukośnika {{Code|<nowiki>\</nowiki>}} też na to. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik)...end; </syntaxhighlight> Parametry funkcji: * {{Code|znacznik}} - atrybut do przetwarzania, aby w nim zamienić niektóre znaki, które przeszkadzają w analizie na kody, o odpowiednim formacie, {{Strong|HTML}}. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local tekst="<span id=\"Znaki<>\\\"\">To jest zawartość</span>"; local tekst2=html_modul.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(tekst); </syntaxhighlight> Wartość tej zmiennej jest ukryta pod {{Code|tekst2}}: <syntaxhighlight lang="lua"> -- Widzimy, że został sam jeden atrybut ze znakami HTML wewnątrz; local tekst2="<span id=\"Znaki&lt;&gt;&#92;&#34;\">To jest zawartość</span>"; </syntaxhighlight> == {{Code|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak}} == Zamienia kody {{Strong|HTML}}, tzn.: {{Code|{{Nowiki|&lt;}}}}, {{Code|{{Nowiki|&gt;}}}} i {{Code|{{Nowiki|&amp;}}}}, na odpowiednio znaki, a także elementy {{Code|{{Nowiki|&#92;&#34;}}}} na {{Code|<nowiki>\"</nowiki>}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)...end; </syntaxhighlight> Parametry funkcji: * {{Code|value}} - parametr do transformacji niektórych kodów {{Strong|HTML}} na znaki. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local tekst="&lt;a href=\"/wiki/Strona?tytan1=1&amp;tytan2=2\" id=\"Strona:&#92;&#34;nazwa&#92;&#34;\"&gt;Zawartość znacznika&lt;/a&gt;"; local tekst2=html_modul.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(tekst); </syntaxhighlight> Otrzymana zawartość jest pod {{Code|tekst2}}: <syntaxhighlight lang="lua"> -- Widzimy, że kody odpowiednie HTML, tzn.: "&lt;", "&gt;" i "&amp;" zostały zamienione na odpowwiednie znaki; local tekst2="<a href=\"/wiki/Strona?tytan1=1&tytan2=2\" id=\"Strona:\\\"nazwa\\\"\">Zawartość znacznika</a>"; </syntaxhighlight> == {{Code|p["NagłówekStronyAdresu"]}} == Funkcja wydziela nagłówek z adresu strony, funkcja ma własną tabelę buforową nazw. Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["NagłówekStronyAdresu"]=function(frame,czy_nie_dolne_myslniki,tabela_nazw_adresu)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki funkcji tablicy transportu modułu, * {{Code|czy_nie_dolne_myslniki}} - gdy {{Code|true}}, jeśli w nagłówku nie ma prawa być dolnych myślników, * {{Code|tabela_nazw_adresu}} - tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}. Funkcja usuwa zbędne odstępy i dolne myślniki na końcach nagłówka, i powtarzające się znaki będące odstępami lub dolnymi myślnikami są zastępowane przez jedną spację, gdy {{Code|czy_nie_dolne_myslniki}} równa jest wartości odpowiadającej {{Code|true}}, w przeciwnym wypadku zamieniana jest ona na jeden dolny myślnik. Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: * {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}} - nazwa jednostki (strony), tzn. jego adres, * {{Code|czy_nie_dolne_myslniki}} (parametr funkcji), {{Code|2}} lub {{Code|z nie dolnymi z myślnikami}} - znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji. Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}}. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local strona="https://pl.wikibooks.org/wiki/Strona ___ główna ? action____=____edit ____&____ section = 2 # ____ Nagłówek____________strony "; local tabela_nazw_adresu={}; -- Równoważne: local naglowek=html_modul["NagłówekStronyAdresu"](strona,true,tabela_nazw_adresu); local naglowek=html_modul["NagłówekStronyAdresu"]({strona=strona,["z nie dolnymi z myślnikami"]=true,},nil,tabela_nazw_adresu); </syntaxhighlight> Wartość nagłówka jest w zmiennej: <syntaxhighlight lang="lua"> -- Wydzielono z adresu strony, nagłówek usuwając z niego myślniki dolne i trimując zawartość; local naglowek="Nagłówek strony"; </syntaxhighlight> == {{Code|p["ParametryStronyAdresu"]}} == Funkcja wydziela parametry z adresu strony, funkcja ma własną tabelę buforową nazw. Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ParametryStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki funkcji tablicy transportu modułu, * {{Code|czy_naprawiaj}} - parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów adresu, wydzieloną z pełnego adresu strony, * {{Code|tabela_nazw_adresu}} - tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}. Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: * {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}} - nazwa jednostki (strony), tzn. jego adres, * {{Code|czy_naprawiaj}} (parametr funkcji), {{Code|2}} lub {{Code|czy naprawiać}} - znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji. Kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, są w kolejności, w jakim te one przedstawiono. Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}}. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local strona="https://pl.wikibooks.org/wiki/Strona ___ główna ? action____=____edit ____&____ section = 2 # ____ Nagłówek____________strony "; local tabela_nazw_adresu={}; -- Równoważne: local parametry=html_modul["ParametryStronyAdresu"](strona,true,tabela_nazw_adresu); local parametry=html_modul["ParametryStronyAdresu"]({strona=strona,["czy naprawiać"]=true,},nil,tabela_nazw_adresu); </syntaxhighlight> Wartość nagłówka jest w zmiennej: <syntaxhighlight lang="lua"> -- Wydzielono z adresu strony parametry, usuwając z niego zbędne odstępy i myślniki dolne; local parametry="action=edit&section=2"; </syntaxhighlight> == {{Code|p["NazwaStronyAdresu"]}} == Funkcja wydziela nazwę strony z adresu strony, funkcja ma własną tabelę buforową nazw. Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["NazwaStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki funkcji tablicy transportu, * {{Code|czy_naprawiaj}} - parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z adresu strony, bez parametrów i nagłówka, wydzieloną z pełnego adresu strony, * {{Code|tabela_nazw_adresu}} - tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}. Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: * {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}} - nazwa jednostki (strony), tzn. jego adres, * {{Code|czy_naprawiaj}} (parametr funkcji), {{Code|2}} lub {{Code|czy naprawiać}} - znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji. Kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, są w kolejności, w jakim te one przedstawiono. Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}}. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local strona="https://pl.wikibooks.org/wiki/Strona ___ główna ? action____=____edit ____&____ section = 2 # ____ Nagłówek____________strony "; local tabela_nazw_adresu={}; -- Równoważne: local parametry=html_modul["NazwaStronyAdresu"](strona,true,tabela_nazw_adresu); local nazwa_strony=html_modul["NazwaStronyAdresu"]({strona=strona,["czy naprawiać"]=true,},nil,tabela_nazw_adresu); </syntaxhighlight> Wartość nagłówka jest w zmiennej: <syntaxhighlight lang="lua"> -- Wydzielono z adresu strony nazwę strony adresu, usuwając z niego zbędne odstępy i myślniki dolne; local nazwa_strony="https://pl.wikibooks.org/wiki/Strona_główna"; </syntaxhighlight> == {{Code|p["NazwaStronyZParametrówStronyAdresu"]}} == Funkcja wydziela nazwę strony z parametrów adresu strony. Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}. <syntaxhighlight lang="lua"> p["NazwaStronyZParametrówStronyAdresu"]=function(frame,czy_naprawiaj)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki funkcji tablicy transportu modułu, * {{Code|czy_naprawiaj}} - parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów strony adresu, i czy zamieniać je na pojedyncze spacje wewnątrz nazwy artykułu wydzieloną z parametrów strony. Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: * {{Code|1}} lub {{Code|parametry}} - nazwa jednostki (strony), tzn. jego adres, * {{Code|czy_naprawiaj}} (parametr funkcji), {{Code|2}} lub {{Code|czy naprawiać}} - znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji. Kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, są w kolejności, w jakim te one przedstawiono. Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}} lub {{Code|parametry}}. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local strona="title=Strona ___ główna & action____=____edit ____&____ section = 2 # ____ Nagłówek____________strony "; -- Równoważne: local parametry=html_modul["NazwaStronyZParametrówStronyAdresu"](strona,true); local nazwa_strony=html_modul["NazwaStronyZParametrówStronyAdresu"]({parametry=strona,["czy naprawiać"]=true,},nil); </syntaxhighlight> Wartość nagłówka jest w zmiennej: <syntaxhighlight lang="lua"> -- Wydzielono z adresu strony nazwę artykułu, usuwając z niego zbędne odstępy i myślniki dolne; local nazwa_strony="Strona główna"; </syntaxhighlight> == {{Code|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}} == Funkcja poprawia pełny adres strony, rozdzielając ją na części, a później łącząc. Funkcja ma własną tabelę buforową nazw. Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki funkcji tablicy transportu, * {{Code|czy_naprawiaj}} - parametr przedstawiający, czy ma naprawiać pełny adres strony, działając w sposób specyficzny w zależności od funkcji, która operuje na jej częściach, wykorzystując funkcje, które są napisane w linii zaraz poniżej, * {{Code|tabela_nazw_adresu}} - tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}. Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: * {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}} - nazwa jednostki (strony), tzn. jego adres, * {{Code|czy_naprawiaj}} (parametr funkcji), {{Code|2}} lub {{Code|czy naprawiać}} - znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji. Kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, są w kolejności, w jakim te one przedstawiono. Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}}. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local strona="https://pl.wikibooks.org/wiki/Strona ___ główna ? action____=____edit ____&____ section = 2 # ____ Nagłówek____________strony "; local tabela_nazw_adresu={}; -- Równoważne: local parametry=html_modul["PoprawAdresNagłówkaOrazParametrówStronyAdresu"](strona,true,tabela_nazw_adresu); local adres=html_modul["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]({strona=strona,["czy naprawiać"]=true,},nil,tabela_nazw_adresu); </syntaxhighlight> Wartość pełnego adresu strony poprawiona jest w zmiennej: <syntaxhighlight lang="lua"> -- Wydzielono z pełnego adresu strony adres, parametry i nagłówek, naprawione i złączone ze sobą w pełny poprawiony adres; local adres="https://pl.wikibooks.org/wiki/Strona_główna?action=edit&section=2#Nagłówek strony"; </syntaxhighlight> == {{Code|p.URLStrona}} == Funkcja z adresu '''URL''' wydziela nazwę serwera i nazwę strony. On nie może zawierać w sobie protokołu, tylko musi zaczynać od {{Code|<nowiki>//</nowiki>}}. Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.URLStrona(frame)...end; </syntaxhighlight> Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: * {{Code|1}} lub {{Code|url}} - adres strony, * {{Code|2}} lub {{Code|ukośnik}} - czy do nazwy strony ma wliczać ukośnik. Kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, są w kolejności, w jakim te one przedstawiono. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"): local url="//pl.wikibooks.org/wiki/Strona_artykułu"; local serwer,nazwa=html_modul.URLStrona{url=url,["ukośnik"]=true,}; </syntaxhighlight> Wartości zmiennych kryją się pod: <syntaxhighlight lang="lua"> -- Widzimy, że nazwa serwera jest bez prawych ukośników; local serwer="pl.wikibooks.org"; -- Nazwa strony zaczyna się bez ukośnika, bo powiedzieliśmy funkcji, by nie brał prawych ukośników, które są na początku nazwy strony, bez nazwy serwera i protokołu, ale w sobie może mieć on, ale nie musi; local nazwa="wiki/Strona_artykułu"; -- Gdyby było ["ukośnik"]=false, to wtedy otrzymalibyśmy inny wynik, czyli: local nazwa="/wiki/Strona_artykułu"; </syntaxhighlight> == {{Code|p["UrlBezProtokołu"]}} == Funkcja adresowi z protokołem usuwa to właśnie, a jak podamy adres „mail”, to podaje nazwę tego adresu, bez niego. Drugą zwracaną nazwą jest nazwa protokołu,a jak się nie da go wyznaczyć, to funkcja zwraca wartość {{Code|nil}}. Trzecia wartość, to numer sposoby, a jeżeli żaden sposób nie pasuje, to ta wartość jest {{Code|-1}}, a gdy adres mail {{Code|1}}, dla adresu z protokołem {{Code|2}}, a dla adresu bez protokołu {{Code|3}}. Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["UrlBezProtokołu"]=function(frame)...end; </syntaxhighlight> Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: * {{Code|1}} lub {{Code|url}} - adres strony, ewentualnie z opcjonalnym protokołem. Kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, są w kolejności, w jakim te one przedstawiono. Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}} lub {{Code|url}}. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local mail="użytkownik@skrzynka.org"; -- Równoważnie: local adres1,protokol1,sposob1=html_modul["UrlBezProtokołu"](mail); local adres1,protokol1,sposob1=html_modul["UrlBezProtokołu"]{url=mail,}; --- local url="https://pl.wikibooks.org/wiki/Strona"; -- Równoważnie: local adres2,protokol2,sposob2=html_modul["UrlBezProtokołu"](url); local adres2,protokol2,sposob2=html_modul["UrlBezProtokołu"]{url=url,}; --- local url="//pl.wikibooks.org/wiki/Strona"; -- Równoważnie: local adres3,protokol3,sposob3=html_modul["UrlBezProtokołu"](url); local adres3,protokol3,sposob3=html_modul["UrlBezProtokołu"]{url=url,}; --- local url="pl.wikibooks.org/wiki/Strona"; -- Równoważnie: local adres4,protokol4,sposob4=html_modul["UrlBezProtokołu"](url); local adres4,protokol4,sposob4=html_modul["UrlBezProtokołu"]{url=url,}; </syntaxhighlight> Wyniki otrzymane z powyższych przykładów są: <syntaxhighlight lang="lua"> local adres1,protokol1,sposob1="//skrzynka.org","mail",1; local adres2,protokol2,sposob2="//pl.wikibooks.org/wiki/Strona","https",2; local adres3,protokol3,sposob3="//pl.wikibooks.org/wiki/Strona",nil,3; local adres4,protokol4,sposob4="//pl.wikibooks.org/wiki/Strona",nil,-1; </syntaxhighlight> == {{Code|p.DecodeKoduHTMLZnaku}} == Zamienia kody {{Strong|HTML}}, tzn. literowe (ogólny wzór {{Code|<nowiki>&(%a+);</nowiki>}}), dziesiętne (ogólny wzór {{Code|<nowiki>&#(%d+);</nowiki>}}) i szesnastkowe (ogólny wzór {{Code|<nowiki>&#x(%x+);</nowiki>}}) na odpowiednie znaki. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DecodeKoduHTMLZnaku(tekst)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} - tekst do zamienienia z dziesiętnymi, szesnastkowymi i literowymi kodami {{Strong|HTML}} na odpowiednie znaki. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); -- Tekst z kodami HTML: literowymi, dziesiętnymi i szesnastkowymi; local tekst="Oto jest link: &#x5B;&#x5B;Strona&#124;Nazwa linku&#93;&#x5D;, a w nim spacje niełamliwe&nbsp;i inne znaki: z alfabetu greckiego jak: &alpha;&Alpha;&beta;&Beta;&gamma;&Gamma;&delta;&Delta;&epsilon;&Epsilon;&zeta;&Zeta;&eta;&Eta;&theta;&Theta;&iota;&Iota;&kappa;&Kappa;&lambda;&Lambda;&mu;&Mu;&nu;&Nu;&xi;&Xi;&omicron;&Omicron;&pi;&Pi;&rho;&Rho;&sigma;&Sigma;&tau;&Tau;&upsilon;&Upsilon;&phi;&Phi;&chi;&Chi;&psi;&Psi;&omega;&Omega;"; -- Wywołanie funkcji odkodujący kody HTML; local tekst2=html_modul.DecodeKoduHTMLZnaku(tekst); </syntaxhighlight> Otrzymany wynik jest pod zmienną: <syntaxhighlight lang="lua"> -- Widzimy, że tekst został zdekodowany ze znaków HTML; local tekst2="Oto jest link: [[Strona|Nazwa linku]], a w nim spacje niełamliwe i inne znaki: z alfabetu greckiego jak: αΑβΒγΓδΔεΕζΖηΗθΘιΙκΚλΛμΜνΝξΞοΟπΠρΡσΣτΤυΥφΦχΧψΨωΩ"; </syntaxhighlight> == {{Code|p.ZamianaEncodeTekst}} == Adres strony dekoduje funkcją: {{LzLua|mw.uri.decode}}, następnie koduje, jeszcze więcej niż było na samym początku, według: {{LzLua|w.uri.encode}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZamianaEncodeTekst(tekst)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} - tekst do odkodowania i zakodowania jeszcze więcej niż było na początku zakodowane. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local tekst="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obs%C5%82uga"; local tekst2=html_modul.ZamianaEncodeTekst(tekst); </syntaxhighlight> Wynikiem funkcji, co kryje się pod zmienną {{Code|tekst2}}: <syntaxhighlight lang="lua"> local tekst2="https%3A%2F%2Fpl.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DSzablon%3ALink_wewn%C4%99trzny%26action%3Dedit%23Obs%C5%82uga"; </syntaxhighlight> == {{Code|p.ZamianaEncodeNaPodstawieWzoruTekstu}} == Funkcja wyszukuje tekst do zamiany i działa na niego funkcją: {{Code|{{sr|#p.ZamianaEncodeTekst|p=Html}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,wzor)...end; </syntaxhighlight> Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); -- Tekst nie do końca zakodowany wydzielonego według poniższego wzoru; local tekst="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obsługa"; -- Wzór, który wydziela części do kodowania jeszcze bardziej niż były na samym początku; local wzor="[^/%?%=&:%#]+"; -- Wywołanie funkcji kodującej; local tekst2=html_modul.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,wzor); </syntaxhighlight> Wynikiem funkcji, co kryje się pod zmienną: <syntaxhighlight lang="lua"> -- Zakodowało jeszcze więcej niż na samym początku było zakodowane; local tekst2="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obs%C5%82uga"; </syntaxhighlight> == {{Code|p.StronaParametryIdentyfikacjaAdresuHtml}} == Funkcja z całkowitego adresu składający się z adresu właściwego, parametrów i nagłówka, rozdzielane jest na trzy części, z których się składa. Funkcja sprawdza, czy jakikolwiek kody {{Strong|HTML}} występują w pełnym adresie strony, jeżeli są to przedtem koduje jeszcze lepiej kody znaków {{Code|<nowiki>#</nowiki>}}, przy pomocy funkcji: {{Code|{{sr|#p.EncodeHashKoduHtmlTekstu|p=Html}}}}, a później w kodach {{Strong|HTML}} znak {{Code|<nowiki>#</nowiki>}} jest zamieniany na kod literowy {{Strong|HTML}}, czyli: {{Code|{{Nowiki|&num;}}}}, funkcją: {{Code|{{sr|#p.EncodeTempHashKoduHtmlTekstu|p=Html}}}} (jeżeli w adresie kody istnieją), wtedy cos powstaje w rodzaju dla kodu dziesietnego: {{Code|<nowiki>&&num;(%d+);</nowiki>}}, i szesnastkowego: {{Code|<nowiki>&&num;x(%x+);</nowiki>}} - gdzie w nich {{Code|<nowiki>#</nowiki>}} został zamieniony na {{Code|{{Nowiki|&num;}}}}, które są przedstawione według wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Funkcja rozdziela to na trzy części, a później odkodowuje każdą część funkcją: {{Code|{{sr|#p.DecodeTempHashKoduHtmlTekstu|p=Html}}}} (jeżeli w adresie kody w ogóle istniały), i podobnie później: {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}} (jeżeli kody znaku: {{Code|<nowiki>#</nowiki>}}, były wcześniej). Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.StronaParametryIdentyfikacjaAdresuHtml(adres)...end; </syntaxhighlight> Parametry funkcji: * {{Code|adres}} - adres do potrzelenia na trzy części. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local adres="https://pl.wikibooks.org/wiki/Strona&#32;główna&num;&#x23;&#35;To_nie_jest nagłówek?action=edit&section=2#Nagłówek strony"; -- Adresstrony jedynie rozkładaa się na: "strona", "parametry" i "nagłówek"; local strona,parametry,naglowek=html_modul.StronaParametryIdentyfikacjaAdresuHtml(adres); </syntaxhighlight> Otrzymane wartości tych zmiennych kryją się pod adresami: <syntaxhighlight lang="lua"> local strona,parametry,naglowek="https://pl.wikibooks.org/wiki/Strona&#32;główna&#35;&#35;&#35;To_nie_jest nagłówek","action=edit&section=2","Nagłówek strony",3; </syntaxhighlight> Funkcja zwraca trzy wartości, tzn. adres właściwy (bez parametrów i nagłówka), parametry (używane jako dodatek do adresów przy formułowaniu formularzy) i nagłówek (który jest adresem na stronie do odpowiedniego elementu o danym atrybucie: {{Code|id}}). == {{Code|p.TworzenieAdresuHtml}} == Funkcja łączy, stronę, parametry i nagłówek strony, w pełną nazwę strony (adresu), dalej jest uruchamiana funkcja ddekodująca ciagi znakowe: {{Code|{{Nowiki|&amp;&num;}}}}. Funkcja wykorzystuje do dekodowania tego {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.TworzenieAdresuHtml(strona,parametry,naglowek)...end; </syntaxhighlight> Parametry funkcji: * {{Code|strona}} - nromalny adres strony, bez parametrów i nagłówka, * {{Code|parametry}} - parametry strony w formacie {{Code|nazwa{{=}}wartość}} oddzielone od siebie znakiem {{Code|<nowiki>&</nowiki>}}, * {{Code|nagłówek}} - nagłówek linkujący do {{Code|id}} jakiegos elementyna stronie, Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local strona,parametry,naglowek,ile="https://pl.wikibooks.org/wiki/Strona&#32;główna&num;&#35;&#x23;To_nie_jest nagłówek","action=edit&section=2","Nagłówek strony",3; local adres=html_modul.TworzenieAdresuHtml(strona,parametry,naglowek); </syntaxhighlight> Otrzymany pełny pojedynczy adres strony, z normalnym adresem strony z parametrami i nagłówkiem, jest ukryta: <syntaxhighlight lang="lua"> local adres="https://pl.wikibooks.org/wiki/Strona&#32;główna&#35;&#35;&#35;To_nie_jest nagłówek?action=edit&section=2#Nagłówek strony"; </syntaxhighlight> Funkcja zwraca całkowity adres z adresem właściwym, parametrami (po {{Code|<nowiki>?</nowiki>}}, jeżeli po nim występują wartości przyrównane nazwą zmiennych {{Strong|HTML}}) i nagłówkiem (po {{Code|<nowiki>#</nowiki>}}). == {{Code|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}} == Pełny adres strony, bezprotokolarny (lub protokolarny, jeżeli rozdzielimy, w pierwszej funkcji anonimowej w tej nagłówku, na protokół i adres bezprotokolarny, czyli na dwie części, zrobimy operacje, a później je złączymy w nim), linków zewnętrznych lub wewnętrznych, z adresem właściwym, parametrami i nagłówkiem strony, po podziale na je trzy części funkcją {{Code|{{sr|#p.StronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}, następnie na każdą z tych elementów działamy odpowiednimi funkcjami, a potem ich wyniki łączymy w pełny adres strony funkcją {{Code|{{sr|#p.TworzenieAdresuHtml|p=Html}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,funkcja_strona,funkcja_parametry,funkcja_naglowek)...end; </syntaxhighlight> Parametry funkcji: * {{Code|adres}} - pełny adres do przetworzenia, * {{Code|funkcja_strona}} - funkcja, którą działamy na właściwy adres strony, bez parametrów i nagłówka, * {{Code|funkcja_parametry}} - funkcja, którą działamy na parametry adresu strony, * {{Code|funkcja_naglowek}} - funkcja, którą działamy na nagłówek strony adresu. Przykład takiego wywołania: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local function EncodeParametryURL(a,b,c,funkcja_operacji) return a..funkcja_operacji(b).."="..funkcja_operacji(c); end; local function OperacjeHtml(adres,funkcja_operacji) adres=mw.ustring.gsub(adres,"^(%??)([^&=]*)=([^&]*)",function(a,b,c)return EncodeParametryURL(a,b,c,funkcja_operacji);end); adres=mw.ustring.gsub(adres,"(&)([^&=]*)=([^&]*)",function(a,b,c)return EncodeParametryURL(a,b,c,funkcja_operacji);end); return adres; end; local funkcja_operacji={ [1]=function(tekst) return p.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,"[^/]+",p.ZamianaEncodeTekst); end, [2]=function(tekst) return p.ZamianaEncodeTekst(tekst); end, [3]=function(tekst) return p.ZamianaEncodeTekst(tekst); end, }; return html_modul.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres, -- Funkcja: funkcja_strona; function(strona,Func) strona=Func(strona); return strona; end, -- Funkcja: funkcja_parametry; OperacjeHtml, -- Funkcja: funkcja_naglowek; function(naglowek,Func) naglowek=Func(naglowek); return naglowek; end, funkcja_operacji ); </syntaxhighlight> == {{Code|p.EncodeParametryURL}} == Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}. Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale. Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.ZamianaEncodeTekst|p=Html}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.EncodeParametryURL(adres,w_adresie,funkcja_strona,funkcja_naglowek)...end; </syntaxhighlight> Parametry funkcji: * {{Code|adres}} - pełny adres strony z parametrami i nagłówkiem, * {{Code|z_kodowaniem}} - czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania, * {{Code|w_adresie}} - czy rozpatrywać cały adres, a nie tylko parametry, * {{Code|funkcja_strona}} - funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka, * {{Code|funkcja_naglowek}} - funkcja, którą działamy na nagłówek. Przykłady takiego wywołania: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local adres="//pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obsługa"; local adres2=html_modul.EncodeParametryURL(adres,true, function(strona,Func) strona=Func(strona); return strona; end, function(naglowek,Func) naglowek=Func(naglowek); return naglowek; end); </syntaxhighlight> Wartość zmiennej {{Code|adres2}} jest w wartości: <syntaxhighlight lang="lua"> local adres2="//pl.wikibooks.org/w/index.php?title=Szablon%3ALink_wewn%C4%99trzny&action=edit#Obs%C5%82uga"; </syntaxhighlight> == {{Code|p.EncodeZaawansowanyParametryURL}} == Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}. Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale. Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, ale przed nim wywoływana ajest funkcja {{LzLua|mw.uri.decode}}, a po nim {{LzLua|mw.uri.encode}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EncodeZaawansowanyParametryURL(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end; </syntaxhighlight> Parametry funkcji: * {{Code|adres}} - pełny adres strony z parametrami i nagłówkiem, * {{Code|z_kodowaniem}} - czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania, * {{Code|w_adresie}} - czy rozpatrywać cały adres, a nie tylko parametry, * {{Code|funkcja_strona}} - funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka, * {{Code|funkcja_naglowek}} - funkcja, którą działamy na nagłówek. Przykłady takiego wywołania: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local adres="Szablon:Link_wewnętrzny?action=edit#Obsługa?"; local adres2=html_modul.EncodeZaawansowanyParametryURL(adres,true, function(strona,Func) strona=Func(strona); return strona; end, function(naglowek,Func) naglowek=Func(naglowek); return naglowek; end); </syntaxhighlight> Wartość zmiennej {{Code|adres2}} jest w wartości: <syntaxhighlight lang="lua"> local adres2="Szablon%3ALink_wewn%C4%99trzny?action=edit#Obs%C5%82uga%26%2363%3B"; </syntaxhighlight> == {{Code|p.EncodeParametryHtml}} == Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}. Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale. Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.EncodeHtml|p=Html}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EncodeParametryHtml(parametr,w_adresie,funkcja_strona,funkcja_naglowek)...end; </syntaxhighlight> Parametry funkcji: * {{Code|adres}} - pełny adres strony z parametrami i nagłówkiem, * {{Code|w_adresie}} - czy rozpatrywać cały adres, a nie tylko parametry, * {{Code|funkcja_strona}} - funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka, * {{Code|funkcja_naglowek}} - funkcja, którą działamy na nagłówek. Przykłady takiego wywołania: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local adres="Szablon:Link_wewnętrzny?action=edit#Obsługa?"; local adres2=html_modul.EncodeParametryHtml(adres,true, function(strona,Func) strona=Func(strona); return strona; end, function(naglowek,Func) naglowek=Func(naglowek); return naglowek; end); </syntaxhighlight> Wartość zmiennej {{Code|adres2}} jest w wartości: <syntaxhighlight lang="lua"> local adres2="Szablon:Link_wewn%C4%99trzny?action=edit#Obs%C5%82uga%3F"; </syntaxhighlight> == {{Code|p.EncodeZaawansowanyParametryHtml}} == Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}. Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale. Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.EncodePodstawoweHtmlTekstu|p=Html}}}}, a przed nim wywoływana jest {{LzLua|mw.uri.decode}}, a po nim jeżeli jest włączone kodowanie w zmiennej drugiej funkcji, wtedy {{LzLua|mw.uri.encode}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EncodeZaawansowanyParametryHtml(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end; </syntaxhighlight> Parametry funkcji: * {{Code|adres}} - pełny adres strony z parametrami i nagłówkiem, * {{Code|z_kodowaniem}} - czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania, * {{Code|w_adresie}} - czy rozpatrywać cały adres, a nie tylko parametry, * {{Code|funkcja_strona}} - funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka, * {{Code|funkcja_naglowek}} - funkcja, którą działamy na nagłówek. Przykłady takiego wywołania: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local adres="Szablon:Link_wewnętrzny?action=edit#Obsługa?"; local adres2=html_modul.EncodeZaawansowanyParametryHtml(adres,true,true, function(strona,Func) strona=Func(strona); return strona; end, function(naglowek,Func) naglowek=Func(naglowek); return naglowek; end); </syntaxhighlight> Wartość zmiennej {{Code|adres2}} jest w wartości: <syntaxhighlight lang="lua"> local adres2="Szablon%3ALink_wewn%C4%99trzny?action=edit#Obs%C5%82uga%26%2363%3B"; </syntaxhighlight> == {{Code|p.EncodeHashKoduHtmlTekstu}} == Funkcja koduje kod {{Strong|HTML}} znaku {{Code|<nowiki>#</nowiki>}}, czyli {{Code|{{Nowiki|&num;}}}}, {{Code|{{Nowiki|&#35;}}}} i {{Code|{{Nowiki|&#x23;}}}}. Te wszystkie kody funkcja zamienia je z każdnych na kod: {{Code|{{Nowiki|&amp;num;}}}}. Funkcja zwraca przetworzony tekst, ze zmienną {{Code|ile}} mówiącej ile jest możliwych kodów na stronie, także z {{Code|ile2}} wskazującej, ile jest kodów na stronie rozwazanego znaku. Funkcja używana, gdy nie chcemy, by dodatkowe znaki {{Code|<nowiki>#</nowiki>}} przeskadzały na rozkład adresu strony na właściwy adres, parametry i nagłówek strony, co po rozkładzie wywoływana jest jego też jego funkcja odwrotna {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}}, a tak powstałe znaki {{Code|{{Nowiki|&#35;}}}} ze wszystkich tych kodów {{Code|<nowiki>#</nowiki>}} według pewnych funkcji modułu {{Code|{{ld2|Html}}}}, że one nie zostaną odkodowane, bo są one pomijane. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EncodeHashKoduHtmlTekstu(tekst)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} - tekst do przetworzenia. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); -- Kody do zamienienia local tekst="&num;, &#35; i &#x23;"; -- Przetwarzanie tekstu local tekst2,ile,ile2=html_modul.EncodeHashKoduHtmlTekstu(tekst); </syntaxhighlight> Wynik jest pod zmienną: <syntaxhighlight lang="lua"> -- Wszystkie możliwe warianty funkcja zamieniła na to samo, czyli na: "&amp;num;" kodu HTML "&num;" dla znaku "#"; local tekst2,ile,ile2="&amp;num;, &amp;num; i &amp;num;",3,3; </syntaxhighlight> == {{Code|p.DecodeHashKoduHtmlTekstu}} == Jeżeli dokonano zamiany możliwych kodów {{Code|{{Nowiki|&num;}}}}, {{Code|{{Nowiki|&#35;}}}} i {{Code|{{Nowiki|&#x23;}}}} na {{Code|{{Nowiki|&num;num}}}}, wtedy druga zmienna jest większa od zera, wtedy możliwa jest tego zamiana na kod {{Code|{{Nowiki|&#35;}}}} kodu {{Code|{{Nowiki|&num;num}}}}, używając tej funkcji. Funkcja używana, gdy właściwy adres, parametry i nagłówek strony zostały po rozłączeniu na te części z pełnego adresu strony, wraz z innymi funkcjami odkodowującymi znaki niektóre {{Strong|HTML}}, oraz jeżeli ciało jej wersji prostej została wywołana wcześniej. Jest to odwrotność funkcji {{Code|{{sr|#p.EncodeHashKoduHtmlTekstu|p=Html}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DecodeHashKoduHtmlTekstu(tekst,ile)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} - tekst do przetworzenia, * {{Code|ile}} - {{Code|<nowiki>ile>0</nowiki>}}, jeżeli dokonano możliwych zamian kodów znaku {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|&num;num}}}}. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); -- Zamienione wcześniej kody: tekstu "&num;, &#35; i &#x23;", kolejno na "&amp;num;"; local tekst="&amp;num;, &amp;num; i &amp;num;"; -- Odkodowanie znaków "&amp;num;" w tekście; local tekst2=html_modul.DecodeHashKoduHtmlTekstu(tekst,3); </syntaxhighlight> Wynik jest ukryty pod zmienną: <syntaxhighlight lang="lua"> local tekst2="&#35;, &#35; i &#35;"; </syntaxhighlight> == {{Code|p.EncodeTempHashKoduHtmlTekstu}} == Jeżeli mamy jakieś kody {{Strong|HTML}}, to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|&num;}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EncodeTempHashKoduHtmlTekstu(tekst)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} - tekst do przetworzenia. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); -- Mamy tutaj kody HTML znaku: "#", czyli: "&#35;" i "&#x23;" oraz jeden od spacji: "&#32;";, a tam "#"zamieniamy na "&num;"; local tekst="https://pl.wikibooks.org/wiki/Strona&#32;główna&#35;&#35;&#x23;To_nie_jest nagłówek?action=edit&section=2#Nagłówek strony"; -- Otrzymamy przetworzony tekst oraz ile uzyskamy znaków z kodem HTML dziesiętnym "ile1" i szesnastkowym "ile2"; local tekst2,ile1,ile2=html_modul.EncodeTempHashKoduHtmlTekstu(tekst); </syntaxhighlight> Wynik tego jest pod zmienną: <syntaxhighlight lang="lua"> local tekst2,ile1,ile2="https://pl.wikibooks.org/wiki/Strona&&num;32;główna&&num;35;&&num;35;&&num;x23;To_nie_jest nagłówek?action=edit&section=2#Nagłówek strony",3,1; </syntaxhighlight> == {{Code|p.DecodeTempHashKoduHtmlTekstu}} == Jeżeli mamy jakieś kody {{Strong|HTML}}, to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|&num;}}}}. One tak zostały zamienione funkcją {{Code|{{sr|#p.EncodeTempHashKoduHtmlTekstu|p=Html}}}}. Po rozłożeniu na trzy części pełnego adresu strony, tzn. na właściwy adres, parametry i nagłówek strony, możemy wywołać dla każdej z nich tę funkcję, wykonując operację odwrotną. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DecodeTempHashKoduHtmlTekstu(tekst,ile1,ile2)...end; </syntaxhighlight> Parametry zwykłe funkcji: * {{Code|tekst}} - tekst do przetworzenia i po rozdzieleniu na trzy części, * {{Code|ile1}} - ile jest przetworzonych kodów dziesietnych prez funkcje do rozważanej prostej, * {{Code|ile2}} - ile jest przetworzonych kodów szesnastkowych przez funkcją do rozważanej prostej. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); -- Mamy tutaj kody HTML znaku: "#", czyli: "&&num;35;" i "&&num;x23;" oraz jeden od spacji: "&&num;32;";, a tam "#"zamieniamy na "&num;"; local tekst="https://pl.wikibooks.org/wiki/Strona&&num;32;główna&&num;35;&&num;35;&&num;x23;To_nie_jest nagłówek?action=edit&section=2#Nagłówek strony"; -- Otrzymamy przetworzony tekst, do którego wsadzamy ile uzyskamy znaków z kodem HTML dziesiętnym "ile1" i szesnastkowym "ile2" w wywołaniu local tekst,ile1,ile2=p.EncodeTempHashKoduHtmlTekstu(tekst); local tekst2=html_modul.EncodeTempHashKoduHtmlTekstu(tekst,3,1); </syntaxhighlight> Wynik tego jest pod zmienną: <syntaxhighlight lang="lua"> local tekst2="https://pl.wikibooks.org/wiki/Strona&#32;główna&#35;&#35;&#x23;To_nie_jest nagłówek?action=edit&section=2#Nagłówek strony"; </syntaxhighlight> == {{Code|p.AdresDomniemanieBezProtokolarnyEncodeURL}} == Funkcja domyślnie koduje adres bezprotokolarny, a z podaniem drugiej wartości {{Code|true}} protokolarny. Funkcja wykorzystuje funkcję {{Code|{{sr|#p.ZamianaEncodeNaPodstawieWzoruTekstu|p=Html}}}}. A jeżeli druga wartość odpowiada prawdziwości, to korzystamy z {{Code|{{sr|#p["UrlBezProtokołu"]|p=Html}}}} na rozkład na adres bezprotokolarny i protokół. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AdresDomniemanieBezProtokolarnyEncodeURL(adres,protokolarny)...end; </syntaxhighlight> Parametry funkcji: * {{Code|adres}} - adres do zakodowania, * {{Code|protokolarny}} - czy ma rozkładać adres na nazwę strony i protokół. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); -- Adres protokonalny; local adres11="https://pl.wikibooks.org/wiki/Strona_główna?action=edit&section=2#Nagłówek strony"; local adres12=html_modul.AdresDomniemanieBezProtokolarnyEncodeURL(adres11,true); -- Adres bezprotokonalny; local adres21="//pl.wikibooks.org/wiki/Strona_główna?action=edit&section=2#Nagłówek strony"; local adres22=html_modul.AdresDomniemanieBezProtokolarnyEncodeURL(adres21,false); </syntaxhighlight> Wynik wartości {{Code|adres12}} i {{Code|adres12}}: <syntaxhighlight lang="lua"> -- Zakodowany adres z protokołem local adres12="https://pl.wikibooks.org/wiki/Strona_g%C5%82%C3%B3wna?action=edit&section=2#Nag%C5%82%C3%B3wek%20strony"; -- Zakodowany adres bez protokołu local adres22="//pl.wikibooks.org/wiki/Strona_g%C5%82%C3%B3wna?action=edit&section=2#Nag%C5%82%C3%B3wek%20strony"; </syntaxhighlight> == {{Code|p.UriEncode}} == Funkcja do kodowania adresów tylko z protokołem, wartości bez protokołu nie obsługuje. Wykorzystuje {{Code|{{sr|#p.AdresDomniemanieBezProtokolarnyEncodeURL|p=Html}}}}. Do wyszukiwania adresów jest brana funkcja {{Code|{{sr|#p.PobierzParametr|p=Html}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UriEncode(frame)...end; </syntaxhighlight> Parametry tablicy ramki tablicy transportu: * {{Code|html}} - adres z protokołem strony. Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|html}}. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); -- Adres protokonalny; local adres="https://pl.wikibooks.org/wiki/Strona_główna?action=edit&section=2#Nagłówek strony"; -- Równoważnie: local adres2=html_modul.UriEncode{html=adres,}; local adres2=html_modul.UriEncode(adres); </syntaxhighlight> Wynik jest w zmiennej: <syntaxhighlight lang="lua"> local adres2="https://pl.wikibooks.org/wiki/Strona_g%C5%82%C3%B3wna?action=edit&section=2#Nag%C5%82%C3%B3wek%20strony"; </syntaxhighlight> == {{Code|p.EncodePodstawoweHtmlTekstu}} == Funkcja blokuje odkodowywanie możliwych kodów {{Strong|HTML}} znaku {{Code|<nowiki>#</nowiki>}}, w tym celu wywoływana jest funkcja: {{Code|{{sr|#p.KodowanieOmijanieFunkcyjne(html,...)|p=Html}}}}, do omijania tego znaku, funkcja omija tylko znaki zapisane w kodach {{Strong|HTML}}, tzn. {{Code|{{Nowiki|&#35}}}}, w tym celu wszystkie kody tego znaku zamieniamy na jeden, przed wywołaniem tej funkcji, funkcjami: {{Code|{{sr|#p.EncodeHashKoduHtmlTekstu|p=Html}}}} i {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}}. Ta funkcja w pierwszym kroku, w nim we wspomnianej funkcji wywołanej w funkcji anonimowej, wywołuje funkcję dekodujące znaki, czyli: {{Code|{{sr|#p.DecodeKoduHTMLZnaku|p=Html}}}}, do odkodowania kodów, {{Strong|HTML}}, dziesiętnych, szesnastkowych i literowych. Na samym końcu kodowane są specjalne znaki na podstawie: {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, na kody {{Strong|HTML}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|elementy_adresu_strony}} - funkcja do podstawowego kodowania adresu. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local adres="Szablon:Link_wewnętrzny?action=edit#Obsługa?"; local adres2=html_modul.EncodePodstawoweHtmlTekstu(adres); </syntaxhighlight> Wartość zmiennej jest ukryta pod: <syntaxhighlight lang="lua"> local adres2="Szablon:Link_wewnętrzny&#63;action&#61;edit&#35;Obsługa&#63;"; </syntaxhighlight> == {{Code|p.EncodeElementyAdresuStrony}} == Gdy mamy problem (przypadek) z parametrami adresu strony,wtedy do kodowania wywoływana jest funkcja {{Code|{{sr|#p.EncodeZaawansowanyParametryHtml|p=Html}}}}, a gdy posługujemy się właściwym adresem strony lub nagłówkiem, wtedy dekodujemy '''URL''' funkcją {{LzLua|mw.uri.decode}}, następnie {{Code|{{sr|#p.EncodePodstawoweHtmlTekstu|p=Html}}}}, i jeżeli mały włączone kodowanie, następnie {{LzLua|mw.uri.encode}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EncodeElementyAdresuStrony(elementy_adresu_strony,czy_parametry_strony,z_kodowaniem)...end; </syntaxhighlight> Parametry funkcji: * {{Code|elementy_adresu_strony}} - element adresu strony, * {{Code|czy_parametry_strony}} - czy parametry strony rozważać, jako że wtedy jest taki adres jako parametry, * {{Code|z_kodowaniem}} - czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local elementy_adresu_strony="Obsługa?"; local elementy_adresu_strony2=html_modul.EncodeElementyAdresuStrony(elementy_adresu_strony,false,true); </syntaxhighlight> Wartość zmiennej jest ukryta pod: <syntaxhighlight lang="lua"> local elementy_adresu_strony2="Obs%C5%82uga%26%2363%3B"; </syntaxhighlight> == {{Code|p.AdresProjektuEncodeHtml}} == Funkcja korzysta do dekodowania na samym początku '''URL''' {{LzLua|mw.uri.decode}}, a na końcu {{LzLua|mw.uri.encode}}, jeżeli jest włączone kodowanie, między czasie korzysta z {{Code|{{sr|#p.EncodePodstawoweHtmlTekstu|p=Html}}}}. Główny elementem funkcyjnym jest {{Code|{{sr|#p.EncodeZaawansowanyParametryHtml|p=Html}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AdresProjektuEncodeHtml(frame,z_kodowaniem,protokolarny)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki funkcji tablicy transportu modułu, * {{Code|z_kodowaniem}} - czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania, * {{Code|protokolarny}} - czy uważać przy kodowaniu na protokoły pełnych adresów stron. Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: * {{Code|html}} - adres do kodowania, * {{Code|encode}} - czy kodować. Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|html}}. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); local adres="https://pl.wikibooks.org/wiki/Strona_&główna?&?action=edit&section=2&title=Nazwa strony szablonu: {{!}}#Nagłówek strony"; local adres2=html_modul.AdresProjektuEncodeHtml(adres,false,true); local adres3=html_modul.AdresProjektuEncodeHtml(adres,true,true); </syntaxhighlight> Wartość zmiennej jest ukryta pod: <syntaxhighlight lang="lua"> local adres2="https://pl.wikibooks.org/wiki/Strona_&#38;główna&#63;&#38;?action=edit&section=2&title=Nazwa strony szablonu: &#123;&#123;!&#125;&#125;#Nagłówek strony"; local adres3="https://pl.wikibooks.org/wiki/Strona_%26%2338%3Bg%C5%82%C3%B3wna%26%2363%3B%26%2338%3B?action=edit&section=2&title=Nazwa%20strony%20szablonu%3A%20%26%23123%3B%26%23123%3B%21%26%23125%3B%26%23125%3B#Nag%C5%82%C3%B3wek%20strony"; </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> bgsagpg6maxkyedhi8qi37xafj83ulw Wikibooks:Moduły/StronicowyParser 4 63511 553419 553294 2026-08-29T23:21:53Z Persino 2851 /* Spis treści */ 553419 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 == {{Kolumny|2|2= === {{lr|Moduły/StronicowyParser/Moduł główny|StronicowyParser}} === Procedury 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}} === Moduł 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}} === Funkcje zwracające 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}} === Funkcje do generowania spis treści dla jego podmodułów, na podstawie pewnych stron konfiguracyjnych lub nie. === {{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}} === Elementy tu opisane 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> s6pzf7iads05a9du1ucsb9quo3x501z 553420 553419 2026-08-29T23:25:46Z Persino 2851 /* Spis treści */ 553420 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 == {{Kolumny|2|2= === {{lr|Moduły/StronicowyParser/Moduł główny|StronicowyParser}} === Procedury 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}}{{Nobold|{{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}} === Moduł 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}} === Funkcje zwracające 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}}{{nobold|{{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}}{{nobold|{{r|Spis treści}}}} === Funkcje do generowania spis treści dla jego podmodułów, na podstawie pewnych stron konfiguracyjnych lub nie. === {{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}} === Elementy tu opisane są to funkcje do ładowania tekstu stron, nawet jego w sposób rekurencyjny. === {{lru|Moduły/StronicowyParser/ZbieranieDanychStron}}{{nobold|{{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> g0ycfya8m92hrc8gz6fle5uqcmnrfid 553421 553420 2026-08-29T23:28:26Z Persino 2851 /* Spis treści */ 553421 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 == {{Kolumny|2|2= === {{lr|Moduły/StronicowyParser/Moduł główny|StronicowyParser}} === Procedury 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}}{{Nobold|{{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}} === Moduł 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}} === Funkcje zwracające 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}}{{nobold|{{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}}{{nobold|{{r|Spis treści}}}} === Funkcje do generowania spis treści dla jego podmodułów, na podstawie pewnych stron konfiguracyjnych lub nie. === {{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}} === Elementy tu opisane są to funkcje do ładowania tekstu stron, nawet jego w sposób rekurencyjny. === {{lru|Moduły/StronicowyParser/ZbieranieDanychStron}}{{nobold|{{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 (nieksiążkowej, ale traktowana jak książkowa, bo parametry: {{Parametry|nazwa artykułu}} i {{Parametr|nazwa książki}}). === {{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> 6wqwjgx9uygi3vxymqu5wtma4dwbebo 553422 553421 2026-08-29T23:28:47Z Persino 2851 /* Spis treści */ 553422 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 == {{Kolumny|2|2= === {{lr|Moduły/StronicowyParser/Moduł główny|StronicowyParser}} === Procedury 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}}{{Nobold|{{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}} === Moduł 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}} === Funkcje zwracające 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}}{{nobold|{{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}}{{nobold|{{r|Spis treści}}}} === Funkcje do generowania spis treści dla jego podmodułów, na podstawie pewnych stron konfiguracyjnych lub nie. === {{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}} === Elementy tu opisane są to funkcje do ładowania tekstu stron, nawet jego w sposób rekurencyjny. === {{lru|Moduły/StronicowyParser/ZbieranieDanychStron}}{{nobold|{{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 (nieksiążkowej, ale traktowana jak książkowa, bo parametry: {{Parametr|nazwa artykułu}} i {{Parametr|nazwa książki}}). === {{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> o20lm9129uzls5my9dbab2mflne91tm 553423 553422 2026-08-29T23:44:36Z Persino 2851 /* Spis treści */ 553423 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 == {{Kolumny|2|2= === {{lr|Moduły/StronicowyParser/Moduł główny|StronicowyParser}} === Procedury 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}}{{Nobold|{{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}} === Moduł 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}} === Funkcje zwracające 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}}{{nobold|{{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 są to poprzez funkcję główną, do zbierania danych z strony, z: {{LinkPatrz|ZbieranieDanychStron}}. === {{lru|Moduły/StronicowyParser/SpisTreści}}{{nobold|{{r|Spis treści}}}} === Funkcje do generowania spis treści dla jego podmodułów, na podstawie pewnych stron konfiguracyjnych lub nie. === {{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}} === Elementy tu opisane są to funkcje do ładowania tekstu stron, nawet jego w sposób rekurencyjny. === {{lru|Moduły/StronicowyParser/ZbieranieDanychStron}}{{nobold|{{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 (nieksiążkowej, ale traktowana jak książkowa, bo parametry: {{Parametr|nazwa artykułu}} i {{Parametr|nazwa książki}}). === {{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> kypnks32qwq1763yg5jdi9jgs3eu7fn 553424 553423 2026-08-30T00:00:38Z Persino 2851 /* Spis treści */ 553424 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 == {{Kolumny|2|2= === {{lr|Moduły/StronicowyParser/Moduł główny|StronicowyParser}} === Procedury 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}}{{Nobold|{{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}} === Moduł 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}} === Funkcje zwracające 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 linkom 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}}{{nobold|{{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 są to poprzez funkcję główną, do zbierania danych z strony, z: {{LinkPatrz|ZbieranieDanychStron}}. === {{lru|Moduły/StronicowyParser/SpisTreści}}{{nobold|{{r|Spis treści}} {{Patrz|SpisTreści}}}} === Funkcje do generowania spisu treści dla jego pewnych podmodułów, która można nazwać spisami, na podstawie pewnych stron konfiguracyjnych, lub nie, przy uwzględnieniu dodania artykułów okreeślonych przez {{s|Układ autonawigacyjny}} i innych spisów niż główny spis treści, którym jest strona główna książki. Czasami tam funkcje, jeśli znajdą na stronie głównej artykuł {{Code|Spis treści}}, to go analizuje jako dodatkowy spis, którego nie trzeba dodawać do tego szablonu. === {{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}}. Kod gnerowany przez tam funkcje są ustawiane na stronach zbiorczych, które obsługuje {{lpg|JavaScript}}, jako jeden z gadzetów (jest w fazie roboczej, ale jeszcze oficjalnie nieopublikowany), na stronie w przestrzeni nazw komunikatów {{Np|MediaWiki|link=tak}}. === {{lru|Moduły/StronicowyParser/Tekst}} === Elementy tu opisane są to funkcje do ładowania tekstu stron, nawet jego w sposób rekurencyjny. One służą do też ładowania właściwych stron artykułów. === {{lru|Moduły/StronicowyParser/ZbieranieDanychStron}}{{nobold|{{r|Spis treści}} {{Patrz|ZbieranieDanychStron}}}} === Moduł do zbierania informacji o aktualnej stronie, nie jak dla spisu treści, jak to robi moduł {{LinkPatrz|SpisTreś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 (nieksiążkowej, ale traktowana jak książkowa, bo parametry: {{Parametr|nazwa artykułu}} i {{Parametr|nazwa książki}}). === {{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> numr7xocitsaab8npp8m1sbjpef40ev 553425 553424 2026-08-30T00:07:55Z Persino 2851 /* Spis treści */ 553425 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 == {{Kolumny|2|2= === {{lr|Moduły/StronicowyParser/Moduł główny|StronicowyParser}} === Procedury 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}}{{Nobold|{{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}} === Moduł 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}} === Funkcje zwracające 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 linkom 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}}{{nobold|{{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 są to poprzez funkcję główną, do zbierania danych z strony, z: {{LinkPatrz|ZbieranieDanychStron}}. === {{lru|Moduły/StronicowyParser/SpisTreści}}{{nobold|{{r|Spis treści}} {{Patrz|SpisTreści}}}} === Funkcje do generowania spisu treści dla jego pewnych podmodułów, która można nazwać spisami, na podstawie pewnych stron konfiguracyjnych, lub nie, przy uwzględnieniu dodania artykułów określonych przez {{s|Układ autonawigacji}} (wykorzystywany przez {{s|Autonawigacja}} - ten szablon wykorzystuje własne skórki, jako szablony nawigacji, tzn. on oferuje linki: artykuł przed, artykuł po i artykuł głównego spisu treści) i w nim innych spisów niż główny spis treści, którym jest strona główna książki. Czasami tam funkcje, jeśli znajdą na stronie głównej artykuł {{Code|Spis treści}}, to go analizuje jako dodatkowy spis, którego nie trzeba dodawać do tego konfiguracyjnego szablonu. === {{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}}. Kod gnerowany przez tam funkcje są ustawiane na stronach zbiorczych, które obsługuje {{lpg|JavaScript}}, jako jeden z gadzetów (jest w fazie roboczej, ale jeszcze oficjalnie nieopublikowany), na stronie w przestrzeni nazw komunikatów {{Np|MediaWiki|link=tak}}. === {{lru|Moduły/StronicowyParser/Tekst}} === Elementy tu opisane są to funkcje do ładowania tekstu stron, nawet jego w sposób rekurencyjny. One służą do też ładowania właściwych stron artykułów. === {{lru|Moduły/StronicowyParser/ZbieranieDanychStron}}{{nobold|{{r|Spis treści}} {{Patrz|ZbieranieDanychStron}}}} === Moduł do zbierania informacji o aktualnej stronie, nie jak dla spisu treści, jak to robi moduł {{LinkPatrz|SpisTreś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 (nieksiążkowej, ale traktowana jak książkowa, bo parametry: {{Parametr|nazwa artykułu}} i {{Parametr|nazwa książki}}). === {{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> 73znmq65nj5xxlqanwra2eprzw45nw3 553431 553425 2026-08-30T00:46:00Z Persino 2851 /* Spis treści */ 553431 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 == {{Kolumny|2|2= === {{lr|Moduły/StronicowyParser/Moduł główny|StronicowyParser}} === Procedury 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}}{{Nobold|{{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}} === Moduł 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}} === Funkcje zwracające 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 linkom 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. Funkcje tam dodają problemy jedno i wielowymiarowe (najwięcej trzy), w głównej tablicy problemów, a także problemy jednowymiarowym problemie, dla przestrzeni ksiązkowych, tzn. one są: {{Code|nazwa przestrzeni nazw}} {{Patrz|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni książki}} {{Patrz|nazwa przestrzeni książki}} i {{Code|nazwa książki}} {{Patrz|nazwa książki}}, w głównej tablicy problemów, i w jego tablicy pod, tzn.: {{Code|problemy książkowe}} {{Patrz|problemy książkowe}}. === {{lru|Moduły/StronicowyParser/Rozdziały}}{{nobold|{{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 są to poprzez funkcję główną, do zbierania danych z strony, z: {{LinkPatrz|ZbieranieDanychStron}}. === {{lru|Moduły/StronicowyParser/SpisTreści}}{{nobold|{{r|Spis treści}} {{Patrz|SpisTreści}}}} === Funkcje do generowania spisu treści dla jego pewnych podmodułów, która można nazwać spisami, na podstawie pewnych stron konfiguracyjnych, lub nie, przy uwzględnieniu dodania artykułów określonych przez {{s|Układ autonawigacji}} (wykorzystywany przez {{s|Autonawigacja}} - ten szablon wykorzystuje własne skórki, jako szablony nawigacji, tzn. on oferuje linki: artykuł przed, artykuł po i artykuł głównego spisu treści) i w nim innych spisów niż główny spis treści, którym jest strona główna książki. Czasami tam funkcje, jeśli znajdą na stronie głównej artykuł {{Code|Spis treści}}, to go analizuje jako dodatkowy spis, którego nie trzeba dodawać do tego konfiguracyjnego szablonu. === {{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}}. Kod gnerowany przez tam funkcje są ustawiane na stronach zbiorczych, które obsługuje {{lpg|JavaScript}}, jako jeden z gadzetów (jest w fazie roboczej, ale jeszcze oficjalnie nieopublikowany), na stronie w przestrzeni nazw komunikatów {{Np|MediaWiki|link=tak}}. === {{lru|Moduły/StronicowyParser/Tekst}} === Elementy tu opisane są to funkcje do ładowania tekstu stron, nawet jego w sposób rekurencyjny. One służą do też ładowania właściwych stron artykułów. === {{lru|Moduły/StronicowyParser/ZbieranieDanychStron}}{{nobold|{{r|Spis treści}} {{Patrz|ZbieranieDanychStron}}}} === Moduł do zbierania informacji o aktualnej stronie, nie jak dla spisu treści, jak to robi moduł {{LinkPatrz|SpisTreś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 (nieksiążkowej, ale traktowana jak książkowa, bo parametry: {{Parametr|nazwa artykułu}} i {{Parametr|nazwa książki}}). === {{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> 6px08qljte0yd3u3ntmi1xe76xysv4u 553432 553431 2026-08-30T00:51:18Z Persino 2851 /* Spis treści */ 553432 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 == {{Kolumny|2|2= === {{lr|Moduły/StronicowyParser/Moduł główny|StronicowyParser}} === Procedury 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}}{{Nobold|{{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}} === Moduł 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}} === Funkcje zwracające 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 linkom 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. Funkcje tam dodają problemy jedno i wielowymiarowe (najwięcej trzy), w głównej tablicy problemów, a także problemy jednowymiarowym problemie, dla przestrzeni ksiązkowych, tzn. one są: {{Code|nazwa przestrzeni nazw}} {{Patrz|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni książki}} {{Patrz|nazwa przestrzeni książki}} i {{Code|nazwa książki}} {{Patrz|nazwa książki}}, w głównej tablicy problemów, i w jego tablicy pod, tzn.: {{Code|problemy książkowe}} {{Patrz|problemy książkowe}}. === {{lru|Moduły/StronicowyParser/Rozdziały}}{{nobold|{{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 są to poprzez funkcję główną, do zbierania danych z strony, z: {{LinkPatrz|ZbieranieDanychStron}}. === {{lru|Moduły/StronicowyParser/SpisTreści}}{{nobold|{{r|Spis treści}} {{Patrz|SpisTreści}}}} === Funkcje do generowania spisu treści dla jego pewnych podmodułów, która można nazwać spisami, na podstawie pewnych stron konfiguracyjnych, lub nie, przy uwzględnieniu dodania artykułów określonych przez {{s|Układ autonawigacji}} (wykorzystywany przez {{s|Autonawigacja}} - ten szablon wykorzystuje własne skórki, jako szablony nawigacji, tzn. on oferuje linki: artykuł przed, artykuł po i artykuł głównego spisu treści) i w nim innych spisów niż główny spis treści, którym jest strona główna książki. Czasami tam funkcje, jeśli znajdą na stronie głównej artykuł {{Code|Spis treści}}, to go analizuje jako dodatkowy spis, którego nie trzeba dodawać do tego konfiguracyjnego szablonu. === {{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}}. Kod gnerowany przez tam funkcje są ustawiane na stronach zbiorczych, które obsługuje {{lpg|JavaScript}}, jako jeden z gadzetów (jest w fazie roboczej, ale jeszcze oficjalnie nieopublikowany), na stronie w przestrzeni nazw komunikatów {{Np|MediaWiki|link=tak}}. === {{lru|Moduły/StronicowyParser/Tekst}} === Elementy tu opisane są to funkcje do ładowania tekstu stron, nawet jego w sposób rekurencyjny. One służą do też ładowania właściwych stron artykułów. === {{lru|Moduły/StronicowyParser/ZbieranieDanychStron}}{{nobold|{{r|Spis treści}} {{Patrz|ZbieranieDanychStron}}}} === Moduł do zbierania informacji o aktualnej stronie, nie jak dla spisu treści, jak to robi moduł {{LinkPatrz|SpisTreś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 (nieksiążkowej, ale traktowana jak książkowa, bo parametry: {{Parametr|nazwa artykułu}} i {{Parametr|nazwa książki}}). === {{lru|Moduły/StronicowyParser/informacje}} === Moduł ładujący informacje o danej stronie, dołączony raz na całą nią. Ładowany jest przez funkcję {{LzLua|mw.loadData}}. Gdy funkcje w tym module chcą załadować ponownie ten sam moduł, to zabezpieczenia modułu tego nie pozwalają. === {{lru|Moduły/StronicowyParser/obiekty}} === Zestaw stałych tablicowych ładowanych raz na całą stronę przez funkcję {{LzLua|mw.loadData}}. Z tych tablic korzystają funkcje '''{{ld|StronicowyParser|Stronicowego parsera}}''', czyli moduł: {{m|StronicowyParser}}, i jego podmoduły: {{m|StronicowyParser/}}. }} == 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> 3rvei19gda3e6l86ywbvaa6hpinq5vt 553433 553432 2026-08-30T00:59:06Z Persino 2851 /* Spis treści */ 553433 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 == {{Kolumny|2|2= === {{lr|Moduły/StronicowyParser/Moduł główny|StronicowyParser}} === Procedury 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}}{{Nobold|{{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}} === Moduł zawiera funkcje do analizy spisów i całej strony z drugiej strony, by na podstawie tego stworzyć spis identyfikatorów do nagłówków '''id''', jak i do ich nazw po usunięciu z nich linków, jak i tworzenia tablicy uchwytów do nagłówków, z ich identyfikatorami '''id''' do nich. === {{lru|Moduły/StronicowyParser/Kategorie}} === Funkcje zwracające 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 linkom 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. Funkcje tam dodają problemy jedno i wielowymiarowe (najwięcej trzy), w głównej tablicy problemów, a także problemy jednowymiarowym problemie, dla przestrzeni ksiązkowych, tzn. one są: {{Code|nazwa przestrzeni nazw}} {{Patrz|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni książki}} {{Patrz|nazwa przestrzeni książki}} i {{Code|nazwa książki}} {{Patrz|nazwa książki}}, w głównej tablicy problemów, i w jego tablicy pod, tzn.: {{Code|problemy książkowe}} {{Patrz|problemy książkowe}}. === {{lru|Moduły/StronicowyParser/Rozdziały}}{{nobold|{{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 są to poprzez funkcję główną, do zbierania danych z strony, z: {{LinkPatrz|ZbieranieDanychStron}}. === {{lru|Moduły/StronicowyParser/SpisTreści}}{{nobold|{{r|Spis treści}} {{Patrz|SpisTreści}}}} === Funkcje do generowania spisu treści dla jego pewnych podmodułów, która można nazwać spisami, na podstawie pewnych stron konfiguracyjnych, lub nie, przy uwzględnieniu dodania artykułów określonych przez {{s|Układ autonawigacji}} (wykorzystywany przez {{s|Autonawigacja}} - ten szablon wykorzystuje własne skórki, jako szablony nawigacji, tzn. on oferuje linki: artykuł przed, artykuł po i artykuł głównego spisu treści) i w nim innych spisów niż główny spis treści, którym jest strona główna książki. Czasami tam funkcje, jeśli znajdą na stronie głównej artykuł {{Code|Spis treści}}, to go analizuje jako dodatkowy spis, którego nie trzeba dodawać do tego konfiguracyjnego szablonu. === {{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}}. Kod gnerowany przez tam funkcje są ustawiane na stronach zbiorczych, które obsługuje {{lpg|JavaScript}}, jako jeden z gadzetów (jest w fazie roboczej, ale jeszcze oficjalnie nieopublikowany), na stronie w przestrzeni nazw komunikatów {{Np|MediaWiki|link=tak}}. === {{lru|Moduły/StronicowyParser/Tekst}} === Elementy tu opisane są to funkcje do ładowania tekstu stron, nawet jego w sposób rekurencyjny. One służą do też ładowania właściwych stron artykułów. === {{lru|Moduły/StronicowyParser/ZbieranieDanychStron}}{{nobold|{{r|Spis treści}} {{Patrz|ZbieranieDanychStron}}}} === Moduł do zbierania informacji o aktualnej stronie, nie jak dla spisu treści, jak to robi moduł {{LinkPatrz|SpisTreś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 (nieksiążkowej, ale traktowana jak książkowa, bo parametry: {{Parametr|nazwa artykułu}} i {{Parametr|nazwa książki}}). === {{lru|Moduły/StronicowyParser/informacje}} === Moduł ładujący informacje o danej stronie, dołączony raz na całą nią. Ładowany jest przez funkcję {{LzLua|mw.loadData}}. Gdy funkcje w tym module chcą załadować ponownie ten sam moduł, to zabezpieczenia modułu tego nie pozwalają. === {{lru|Moduły/StronicowyParser/obiekty}} === Zestaw stałych tablicowych ładowanych raz na całą stronę przez funkcję {{LzLua|mw.loadData}}. Z tych tablic korzystają funkcje '''{{ld|StronicowyParser|Stronicowego parsera}}''', czyli moduł: {{m|StronicowyParser}}, i jego podmoduły: {{m|StronicowyParser/}}. }} == 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> 06v1u4t8d76kocae1bot6dt32fan5vp 553434 553433 2026-08-30T01:05:47Z Persino 2851 /* Spis treści */ 553434 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 == {{Kolumny|2|2= === {{lr|Moduły/StronicowyParser/Moduł główny|StronicowyParser}} === Procedury 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}}{{Nobold|{{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}} === Moduł zawiera funkcje do analizy spisów i całej strony z drugiej strony, by na podstawie tego stworzyć spis identyfikatorów do nagłówków '''id''', jak i do ich nazw po usunięciu z nich linków, jak i tworzenia tablicy uchwytów do nagłówków, z ich identyfikatorami '''id''' do nich. === {{lru|Moduły/StronicowyParser/Kategorie}} === Funkcje zwracające kategorie, tylko raz przetworzone i policzone, zgłaszane przez {{Code|{{m|StronicowyParser|WstawKategorie}}}}, w chwili, gdy nastąpi jakiś problem ze: '''{{ld2|StronicowyParser|Stronicowym parserem}}''', dla danej strony artykułu w przestrzeni książkowej lub strony w przestrzeni nieksiążkowej, według głównej tablicy problemów. === {{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 linkom 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. Funkcje tam dodają problemy jedno i wielowymiarowe (najwięcej trzy), w głównej tablicy problemów, a także problemy jednowymiarowym problemie, dla przestrzeni ksiązkowych, tzn. one są: {{Code|nazwa przestrzeni nazw}} {{Patrz|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni książki}} {{Patrz|nazwa przestrzeni książki}} i {{Code|nazwa książki}} {{Patrz|nazwa książki}}, w głównej tablicy problemów, i w jego tablicy pod, tzn.: {{Code|problemy książkowe}} {{Patrz|problemy książkowe}}. === {{lru|Moduły/StronicowyParser/Rozdziały}}{{nobold|{{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 są to poprzez funkcję główną, do zbierania danych z strony, z: {{LinkPatrz|ZbieranieDanychStron}}. === {{lru|Moduły/StronicowyParser/SpisTreści}}{{nobold|{{r|Spis treści}} {{Patrz|SpisTreści}}}} === Funkcje do generowania spisu treści dla jego pewnych podmodułów, która można nazwać spisami, na podstawie pewnych stron konfiguracyjnych, lub nie, przy uwzględnieniu dodania artykułów określonych przez {{s|Układ autonawigacji}} (wykorzystywany przez {{s|Autonawigacja}} - ten szablon wykorzystuje własne skórki, jako szablony nawigacji, tzn. on oferuje linki: artykuł przed, artykuł po i artykuł głównego spisu treści) i w nim innych spisów niż główny spis treści, którym jest strona główna książki. Czasami tam funkcje, jeśli znajdą na stronie głównej artykuł {{Code|Spis treści}}, to go analizuje jako dodatkowy spis, którego nie trzeba dodawać do tego konfiguracyjnego szablonu. === {{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}}. Kod gnerowany przez tam funkcje są ustawiane na stronach zbiorczych, które obsługuje {{lpg|JavaScript}}, jako jeden z gadzetów (jest w fazie roboczej, ale jeszcze oficjalnie nieopublikowany), na stronie w przestrzeni nazw komunikatów {{Np|MediaWiki|link=tak}}. === {{lru|Moduły/StronicowyParser/Tekst}} === Elementy tu opisane są to funkcje do ładowania tekstu stron, nawet jego w sposób rekurencyjny. One służą do też ładowania właściwych stron artykułów. === {{lru|Moduły/StronicowyParser/ZbieranieDanychStron}}{{nobold|{{r|Spis treści}} {{Patrz|ZbieranieDanychStron}}}} === Moduł do zbierania informacji o aktualnej stronie, nie jak dla spisu treści, jak to robi moduł {{LinkPatrz|SpisTreś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 (nieksiążkowej, ale traktowana jak książkowa, bo parametry: {{Parametr|nazwa artykułu}} i {{Parametr|nazwa książki}}). === {{lru|Moduły/StronicowyParser/informacje}} === Moduł ładujący informacje o danej stronie, dołączony raz na całą nią. Ładowany jest przez funkcję {{LzLua|mw.loadData}}. Gdy funkcje w tym module chcą załadować ponownie ten sam moduł, to zabezpieczenia modułu tego nie pozwalają. === {{lru|Moduły/StronicowyParser/obiekty}} === Zestaw stałych tablicowych ładowanych raz na całą stronę przez funkcję {{LzLua|mw.loadData}}. Z tych tablic korzystają funkcje '''{{ld|StronicowyParser|Stronicowego parsera}}''', czyli moduł: {{m|StronicowyParser}}, i jego podmoduły: {{m|StronicowyParser/}}. }} == 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> 2hxjk8atw38faxecgcpi9ictzouslv9 553435 553434 2026-08-30T01:06:29Z Persino 2851 /* Spis treści */ 553435 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 == {{Kolumny|2|2= === {{lr|Moduły/StronicowyParser/Moduł główny|StronicowyParser}} === Procedury 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}}{{Nobold|{{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}} === Moduł zawiera funkcje do analizy spisów i całej strony z drugiej strony, by na podstawie tego stworzyć spis identyfikatorów do nagłówków '''id''', jak i do ich nazw po usunięciu z nich linków, jak i tworzenia tablicy uchwytów do nagłówków, z ich identyfikatorami '''id''' do nich. === {{lru|Moduły/StronicowyParser/Kategorie}} === Funkcje zwracające kategorie, tylko raz przetworzone i policzone, zgłaszane przez {{Code|{{m|StronicowyParser|WstawKategorie}}}}, w chwili, gdy nastąpi jakiś problem ze: '''{{ld|StronicowyParser|Stronicowym parserem}}''', dla danej strony artykułu w przestrzeni książkowej lub strony w przestrzeni nieksiążkowej, według głównej tablicy problemów. === {{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 linkom 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. Funkcje tam dodają problemy jedno i wielowymiarowe (najwięcej trzy), w głównej tablicy problemów, a także problemy jednowymiarowym problemie, dla przestrzeni ksiązkowych, tzn. one są: {{Code|nazwa przestrzeni nazw}} {{Patrz|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni książki}} {{Patrz|nazwa przestrzeni książki}} i {{Code|nazwa książki}} {{Patrz|nazwa książki}}, w głównej tablicy problemów, i w jego tablicy pod, tzn.: {{Code|problemy książkowe}} {{Patrz|problemy książkowe}}. === {{lru|Moduły/StronicowyParser/Rozdziały}}{{nobold|{{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 są to poprzez funkcję główną, do zbierania danych z strony, z: {{LinkPatrz|ZbieranieDanychStron}}. === {{lru|Moduły/StronicowyParser/SpisTreści}}{{nobold|{{r|Spis treści}} {{Patrz|SpisTreści}}}} === Funkcje do generowania spisu treści dla jego pewnych podmodułów, która można nazwać spisami, na podstawie pewnych stron konfiguracyjnych, lub nie, przy uwzględnieniu dodania artykułów określonych przez {{s|Układ autonawigacji}} (wykorzystywany przez {{s|Autonawigacja}} - ten szablon wykorzystuje własne skórki, jako szablony nawigacji, tzn. on oferuje linki: artykuł przed, artykuł po i artykuł głównego spisu treści) i w nim innych spisów niż główny spis treści, którym jest strona główna książki. Czasami tam funkcje, jeśli znajdą na stronie głównej artykuł {{Code|Spis treści}}, to go analizuje jako dodatkowy spis, którego nie trzeba dodawać do tego konfiguracyjnego szablonu. === {{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}}. Kod gnerowany przez tam funkcje są ustawiane na stronach zbiorczych, które obsługuje {{lpg|JavaScript}}, jako jeden z gadzetów (jest w fazie roboczej, ale jeszcze oficjalnie nieopublikowany), na stronie w przestrzeni nazw komunikatów {{Np|MediaWiki|link=tak}}. === {{lru|Moduły/StronicowyParser/Tekst}} === Elementy tu opisane są to funkcje do ładowania tekstu stron, nawet jego w sposób rekurencyjny. One służą do też ładowania właściwych stron artykułów. === {{lru|Moduły/StronicowyParser/ZbieranieDanychStron}}{{nobold|{{r|Spis treści}} {{Patrz|ZbieranieDanychStron}}}} === Moduł do zbierania informacji o aktualnej stronie, nie jak dla spisu treści, jak to robi moduł {{LinkPatrz|SpisTreś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 (nieksiążkowej, ale traktowana jak książkowa, bo parametry: {{Parametr|nazwa artykułu}} i {{Parametr|nazwa książki}}). === {{lru|Moduły/StronicowyParser/informacje}} === Moduł ładujący informacje o danej stronie, dołączony raz na całą nią. Ładowany jest przez funkcję {{LzLua|mw.loadData}}. Gdy funkcje w tym module chcą załadować ponownie ten sam moduł, to zabezpieczenia modułu tego nie pozwalają. === {{lru|Moduły/StronicowyParser/obiekty}} === Zestaw stałych tablicowych ładowanych raz na całą stronę przez funkcję {{LzLua|mw.loadData}}. Z tych tablic korzystają funkcje '''{{ld|StronicowyParser|Stronicowego parsera}}''', czyli moduł: {{m|StronicowyParser}}, i jego podmoduły: {{m|StronicowyParser/}}. }} == 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> b911gwdxg8faan15su7r5ntbyty5lp4 553436 553435 2026-08-30T01:26:02Z Persino 2851 /* Spis treści */ 553436 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 == {{Kolumny|2|2= === {{lr|Moduły/StronicowyParser/Moduł główny|StronicowyParser}} === Procedury 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}}{{Nobold|{{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}} === Moduł zawiera funkcje do analizy spisów i całej strony z drugiej strony, by na podstawie tego stworzyć spis identyfikatorów do nagłówków '''id''', jak i do ich nazw po usunięciu z nich linków, jak i tworzenia tablicy uchwytów do nagłówków, z ich identyfikatorami '''id''' do nich. === {{lru|Moduły/StronicowyParser/Kategorie}} === Funkcje zwracające kategorie, tylko raz przetworzone i policzone, zgłaszane przez {{Code|{{m|StronicowyParser|WstawKategorie}}}}, w chwili, gdy nastąpi jakiś problem ze: '''{{ld|StronicowyParser|Stronicowym parserem}}''', dla danej strony artykułu w przestrzeni książkowej lub strony w przestrzeni nieksiążkowej, według głównej tablicy problemów. === {{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. Tam jest funkcja do zbierania danych o nazwach rozdziałów i artykułów, i ich numerach, a także o ich parametrach, np. czy to jest podręcznik danej książki, czy link wskazuje z innej ksiązki, na aktualną daną książkę, o przekierowaniu do tego woluminu, a nawet czy link w danym podręczniku wskazuje na inny podręcznik. Tam parametry wskazują informacje o przekierowaniach dla danego artykułu lub informacje o danym przekoierowaniu, który wskazuje na inny artykuł. Jak tak, czy tak, to zależy od danego przekierowaniai na co on wskazuje. Funkcje tam umozliwia kilka trybów i poziomów liczenianumerów do danych artykułów, czy rozdziałów. === {{lru|Moduły/StronicowyParser/NumerLubNazwaNagłówkówKsiążek}} === Funkcje pobierania, na podstawie nazwy nagłówka, jego numeru, lub odwrotnie. Funkcja tam umożliwa kilka poziomów liczenia numeru danego rozdziału. === {{lru|Moduły/StronicowyParser/NumerObiektu}} === Funkcje numerowania uchwytów, przypisywanie uchwytom linkom 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. Funkcje tam dodają problemy jedno i wielowymiarowe (najwięcej trzy), w głównej tablicy problemów, a także problemy jednowymiarowym problemie, dla przestrzeni ksiązkowych, tzn. one są: {{Code|nazwa przestrzeni nazw}} {{Patrz|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni książki}} {{Patrz|nazwa przestrzeni książki}} i {{Code|nazwa książki}} {{Patrz|nazwa książki}}, w głównej tablicy problemów, i w jego tablicy pod, tzn.: {{Code|problemy książkowe}} {{Patrz|problemy książkowe}}. === {{lru|Moduły/StronicowyParser/Rozdziały}}{{nobold|{{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 są to poprzez funkcję główną, do zbierania danych z strony, z: {{LinkPatrz|ZbieranieDanychStron}}. === {{lru|Moduły/StronicowyParser/SpisTreści}}{{nobold|{{r|Spis treści}} {{Patrz|SpisTreści}}}} === Funkcje do generowania spisu treści dla jego pewnych podmodułów, która można nazwać spisami, na podstawie pewnych stron konfiguracyjnych, lub nie, przy uwzględnieniu dodania artykułów określonych przez {{s|Układ autonawigacji}} (wykorzystywany przez {{s|Autonawigacja}} - ten szablon wykorzystuje własne skórki, jako szablony nawigacji, tzn. on oferuje linki: artykuł przed, artykuł po i artykuł głównego spisu treści) i w nim innych spisów niż główny spis treści, którym jest strona główna książki. Czasami tam funkcje, jeśli znajdą na stronie głównej artykuł {{Code|Spis treści}}, to go analizuje jako dodatkowy spis, którego nie trzeba dodawać do tego konfiguracyjnego szablonu. === {{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}}. Kod gnerowany przez tam funkcje są ustawiane na stronach zbiorczych, które obsługuje {{lpg|JavaScript}}, jako jeden z gadzetów (jest w fazie roboczej, ale jeszcze oficjalnie nieopublikowany), na stronie w przestrzeni nazw komunikatów {{Np|MediaWiki|link=tak}}. === {{lru|Moduły/StronicowyParser/Tekst}} === Elementy tu opisane są to funkcje do ładowania tekstu stron, nawet jego w sposób rekurencyjny. One służą do też ładowania właściwych stron artykułów. === {{lru|Moduły/StronicowyParser/ZbieranieDanychStron}}{{nobold|{{r|Spis treści}} {{Patrz|ZbieranieDanychStron}}}} === Moduł do zbierania informacji o aktualnej stronie, nie jak dla spisu treści, jak to robi moduł {{LinkPatrz|SpisTreś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 (nieksiążkowej, ale traktowana jak książkowa, bo parametry: {{Parametr|nazwa artykułu}} i {{Parametr|nazwa książki}}). === {{lru|Moduły/StronicowyParser/informacje}} === Moduł ładujący informacje o danej stronie, dołączony raz na całą nią. Ładowany jest przez funkcję {{LzLua|mw.loadData}}. Gdy funkcje w tym module chcą załadować ponownie ten sam moduł, to zabezpieczenia modułu tego nie pozwalają. === {{lru|Moduły/StronicowyParser/obiekty}} === Zestaw stałych tablicowych ładowanych raz na całą stronę przez funkcję {{LzLua|mw.loadData}}. Z tych tablic korzystają funkcje '''{{ld|StronicowyParser|Stronicowego parsera}}''', czyli moduł: {{m|StronicowyParser}}, i jego podmoduły: {{m|StronicowyParser/}}. }} == 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> 9vhb22xztkpvtr1yodaj0ul7yuc3f04 553437 553436 2026-08-30T01:28:52Z Persino 2851 /* Spis treści */ 553437 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 == {{Kolumny|2|2= === {{lr|Moduły/StronicowyParser/Moduł główny|StronicowyParser}} === Procedury 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}}{{Nobold|{{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}} === Moduł zawiera funkcje do analizy spisów i całej strony z drugiej strony, by na podstawie tego stworzyć spis identyfikatorów do nagłówków '''id''', jak i do ich nazw po usunięciu z nich linków, jak i tworzenia tablicy uchwytów do nagłówków, z ich identyfikatorami '''id''' do nich. === {{lru|Moduły/StronicowyParser/Kategorie}} === Funkcje zwracające kategorie, tylko raz przetworzone i policzone, zgłaszane przez {{Code|{{m|StronicowyParser|WstawKategorie}}}}, w chwili, gdy nastąpi jakiś problem ze: '''{{ld|StronicowyParser|Stronicowym parserem}}''', dla danej strony artykułu w przestrzeni książkowej lub strony w przestrzeni nieksiążkowej, według głównej tablicy problemów. === {{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. Tam jest funkcja do zbierania danych o nazwach rozdziałów i artykułów, i ich numerach, a także o ich parametrach, np. czy to jest podręcznik danej książki, czy link wskazuje z innej ksiązki, na aktualną daną książkę, o przekierowaniu do tego woluminu, a nawet czy link w danym podręczniku wskazuje na inny podręcznik. Tam parametry wskazują informacje o przekierowaniach dla danego artykułu lub informacje o danym przekoierowaniu, który wskazuje na inny artykuł. Jak tak, czy tak, to zależy od danego przekierowaniai na co on wskazuje. Funkcje tam umozliwia kilka trybów i poziomów liczenianumerów do danych artykułów, czy rozdziałów. Są też tam funkcje do pomijania pewnych rozdziałów i w nich artykułów przy liczeniu ich numerów. === {{lru|Moduły/StronicowyParser/NumerLubNazwaNagłówkówKsiążek}} === Funkcje pobierania, na podstawie nazwy nagłówka, jego numeru, lub odwrotnie. Funkcja tam umożliwa kilka poziomów liczenia numeru danego rozdziału. Są też tam funkcje do pomijania pewnych rozdziałów przy liczeniu ich numerów. === {{lru|Moduły/StronicowyParser/NumerObiektu}} === Funkcje numerowania uchwytów, przypisywanie uchwytom linkom 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. Funkcje tam dodają problemy jedno i wielowymiarowe (najwięcej trzy), w głównej tablicy problemów, a także problemy jednowymiarowym problemie, dla przestrzeni ksiązkowych, tzn. one są: {{Code|nazwa przestrzeni nazw}} {{Patrz|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni książki}} {{Patrz|nazwa przestrzeni książki}} i {{Code|nazwa książki}} {{Patrz|nazwa książki}}, w głównej tablicy problemów, i w jego tablicy pod, tzn.: {{Code|problemy książkowe}} {{Patrz|problemy książkowe}}. === {{lru|Moduły/StronicowyParser/Rozdziały}}{{nobold|{{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 są to poprzez funkcję główną, do zbierania danych z strony, z: {{LinkPatrz|ZbieranieDanychStron}}. === {{lru|Moduły/StronicowyParser/SpisTreści}}{{nobold|{{r|Spis treści}} {{Patrz|SpisTreści}}}} === Funkcje do generowania spisu treści dla jego pewnych podmodułów, która można nazwać spisami, na podstawie pewnych stron konfiguracyjnych, lub nie, przy uwzględnieniu dodania artykułów określonych przez {{s|Układ autonawigacji}} (wykorzystywany przez {{s|Autonawigacja}} - ten szablon wykorzystuje własne skórki, jako szablony nawigacji, tzn. on oferuje linki: artykuł przed, artykuł po i artykuł głównego spisu treści) i w nim innych spisów niż główny spis treści, którym jest strona główna książki. Czasami tam funkcje, jeśli znajdą na stronie głównej artykuł {{Code|Spis treści}}, to go analizuje jako dodatkowy spis, którego nie trzeba dodawać do tego konfiguracyjnego szablonu. === {{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}}. Kod gnerowany przez tam funkcje są ustawiane na stronach zbiorczych, które obsługuje {{lpg|JavaScript}}, jako jeden z gadzetów (jest w fazie roboczej, ale jeszcze oficjalnie nieopublikowany), na stronie w przestrzeni nazw komunikatów {{Np|MediaWiki|link=tak}}. === {{lru|Moduły/StronicowyParser/Tekst}} === Elementy tu opisane są to funkcje do ładowania tekstu stron, nawet jego w sposób rekurencyjny. One służą do też ładowania właściwych stron artykułów. === {{lru|Moduły/StronicowyParser/ZbieranieDanychStron}}{{nobold|{{r|Spis treści}} {{Patrz|ZbieranieDanychStron}}}} === Moduł do zbierania informacji o aktualnej stronie, nie jak dla spisu treści, jak to robi moduł {{LinkPatrz|SpisTreś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 (nieksiążkowej, ale traktowana jak książkowa, bo parametry: {{Parametr|nazwa artykułu}} i {{Parametr|nazwa książki}}). === {{lru|Moduły/StronicowyParser/informacje}} === Moduł ładujący informacje o danej stronie, dołączony raz na całą nią. Ładowany jest przez funkcję {{LzLua|mw.loadData}}. Gdy funkcje w tym module chcą załadować ponownie ten sam moduł, to zabezpieczenia modułu tego nie pozwalają. === {{lru|Moduły/StronicowyParser/obiekty}} === Zestaw stałych tablicowych ładowanych raz na całą stronę przez funkcję {{LzLua|mw.loadData}}. Z tych tablic korzystają funkcje '''{{ld|StronicowyParser|Stronicowego parsera}}''', czyli moduł: {{m|StronicowyParser}}, i jego podmoduły: {{m|StronicowyParser/}}. }} == 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> t2goipumae0jeo21s2qdd83kgdw6clg 553438 553437 2026-08-30T02:01:15Z Persino 2851 553438 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. Też są tam funkcje do numerowania tylko rozdziałów dodatnich albo do numerowania dowolnych rozdziałów i w nich artykułów, w spisach. == Spis treści == {{Kolumny|2|2= === {{lr|Moduły/StronicowyParser/Moduł główny|StronicowyParser}} === Procedury 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}}{{Nobold|{{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}} === Moduł zawiera funkcje do analizy spisów i całej strony z drugiej strony, by na podstawie tego stworzyć spis identyfikatorów do nagłówków '''id''', jak i do ich nazw po usunięciu z nich linków, jak i tworzenia tablicy uchwytów do nagłówków, z ich identyfikatorami '''id''' do nich. === {{lru|Moduły/StronicowyParser/Kategorie}} === Funkcje zwracające kategorie, tylko raz przetworzone i policzone, zgłaszane przez {{Code|{{m|StronicowyParser|WstawKategorie}}}}, w chwili, gdy nastąpi jakiś problem ze: '''{{ld|StronicowyParser|Stronicowym parserem}}''', dla danej strony artykułu w przestrzeni książkowej lub strony w przestrzeni nieksiążkowej, według głównej tablicy problemów. === {{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. Tam jest funkcja do zbierania danych o nazwach rozdziałów i artykułów, i ich numerach, a także o ich parametrach, np. czy to jest podręcznik danej książki, czy link wskazuje z innej ksiązki, na aktualną daną książkę, o przekierowaniu do tego woluminu, a nawet czy link w danym podręczniku wskazuje na inny podręcznik. Tam parametry wskazują informacje o przekierowaniach dla danego artykułu lub informacje o danym przekoierowaniu, który wskazuje na inny artykuł. Jak tak, czy tak, to zależy od danego przekierowaniai na co on wskazuje. Funkcje tam umozliwia kilka trybów i poziomów liczenianumerów do danych artykułów, czy rozdziałów. Są też tam funkcje do pomijania pewnych rozdziałów i w nich artykułów przy liczeniu ich numerów. === {{lru|Moduły/StronicowyParser/NumerLubNazwaNagłówkówKsiążek}} === Funkcje pobierania, na podstawie nazwy nagłówka, jego numeru, lub odwrotnie. Funkcja tam umożliwa kilka poziomów liczenia numeru danego rozdziału. Są też tam funkcje do pomijania pewnych rozdziałów przy liczeniu ich numerów. === {{lru|Moduły/StronicowyParser/NumerObiektu}} === Funkcje numerowania uchwytów, przypisywanie uchwytom linkom 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. Funkcje tam dodają problemy jedno i wielowymiarowe (najwięcej trzy), w głównej tablicy problemów, a także problemy jednowymiarowym problemie, dla przestrzeni ksiązkowych, tzn. one są: {{Code|nazwa przestrzeni nazw}} {{Patrz|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni książki}} {{Patrz|nazwa przestrzeni książki}} i {{Code|nazwa książki}} {{Patrz|nazwa książki}}, w głównej tablicy problemów, i w jego tablicy pod, tzn.: {{Code|problemy książkowe}} {{Patrz|problemy książkowe}}. === {{lru|Moduły/StronicowyParser/Rozdziały}}{{nobold|{{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 są to poprzez funkcję główną, do zbierania danych z strony, z: {{LinkPatrz|ZbieranieDanychStron}}. === {{lru|Moduły/StronicowyParser/SpisTreści}}{{nobold|{{r|Spis treści}} {{Patrz|SpisTreści}}}} === Funkcje do generowania spisu treści dla jego pewnych podmodułów, która można nazwać spisami, na podstawie pewnych stron konfiguracyjnych, lub nie, przy uwzględnieniu dodania artykułów określonych przez {{s|Układ autonawigacji}} (wykorzystywany przez {{s|Autonawigacja}} - ten szablon wykorzystuje własne skórki, jako szablony nawigacji, tzn. on oferuje linki: artykuł przed, artykuł po i artykuł głównego spisu treści) i w nim innych spisów niż główny spis treści, którym jest strona główna książki. Czasami tam funkcje, jeśli znajdą na stronie głównej artykuł {{Code|Spis treści}}, to go analizuje jako dodatkowy spis, którego nie trzeba dodawać do tego konfiguracyjnego szablonu. === {{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}}. Kod gnerowany przez tam funkcje są ustawiane na stronach zbiorczych, które obsługuje {{lpg|JavaScript}}, jako jeden z gadzetów (jest w fazie roboczej, ale jeszcze oficjalnie nieopublikowany), na stronie w przestrzeni nazw komunikatów {{Np|MediaWiki|link=tak}}. === {{lru|Moduły/StronicowyParser/Tekst}} === Elementy tu opisane są to funkcje do ładowania tekstu stron, nawet jego w sposób rekurencyjny. One służą do też ładowania właściwych stron artykułów. === {{lru|Moduły/StronicowyParser/ZbieranieDanychStron}}{{nobold|{{r|Spis treści}} {{Patrz|ZbieranieDanychStron}}}} === Moduł do zbierania informacji o aktualnej stronie, nie jak dla spisu treści, jak to robi moduł {{LinkPatrz|SpisTreś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 (nieksiążkowej, ale traktowana jak książkowa, bo parametry: {{Parametr|nazwa artykułu}} i {{Parametr|nazwa książki}}). === {{lru|Moduły/StronicowyParser/informacje}} === Moduł ładujący informacje o danej stronie, dołączony raz na całą nią. Ładowany jest przez funkcję {{LzLua|mw.loadData}}. Gdy funkcje w tym module chcą załadować ponownie ten sam moduł, to zabezpieczenia modułu tego nie pozwalają. === {{lru|Moduły/StronicowyParser/obiekty}} === Zestaw stałych tablicowych ładowanych raz na całą stronę przez funkcję {{LzLua|mw.loadData}}. Z tych tablic korzystają funkcje '''{{ld|StronicowyParser|Stronicowego parsera}}''', czyli moduł: {{m|StronicowyParser}}, i jego podmoduły: {{m|StronicowyParser/}}. }} == 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> qmx8ahuegyhg8mkf11y5b4ridpuvaus Wikibooks:Moduły/StronicowyParser/Problemy 4 63520 553429 547516 2026-08-30T00:41:45Z Persino 2851 /* {{Śródtytuł|p.DodawanieProblemowegoElementuDoTablicy}}{{Code|p.DodawanieProblemowegoElementuDoTablicy}} */ 553429 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Problemy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.CzyJestTakiProblemowyElement}}{{Code|p.CzyJestTakiProblemowyElement}} == Funkcja sprawdza maksymalnie od jednego do trzech elementów kluczy tablicy wielowymiarowej, czy taki problem istnieje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyJestTakiProblemowyElement(self,element,element2,element3)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji modułu danej tablicy, * {{Code|element}} {{Patrz|element}} - pierwszy {{ZobaczTeż|element}} element tablicy wielowymiarowej kluczy problemów, on na pewno musi istnieć, * {{Code|element2}} {{Patrz|element2}} - drugi, jeśli istnieje, element traktowany podobnie jak w: {{LinkZobaczTeż|element}}, przeciwnie, dalszych nie uwzględniamy, * {{Code|element3}} {{Patrz|element3}} - trzeci, jeśli istnieje, element traktowany podobnie jak w: {{LinkZobaczTeż|element}}. Funkcja dla tablicy: {{Code|self.tabela_listy_danych_analizy_ksiazki}} {{Patrz|self.tabela_listy_danych_analizy_ksiazki}}, dla jej podtablicy o kluczu: {{Code|problemy}} {{Patrz|problemy}}, jest sprawdzana elementami kluczy wielowymiarych, czy taki problem istnieje. == {{Śródtytuł|p.UstawTakiProblemowyElement}}{{Code|p.UstawTakiProblemowyElement}} == Funkcja ustawia maksymalnie od jednego do trzech elementów kluczy tablicy wielowymiarowej dla danego kodu problemu w tablicy problemów. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawTakiProblemowyElement(self,element,element2,element3)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|element}} - jak w: {{LinkPatrz|element}}, * {{Code|element2}} - jak w: {{LinkPatrz|element2}}, * {{Code|element3}} - jak w: {{LinkPatrz|element3}}. Funkcja dla tablicy: {{LinkPatrz|self.tabela_listy_danych_analizy_ksiazki}}, dla jej podtablicy o kluczu: {{LinkPatrz|problemy}}, ustawia dany kod problemu. == {{Śródtytuł|p.CzyJestTakiElementTabeliProblemu}}{{Code|p.CzyJestTakiElementTabeliProblemu}} == Funkcja sprawdza, czy taki dany problem dla pewnych nazw charakteryzujący daną książkę jest ustawiony w tablicy problemów. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyJestTakiElementTabeliProblemu(self,element_tablicy,nazwa_obiektu,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|element_tablicy}} {{Patrz|element_tablicy}} - kod danego problemu, * {{Code|nazwa_obiektu}} {{Patrz|nazwa_obiektu}} - nazwa obiektu, jeśli istnieje, * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki. Dla tablicy: {{LinkPatrz|self.tabela_listy_danych_analizy_ksiazki}}, dla podtablicy o kluczu wielowymiarowej: {{LinkPatrz|problemy}} i {{Code|problemy książkowe}} {{Patrz|problemy książkowe}}, dla innych elementów tej tablicy kluczy nazw: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, dla dalszego klucza: {{LinkPatrz|element_tablicy}}, jest sprawdzane, czy taki element istnieje, jeżeli w ogólne wcześniejsze elementy kluczy zostały ustawione w większych podtablicach, i jest zwracane przez funkcję wartość, czy takie jest, co zrewidowano, a jeśli dalszy element do {{LinkPatrz|nazwa_obiektu}}, nie istnieje, przeciwnie dla: {{LinkPatrz|nazwa_obiektu}}, jeśli został podany, sprawdzane jest, czy taki element istnieje, i jest zwracany tego wynik. == {{Śródtytuł|p.DodawanieProblemowegoElementuDoTablicy}}{{Code|p.DodawanieProblemowegoElementuDoTablicy}} == Funkcja ustawia, taki dany problem dla pewnych nazw charakteryzujący daną książkę, w tablicy problemów. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieProblemowegoElementuDoTablicy(self,element_tablicy,nazwa_obiektu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|element_tablicy}} - jak w: {{LinkPatrz|element_tablicy}}, * {{Code|nazwa_obiektu}} - jak w: {{LinkPatrz|nazwa_obiektu}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}. Dla tablicy: {{LinkPatrz|self.tabela_listy_danych_analizy_ksiazki}}, dla podtablicy o kluczu wielowymiarowym: {{LinkPatrz|problemy}} i {{Code|problemy książkowe}} {{LinkPatrz|problemy książkowe}}, dla innych elementów tej tablicy kluczy nazw: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, dla dalszego klucza problemu: {{LinkPatrz|element}}, dla nazwy obiektu, jeśli istnieje: {{LinkPatrz|nazwa_obiektu}}, jest ustawiana tablica pusta, aby ustawić dany problem. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> qe1mu8qw4fskj8a0faet9tx9d8rx3mr 553430 553429 2026-08-30T00:42:04Z Persino 2851 /* {{Śródtytuł|p.CzyJestTakiElementTabeliProblemu}}{{Code|p.CzyJestTakiElementTabeliProblemu}} */ 553430 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Problemy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.CzyJestTakiProblemowyElement}}{{Code|p.CzyJestTakiProblemowyElement}} == Funkcja sprawdza maksymalnie od jednego do trzech elementów kluczy tablicy wielowymiarowej, czy taki problem istnieje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyJestTakiProblemowyElement(self,element,element2,element3)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji modułu danej tablicy, * {{Code|element}} {{Patrz|element}} - pierwszy {{ZobaczTeż|element}} element tablicy wielowymiarowej kluczy problemów, on na pewno musi istnieć, * {{Code|element2}} {{Patrz|element2}} - drugi, jeśli istnieje, element traktowany podobnie jak w: {{LinkZobaczTeż|element}}, przeciwnie, dalszych nie uwzględniamy, * {{Code|element3}} {{Patrz|element3}} - trzeci, jeśli istnieje, element traktowany podobnie jak w: {{LinkZobaczTeż|element}}. Funkcja dla tablicy: {{Code|self.tabela_listy_danych_analizy_ksiazki}} {{Patrz|self.tabela_listy_danych_analizy_ksiazki}}, dla jej podtablicy o kluczu: {{Code|problemy}} {{Patrz|problemy}}, jest sprawdzana elementami kluczy wielowymiarych, czy taki problem istnieje. == {{Śródtytuł|p.UstawTakiProblemowyElement}}{{Code|p.UstawTakiProblemowyElement}} == Funkcja ustawia maksymalnie od jednego do trzech elementów kluczy tablicy wielowymiarowej dla danego kodu problemu w tablicy problemów. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawTakiProblemowyElement(self,element,element2,element3)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|element}} - jak w: {{LinkPatrz|element}}, * {{Code|element2}} - jak w: {{LinkPatrz|element2}}, * {{Code|element3}} - jak w: {{LinkPatrz|element3}}. Funkcja dla tablicy: {{LinkPatrz|self.tabela_listy_danych_analizy_ksiazki}}, dla jej podtablicy o kluczu: {{LinkPatrz|problemy}}, ustawia dany kod problemu. == {{Śródtytuł|p.CzyJestTakiElementTabeliProblemu}}{{Code|p.CzyJestTakiElementTabeliProblemu}} == Funkcja sprawdza, czy taki dany problem dla pewnych nazw charakteryzujący daną książkę jest ustawiony w tablicy problemów. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyJestTakiElementTabeliProblemu(self,element_tablicy,nazwa_obiektu,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|element_tablicy}} {{Patrz|element_tablicy}} - kod danego problemu, * {{Code|nazwa_obiektu}} {{Patrz|nazwa_obiektu}} - nazwa obiektu, jeśli istnieje, * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki. Dla tablicy: {{LinkPatrz|self.tabela_listy_danych_analizy_ksiazki}}, dla podtablicy o kluczu wielowymiarowym: {{LinkPatrz|problemy}} i {{Code|problemy książkowe}} {{Patrz|problemy książkowe}}, dla innych elementów tej tablicy kluczy nazw: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, dla dalszego klucza: {{LinkPatrz|element_tablicy}}, jest sprawdzane, czy taki element istnieje, jeżeli w ogólne wcześniejsze elementy kluczy zostały ustawione w większych podtablicach, i jest zwracane przez funkcję wartość, czy takie jest, co zrewidowano, a jeśli dalszy element do {{LinkPatrz|nazwa_obiektu}}, nie istnieje, przeciwnie dla: {{LinkPatrz|nazwa_obiektu}}, jeśli został podany, sprawdzane jest, czy taki element istnieje, i jest zwracany tego wynik. == {{Śródtytuł|p.DodawanieProblemowegoElementuDoTablicy}}{{Code|p.DodawanieProblemowegoElementuDoTablicy}} == Funkcja ustawia, taki dany problem dla pewnych nazw charakteryzujący daną książkę, w tablicy problemów. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieProblemowegoElementuDoTablicy(self,element_tablicy,nazwa_obiektu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|element_tablicy}} - jak w: {{LinkPatrz|element_tablicy}}, * {{Code|nazwa_obiektu}} - jak w: {{LinkPatrz|nazwa_obiektu}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}. Dla tablicy: {{LinkPatrz|self.tabela_listy_danych_analizy_ksiazki}}, dla podtablicy o kluczu wielowymiarowym: {{LinkPatrz|problemy}} i {{Code|problemy książkowe}} {{LinkPatrz|problemy książkowe}}, dla innych elementów tej tablicy kluczy nazw: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, dla dalszego klucza problemu: {{LinkPatrz|element}}, dla nazwy obiektu, jeśli istnieje: {{LinkPatrz|nazwa_obiektu}}, jest ustawiana tablica pusta, aby ustawić dany problem. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> o84vhw9lm0l3j09ci7rc8y9lplnsvk0 Wikibooks:Moduły/StronicowyParser/informacje 4 63526 553426 551540 2026-08-30T00:26:18Z Persino 2851 /* Ładowalna funkcja bazy i jego tablica tworzona raz na całą stronę */ 553426 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/informacje}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == Ładowanie bazy danych strony == Baza danych strony jest poprzez ładowanie tego modułu, z której uzykujemy tablicę transportu tego modułu, w której są ukryte jego elementy, tutaj jego podtablica: <syntaxhighlight lang="lua"> ---- Ładowania tablicy transportu modułu: "Module:StronicowyParser/informacje"; local stronicowyparser_informacje_modul=mw.loadData("Module:StronicowyParser/informacje"); ---- Tabela, w której są zbierane informacje na temat strony; local tablica_zebranych_danych_woluminowych=stronicowyparser_informacje_modul.tablica_zebranych_danych_woluminowych; </syntaxhighlight> Moduł ładuje się tylko raz na stronę (takie są właściwości: {{LzLua|mw.loadData}}, w przeciwieństwie do: {{LzLua|require}}), nawet gdy jest ładowany przez różne ramki w niej. == Ładowalna funkcja bazy i jego tablica tworzona raz na całą stronę == * Moduł ładuje głównie funkcję z modułu: {{Code|{{ld2|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}}}, o nazwie: {{LinkŚródtytuł|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}, do pobierania danych strony, który zapisuje dane w otrzymanej z niej tabeli. Tabela jest tworzona raz na całą stronę. Funkcja jest wywoływana w funkcji, na stronie: {{Code|m.InformacjeStronicowegoParsera()}}, której ciało: <syntaxhighlight lang="lua"> local nazwa_modulu="Module:StronicowyParser/GłównaFunkcjaZbieraniaDanychStron"; local pakiet_modul=package.loaded[nazwa_modulu] or package.preload[nazwa_modulu] or package.loaders[nazwa_modulu]; if(not pakiet_modul)then local stronicowyparser_zbieraniedanychstron_modul=require(nazwa_modulu); return stronicowyparser_zbieraniedanychstron_modul:PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi(); end; return pakiet_modul:PobieranieInformacjiRamkiRozpatrywanejStrony(); </syntaxhighlight> Ta funkcja przeszukuje, czy moduł jest w trakcie ładowania, jeżeli nie jest, to jest ładowane: {{LinkŚródtytuł|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}, w przeciwnym wypadku, jest ładowany na podstawie elementu: {{Code|self}} {{LinkPatrz|self|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}, ładując funkcję: {{LinkŚródtytuł|p.PobieranieInformacjiRamkiRozpatrywanejStrony|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}, informacje o danej stronie wraz z nią skojarzonymi stronami. To wywołanie znajduje się w innej funkcji w tym module, której kod piszemy jako: <syntaxhighlight lang="lua"> local p={}; local m={}; function m.InformacjeStronicowegoParsera() ... ----- ciało tej funkcji; end; p.tablica_zebranych_danych_woluminowych=m.InformacjeStronicowegoParsera(); return p; </syntaxhighlight> To wywołanie zbiera dane o stronie w podtablicy tablicy transportu funkcji {{Code|p}}, która jest zwracana na zewnątrz tego modułu. Tym elementem jest {{Code|p.tablica_zebranych_danych_woluminowych}} {{Patrz|p.tablica_zebranych_danych_woluminowych}}, którą również możemy uzyskać z funkcji {{LzLua|mw.loadData}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> p7kxjrmgc2tbaar8o1939qpa2yv25ty 553427 553426 2026-08-30T00:27:36Z Persino 2851 /* Ładowalna funkcja bazy i jego tablica tworzona raz na całą stronę */ 553427 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/informacje}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == Ładowanie bazy danych strony == Baza danych strony jest poprzez ładowanie tego modułu, z której uzykujemy tablicę transportu tego modułu, w której są ukryte jego elementy, tutaj jego podtablica: <syntaxhighlight lang="lua"> ---- Ładowania tablicy transportu modułu: "Module:StronicowyParser/informacje"; local stronicowyparser_informacje_modul=mw.loadData("Module:StronicowyParser/informacje"); ---- Tabela, w której są zbierane informacje na temat strony; local tablica_zebranych_danych_woluminowych=stronicowyparser_informacje_modul.tablica_zebranych_danych_woluminowych; </syntaxhighlight> Moduł ładuje się tylko raz na stronę (takie są właściwości: {{LzLua|mw.loadData}}, w przeciwieństwie do: {{LzLua|require}}), nawet gdy jest ładowany przez różne ramki w niej. == Ładowalna funkcja bazy i jego tablica tworzona raz na całą stronę == * Moduł ładuje głównie funkcję z modułu: {{Code|{{ld2|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}}}, o nazwie: {{LinkŚródtytuł|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}, do pobierania danych strony, który zapisuje dane w otrzymanej z niej tabeli. Tabela jest tworzona raz na całą stronę. Funkcja jest wywoływana w funkcji, na stronie: {{Code|m.InformacjeStronicowegoParsera()}}, której ciało: <syntaxhighlight lang="lua"> local nazwa_modulu="Module:StronicowyParser/GłównaFunkcjaZbieraniaDanychStron"; local pakiet_modul=package.loaded[nazwa_modulu] or package.preload[nazwa_modulu] or package.loaders[nazwa_modulu]; if(not pakiet_modul)then local stronicowyparser_zbieraniedanychstron_modul=require(nazwa_modulu); return stronicowyparser_zbieraniedanychstron_modul:PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi(); end; return pakiet_modul:PobieranieInformacjiRamkiRozpatrywanejStrony(); </syntaxhighlight> Ta funkcja przeszukuje, czy moduł jest w trakcie ładowania, jeżeli nie jest, to jest ładowane: {{LinkŚródtytuł|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}, w przeciwnym wypadku, jest ładowany na podstawie elementu: {{Code|self}} {{LinkPatrz|self|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}, ładując funkcję: {{LinkŚródtytuł|p.PobieranieInformacjiRamkiRozpatrywanejStrony|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}, informacje o danej stronie wraz z nią skojarzonymi stronami. To wywołanie znajduje się w innej funkcji w tym module, której kod piszemy jako: <syntaxhighlight lang="lua"> local p={}; local m={}; function m.InformacjeStronicowegoParsera() ... ----- ciało tej funkcji; end; p.tablica_zebranych_danych_woluminowych=m.InformacjeStronicowegoParsera(); return p; </syntaxhighlight> To wywołanie zbiera dane o stronie w podtablicy tablicy transportu funkcji {{Code|p}}, która jest zwracana na zewnątrz tego modułu. Tym elementem jest: {{Code|p.tablica_zebranych_danych_woluminowych}} {{Patrz|p.tablica_zebranych_danych_woluminowych}}, którą również możemy uzyskać z funkcji: {{LzLua|mw.loadData}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 50avb9t1zmwjcghcy4p7uqdpuj6y4hn 553428 553427 2026-08-30T00:29:18Z Persino 2851 /* Ładowalna funkcja bazy i jego tablica tworzona raz na całą stronę */ 553428 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/informacje}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == Ładowanie bazy danych strony == Baza danych strony jest poprzez ładowanie tego modułu, z której uzykujemy tablicę transportu tego modułu, w której są ukryte jego elementy, tutaj jego podtablica: <syntaxhighlight lang="lua"> ---- Ładowania tablicy transportu modułu: "Module:StronicowyParser/informacje"; local stronicowyparser_informacje_modul=mw.loadData("Module:StronicowyParser/informacje"); ---- Tabela, w której są zbierane informacje na temat strony; local tablica_zebranych_danych_woluminowych=stronicowyparser_informacje_modul.tablica_zebranych_danych_woluminowych; </syntaxhighlight> Moduł ładuje się tylko raz na stronę (takie są właściwości: {{LzLua|mw.loadData}}, w przeciwieństwie do: {{LzLua|require}}), nawet gdy jest ładowany przez różne ramki w niej. == Ładowalna funkcja bazy i jego tablica tworzona raz na całą stronę == * Moduł ładuje głównie funkcję z modułu: {{Code|{{ld2|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}}}, o nazwie: {{LinkŚródtytuł|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}, do pobierania danych strony, który zapisuje w otrzymanej z niej tabeli. Tabela ta jest tworzona raz na całą stronę. Funkcja jest wywoływana w funkcji, na stronie: {{Code|m.InformacjeStronicowegoParsera()}}, której ciało: <syntaxhighlight lang="lua"> local nazwa_modulu="Module:StronicowyParser/GłównaFunkcjaZbieraniaDanychStron"; local pakiet_modul=package.loaded[nazwa_modulu] or package.preload[nazwa_modulu] or package.loaders[nazwa_modulu]; if(not pakiet_modul)then local stronicowyparser_zbieraniedanychstron_modul=require(nazwa_modulu); return stronicowyparser_zbieraniedanychstron_modul:PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi(); end; return pakiet_modul:PobieranieInformacjiRamkiRozpatrywanejStrony(); </syntaxhighlight> Ta funkcja przeszukuje, czy moduł jest w trakcie ładowania, jeżeli nie jest, to jest ładowane: {{LinkŚródtytuł|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}, w przeciwnym wypadku, jest ładowany na podstawie elementu: {{Code|self}} {{LinkPatrz|self|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}, ładując funkcję: {{LinkŚródtytuł|p.PobieranieInformacjiRamkiRozpatrywanejStrony|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}, informacje o danej stronie wraz z nią skojarzonymi stronami. To wywołanie znajduje się w innej funkcji w tym module, której kod piszemy jako: <syntaxhighlight lang="lua"> local p={}; local m={}; function m.InformacjeStronicowegoParsera() ... ----- ciało tej funkcji; end; p.tablica_zebranych_danych_woluminowych=m.InformacjeStronicowegoParsera(); return p; </syntaxhighlight> To wywołanie zbiera dane o stronie w podtablicy tablicy transportu funkcji {{Code|p}}, która jest zwracana na zewnątrz tego modułu. Tym elementem jest: {{Code|p.tablica_zebranych_danych_woluminowych}} {{Patrz|p.tablica_zebranych_danych_woluminowych}}, którą również możemy uzyskać z funkcji: {{LzLua|mw.loadData}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> lt4pt25p5yelwoqc1j9whvg3nbpg2qt Wikibooks:Moduły/StronicowyParser/Rozdziały/Tom I 4 63902 553440 551542 2026-08-30T02:25:51Z Persino 2851 /* {{Code|p.NumerSekcjiStrony}} */ 553440 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Code|p.TekstWprowadzeniaTekstu}} == Funkcja liczy tekst pomiędzy dwoma rozdziami o danych identyfikatorach {{Code|id}} na podstawie podanego tekstu do rozważań, który może posiadać rozdziały z tymi unikalnymi wartościami. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} - tekst do analizy, do uzyskania pomiędzy dwoma identyfikatorami tekstu, * {{Code|id_rozdzialu1}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany od poczatku, do pewnego identyfikatora, * {{Code|id_rozdzialu2}} - ten rozdział drugi, przed którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany do końca, od pewnego identyfikatora. Przykład użycia: <syntaxhighlight lang="lua"> local strona="Pomoc:Spis treści"; local title=mw.title.makeTitle('',strona); local tekst=title:getContent(); local id_rozdzialu1="Pomoc Wikibooks"; local id_rozdzialu2="Wstęp"; local stronicowyparser_rozdzialu_modul=require("Module:StronicowyParser/Rozdziały"); tekst=stronicowyparser_rozdzialu_modul.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2); </syntaxhighlight> Uzykane wyniki w tekście pomiędzy dwoma identyfikatorami: <syntaxhighlight lang="lua"> local tekst="'''{{lr|Czym jest Wikibooks|Wikibooks}}''' jest zbiorem darmowych książek pisanych przez internautów. Poniższe strony pomocy zawierają porady i informacje o naszym projekcie. Projekt ten – będący siostrzanym projektem Wikipedii – powstał 10 lipca 2003 r. Polska wersja została uruchomiona '''24 stycznia 2004 roku''' i w tej chwili posiada już {{Forma wyrazu podręcznik po liczbie|'''{{LICZBAPODRĘCZNIKÓW}}'''}}, a w nich {{Forma wyrazu artykuł po liczbie|'''{{NUMBEROFARTICLES}}'''}}."; </syntaxhighlight> == {{Code|p.TekstPoNapisieWprowadzeniaTekstuStrony}} == Funkcja liczy tekst pomiędzy dwoma {{Code|id}} rozdziałami o danych identyfikatorach na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{LzLua|mw.title.makeTitle}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.TekstPoNapisieWprowadzeniaTekstuStrony(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki funkcji rablicy transportu. Parametry ramki funkcji tablicy transprotu dziecka rodzica: * {{Code|1}} - nazwa strony do analizy (rozwijany funkcją: {{LzLua|frame:preprocess}}), którego chcemy sprawdzić zawartość strony, jeśli istnieje, pomiędzy dwoma {{Code|id}} rozdziałami - funkcja rozwija nazwę strony wwzględem tej funkcji, * {{Code|2}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany od poczatku, do pewnego identyfikatora, * {{Code|3}} - ten rozdział drugi, przed którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany do końca, od pewnego identyfikatora. Funkcja ramki uruchamia: {{Code|{{sr|#p.TekstWprowadzeniaTekstu|b=tak}}}}, do wyszukiwania tekstu pomiędzy dwoma rozdziałami, jako typową funkcję biblioteczną. Przykłady użycia w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: <syntaxhighlight lang="mediawiki"> {{#invoke:StronicowyParser/Rozdziały|TekstPoNapisieWprowadzeniaTekstuStrony|Pomoc:Spis treści|Pomoc Wikibooks|Wstęp}}; </syntaxhighlight> Wyniki zwrócone przez ramkę uruchomioną, w rozdzicu, jako dziecko: <syntaxhighlight lang="mediawiki"> '''{{lr|Czym jest Wikibooks|Wikibooks}}''' jest zbiorem darmowych książek pisanych przez internautów. Poniższe strony pomocy zawierają porady i informacje o naszym projekcie. Projekt ten – będący siostrzanym projektem Wikipedii – powstał 10 lipca 2003 r. Polska wersja została uruchomiona '''24 stycznia 2004 roku''' i w tej chwili posiada już {{Forma wyrazu podręcznik po liczbie|'''{{LICZBAPODRĘCZNIKÓW}}'''}}, a w nich {{Forma wyrazu artykuł po liczbie|'''{{NUMBEROFARTICLES}}'''}}. </syntaxhighlight> == {{Code|p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}} == Funkcja zwraca nagłówek (sekcję) rozwinięty o danym identyfikatorze na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{LzLua|mw.title.makeTitle}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje. Funkcja też uwzględnia, że dany rozdział w tekście może się powtarzać, i dlatego trzeba to robić za pomocą numerków przy {{Code|id}}, aby wyszukać ten ściśle określony . Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu funkcji. Parametry ramki funkcji tablicy transportu: * {{Code|1}} - nazwa strony - funkcja rozwija nazwę strony, * {{Code|2}} - identyfikator rozdzialu - domyślna wartość pusta. Przykłady użycia: <syntaxhighlight lang="lua"> {{#invoke:StronicowyParser/Rozdziały|ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony|Wikibooks:Jak_przeglądać_Wikibooks|Opera}} </syntaxhighlight> Uzyskane wyniki w postaci nierozwiniętego wikikodu: <syntaxhighlight lang="mediawiki"> <templatestyles src="Szablon:Link_wewnętrzny/styles.css"><span class="niew link">[[:w:Opera (program)|Opera]]</span> </syntaxhighlight> == {{Code|p.NumerSekcjiStrony}} == Funkcja liczy numer sekcji rozdziału, który posiada dany identyfikator na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{LzLua|mw.title.makeTitle}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.NumerSekcjiStrony(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki funkcji rablicy transportu. Parametry ramki funkcji tablicy transprotu dziecka rodzica: * {{Code|1}} - nazwa strony do analizy (rozwijany funkcją: {{LzLua|frame:preprocess}}), którego chcemy sprawdzić zawartość strony, jeśli istnieje, pomiędzy dwoma id rozdziałami - funkcja rozwija nazwę strony wwzględem funkcji: frame:preprocess, * {{Code|2}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, Przykład użycia w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: <syntaxhighlight lang="lua"> {{#invoke:StronicowyParser/Rozdziały|NumerSekcjiStrony|Wikibooks:Jak_przeglądać_Wikibooks|Opera}} </syntaxhighlight> Otrzymane wyniki, to przedstawia numer sekcji podanego rozdziału, on wynosi: {{Code|9}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> dcfmk1xwi8all5yopo3get4ch4d3az0 Śpiewnik/Zwycięzca śmierci 0 63996 553409 2026-08-29T21:30:54Z Ashaio 4702 nowa pieśń 553409 wikitext text/x-wiki {{T|Śpiewnik/NawigacjaOpis}} == Muzyka == '''Autor:''' nieznany (pieśń kościelna) '''Opracowanie:''' Michał M. Mioduszewski (1787–1868) <score raw="1" vorbis="1"> \version "2.19.0" \header{ title = "Zwycięzca śmierci" poet = "Słowa: autor nieznany" meter = "Pieśń kościelna, znana co najmniej od 1838 r." composer = "Muzyka: autor nieznany" arranger = "Aranżacja: Michał M. Mioduszewski (1787–1868)" tagline = "" } melodia = \new Staff \with { midiInstrument = "church organ" } { \new Voice = "hi" \relative c' { \clef bass \key c \major \time 2/2 \autoBeamOff \repeat volta 2 { \stemDown c2 b4 d4 | c4. (b16 [a16]) g2 | a4 c4 b4 d4 | c2 c2 } \break e2 e4 d4 | c2 c2 | f4 e4 f4 e4 | d2 d2 | \break c2 b4 a4 | \stemUp g2 (f4) e4 | \stemDown f'4 d4 c4 (b4) | c2 r2 \bar "|." } } verseOne = \lyricmode { Zwy -- cię -- żca śmier -- ci, | pie -- kła i sza -- ta -- na Na -- ród nie wier -- ny trwo -- ży się, prze -- stra -- sza, na cud Jo -- na -- sza, Al -- le -- lu -- ja } verseTwo = \lyricmode { Wy -- cho -- dzi z_gro -- bu dnia trze -- cie -- go z_ra -- na. } \score{ << \melodia \new Lyrics \lyricsto "hi" { \verseOne } \new Lyrics \lyricsto "hi" { \verseTwo } >> \layout{} } \score{ \unfoldRepeats \melodia \midi{ \tempo 4 = 100 } } </score> '''Źródło:''' na podstawie: Michał M. Mioduszewski, ''[https://kpbc.umk.pl/dlibra/doccontent?id=51916 Śpiewnik kościelny : czyli pieśni nabożne z melodyjami w kościele katolickim używane : a dla wygody kościołów parafijalnych]''. Kraków, 1838. S.&nbsp;458 (pieśń I). (Klucz tenorowy zamieniony na basowy). == Tekst == '''Autor:''' nieznany (pieśń kościelna) '''Opracowanie:''' Antoni Chlondowski {{Kolumny|3| <poem> 1. Zwycięzca śmierci, piekła i szatana Wychodzi z grobu dnia trzeciego z rana, Naród niewierny, trwoży się przestrasza Na cud Jonasza. Alleluja. 2. Ustąpcie od nas smutki i trosk żale Gdy nasz zbawiciel tryumfuje w chwale Ojcu swojemu już uczynił zadość Nam niesie radość. Alleluja. 3. Przez Twe chwalebne Chryste, zmartwychwstanie Daj w łasce Twojej stateczne wytrwanie I niech tak w chwale jakoś Ty, równie my Zmartwychwstaniemy. Alleluja. </poem> }} '''Źródło:''' Antoni Chlondowski, ''Osiem pieśni wielkanocnych: op. 19''. Przemyśl, 1927. S.&nbsp;4, 5. == Zobacz też == {{Wikipedia|Zwycięzca_śmierci_(pieśń)|Zwycięzca śmierci (pieśń)}} {{Wikiźródła|Śpiewnik_kościelny/Zwyciężca_śmierci|Śpiewnik kościelny/Zwyciężca śmierci}} * ''[https://bibliotekapiosenki.pl/utwory/Zwyciezca_smierci_(piesn_wielkanocna) Zwycięzca śmierci (pieśń wielkanocna)]'' w serwisie ''[https://bibliotekapiosenki.pl/ Cyfrowa Biblioteka Polskiej Piosenki]'' * ''[https://spiewniksiedleckiego.pl/?page_id=652 Pieśni wielkanocne]'' w serwisie ''[https://spiewniksiedleckiego.pl Śpiewnik ks. Siedleckiego]'' aqfy6q4ef751iisj28zq361muszhvib Śpiewnik/Zwycięzca śmierci/Muzyka 0 63997 553410 2026-08-29T21:42:48Z Ashaio 4702 nowa strona z wariantami melodii 553410 wikitext text/x-wiki {{T|Śpiewnik/NawigacjaMuzyka}} == Wersja z 1908 == '''Autor:''' nieznany '''Aranżacja:''' Jan Siedlecki lub XX Misjonarze na Kleparzu <score raw="1" vorbis="1"> \version "2.19.0" \header{ title = "Zwycięzca śmierci" poet = "Słowa: autor nieznany" meter = "Pieśń kościelna, znana co najmniej od 1838 r." composer = "Muzyka: autor nieznany" arranger = "Aranżacja: Jan Siedlecki lub XX Misjonarze na Kleparzu" tagline = "" } melodia = \new Staff \with {midiInstrument = "church organ"} \relative g' { \clef treble \key bes \major \time 4/4 \tempo 4 = 100 << \new Voice = "hi" { \autoBeamOff \stemUp \repeat volta 2 { bes2^\p a4 c | bes^( g) f2 | g4 bes a c | bes2^\> bes\! | } d4^\f d8 c8 bes4 bes | es4 d es d | c2^\> c\! | bes4 a8 g f[ es] d4 | % f4^( es) d r | \time 3/4 <es' g,>4^\f( c) bes | a2^\> bes4\! \bar "|." } \new Voice = "lo" { \autoBeamOff \stemDown \repeat volta 2 { d,2 c4 es | d_( es) d2 | es4 d c es | d2_\> d\! | } bes'4_\f bes8 a bes4 f | c'4 bes a bes | a2_\> a\! | bes4 f8 es d[ c] bes4 | \time 3/4 es2 <es g>4 | f4( es)_\> <d f>4\! \bar "|." } >> } verseOne = \lyricmode { Zwy -- cię -- zca śmier -- ci, | pie -- kła i sza -- ta -- na Na -- ród nie wier -- ny trwo -- ży się, prze -- stra -- sza, na cud Jo -- na -- sza, Al -- le -- lu -- ja } verseTwo = \lyricmode { Wy -- cho -- dzi z_gro -- bu dnia trze -- cie -- go z_ra -- na. } \score{ << \melodia \new Lyrics \lyricsto "hi" { \verseOne } \new Lyrics \lyricsto "hi" { \verseTwo } >> \layout{} } \score{ \unfoldRepeats \melodia \midi{} } </score> '''Źródło:''' Jan Siedlecki, ''[https://polona.pl/item-view/4a4a2ed0-e979-4609-acb5-a3df14c7b0fc?page=148 Śpiewniczek zawierający pieśni kościelne z melodyami : dla użytku młodzieży szkolnej]''. Kraków, 1908. S.&nbsp;148 (pieśń 9). == Wersja z ok. 1930 == '''Autor:''' nieznany '''Aranżacja:''' Tomasz Flasza (1865–1940) <score raw="1" vorbis="1"> \version "2.19.0" \header{ title = "Zwycięzca śmierci" poet = "Słowa: autor nieznany" meter = "Pieśń kościelna, znana co najmniej od 1838 r." composer = "Muzyka: autor nieznany" arranger = "Aranżacja: Tomasz Flasza (1865-1940)" tagline = "" } melodia = \new Staff \with {midiInstrument = "church organ"} \relative g' { \clef treble \key bes \major \time 4/4 \tempo 4 = 100 << \new Voice = "hi" { \autoBeamOff \stemUp \repeat volta 2 { bes2^\< a4\! c | bes^( a8[ g]) f2 | g4 bes a c | bes2^\> bes\! | } d2^\mf d4 c | bes2 bes | es4 d es d | c2 c | bes2 a4 g | f4^( es) d r | es'4^( c) bes2 | a^\> bes\!^\fermata \bar "|." } \new Voice = "lo" { \autoBeamOff \stemDown \repeat volta 2 { d,2_\< es4\! es | d_( f8[ es]) d2 | es4 d es es | d4( es_\>) d2\! | } bes'2_\mf bes4 a | f4( es) d2 | c'4 bes a bes | bes4( g) a2 | g2 f4 es | d_( c) bes s | g'4_( es) d2 | es2_\> bes\!_\fermata \bar "|." } >> } verseOne = \lyricmode { %\addlyrics{ \small { Zwy -- cię -- zca śmier -- ci, | pie -- kła i sza -- ta -- na Na -- ród nie wier -- ny trwo -- ży się, prze -- stra -- sza, na cud Jo -- na -- sza, Al -- le -- lu -- ja } verseTwo = \lyricmode { %\addlyrics{ \small { Wy -- cho -- dzi z_gro -- bu dnia trze -- cie -- go z_ra -- na. } \score{ << \melodia \new Lyrics \lyricsto "hi" { \verseOne } \new Lyrics \lyricsto "hi" { \verseTwo } >> \layout{} } \score{ \unfoldRepeats \melodia \midi{} } </score> '''Źródło:''' Tomasz Flasza, ''[https://polona.pl/item-view/7693a5f8-61db-4d9a-bdd7-8f922c4cda27?page=375 Śpiewnik kościelny katolicki : największy zbiór pieśni nabożnych z nutami do śpiewu na 2 głosy. Cz. 1, Pieśni Adwentowe, Kolędy, Pieśni postne, Wielkanocne i o Wniebowstapieniu Pańskiem]''. Kraków, cenz. 1930. S.&nbsp;372. 38c45lnwm09vc5mjzrmf1vey3smzwt7 Śpiewnik/Zwycięzca śmierci/Tekst 0 63998 553412 2026-08-29T21:50:07Z Ashaio 4702 nowa strona z wariantem tekstu pieśni 553412 wikitext text/x-wiki {{T|Śpiewnik/NawigacjaTekst}} == Tekst z 1908 == '''Autor:''' nieznany (pieśń kościelna) '''Opracowanie:''' Jan Siedlecki lub XX Misjonarze na Kleparzu {{Kolumny|2| <poem> 1. Zwycięzca śmierci, piekła i szatana Wychodzi z grobu dnia trzeciego z rana. Naród niewierny, trwoży się przestrasza Na cud Jonasza. Alleluja. 2. Ziemia się trzęsie, straż się grobu miesza, Anioł zstępuje, niewiasty pociesza, „Patrzcie (mówi im) grób ten próżny został Pan zmartwychpowstał”. Alleluja. 3. Ustąpcie od nas smutki i trosk fale, Gdy Pan Zbawiciel tryumfuje w chwale; Ojcu Swojemu uczynił już zadość Nam niesie radość. Alleluja. 4. Cieszy Swych uczniów, którzy wierni byli, Utwierdza w wierze, aby nie wątpili; Obcuje z nimi, daje nauk wiele, O Swym Kościele. Alleluja. 5. Już nie przestaje z narodem niewiernym, Samym się tylko ukazuje wiernym; Nieśmiertelności przedstawia znamiona, Wśród uczniów grona. Alleluja. 6. Boleści, rany, wzgardy wyrządzone, I śmierć haniebna są już nagrodzone; Za poniżenia został wywyższony Nad wszystkie trony. Alleluja. 7. Ciesz się Syonie, Chrystusów Kościele! Oto zabity Bóg Twój żyje w ciele; Śpiewaj z weselem: „Pan króluje z drzewa!” Jak Dawid śpiewa. Alleluja. 8. Cieszmy się wszyscy, już śmierć pohańbiona, Wina pierwszego rodzica zgładzona; Niebios zamkniętych otwarta jest brama Synom Adama. Alleluja. 9. Stargawszy pęta nałogów grzechowe, Chrystusa wzorem wiedźmy życie nowe, Zdała mijając nieszczęść naszych groby, Miejsca, osoby. Alleluja. 10. Przez Twe chwalebne, Chryste, zmartwychwstanie, Daj w łasce Twojej stateczne wytrwanie, I niech tak w chwale, jakoś Ty, równie my Zmartwychwstaniemy. Alleluja. </poem> }} '''Źródło:''' Jan SIedlecki, ''[https://polona.pl/item-view/4a4a2ed0-e979-4609-acb5-a3df14c7b0fc?page=149 Śpiewniczek zawierający pieśni kościelne z melodyami : dla użytku młodzieży szkolnej]''. Kraków, 1908. S.&nbsp;143–144. gd3pmcu25rt9mmwps8a1tvio0ivhhtw Moduł:Wikibooks/Przykład/Html/KodowanieOmijanieFunkcyjne/Kod 1 828 63999 553444 2026-08-30T04:06:04Z Persino 2851 Utworzono nową stronę „local html_modul=require("Module:Html"); local tekst="Oto jest tekst wywołania: \"&#35;\""; local tekst2=html_modul.KodowanieOmijanieFunkcyjne(tekst,true,"&(#35);",function(tekst) return mw.uri.encode(tekst); end);” 553444 Scribunto text/plain local html_modul=require("Module:Html"); local tekst="Oto jest tekst wywołania: \"&#35;\""; local tekst2=html_modul.KodowanieOmijanieFunkcyjne(tekst,true,"&(#35);",function(tekst) return mw.uri.encode(tekst); end); ltsdu1y6c1344ui9cgrsio6wr5ku7lz 553448 553444 2026-08-30T04:10:03Z Persino 2851 553448 Scribunto text/plain local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local tekst="Oto jest tekst wywołania: \"&#35;\""; local tekst2=html_modul.KodowanieOmijanieFunkcyjne(tekst,true,"&(#35);",function(tekst) return mw.uri.encode(tekst); end); return tekst2; end; return p; dgjtxel90p6ja1h7wjahlnv9l0fbck0 553452 553448 2026-08-30T04:13:58Z Persino 2851 553452 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local tekst="Oto jest tekst wywołania: \"&#35;\""; local tekst2=html_modul.KodowanieOmijanieFunkcyjne(tekst,true,"&(#35);",function(tekst) return mw.uri.encode(tekst); end); return tekst2; end; return p; jftz2q7vsuv21wnmwgosanxl2odp9j5 553459 553452 2026-08-30T04:22:13Z Persino 2851 Persino przeniósł(-osła) stronę [[Moduł:Wikibooks/Przykład/KodowanieOmijanieFunkcyjne/Kod 1]] do [[Moduł:Wikibooks/Przykład/Html/KodowanieOmijanieFunkcyjne/Kod 1]], bez pozostawienia przekierowania pod starym tytułem 553452 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local tekst="Oto jest tekst wywołania: \"&#35;\""; local tekst2=html_modul.KodowanieOmijanieFunkcyjne(tekst,true,"&(#35);",function(tekst) return mw.uri.encode(tekst); end); return tekst2; end; return p; jftz2q7vsuv21wnmwgosanxl2odp9j5 Moduł:Wikibooks/Przykład/Html/TransformacjaKlasyZnakowejDoKoduHtmlCiągu/Kod 1 828 64000 553445 2026-08-30T04:06:54Z Persino 2851 Utworzono nową stronę „local html_modul=require("Module:Html"); local tekst="Oto jest link: [[user:użytkownik|(Użytkownik)]]."; -- Równoważne: local tekst2=html_modul["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]{tekst=tekst,}; -- Równoważne: local tekst2=html_modul["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]{args={tekst=tekst,},}; local tekst2=html_modul["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](tekst);” 553445 Scribunto text/plain local html_modul=require("Module:Html"); local tekst="Oto jest link: [[user:użytkownik|(Użytkownik)]]."; -- Równoważne: local tekst2=html_modul["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]{tekst=tekst,}; -- Równoważne: local tekst2=html_modul["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]{args={tekst=tekst,},}; local tekst2=html_modul["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](tekst); cusxii9ac8xyrg170u16g9y8jzw9m0q 553449 553445 2026-08-30T04:11:01Z Persino 2851 553449 Scribunto text/plain local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local tekst="Oto jest link: [[user:użytkownik|(Użytkownik)]]."; -- Równoważne: local tekst2=html_modul["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]{tekst=tekst,}; -- Równoważne: local tekst2=html_modul["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]{args={tekst=tekst,},}; local tekst2=html_modul["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](tekst); return tekst2; end; return p; oqhp7yuiecj5ub3t7u2kerps5xbebqo 553455 553449 2026-08-30T04:15:47Z Persino 2851 553455 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local tekst="Oto jest link: [[user:użytkownik|(Użytkownik)]]."; -- Równoważne: local tekst2=html_modul["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]{tekst=tekst,}; -- Równoważne: local tekst2=html_modul["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]{args={tekst=tekst,},}; local tekst2=html_modul["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](tekst); return tekst2; end; return p; mgx6skwyn4szr0bfwlptwlm8e0xlykl 553462 553455 2026-08-30T04:23:56Z Persino 2851 Persino przeniósł(-osła) stronę [[Moduł:Wikibooks/Przykład/TransformacjaKlasyZnakowejDoKoduHtmlCiągu/Kod 1]] do [[Moduł:Wikibooks/Przykład/Html/TransformacjaKlasyZnakowejDoKoduHtmlCiągu/Kod 1]], bez pozostawienia przekierowania pod starym tytułem 553455 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local tekst="Oto jest link: [[user:użytkownik|(Użytkownik)]]."; -- Równoważne: local tekst2=html_modul["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]{tekst=tekst,}; -- Równoważne: local tekst2=html_modul["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]{args={tekst=tekst,},}; local tekst2=html_modul["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](tekst); return tekst2; end; return p; mgx6skwyn4szr0bfwlptwlm8e0xlykl Moduł:Wikibooks/Przykład/Html/TransformacjaKoduHtmlDoZnakuCiągu/Kod 1 828 64001 553446 2026-08-30T04:07:59Z Persino 2851 Utworzono nową stronę „local html_modul=require("Module:Html"); local tekst="Oto jest link: &#91;&#91;user:użytkownik&#124;&#40;Użytkownik&#41;&#93;&#93;&#46;"; -- Równoważne: local tekst2=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"]{tekst=tekst,}; -- Równoważne: local tekst2=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"]{args={tekst=tekst,},}; local tekst2=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](tekst);” 553446 Scribunto text/plain local html_modul=require("Module:Html"); local tekst="Oto jest link: &#91;&#91;user:użytkownik&#124;&#40;Użytkownik&#41;&#93;&#93;&#46;"; -- Równoważne: local tekst2=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"]{tekst=tekst,}; -- Równoważne: local tekst2=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"]{args={tekst=tekst,},}; local tekst2=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](tekst); a0gd1m47d24jlsrqkq5gc8bscwzvase 553450 553446 2026-08-30T04:12:05Z Persino 2851 553450 Scribunto text/plain local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local tekst="Oto jest link: &#91;&#91;user:użytkownik&#124;&#40;Użytkownik&#41;&#93;&#93;&#46;"; -- Równoważne: local tekst2=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"]{tekst=tekst,}; -- Równoważne: local tekst2=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"]{args={tekst=tekst,},}; local tekst2=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](tekst); return tekst2; end; return p; d7es8w5uih0x1dvp2v98xx8jvpp3z2m 553454 553450 2026-08-30T04:15:11Z Persino 2851 553454 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local tekst="Oto jest link: &#91;&#91;user:użytkownik&#124;&#40;Użytkownik&#41;&#93;&#93;&#46;"; -- Równoważne: local tekst2=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"]{tekst=tekst,}; -- Równoważne: local tekst2=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"]{args={tekst=tekst,},}; local tekst2=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](tekst); return tekst2; end; return p; cotj4rwbm3mjiailbdejao5p22dimj5 553461 553454 2026-08-30T04:23:24Z Persino 2851 Persino przeniósł(-osła) stronę [[Moduł:Wikibooks/Przykład/TransformacjaKoduHtmlDoZnakuCiągu/Kod 1]] do [[Moduł:Wikibooks/Przykład/Html/TransformacjaKoduHtmlDoZnakuCiągu/Kod 1]], bez pozostawienia przekierowania pod starym tytułem 553454 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local tekst="Oto jest link: &#91;&#91;user:użytkownik&#124;&#40;Użytkownik&#41;&#93;&#93;&#46;"; -- Równoważne: local tekst2=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"]{tekst=tekst,}; -- Równoważne: local tekst2=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"]{args={tekst=tekst,},}; local tekst2=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](tekst); return tekst2; end; return p; cotj4rwbm3mjiailbdejao5p22dimj5 Moduł:Wikibooks/Przykład/Html/ZnakiSpecjalneTaguNowiki/Kod 1 828 64002 553447 2026-08-30T04:08:54Z Persino 2851 Utworzono nową stronę „local html_modul=require("Module:Html"); local tekst="<span id=\"toc\">Oto jest tekst, i link: [[Pomoc:Spis treści|Spis treści]]</span>."; -- Równoważne: local tekst2=html_modul.ZnakiSpecjalneTaguNowiki{tekst=tekst,}; -- Równoważne: local tekst2=html_modul.ZnakiSpecjalneTaguNowiki{args={tekst=tekst,},}; local tekst2=html_modul.ZnakiSpecjalneTaguNowiki(tekst);” 553447 Scribunto text/plain local html_modul=require("Module:Html"); local tekst="<span id=\"toc\">Oto jest tekst, i link: [[Pomoc:Spis treści|Spis treści]]</span>."; -- Równoważne: local tekst2=html_modul.ZnakiSpecjalneTaguNowiki{tekst=tekst,}; -- Równoważne: local tekst2=html_modul.ZnakiSpecjalneTaguNowiki{args={tekst=tekst,},}; local tekst2=html_modul.ZnakiSpecjalneTaguNowiki(tekst); 4jlqpq73obxs3ybrkkdl89wjbxw50tx 553451 553447 2026-08-30T04:13:17Z Persino 2851 553451 Scribunto text/plain local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local tekst="<span id=\"toc\">Oto jest tekst, i link: [[Pomoc:Spis treści|Spis treści]]</span>."; -- Równoważne: local tekst2=html_modul.ZnakiSpecjalneTaguNowiki{tekst=tekst,}; -- Równoważne: local tekst2=html_modul.ZnakiSpecjalneTaguNowiki{args={tekst=tekst,},}; local tekst2=html_modul.ZnakiSpecjalneTaguNowiki(tekst); return tekst2; end; return p; 902l4q3crt4u86sd9rf6f3mx9qmci4v 553453 553451 2026-08-30T04:14:38Z Persino 2851 553453 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local tekst="<span id=\"toc\">Oto jest tekst, i link: [[Pomoc:Spis treści|Spis treści]]</span>."; -- Równoważne: local tekst2=html_modul.ZnakiSpecjalneTaguNowiki{tekst=tekst,}; -- Równoważne: local tekst2=html_modul.ZnakiSpecjalneTaguNowiki{args={tekst=tekst,},}; local tekst2=html_modul.ZnakiSpecjalneTaguNowiki(tekst); return tekst2; end; return p; nrj06ba4fvfm9mlq7tnnqq0txb6a747 553460 553453 2026-08-30T04:22:52Z Persino 2851 Persino przeniósł(-osła) stronę [[Moduł:Wikibooks/Przykład/ZnakiSpecjalneTaguNowiki/Kod 1]] do [[Moduł:Wikibooks/Przykład/Html/ZnakiSpecjalneTaguNowiki/Kod 1]], bez pozostawienia przekierowania pod starym tytułem 553453 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local tekst="<span id=\"toc\">Oto jest tekst, i link: [[Pomoc:Spis treści|Spis treści]]</span>."; -- Równoważne: local tekst2=html_modul.ZnakiSpecjalneTaguNowiki{tekst=tekst,}; -- Równoważne: local tekst2=html_modul.ZnakiSpecjalneTaguNowiki{args={tekst=tekst,},}; local tekst2=html_modul.ZnakiSpecjalneTaguNowiki(tekst); return tekst2; end; return p; nrj06ba4fvfm9mlq7tnnqq0txb6a747 Moduł:Wikibooks/Przykład/Html/ZnakiSpecjalneWikiLinku/Kod 1 828 64003 553456 2026-08-30T04:17:49Z Persino 2851 Utworzono nową stronę „require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local tekst="[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}"; -- Równoważne: local tekst2=html_modul.ZnakiSpecjalneWikiLinku{tekst=tekst,}; -- Równoważne: local tekst2=html_modul.ZnakiSpecjalneWikiLinku{args={tekst=tekst,},}; local html2=html_modul.ZnakiSpecjalne…” 553456 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local tekst="[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}"; -- Równoważne: local tekst2=html_modul.ZnakiSpecjalneWikiLinku{tekst=tekst,}; -- Równoważne: local tekst2=html_modul.ZnakiSpecjalneWikiLinku{args={tekst=tekst,},}; local html2=html_modul.ZnakiSpecjalneWikiLinku(tekst); return html2; end; return p; jrqveggujmgtot5bo0w59nsyrtsmxje 553463 553456 2026-08-30T04:24:43Z Persino 2851 Persino przeniósł(-osła) stronę [[Moduł:Wikibooks/Przykład/ZnakiSpecjalneWikiLinku/Kod 1]] do [[Moduł:Wikibooks/Przykład/Html/ZnakiSpecjalneWikiLinku/Kod 1]] 553456 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local tekst="[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}"; -- Równoważne: local tekst2=html_modul.ZnakiSpecjalneWikiLinku{tekst=tekst,}; -- Równoważne: local tekst2=html_modul.ZnakiSpecjalneWikiLinku{args={tekst=tekst,},}; local html2=html_modul.ZnakiSpecjalneWikiLinku(tekst); return html2; end; return p; jrqveggujmgtot5bo0w59nsyrtsmxje Moduł:Wikibooks/Przykład/Html/EncodeSpecjalneZnakiHtml/Kod 1 828 64004 553457 2026-08-30T04:19:31Z Persino 2851 Utworzono nową stronę „require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local html="[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}"; -- Równoważne: local html2=html_modul.EncodeSpecjalneZnakiHtml{html=html,}; -- Równoważne: local html2=html_modul.EncodeSpecjalneZnakiHtml{args={html=html,},}; local html2=html_modul.EncodeSpecjalneZnak…” 553457 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local html="[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}"; -- Równoważne: local html2=html_modul.EncodeSpecjalneZnakiHtml{html=html,}; -- Równoważne: local html2=html_modul.EncodeSpecjalneZnakiHtml{args={html=html,},}; local html2=html_modul.EncodeSpecjalneZnakiHtml(tekst); return html2; end; return p; q7r8076vjd3mnud754mlyhde7m6rflh 553465 553457 2026-08-30T04:25:39Z Persino 2851 Persino przeniósł(-osła) stronę [[Moduł:Wikibooks/Przykład/EncodeSpecjalneZnakiHtml/Kod 1]] do [[Moduł:Wikibooks/Przykład/Html/EncodeSpecjalneZnakiHtml/Kod 1]], bez pozostawienia przekierowania pod starym tytułem 553457 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local html="[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}"; -- Równoważne: local html2=html_modul.EncodeSpecjalneZnakiHtml{html=html,}; -- Równoważne: local html2=html_modul.EncodeSpecjalneZnakiHtml{args={html=html,},}; local html2=html_modul.EncodeSpecjalneZnakiHtml(tekst); return html2; end; return p; q7r8076vjd3mnud754mlyhde7m6rflh 553584 553465 2026-08-30T11:54:12Z Persino 2851 553584 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local html="[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}"; -- Równoważne: local html2=html_modul.EncodeSpecjalneZnakiHtml{html=html,}; -- Równoważne: local html2=html_modul.EncodeSpecjalneZnakiHtml{args={html=html,},}; local html2=html_modul.EncodeSpecjalneZnakiHtml(tekst); local Wikibooks_Przyklad_ZrodloLua_modul=require("Module:Wikibooks/Przykład/ŹródłoLua"); local wikikod=Wikibooks_Przyklad_ZrodloLua_modul["ŹródłoLua"](frame,{ html=html, html2=html2, }); return wikikod; end; return p; bdd34abjgeb2sz4ksfznoec456oxg59 553586 553584 2026-08-30T11:56:08Z Persino 2851 553586 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local html="[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}"; -- Równoważne: local html2=html_modul.EncodeSpecjalneZnakiHtml{html=html,}; -- Równoważne: local html2=html_modul.EncodeSpecjalneZnakiHtml{args={html=html,},}; local html2=html_modul.EncodeSpecjalneZnakiHtml(html); local Wikibooks_Przyklad_ZrodloLua_modul=require("Module:Wikibooks/Przykład/ŹródłoLua"); local wikikod=Wikibooks_Przyklad_ZrodloLua_modul["ŹródłoLua"](frame,{ html=html, html2=html2, }); return wikikod; end; return p; gguxe9cs9zuz3u9dk5j9csqlkcn5dx8 Moduł:Wikibooks/Przykład/Html/EncodeZnakProloguList/Kod 1 828 64005 553458 2026-08-30T04:21:06Z Persino 2851 Utworzono nową stronę „require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local tekst="\n* Oto jest pierwszy element listy,\n*: Oto jest drugi element listy."; -- Równoważne: local tekst2=html_modul.EncodeZnakProloguList{tekst=tekst,}; -- Równoważne: local tekst2=html_modul.EncodeZnakProloguList{args={tekst=tekst,},}; local tekst2=html_modul.EncodeZnakProloguList(tekst); return tekst2; end; return p;” 553458 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local tekst="\n* Oto jest pierwszy element listy,\n*: Oto jest drugi element listy."; -- Równoważne: local tekst2=html_modul.EncodeZnakProloguList{tekst=tekst,}; -- Równoważne: local tekst2=html_modul.EncodeZnakProloguList{args={tekst=tekst,},}; local tekst2=html_modul.EncodeZnakProloguList(tekst); return tekst2; end; return p; cr7t6k95gqn6u24unsv9kayha8qcl1c 553466 553458 2026-08-30T04:26:05Z Persino 2851 Persino przeniósł(-osła) stronę [[Moduł:Wikibooks/Przykład/EncodeZnakProloguList/Kod 1]] do [[Moduł:Wikibooks/Przykład/Html/EncodeZnakProloguList/Kod 1]], bez pozostawienia przekierowania pod starym tytułem 553458 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local tekst="\n* Oto jest pierwszy element listy,\n*: Oto jest drugi element listy."; -- Równoważne: local tekst2=html_modul.EncodeZnakProloguList{tekst=tekst,}; -- Równoważne: local tekst2=html_modul.EncodeZnakProloguList{args={tekst=tekst,},}; local tekst2=html_modul.EncodeZnakProloguList(tekst); return tekst2; end; return p; cr7t6k95gqn6u24unsv9kayha8qcl1c Moduł:Wikibooks/Przykład/Html/ParametryPrzypisaniaZnakowegoEncodeHtml/Kod 1 828 64007 553467 2026-08-30T04:29:05Z Persino 2851 Utworzono nową stronę „require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local tekst="Wikibooks:Strona?action=edit&section=2"; -- Równoważne: local tekst2=html_modul.ParametryPrzypisaniaZnakowegoEncodeHtml{tekst=tekst,}; -- Równoważne: local tekst2=html_modul.ParametryPrzypisaniaZnakowegoEncodeHtml{args={tekst=tekst,},}; local tekst2=html_modul.ParametryPrzypisaniaZnakowegoEncodeHtml(tekst); return tekst2; end; return p;” 553467 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local tekst="Wikibooks:Strona?action=edit&section=2"; -- Równoważne: local tekst2=html_modul.ParametryPrzypisaniaZnakowegoEncodeHtml{tekst=tekst,}; -- Równoważne: local tekst2=html_modul.ParametryPrzypisaniaZnakowegoEncodeHtml{args={tekst=tekst,},}; local tekst2=html_modul.ParametryPrzypisaniaZnakowegoEncodeHtml(tekst); return tekst2; end; return p; j79cpxcnrmgpep5gqv2rhheycnhbdc2 Moduł:Wikibooks/Przykład/Html/PrzypisanieZnakoweEncodeHtml/Kod 1 828 64008 553468 2026-08-30T04:30:27Z Persino 2851 Utworzono nową stronę „require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local tekst="Wikibooks:Strona=Parametry"; -- Równoważne: local tekst2=html_modul.PrzypisanieZnakoweEncodeHtml{tekst=tekst,}; -- Równoważne: local tekst2=html_modul.PrzypisanieZnakoweEncodeHtml{args={tekst=tekst,},}; local tekst2=html_modul.PrzypisanieZnakoweEncodeHtml(tekst); return tekst2; end; return p;” 553468 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local tekst="Wikibooks:Strona=Parametry"; -- Równoważne: local tekst2=html_modul.PrzypisanieZnakoweEncodeHtml{tekst=tekst,}; -- Równoważne: local tekst2=html_modul.PrzypisanieZnakoweEncodeHtml{args={tekst=tekst,},}; local tekst2=html_modul.PrzypisanieZnakoweEncodeHtml(tekst); return tekst2; end; return p; ozb3n9hag2gf5u4rnrhmn56ob4y43wl Moduł:Wikibooks/Przykład/Html/ZamianaDwukropkaNaKodHtml/Kod 1 828 64009 553469 2026-08-30T04:32:20Z Persino 2851 Utworzono nową stronę „require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local tekst="subst:msg:Szablon:Nazwa_strony"; -- Równoważne: local tekst2=html_modul.ZamianaDwukropkaNaKodHtml{tekst=tekst,}; -- Równoważne: local tekst2=html_modul.ZamianaDwukropkaNaKodHtml{args={tekst=tekst,},}; local tekst2=html_modul.ZamianaDwukropkaNaKodHtml(tekst); return tekst2; end; return p;” 553469 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local tekst="subst:msg:Szablon:Nazwa_strony"; -- Równoważne: local tekst2=html_modul.ZamianaDwukropkaNaKodHtml{tekst=tekst,}; -- Równoważne: local tekst2=html_modul.ZamianaDwukropkaNaKodHtml{args={tekst=tekst,},}; local tekst2=html_modul.ZamianaDwukropkaNaKodHtml(tekst); return tekst2; end; return p; jginpnxt6zbu14s5ah6ogdeeopgtbkz Moduł:Wikibooks/Przykład/Html/KodHTMLZnaku/Kod 1 828 64010 553470 2026-08-30T04:33:54Z Persino 2851 Utworzono nową stronę „require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local znak="k"; -- Równoważne: local tekst2=html_modul.KodHTMLZnaku{[1]=znak,}; -- Równoważne: local tekst2=html_modul.KodHTMLZnaku{args={[1]=znak,},}; local tekst2=html_modul.KodHTMLZnaku(znak); -- Równoważne: local tekst3=html_modul.KodHTMLZnaku{[1]=znak,[1]="tak",}; local tekst3=html_modul.KodHTMLZnaku{args={[1]=znak,[2]="tak",},}; return tek…” 553470 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local znak="k"; -- Równoważne: local tekst2=html_modul.KodHTMLZnaku{[1]=znak,}; -- Równoważne: local tekst2=html_modul.KodHTMLZnaku{args={[1]=znak,},}; local tekst2=html_modul.KodHTMLZnaku(znak); -- Równoważne: local tekst3=html_modul.KodHTMLZnaku{[1]=znak,[1]="tak",}; local tekst3=html_modul.KodHTMLZnaku{args={[1]=znak,[2]="tak",},}; return tekst3; end; return p; i0i7g5w1xenc5kko6vrdgm9apgw40zx 553472 553470 2026-08-30T04:40:28Z Persino 2851 553472 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local znak="k"; -- Równoważne: local tekst2=html_modul.KodHTMLZnaku{[1]=znak,}; -- Równoważne: local tekst2=html_modul.KodHTMLZnaku{args={[1]=znak,},}; local tekst2=html_modul.KodHTMLZnaku(znak); -- Równoważne: local tekst3=html_modul.KodHTMLZnaku{[1]=znak,[1]="tak",}; local tekst3=html_modul.KodHTMLZnaku{args={[1]=znak,[2]="tak",},}; local wikikod=frame:preproces{tekst="{{ŹródłoLua|"..tekst2.."\n"..tekst3.."}}"}; return wikikod; end; return p; bpiufcehitrvjcrjuj8wa6r64jkoyjj 553474 553472 2026-08-30T04:42:26Z Persino 2851 553474 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local znak="k"; -- Równoważne: local tekst2=html_modul.KodHTMLZnaku{[1]=znak,}; -- Równoważne: local tekst2=html_modul.KodHTMLZnaku{args={[1]=znak,},}; local tekst2=html_modul.KodHTMLZnaku(znak); -- Równoważne: local tekst3=html_modul.KodHTMLZnaku{[1]=znak,[1]="tak",}; local tekst3=html_modul.KodHTMLZnaku{args={[1]=znak,[2]="tak",},}; local wikikod=frame:preproces{tekst="{{ŹródłoLua|1=tekst2="..tekst2.."\ntekst3="..tekst3.."}}"}; return wikikod; end; return p; 7t8smxrgl1l9c5psheo7109wi75hz9t Moduł:Wikibooks/Przykład/Html/KodyHTMLZnakówWikiCiągu/Kod 1 828 64011 553471 2026-08-30T04:37:39Z Persino 2851 Utworzono nową stronę „require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local tekst="k{{s"; -- Równoważne: local tekst2=html_modul["KodyHTMLZnakówWikiCiągu"]{[1]=tekst,}; -- Równoważne: local tekst2=html_modul["KodyHTMLZnakówWikiCiągu"]{args={[1]=tekst,},}; local tekst2=html_modul["KodyHTMLZnakówWikiCiągu"](znak); -- Równoważne: local tekst3=html_modul["KodyHTMLZnakówWikiCiągu"]{[1]=tekst,[1]="tak",}; local t…” 553471 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local tekst="k{{s"; -- Równoważne: local tekst2=html_modul["KodyHTMLZnakówWikiCiągu"]{[1]=tekst,}; -- Równoważne: local tekst2=html_modul["KodyHTMLZnakówWikiCiągu"]{args={[1]=tekst,},}; local tekst2=html_modul["KodyHTMLZnakówWikiCiągu"](znak); -- Równoważne: local tekst3=html_modul["KodyHTMLZnakówWikiCiągu"]{[1]=tekst,[1]="tak",}; local tekst3=html_modul["KodyHTMLZnakówWikiCiągu"]{args={[1]=tekst,[2]="tak",},}; local wikikod=frame:preprocess{tekst="{{Pre|"..tekst2.."\n"..tekst3.."}}",}; return wikikod; end; return p; t7gyfv6bqgut4coi5m1l8ocftkuksb4 553473 553471 2026-08-30T04:41:48Z Persino 2851 553473 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local tekst="k{{s"; -- Równoważne: local tekst2=html_modul["KodyHTMLZnakówWikiCiągu"]{[1]=tekst,}; -- Równoważne: local tekst2=html_modul["KodyHTMLZnakówWikiCiągu"]{args={[1]=tekst,},}; local tekst2=html_modul["KodyHTMLZnakówWikiCiągu"](znak); -- Równoważne: local tekst3=html_modul["KodyHTMLZnakówWikiCiągu"]{[1]=tekst,[1]="tak",}; local tekst3=html_modul["KodyHTMLZnakówWikiCiągu"]{args={[1]=tekst,[2]="tak",},}; local wikikod=frame:preprocess{tekst="{{ŹródłoLua|1=tekst2="..tekst2.."\ntekst3="..tekst3.."}}",}; return wikikod; end; return p; 2m65fj65hxgjgqq7wov0c1fnra0akwb Moduł:Wikibooks/Przykład/Html/EncodeId/Kod 1 828 64012 553475 2026-08-30T04:44:01Z Persino 2851 Utworzono nową stronę „require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local id="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obs%C5%82uga"; local id2=html_modul.EncodeId(id,true); return id2; end; return p;” 553475 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local id="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obs%C5%82uga"; local id2=html_modul.EncodeId(id,true); return id2; end; return p; 0tedfygqgagajlb24olo2qmwfzwfxvu 553576 553475 2026-08-30T11:45:14Z Persino 2851 553576 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local id="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obs%C5%82uga"; local id2=html_modul.EncodeId(id,true); local Wikibooks_Przyklad_ZrodloLua_modul=require("Module:Wikibooks/Przykład/ŹródłoLua"); local wikikod=Wikibooks_Przyklad_ZrodloLua_modul["ŹródłoLua"](frame,{ id=id, id2=id2, }); return wikikod; end; return p; 8w09yiho9wq1dobexg9e5ewdplpih4m Moduł:Wikibooks/Przykład/Html/UsuwanieSpecjalnychNieschematycznychSymboli/Kod 1 828 64013 553476 2026-08-30T04:46:18Z Persino 2851 Utworzono nową stronę „require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); -- Tutaj jest zakodowany znak HTML, o kodzie dziesiętnym "&#8206;", składający się z trzech bajtów: "&#226;", "&#128;" i "&#142;"; local tekst="Oto jest znak: &#8206;."; -- Zamiana tego kodu na znak; tekst=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](tekst); -- Tekst bez tego znaku, bo on został w tym wywołaniu całkowicie usunięty; tekst=ht…” 553476 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); -- Tutaj jest zakodowany znak HTML, o kodzie dziesiętnym "&#8206;", składający się z trzech bajtów: "&#226;", "&#128;" i "&#142;"; local tekst="Oto jest znak: &#8206;."; -- Zamiana tego kodu na znak; tekst=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](tekst); -- Tekst bez tego znaku, bo on został w tym wywołaniu całkowicie usunięty; tekst=html_modul.UsuwanieSpecjalnychNieschematycznychSymboli(tekst); return tekst; end; return p; hhjyqeiys2cd9omwt2yv41wmbiwcnr8 Moduł:Wikibooks/Przykład/Html/EncodeWiki/Kod 1 828 64014 553477 2026-08-30T04:49:44Z Persino 2851 Utworzono nową stronę „require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local parametr="__Oto jest znak: \"&#8206;\" i inne_znaki_w_URL: \"https://pl.wikibooks.org/w/index.php&#63;title&#61;Szablon:Link wewnętrzny&#38;action&#61;edit&#35;Obsługa;\"__"; local parametr2=html_modul.EncodeWiki(parametr,false); local parametr3=html_modul.EncodeWiki(parametr,true); local wikikod=frame:preprocess{tekst="{{ŹródłoLua|1=parametr2=…” 553477 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local parametr="__Oto jest znak: \"&#8206;\" i inne_znaki_w_URL: \"https://pl.wikibooks.org/w/index.php&#63;title&#61;Szablon:Link wewnętrzny&#38;action&#61;edit&#35;Obsługa;\"__"; local parametr2=html_modul.EncodeWiki(parametr,false); local parametr3=html_modul.EncodeWiki(parametr,true); local wikikod=frame:preprocess{tekst="{{ŹródłoLua|1=parametr2="..parametr2.."\nparametr3="..parametr3.."}}",}; return wikikod; end; return p; 8trjjoch5uvmve8kkaukso3remd8vt4 Moduł:Wikibooks/Przykład/Html/DecodeWiki/Kod 1 828 64015 553478 2026-08-30T04:51:38Z Persino 2851 Utworzono nową stronę „require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local parametr="__Oto jest znak: &quot;&#8206;&quot; i inne_znaki_w_URL: &quot;https://pl.wikibooks.org/w/index.php&#63;title&#61;Szablon:Link wewnętrzny&#38;action&#61;edit&#35;Obsługa;&quot;__"; local parametr2=html_modul.DecodeWiki(parametr,false); local parametr3=html_modul.DecodeWiki(parametr,true); local wikikod=frame:preprocess{tekst="{{Źródło…” 553478 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local parametr="__Oto jest znak: &quot;&#8206;&quot; i inne_znaki_w_URL: &quot;https://pl.wikibooks.org/w/index.php&#63;title&#61;Szablon:Link wewnętrzny&#38;action&#61;edit&#35;Obsługa;&quot;__"; local parametr2=html_modul.DecodeWiki(parametr,false); local parametr3=html_modul.DecodeWiki(parametr,true); local wikikod=frame:preprocess{tekst="{{ŹródłoLua|1=parametr2="..parametr2.."\nparametr3="..parametr3.."}}",}; return wikikod; end; return p; 5ldi9uyqjayvnhtmnlzdj69wqgabu0x 553567 553478 2026-08-30T11:33:59Z Persino 2851 553567 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local parametr="__Oto jest znak: &quot;&#8206;&quot; i inne_znaki_w_URL: &quot;https://pl.wikibooks.org/w/index.php&#63;title&#61;Szablon:Link wewnętrzny&#38;action&#61;edit&#35;Obsługa;&quot;__"; local parametr2=html_modul.DecodeWiki(parametr,false); local parametr3=html_modul.DecodeWiki(parametr,true); local Wikibooks_Przyklad_ZrodloLua_modul=require("Module:Wikibooks/Przykład/ŹródłoLua"); local wikikod=Wikibooks_Przyklad_ZrodloLua_modul["ŹródłoLua"](frame,{ parametr=parametr, parametr2=parametr2, parametr3=parametr3, }); return wikikod; end; return p; ry7pdmxpdgrhiy0tn1zvlk3amw1mcup Moduł:Wikibooks/Przykład/Html/IsEncodedHtml/Kod 1 828 64016 553479 2026-08-30T04:54:09Z Persino 2851 Utworzono nową stronę „require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); -- Pierwszy przykład: local parametr1="abc?edit=action"; -- Wartość zmiennej obliczona jest: czy_tak1=true, czyli parametr1 można uznać za zakodowany; local czy_tak1=html_modul.IsEncodedHtml(parametr1,true,false); -- Drugi przykład: local parametr2="a%YTbc?edit=action;"; -- Wartość zmiennej obliczona jest: czy_tak2=false; czyli parametr2można…” 553479 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); -- Pierwszy przykład: local parametr1="abc?edit=action"; -- Wartość zmiennej obliczona jest: czy_tak1=true, czyli parametr1 można uznać za zakodowany; local czy_tak1=html_modul.IsEncodedHtml(parametr1,true,false); -- Drugi przykład: local parametr2="a%YTbc?edit=action;"; -- Wartość zmiennej obliczona jest: czy_tak2=false; czyli parametr2można uznać, że nie jest zakodowany; local czy_tak2=html_modul.IsEncodedHtml(parametr2,true,false); local wikikod=frame:preprocess{tekst="{{ŹródłoLua|1=czy_tak1="..tostring(czy_tak1).."\nparametr3="..tostring(czy_tak2).."}}",}; return wikikod; end; return p; ph1g0hkfvr6jgegxael4m3u7m4ec04a Moduł:Wikibooks/Przykład/Html/EncodeHtml/Kod 1 828 64017 553480 2026-08-30T04:56:10Z Persino 2851 Utworzono nową stronę „require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); -- Tekst do zakodowania; local parametr="abc___&#63;action&#61;edit&#38;section&#61;21&#35;nagłówek"; -- Tekst zostanie uznany za zakodowany, sprawdzane, czy on ma znaki "%", czyli on tego nie posiada; local parametr2=html_modul.EncodeHtml(parametr,true,false,false); local wikikod=frame:preprocess{tekst="{{ŹródłoLua|1=parametr2="..parametr2.."\npara…” 553480 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); -- Tekst do zakodowania; local parametr="abc___&#63;action&#61;edit&#38;section&#61;21&#35;nagłówek"; -- Tekst zostanie uznany za zakodowany, sprawdzane, czy on ma znaki "%", czyli on tego nie posiada; local parametr2=html_modul.EncodeHtml(parametr,true,false,false); local wikikod=frame:preprocess{tekst="{{ŹródłoLua|1=parametr2="..parametr2.."\nparametr3="..parametr3.."}}",}; return wikikod; end; return p; j4tb1qyi2rfy594njtsunj6je0unzl1 553573 553480 2026-08-30T11:42:05Z Persino 2851 553573 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); -- Tekst do zakodowania; local parametr="abc___&#63;action&#61;edit&#38;section&#61;21&#35;nagłówek"; -- Tekst zostanie uznany za zakodowany, sprawdzane, czy on ma znaki "%", czyli on tego nie posiada; local parametr2=html_modul.EncodeHtml(parametr,true,false,false); local Wikibooks_Przyklad_ZrodloLua_modul=require("Module:Wikibooks/Przykład/ŹródłoLua"); local wikikod=Wikibooks_Przyklad_ZrodloLua_modul["ŹródłoLua"](frame,{ parametr=parametr, parametr2=parametr2, }); return wikikod; end; return p; c3slovkzi9k85tpvnda96htv7k26jie Moduł:Wikibooks/Przykład/Html/DecodeHtml/Kod 1 828 64018 553481 2026-08-30T04:57:58Z Persino 2851 Utworzono nową stronę „require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); -- Parametr zawiera znaki zakodowane funkcją mw.uri.encode i kody HTML znaków; local parametr="a%25YTbc___%3Faction%3Dedit&#38;section&#61;23;"; local parametr2=html_modul.DecodeHtml(parametr,true); return parametr2; end; return p;” 553481 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); -- Parametr zawiera znaki zakodowane funkcją mw.uri.encode i kody HTML znaków; local parametr="a%25YTbc___%3Faction%3Dedit&#38;section&#61;23;"; local parametr2=html_modul.DecodeHtml(parametr,true); return parametr2; end; return p; ar3afpno3che8sk9mnb97kco9vci1wo 553560 553481 2026-08-30T11:20:50Z Persino 2851 553560 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); -- Parametr zawiera znaki zakodowane funkcją mw.uri.encode i kody HTML znaków; local parametr="a%25YTbc___%3Faction%3Dedit&#38;section&#61;23;"; local parametr2=html_modul.DecodeHtml(parametr,true); local Wikibooks_Przyklad_ZrodloLua_modul=require("Module:Wikibooks/Przykład/ŹródłoLua"); local wikikod=Wikibooks_Przyklad_ZrodloLua_modul["ŹródłoLua"](frame,{ parametr=parametr, parametr2=parametr2, }); return wikikod; end; return p; tr7d758gdn3v0aisn5luouu3i76cuaz Moduł:Wikibooks/Przykład/Html/TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml/Kod 1 828 64019 553482 2026-08-30T04:59:23Z Persino 2851 Utworzono nową stronę „require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local tekst="<span id=\"Znaki<>\\\"\">To jest zawartość</span>"; local tekst2=html_modul.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(tekst); return tekst2; end; return p;” 553482 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local tekst="<span id=\"Znaki<>\\\"\">To jest zawartość</span>"; local tekst2=html_modul.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(tekst); return tekst2; end; return p; iylh7fh3kxey8s4cu5cxr7sr1sj0zs9 Moduł:Wikibooks/Przykład/Html/TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak/Kod 1 828 64020 553484 2026-08-30T05:01:35Z Persino 2851 Utworzono nową stronę „require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local tekst="&lt;a href=\"/wiki/Strona?tytan1=1&amp;tytan2=2\" id=\"Strona:&#92;&#34;nazwa&#92;&#34;\"&gt;Zawartość znacznika&lt;/a&gt;"; local tekst2=html_modul.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(tekst); return tekst2; end; return p;” 553484 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local tekst="&lt;a href=\"/wiki/Strona?tytan1=1&amp;tytan2=2\" id=\"Strona:&#92;&#34;nazwa&#92;&#34;\"&gt;Zawartość znacznika&lt;/a&gt;"; local tekst2=html_modul.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(tekst); return tekst2; end; return p; 6mx8vib22kvnq707f16kbvmzuixkvvn Moduł:Wikibooks/Przykład/Html/NagłówekStronyAdresu/Kod 1 828 64021 553485 2026-08-30T05:03:16Z Persino 2851 Utworzono nową stronę „require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local strona="https://pl.wikibooks.org/wiki/Strona ___ główna ? action____=____edit ____&____ section = 2 # ____ Nagłówek____________strony "; local tabela_nazw_adresu={}; -- Równoważne: local naglowek=html_modul["NagłówekStronyAdresu"](strona,true,tabela_nazw_adresu); local naglowek=html_modul["NagłówekStronyAdresu"]({strona=strona,["z nie…” 553485 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local strona="https://pl.wikibooks.org/wiki/Strona ___ główna ? action____=____edit ____&____ section = 2 # ____ Nagłówek____________strony "; local tabela_nazw_adresu={}; -- Równoważne: local naglowek=html_modul["NagłówekStronyAdresu"](strona,true,tabela_nazw_adresu); local naglowek=html_modul["NagłówekStronyAdresu"]({strona=strona,["z nie dolnymi z myślnikami"]=true,},nil,tabela_nazw_adresu); return naglowek; end; return p; 0e0bpnc2um0zcmnk05n894iyoge8hg7 Moduł:Wikibooks/Przykład/Html/ParametryStronyAdresu/Kod 1 828 64022 553486 2026-08-30T05:04:49Z Persino 2851 Utworzono nową stronę „require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local strona="https://pl.wikibooks.org/wiki/Strona ___ główna ? action____=____edit ____&____ section = 2 # ____ Nagłówek____________strony "; local tabela_nazw_adresu={}; -- Równoważne: local parametry=html_modul["ParametryStronyAdresu"](strona,true,tabela_nazw_adresu); local parametry=html_modul["ParametryStronyAdresu"]({strona=strona,["czy n…” 553486 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local strona="https://pl.wikibooks.org/wiki/Strona ___ główna ? action____=____edit ____&____ section = 2 # ____ Nagłówek____________strony "; local tabela_nazw_adresu={}; -- Równoważne: local parametry=html_modul["ParametryStronyAdresu"](strona,true,tabela_nazw_adresu); local parametry=html_modul["ParametryStronyAdresu"]({strona=strona,["czy naprawiać"]=true,},nil,tabela_nazw_adresu); return parametry; end; return p; sc9i6rrc1d1u93vak6t4gvlnos0np5t Moduł:Wikibooks/Przykład/Html/NazwaStronyAdresu/Kod 1 828 64023 553487 2026-08-30T05:06:13Z Persino 2851 Utworzono nową stronę „require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local strona="https://pl.wikibooks.org/wiki/Strona ___ główna ? action____=____edit ____&____ section = 2 # ____ Nagłówek____________strony "; local tabela_nazw_adresu={}; -- Równoważne: local parametry=html_modul["NazwaStronyAdresu"](strona,true,tabela_nazw_adresu); local nazwa_strony=html_modul["NazwaStronyAdresu"]({strona=strona,["czy napraw…” 553487 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local strona="https://pl.wikibooks.org/wiki/Strona ___ główna ? action____=____edit ____&____ section = 2 # ____ Nagłówek____________strony "; local tabela_nazw_adresu={}; -- Równoważne: local parametry=html_modul["NazwaStronyAdresu"](strona,true,tabela_nazw_adresu); local nazwa_strony=html_modul["NazwaStronyAdresu"]({strona=strona,["czy naprawiać"]=true,},nil,tabela_nazw_adresu); return nazwa_strony; end; return p; n9pf0fi2l4surjokvpjyz2m7bb886xc Moduł:Wikibooks/Przykład/Html/NazwaStronyZParametrówStronyAdresu/Kod 1 828 64024 553488 2026-08-30T05:07:54Z Persino 2851 Utworzono nową stronę „require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local strona="title=Strona ___ główna & action____=____edit ____&____ section = 2 # ____ Nagłówek____________strony "; -- Równoważne: local parametry=html_modul["NazwaStronyZParametrówStronyAdresu"](strona,true); local nazwa_strony=html_modul["NazwaStronyZParametrówStronyAdresu"]({parametry=strona,["czy naprawiać"]=true,},nil); return nazwa_…” 553488 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local strona="title=Strona ___ główna & action____=____edit ____&____ section = 2 # ____ Nagłówek____________strony "; -- Równoważne: local parametry=html_modul["NazwaStronyZParametrówStronyAdresu"](strona,true); local nazwa_strony=html_modul["NazwaStronyZParametrówStronyAdresu"]({parametry=strona,["czy naprawiać"]=true,},nil); return nazwa_strony; end; return p; inpj6ytxbx6pgpl9acdwk8wr9xajmrp Moduł:Wikibooks/Przykład/Html/PoprawAdresNagłówkaOrazParametrówStronyAdresu/Kod 1 828 64025 553489 2026-08-30T05:10:11Z Persino 2851 Utworzono nową stronę „require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local strona="https://pl.wikibooks.org/wiki/Strona ___ główna ? action____=____edit ____&____ section = 2 # ____ Nagłówek____________strony "; local tabela_nazw_adresu={}; -- Równoważne: local parametry=html_modul["PoprawAdresNagłówkaOrazParametrówStronyAdresu"](strona,true,tabela_nazw_adresu); local adres=html_modul["PoprawAdresNagłówkaOr…” 553489 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local strona="https://pl.wikibooks.org/wiki/Strona ___ główna ? action____=____edit ____&____ section = 2 # ____ Nagłówek____________strony "; local tabela_nazw_adresu={}; -- Równoważne: local parametry=html_modul["PoprawAdresNagłówkaOrazParametrówStronyAdresu"](strona,true,tabela_nazw_adresu); local adres=html_modul["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]({strona=strona,["czy naprawiać"]=true,},nil,tabela_nazw_adresu); return adres; end; return p; 6gqtpbctqstlqe5gb06ww4gmti02tuc Moduł:Wikibooks/Przykład/Html/URLStrona/Kod 1 828 64026 553490 2026-08-30T05:12:39Z Persino 2851 Utworzono nową stronę „require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local url="//pl.wikibooks.org/wiki/Strona_artykułu"; local serwer,nazwa=html_modul.URLStrona{url=url,["ukośnik"]=true,}; local wikikod=frame:preprocess{tekst="{{ŹródłoLua|1=serwer="..serwer.."\nnazwa="..nazwa.."}}",}; return wikikod; end; return p;” 553490 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local url="//pl.wikibooks.org/wiki/Strona_artykułu"; local serwer,nazwa=html_modul.URLStrona{url=url,["ukośnik"]=true,}; local wikikod=frame:preprocess{tekst="{{ŹródłoLua|1=serwer="..serwer.."\nnazwa="..nazwa.."}}",}; return wikikod; end; return p; 9cz5mf984i5qtvyh6mwbfvm6j3rln06 Moduł:Wikibooks/Przykład/Html/UrlBezProtokołu/Kod 1 828 64027 553491 2026-08-30T05:17:49Z Persino 2851 Utworzono nową stronę „require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local mail="użytkownik@skrzynka.org"; -- Równoważnie: local adres1,protokol1,sposob1=html_modul["UrlBezProtokołu"](mail); local adres1,protokol1,sposob1=html_modul["UrlBezProtokołu"]{url=mail,}; --- local url="https://pl.wikibooks.org/wiki/Strona"; -- Równoważnie: local adres2,protokol2,sposob2=html_modul["UrlBezProtokołu"](url); local adres2,p…” 553491 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local mail="użytkownik@skrzynka.org"; -- Równoważnie: local adres1,protokol1,sposob1=html_modul["UrlBezProtokołu"](mail); local adres1,protokol1,sposob1=html_modul["UrlBezProtokołu"]{url=mail,}; --- local url="https://pl.wikibooks.org/wiki/Strona"; -- Równoważnie: local adres2,protokol2,sposob2=html_modul["UrlBezProtokołu"](url); local adres2,protokol2,sposob2=html_modul["UrlBezProtokołu"]{url=url,}; --- local url="//pl.wikibooks.org/wiki/Strona"; -- Równoważnie: local adres3,protokol3,sposob3=html_modul["UrlBezProtokołu"](url); local adres3,protokol3,sposob3=html_modul["UrlBezProtokołu"]{url=url,}; --- local url="pl.wikibooks.org/wiki/Strona"; -- Równoważnie: local adres4,protokol4,sposob4=html_modul["UrlBezProtokołu"](url); local adres4,protokol4,sposob4=html_modul["UrlBezProtokołu"]{url=url,}; local wikikod1=frame:preprocess{tekst="{{ŹródłoLua|1=adres1="..tostring(adres1).."\nprotokol1="..tostring(protokol1).."\nsposob1="..tostring(sposob1).."}}",}; local wikikod2=frame:preprocess{tekst="{{ŹródłoLua|1=adres2="..tostring(adres2).."\nprotokol2="..tostring(protokol2).."\nsposob2="..tostring(sposob2).."}}",}; local wikikod3=frame:preprocess{tekst="{{ŹródłoLua|1=adres3="..tostring(adres3).."\nprotokol3="..tostring(protokol3).."\nsposob3="..tostring(sposob3).."}}",}; return wikikod1..wikikod2..wikikod3; end; return p; 9tjzljatjg4yw3vk2pf79slifn2cgg4 553492 553491 2026-08-30T05:18:14Z Persino 2851 553492 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local mail="użytkownik@skrzynka.org"; -- Równoważnie: local adres1,protokol1,sposob1=html_modul["UrlBezProtokołu"](mail); local adres1,protokol1,sposob1=html_modul["UrlBezProtokołu"]{url=mail,}; --- local url="https://pl.wikibooks.org/wiki/Strona"; -- Równoważnie: local adres2,protokol2,sposob2=html_modul["UrlBezProtokołu"](url); local adres2,protokol2,sposob2=html_modul["UrlBezProtokołu"]{url=url,}; --- local url="//pl.wikibooks.org/wiki/Strona"; -- Równoważnie: local adres3,protokol3,sposob3=html_modul["UrlBezProtokołu"](url); local adres3,protokol3,sposob3=html_modul["UrlBezProtokołu"]{url=url,}; --- local url="pl.wikibooks.org/wiki/Strona"; -- Równoważnie: local adres4,protokol4,sposob4=html_modul["UrlBezProtokołu"](url); local adres4,protokol4,sposob4=html_modul["UrlBezProtokołu"]{url=url,}; -- Wyniki; local wikikod1=frame:preprocess{tekst="{{ŹródłoLua|1=adres1="..tostring(adres1).."\nprotokol1="..tostring(protokol1).."\nsposob1="..tostring(sposob1).."}}",}; local wikikod2=frame:preprocess{tekst="{{ŹródłoLua|1=adres2="..tostring(adres2).."\nprotokol2="..tostring(protokol2).."\nsposob2="..tostring(sposob2).."}}",}; local wikikod3=frame:preprocess{tekst="{{ŹródłoLua|1=adres3="..tostring(adres3).."\nprotokol3="..tostring(protokol3).."\nsposob3="..tostring(sposob3).."}}",}; return wikikod1..wikikod2..wikikod3; end; return p; bmqjsq4qa87w9fxzffgb7azqsflleli Moduł:Wikibooks/Przykład/Html/DecodeKoduHTMLZnaku/Kod 1 828 64028 553493 2026-08-30T05:19:48Z Persino 2851 Utworzono nową stronę „require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); -- Tekst z kodami HTML: literowymi, dziesiętnymi i szesnastkowymi; local tekst="Oto jest link: &#x5B;&#x5B;Strona&#124;Nazwa linku&#93;&#x5D;, a w nim spacje niełamliwe&nbsp;i inne znaki: z alfabetu greckiego jak: &alpha;&Alpha;&beta;&Beta;&gamma;&Gamma;&delta;&Delta;&epsilon;&Epsilon;&zeta;&Zeta;&eta;&Eta;&theta;&Theta;&iota;&Iota;&kappa;&Kappa;&lambda;&…” 553493 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); -- Tekst z kodami HTML: literowymi, dziesiętnymi i szesnastkowymi; local tekst="Oto jest link: &#x5B;&#x5B;Strona&#124;Nazwa linku&#93;&#x5D;, a w nim spacje niełamliwe&nbsp;i inne znaki: z alfabetu greckiego jak: &alpha;&Alpha;&beta;&Beta;&gamma;&Gamma;&delta;&Delta;&epsilon;&Epsilon;&zeta;&Zeta;&eta;&Eta;&theta;&Theta;&iota;&Iota;&kappa;&Kappa;&lambda;&Lambda;&mu;&Mu;&nu;&Nu;&xi;&Xi;&omicron;&Omicron;&pi;&Pi;&rho;&Rho;&sigma;&Sigma;&tau;&Tau;&upsilon;&Upsilon;&phi;&Phi;&chi;&Chi;&psi;&Psi;&omega;&Omega;"; -- Wywołanie funkcji odkodujący kody HTML; local tekst2=html_modul.DecodeKoduHTMLZnaku(tekst); return tekst2; end; return p; kzbp8b7fedphw4oqspbu6tmgj63zzul 553562 553493 2026-08-30T11:23:10Z Persino 2851 553562 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); -- Tekst z kodami HTML: literowymi, dziesiętnymi i szesnastkowymi; local tekst="Oto jest link: &#x5B;&#x5B;Strona&#124;Nazwa linku&#93;&#x5D;, a w nim spacje niełamliwe&nbsp;i inne znaki: z alfabetu greckiego jak: &alpha;&Alpha;&beta;&Beta;&gamma;&Gamma;&delta;&Delta;&epsilon;&Epsilon;&zeta;&Zeta;&eta;&Eta;&theta;&Theta;&iota;&Iota;&kappa;&Kappa;&lambda;&Lambda;&mu;&Mu;&nu;&Nu;&xi;&Xi;&omicron;&Omicron;&pi;&Pi;&rho;&Rho;&sigma;&Sigma;&tau;&Tau;&upsilon;&Upsilon;&phi;&Phi;&chi;&Chi;&psi;&Psi;&omega;&Omega;"; -- Wywołanie funkcji odkodujący kody HTML; local tekst2=html_modul.DecodeKoduHTMLZnaku(tekst); local Wikibooks_Przyklad_ZrodloLua_modul=require("Module:Wikibooks/Przykład/ŹródłoLua"); local wikikod=Wikibooks_Przyklad_ZrodloLua_modul["ŹródłoLua"](frame,{ tekst=tekst, tekst2=tekst2, }); return wikikod; end; return p; b31dj8u6yj35z2awmq6ar03d8xc0617 Moduł:Wikibooks/Przykład/Html/ZamianaEncodeTekst/Kod 1 828 64029 553494 2026-08-30T05:21:35Z Persino 2851 Utworzono nową stronę „require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local tekst="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obs%C5%82uga"; local tekst2=html_modul.ZamianaEncodeTekst(tekst); return tekst2; end; return p;” 553494 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local tekst="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obs%C5%82uga"; local tekst2=html_modul.ZamianaEncodeTekst(tekst); return tekst2; end; return p; nsc7sdg62usy1li94jmppdsfoeh342i Moduł:Wikibooks/Przykład/Html/ZamianaEncodeNaPodstawieWzoruTekstu/Kod 1 828 64030 553495 2026-08-30T05:23:17Z Persino 2851 Utworzono nową stronę „require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); -- Tekst nie do końca zakodowany wydzielonego według poniższego wzoru; local tekst="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obsługa"; -- Wzór, który wydziela części do kodowania jeszcze bardziej niż były na samym początku; local wzor="[^/%?%=&:%#]+"; -- Wywołanie funkcji kodującej; local tekst2=ht…” 553495 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); -- Tekst nie do końca zakodowany wydzielonego według poniższego wzoru; local tekst="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obsługa"; -- Wzór, który wydziela części do kodowania jeszcze bardziej niż były na samym początku; local wzor="[^/%?%=&:%#]+"; -- Wywołanie funkcji kodującej; local tekst2=html_modul.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,wzor); return tekst2; end; return p; oqmr5fmn91rm973a6zss8tcyh00k02y Moduł:Wikibooks/Przykład/Html/StronaParametryIdentyfikacjaAdresuHtml/Kod 1 828 64031 553496 2026-08-30T05:26:49Z Persino 2851 Utworzono nową stronę „require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local adres="https://pl.wikibooks.org/wiki/Strona&#32;główna&num;&#x23;&#35;To_nie_jest nagłówek?action=edit&section=2#Nagłówek strony"; -- Adres strony jedynie rozkładaa się na: "strona", "parametry" i "nagłówek"; local strona,parametry,naglowek=html_modul.StronaParametryIdentyfikacjaAdresuHtml(adres); local wikikod=frame:preprocess{tekst="{{Ź…” 553496 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local adres="https://pl.wikibooks.org/wiki/Strona&#32;główna&num;&#x23;&#35;To_nie_jest nagłówek?action=edit&section=2#Nagłówek strony"; -- Adres strony jedynie rozkładaa się na: "strona", "parametry" i "nagłówek"; local strona,parametry,naglowek=html_modul.StronaParametryIdentyfikacjaAdresuHtml(adres); local wikikod=frame:preprocess{tekst="{{ŹródłoLua|1=strona="..strona.."\nparametry="..parametry.."\nnaglowej="..naaglowek.."}}",}; return wikikod; end; return p; 9dci4kmg1bfa5ln0dwep18sl7652o7q Moduł:Wikibooks/Przykład/Html/TworzenieAdresuHtml/Kod 1 828 64032 553497 2026-08-30T05:28:59Z Persino 2851 Utworzono nową stronę „require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local strona,parametry,naglowek,ile="https://pl.wikibooks.org/wiki/Strona&#32;główna&num;&#35;&#x23;To_nie_jest nagłówek","action=edit&section=2","Nagłówek strony",3; local adres=html_modul.TworzenieAdresuHtml(strona,parametry,naglowek); return adres; end; return p;” 553497 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local strona,parametry,naglowek,ile="https://pl.wikibooks.org/wiki/Strona&#32;główna&num;&#35;&#x23;To_nie_jest nagłówek","action=edit&section=2","Nagłówek strony",3; local adres=html_modul.TworzenieAdresuHtml(strona,parametry,naglowek); return adres; end; return p; dnmcgo4kvwtkvznqpyftz3toq1u6new Moduł:Wikibooks/Przykład/Html/TworzenieStronaParametryIdentyfikacjaAdresuHtml/Kod 1 828 64033 553498 2026-08-30T05:33:42Z Persino 2851 Utworzono nową stronę „require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local function EncodeParametryURL(a,b,c,funkcja_operacji) return a..funkcja_operacji(b).."="..funkcja_operacji(c); end; local function OperacjeHtml(adres,funkcja_operacji) adres=mw.ustring.gsub(adres,"^(%??)([^&=]*)=([^&]*)",function(a,b,c)return EncodeParametryURL(a,b,c,funkcja_operacji);end); adres=mw.ustring.gsub(adres,"(&)([^&=]*)=([^&]*)",functi…” 553498 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local function EncodeParametryURL(a,b,c,funkcja_operacji) return a..funkcja_operacji(b).."="..funkcja_operacji(c); end; local function OperacjeHtml(adres,funkcja_operacji) adres=mw.ustring.gsub(adres,"^(%??)([^&=]*)=([^&]*)",function(a,b,c)return EncodeParametryURL(a,b,c,funkcja_operacji);end); adres=mw.ustring.gsub(adres,"(&)([^&=]*)=([^&]*)",function(a,b,c)return EncodeParametryURL(a,b,c,funkcja_operacji);end); return adres; end; local funkcja_operacji={ [1]=function(tekst) return p.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,"[^/]+",p.ZamianaEncodeTekst); end, [2]=function(tekst) return p.ZamianaEncodeTekst(tekst); end, [3]=function(tekst) return p.ZamianaEncodeTekst(tekst); end, }; local adres=html_modul.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres, -- Funkcja: funkcja_strona; function(strona,Func) strona=Func(strona); return strona; end, -- Funkcja: funkcja_parametry; OperacjeHtml, -- Funkcja: funkcja_naglowek; function(naglowek,Func) naglowek=Func(naglowek); return naglowek; end, funkcja_operacji ); return adres; end; return p; bex3v89e1vqguafn8wbuyx79w0yb8e7 Moduł:Wikibooks/Przykład/Html/EncodeParametryURL/Kod 1 828 64034 553499 2026-08-30T05:35:46Z Persino 2851 Utworzono nową stronę „require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local adres="//pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obsługa"; local adres2=html_modul.EncodeParametryURL(adres,true, function(strona,Func) strona=Func(strona); return strona; end, function(naglowek,Func) naglowek=Func(naglowek); return naglowek; end ); return adres2; end; return p;” 553499 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local adres="//pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obsługa"; local adres2=html_modul.EncodeParametryURL(adres,true, function(strona,Func) strona=Func(strona); return strona; end, function(naglowek,Func) naglowek=Func(naglowek); return naglowek; end ); return adres2; end; return p; qffu3bbmycho3uyydu5hr4qiczgnrsk 553580 553499 2026-08-30T11:49:14Z Persino 2851 553580 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local adres="//pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obsługa"; local adres2=html_modul.EncodeParametryURL(adres,true, function(strona,Func) strona=Func(strona); return strona; end, function(naglowek,Func) naglowek=Func(naglowek); return naglowek; end ); local Wikibooks_Przyklad_ZrodloLua_modul=require("Module:Wikibooks/Przykład/ŹródłoLua"); local wikikod=Wikibooks_Przyklad_ZrodloLua_modul["ŹródłoLua"](frame,{ adres=adres, adres2=adres2, }); return wikikod; end; return p; i0ttgnb1qsadv8qz6kat9aj30nlo0vb Moduł:Wikibooks/Przykład/Html/EncodeZaawansowanyParametryURL/Kod 1 828 64035 553500 2026-08-30T05:37:47Z Persino 2851 Utworzono nową stronę „require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local adres="Szablon:Link_wewnętrzny?action=edit#Obsługa?"; local adres2=html_modul.EncodeZaawansowanyParametryURL(adres,true, function(strona,Func) strona=Func(strona); return strona; end, function(naglowek,Func) naglowek=Func(naglowek); return naglowek; end ); return adres2; end; return p;” 553500 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local adres="Szablon:Link_wewnętrzny?action=edit#Obsługa?"; local adres2=html_modul.EncodeZaawansowanyParametryURL(adres,true, function(strona,Func) strona=Func(strona); return strona; end, function(naglowek,Func) naglowek=Func(naglowek); return naglowek; end ); return adres2; end; return p; ltgt040q6izadn5m1afqsy035i3yusr Moduł:Wikibooks/Przykład/Html/EncodeParametryHtml/Kod 1 828 64036 553501 2026-08-30T05:39:31Z Persino 2851 Utworzono nową stronę „require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local adres="Szablon:Link_wewnętrzny?action=edit#Obsługa?"; local adres2=html_modul.EncodeParametryHtml(adres,true, function(strona,Func) strona=Func(strona); return strona; end, function(naglowek,Func) naglowek=Func(naglowek); return naglowek; end ); return adres2; end; return p;” 553501 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local adres="Szablon:Link_wewnętrzny?action=edit#Obsługa?"; local adres2=html_modul.EncodeParametryHtml(adres,true, function(strona,Func) strona=Func(strona); return strona; end, function(naglowek,Func) naglowek=Func(naglowek); return naglowek; end ); return adres2; end; return p; kz96zf23vs9csoyxmqwjj26scrbw8a2 553578 553501 2026-08-30T11:47:13Z Persino 2851 553578 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local adres="Szablon:Link_wewnętrzny?action=edit#Obsługa?"; local adres2=html_modul.EncodeParametryHtml(adres,true, function(strona,Func) strona=Func(strona); return strona; end, function(naglowek,Func) naglowek=Func(naglowek); return naglowek; end ); local Wikibooks_Przyklad_ZrodloLua_modul=require("Module:Wikibooks/Przykład/ŹródłoLua"); local wikikod=Wikibooks_Przyklad_ZrodloLua_modul["ŹródłoLua"](frame,{ adres=adres, adres2=adres2, }); return wikikod; end; return p; 551280ieom83jd9055e1gzigonpxhcw Moduł:Wikibooks/Przykład/Html/EncodeZaawansowanyParametryHtml/Kod 1 828 64037 553502 2026-08-30T05:41:16Z Persino 2851 Utworzono nową stronę „require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local adres="Szablon:Link_wewnętrzny?action=edit#Obsługa?"; local adres2=html_modul.EncodeZaawansowanyParametryHtml(adres,true,true, function(strona,Func) strona=Func(strona); return strona; end, function(naglowek,Func) naglowek=Func(naglowek); return naglowek; end ); return adres2; end; return p;” 553502 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local adres="Szablon:Link_wewnętrzny?action=edit#Obsługa?"; local adres2=html_modul.EncodeZaawansowanyParametryHtml(adres,true,true, function(strona,Func) strona=Func(strona); return strona; end, function(naglowek,Func) naglowek=Func(naglowek); return naglowek; end ); return adres2; end; return p; a4rc3o0lm3bgq9cxoxul7bnnzhl665j Moduł:Wikibooks/Przykład/Html/EncodeHashKoduHtmlTekstu/Kod 1 828 64038 553503 2026-08-30T05:45:59Z Persino 2851 Utworzono nową stronę „require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); -- Kody do zamienienia local tekst="&num;, &#35; i &#x23;"; -- Przetwarzanie tekstu local tekst2,ile,ile2=html_modul.EncodeHashKoduHtmlTekstu(tekst); local wikikod=frame:preprocess{tekst="{{ŹródłoLua|1=tekst2="..tostring(tekst2).."\nile="..tostring(ile).."\nile2="..tostring(ile2).."}}",}; return wikikod; end; return p;” 553503 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); -- Kody do zamienienia local tekst="&num;, &#35; i &#x23;"; -- Przetwarzanie tekstu local tekst2,ile,ile2=html_modul.EncodeHashKoduHtmlTekstu(tekst); local wikikod=frame:preprocess{tekst="{{ŹródłoLua|1=tekst2="..tostring(tekst2).."\nile="..tostring(ile).."\nile2="..tostring(ile2).."}}",}; return wikikod; end; return p; q7jverz25hpdva4p6urj7j8i294clwc 553571 553503 2026-08-30T11:39:00Z Persino 2851 553571 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); -- Kody do zamienienia local tekst="&num;, &#35; i &#x23;"; -- Przetwarzanie tekstu local tekst2,ile,ile2=html_modul.EncodeHashKoduHtmlTekstu(tekst); local Wikibooks_Przyklad_ZrodloLua_modul=require("Module:Wikibooks/Przykład/ŹródłoLua"); local wikikod=Wikibooks_Przyklad_ZrodloLua_modul["ŹródłoLua"](frame,{ tekst=tekst, tekst2=tekst2, ile=ile, ile2=ile2, }); return wikikod; end; return p; dgwxujz0vrlqz8hn4b43f1t0ufqu9u8 Moduł:Wikibooks/Przykład/Html/DecodeHashKoduHtmlTekstu/Kod 1 828 64039 553504 2026-08-30T05:47:47Z Persino 2851 Utworzono nową stronę „require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); -- Zamienione wcześniej kody: tekstu "&num;, &#35; i &#x23;", kolejno na "&amp;num;"; local tekst="&amp;num;, &amp;num; i &amp;num;"; -- Odkodowanie znaków "&amp;num;" w tekście; local tekst2=html_modul.DecodeHashKoduHtmlTekstu(tekst,3); return tekst2; end; return p;” 553504 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); -- Zamienione wcześniej kody: tekstu "&num;, &#35; i &#x23;", kolejno na "&amp;num;"; local tekst="&amp;num;, &amp;num; i &amp;num;"; -- Odkodowanie znaków "&amp;num;" w tekście; local tekst2=html_modul.DecodeHashKoduHtmlTekstu(tekst,3); return tekst2; end; return p; fteip31bkv4txkzs74w4xboj59zhw2r 553558 553504 2026-08-30T11:18:22Z Persino 2851 553558 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); -- Zamienione wcześniej kody: tekstu "&num;, &#35; i &#x23;", kolejno na "&amp;num;"; local tekst="&amp;num;, &amp;num; i &amp;num;"; -- Odkodowanie znaków "&amp;num;" w tekście; local tekst2=html_modul.DecodeHashKoduHtmlTekstu(tekst,3); local Wikibooks_Przyklad_ZrodloLua_modul=require("Module:Wikibooks/Przykład/ŹródłoLua"); local wikikod=Wikibooks_Przyklad_ZrodloLua_modul["ŹródłoLua"](frame,{ tekst=tekst, tekst2=tekst2, }); return wikikod; end; return p; g7usisoph5qbhim91azzdbk2pswjr85 Moduł:Wikibooks/Przykład/Html/EncodeTempHashKoduHtmlTekstu/Kod 1 828 64040 553505 2026-08-30T05:50:51Z Persino 2851 Utworzono nową stronę „require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); -- Mamy tutaj kody HTML znaku: "#", czyli: "&#35;" i "&#x23;" oraz jeden od spacji: "&#32;";, a tam "#"zamieniamy na "&num;"; local tekst="https://pl.wikibooks.org/wiki/Strona&#32;główna&#35;&#35;&#x23;To_nie_jest nagłówek?action=edit&section=2#Nagłówek strony"; -- Otrzymamy przetworzony tekst oraz ile uzyskamy znaków z kodem HTML dziesiętnym "ile1…” 553505 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); -- Mamy tutaj kody HTML znaku: "#", czyli: "&#35;" i "&#x23;" oraz jeden od spacji: "&#32;";, a tam "#"zamieniamy na "&num;"; local tekst="https://pl.wikibooks.org/wiki/Strona&#32;główna&#35;&#35;&#x23;To_nie_jest nagłówek?action=edit&section=2#Nagłówek strony"; -- Otrzymamy przetworzony tekst oraz ile uzyskamy znaków z kodem HTML dziesiętnym "ile1" i szesnastkowym "ile2"; local tekst2,ile1,ile2=html_modul.EncodeTempHashKoduHtmlTekstu(tekst); local wikikod=frame:preprocess{tekst="{{ŹródłoLua|1=tekst2="..tostring(tekst2).."\nile1="..tostring(ile1).."\nile2="..tostring(ile2).."}}",}; return wikikod; end; return p; rd6qlf0e5v1iw8975yr9v7oo77xlol2 Moduł:Wikibooks/Przykład/Html/DecodeTempHashKoduHtmlTekstu/Kod 1 828 64041 553506 2026-08-30T05:52:47Z Persino 2851 Utworzono nową stronę „require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); -- Mamy tutaj kody HTML znaku: "#", czyli: "&&num;35;" i "&&num;x23;" oraz jeden od spacji: "&&num;32;";, a tam "#"zamieniamy na "&num;"; local tekst="https://pl.wikibooks.org/wiki/Strona&&num;32;główna&&num;35;&&num;35;&&num;x23;To_nie_jest nagłówek?action=edit&section=2#Nagłówek strony"; -- Otrzymamy przetworzony tekst, do którego wsadzamy ile uzy…” 553506 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); -- Mamy tutaj kody HTML znaku: "#", czyli: "&&num;35;" i "&&num;x23;" oraz jeden od spacji: "&&num;32;";, a tam "#"zamieniamy na "&num;"; local tekst="https://pl.wikibooks.org/wiki/Strona&&num;32;główna&&num;35;&&num;35;&&num;x23;To_nie_jest nagłówek?action=edit&section=2#Nagłówek strony"; -- Otrzymamy przetworzony tekst, do którego wsadzamy ile uzyskamy znaków z kodem HTML dziesiętnym "ile1" i szesnastkowym "ile2" w wywołaniu local tekst,ile1,ile2=p.EncodeTempHashKoduHtmlTekstu(tekst); local tekst2=html_modul.EncodeTempHashKoduHtmlTekstu(tekst,3,1); return tekst2; end; return p; is0ok795o8lcsu8kiusndmlcpl6eior 553564 553506 2026-08-30T11:25:38Z Persino 2851 553564 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); -- Mamy tutaj kody HTML znaku: "#", czyli: "&&num;35;" i "&&num;x23;" oraz jeden od spacji: "&&num;32;";, a tam "#"zamieniamy na "&num;"; local tekst="https://pl.wikibooks.org/wiki/Strona&&num;32;główna&&num;35;&&num;35;&&num;x23;To_nie_jest nagłówek?action=edit&section=2#Nagłówek strony"; -- Otrzymamy przetworzony tekst, do którego wsadzamy ile uzyskamy znaków z kodem HTML dziesiętnym "ile1" i szesnastkowym "ile2" w wywołaniu local tekst,ile1,ile2=p.EncodeTempHashKoduHtmlTekstu(tekst); local tekst2=html_modul.EncodeTempHashKoduHtmlTekstu(tekst,3,1); local Wikibooks_Przyklad_ZrodloLua_modul=require("Module:Wikibooks/Przykład/ŹródłoLua"); local wikikod=Wikibooks_Przyklad_ZrodloLua_modul["ŹródłoLua"](frame,{ tekst=tekst, tekst2=tekst2, }); return wikikod; end; return p; b8s4b727vqftgiwtytk7t9o87kx91oc 553566 553564 2026-08-30T11:32:23Z Persino 2851 553566 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); -- Mamy tutaj kody HTML znaku: "#", czyli: "&&num;35;" i "&&num;x23;" oraz jeden od spacji: "&&num;32;";, a tam "#"zamieniamy na "&num;"; local tekst="https://pl.wikibooks.org/wiki/Strona&&num;32;główna&&num;35;&&num;35;&&num;x23;To_nie_jest nagłówek?action=edit&section=2#Nagłówek strony"; -- Otrzymamy przetworzony tekst, do którego wsadzamy ile uzyskamy znaków z kodem HTML dziesiętnym "ile1" i szesnastkowym "ile2" w wywołaniu local tekst,ile1,ile2=p.EncodeTempHashKoduHtmlTekstu(tekst); local tekst2=html_modul.DecodeTempHashKoduHtmlTekstu(tekst,3,1); local Wikibooks_Przyklad_ZrodloLua_modul=require("Module:Wikibooks/Przykład/ŹródłoLua"); local wikikod=Wikibooks_Przyklad_ZrodloLua_modul["ŹródłoLua"](frame,{ tekst=tekst, tekst2=tekst2, }); return wikikod; end; return p; 5hs56z88znlftxmj2ibl83ybgrart8k Moduł:Wikibooks/Przykład/Html/AdresDomniemanieBezProtokolarnyEncodeURL/Kod 1 828 64042 553507 2026-08-30T05:55:59Z Persino 2851 Utworzono nową stronę „require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); -- Adres protokonalny; local adres11="https://pl.wikibooks.org/wiki/Strona_główna?action=edit&section=2#Nagłówek strony"; local adres12=html_modul.AdresDomniemanieBezProtokolarnyEncodeURL(adres11,true); -- Adres bezprotokonalny; local adres21="//pl.wikibooks.org/wiki/Strona_główna?action=edit&section=2#Nagłówek strony"; local adres22=html_modul.…” 553507 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); -- Adres protokonalny; local adres11="https://pl.wikibooks.org/wiki/Strona_główna?action=edit&section=2#Nagłówek strony"; local adres12=html_modul.AdresDomniemanieBezProtokolarnyEncodeURL(adres11,true); -- Adres bezprotokonalny; local adres21="//pl.wikibooks.org/wiki/Strona_główna?action=edit&section=2#Nagłówek strony"; local adres22=html_modul.AdresDomniemanieBezProtokolarnyEncodeURL(adres21,false); local wikikod=frame:preprocess{tekst="{{ŹródłoLua|1=adres12="..tostring(adres12).."\nadres22="..tostring(adres22).."}}",}; return wikikod; end; return p; aov7pa1xbqpojrjxleyatfl33totqzd 553554 553507 2026-08-30T11:03:27Z Persino 2851 553554 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); -- Adres protokonalny; local adres11="https://pl.wikibooks.org/wiki/Strona_główna?action=edit&section=2#Nagłówek strony"; local adres12=html_modul.AdresDomniemanieBezProtokolarnyEncodeURL(adres11,true); -- Adres bezprotokonalny; local adres21="//pl.wikibooks.org/wiki/Strona_główna?action=edit&section=2#Nagłówek strony"; local adres22=html_modul.AdresDomniemanieBezProtokolarnyEncodeURL(adres21,false); local Wikibooks_Przyklad_ZrodloLua_modul=require("Module:Wikibooks/Przykład/ŹródłoLua"); local wikikod=Wikibooks_Przyklad_ZrodloLua_modul["ŹródłoLua"](frame,{ adres11=adres11, adres12=adres12, adres21=adres21, adres22=adres22, }); return wikikod; end; return p; exi4epv4aem8ukm81uz249tityfkojl Moduł:Wikibooks/Przykład/Html/UriEncode/Kod 1 828 64043 553508 2026-08-30T05:57:51Z Persino 2851 Utworzono nową stronę „require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); -- Adres protokonalny; local adres="https://pl.wikibooks.org/wiki/Strona_główna?action=edit&section=2#Nagłówek strony"; -- Równoważnie: local adres2=html_modul.UriEncode{html=adres,}; local adres2=html_modul.UriEncode(adres); return adres2; end; return p;” 553508 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); -- Adres protokonalny; local adres="https://pl.wikibooks.org/wiki/Strona_główna?action=edit&section=2#Nagłówek strony"; -- Równoważnie: local adres2=html_modul.UriEncode{html=adres,}; local adres2=html_modul.UriEncode(adres); return adres2; end; return p; efinyjab0ydgp57gtmi9a0o3ueis423 Moduł:Wikibooks/Przykład/Html/EncodePodstawoweHtmlTekstu/Kod 1 828 64044 553509 2026-08-30T05:59:20Z Persino 2851 Utworzono nową stronę „require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local adres="Szablon:Link_wewnętrzny?action=edit#Obsługa?"; local adres2=html_modul.EncodePodstawoweHtmlTekstu(adres); return adres2; end; return p;” 553509 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local adres="Szablon:Link_wewnętrzny?action=edit#Obsługa?"; local adres2=html_modul.EncodePodstawoweHtmlTekstu(adres); return adres2; end; return p; 3q2k3m0ak8s6amqt55z96vuh4o8wgwh 553582 553509 2026-08-30T11:51:18Z Persino 2851 553582 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local adres="Szablon:Link_wewnętrzny?action=edit#Obsługa?"; local adres2=html_modul.EncodePodstawoweHtmlTekstu(adres); local Wikibooks_Przyklad_ZrodloLua_modul=require("Module:Wikibooks/Przykład/ŹródłoLua"); local wikikod=Wikibooks_Przyklad_ZrodloLua_modul["ŹródłoLua"](frame,{ adres=adres, adres2=adres2, }); return wikikod; end; return p; 5blqglw3movn9ajij9yf8l2jvddk7n1 Moduł:Wikibooks/Przykład/Html/EncodeElementyAdresuStrony/Kod 1 828 64045 553510 2026-08-30T06:01:18Z Persino 2851 Utworzono nową stronę „require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local elementy_adresu_strony="Obsługa?"; local elementy_adresu_strony2=html_modul.EncodeElementyAdresuStrony(elementy_adresu_strony,false,true); return elementy_adresu_strony2; end; return p;” 553510 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local elementy_adresu_strony="Obsługa?"; local elementy_adresu_strony2=html_modul.EncodeElementyAdresuStrony(elementy_adresu_strony,false,true); return elementy_adresu_strony2; end; return p; n100hmn6xj4rn9amln4fzobfje78bpk 553569 553510 2026-08-30T11:36:41Z Persino 2851 553569 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local elementy_adresu_strony="Obsługa?"; local elementy_adresu_strony2=html_modul.EncodeElementyAdresuStrony(elementy_adresu_strony,false,true); local Wikibooks_Przyklad_ZrodloLua_modul=require("Module:Wikibooks/Przykład/ŹródłoLua"); local wikikod=Wikibooks_Przyklad_ZrodloLua_modul["ŹródłoLua"](frame,{ elementy_adresu_strony=elementy_adresu_strony, elementy_adresu_strony2=elementy_adresu_strony2, }); return wikikod; end; return p; k1nyej1qqd1jrfm9n3nab6v0dxsw74c Moduł:Wikibooks/Przykład/Html/AdresProjektuEncodeHtml/Kod 1 828 64046 553511 2026-08-30T06:03:50Z Persino 2851 Utworzono nową stronę „require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local adres="https://pl.wikibooks.org/wiki/Strona_&główna?&?action=edit&section=2&title=Nazwa strony szablonu: {{!}}#Nagłówek strony"; local adres2=html_modul.AdresProjektuEncodeHtml(adres,false,true); local adres3=html_modul.AdresProjektuEncodeHtml(adres,true,true); local wikikod=frame:preprocess{tekst="{{ŹródłoLua|1=adres2="..tostring(adres2).."\…” 553511 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local adres="https://pl.wikibooks.org/wiki/Strona_&główna?&?action=edit&section=2&title=Nazwa strony szablonu: {{!}}#Nagłówek strony"; local adres2=html_modul.AdresProjektuEncodeHtml(adres,false,true); local adres3=html_modul.AdresProjektuEncodeHtml(adres,true,true); local wikikod=frame:preprocess{tekst="{{ŹródłoLua|1=adres2="..tostring(adres2).."\nadres3="..tostring(adres3).."}}",}; return wikikod; end; return p; i25dexxa8h200fnebn3wpwj8w3aa4c6 553556 553511 2026-08-30T11:12:38Z Persino 2851 553556 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local html_modul=require("Module:Html"); local adres="https://pl.wikibooks.org/wiki/Strona_&główna?&?action=edit&section=2&title=Nazwa strony szablonu: {{!}}#Nagłówek strony"; local adres2=html_modul.AdresProjektuEncodeHtml(adres,false,true); local adres3=html_modul.AdresProjektuEncodeHtml(adres,true,true); local Wikibooks_Przyklad_ZrodloLua_modul=require("Module:Wikibooks/Przykład/ŹródłoLua"); local wikikod=Wikibooks_Przyklad_ZrodloLua_modul["ŹródłoLua"](frame,{ adres=adres, adres2=adres2, adres3=adres3, }); return wikikod; end; return p; jyage57ryklyzl7o6k72iketcvvxqmd Kategoria:Szablony, moduły Lua w Scribunto, z opisami, przykładów stron projektu 14 64047 553514 2026-08-30T06:20:05Z Persino 2851 Utworzono nową stronę „{{Kategoria|Szablony, moduły Lua w Scribunto, przykładów stron projektu}}” 553514 wikitext text/x-wiki {{Kategoria|Szablony, moduły Lua w Scribunto, przykładów stron projektu}} jt13uuu70722yh4no7o3rtii200tb7r Kategoria:Szablony, moduły Lua w Scribunto, bez opisów, przykładów stron projektu 14 64048 553515 2026-08-30T06:21:03Z Persino 2851 Utworzono nową stronę „{{Kategoria|Szablony, moduły Lua w Scribunto, przykładów stron projektu}}” 553515 wikitext text/x-wiki {{Kategoria|Szablony, moduły Lua w Scribunto, przykładów stron projektu}} jt13uuu70722yh4no7o3rtii200tb7r Moduł:Wikibooks/Przykład/ŹródłoLua 828 64049 553526 2026-08-30T09:22:21Z Persino 2851 Utworzono nową stronę „local p={}; p["Przykład"]=function(frame) local args={ ["argument 1"]="wartość1", ["argument 2"]="wartość2", ["argument 3"]="wartość3", }; local wikikod=p["ŹródłoLua"](frame,args); return wikikod; end; p["ŹródłoLua"]=function(frame,args) local str=""; for name,value in pairs(args)do str=((str~="")and "\n" or "")..name.."="..value; end; local tab_znak={ ["="]="{{=}}", ["|"]="{{!}}", }; str=mw.ustring.gsub(str,"[%=%|]",function…” 553526 Scribunto text/plain local p={}; p["Przykład"]=function(frame) local args={ ["argument 1"]="wartość1", ["argument 2"]="wartość2", ["argument 3"]="wartość3", }; local wikikod=p["ŹródłoLua"](frame,args); return wikikod; end; p["ŹródłoLua"]=function(frame,args) local str=""; for name,value in pairs(args)do str=((str~="")and "\n" or "")..name.."="..value; end; local tab_znak={ ["="]="{{=}}", ["|"]="{{!}}", }; str=mw.ustring.gsub(str,"[%=%|]",function(znak) return tab_znak[znak] or znak; end) str="{{ŹródłoLua|"..str.."}}"; local wikikod=frame:preprocess{text=str,}; return wikikod; end; l299t81z5ob5legmx8g16n4y6ke4zw6 553527 553526 2026-08-30T09:22:41Z Persino 2851 553527 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local args={ ["argument 1"]="wartość1", ["argument 2"]="wartość2", ["argument 3"]="wartość3", }; local wikikod=p["ŹródłoLua"](frame,args); return wikikod; end; p["ŹródłoLua"]=function(frame,args) local str=""; for name,value in pairs(args)do str=((str~="")and "\n" or "")..name.."="..value; end; local tab_znak={ ["="]="{{=}}", ["|"]="{{!}}", }; str=mw.ustring.gsub(str,"[%=%|]",function(znak) return tab_znak[znak] or znak; end) str="{{ŹródłoLua|"..str.."}}"; local wikikod=frame:preprocess{text=str,}; return wikikod; end; jkz4m3qur6byjg5pvqw84v0jompqzj2 553528 553527 2026-08-30T09:27:07Z Persino 2851 553528 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local args={ ["argument 1"]="wartość1", ["argument 2"]="wartość2", ["argument 3"]="wartość3", }; local wikikod=p["ŹródłoLua"](frame,args); return wikikod; end; p["ŹródłoLua"]=function(frame,args) local str=""; for name,value in pairs(args)do str=((str~="")and "\n" or "")..name.."="..value; end; local tab_znak={ ["="]="{{=}}", ["|"]="{{!}}", }; str=mw.ustring.gsub(str,"[%=%|]",function(znak) return tab_znak[znak] or znak; end) str="{{ŹródłoLua|"..str.."}}"; local wikikod=frame:preprocess{text=str,}; return wikikod; end; return p; 21uqjg8pz88h84jxtg0u2ouf4gqw0ie 553530 553528 2026-08-30T09:28:30Z Persino 2851 553530 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local args={ ["argument 1"]="wartość1", ["argument 2"]="wartość2", ["argument 3"]="wartość3", }; local wikikod=p["ŹródłoLua"](frame,args); return wikikod; end; p["ŹródłoLua"]=function(frame,args) local str=""; for name,value in pairs(args)do str=str..((str~="")and "\n" or "")..name.."="..value; end; local tab_znak={ ["="]="{{=}}", ["|"]="{{!}}", }; str=mw.ustring.gsub(str,"[%=%|]",function(znak) return tab_znak[znak] or znak; end) str="{{ŹródłoLua|"..str.."}}"; local wikikod=frame:preprocess{text=str,}; return wikikod; end; return p; h7h3s7fb93u4k0abvhndkdlc2e5o4h1 553531 553530 2026-08-30T09:32:59Z Persino 2851 553531 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local args={ ["argument 1"]="wartość1", ["argument 2"]="wartość2", ["argument 3"]="wartość3", }; local wikikod=p["ŹródłoLua"](frame,args); return wikikod; end; p["ŹródłoLua"]=function(frame,args) local parametry_modul=require("Module:Parametry"); local IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu; local __next=IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(args); local __metatablica={ __pairs=function(tablica) return __next,tablica,nil; end; }; setmetatable(args,__metatablica); local str=""; for name,value in pairs(args)do str=str..((str~="")and "\n" or "")..name.."="..value; end; local tab_znak={ ["="]="{{=}}", ["|"]="{{!}}", }; str=mw.ustring.gsub(str,"[%=%|]",function(znak) return tab_znak[znak] or znak; end) str="{{ŹródłoLua|"..str.."}}"; local wikikod=frame:preprocess{text=str,}; return wikikod; end; return p; 7ng8xr1nh9jfk9cmv0vkenmlxzoy807 553547 553531 2026-08-30T10:43:35Z Persino 2851 553547 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local args={ ["argument 1"]="wartość1", ["argument 2"]="wartość2", ["argument 3"]="wartość3", }; local wikikod=p["ŹródłoLua"](frame,args); return wikikod; end; p["ŹródłoLua"]=function(frame,args) local parametry_modul=require("Module:Parametry"); local IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu; local __next=IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(args); local __metatablica={ __pairs=function(tablica) return __next,tablica,nil; end; }; setmetatable(args,__metatablica); local str=""; for name,value in pairs(args)do str=str..((str~="")and "\n" or "")..name.."=\""..value.."\""; end; local tab_znak={ ["="]="{{=}}", ["|"]="{{!}}", }; str=mw.ustring.gsub(str,"[%=%|]",function(znak) return tab_znak[znak] or znak; end) str="{{ŹródłoLua|"..str.."}}"; local wikikod=frame:preprocess{text=str,}; return wikikod; end; return p; 7jfr3nnu5ffrh0saly6fs2pbx7oq4fj 553548 553547 2026-08-30T10:44:49Z Persino 2851 553548 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local args={ ["argument 1"]="wartość1", ["argument 2"]="wartość2", ["argument 3"]="wartość3", }; local wikikod=p["ŹródłoLua"](frame,args); return wikikod; end; p["ŹródłoLua"]=function(frame,args) local parametry_modul=require("Module:Parametry"); local IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu; local __next=IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(args); local __metatablica={ __pairs=function(tablica) return __next,tablica,nil; end; }; setmetatable(args,__metatablica); local str=""; for name,value in pairs(args)do value=mw.ustring.gsub(value,"\"","\\\""); str=str..((str~="")and "\n" or "")..name.."=\""..value.."\""; end; local tab_znak={ ["="]="{{=}}", ["|"]="{{!}}", }; str=mw.ustring.gsub(str,"[%=%|]",function(znak) return tab_znak[znak] or znak; end) str="{{ŹródłoLua|"..str.."}}"; local wikikod=frame:preprocess{text=str,}; return wikikod; end; return p; gqvjp9t7xgr7v0zpyfqo5ty7iw5lx1d 553549 553548 2026-08-30T10:46:07Z Persino 2851 553549 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local args={ ["argument 1"]="wartość1", ["argument 2"]="wartość2", ["argument 3"]="wartość3", }; local wikikod=p["ŹródłoLua"](frame,args); return wikikod; end; p["ŹródłoLua"]=function(frame,args) local parametry_modul=require("Module:Parametry"); local IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu; local __next=IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(args); local __metatablica={ __pairs=function(tablica) return __next,tablica,nil; end; }; setmetatable(args,__metatablica); local str=""; for name,value in pairs(args)do value=mw.ustring.gsub(value,"\"","\\\""); str=str..((str~="")and "\n" or "")..name.."=\""..value.."\";"; end; local tab_znak={ ["="]="{{=}}", ["|"]="{{!}}", }; str=mw.ustring.gsub(str,"[%=%|]",function(znak) return tab_znak[znak] or znak; end) str="{{ŹródłoLua|"..str.."}}"; local wikikod=frame:preprocess{text=str,}; return wikikod; end; return p; 63tcqy8sipxdpqcg6239y7rok1r311w 553550 553549 2026-08-30T10:46:54Z Persino 2851 553550 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local args={ ["argument 1"]="wartość1", ["argument 2"]="wartość2", ["argument 3"]="wartość3", }; local wikikod=p["ŹródłoLua"](frame,args); return wikikod; end; p["ŹródłoLua"]=function(frame,args) local parametry_modul=require("Module:Parametry"); local IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu; local __next=IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(args); local __metatablica={ __pairs=function(tablica) return __next,tablica,nil; end; }; setmetatable(args,__metatablica); local str=""; for name,value in pairs(args)do name=mw.ustring.gsub(name," ","_"); value=mw.ustring.gsub(value,"\"","\\\""); str=str..((str~="")and "\n" or "")..name.."=\""..value.."\";"; end; local tab_znak={ ["="]="{{=}}", ["|"]="{{!}}", }; str=mw.ustring.gsub(str,"[%=%|]",function(znak) return tab_znak[znak] or znak; end) str="{{ŹródłoLua|"..str.."}}"; local wikikod=frame:preprocess{text=str,}; return wikikod; end; return p; j6vdvrez6hepksr90j6mlape75ulsgp 553553 553550 2026-08-30T10:58:16Z Persino 2851 553553 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local args={ ["argument 1"]="wartość1", ["argument 2"]="wartość2", ["argument 3"]="wartość3", }; local wikikod=p["ŹródłoLua"](frame,args); return wikikod; end; p["ŹródłoLua"]=function(frame,args) local parametry_modul=require("Module:Parametry"); local IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu; local __next=IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(args); local __metatablica={ __pairs=function(tablica) return __next,tablica,nil; end, }; setmetatable(args,__metatablica); local str=""; for name,value in pairs(args)do name=mw.ustring.gsub(name," ","_"); value=mw.ustring.gsub(value,"\"","\\\""); str=str..((str~="")and "\n" or "")..name.."=\""..value.."\";"; end; local tab_znak={ ["="]="{{=}}", ["|"]="{{!}}", }; str=mw.ustring.gsub(str,"[%=%|]",function(znak) return tab_znak[znak] or znak; end) str="{{ŹródłoLua|"..str.."}}"; local wikikod=frame:preprocess{text=str,}; return wikikod; end; return p; cemf3rv5tlds1mow8jat602x56w2jek Moduł:Wikibooks/Przykład/ŹródłoLua/opis 828 64050 553529 2026-08-30T09:27:27Z Persino 2851 Utworzono nową stronę „== Użycie == Funkcja służy do wyświetlania w szablonie {{s|ŹródłoLua}} pewnej tabelki o pewnych kluczach i ich wartościach, rozkładając je na czynniki pierwsze. == Przykład == ; Przykład{{dk}} * {{m|Wikibooks/Przykład/ŹródłoLua|Przykład}}: ; Wynik{{dk}} {{#invoke:Wikibooks/Przykład/ŹródłoLua|Przykład}}.” 553529 wikitext text/x-wiki == Użycie == Funkcja służy do wyświetlania w szablonie {{s|ŹródłoLua}} pewnej tabelki o pewnych kluczach i ich wartościach, rozkładając je na czynniki pierwsze. == Przykład == ; Przykład{{dk}} * {{m|Wikibooks/Przykład/ŹródłoLua|Przykład}}: ; Wynik{{dk}} {{#invoke:Wikibooks/Przykład/ŹródłoLua|Przykład}}. 9cgkttkt5tzvtt4gdhn5vhpn9zxjhgk 553532 553529 2026-08-30T09:43:52Z Persino 2851 553532 wikitext text/x-wiki == Użycie == Funkcja służy do wyświetlania w szablonie {{s|ŹródłoLua}} pewnej tabelki o pewnych kluczach i ich wartościach, rozkładając je na czynniki pierwsze. == Przykład == ; Przykład{{dk}} * {{m|Wikibooks/Przykład/ŹródłoLua|Przykład}}: ; Wynik{{dk}} {{#invoke:Wikibooks/Przykład/ŹródłoLua|Przykład}}. {{BrClear}} <includeonly> {{Kategoria|Szablony, moduły Lua w Scribunto, przykładów stron projektu}} </includeonly> pco2uwj08c01hxexnfdcdhl5xe94v8n 553533 553532 2026-08-30T09:56:17Z Persino 2851 553533 wikitext text/x-wiki == Opis == Funkcja w module do prezentacji wyników parametrów o pewnych nazwach i ich wartościach. == Użycie == Funkcja służy do wyświetlania w szablonie {{s|ŹródłoLua}} pewnej tabelki o pewnych kluczach i ich wartościach, rozkładając je na czynniki pierwsze. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ŹródłoLua"]=function(frame,args)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki funkcji tablicy transportu modułu, * {{Code|args}} - pewna tablica z parametrami nazwanymi. : Parametr {{Code|frame}} służy do rozwijania szablonu podświetlania składni {{s|ŹródłoLua}}, na podstawie funkcji, języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, takiej: {{LzLua|frame:preprocess}}. == Przykład == ; Przykład{{dk}} * {{m|Wikibooks/Przykład/ŹródłoLua|Przykład}}: ; Wynik{{dk}} {{#invoke:Wikibooks/Przykład/ŹródłoLua|Przykład}}. {{BrClear}} <includeonly> {{Kategoria|Szablony, moduły Lua w Scribunto, przykładów stron projektu}} </includeonly> 6ojl1syo4ui7kpavdx6fn8z4es6urwa 553534 553533 2026-08-30T09:57:19Z Persino 2851 /* Użycie */ 553534 wikitext text/x-wiki == Opis == Funkcja w module do prezentacji wyników parametrów o pewnych nazwach i ich wartościach. == Użycie == Funkcja służy do wyświetlania w szablonie {{s|ŹródłoLua}} pewnej tabelki o pewnych kluczach i ich wartościach, rozkładając je na czynniki pierwsze. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ŹródłoLua"]=function(frame,args)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} {{Patrz|frame}} - tablica ramki funkcji tablicy transportu modułu, * {{Code|args}} - pewna tablica z parametrami nazwanymi. : Parametr {{Code|frame}} {{LinkPatrz|frame}} służy do rozwijania szablonu podświetlania składni {{s|ŹródłoLua}}, na podstawie funkcji, języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, takiej: {{LzLua|frame:preprocess}}. == Przykład == ; Przykład{{dk}} * {{m|Wikibooks/Przykład/ŹródłoLua|Przykład}}: ; Wynik{{dk}} {{#invoke:Wikibooks/Przykład/ŹródłoLua|Przykład}}. {{BrClear}} <includeonly> {{Kategoria|Szablony, moduły Lua w Scribunto, przykładów stron projektu}} </includeonly> 7a7zgnyper7xsaszs7dzq0sfezs8hma 553535 553534 2026-08-30T10:04:07Z Persino 2851 /* Przykład */ 553535 wikitext text/x-wiki == Opis == Funkcja w module do prezentacji wyników parametrów o pewnych nazwach i ich wartościach. == Użycie == Funkcja służy do wyświetlania w szablonie {{s|ŹródłoLua}} pewnej tabelki o pewnych kluczach i ich wartościach, rozkładając je na czynniki pierwsze. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ŹródłoLua"]=function(frame,args)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} {{Patrz|frame}} - tablica ramki funkcji tablicy transportu modułu, * {{Code|args}} - pewna tablica z parametrami nazwanymi. : Parametr {{Code|frame}} {{LinkPatrz|frame}} służy do rozwijania szablonu podświetlania składni {{s|ŹródłoLua}}, na podstawie funkcji, języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, takiej: {{LzLua|frame:preprocess}}. == Przykład == ; Przykład{{dk}} * {{m|Wikibooks/Przykład/ŹródłoLua|Przykład}} ; Wynik{{dk}} {{#invoke:Wikibooks/Przykład/ŹródłoLua|Przykład}}. Wynik użyty w przykładzie w tej ramce, jest w kodzie modułu: {{m|Wikibooks/Przykład/ŹródłoLua}}. == Zobacz też == * {{s|ŹródłoLua}} - szablon do wyświetlania kodu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. {{BrClear}} <includeonly> {{Kategoria|Szablony, moduły Lua w Scribunto, przykładów stron projektu}} </includeonly> 2ao3i05a2c08wm81iynjmr74ru3r31c 553536 553535 2026-08-30T10:08:17Z Persino 2851 /* Zobacz też */ 553536 wikitext text/x-wiki == Opis == Funkcja w module do prezentacji wyników parametrów o pewnych nazwach i ich wartościach. == Użycie == Funkcja służy do wyświetlania w szablonie {{s|ŹródłoLua}} pewnej tabelki o pewnych kluczach i ich wartościach, rozkładając je na czynniki pierwsze. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ŹródłoLua"]=function(frame,args)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} {{Patrz|frame}} - tablica ramki funkcji tablicy transportu modułu, * {{Code|args}} - pewna tablica z parametrami nazwanymi. : Parametr {{Code|frame}} {{LinkPatrz|frame}} służy do rozwijania szablonu podświetlania składni {{s|ŹródłoLua}}, na podstawie funkcji, języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, takiej: {{LzLua|frame:preprocess}}. == Przykład == ; Przykład{{dk}} * {{m|Wikibooks/Przykład/ŹródłoLua|Przykład}} ; Wynik{{dk}} {{#invoke:Wikibooks/Przykład/ŹródłoLua|Przykład}}. Wynik użyty w przykładzie w tej ramce, jest w kodzie modułu: {{m|Wikibooks/Przykład/ŹródłoLua}}. == Zobacz też == * {{s|ŹródłoLua}} - szablon do wyświetlania kodu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. * {{s|ŹródłoKodu}} - ogólny szablon kombajn do wyświetlania, jednego z wielu języków programowania, kodu z podświetlaniem składni, z niego korzysta szablon {{s|ŹródłoLua}} do swojej definicji. Szaablon wykorzystuje znacznik mechanizmu {{NS|l=tak|w=tak|k=mw}} o postaci: {{Tag|syntaxhighlight|parametry=lang="..."}}. {{BrClear}} <includeonly> {{Kategoria|Szablony, moduły Lua w Scribunto, przykładów stron projektu}} </includeonly> f6673rylmn1s5px9vhbuco8jj6pj1ex 553551 553536 2026-08-30T10:50:21Z Persino 2851 /* Zobacz też */ 553551 wikitext text/x-wiki == Opis == Funkcja w module do prezentacji wyników parametrów o pewnych nazwach i ich wartościach. == Użycie == Funkcja służy do wyświetlania w szablonie {{s|ŹródłoLua}} pewnej tabelki o pewnych kluczach i ich wartościach, rozkładając je na czynniki pierwsze. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ŹródłoLua"]=function(frame,args)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} {{Patrz|frame}} - tablica ramki funkcji tablicy transportu modułu, * {{Code|args}} - pewna tablica z parametrami nazwanymi. : Parametr {{Code|frame}} {{LinkPatrz|frame}} służy do rozwijania szablonu podświetlania składni {{s|ŹródłoLua}}, na podstawie funkcji, języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, takiej: {{LzLua|frame:preprocess}}. == Przykład == ; Przykład{{dk}} * {{m|Wikibooks/Przykład/ŹródłoLua|Przykład}} ; Wynik{{dk}} {{#invoke:Wikibooks/Przykład/ŹródłoLua|Przykład}}. Wynik użyty w przykładzie w tej ramce, jest w kodzie modułu: {{m|Wikibooks/Przykład/ŹródłoLua}}. == Zobacz też == * {{s|ŹródłoLua}} - szablon do wyświetlania kodu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, zbudowany w oparciu o: {{s|ŹródłoKodu}}. * {{s|ŹródłoKodu}} - ogólny szablon kombajn do wyświetlania, jednego z wielu języków programowania, kodu z podświetlaniem składni, z niego korzysta szablon {{s|ŹródłoLua}} do swojej definicji. Szaablon wykorzystuje znacznik mechanizmu {{NS|l=tak|w=tak|k=mw}} o postaci: {{Tag|syntaxhighlight|parametry=lang="..."}}. {{BrClear}} <includeonly> {{Kategoria|Szablony, moduły Lua w Scribunto, przykładów stron projektu}} </includeonly> pmya9lfrsj5earfou93jh7qx6kh9cxg 553552 553551 2026-08-30T10:50:47Z Persino 2851 /* Zobacz też */ 553552 wikitext text/x-wiki == Opis == Funkcja w module do prezentacji wyników parametrów o pewnych nazwach i ich wartościach. == Użycie == Funkcja służy do wyświetlania w szablonie {{s|ŹródłoLua}} pewnej tabelki o pewnych kluczach i ich wartościach, rozkładając je na czynniki pierwsze. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ŹródłoLua"]=function(frame,args)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} {{Patrz|frame}} - tablica ramki funkcji tablicy transportu modułu, * {{Code|args}} - pewna tablica z parametrami nazwanymi. : Parametr {{Code|frame}} {{LinkPatrz|frame}} służy do rozwijania szablonu podświetlania składni {{s|ŹródłoLua}}, na podstawie funkcji, języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, takiej: {{LzLua|frame:preprocess}}. == Przykład == ; Przykład{{dk}} * {{m|Wikibooks/Przykład/ŹródłoLua|Przykład}} ; Wynik{{dk}} {{#invoke:Wikibooks/Przykład/ŹródłoLua|Przykład}}. Wynik użyty w przykładzie w tej ramce, jest w kodzie modułu: {{m|Wikibooks/Przykład/ŹródłoLua}}. == Zobacz też == * {{s|ŹródłoLua}} - szablon do wyświetlania kodu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, zbudowany w oparciu o: {{s|ŹródłoKodu}}. * {{s|ŹródłoKodu}} - ogólny szablon kombajn do wyświetlania, jednego z wielu języków programowania, kodu z podświetlaniem składni. Szablon wykorzystuje znacznik mechanizmu {{NS|l=tak|w=tak|k=mw}} o postaci: {{Tag|syntaxhighlight|parametry=lang="..."}}. {{BrClear}} <includeonly> {{Kategoria|Szablony, moduły Lua w Scribunto, przykładów stron projektu}} </includeonly> l1jtku5hmobaufkcwyr4mw5pum9ow3w Moduł:Wikibooks/Przykład/Html/AdresDomniemanieBezProtokolarnyEncodeURL/Kod 1/opis 828 64051 553555 2026-08-30T11:06:02Z Persino 2851 Utworzono nową stronę „; Przykład z wykorzystaniem tego modułu{{dk}} {{#invoke:Wikibooks/Przykład/Html/AdresDomniemanieBezProtokolarnyEncodeURL/Kod_1|Przykład}}” 553555 wikitext text/x-wiki ; Przykład z wykorzystaniem tego modułu{{dk}} {{#invoke:Wikibooks/Przykład/Html/AdresDomniemanieBezProtokolarnyEncodeURL/Kod_1|Przykład}} 8yfayub2mldzj8101sqarle7p1g7fk4 Moduł:Wikibooks/Przykład/Html/AdresProjektuEncodeHtml/Kod 1/opis 828 64052 553557 2026-08-30T11:13:47Z Persino 2851 Utworzono nową stronę „; Przykład z wykorzystaniem tego modułu{{dk}} {{#invoke:Wikibooks/Przykład/Html/AdresProjektuEncodeHtml/Kod_1|Przykład}}” 553557 wikitext text/x-wiki ; Przykład z wykorzystaniem tego modułu{{dk}} {{#invoke:Wikibooks/Przykład/Html/AdresProjektuEncodeHtml/Kod_1|Przykład}} 61o2kb9pbdj4dwnop7ukkakjvwtdu79 Moduł:Wikibooks/Przykład/Html/DecodeHashKoduHtmlTekstu/Kod 1/opis 828 64053 553559 2026-08-30T11:19:09Z Persino 2851 Utworzono nową stronę „; Przykład z wykorzystaniem tego modułu{{dk}} {{#invoke:Wikibooks/Przykład/Html/DecodeHashKoduHtmlTekstu/Kod_1|Przykład}}” 553559 wikitext text/x-wiki ; Przykład z wykorzystaniem tego modułu{{dk}} {{#invoke:Wikibooks/Przykład/Html/DecodeHashKoduHtmlTekstu/Kod_1|Przykład}} tncu880kitl1g6ojy1prw7ku0u17sjh Moduł:Wikibooks/Przykład/Html/DecodeHtml/Kod 1/opis 828 64054 553561 2026-08-30T11:21:35Z Persino 2851 Utworzono nową stronę „; Przykład z wykorzystaniem tego modułu{{dk}} {{#invoke:Wikibooks/Przykład/Html/DecodeHtml/Kod_1|Przykład}}” 553561 wikitext text/x-wiki ; Przykład z wykorzystaniem tego modułu{{dk}} {{#invoke:Wikibooks/Przykład/Html/DecodeHtml/Kod_1|Przykład}} huuqsceoh4bmwsifpq2zdg7oswxyeai Moduł:Wikibooks/Przykład/Html/DecodeKoduHTMLZnaku/Kod 1/opis 828 64055 553563 2026-08-30T11:23:52Z Persino 2851 Utworzono nową stronę „; Przykład z wykorzystaniem tego modułu{{dk}} {{#invoke:Wikibooks/Przykład/Html/DecodeKoduHTMLZnaku/Kod_1|Przykład}}” 553563 wikitext text/x-wiki ; Przykład z wykorzystaniem tego modułu{{dk}} {{#invoke:Wikibooks/Przykład/Html/DecodeKoduHTMLZnaku/Kod_1|Przykład}} k987cdgfckkyubnq2m5v7brziaw7r6s Moduł:Wikibooks/Przykład/Html/DecodeTempHashKoduHtmlTekstu/Kod 1/opis 828 64056 553565 2026-08-30T11:26:43Z Persino 2851 Utworzono nową stronę „; Przykład z wykorzystaniem tego modułu{{dk}} {{#invoke:Wikibooks/Przykład/Html/DecodeTempHashKoduHtmlTekstu/Kod_1|Przykład}}” 553565 wikitext text/x-wiki ; Przykład z wykorzystaniem tego modułu{{dk}} {{#invoke:Wikibooks/Przykład/Html/DecodeTempHashKoduHtmlTekstu/Kod_1|Przykład}} n3clmbxqxqmxcd6l4e6ayj45p3hf97x Moduł:Wikibooks/Przykład/Html/DecodeWiki/Kod 1/opis 828 64057 553568 2026-08-30T11:34:40Z Persino 2851 Utworzono nową stronę „; Przykład z wykorzystaniem tego modułu{{dk}} {{#invoke:Wikibooks/Przykład/Html/DecodeWiki/Kod_1|Przykład}}” 553568 wikitext text/x-wiki ; Przykład z wykorzystaniem tego modułu{{dk}} {{#invoke:Wikibooks/Przykład/Html/DecodeWiki/Kod_1|Przykład}} sw7tr33j1tczvom3bqbs8a0kob8jods Moduł:Wikibooks/Przykład/Html/EncodeElementyAdresuStrony/Kod 1/opis 828 64058 553570 2026-08-30T11:37:27Z Persino 2851 Utworzono nową stronę „; Przykład z wykorzystaniem tego modułu{{dk}} {{#invoke:Wikibooks/Przykład/Html/EncodeElementyAdresuStrony/Kod_1|Przykład}}” 553570 wikitext text/x-wiki ; Przykład z wykorzystaniem tego modułu{{dk}} {{#invoke:Wikibooks/Przykład/Html/EncodeElementyAdresuStrony/Kod_1|Przykład}} 063gbal4asmxa15dnc3x6gy540560kj Moduł:Wikibooks/Przykład/Html/EncodeHashKoduHtmlTekstu/Kod 1/opis 828 64059 553572 2026-08-30T11:40:09Z Persino 2851 Utworzono nową stronę „; Przykład z wykorzystaniem tego modułu{{dk}} {{#invoke:Wikibooks/Przykład/Html/EncodeHashKoduHtmlTekstu/Kod_1|Przykład}}” 553572 wikitext text/x-wiki ; Przykład z wykorzystaniem tego modułu{{dk}} {{#invoke:Wikibooks/Przykład/Html/EncodeHashKoduHtmlTekstu/Kod_1|Przykład}} idj44zx5vpp232hsn0m8av38ku26uvt Moduł:Wikibooks/Przykład/Html/EncodeHtml/Kod 1/opis 828 64060 553574 2026-08-30T11:42:38Z Persino 2851 Utworzono nową stronę „; Przykład z wykorzystaniem tego modułu{{dk}} {{#invoke:Wikibooks/Przykład/Html/AdresDomniemanieBezProtokolarnyEncodeURL/Kod_1|Przykład}}” 553574 wikitext text/x-wiki ; Przykład z wykorzystaniem tego modułu{{dk}} {{#invoke:Wikibooks/Przykład/Html/AdresDomniemanieBezProtokolarnyEncodeURL/Kod_1|Przykład}} 8yfayub2mldzj8101sqarle7p1g7fk4 553575 553574 2026-08-30T11:43:02Z Persino 2851 553575 wikitext text/x-wiki ; Przykład z wykorzystaniem tego modułu{{dk}} {{#invoke:Wikibooks/Przykład/Html/EncodeHtml/Kod_1|Przykład}} f1f60dytsmk27u5ut4des7nbj0q2pcp Moduł:Wikibooks/Przykład/Html/EncodeId/Kod 1/opis 828 64061 553577 2026-08-30T11:45:50Z Persino 2851 Utworzono nową stronę „; Przykład z wykorzystaniem tego modułu{{dk}} {{#invoke:Wikibooks/Przykład/Html/EncodeId/Kod_1|Przykład}}” 553577 wikitext text/x-wiki ; Przykład z wykorzystaniem tego modułu{{dk}} {{#invoke:Wikibooks/Przykład/Html/EncodeId/Kod_1|Przykład}} mjg9pfymbgs8jndu1c9uzvdggr6941l Moduł:Wikibooks/Przykład/Html/EncodeParametryHtml/Kod 1/opis 828 64062 553579 2026-08-30T11:47:53Z Persino 2851 Utworzono nową stronę „; Przykład z wykorzystaniem tego modułu{{dk}} {{#invoke:Wikibooks/Przykład/Html/EncodeParametryHtml/Kod_1|Przykład}}” 553579 wikitext text/x-wiki ; Przykład z wykorzystaniem tego modułu{{dk}} {{#invoke:Wikibooks/Przykład/Html/EncodeParametryHtml/Kod_1|Przykład}} r4iga9fobblgaiusl3jkkektmo39il9 Moduł:Wikibooks/Przykład/Html/EncodeParametryURL/Kod 1/opis 828 64063 553581 2026-08-30T11:49:52Z Persino 2851 Utworzono nową stronę „; Przykład z wykorzystaniem tego modułu{{dk}} {{#invoke:Wikibooks/Przykład/Html/EncodeParametryURL/Kod_1|Przykład}}” 553581 wikitext text/x-wiki ; Przykład z wykorzystaniem tego modułu{{dk}} {{#invoke:Wikibooks/Przykład/Html/EncodeParametryURL/Kod_1|Przykład}} 4vhf2x8vqfbus7t3pt89vpxsfyeiyhm Moduł:Wikibooks/Przykład/Html/EncodePodstawoweHtmlTekstu/Kod 1/opis 828 64064 553583 2026-08-30T11:52:17Z Persino 2851 Utworzono nową stronę „; Przykład z wykorzystaniem tego modułu{{dk}} {{#invoke:Wikibooks/Przykład/Html/EncodePodstawoweHtmlTekstu/Kod_1|Przykład}}” 553583 wikitext text/x-wiki ; Przykład z wykorzystaniem tego modułu{{dk}} {{#invoke:Wikibooks/Przykład/Html/EncodePodstawoweHtmlTekstu/Kod_1|Przykład}} ihm6uce5fb4luazd5191158jx58xdpf Moduł:Wikibooks/Przykład/Html/EncodeSpecjalneZnakiHtml/Kod 1/opis 828 64065 553585 2026-08-30T11:54:56Z Persino 2851 Utworzono nową stronę „; Przykład z wykorzystaniem tego modułu{{dk}} {{#invoke:Wikibooks/Przykład/Html/EncodeSpecjalneZnakiHtml/Kod_1|Przykład}}” 553585 wikitext text/x-wiki ; Przykład z wykorzystaniem tego modułu{{dk}} {{#invoke:Wikibooks/Przykład/Html/EncodeSpecjalneZnakiHtml/Kod_1|Przykład}} 4j805zcyyo1yjp33hgnekoyae0bhhxe