Wikibooks
plwikibooks
https://pl.wikibooks.org/wiki/Wikibooks:Strona_g%C5%82%C3%B3wna
MediaWiki 1.47.0-wmf.22
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
Wikijunior:Języki
104
14451
558314
548774
2026-10-02T14:43:27Z
~2026-53050-59
38911
558314
wikitext
text/x-wiki
{{status|-100%|junior=Świat ludzi}}
{{Plik|plik=Languages_Graphic.png|pozycja=centruj|rozmiar=300px}}
Niniejszy podręcznik jest skierowany do dzieci w wieku od 8 do 15 lat i ma przybliżyć różne języki świata.<br>
Celem jest przedstawienie podstawowych informacji o tych językach; szczególnie tych, z którymi młodsze dzieci nie mają jeszcze styczności, a które mogą się im przydać w przyszłości.
Przykładowe tłumaczenia: <br>
{| class="wikitable"
! Zwrot !! Wymowa !! Znaczenie (polski) !! Opis
|-
| こんにちは || [kon’nichiwa] || dzień dobry || japońskie przywitanie w ciągu dnia
|-
| КАСПЕР || [kaspier] || Kacper || imię własne w rosyjskiej transkrypcji
|-
| Schmetterling || [szmeterlin] || motyl || niemiecka nazwa owada
|-
| अलविदा || [alvida] || do widzenia || hindi, pożegnanie
|}
{{T|Wikijunior:Języki stopka}}
Ludzie posługują się ok. 3000 języków. Dzielimy je na liczne grupy oraz tzw. rodziny językowe. Językami: chińskim, hindi, angielskim, niemieckim, hiszpańskim, francuskim, rosyjskim i arabskim posługują się poszczególne organizacje wchodzące w skład ONZ. Języki te zostały zatem zakwalifikowane do tzw. języków oficjalnych. Inną grupę stanowią języki, które nie maja tak dużego zasięgu oddziaływania takie jak np. polski, bułgarski, włoski, węgierski, estoński, szwedzki, portugalski. Łaciną i klasyczną greką posługiwano się w czasach starożytnych. Obecnie jednak języki te wyszły z użycia i zaliczane są do tzw. języków martwych.
Języki ałtajskie – języki Azji północnej, środkowej i Turcji, ok. 6% ziemskiej populacji, przez niektórych językoznawców rodzina ałtajska jest uznawana za ligę językową a jej grupy klasyfikowane są jako odrębne rodziny.
Poza językami klasycznymi, to znaczy takimi, gdzie ludzie porozumiewają się za pomocą głosu, istnieje także język migowy, który służy do komunikacji pomiędzy osobami niemymi i nie słyszącymi. Do porozumiewania się językiem migowym służą gesty rękoma i dłońmi, oraz kombinacje tych gestów.
fg8dl3w635zjl68x3700xztrchytt10
Moduł:StronicowyParser/ZbieranieDanychStron
828
55009
558357
557640
2026-10-02T20:14:52Z
Persino
2851
558357
Scribunto
text/plain
local p={};
function p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, czy_artykul_korzystany,tablica_zmiennych,czy_szablon_pudelkowy_strony_zbiorczej)
local function __FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if(not self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni])then self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]={};end;
local tablica_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni];
if(not tablica_przestrzeni[nazwa_przestrzeni_ksiazki])then tablica_przestrzeni[nazwa_przestrzeni_ksiazki]={};end;
local tablica_przestrzeni_ksiazki=tablica_przestrzeni[nazwa_przestrzeni_ksiazki];
if(not tablica_przestrzeni_ksiazki[nazwa_ksiazki])then tablica_przestrzeni_ksiazki[nazwa_ksiazki]={};end;
local tablica_ksiazki=tablica_przestrzeni_ksiazki[nazwa_ksiazki];
if(not tablica_ksiazki.lista_podstron_woluminu)then tablica_ksiazki.lista_podstron_woluminu={};end;
if(nazwa_artykulu)then
if(not tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu])then tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu]={};end;
local artykul_analizowany=tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu];
return tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany;
else
return tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki;
end;
end;
local korzystany_wolumin=false;
local function __FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if(not czy_artykul_korzystany)then
if(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni and self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu and self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu and self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu)then
if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu==nazwa_przestrzeni_ksiazki)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu==nazwa_ksiazki))then
korzystany_wolumin=true;
if(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu)then
return 0,nil,nil,nil,nil,nil,self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron,false;
else
if(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=true;
end;
end;
else
if(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=true;
end;
end;
else
return nil;
end;
else
korzystany_wolumin=true;
end;
if(self.tabela_listy_danych_analizy_ksiazki)then
if(self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron)then
local tabela_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni];
if(tabela_przestrzeni)then
local tabela_przestrzeni_ksiazki=tabela_przestrzeni[nazwa_przestrzeni_ksiazki];
if(tabela_przestrzeni_ksiazki)then
local tabela_ksiazka=tabela_przestrzeni_ksiazki[nazwa_ksiazki];
if(tabela_ksiazka)then
local lista_artykolow=tabela_ksiazka.lista_podstron_woluminu;
if(lista_artykolow)then
local tabela_artykul=lista_artykolow[nazwa_artykulu];
if(tabela_artykul)then
local dane_zebrane_ze_stron=tabela_artykul.dane_zebrane_ze_stron;
----
if(not czy_artykul_korzystany)then
if(tabela_artykul.TOCSPIS_FUNCTION)then
local wynik=tabela_artykul.TOCSPIS_FUNCTION();
if(wynik)then
tabela_artykul.TOCSPIS_FUNCTION=nil;
end;
end;
end;
return 0,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni,dane_zebrane_ze_stron,true;
end;
end;
end;
end;
end;
else
return nil;
end;
else
return nil;
end;
return true;
end;
local nazwy_modul=require("Module:Nazwy");
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni,dane_zebrane_ze_stron,czy_inna=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local function StronaSubstFunkcja(tabela_artykul,spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if((czy_szablon_pudelkowy_strony_zbiorczej)and(not czy_artykul_korzystany)and(tabela_artykul)and(not tabela_artykul.strona_zbiorcza))then
--local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
local TakFun=function(frame) return "tak";end;local NieFun=function(frame) return "";end;
tabela_artykul.strona_zbiorcza=stronicowyparser_stronasubst_modul.AnalizaStronaSubst(self.tabela_listy_danych_analizy_ksiazki,spis,nil,TakFun,NieFun,nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
end;
end;
if(not wartosc_wyniku)then
return wartosc_wyniku,dane_zebrane_ze_stron,czy_inna;
elseif(wartosc_wyniku==0)then
if(tabela_artykul)then
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku,dane_zebrane_ze_stron,czy_inna;
else
return wartosc_wyniku,dane_zebrane_ze_stron,czy_inna;
end;
end;
----
local pozawoluminowe_strony;
----
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if((nazwa_przestrzeni~=nazwy_np_modul.Main)
and(nazwa_przestrzeni~=nazwy_np_modul.Wikijunior)
and((nazwa_przestrzeni~=nazwy_np_modul.User)or(not mw.ustring.match(nazwa_przestrzeni_ksiazki,"^([^/]+)$")))
and((nazwa_przestrzeni~=nazwy_np_modul.Wikibooks)or(not mw.ustring.match(nazwa_przestrzeni_ksiazki,"^%s*[Bb]rudnopis/([^/]+)$")))
)then
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
pozawoluminowe_strony=true;
end;
----
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local parametry_modul=require("Module:Parametry");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
----
local tekst_rozwiniety_calego_artykulu_ref=nil;
local tablica_analizy_obiektow_strony_dany_modul_ref=nil;
local tablica_danych_parametrow_szablonu_strony_ref=nil;
----
local function InneInformacjePrzebneDoAnalizowanejKsiazki()
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then
if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki))then
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki["CzyArtykułKsiążki"])then self.tabela_listy_danych_analizy_ksiazki["CzyArtykułKsiążki"]="tak";end;
end;
local czy_ksiazka_istnieje_w_tablicy=((tablica_ksiazki)and(tablica_ksiazki.czy_spis_analizowano))and true or false;
if(not czy_ksiazka_istnieje_w_tablicy)then
tablica_ksiazki.czy_spis_analizowano=true;
local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści");
local nazwa_przestrzeni_strona_temp,nazwa_przestrzeni_ksiazki_strona_temp,nazwa_ksiazki_strona_temp;
local tabela_artykulow,tabela_licencji_spisu_tresci,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,adres_ksiazki_glownego_spisu_tresci=stronicowyparser_spistresci_modul.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,czy_artykul_korzystany,function(nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona)
local tablica_przestrzeni_strona=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni_strona];
if(tablica_przestrzeni_strona)then
local tablica_przestrzeni_ksiazki_strona=tablica_przestrzeni_strona[nazwa_przestrzeni_ksiazki_strona];
if(tablica_przestrzeni_ksiazki_strona)then
local tablica_ksiazki_strona=tablica_przestrzeni_ksiazki_strona[nazwa_ksiazki_strona];
if(tablica_ksiazki_strona)then
if(tablica_ksiazki_strona.spis)then
nazwa_przestrzeni_strona_temp,nazwa_przestrzeni_ksiazki_strona_temp,nazwa_ksiazki_strona_temp=nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona;
tablica_ksiazki.spis=tablica_ksiazki_strona.spis;
tablica_ksiazki.licencja=tablica_ksiazki_strona.licencja;
tablica_ksiazki.nazwa_bazowego_spisu=tablica_ksiazki_strona.nazwa_bazowego_spisu;
tablica_ksiazki.tab_inne_spisy=tablica_ksiazki_strona.tab_inne_spisy;
tablica_ksiazki.dodatkowe_strony_woluminu=tablica_ksiazki_strona.dodatkowe_strony_woluminu;
tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy=tablica_ksiazki_strona.adres_woluminu_bazowego_spisu_rzeczy;
tablica_ksiazki.referencja_do_nowej_formy_spisu={tablica_przestrzeni_strona,tablica_przestrzeni_ksiazki_strona,tablica_ksiazki_strona,};
return 1;
end;
end;
end
end;
end,function(tekst_rozwiniety_calego_artykulu_ref_spis,nazwa_przestrzeni_ref_spis,nazwa_przestrzeni_ksiazki_ref_spis,nazwa_ksiazki_ref_spis,nazwa_artykulu_ref_spis,tablica_analizy_obiektow_strony_dany_modul_ref_spis,tablica_danych_parametrow_szablonu_strony_ref_spis)
----
if((nazwa_przestrzeni==nazwa_przestrzeni_ref_spis)and(nazwa_przestrzeni_ksiazki==nazwa_przestrzeni_ksiazki_ref_spis)and(nazwa_ksiazki==nazwa_ksiazki_ref_spis)and(nazwa_artykulu==nazwa_artykulu_ref_spis))then
tekst_rozwiniety_calego_artykulu_ref=tekst_rozwiniety_calego_artykulu_ref_spis;
local parametry_modul=require("Module:Parametry");
tablica_analizy_obiektow_strony_dany_modul_ref=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_analizy_obiektow_strony_dany_modul_ref_spis);
tablica_danych_parametrow_szablonu_strony_ref=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_danych_parametrow_szablonu_strony_ref_spis);
end;
----
end);
local function __FUNKCJA_SPISU(tablica_ksiazki,czy_podac_adres)
tablica_ksiazki.spis=tabela_artykulow;
if(czy_artykul_korzystany)then
tablica_ksiazki.licencja=tabela_licencji_spisu_tresci;
end;
tablica_ksiazki.nazwa_bazowego_spisu=nazwa_glownego_spisu;
tablica_ksiazki.tab_inne_spisy=tab_inne_spisy;
tablica_ksiazki.dodatkowe_strony_woluminu=dodatkowe_artykuly;
tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy=czy_podac_adres and adres_ksiazki_glownego_spisu_tresci or nil;
end;
if(tabela_artykulow==0)then
if(czy_artykul_korzystany)then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"korzystana strona główna nie istnieje");
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"dołączone strony główne nie istnieją",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
end;
elseif(tabela_artykulow)then
if(parametry_modul.TypeTable(tabela_artykulow))then
if(adres_ksiazki_glownego_spisu_tresci)then
__FUNKCJA_SPISU(tablica_ksiazki,true);
local tablica_ksiazki_stara=tablica_ksiazki;
local artykul,kod_wyniku=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,true);
local nazwa_przestrzeni=adres_ksiazki_glownego_spisu_tresci[1];
local nazwa_przestrzeni_ksiazki=adres_ksiazki_glownego_spisu_tresci[2];
local nazwa_ksiazki=adres_ksiazki_glownego_spisu_tresci[3];
if((kod_wyniku==1)or(kod_wyniku==2))then
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul);
if(not wartosc_wyniku)then
return wartosc_wyniku,true;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
local nazwa_artykulu=artykul;
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku,true;
end;
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni ,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul);
tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,};
__FUNKCJA_SPISU(tablica_ksiazki,false);
return nil,nil,artykul,kod_wyniku;
elseif((kod_wyniku==3)or(kod_wyniku==4))then
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul);
tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,};
__FUNKCJA_SPISU(tablica_ksiazki,false);
return nil,nil,artykul,kod_wyniku;
end;
else
__FUNKCJA_SPISU(tablica_ksiazki,false);
end;
elseif(tabela_artykulow~=1)then
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(not wartosc_wyniku)then
return wartosc_wyniku,true;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku,true;
end;
end;
else
if(czy_artykul_korzystany)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak spisów treści do korzystanych książek na ich stronach głównych"))then
if(((self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu=="")and(nazwa_artykulu~=""))or(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu~=""))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak spisów treści do korzystanych książek na ich stronach głównych");
end;
end;
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"brak spisów treści do dołączonych książek na ich stronach głównych",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
end;
end;
end;
end;
end;
end;
----
local wartosc_wyniku,wynik_bledu,artykul_bazowy,kod_wyniku_bazowy=InneInformacjePrzebneDoAnalizowanejKsiazki();
if(wynik_bledu)then return wartosc_wyniku;end;
local kod_wyniku_przekierowan=kod_wyniku_bazowy;
----
--if((not tablica_przestrzeni)or(not tablica_przestrzeni_ksiazki)or(not tablica_ksiazki)or(not artykul_analizowany))then
-- tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
--end;
----
if((tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy)and(kod_wyniku_bazowy))--[[and((kod_wyniku_bazowy==1)or(kod_wyniku_bazowy==2))]]then
----
nazwa_przestrzeni=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[1];
nazwa_przestrzeni_ksiazki=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[2];
nazwa_ksiazki=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[3];
nazwa_artykulu=artykul_bazowy;
----
tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki=tablica_ksiazki.referencja_do_nowej_formy_spisu[1],tablica_ksiazki.referencja_do_nowej_formy_spisu[2],tablica_ksiazki.referencja_do_nowej_formy_spisu[3];
end;
local tabela_artykulow=tablica_ksiazki.spis;
if(tabela_artykulow)then
local nazwa_glownego_spisu=tablica_ksiazki.nazwa_bazowego_spisu;
local tab_inne_spisy=tablica_ksiazki.tab_inne_spisy;
local dodatkowe_artykuly=tablica_ksiazki.dodatkowe_strony_woluminu
local artykul,kod_wyniku=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,false);
if(kod_wyniku)then
nazwa_artykulu=artykul;
tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
end;
kod_wyniku_przekierowan=kod_wyniku_przekierowan or kod_wyniku;
end;
local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local PrzekierownieAwaryjne=function()
if(not kod_wyniku_przekierowan)then
--local artykul2,kod_wyniku2=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,true);
local techniczne_modul=require("Module:Techniczne");
local strona=techniczne_modul.PrzekierowanieDoStrony(nazwa_modulu);
if(strona)then
if(strona~=nazwa_modulu)then
----
local tabela_nazw={};
nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw);
nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw);
nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw) or nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw));
nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazwa);
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(not wartosc_wyniku)then
return wartosc_wyniku;
elseif(wartosc_wyniku==0)then
if(tabela_artykul)then
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku;
else
return wartosc_wyniku;
end;
end;
tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
nazwa_modulu=strona;
else
return 0;
end;
end;
end;
end;
local wynik=PrzekierownieAwaryjne();
if(czy_artykul_korzystany)then
self.nazwa_modulu_biezaca=nazwa_modulu;
end;
if(wynik)then return wynik;end;
----
if(czy_artykul_korzystany)then
if((not self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu))then
self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni=nazwa_przestrzeni;
self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu=nazwa_przestrzeni_ksiazki;
self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu=nazwa_ksiazki;
self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu=nazwa_artykulu;
end;
end;
local nazwa_modulu_aktualna_czy_biezaca=self.tabela_listy_danych_analizy_ksiazki.alternatywna and nazwy_modul["NazwaModułu"](self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu) or nazwa_modulu;
-- przydzielanie tablicy
if(czy_artykul_korzystany)then
artykul_analizowany.artykul_biezacy=true;
tablica_ksiazki.ksiazka_analizowana=true;
end;
--koniec
--local iterator=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,"{{[^{}]-}}");
if(not tablica_zmiennych)then tablica_zmiennych={};end;
if(not tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)then tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2={};end;
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
for _,element_w_tablicy_obiekt in pairs(stronicowyparser_obiekty_modul.tablica_obiektowych_form)do
local CzyLink=element_w_tablicy_obiekt.CzyLink;
local CzyNum=element_w_tablicy_obiekt.CzyNum;
local wartosc=element_w_tablicy_obiekt[1];
tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[wartosc]={CzyLink=CzyLink,CzyNum=CzyNum,};
if(czy_artykul_korzystany)then tablica_zmiennych.linkobiekt[wartosc]={CzyLink=CzyLink,CzyNum=CzyNum;};end;
end;
local function StronaZbiorcza()
if(czy_artykul_korzystany)then
local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
local TakFun=function(frame) return true;end;local NieFun=function(frame) return nil;end;
local wynik=stronicowyparser_stronasubst_modul.AnalizaStronaSubst(self.tabela_listy_danych_analizy_ksiazki,tablica_ksiazki.spis,nil,TakFun,NieFun,nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
artykul_analizowany.strona_zbiorcza=(wynik and "tak" or "");
return wynik;
end;
return nil;
end;
local strona_zbiorcza=StronaZbiorcza();
local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
local szablonowe_modul=require("Module:Szablonowe");
local nazwa_modulu_aktualna_czy_biezaca_szablonowa=szablonowe_modul["SzablonowaKompletnaNazwaStrony"](nazwa_modulu_aktualna_czy_biezaca);
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
----
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony;
if((not tekst_rozwiniety_calego_artykulu_ref)or(not tablica_analizy_obiektow_strony_dany_modul_ref)or(not tablica_danych_parametrow_szablonu_strony_ref))then
tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,(((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.inna_strona_aktualna_niz_biezaca))and true or nil),
nil)
else
tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=tekst_rozwiniety_calego_artykulu_ref,tablica_analizy_obiektow_strony_dany_modul_ref,tablica_danych_parametrow_szablonu_strony_ref;
end;
----
if(not czy_artykul_korzystany)then
if(not tekst_rozwiniety_calego_artykulu)then return 0;end;
end;
if(czy_artykul_korzystany)then
if(not tekst_rozwiniety_calego_artykulu)then
if(strona_zbiorcza)then
self.tabela_listy_danych_analizy_ksiazki["CzyStronaSubst"]="tak";
end;
return nil;
end;
end;
local parametry_modul=require("Module:Parametry");
if((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.inna_strona_aktualna_niz_biezaca))then
local aktualna_nazwa_modulu;local aktualna_nazwa_modulu_szablonowa;
if(nazwa_modulu_aktualna_czy_biezaca)then
aktualna_nazwa_modulu=nazwa_modulu_aktualna_czy_biezaca;
aktualna_nazwa_modulu_szablonowa=nazwa_modulu_aktualna_czy_biezaca_szablonowa;
else
aktualna_nazwa_modulu=nazwy_modul["NazwaModułu"](self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu);
aktualna_nazwa_modulu_szablonowa=szablonowe_modul["SzablonowaKompletnaNazwaStrony"](aktualna_nazwa_modulu);
end;
local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(self,aktualna_nazwa_modulu,aktualna_nazwa_modulu_szablonowa);
if(tekst)then
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,aktualna_nazwa_modulu);
local tablica_danych_parametrow_szablonu_strony={};
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,aktualna_nazwa_modulu_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(stronicowyparser_obiekty_modul.strona_start_ze_spisem_rzeczy_strony[nazwa_szablonu])then
self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak";
self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
return true;
elseif(stronicowyparser_obiekty_modul.strona_start[nazwa_szablonu])then
self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak";
self.tabela_listy_danych_analizy_ksiazki.formatowanie=tabela_parametrow_szablonu["formatowanie"];
local boczne_menu=tabela_parametrow_szablonu["boczne menu"] or "";
local spis_tresci=tabela_parametrow_szablonu["spis treści"] or "TOC";
if((parametry_modul.CzyTak(boczne_menu))or(parametry_modul.CzyTak(spis_tresci)))then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
end;
return true;
end;
end);
if(wynik)then break;end;
end;
end;
end;
end;
local uzyskano_w_wyniku_parsowania_wywolanie_szablonu;
local analiza_stron_korzystanych_zbiorczych=nil;
local stronastart=nil;
----
local tablica_obiekty=stronicowyparser_obiekty_modul.obiekty;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty;
local format_elementowy_referencji_obiektowy=stronicowyparser_obiekty_modul.format_elementowy_referencji_obiektowy;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
local szablony_wykorzystywane_przez_strony_zbiorcze=stronicowyparser_obiekty_modul.szablony_wykorzystywane_przez_strony_zbiorcze;
local format_elementowy_obiektowy=stronicowyparser_obiekty_modul.format_elementowy_obiektowy;
local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty;
local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_naglowka=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu;
local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
----
local strona_start=stronicowyparser_obiekty_modul.strona_start;
local strona_start_ze_spisem_rzeczy_strony=stronicowyparser_obiekty_modul.strona_start_ze_spisem_rzeczy_strony;
local strona_start_inne=stronicowyparser_obiekty_modul.strona_start_inne;
local szablony_strony_zbiorczej=stronicowyparser_obiekty_modul.strona_zbiorcza;
----
local tab_szablony=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_kontenerowe;
local tab_szablony_stronicowe_niekontenerowe=stronicowyparser_obiekty_modul.szablony_stronicowe_niekontenerowe;
local tab_szablony_stronicowe_formatowania_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowe_formatowania_tekstu;
local tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego=stronicowyparser_obiekty_modul.szablony_stronicowe_kontenerowe_formatowania_wzorowego;
----
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local stronicowyparser_zbieraniedanychstron_poprzebne_modul=require("Module:StronicowyParser/ZbieranieDanychStron/Potrzebne");
local tabela_elementow_strony_kodow={};
-- for uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod in iterator do
local function AnalizaParametrowaOrazNazwowaStronicowegoIteratoraSzablonowego(tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer)
if(czy_artykul_korzystany)then
if(tabela_parametrow_szablonu)then
if((not stronastart)and(self.tabela_listy_danych_analizy_ksiazki.formatowanie==nil))then
if(strona_start[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak";
self.tabela_listy_danych_analizy_ksiazki.formatowanie=tabela_parametrow_szablonu["formatowanie"];
stronastart=true;
local boczne_menu=tabela_parametrow_szablonu["boczne menu"] or "";
local spis_tresci=tabela_parametrow_szablonu["spis treści"] or "TOC";
if((parametry_modul.CzyTak(boczne_menu))or(parametry_modul.CzyTak(spis_tresci)))then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
end;
return;
elseif(strona_start_ze_spisem_rzeczy_strony[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak";
self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
stronastart=true;
return;
elseif(strona_start_inne[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak";
self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
stronastart=true;
return;
elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then
analiza_stron_korzystanych_zbiorczych=true;
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"];
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"];
if((not parametry_modul.CzyTak(nazwa_prestreni_nazw))and(not parametry_modul.CzyTak(nazwa_jednostki)))then
return;
end;
end;
elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then
analiza_stron_korzystanych_zbiorczych=true;
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"];
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"];
if((not parametry_modul.CzyTak(nazwa_przestrzeni))and(not parametry_modul.CzyTak(nazwa_jednostki)))then
return;
end;
end;
end;
end;
local plik=mw.ustring.match(nazwa_szablonu_wywolania,"^:");
if(plik==nil)then
if(tabela_parametrow_szablonu)then
if(not parametry_modul.CzyTak(tabela_parametrow_szablonu["bez automatu"]))then
local czy_wypowiedzenie=(nazwa_szablonu_wywolania=="Wypowiedzenie");
local czy_linkobiekt;
local czy_link;local czy_pobierz;
local czy_wypowiedzenie_z_parametrami;
local czy_linkobiekt_z_parametrami;
if(czy_wypowiedzenie)then
czy_linkobiekt=false;
czy_link=false;
czy_pobierz=false;
czy_wypowiedzenie_z_parametrami=parametry_modul.CzyTak(tabela_parametrow_szablonu["rodzaj"]);
else
czy_linkobiekt=(nazwa_szablonu_wywolania=="LinkObiekt");
if(czy_linkobiekt)then
czy_link=true;
czy_pobierz=false;
czy_linkobiekt_z_parametrami=parametry_modul.CzyTak(tabela_parametrow_szablonu["typ"]);
else
czy_link=mw.ustring.match(nazwa_szablonu_wywolania,"^Link");
czy_pobierz=(not czy_link) and mw.ustring.match(nazwa_szablonu_wywolania,"^Pobierz") or nil;
end;
end;
if((not czy_link)and(not czy_pobierz))then
local wartosc_elementu;local numer_uchwytu;
if(not czy_wypowiedzenie_z_parametrami) then
local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty[nazwa_szablonu_wywolania];
if(tab_wartosc_elementu)then
wartosc_elementu=tab_wartosc_elementu[1];
numer_uchwytu=tab_wartosc_elementu[2];
end;
else
local rodzaj=tabela_parametrow_szablonu["rodzaj"];
if(rodzaj)then
wartosc_elementu=format_elementowy_obiektowy[rodzaj] and rodzaj or nil;
if(wartosc_elementu)then
numer_uchwytu=tablica_obiekty[5];
end;
end;
end;
if(wartosc_elementu)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
if(uchwyt_obiektu and (uchwyt_obiektu~=""))then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
end;
stronicowyparser_zbieraniedanychstron_poprzebne_modul.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],tab_numer,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
end;
elseif(czy_artykul_korzystany)then
if(czy_link)then
local wartosc_elementu;
if(not czy_linkobiekt_z_parametrami)then
wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty[nazwa_szablonu_wywolania];
else
local typ=tabela_parametrow_szablonu["typ"];
if(typ)then
typ=format_elementowy_referencji_obiektowy[typ] and typ or nil;
if(typ)then
wartosc_elementu=mw.getContentLanguage():ucfirst(typ);
end;
end;
end;
if(wartosc_elementu)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Link"..wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
stronicowyparser_zbieraniedanychstron_poprzebne_modul.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
else
local wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu[nazwa_szablonu_wywolania];
if(wartosc_elementu)then
local korzystane=self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
stronicowyparser_zbieraniedanychstron_poprzebne_modul.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=korzystane;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
return;
end;
end;
elseif(czy_pobierz)then
local wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu[nazwa_szablonu_wywolania];
if(wartosc_elementu)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
stronicowyparser_zbieraniedanychstron_poprzebne_modul.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie,true);
return;
end;
end;
end;
if(czy_wypowiedzenie)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Obiekt:"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
stronicowyparser_zbieraniedanychstron_poprzebne_modul.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,"Obiekt", czy_artykul_korzystany,tablica_obiekty[5],tab_numer,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
elseif(stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_wprowadzenia_tekstu[nazwa_szablonu_wywolania])then
local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_naglowka[nazwa_szablonu_wywolania];
local wartosc_elementu;local numer_uchwytu;
if(tab_wartosc_elementu)then
wartosc_elementu=tab_wartosc_elementu[1];
numer_uchwytu=tab_wartosc_elementu[2];
end;
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
if(uchwyt_obiektu and (uchwyt_obiektu~=""))then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
end;
local lista_dwuelementowa=stronicowyparser_zbieraniedanychstron_poprzebne_modul.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],tab_numer,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
stronicowyparser_zbieraniedanychstron_poprzebne_modul.UstawUchwytyWeTablicyBezNumeracji(self,tabela_elementow_strony_kodow,wartosc_elementu,lista_dwuelementowa,kod);
if(czy_artykul_korzystany)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
end;
return;
elseif(stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu[nazwa_szablonu_wywolania])then
local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu[nazwa_szablonu_wywolania];
local wartosc_elementu;local numer_uchwytu;
if(tab_wartosc_elementu)then
wartosc_elementu=tab_wartosc_elementu[1];
numer_uchwytu=tab_wartosc_elementu[2];
end;
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
if(uchwyt_obiektu and (uchwyt_obiektu~=""))then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
end;
local lista_dwuelementowa=stronicowyparser_zbieraniedanychstron_poprzebne_modul.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],tab_numer,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
if(lista_dwuelementowa)then
local stronicowyparser_szablonytekstu_modul=require("Module:StronicowyParser/SzablonyTekstu");
local tekst=stronicowyparser_szablonytekstu_modul.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu);
local bez_preprocess=stronicowyparser_szablonytekstu_modul.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu);
local czy_bez_preprocess=parametry_modul.CzyTak(bez_preprocess);
if(tekst)then
----
local tekst_stare=tekst;
local tablica_analizy_obiektow_strony_dany_modul_stare=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_analizy_obiektow_strony_dany_modul);
local tablica_danych_parametrow_szablonu_strony_stare=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_danych_parametrow_szablonu_strony);
local tabela_parametrow_szablonu_stare=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tabela_parametrow_szablonu);
----
local tekst_szablon=stronicowyparser_szablonytekstu_modul.PreparowanieSzablonoweLinkoweSzablonuTekstu(szablonowe_modul.NormaKoduKodowaniaTekstu("SZABLON",kod),"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
local tekst=stronicowyparser_szablonytekstu_modul.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu);
local czy_szablon_wszystko=false;
tekst_stare=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_stare,nil,tablica_analizy_obiektow_strony_dany_modul_stare,
function(szablon,obiekt,kod)
if(czy_bez_preprocess)then return nil;end;
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony_stare,kod,nazwa_modulu,
function(tabela_parametrow_szablonu_stare,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(
(tab_szablony[nazwa_szablonu])
or(tab_szablony_stronicowe_niekontenerowe[nazwa_szablonu])
or(tab_szablony_stronicowe_formatowania_tekstu[nazwa_szablonu])
or(tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego[nazwa_szablonu])
)then
if(not czy_artykul_korzystany)then
tabela_parametrow_szablonu_stare["nazwa przestrzeni nazw"]=tabela_parametrow_szablonu_stare["nazwa przestrzeni nazw"] or nazwa_przestrzeni;
tabela_parametrow_szablonu_stare["nazwa jednostki"]=tabela_parametrow_szablonu_stare["nazwa jednostki"] or (((nazwa_przestrzeni_ksiazki~="") and (nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki..((nazwa_artykulu~="") and ("/"..nazwa_artykulu) or ""))
if(self)then
local czy_link_lub_pobierz=mw.ustring.match(nazwa_szablonu,"^Link") or mw.ustring.match(nazwa_szablonu,"^Pobierz");
if(czy_link_lub_pobierz)then
stronicowyparser_zbieraniedanychstron_poprzebne_modul.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu_stare,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
else
stronicowyparser_zbieraniedanychstron_poprzebne_modul.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu_stare,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
end;
end;
end;
return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu_stare,tabela_modyfikatorow,true);
end;
return nil;
end,
function(tabela_parametrow_szablonu_stare,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
---- instrukcje warunkowe;
return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu_stare,tabela_modyfikatorow,true);
end,
function(tabela_parametrow_szablonu_stare,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
---- wywołania ramek Lua w Scribunto
return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu_stare,tabela_modyfikatorow,true);
end,
function(tabela_parametrow_szablonu_stare,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
---- tagi szablonowe;
return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu_stare,tabela_modyfikatorow,true);
end);
czy_szablon_wszystko=czy_szablon_wszystko or true;
if(wynik)then return wynik;end;
elseif(obiekt=="ZMIENNA")then
czy_szablon_wszystko=czy_szablon_wszystko or true;
local zawartosc=mw.ustring.match(szablon,"^{{{(.*)}}}$");
if(zawartosc)then
zawartosc=mw.ustring.gsub(zawartosc,"|","{{!}}");
return "{{(((}}"..zawartosc.."{{)))}}";
end;
end;
end);
if((czy_szablon_wszystko)and(not czy_bez_preprocess))then
local frame=mw.getCurrentFrame();
tekst_stare=frame:preprocess(tekst_stare);
end;
lista_dwuelementowa[2]=tekst_stare;
--local __metatabelka=getmetatable(tabela_parametrow_szablonu_stare);
--if(__metatabelka)then setmetatable(tabela_parametrow_szablonu_stare,nil);end;
stronicowyparser_szablonytekstu_modul.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu_stare,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul_stare,tablica_danych_parametrow_szablonu_strony_stare,czy_artykul_korzystany);
end;
end;
return;
elseif(czy_artykul_korzystany)then
if(czy_linkobiekt)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="LinkObiekt:"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
stronicowyparser_zbieraniedanychstron_poprzebne_modul.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,"Obiekt",nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
else
if(stronicowyparser_obiekty_modul.szablony_z_lokalnym_spisem_rzeczy_strony[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
return;
elseif(stronicowyparser_obiekty_modul.bez_uchwytow_spis_rzeczy_strony[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true;
local korzystane=self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA_KATEGORIE)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[2] or "";
local artykul=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[1] or "";
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..nazwa_ksiazki..((artykul)and ("/"..artykul) or "")
end;
end;
stronicowyparser_zbieraniedanychstron_poprzebne_modul.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=korzystane;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
return;
elseif(stronicowyparser_obiekty_modul.szablony_spisu[nazwa_szablonu_wywolania])then
local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA_KATEGORIE)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[2] or "";
local artykul=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[1] or "";
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..nazwa_ksiazki..((artykul)and ("/"..artykul) or "")
end;
end;
local czy_analiza=parametry_modul.CzyTak(tabela_parametrow_szablonu["analiza"]);
local czy_parser=parametry_modul.CzyTak(tabela_parametrow_szablonu["parser"]);
local czy_specjalne=parametry_modul.CzyTak(tabela_parametrow_szablonu["specjalne"]);
local dokumentacja=tabela_parametrow_szablonu["dokumentacja"];
local czy_dokumentacja;
if(not dokumentacja)then
czy_dokumentacja=czy_analiza or czy_specjalne or czy_parser;
else
czy_dokumentacja=parametry_modul.CzyTak(dokumentacja);
end;
if(
((czy_dokumentacja)and(czy_parser))
or((not czy_dokumentacja)and(czy_analiza))
)then
stronicowyparser_zbieraniedanychstron_poprzebne_modul.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
end;
return;
else
local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA_KATEGORIE)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local nazwy_modul=require("Module:Nazwy");
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or "";
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or "";
local nazwa_symulacyjnej_strony=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki;
local uchwyt=nazwa_szablonu_wywolania..":"..nazwa_symulacyjnej_strony;
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=uchwyt;
end;
end;
if((stronicowyparser_obiekty_modul.szablony_kontenerowe[nazwa_szablonu_wywolania])
or(szablony_strony_zbiorczej[nazwa_szablonu_wywolania])
)then
if(szablony_wykorzystywane_przez_strony_zbiorcze[nazwa_szablonu_wywolania])then
stronicowyparser_zbieraniedanychstron_poprzebne_modul.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true,KtorySzablonMaZwracacKategorie);
else
stronicowyparser_zbieraniedanychstron_poprzebne_modul.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nil,KtorySzablonMaZwracacKategorie);
end;
return;
elseif((strona_zbiorcza)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then
stronicowyparser_zbieraniedanychstron_poprzebne_modul.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true,KtorySzablonMaZwracacKategorie);
return;
end;
end;
end;
end;
end;
end;
end;
end;
----
local function GeneralnaAnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer)
stronicowyparser_potrzebne_modul:AnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_danych_parametrow_szablonu_strony,AnalizaParametrowaOrazNazwowaStronicowegoIteratoraSzablonowego);
end;
local function IterowaniePoElementachTekstu(tekst_rozwiniety_calego_artykulu,tab_numer)
--local stronicowyparser_szablonytekstu_modul=require("Module:StronicowyParser/SzablonyTekstu");
--tekst_rozwiniety_calego_artykulu=stronicowyparser_szablonytekstu_modul.PreparowanieSzablonoweLinkoweSzablonuTekstu(tekst_rozwiniety_calego_artykulu,"",nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul);
for uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod in iterator do
GeneralnaAnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer);
end;
end;
if(czy_artykul_korzystany)then
self.tabela_listy_danych_analizy_ksiazki.nazwa_bazowa_strony=nazwy_modul["PEŁNABAZOWANAZWASTRONY"](nazwa_modulu);
end;
IterowaniePoElementachTekstu(tekst_rozwiniety_calego_artykulu);
----
local tablica_danych_nazwy_artykulu=tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu] or {};
tablica_danych_nazwy_artykulu.uchwyty_i_numeracje=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2;
----
local wiki_modul=require("Module:Wiki");
tablica_danych_nazwy_artykulu.link_wikidane={wiki_modul.KodyKlasStronyNaDanejWiki{["strona"]=nazwa_modulu_aktualna_czy_biezaca,["nagłówek"]=true,["aktywny"]=true,},};
if(not czy_artykul_korzystany)then
if(pozawoluminowe_strony)then
if(not tablica_danych_nazwy_artykulu.prefiks_numeru_woluminowego_strony)then
local nazwa_modulu_korzystana_bazowa=self.tabela_listy_danych_analizy_ksiazki.nazwa_bazowa_strony;
local stronicowyparser_pomocne_modul=require("Module:StronicowyParser/Pomocne");
local zrostek=stronicowyparser_pomocne_modul["SkrótDoNumeruOdnośnika"](nazwa_modulu_korzystana_bazowa,nazwa_modulu);
tablica_danych_nazwy_artykulu.prefiks_numeru_woluminowego_strony={zrostek,pozawoluminowe_strony,czy_artykul_korzystany,};
end;
else
local niekorzystany_wolumin=(not korzystany_wolumin);
if(niekorzystany_wolumin)then
if(not tablica_danych_nazwy_artykulu.prefiks_numeru_woluminowego_strony)then
local stronicowyparser_pomocne_modul=require("Module:StronicowyParser/Pomocne");
local zrostek=stronicowyparser_pomocne_modul["SkrótDoNumeruOdnośnikaDołączonejKsiążki"](nazwa_ksiazki);
tablica_danych_nazwy_artykulu.prefiks_numeru_woluminowego_strony={zrostek,niekorzystany_wolumin,czy_artykul_korzystany,};
end;
end;
end;
end;
----
if(czy_artykul_korzystany)then
if(analiza_stron_korzystanych_zbiorczych)then
local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
tekst_rozwiniety_calego_artykulu=stronicowyparser_stronasubst_modul.LiczOperacjeStronZbiorczych(self,tekst_rozwiniety_calego_artykulu,tablica_ksiazki.spis,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
end;
end;
local strona;
if(czy_artykul_korzystany)then strona="";else strona=nazwa_modulu;end;
----
if(czy_artykul_korzystany)then
local stronicowyparser_szablonytekstu_modul=require("Module:StronicowyParser/SzablonyTekstu");
stronicowyparser_szablonytekstu_modul.UstawPobierzKorzystanie(tablica_zmiennych);
tekst_rozwiniety_calego_artykulu=stronicowyparser_szablonytekstu_modul.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu) or tekst_rozwiniety_calego_artykulu;
end;
----
local function SpisToc(self,czy_artykul_korzystany,tablica_danych_nazwy_artykulu,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,tabela_elementow_strony_kodow,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki, nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
return function()
if(((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane))
or((not czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)))then
----
local tablica_obiektow_strony_danych_kodow_specjalnych_modul=nil;
----
tekst_rozwiniety_calego_artykulu,tablica_obiektow_strony_danych_kodow_specjalnych_modul=szablonowe_modul:KodowanieInaczejZakodowanychNormKodowychTekstuWedleJegoTablicyKodowania(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,false);
----
local function KtorySzablonMaZwracacKategorieNaglowek(numeracja_aktualna,nazwa_szablonu)
if(czy_artykul_korzystany)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"powtórka nagłowek w stronie korzystanej"))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"powtórka nagłowek w stronie korzystanej");
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"powtórka nagłówek w stronie dołączonej",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
end;
local function KtorySzablonMaZwracacKategorieTekst(numeracja_aktualna,nazwa_szablonu)
if(czy_artykul_korzystany)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej"))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej");
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"nagłowek w tekście rozdziału w stronie dołączonej",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
end;
local function CzyJestTakiProblemJakoElementTablicySzablonuNaglowkaPozaNapisemWprowadzeniaTekstu()
return stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej");
end;
local nazwa_naglowka=stronicowyparser_obiekty_modul.nazwa_szablonu_wprowadzenia_tekstu;
local stronicowyparser_glownafunkcjazbieraniadanych_modul=require("Module:StronicowyParser/GłównaFunkcjaZbieraniaDanychStron");
local tablica_naglowka_obiekty=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_naglowka];
tablica_naglowka_obiekty.uchwyty_bez_numeracji={};
local toc=stronicowyparser_glownafunkcjazbieraniadanych_modul.SpisRzeczyWedlePodanegoTekstu(self,tekst_rozwiniety_calego_artykulu,strona,czy_artykul_korzystany,nil,tablica_naglowka_obiekty.uchwyty_bez_numeracji, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki, nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_obiektow_strony_danych_kodow_specjalnych_modul,{KtorySzablonMaZwracacKategorieNaglowek,KtorySzablonMaZwracacKategorieTekst,CzyJestTakiProblemJakoElementTablicySzablonuNaglowkaPozaNapisemWprowadzeniaTekstu,},nil,tabela_elementow_strony_kodow);
tablica_danych_nazwy_artykulu.TOC=toc;
return true;
end;
end;
end;
local czy_spis_function=SpisToc(self,czy_artykul_korzystany,tablica_danych_nazwy_artykulu,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,tabela_elementow_strony_kodow,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki, nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
local wynik=czy_spis_function();
if(not czy_artykul_korzystany)then
if(not wynik)then
tablica_danych_nazwy_artykulu.TOCSPIS_FUNCTION=czy_spis_function;
end;
end;
StronaSubstFunkcja(tablica_danych_nazwy_artykulu,tablica_ksiazki.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(czy_artykul_korzystany)then
self.tabela_listy_danych_analizy_ksiazki.link_wikidane=tablica_danych_nazwy_artykulu.link_wikidane;
self.tabela_listy_danych_analizy_ksiazki.prefiks_numeru_woluminowego_strony=tablica_danych_nazwy_artykulu.prefiks_numeru_woluminowego_strony;
self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2;
self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni];
self.tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki=self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw[nazwa_przestrzeni_ksiazki];
self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_ksiazki=self.tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki[nazwa_ksiazki];
--self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron=tablica_zmiennych;
end;
if(not czy_artykul_korzystany)then
tablica_danych_nazwy_artykulu.dane_zebrane_ze_stron=tablica_zmiennych;
if(not self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista)then self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista={};end;
table.insert(self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista,tablica_danych_nazwy_artykulu);
else
local dane_zebrane_ze_stron_lista=self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista;
if(dane_zebrane_ze_stron_lista)then
for _,tablica_danych_nazwy_artykulu in ipairs(dane_zebrane_ze_stron_lista)do
tablica_danych_nazwy_artykulu.dane_zebrane_ze_stron=nil;
tablica_danych_nazwy_artykulu.TOCSPIS_FUNCTION=nil;
end;
end;
tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane=nil;
end;
return self.tabela_listy_danych_analizy_ksiazki,tablica_zmiennych,true;
end;
return p;
9jipex3ap2fwqmxgdgol48x590j3pdp
558358
558357
2026-10-02T20:53:58Z
Persino
2851
558358
Scribunto
text/plain
local p={};
function p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, czy_artykul_korzystany,tablica_zmiennych,czy_szablon_pudelkowy_strony_zbiorczej)
local function __FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if(not self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni])then self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]={};end;
local tablica_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni];
if(not tablica_przestrzeni[nazwa_przestrzeni_ksiazki])then tablica_przestrzeni[nazwa_przestrzeni_ksiazki]={};end;
local tablica_przestrzeni_ksiazki=tablica_przestrzeni[nazwa_przestrzeni_ksiazki];
if(not tablica_przestrzeni_ksiazki[nazwa_ksiazki])then tablica_przestrzeni_ksiazki[nazwa_ksiazki]={};end;
local tablica_ksiazki=tablica_przestrzeni_ksiazki[nazwa_ksiazki];
if(not tablica_ksiazki.lista_podstron_woluminu)then tablica_ksiazki.lista_podstron_woluminu={};end;
if(nazwa_artykulu)then
if(not tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu])then tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu]={};end;
local artykul_analizowany=tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu];
return tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany;
else
return tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki;
end;
end;
local korzystany_wolumin=false;
local function __FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if(not czy_artykul_korzystany)then
if(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni and self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu and self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu and self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu)then
if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu==nazwa_przestrzeni_ksiazki)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu==nazwa_ksiazki))then
korzystany_wolumin=true;
if(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu)then
return 0,nil,nil,nil,nil,nil,self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron,false;
else
if(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=true;
end;
end;
else
if(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=true;
end;
end;
else
return nil;
end;
else
korzystany_wolumin=true;
end;
if(self.tabela_listy_danych_analizy_ksiazki)then
if(self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron)then
local tabela_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni];
if(tabela_przestrzeni)then
local tabela_przestrzeni_ksiazki=tabela_przestrzeni[nazwa_przestrzeni_ksiazki];
if(tabela_przestrzeni_ksiazki)then
local tabela_ksiazka=tabela_przestrzeni_ksiazki[nazwa_ksiazki];
if(tabela_ksiazka)then
local lista_artykolow=tabela_ksiazka.lista_podstron_woluminu;
if(lista_artykolow)then
local tabela_artykul=lista_artykolow[nazwa_artykulu];
if(tabela_artykul)then
local dane_zebrane_ze_stron=tabela_artykul.dane_zebrane_ze_stron;
----
if(not czy_artykul_korzystany)then
if(tabela_artykul.TOCSPIS_FUNCTION)then
local wynik=tabela_artykul.TOCSPIS_FUNCTION();
if(wynik)then
tabela_artykul.TOCSPIS_FUNCTION=nil;
end;
end;
end;
return 0,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni,dane_zebrane_ze_stron,true;
end;
end;
end;
end;
end;
else
return nil;
end;
else
return nil;
end;
return true;
end;
local nazwy_modul=require("Module:Nazwy");
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni,dane_zebrane_ze_stron,czy_inna=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local function StronaSubstFunkcja(tabela_artykul,spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if((czy_szablon_pudelkowy_strony_zbiorczej)and(not czy_artykul_korzystany)and(tabela_artykul)and(not tabela_artykul.strona_zbiorcza))then
--local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
local TakFun=function(frame) return "tak";end;local NieFun=function(frame) return "";end;
tabela_artykul.strona_zbiorcza=stronicowyparser_stronasubst_modul.AnalizaStronaSubst(self.tabela_listy_danych_analizy_ksiazki,spis,nil,TakFun,NieFun,nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
end;
end;
if(not wartosc_wyniku)then
return wartosc_wyniku,dane_zebrane_ze_stron,czy_inna;
elseif(wartosc_wyniku==0)then
if(tabela_artykul)then
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku,dane_zebrane_ze_stron,czy_inna;
else
return wartosc_wyniku,dane_zebrane_ze_stron,czy_inna;
end;
end;
----
local pozawoluminowe_strony;
----
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if((nazwa_przestrzeni~=nazwy_np_modul.Main)
and(nazwa_przestrzeni~=nazwy_np_modul.Wikijunior)
and((nazwa_przestrzeni~=nazwy_np_modul.User)or(not mw.ustring.match(nazwa_przestrzeni_ksiazki,"^([^/]+)$")))
and((nazwa_przestrzeni~=nazwy_np_modul.Wikibooks)or(not mw.ustring.match(nazwa_przestrzeni_ksiazki,"^%s*[Bb]rudnopis/([^/]+)$")))
)then
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
pozawoluminowe_strony=true;
end;
----
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local parametry_modul=require("Module:Parametry");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
----
local tekst_rozwiniety_calego_artykulu_ref=nil;
local tablica_analizy_obiektow_strony_dany_modul_ref=nil;
local tablica_danych_parametrow_szablonu_strony_ref=nil;
----
local function InneInformacjePrzebneDoAnalizowanejKsiazki()
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then
if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki))then
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki["CzyArtykułKsiążki"])then self.tabela_listy_danych_analizy_ksiazki["CzyArtykułKsiążki"]="tak";end;
end;
local czy_ksiazka_istnieje_w_tablicy=((tablica_ksiazki)and(tablica_ksiazki.czy_spis_analizowano))and true or false;
if(not czy_ksiazka_istnieje_w_tablicy)then
tablica_ksiazki.czy_spis_analizowano=true;
local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści");
local nazwa_przestrzeni_strona_temp,nazwa_przestrzeni_ksiazki_strona_temp,nazwa_ksiazki_strona_temp;
local tabela_artykulow,tabela_licencji_spisu_tresci,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,adres_ksiazki_glownego_spisu_tresci=stronicowyparser_spistresci_modul.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,czy_artykul_korzystany,function(nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona)
local tablica_przestrzeni_strona=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni_strona];
if(tablica_przestrzeni_strona)then
local tablica_przestrzeni_ksiazki_strona=tablica_przestrzeni_strona[nazwa_przestrzeni_ksiazki_strona];
if(tablica_przestrzeni_ksiazki_strona)then
local tablica_ksiazki_strona=tablica_przestrzeni_ksiazki_strona[nazwa_ksiazki_strona];
if(tablica_ksiazki_strona)then
if(tablica_ksiazki_strona.spis)then
nazwa_przestrzeni_strona_temp,nazwa_przestrzeni_ksiazki_strona_temp,nazwa_ksiazki_strona_temp=nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona;
tablica_ksiazki.spis=tablica_ksiazki_strona.spis;
tablica_ksiazki.licencja=tablica_ksiazki_strona.licencja;
tablica_ksiazki.nazwa_bazowego_spisu=tablica_ksiazki_strona.nazwa_bazowego_spisu;
tablica_ksiazki.tab_inne_spisy=tablica_ksiazki_strona.tab_inne_spisy;
tablica_ksiazki.dodatkowe_strony_woluminu=tablica_ksiazki_strona.dodatkowe_strony_woluminu;
tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy=tablica_ksiazki_strona.adres_woluminu_bazowego_spisu_rzeczy;
tablica_ksiazki.referencja_do_nowej_formy_spisu={tablica_przestrzeni_strona,tablica_przestrzeni_ksiazki_strona,tablica_ksiazki_strona,};
return 1;
end;
end;
end
end;
end,function(tekst_rozwiniety_calego_artykulu_ref_spis,nazwa_przestrzeni_ref_spis,nazwa_przestrzeni_ksiazki_ref_spis,nazwa_ksiazki_ref_spis,nazwa_artykulu_ref_spis,tablica_analizy_obiektow_strony_dany_modul_ref_spis,tablica_danych_parametrow_szablonu_strony_ref_spis)
----
if((nazwa_przestrzeni==nazwa_przestrzeni_ref_spis)and(nazwa_przestrzeni_ksiazki==nazwa_przestrzeni_ksiazki_ref_spis)and(nazwa_ksiazki==nazwa_ksiazki_ref_spis)and(nazwa_artykulu==nazwa_artykulu_ref_spis))then
tekst_rozwiniety_calego_artykulu_ref=tekst_rozwiniety_calego_artykulu_ref_spis;
local parametry_modul=require("Module:Parametry");
tablica_analizy_obiektow_strony_dany_modul_ref=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_analizy_obiektow_strony_dany_modul_ref_spis);
tablica_danych_parametrow_szablonu_strony_ref=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_danych_parametrow_szablonu_strony_ref_spis);
end;
----
end);
local function __FUNKCJA_SPISU(tablica_ksiazki,czy_podac_adres)
tablica_ksiazki.spis=tabela_artykulow;
if(czy_artykul_korzystany)then
tablica_ksiazki.licencja=tabela_licencji_spisu_tresci;
end;
tablica_ksiazki.nazwa_bazowego_spisu=nazwa_glownego_spisu;
tablica_ksiazki.tab_inne_spisy=tab_inne_spisy;
tablica_ksiazki.dodatkowe_strony_woluminu=dodatkowe_artykuly;
tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy=czy_podac_adres and adres_ksiazki_glownego_spisu_tresci or nil;
end;
if(tabela_artykulow==0)then
if(czy_artykul_korzystany)then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"korzystana strona główna nie istnieje");
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"dołączone strony główne nie istnieją",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
end;
elseif(tabela_artykulow)then
if(parametry_modul.TypeTable(tabela_artykulow))then
if(adres_ksiazki_glownego_spisu_tresci)then
__FUNKCJA_SPISU(tablica_ksiazki,true);
local tablica_ksiazki_stara=tablica_ksiazki;
local artykul,kod_wyniku=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,true);
local nazwa_przestrzeni=adres_ksiazki_glownego_spisu_tresci[1];
local nazwa_przestrzeni_ksiazki=adres_ksiazki_glownego_spisu_tresci[2];
local nazwa_ksiazki=adres_ksiazki_glownego_spisu_tresci[3];
if((kod_wyniku==1)or(kod_wyniku==2))then
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul);
if(not wartosc_wyniku)then
return wartosc_wyniku,true;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
local nazwa_artykulu=artykul;
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku,true;
end;
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni ,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul);
tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,};
__FUNKCJA_SPISU(tablica_ksiazki,false);
return nil,nil,artykul,kod_wyniku;
elseif((kod_wyniku==3)or(kod_wyniku==4))then
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul);
tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,};
__FUNKCJA_SPISU(tablica_ksiazki,false);
return nil,nil,artykul,kod_wyniku;
end;
else
__FUNKCJA_SPISU(tablica_ksiazki,false);
end;
elseif(tabela_artykulow~=1)then
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(not wartosc_wyniku)then
return wartosc_wyniku,true;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku,true;
end;
end;
else
if(czy_artykul_korzystany)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak spisów treści do korzystanych książek na ich stronach głównych"))then
if(((self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu=="")and(nazwa_artykulu~=""))or(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu~=""))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak spisów treści do korzystanych książek na ich stronach głównych");
end;
end;
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"brak spisów treści do dołączonych książek na ich stronach głównych",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
end;
end;
end;
end;
end;
end;
----
local wartosc_wyniku,wynik_bledu,artykul_bazowy,kod_wyniku_bazowy=InneInformacjePrzebneDoAnalizowanejKsiazki();
if(wynik_bledu)then return wartosc_wyniku;end;
local kod_wyniku_przekierowan=kod_wyniku_bazowy;
----
--if((not tablica_przestrzeni)or(not tablica_przestrzeni_ksiazki)or(not tablica_ksiazki)or(not artykul_analizowany))then
-- tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
--end;
----
if((tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy)and(kod_wyniku_bazowy))--[[and((kod_wyniku_bazowy==1)or(kod_wyniku_bazowy==2))]]then
----
nazwa_przestrzeni=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[1];
nazwa_przestrzeni_ksiazki=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[2];
nazwa_ksiazki=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[3];
nazwa_artykulu=artykul_bazowy;
----
tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki=tablica_ksiazki.referencja_do_nowej_formy_spisu[1],tablica_ksiazki.referencja_do_nowej_formy_spisu[2],tablica_ksiazki.referencja_do_nowej_formy_spisu[3];
end;
local tabela_artykulow=tablica_ksiazki.spis;
if(tabela_artykulow)then
local nazwa_glownego_spisu=tablica_ksiazki.nazwa_bazowego_spisu;
local tab_inne_spisy=tablica_ksiazki.tab_inne_spisy;
local dodatkowe_artykuly=tablica_ksiazki.dodatkowe_strony_woluminu
local artykul,kod_wyniku=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,false);
if(kod_wyniku)then
nazwa_artykulu=artykul;
tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
end;
kod_wyniku_przekierowan=kod_wyniku_przekierowan or kod_wyniku;
end;
local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local nazwa_modulu_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
local PrzekierownieAwaryjne=function()
if(not kod_wyniku_przekierowan)then
--local artykul2,kod_wyniku2=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,true);
local techniczne_modul=require("Module:Techniczne");
local strona=techniczne_modul.PrzekierowanieDoStrony(nazwa_modulu);
if(strona)then
if(strona~=nazwa_modulu)then
----
local tabela_nazw={};
nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw);
nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw);
nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw) or nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw));
nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazwa);
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(not wartosc_wyniku)then
return wartosc_wyniku;
elseif(wartosc_wyniku==0)then
if(tabela_artykul)then
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku;
else
return wartosc_wyniku;
end;
end;
tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
nazwa_modulu=strona;
else
return 0;
end;
end;
end;
end;
local wynik=PrzekierownieAwaryjne();
if(czy_artykul_korzystany)then
self.nazwa_modulu_biezaca=nazwa_modulu;
end;
if(wynik)then return wynik;end;
----
if(czy_artykul_korzystany)then
if((not self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu))then
self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni=nazwa_przestrzeni;
self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu=nazwa_przestrzeni_ksiazki;
self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu=nazwa_ksiazki;
self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu=nazwa_artykulu;
end;
end;
local nazwa_modulu_aktualna_czy_biezaca=self.tabela_listy_danych_analizy_ksiazki.alternatywna and nazwy_modul["NazwaModułu"](self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu) or nazwa_modulu;
-- przydzielanie tablicy
if(czy_artykul_korzystany)then
artykul_analizowany.artykul_biezacy=true;
tablica_ksiazki.ksiazka_analizowana=true;
end;
--koniec
--local iterator=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,"{{[^{}]-}}");
if(not tablica_zmiennych)then tablica_zmiennych={};end;
if(not tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)then tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2={};end;
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
for _,element_w_tablicy_obiekt in pairs(stronicowyparser_obiekty_modul.tablica_obiektowych_form)do
local CzyLink=element_w_tablicy_obiekt.CzyLink;
local CzyNum=element_w_tablicy_obiekt.CzyNum;
local wartosc=element_w_tablicy_obiekt[1];
tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[wartosc]={CzyLink=CzyLink,CzyNum=CzyNum,};
if(czy_artykul_korzystany)then tablica_zmiennych.linkobiekt[wartosc]={CzyLink=CzyLink,CzyNum=CzyNum;};end;
end;
local function StronaZbiorcza()
if(czy_artykul_korzystany)then
local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
local TakFun=function(frame) return true;end;local NieFun=function(frame) return nil;end;
local wynik=stronicowyparser_stronasubst_modul.AnalizaStronaSubst(self.tabela_listy_danych_analizy_ksiazki,tablica_ksiazki.spis,nil,TakFun,NieFun,nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
artykul_analizowany.strona_zbiorcza=(wynik and "tak" or "");
return wynik;
end;
return nil;
end;
local strona_zbiorcza=StronaZbiorcza();
local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
local szablonowe_modul=require("Module:Szablonowe");
local nazwa_modulu_aktualna_czy_biezaca_szablonowa=szablonowe_modul["SzablonowaKompletnaNazwaStrony"](nazwa_modulu_aktualna_czy_biezaca);
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
----
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony;
if((not tekst_rozwiniety_calego_artykulu_ref)or(not tablica_analizy_obiektow_strony_dany_modul_ref)or(not tablica_danych_parametrow_szablonu_strony_ref))then
tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,(((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.inna_strona_aktualna_niz_biezaca))and true or nil),
nil)
else
tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=tekst_rozwiniety_calego_artykulu_ref,tablica_analizy_obiektow_strony_dany_modul_ref,tablica_danych_parametrow_szablonu_strony_ref;
end;
----
if(not czy_artykul_korzystany)then
if(not tekst_rozwiniety_calego_artykulu)then return 0;end;
end;
if(czy_artykul_korzystany)then
if(not tekst_rozwiniety_calego_artykulu)then
if(strona_zbiorcza)then
self.tabela_listy_danych_analizy_ksiazki["CzyStronaSubst"]="tak";
end;
return nil;
end;
end;
local parametry_modul=require("Module:Parametry");
if((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.inna_strona_aktualna_niz_biezaca))then
local aktualna_nazwa_modulu;local aktualna_nazwa_modulu_szablonowa;
if(nazwa_modulu_aktualna_czy_biezaca)then
aktualna_nazwa_modulu=nazwa_modulu_aktualna_czy_biezaca;
aktualna_nazwa_modulu_szablonowa=nazwa_modulu_aktualna_czy_biezaca_szablonowa;
else
aktualna_nazwa_modulu=nazwy_modul["NazwaModułu"](self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu);
aktualna_nazwa_modulu_szablonowa=szablonowe_modul["SzablonowaKompletnaNazwaStrony"](aktualna_nazwa_modulu);
end;
local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(self,aktualna_nazwa_modulu,aktualna_nazwa_modulu_szablonowa);
if(tekst)then
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,aktualna_nazwa_modulu);
local tablica_danych_parametrow_szablonu_strony={};
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,aktualna_nazwa_modulu_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(stronicowyparser_obiekty_modul.strona_start_ze_spisem_rzeczy_strony[nazwa_szablonu])then
self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak";
self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
return true;
elseif(stronicowyparser_obiekty_modul.strona_start[nazwa_szablonu])then
self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak";
self.tabela_listy_danych_analizy_ksiazki.formatowanie=tabela_parametrow_szablonu["formatowanie"];
local boczne_menu=tabela_parametrow_szablonu["boczne menu"] or "";
local spis_tresci=tabela_parametrow_szablonu["spis treści"] or "TOC";
if((parametry_modul.CzyTak(boczne_menu))or(parametry_modul.CzyTak(spis_tresci)))then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
end;
return true;
end;
end);
if(wynik)then break;end;
end;
end;
end;
end;
local uzyskano_w_wyniku_parsowania_wywolanie_szablonu;
local analiza_stron_korzystanych_zbiorczych=nil;
local stronastart=nil;
----
local tablica_obiekty=stronicowyparser_obiekty_modul.obiekty;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty;
local format_elementowy_referencji_obiektowy=stronicowyparser_obiekty_modul.format_elementowy_referencji_obiektowy;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
local szablony_wykorzystywane_przez_strony_zbiorcze=stronicowyparser_obiekty_modul.szablony_wykorzystywane_przez_strony_zbiorcze;
local format_elementowy_obiektowy=stronicowyparser_obiekty_modul.format_elementowy_obiektowy;
local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty;
local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_naglowka=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu;
local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
----
local strona_start=stronicowyparser_obiekty_modul.strona_start;
local strona_start_ze_spisem_rzeczy_strony=stronicowyparser_obiekty_modul.strona_start_ze_spisem_rzeczy_strony;
local strona_start_inne=stronicowyparser_obiekty_modul.strona_start_inne;
local szablony_strony_zbiorczej=stronicowyparser_obiekty_modul.strona_zbiorcza;
----
local tab_szablony=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_kontenerowe;
local tab_szablony_stronicowe_niekontenerowe=stronicowyparser_obiekty_modul.szablony_stronicowe_niekontenerowe;
local tab_szablony_stronicowe_formatowania_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowe_formatowania_tekstu;
local tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego=stronicowyparser_obiekty_modul.szablony_stronicowe_kontenerowe_formatowania_wzorowego;
----
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local stronicowyparser_zbieraniedanychstron_poprzebne_modul=require("Module:StronicowyParser/ZbieranieDanychStron/Potrzebne");
local tabela_elementow_strony_kodow={};
-- for uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod in iterator do
local function AnalizaParametrowaOrazNazwowaStronicowegoIteratoraSzablonowego(tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer)
if(czy_artykul_korzystany)then
if(tabela_parametrow_szablonu)then
if((not stronastart)and(self.tabela_listy_danych_analizy_ksiazki.formatowanie==nil))then
if(strona_start[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak";
self.tabela_listy_danych_analizy_ksiazki.formatowanie=tabela_parametrow_szablonu["formatowanie"];
stronastart=true;
local boczne_menu=tabela_parametrow_szablonu["boczne menu"] or "";
local spis_tresci=tabela_parametrow_szablonu["spis treści"] or "TOC";
if((parametry_modul.CzyTak(boczne_menu))or(parametry_modul.CzyTak(spis_tresci)))then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
end;
return;
elseif(strona_start_ze_spisem_rzeczy_strony[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak";
self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
stronastart=true;
return;
elseif(strona_start_inne[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak";
self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
stronastart=true;
return;
elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then
analiza_stron_korzystanych_zbiorczych=true;
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"];
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"];
if((not parametry_modul.CzyTak(nazwa_prestreni_nazw))and(not parametry_modul.CzyTak(nazwa_jednostki)))then
return;
end;
end;
elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then
analiza_stron_korzystanych_zbiorczych=true;
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"];
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"];
if((not parametry_modul.CzyTak(nazwa_przestrzeni))and(not parametry_modul.CzyTak(nazwa_jednostki)))then
return;
end;
end;
end;
end;
local plik=mw.ustring.match(nazwa_szablonu_wywolania,"^:");
if(plik==nil)then
if(tabela_parametrow_szablonu)then
if(not parametry_modul.CzyTak(tabela_parametrow_szablonu["bez automatu"]))then
local czy_wypowiedzenie=(nazwa_szablonu_wywolania=="Wypowiedzenie");
local czy_linkobiekt;
local czy_link;local czy_pobierz;
local czy_wypowiedzenie_z_parametrami;
local czy_linkobiekt_z_parametrami;
if(czy_wypowiedzenie)then
czy_linkobiekt=false;
czy_link=false;
czy_pobierz=false;
czy_wypowiedzenie_z_parametrami=parametry_modul.CzyTak(tabela_parametrow_szablonu["rodzaj"]);
else
czy_linkobiekt=(nazwa_szablonu_wywolania=="LinkObiekt");
if(czy_linkobiekt)then
czy_link=true;
czy_pobierz=false;
czy_linkobiekt_z_parametrami=parametry_modul.CzyTak(tabela_parametrow_szablonu["typ"]);
else
czy_link=mw.ustring.match(nazwa_szablonu_wywolania,"^Link");
czy_pobierz=(not czy_link) and mw.ustring.match(nazwa_szablonu_wywolania,"^Pobierz") or nil;
end;
end;
if((not czy_link)and(not czy_pobierz))then
local wartosc_elementu;local numer_uchwytu;
if(not czy_wypowiedzenie_z_parametrami) then
local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty[nazwa_szablonu_wywolania];
if(tab_wartosc_elementu)then
wartosc_elementu=tab_wartosc_elementu[1];
numer_uchwytu=tab_wartosc_elementu[2];
end;
else
local rodzaj=tabela_parametrow_szablonu["rodzaj"];
if(rodzaj)then
wartosc_elementu=format_elementowy_obiektowy[rodzaj] and rodzaj or nil;
if(wartosc_elementu)then
numer_uchwytu=tablica_obiekty[5];
end;
end;
end;
if(wartosc_elementu)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
if(uchwyt_obiektu and (uchwyt_obiektu~=""))then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
end;
stronicowyparser_zbieraniedanychstron_poprzebne_modul.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],tab_numer,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
end;
elseif(czy_artykul_korzystany)then
if(czy_link)then
local wartosc_elementu;
if(not czy_linkobiekt_z_parametrami)then
wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty[nazwa_szablonu_wywolania];
else
local typ=tabela_parametrow_szablonu["typ"];
if(typ)then
typ=format_elementowy_referencji_obiektowy[typ] and typ or nil;
if(typ)then
wartosc_elementu=mw.getContentLanguage():ucfirst(typ);
end;
end;
end;
if(wartosc_elementu)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Link"..wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
stronicowyparser_zbieraniedanychstron_poprzebne_modul.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
else
local wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu[nazwa_szablonu_wywolania];
if(wartosc_elementu)then
local korzystane=self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
stronicowyparser_zbieraniedanychstron_poprzebne_modul.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=korzystane;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
return;
end;
end;
elseif(czy_pobierz)then
local wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu[nazwa_szablonu_wywolania];
if(wartosc_elementu)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
stronicowyparser_zbieraniedanychstron_poprzebne_modul.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie,true);
return;
end;
end;
end;
if(czy_wypowiedzenie)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Obiekt:"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
stronicowyparser_zbieraniedanychstron_poprzebne_modul.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,"Obiekt", czy_artykul_korzystany,tablica_obiekty[5],tab_numer,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
elseif(stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_wprowadzenia_tekstu[nazwa_szablonu_wywolania])then
local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_naglowka[nazwa_szablonu_wywolania];
local wartosc_elementu;local numer_uchwytu;
if(tab_wartosc_elementu)then
wartosc_elementu=tab_wartosc_elementu[1];
numer_uchwytu=tab_wartosc_elementu[2];
end;
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
if(uchwyt_obiektu and (uchwyt_obiektu~=""))then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
end;
local lista_dwuelementowa=stronicowyparser_zbieraniedanychstron_poprzebne_modul.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],tab_numer,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
stronicowyparser_zbieraniedanychstron_poprzebne_modul.UstawUchwytyWeTablicyBezNumeracji(self,tabela_elementow_strony_kodow,wartosc_elementu,lista_dwuelementowa,kod);
if(czy_artykul_korzystany)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
end;
return;
elseif(stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu[nazwa_szablonu_wywolania])then
local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu[nazwa_szablonu_wywolania];
local wartosc_elementu;local numer_uchwytu;
if(tab_wartosc_elementu)then
wartosc_elementu=tab_wartosc_elementu[1];
numer_uchwytu=tab_wartosc_elementu[2];
end;
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
if(uchwyt_obiektu and (uchwyt_obiektu~=""))then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
end;
local lista_dwuelementowa=stronicowyparser_zbieraniedanychstron_poprzebne_modul.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],tab_numer,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
if(lista_dwuelementowa)then
local stronicowyparser_szablonytekstu_modul=require("Module:StronicowyParser/SzablonyTekstu");
local tekst=stronicowyparser_szablonytekstu_modul.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu);
local bez_preprocess=stronicowyparser_szablonytekstu_modul.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu);
local czy_bez_preprocess=parametry_modul.CzyTak(bez_preprocess);
if(tekst)then
----
local tekst_stare=tekst;
local tablica_analizy_obiektow_strony_dany_modul_stare=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_analizy_obiektow_strony_dany_modul);
local tablica_danych_parametrow_szablonu_strony_stare=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_danych_parametrow_szablonu_strony);
local tabela_parametrow_szablonu_stare=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tabela_parametrow_szablonu);
----
local tekst_szablon=stronicowyparser_szablonytekstu_modul.PreparowanieSzablonoweLinkoweSzablonuTekstu(szablonowe_modul.NormaKoduKodowaniaTekstu("SZABLON",kod),nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki,nazwa_artykulu,czy_bez_preprocess);
local tekst=stronicowyparser_szablonytekstu_modul.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu);
local czy_szablon_wszystko=false;
tekst_stare=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_stare,nil,tablica_analizy_obiektow_strony_dany_modul_stare,
function(szablon,obiekt,kod)
if(czy_bez_preprocess)then return nil;end;
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony_stare,kod,nazwa_modulu,
function(tabela_parametrow_szablonu_stare,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(
(tab_szablony[nazwa_szablonu])
or(tab_szablony_stronicowe_niekontenerowe[nazwa_szablonu])
or(tab_szablony_stronicowe_formatowania_tekstu[nazwa_szablonu])
or(tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego[nazwa_szablonu])
)then
if(not czy_artykul_korzystany)then
tabela_parametrow_szablonu_stare["nazwa przestrzeni nazw"]=tabela_parametrow_szablonu_stare["nazwa przestrzeni nazw"] or nazwa_przestrzeni;
tabela_parametrow_szablonu_stare["nazwa jednostki"]=tabela_parametrow_szablonu_stare["nazwa jednostki"] or (((nazwa_przestrzeni_ksiazki~="") and (nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki..((nazwa_artykulu~="") and ("/"..nazwa_artykulu) or ""))
if(self)then
local czy_link_lub_pobierz=mw.ustring.match(nazwa_szablonu,"^Link") or mw.ustring.match(nazwa_szablonu,"^Pobierz");
if(czy_link_lub_pobierz)then
stronicowyparser_zbieraniedanychstron_poprzebne_modul.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu_stare,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
else
stronicowyparser_zbieraniedanychstron_poprzebne_modul.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu_stare,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
end;
end;
end;
return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu_stare,tabela_modyfikatorow,true);
end;
return nil;
end,
function(tabela_parametrow_szablonu_stare,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
---- instrukcje warunkowe;
return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu_stare,tabela_modyfikatorow,true);
end,
function(tabela_parametrow_szablonu_stare,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
---- wywołania ramek Lua w Scribunto
return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu_stare,tabela_modyfikatorow,true);
end,
function(tabela_parametrow_szablonu_stare,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
---- tagi szablonowe;
return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu_stare,tabela_modyfikatorow,true);
end);
czy_szablon_wszystko=czy_szablon_wszystko or true;
if(wynik)then return wynik;end;
elseif(obiekt=="ZMIENNA")then
czy_szablon_wszystko=czy_szablon_wszystko or true;
local zawartosc=mw.ustring.match(szablon,"^{{{(.*)}}}$");
if(zawartosc)then
zawartosc=mw.ustring.gsub(zawartosc,"|","{{!}}");
return "{{(((}}"..zawartosc.."{{)))}}";
end;
end;
end);
if((czy_szablon_wszystko)and(not czy_bez_preprocess))then
local frame=mw.getCurrentFrame();
tekst_stare=frame:preprocess(tekst_stare);
end;
lista_dwuelementowa[2]=tekst_stare;
--local __metatabelka=getmetatable(tabela_parametrow_szablonu_stare);
--if(__metatabelka)then setmetatable(tabela_parametrow_szablonu_stare,nil);end;
stronicowyparser_szablonytekstu_modul.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu_stare,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul_stare,tablica_danych_parametrow_szablonu_strony_stare,czy_artykul_korzystany);
end;
end;
return;
elseif(czy_artykul_korzystany)then
if(czy_linkobiekt)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="LinkObiekt:"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
stronicowyparser_zbieraniedanychstron_poprzebne_modul.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,"Obiekt",nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
else
if(stronicowyparser_obiekty_modul.szablony_z_lokalnym_spisem_rzeczy_strony[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
return;
elseif(stronicowyparser_obiekty_modul.bez_uchwytow_spis_rzeczy_strony[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true;
local korzystane=self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA_KATEGORIE)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[2] or "";
local artykul=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[1] or "";
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..nazwa_ksiazki..((artykul)and ("/"..artykul) or "")
end;
end;
stronicowyparser_zbieraniedanychstron_poprzebne_modul.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=korzystane;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
return;
elseif(stronicowyparser_obiekty_modul.szablony_spisu[nazwa_szablonu_wywolania])then
local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA_KATEGORIE)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[2] or "";
local artykul=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[1] or "";
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..nazwa_ksiazki..((artykul)and ("/"..artykul) or "")
end;
end;
local czy_analiza=parametry_modul.CzyTak(tabela_parametrow_szablonu["analiza"]);
local czy_parser=parametry_modul.CzyTak(tabela_parametrow_szablonu["parser"]);
local czy_specjalne=parametry_modul.CzyTak(tabela_parametrow_szablonu["specjalne"]);
local dokumentacja=tabela_parametrow_szablonu["dokumentacja"];
local czy_dokumentacja;
if(not dokumentacja)then
czy_dokumentacja=czy_analiza or czy_specjalne or czy_parser;
else
czy_dokumentacja=parametry_modul.CzyTak(dokumentacja);
end;
if(
((czy_dokumentacja)and(czy_parser))
or((not czy_dokumentacja)and(czy_analiza))
)then
stronicowyparser_zbieraniedanychstron_poprzebne_modul.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
end;
return;
else
local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA_KATEGORIE)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local nazwy_modul=require("Module:Nazwy");
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or "";
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or "";
local nazwa_symulacyjnej_strony=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki;
local uchwyt=nazwa_szablonu_wywolania..":"..nazwa_symulacyjnej_strony;
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=uchwyt;
end;
end;
if((stronicowyparser_obiekty_modul.szablony_kontenerowe[nazwa_szablonu_wywolania])
or(szablony_strony_zbiorczej[nazwa_szablonu_wywolania])
)then
if(szablony_wykorzystywane_przez_strony_zbiorcze[nazwa_szablonu_wywolania])then
stronicowyparser_zbieraniedanychstron_poprzebne_modul.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true,KtorySzablonMaZwracacKategorie);
else
stronicowyparser_zbieraniedanychstron_poprzebne_modul.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nil,KtorySzablonMaZwracacKategorie);
end;
return;
elseif((strona_zbiorcza)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then
stronicowyparser_zbieraniedanychstron_poprzebne_modul.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true,KtorySzablonMaZwracacKategorie);
return;
end;
end;
end;
end;
end;
end;
end;
end;
----
local function GeneralnaAnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer)
stronicowyparser_potrzebne_modul:AnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_danych_parametrow_szablonu_strony,AnalizaParametrowaOrazNazwowaStronicowegoIteratoraSzablonowego);
end;
local function IterowaniePoElementachTekstu(tekst_rozwiniety_calego_artykulu,tab_numer)
--local stronicowyparser_szablonytekstu_modul=require("Module:StronicowyParser/SzablonyTekstu");
--tekst_rozwiniety_calego_artykulu=stronicowyparser_szablonytekstu_modul.PreparowanieSzablonoweLinkoweSzablonuTekstu(tekst_rozwiniety_calego_artykulu,"",nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul);
for uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod in iterator do
GeneralnaAnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer);
end;
end;
if(czy_artykul_korzystany)then
self.tabela_listy_danych_analizy_ksiazki.nazwa_bazowa_strony=nazwy_modul["PEŁNABAZOWANAZWASTRONY"](nazwa_modulu);
end;
IterowaniePoElementachTekstu(tekst_rozwiniety_calego_artykulu);
----
local tablica_danych_nazwy_artykulu=tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu] or {};
tablica_danych_nazwy_artykulu.uchwyty_i_numeracje=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2;
----
local wiki_modul=require("Module:Wiki");
tablica_danych_nazwy_artykulu.link_wikidane={wiki_modul.KodyKlasStronyNaDanejWiki{["strona"]=nazwa_modulu_aktualna_czy_biezaca,["nagłówek"]=true,["aktywny"]=true,},};
if(not czy_artykul_korzystany)then
if(pozawoluminowe_strony)then
if(not tablica_danych_nazwy_artykulu.prefiks_numeru_woluminowego_strony)then
local nazwa_modulu_korzystana_bazowa=self.tabela_listy_danych_analizy_ksiazki.nazwa_bazowa_strony;
local stronicowyparser_pomocne_modul=require("Module:StronicowyParser/Pomocne");
local zrostek=stronicowyparser_pomocne_modul["SkrótDoNumeruOdnośnika"](nazwa_modulu_korzystana_bazowa,nazwa_modulu);
tablica_danych_nazwy_artykulu.prefiks_numeru_woluminowego_strony={zrostek,pozawoluminowe_strony,czy_artykul_korzystany,};
end;
else
local niekorzystany_wolumin=(not korzystany_wolumin);
if(niekorzystany_wolumin)then
if(not tablica_danych_nazwy_artykulu.prefiks_numeru_woluminowego_strony)then
local stronicowyparser_pomocne_modul=require("Module:StronicowyParser/Pomocne");
local zrostek=stronicowyparser_pomocne_modul["SkrótDoNumeruOdnośnikaDołączonejKsiążki"](nazwa_ksiazki);
tablica_danych_nazwy_artykulu.prefiks_numeru_woluminowego_strony={zrostek,niekorzystany_wolumin,czy_artykul_korzystany,};
end;
end;
end;
end;
----
if(czy_artykul_korzystany)then
if(analiza_stron_korzystanych_zbiorczych)then
local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
tekst_rozwiniety_calego_artykulu=stronicowyparser_stronasubst_modul.LiczOperacjeStronZbiorczych(self,tekst_rozwiniety_calego_artykulu,tablica_ksiazki.spis,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
end;
end;
local strona;
if(czy_artykul_korzystany)then strona="";else strona=nazwa_modulu;end;
----
if(czy_artykul_korzystany)then
local stronicowyparser_szablonytekstu_modul=require("Module:StronicowyParser/SzablonyTekstu");
stronicowyparser_szablonytekstu_modul.UstawPobierzKorzystanie(tablica_zmiennych);
tekst_rozwiniety_calego_artykulu=stronicowyparser_szablonytekstu_modul.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu) or tekst_rozwiniety_calego_artykulu;
end;
----
local function SpisToc(self,czy_artykul_korzystany,tablica_danych_nazwy_artykulu,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,tabela_elementow_strony_kodow,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki, nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
return function()
if(((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane))
or((not czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)))then
----
local tablica_obiektow_strony_danych_kodow_specjalnych_modul=nil;
----
tekst_rozwiniety_calego_artykulu,tablica_obiektow_strony_danych_kodow_specjalnych_modul=szablonowe_modul:KodowanieInaczejZakodowanychNormKodowychTekstuWedleJegoTablicyKodowania(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,false);
----
local function KtorySzablonMaZwracacKategorieNaglowek(numeracja_aktualna,nazwa_szablonu)
if(czy_artykul_korzystany)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"powtórka nagłowek w stronie korzystanej"))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"powtórka nagłowek w stronie korzystanej");
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"powtórka nagłówek w stronie dołączonej",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
end;
local function KtorySzablonMaZwracacKategorieTekst(numeracja_aktualna,nazwa_szablonu)
if(czy_artykul_korzystany)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej"))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej");
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"nagłowek w tekście rozdziału w stronie dołączonej",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
end;
local function CzyJestTakiProblemJakoElementTablicySzablonuNaglowkaPozaNapisemWprowadzeniaTekstu()
return stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej");
end;
local nazwa_naglowka=stronicowyparser_obiekty_modul.nazwa_szablonu_wprowadzenia_tekstu;
local stronicowyparser_glownafunkcjazbieraniadanych_modul=require("Module:StronicowyParser/GłównaFunkcjaZbieraniaDanychStron");
local tablica_naglowka_obiekty=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_naglowka];
tablica_naglowka_obiekty.uchwyty_bez_numeracji={};
local toc=stronicowyparser_glownafunkcjazbieraniadanych_modul.SpisRzeczyWedlePodanegoTekstu(self,tekst_rozwiniety_calego_artykulu,strona,czy_artykul_korzystany,nil,tablica_naglowka_obiekty.uchwyty_bez_numeracji, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki, nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_obiektow_strony_danych_kodow_specjalnych_modul,{KtorySzablonMaZwracacKategorieNaglowek,KtorySzablonMaZwracacKategorieTekst,CzyJestTakiProblemJakoElementTablicySzablonuNaglowkaPozaNapisemWprowadzeniaTekstu,},nil,tabela_elementow_strony_kodow);
tablica_danych_nazwy_artykulu.TOC=toc;
return true;
end;
end;
end;
local czy_spis_function=SpisToc(self,czy_artykul_korzystany,tablica_danych_nazwy_artykulu,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,tabela_elementow_strony_kodow,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki, nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
local wynik=czy_spis_function();
if(not czy_artykul_korzystany)then
if(not wynik)then
tablica_danych_nazwy_artykulu.TOCSPIS_FUNCTION=czy_spis_function;
end;
end;
StronaSubstFunkcja(tablica_danych_nazwy_artykulu,tablica_ksiazki.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(czy_artykul_korzystany)then
self.tabela_listy_danych_analizy_ksiazki.link_wikidane=tablica_danych_nazwy_artykulu.link_wikidane;
self.tabela_listy_danych_analizy_ksiazki.prefiks_numeru_woluminowego_strony=tablica_danych_nazwy_artykulu.prefiks_numeru_woluminowego_strony;
self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2;
self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni];
self.tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki=self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw[nazwa_przestrzeni_ksiazki];
self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_ksiazki=self.tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki[nazwa_ksiazki];
--self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron=tablica_zmiennych;
end;
if(not czy_artykul_korzystany)then
tablica_danych_nazwy_artykulu.dane_zebrane_ze_stron=tablica_zmiennych;
if(not self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista)then self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista={};end;
table.insert(self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista,tablica_danych_nazwy_artykulu);
else
local dane_zebrane_ze_stron_lista=self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista;
if(dane_zebrane_ze_stron_lista)then
for _,tablica_danych_nazwy_artykulu in ipairs(dane_zebrane_ze_stron_lista)do
tablica_danych_nazwy_artykulu.dane_zebrane_ze_stron=nil;
tablica_danych_nazwy_artykulu.TOCSPIS_FUNCTION=nil;
end;
end;
tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane=nil;
end;
return self.tabela_listy_danych_analizy_ksiazki,tablica_zmiennych,true;
end;
return p;
8z3digorshuppu9kglqgo6etgayu9qo
558359
558358
2026-10-02T21:02:30Z
Persino
2851
558359
Scribunto
text/plain
local p={};
function p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, czy_artykul_korzystany,tablica_zmiennych,czy_szablon_pudelkowy_strony_zbiorczej)
local function __FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if(not self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni])then self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]={};end;
local tablica_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni];
if(not tablica_przestrzeni[nazwa_przestrzeni_ksiazki])then tablica_przestrzeni[nazwa_przestrzeni_ksiazki]={};end;
local tablica_przestrzeni_ksiazki=tablica_przestrzeni[nazwa_przestrzeni_ksiazki];
if(not tablica_przestrzeni_ksiazki[nazwa_ksiazki])then tablica_przestrzeni_ksiazki[nazwa_ksiazki]={};end;
local tablica_ksiazki=tablica_przestrzeni_ksiazki[nazwa_ksiazki];
if(not tablica_ksiazki.lista_podstron_woluminu)then tablica_ksiazki.lista_podstron_woluminu={};end;
if(nazwa_artykulu)then
if(not tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu])then tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu]={};end;
local artykul_analizowany=tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu];
return tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany;
else
return tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki;
end;
end;
local korzystany_wolumin=false;
local function __FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if(not czy_artykul_korzystany)then
if(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni and self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu and self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu and self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu)then
if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu==nazwa_przestrzeni_ksiazki)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu==nazwa_ksiazki))then
korzystany_wolumin=true;
if(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu)then
return 0,nil,nil,nil,nil,nil,self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron,false;
else
if(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=true;
end;
end;
else
if(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=true;
end;
end;
else
return nil;
end;
else
korzystany_wolumin=true;
end;
if(self.tabela_listy_danych_analizy_ksiazki)then
if(self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron)then
local tabela_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni];
if(tabela_przestrzeni)then
local tabela_przestrzeni_ksiazki=tabela_przestrzeni[nazwa_przestrzeni_ksiazki];
if(tabela_przestrzeni_ksiazki)then
local tabela_ksiazka=tabela_przestrzeni_ksiazki[nazwa_ksiazki];
if(tabela_ksiazka)then
local lista_artykolow=tabela_ksiazka.lista_podstron_woluminu;
if(lista_artykolow)then
local tabela_artykul=lista_artykolow[nazwa_artykulu];
if(tabela_artykul)then
local dane_zebrane_ze_stron=tabela_artykul.dane_zebrane_ze_stron;
----
if(not czy_artykul_korzystany)then
if(tabela_artykul.TOCSPIS_FUNCTION)then
local wynik=tabela_artykul.TOCSPIS_FUNCTION();
if(wynik)then
tabela_artykul.TOCSPIS_FUNCTION=nil;
end;
end;
end;
return 0,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni,dane_zebrane_ze_stron,true;
end;
end;
end;
end;
end;
else
return nil;
end;
else
return nil;
end;
return true;
end;
local nazwy_modul=require("Module:Nazwy");
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni,dane_zebrane_ze_stron,czy_inna=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local function StronaSubstFunkcja(tabela_artykul,spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if((czy_szablon_pudelkowy_strony_zbiorczej)and(not czy_artykul_korzystany)and(tabela_artykul)and(not tabela_artykul.strona_zbiorcza))then
--local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
local TakFun=function(frame) return "tak";end;local NieFun=function(frame) return "";end;
tabela_artykul.strona_zbiorcza=stronicowyparser_stronasubst_modul.AnalizaStronaSubst(self.tabela_listy_danych_analizy_ksiazki,spis,nil,TakFun,NieFun,nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
end;
end;
if(not wartosc_wyniku)then
return wartosc_wyniku,dane_zebrane_ze_stron,czy_inna;
elseif(wartosc_wyniku==0)then
if(tabela_artykul)then
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku,dane_zebrane_ze_stron,czy_inna;
else
return wartosc_wyniku,dane_zebrane_ze_stron,czy_inna;
end;
end;
----
local pozawoluminowe_strony;
----
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if((nazwa_przestrzeni~=nazwy_np_modul.Main)
and(nazwa_przestrzeni~=nazwy_np_modul.Wikijunior)
and((nazwa_przestrzeni~=nazwy_np_modul.User)or(not mw.ustring.match(nazwa_przestrzeni_ksiazki,"^([^/]+)$")))
and((nazwa_przestrzeni~=nazwy_np_modul.Wikibooks)or(not mw.ustring.match(nazwa_przestrzeni_ksiazki,"^%s*[Bb]rudnopis/([^/]+)$")))
)then
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
pozawoluminowe_strony=true;
end;
----
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local parametry_modul=require("Module:Parametry");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
----
local tekst_rozwiniety_calego_artykulu_ref=nil;
local tablica_analizy_obiektow_strony_dany_modul_ref=nil;
local tablica_danych_parametrow_szablonu_strony_ref=nil;
----
local function InneInformacjePrzebneDoAnalizowanejKsiazki()
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then
if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki))then
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki["CzyArtykułKsiążki"])then self.tabela_listy_danych_analizy_ksiazki["CzyArtykułKsiążki"]="tak";end;
end;
local czy_ksiazka_istnieje_w_tablicy=((tablica_ksiazki)and(tablica_ksiazki.czy_spis_analizowano))and true or false;
if(not czy_ksiazka_istnieje_w_tablicy)then
tablica_ksiazki.czy_spis_analizowano=true;
local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści");
local nazwa_przestrzeni_strona_temp,nazwa_przestrzeni_ksiazki_strona_temp,nazwa_ksiazki_strona_temp;
local tabela_artykulow,tabela_licencji_spisu_tresci,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,adres_ksiazki_glownego_spisu_tresci=stronicowyparser_spistresci_modul.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,czy_artykul_korzystany,function(nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona)
local tablica_przestrzeni_strona=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni_strona];
if(tablica_przestrzeni_strona)then
local tablica_przestrzeni_ksiazki_strona=tablica_przestrzeni_strona[nazwa_przestrzeni_ksiazki_strona];
if(tablica_przestrzeni_ksiazki_strona)then
local tablica_ksiazki_strona=tablica_przestrzeni_ksiazki_strona[nazwa_ksiazki_strona];
if(tablica_ksiazki_strona)then
if(tablica_ksiazki_strona.spis)then
nazwa_przestrzeni_strona_temp,nazwa_przestrzeni_ksiazki_strona_temp,nazwa_ksiazki_strona_temp=nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona;
tablica_ksiazki.spis=tablica_ksiazki_strona.spis;
tablica_ksiazki.licencja=tablica_ksiazki_strona.licencja;
tablica_ksiazki.nazwa_bazowego_spisu=tablica_ksiazki_strona.nazwa_bazowego_spisu;
tablica_ksiazki.tab_inne_spisy=tablica_ksiazki_strona.tab_inne_spisy;
tablica_ksiazki.dodatkowe_strony_woluminu=tablica_ksiazki_strona.dodatkowe_strony_woluminu;
tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy=tablica_ksiazki_strona.adres_woluminu_bazowego_spisu_rzeczy;
tablica_ksiazki.referencja_do_nowej_formy_spisu={tablica_przestrzeni_strona,tablica_przestrzeni_ksiazki_strona,tablica_ksiazki_strona,};
return 1;
end;
end;
end
end;
end,function(tekst_rozwiniety_calego_artykulu_ref_spis,nazwa_przestrzeni_ref_spis,nazwa_przestrzeni_ksiazki_ref_spis,nazwa_ksiazki_ref_spis,nazwa_artykulu_ref_spis,tablica_analizy_obiektow_strony_dany_modul_ref_spis,tablica_danych_parametrow_szablonu_strony_ref_spis)
----
if((nazwa_przestrzeni==nazwa_przestrzeni_ref_spis)and(nazwa_przestrzeni_ksiazki==nazwa_przestrzeni_ksiazki_ref_spis)and(nazwa_ksiazki==nazwa_ksiazki_ref_spis)and(nazwa_artykulu==nazwa_artykulu_ref_spis))then
tekst_rozwiniety_calego_artykulu_ref=tekst_rozwiniety_calego_artykulu_ref_spis;
local parametry_modul=require("Module:Parametry");
tablica_analizy_obiektow_strony_dany_modul_ref=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_analizy_obiektow_strony_dany_modul_ref_spis);
tablica_danych_parametrow_szablonu_strony_ref=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_danych_parametrow_szablonu_strony_ref_spis);
end;
----
end);
local function __FUNKCJA_SPISU(tablica_ksiazki,czy_podac_adres)
tablica_ksiazki.spis=tabela_artykulow;
if(czy_artykul_korzystany)then
tablica_ksiazki.licencja=tabela_licencji_spisu_tresci;
end;
tablica_ksiazki.nazwa_bazowego_spisu=nazwa_glownego_spisu;
tablica_ksiazki.tab_inne_spisy=tab_inne_spisy;
tablica_ksiazki.dodatkowe_strony_woluminu=dodatkowe_artykuly;
tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy=czy_podac_adres and adres_ksiazki_glownego_spisu_tresci or nil;
end;
if(tabela_artykulow==0)then
if(czy_artykul_korzystany)then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"korzystana strona główna nie istnieje");
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"dołączone strony główne nie istnieją",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
end;
elseif(tabela_artykulow)then
if(parametry_modul.TypeTable(tabela_artykulow))then
if(adres_ksiazki_glownego_spisu_tresci)then
__FUNKCJA_SPISU(tablica_ksiazki,true);
local tablica_ksiazki_stara=tablica_ksiazki;
local artykul,kod_wyniku=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,true);
local nazwa_przestrzeni=adres_ksiazki_glownego_spisu_tresci[1];
local nazwa_przestrzeni_ksiazki=adres_ksiazki_glownego_spisu_tresci[2];
local nazwa_ksiazki=adres_ksiazki_glownego_spisu_tresci[3];
if((kod_wyniku==1)or(kod_wyniku==2))then
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul);
if(not wartosc_wyniku)then
return wartosc_wyniku,true;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
local nazwa_artykulu=artykul;
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku,true;
end;
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni ,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul);
tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,};
__FUNKCJA_SPISU(tablica_ksiazki,false);
return nil,nil,artykul,kod_wyniku;
elseif((kod_wyniku==3)or(kod_wyniku==4))then
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul);
tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,};
__FUNKCJA_SPISU(tablica_ksiazki,false);
return nil,nil,artykul,kod_wyniku;
end;
else
__FUNKCJA_SPISU(tablica_ksiazki,false);
end;
elseif(tabela_artykulow~=1)then
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(not wartosc_wyniku)then
return wartosc_wyniku,true;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku,true;
end;
end;
else
if(czy_artykul_korzystany)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak spisów treści do korzystanych książek na ich stronach głównych"))then
if(((self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu=="")and(nazwa_artykulu~=""))or(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu~=""))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak spisów treści do korzystanych książek na ich stronach głównych");
end;
end;
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"brak spisów treści do dołączonych książek na ich stronach głównych",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
end;
end;
end;
end;
end;
end;
----
local wartosc_wyniku,wynik_bledu,artykul_bazowy,kod_wyniku_bazowy=InneInformacjePrzebneDoAnalizowanejKsiazki();
if(wynik_bledu)then return wartosc_wyniku;end;
local kod_wyniku_przekierowan=kod_wyniku_bazowy;
----
--if((not tablica_przestrzeni)or(not tablica_przestrzeni_ksiazki)or(not tablica_ksiazki)or(not artykul_analizowany))then
-- tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
--end;
----
if((tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy)and(kod_wyniku_bazowy))--[[and((kod_wyniku_bazowy==1)or(kod_wyniku_bazowy==2))]]then
----
nazwa_przestrzeni=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[1];
nazwa_przestrzeni_ksiazki=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[2];
nazwa_ksiazki=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[3];
nazwa_artykulu=artykul_bazowy;
----
tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki=tablica_ksiazki.referencja_do_nowej_formy_spisu[1],tablica_ksiazki.referencja_do_nowej_formy_spisu[2],tablica_ksiazki.referencja_do_nowej_formy_spisu[3];
end;
local tabela_artykulow=tablica_ksiazki.spis;
if(tabela_artykulow)then
local nazwa_glownego_spisu=tablica_ksiazki.nazwa_bazowego_spisu;
local tab_inne_spisy=tablica_ksiazki.tab_inne_spisy;
local dodatkowe_artykuly=tablica_ksiazki.dodatkowe_strony_woluminu
local artykul,kod_wyniku=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,false);
if(kod_wyniku)then
nazwa_artykulu=artykul;
tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
end;
kod_wyniku_przekierowan=kod_wyniku_przekierowan or kod_wyniku;
end;
local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local PrzekierownieAwaryjne=function()
if(not kod_wyniku_przekierowan)then
--local artykul2,kod_wyniku2=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,true);
local techniczne_modul=require("Module:Techniczne");
local strona=techniczne_modul.PrzekierowanieDoStrony(nazwa_modulu);
if(strona)then
if(strona~=nazwa_modulu)then
----
local tabela_nazw={};
nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw);
nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw);
nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw) or nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw));
nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazwa);
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(not wartosc_wyniku)then
return wartosc_wyniku;
elseif(wartosc_wyniku==0)then
if(tabela_artykul)then
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku;
else
return wartosc_wyniku;
end;
end;
tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
nazwa_modulu=strona;
else
return 0;
end;
end;
end;
end;
local wynik=PrzekierownieAwaryjne();
if(czy_artykul_korzystany)then
self.nazwa_modulu_biezaca=nazwa_modulu;
end;
if(wynik)then return wynik;end;
----
if(czy_artykul_korzystany)then
if((not self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu))then
self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni=nazwa_przestrzeni;
self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu=nazwa_przestrzeni_ksiazki;
self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu=nazwa_ksiazki;
self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu=nazwa_artykulu;
end;
end;
local nazwa_modulu_aktualna_czy_biezaca=self.tabela_listy_danych_analizy_ksiazki.alternatywna and nazwy_modul["NazwaModułu"](self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu) or nazwa_modulu;
-- przydzielanie tablicy
if(czy_artykul_korzystany)then
artykul_analizowany.artykul_biezacy=true;
tablica_ksiazki.ksiazka_analizowana=true;
end;
--koniec
--local iterator=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,"{{[^{}]-}}");
if(not tablica_zmiennych)then tablica_zmiennych={};end;
if(not tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)then tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2={};end;
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
for _,element_w_tablicy_obiekt in pairs(stronicowyparser_obiekty_modul.tablica_obiektowych_form)do
local CzyLink=element_w_tablicy_obiekt.CzyLink;
local CzyNum=element_w_tablicy_obiekt.CzyNum;
local wartosc=element_w_tablicy_obiekt[1];
tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[wartosc]={CzyLink=CzyLink,CzyNum=CzyNum,};
if(czy_artykul_korzystany)then tablica_zmiennych.linkobiekt[wartosc]={CzyLink=CzyLink,CzyNum=CzyNum;};end;
end;
local function StronaZbiorcza()
if(czy_artykul_korzystany)then
local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
local TakFun=function(frame) return true;end;local NieFun=function(frame) return nil;end;
local wynik=stronicowyparser_stronasubst_modul.AnalizaStronaSubst(self.tabela_listy_danych_analizy_ksiazki,tablica_ksiazki.spis,nil,TakFun,NieFun,nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
artykul_analizowany.strona_zbiorcza=(wynik and "tak" or "");
return wynik;
end;
return nil;
end;
local strona_zbiorcza=StronaZbiorcza();
local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
local szablonowe_modul=require("Module:Szablonowe");
local nazwa_modulu_aktualna_czy_biezaca_szablonowa=szablonowe_modul["SzablonowaKompletnaNazwaStrony"](nazwa_modulu_aktualna_czy_biezaca);
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
----
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony;
if((not tekst_rozwiniety_calego_artykulu_ref)or(not tablica_analizy_obiektow_strony_dany_modul_ref)or(not tablica_danych_parametrow_szablonu_strony_ref))then
tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,(((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.inna_strona_aktualna_niz_biezaca))and true or nil),
nil)
else
tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=tekst_rozwiniety_calego_artykulu_ref,tablica_analizy_obiektow_strony_dany_modul_ref,tablica_danych_parametrow_szablonu_strony_ref;
end;
----
if(not czy_artykul_korzystany)then
if(not tekst_rozwiniety_calego_artykulu)then return 0;end;
end;
if(czy_artykul_korzystany)then
if(not tekst_rozwiniety_calego_artykulu)then
if(strona_zbiorcza)then
self.tabela_listy_danych_analizy_ksiazki["CzyStronaSubst"]="tak";
end;
return nil;
end;
end;
local parametry_modul=require("Module:Parametry");
if((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.inna_strona_aktualna_niz_biezaca))then
local aktualna_nazwa_modulu;local aktualna_nazwa_modulu_szablonowa;
if(nazwa_modulu_aktualna_czy_biezaca)then
aktualna_nazwa_modulu=nazwa_modulu_aktualna_czy_biezaca;
aktualna_nazwa_modulu_szablonowa=nazwa_modulu_aktualna_czy_biezaca_szablonowa;
else
aktualna_nazwa_modulu=nazwy_modul["NazwaModułu"](self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu);
aktualna_nazwa_modulu_szablonowa=szablonowe_modul["SzablonowaKompletnaNazwaStrony"](aktualna_nazwa_modulu);
end;
local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(self,aktualna_nazwa_modulu,aktualna_nazwa_modulu_szablonowa);
if(tekst)then
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,aktualna_nazwa_modulu);
local tablica_danych_parametrow_szablonu_strony={};
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,aktualna_nazwa_modulu_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(stronicowyparser_obiekty_modul.strona_start_ze_spisem_rzeczy_strony[nazwa_szablonu])then
self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak";
self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
return true;
elseif(stronicowyparser_obiekty_modul.strona_start[nazwa_szablonu])then
self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak";
self.tabela_listy_danych_analizy_ksiazki.formatowanie=tabela_parametrow_szablonu["formatowanie"];
local boczne_menu=tabela_parametrow_szablonu["boczne menu"] or "";
local spis_tresci=tabela_parametrow_szablonu["spis treści"] or "TOC";
if((parametry_modul.CzyTak(boczne_menu))or(parametry_modul.CzyTak(spis_tresci)))then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
end;
return true;
end;
end);
if(wynik)then break;end;
end;
end;
end;
end;
local uzyskano_w_wyniku_parsowania_wywolanie_szablonu;
local analiza_stron_korzystanych_zbiorczych=nil;
local stronastart=nil;
----
local tablica_obiekty=stronicowyparser_obiekty_modul.obiekty;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty;
local format_elementowy_referencji_obiektowy=stronicowyparser_obiekty_modul.format_elementowy_referencji_obiektowy;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
local szablony_wykorzystywane_przez_strony_zbiorcze=stronicowyparser_obiekty_modul.szablony_wykorzystywane_przez_strony_zbiorcze;
local format_elementowy_obiektowy=stronicowyparser_obiekty_modul.format_elementowy_obiektowy;
local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty;
local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_naglowka=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu;
local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
----
local strona_start=stronicowyparser_obiekty_modul.strona_start;
local strona_start_ze_spisem_rzeczy_strony=stronicowyparser_obiekty_modul.strona_start_ze_spisem_rzeczy_strony;
local strona_start_inne=stronicowyparser_obiekty_modul.strona_start_inne;
local szablony_strony_zbiorczej=stronicowyparser_obiekty_modul.strona_zbiorcza;
----
local tab_szablony=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_kontenerowe;
local tab_szablony_stronicowe_niekontenerowe=stronicowyparser_obiekty_modul.szablony_stronicowe_niekontenerowe;
local tab_szablony_stronicowe_formatowania_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowe_formatowania_tekstu;
local tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego=stronicowyparser_obiekty_modul.szablony_stronicowe_kontenerowe_formatowania_wzorowego;
----
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local stronicowyparser_zbieraniedanychstron_poprzebne_modul=require("Module:StronicowyParser/ZbieranieDanychStron/Potrzebne");
local tabela_elementow_strony_kodow={};
-- for uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod in iterator do
local function AnalizaParametrowaOrazNazwowaStronicowegoIteratoraSzablonowego(tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer)
if(czy_artykul_korzystany)then
if(tabela_parametrow_szablonu)then
if((not stronastart)and(self.tabela_listy_danych_analizy_ksiazki.formatowanie==nil))then
if(strona_start[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak";
self.tabela_listy_danych_analizy_ksiazki.formatowanie=tabela_parametrow_szablonu["formatowanie"];
stronastart=true;
local boczne_menu=tabela_parametrow_szablonu["boczne menu"] or "";
local spis_tresci=tabela_parametrow_szablonu["spis treści"] or "TOC";
if((parametry_modul.CzyTak(boczne_menu))or(parametry_modul.CzyTak(spis_tresci)))then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
end;
return;
elseif(strona_start_ze_spisem_rzeczy_strony[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak";
self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
stronastart=true;
return;
elseif(strona_start_inne[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak";
self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
stronastart=true;
return;
elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then
analiza_stron_korzystanych_zbiorczych=true;
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"];
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"];
if((not parametry_modul.CzyTak(nazwa_prestreni_nazw))and(not parametry_modul.CzyTak(nazwa_jednostki)))then
return;
end;
end;
elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then
analiza_stron_korzystanych_zbiorczych=true;
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"];
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"];
if((not parametry_modul.CzyTak(nazwa_przestrzeni))and(not parametry_modul.CzyTak(nazwa_jednostki)))then
return;
end;
end;
end;
end;
local plik=mw.ustring.match(nazwa_szablonu_wywolania,"^:");
if(plik==nil)then
if(tabela_parametrow_szablonu)then
if(not parametry_modul.CzyTak(tabela_parametrow_szablonu["bez automatu"]))then
local czy_wypowiedzenie=(nazwa_szablonu_wywolania=="Wypowiedzenie");
local czy_linkobiekt;
local czy_link;local czy_pobierz;
local czy_wypowiedzenie_z_parametrami;
local czy_linkobiekt_z_parametrami;
if(czy_wypowiedzenie)then
czy_linkobiekt=false;
czy_link=false;
czy_pobierz=false;
czy_wypowiedzenie_z_parametrami=parametry_modul.CzyTak(tabela_parametrow_szablonu["rodzaj"]);
else
czy_linkobiekt=(nazwa_szablonu_wywolania=="LinkObiekt");
if(czy_linkobiekt)then
czy_link=true;
czy_pobierz=false;
czy_linkobiekt_z_parametrami=parametry_modul.CzyTak(tabela_parametrow_szablonu["typ"]);
else
czy_link=mw.ustring.match(nazwa_szablonu_wywolania,"^Link");
czy_pobierz=(not czy_link) and mw.ustring.match(nazwa_szablonu_wywolania,"^Pobierz") or nil;
end;
end;
if((not czy_link)and(not czy_pobierz))then
local wartosc_elementu;local numer_uchwytu;
if(not czy_wypowiedzenie_z_parametrami) then
local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty[nazwa_szablonu_wywolania];
if(tab_wartosc_elementu)then
wartosc_elementu=tab_wartosc_elementu[1];
numer_uchwytu=tab_wartosc_elementu[2];
end;
else
local rodzaj=tabela_parametrow_szablonu["rodzaj"];
if(rodzaj)then
wartosc_elementu=format_elementowy_obiektowy[rodzaj] and rodzaj or nil;
if(wartosc_elementu)then
numer_uchwytu=tablica_obiekty[5];
end;
end;
end;
if(wartosc_elementu)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
if(uchwyt_obiektu and (uchwyt_obiektu~=""))then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
end;
stronicowyparser_zbieraniedanychstron_poprzebne_modul.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],tab_numer,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
end;
elseif(czy_artykul_korzystany)then
if(czy_link)then
local wartosc_elementu;
if(not czy_linkobiekt_z_parametrami)then
wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty[nazwa_szablonu_wywolania];
else
local typ=tabela_parametrow_szablonu["typ"];
if(typ)then
typ=format_elementowy_referencji_obiektowy[typ] and typ or nil;
if(typ)then
wartosc_elementu=mw.getContentLanguage():ucfirst(typ);
end;
end;
end;
if(wartosc_elementu)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Link"..wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
stronicowyparser_zbieraniedanychstron_poprzebne_modul.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
else
local wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu[nazwa_szablonu_wywolania];
if(wartosc_elementu)then
local korzystane=self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
stronicowyparser_zbieraniedanychstron_poprzebne_modul.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=korzystane;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
return;
end;
end;
elseif(czy_pobierz)then
local wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu[nazwa_szablonu_wywolania];
if(wartosc_elementu)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
stronicowyparser_zbieraniedanychstron_poprzebne_modul.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie,true);
return;
end;
end;
end;
if(czy_wypowiedzenie)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Obiekt:"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
stronicowyparser_zbieraniedanychstron_poprzebne_modul.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,"Obiekt", czy_artykul_korzystany,tablica_obiekty[5],tab_numer,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
elseif(stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_wprowadzenia_tekstu[nazwa_szablonu_wywolania])then
local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_naglowka[nazwa_szablonu_wywolania];
local wartosc_elementu;local numer_uchwytu;
if(tab_wartosc_elementu)then
wartosc_elementu=tab_wartosc_elementu[1];
numer_uchwytu=tab_wartosc_elementu[2];
end;
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
if(uchwyt_obiektu and (uchwyt_obiektu~=""))then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
end;
local lista_dwuelementowa=stronicowyparser_zbieraniedanychstron_poprzebne_modul.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],tab_numer,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
stronicowyparser_zbieraniedanychstron_poprzebne_modul.UstawUchwytyWeTablicyBezNumeracji(self,tabela_elementow_strony_kodow,wartosc_elementu,lista_dwuelementowa,kod);
if(czy_artykul_korzystany)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
end;
return;
elseif(stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu[nazwa_szablonu_wywolania])then
local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu[nazwa_szablonu_wywolania];
local wartosc_elementu;local numer_uchwytu;
if(tab_wartosc_elementu)then
wartosc_elementu=tab_wartosc_elementu[1];
numer_uchwytu=tab_wartosc_elementu[2];
end;
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
if(uchwyt_obiektu and (uchwyt_obiektu~=""))then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
end;
local lista_dwuelementowa=stronicowyparser_zbieraniedanychstron_poprzebne_modul.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],tab_numer,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
if(lista_dwuelementowa)then
local stronicowyparser_szablonytekstu_modul=require("Module:StronicowyParser/SzablonyTekstu");
local tekst=stronicowyparser_szablonytekstu_modul.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu);
local bez_preprocess=stronicowyparser_szablonytekstu_modul.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu);
local czy_bez_preprocess=parametry_modul.CzyTak(bez_preprocess);
if(tekst)then
----
local tekst_stare=tekst;
local tablica_analizy_obiektow_strony_dany_modul_stare=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_analizy_obiektow_strony_dany_modul);
local tablica_danych_parametrow_szablonu_strony_stare=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_danych_parametrow_szablonu_strony);
local tabela_parametrow_szablonu_stare=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tabela_parametrow_szablonu);
----
local nazwa_modulu_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[3];
local nazwa_artykulu_tekstu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[2];
local tekst_szablon=stronicowyparser_szablonytekstu_modul.PreparowanieSzablonoweLinkoweSzablonuTekstu(szablonowe_modul.NormaKoduKodowaniaTekstu("SZABLON",kod),nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu,czy_bez_preprocess);
local tekst=stronicowyparser_szablonytekstu_modul.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu);
local czy_szablon_wszystko=false;
tekst_stare=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_stare,nil,tablica_analizy_obiektow_strony_dany_modul_stare,
function(szablon,obiekt,kod)
if(czy_bez_preprocess)then return nil;end;
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony_stare,kod,nazwa_modulu,
function(tabela_parametrow_szablonu_stare,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(
(tab_szablony[nazwa_szablonu])
or(tab_szablony_stronicowe_niekontenerowe[nazwa_szablonu])
or(tab_szablony_stronicowe_formatowania_tekstu[nazwa_szablonu])
or(tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego[nazwa_szablonu])
)then
if(not czy_artykul_korzystany)then
tabela_parametrow_szablonu_stare["nazwa przestrzeni nazw"]=tabela_parametrow_szablonu_stare["nazwa przestrzeni nazw"] or nazwa_przestrzeni;
tabela_parametrow_szablonu_stare["nazwa jednostki"]=tabela_parametrow_szablonu_stare["nazwa jednostki"] or (((nazwa_przestrzeni_ksiazki~="") and (nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki..((nazwa_artykulu~="") and ("/"..nazwa_artykulu) or ""))
if(self)then
local czy_link_lub_pobierz=mw.ustring.match(nazwa_szablonu,"^Link") or mw.ustring.match(nazwa_szablonu,"^Pobierz");
if(czy_link_lub_pobierz)then
stronicowyparser_zbieraniedanychstron_poprzebne_modul.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu_stare,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
else
stronicowyparser_zbieraniedanychstron_poprzebne_modul.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu_stare,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
end;
end;
end;
return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu_stare,tabela_modyfikatorow,true);
end;
return nil;
end,
function(tabela_parametrow_szablonu_stare,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
---- instrukcje warunkowe;
return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu_stare,tabela_modyfikatorow,true);
end,
function(tabela_parametrow_szablonu_stare,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
---- wywołania ramek Lua w Scribunto
return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu_stare,tabela_modyfikatorow,true);
end,
function(tabela_parametrow_szablonu_stare,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
---- tagi szablonowe;
return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu_stare,tabela_modyfikatorow,true);
end);
czy_szablon_wszystko=czy_szablon_wszystko or true;
if(wynik)then return wynik;end;
elseif(obiekt=="ZMIENNA")then
czy_szablon_wszystko=czy_szablon_wszystko or true;
local zawartosc=mw.ustring.match(szablon,"^{{{(.*)}}}$");
if(zawartosc)then
zawartosc=mw.ustring.gsub(zawartosc,"|","{{!}}");
return "{{(((}}"..zawartosc.."{{)))}}";
end;
end;
end);
if((czy_szablon_wszystko)and(not czy_bez_preprocess))then
local frame=mw.getCurrentFrame();
tekst_stare=frame:preprocess(tekst_stare);
end;
lista_dwuelementowa[2]=tekst_stare;
--local __metatabelka=getmetatable(tabela_parametrow_szablonu_stare);
--if(__metatabelka)then setmetatable(tabela_parametrow_szablonu_stare,nil);end;
stronicowyparser_szablonytekstu_modul.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu_stare,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul_stare,tablica_danych_parametrow_szablonu_strony_stare,czy_artykul_korzystany);
end;
end;
return;
elseif(czy_artykul_korzystany)then
if(czy_linkobiekt)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="LinkObiekt:"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
stronicowyparser_zbieraniedanychstron_poprzebne_modul.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,"Obiekt",nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
else
if(stronicowyparser_obiekty_modul.szablony_z_lokalnym_spisem_rzeczy_strony[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
return;
elseif(stronicowyparser_obiekty_modul.bez_uchwytow_spis_rzeczy_strony[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true;
local korzystane=self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA_KATEGORIE)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[2] or "";
local artykul=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[1] or "";
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..nazwa_ksiazki..((artykul)and ("/"..artykul) or "")
end;
end;
stronicowyparser_zbieraniedanychstron_poprzebne_modul.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=korzystane;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
return;
elseif(stronicowyparser_obiekty_modul.szablony_spisu[nazwa_szablonu_wywolania])then
local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA_KATEGORIE)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[2] or "";
local artykul=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[1] or "";
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..nazwa_ksiazki..((artykul)and ("/"..artykul) or "")
end;
end;
local czy_analiza=parametry_modul.CzyTak(tabela_parametrow_szablonu["analiza"]);
local czy_parser=parametry_modul.CzyTak(tabela_parametrow_szablonu["parser"]);
local czy_specjalne=parametry_modul.CzyTak(tabela_parametrow_szablonu["specjalne"]);
local dokumentacja=tabela_parametrow_szablonu["dokumentacja"];
local czy_dokumentacja;
if(not dokumentacja)then
czy_dokumentacja=czy_analiza or czy_specjalne or czy_parser;
else
czy_dokumentacja=parametry_modul.CzyTak(dokumentacja);
end;
if(
((czy_dokumentacja)and(czy_parser))
or((not czy_dokumentacja)and(czy_analiza))
)then
stronicowyparser_zbieraniedanychstron_poprzebne_modul.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
end;
return;
else
local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA_KATEGORIE)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local nazwy_modul=require("Module:Nazwy");
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or "";
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or "";
local nazwa_symulacyjnej_strony=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki;
local uchwyt=nazwa_szablonu_wywolania..":"..nazwa_symulacyjnej_strony;
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=uchwyt;
end;
end;
if((stronicowyparser_obiekty_modul.szablony_kontenerowe[nazwa_szablonu_wywolania])
or(szablony_strony_zbiorczej[nazwa_szablonu_wywolania])
)then
if(szablony_wykorzystywane_przez_strony_zbiorcze[nazwa_szablonu_wywolania])then
stronicowyparser_zbieraniedanychstron_poprzebne_modul.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true,KtorySzablonMaZwracacKategorie);
else
stronicowyparser_zbieraniedanychstron_poprzebne_modul.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nil,KtorySzablonMaZwracacKategorie);
end;
return;
elseif((strona_zbiorcza)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then
stronicowyparser_zbieraniedanychstron_poprzebne_modul.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true,KtorySzablonMaZwracacKategorie);
return;
end;
end;
end;
end;
end;
end;
end;
end;
----
local function GeneralnaAnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer)
stronicowyparser_potrzebne_modul:AnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_danych_parametrow_szablonu_strony,AnalizaParametrowaOrazNazwowaStronicowegoIteratoraSzablonowego);
end;
local function IterowaniePoElementachTekstu(tekst_rozwiniety_calego_artykulu,tab_numer)
--local stronicowyparser_szablonytekstu_modul=require("Module:StronicowyParser/SzablonyTekstu");
--tekst_rozwiniety_calego_artykulu=stronicowyparser_szablonytekstu_modul.PreparowanieSzablonoweLinkoweSzablonuTekstu(tekst_rozwiniety_calego_artykulu,"",nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul);
for uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod in iterator do
GeneralnaAnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer);
end;
end;
if(czy_artykul_korzystany)then
self.tabela_listy_danych_analizy_ksiazki.nazwa_bazowa_strony=nazwy_modul["PEŁNABAZOWANAZWASTRONY"](nazwa_modulu);
end;
IterowaniePoElementachTekstu(tekst_rozwiniety_calego_artykulu);
----
local tablica_danych_nazwy_artykulu=tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu] or {};
tablica_danych_nazwy_artykulu.uchwyty_i_numeracje=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2;
----
local wiki_modul=require("Module:Wiki");
tablica_danych_nazwy_artykulu.link_wikidane={wiki_modul.KodyKlasStronyNaDanejWiki{["strona"]=nazwa_modulu_aktualna_czy_biezaca,["nagłówek"]=true,["aktywny"]=true,},};
if(not czy_artykul_korzystany)then
if(pozawoluminowe_strony)then
if(not tablica_danych_nazwy_artykulu.prefiks_numeru_woluminowego_strony)then
local nazwa_modulu_korzystana_bazowa=self.tabela_listy_danych_analizy_ksiazki.nazwa_bazowa_strony;
local stronicowyparser_pomocne_modul=require("Module:StronicowyParser/Pomocne");
local zrostek=stronicowyparser_pomocne_modul["SkrótDoNumeruOdnośnika"](nazwa_modulu_korzystana_bazowa,nazwa_modulu);
tablica_danych_nazwy_artykulu.prefiks_numeru_woluminowego_strony={zrostek,pozawoluminowe_strony,czy_artykul_korzystany,};
end;
else
local niekorzystany_wolumin=(not korzystany_wolumin);
if(niekorzystany_wolumin)then
if(not tablica_danych_nazwy_artykulu.prefiks_numeru_woluminowego_strony)then
local stronicowyparser_pomocne_modul=require("Module:StronicowyParser/Pomocne");
local zrostek=stronicowyparser_pomocne_modul["SkrótDoNumeruOdnośnikaDołączonejKsiążki"](nazwa_ksiazki);
tablica_danych_nazwy_artykulu.prefiks_numeru_woluminowego_strony={zrostek,niekorzystany_wolumin,czy_artykul_korzystany,};
end;
end;
end;
end;
----
if(czy_artykul_korzystany)then
if(analiza_stron_korzystanych_zbiorczych)then
local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
tekst_rozwiniety_calego_artykulu=stronicowyparser_stronasubst_modul.LiczOperacjeStronZbiorczych(self,tekst_rozwiniety_calego_artykulu,tablica_ksiazki.spis,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
end;
end;
local strona;
if(czy_artykul_korzystany)then strona="";else strona=nazwa_modulu;end;
----
if(czy_artykul_korzystany)then
local stronicowyparser_szablonytekstu_modul=require("Module:StronicowyParser/SzablonyTekstu");
stronicowyparser_szablonytekstu_modul.UstawPobierzKorzystanie(tablica_zmiennych);
tekst_rozwiniety_calego_artykulu=stronicowyparser_szablonytekstu_modul.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu) or tekst_rozwiniety_calego_artykulu;
end;
----
local function SpisToc(self,czy_artykul_korzystany,tablica_danych_nazwy_artykulu,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,tabela_elementow_strony_kodow,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki, nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
return function()
if(((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane))
or((not czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)))then
----
local tablica_obiektow_strony_danych_kodow_specjalnych_modul=nil;
----
tekst_rozwiniety_calego_artykulu,tablica_obiektow_strony_danych_kodow_specjalnych_modul=szablonowe_modul:KodowanieInaczejZakodowanychNormKodowychTekstuWedleJegoTablicyKodowania(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,false);
----
local function KtorySzablonMaZwracacKategorieNaglowek(numeracja_aktualna,nazwa_szablonu)
if(czy_artykul_korzystany)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"powtórka nagłowek w stronie korzystanej"))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"powtórka nagłowek w stronie korzystanej");
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"powtórka nagłówek w stronie dołączonej",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
end;
local function KtorySzablonMaZwracacKategorieTekst(numeracja_aktualna,nazwa_szablonu)
if(czy_artykul_korzystany)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej"))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej");
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"nagłowek w tekście rozdziału w stronie dołączonej",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
end;
local function CzyJestTakiProblemJakoElementTablicySzablonuNaglowkaPozaNapisemWprowadzeniaTekstu()
return stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej");
end;
local nazwa_naglowka=stronicowyparser_obiekty_modul.nazwa_szablonu_wprowadzenia_tekstu;
local stronicowyparser_glownafunkcjazbieraniadanych_modul=require("Module:StronicowyParser/GłównaFunkcjaZbieraniaDanychStron");
local tablica_naglowka_obiekty=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_naglowka];
tablica_naglowka_obiekty.uchwyty_bez_numeracji={};
local toc=stronicowyparser_glownafunkcjazbieraniadanych_modul.SpisRzeczyWedlePodanegoTekstu(self,tekst_rozwiniety_calego_artykulu,strona,czy_artykul_korzystany,nil,tablica_naglowka_obiekty.uchwyty_bez_numeracji, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki, nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_obiektow_strony_danych_kodow_specjalnych_modul,{KtorySzablonMaZwracacKategorieNaglowek,KtorySzablonMaZwracacKategorieTekst,CzyJestTakiProblemJakoElementTablicySzablonuNaglowkaPozaNapisemWprowadzeniaTekstu,},nil,tabela_elementow_strony_kodow);
tablica_danych_nazwy_artykulu.TOC=toc;
return true;
end;
end;
end;
local czy_spis_function=SpisToc(self,czy_artykul_korzystany,tablica_danych_nazwy_artykulu,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,tabela_elementow_strony_kodow,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki, nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
local wynik=czy_spis_function();
if(not czy_artykul_korzystany)then
if(not wynik)then
tablica_danych_nazwy_artykulu.TOCSPIS_FUNCTION=czy_spis_function;
end;
end;
StronaSubstFunkcja(tablica_danych_nazwy_artykulu,tablica_ksiazki.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(czy_artykul_korzystany)then
self.tabela_listy_danych_analizy_ksiazki.link_wikidane=tablica_danych_nazwy_artykulu.link_wikidane;
self.tabela_listy_danych_analizy_ksiazki.prefiks_numeru_woluminowego_strony=tablica_danych_nazwy_artykulu.prefiks_numeru_woluminowego_strony;
self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2;
self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni];
self.tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki=self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw[nazwa_przestrzeni_ksiazki];
self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_ksiazki=self.tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki[nazwa_ksiazki];
--self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron=tablica_zmiennych;
end;
if(not czy_artykul_korzystany)then
tablica_danych_nazwy_artykulu.dane_zebrane_ze_stron=tablica_zmiennych;
if(not self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista)then self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista={};end;
table.insert(self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista,tablica_danych_nazwy_artykulu);
else
local dane_zebrane_ze_stron_lista=self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista;
if(dane_zebrane_ze_stron_lista)then
for _,tablica_danych_nazwy_artykulu in ipairs(dane_zebrane_ze_stron_lista)do
tablica_danych_nazwy_artykulu.dane_zebrane_ze_stron=nil;
tablica_danych_nazwy_artykulu.TOCSPIS_FUNCTION=nil;
end;
end;
tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane=nil;
end;
return self.tabela_listy_danych_analizy_ksiazki,tablica_zmiennych,true;
end;
return p;
ft7iel5b9vk5dbcayyfdnf0lv3jrqtu
558360
558359
2026-10-02T21:11:48Z
Persino
2851
558360
Scribunto
text/plain
local p={};
function p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, czy_artykul_korzystany,tablica_zmiennych,czy_szablon_pudelkowy_strony_zbiorczej)
local function __FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if(not self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni])then self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]={};end;
local tablica_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni];
if(not tablica_przestrzeni[nazwa_przestrzeni_ksiazki])then tablica_przestrzeni[nazwa_przestrzeni_ksiazki]={};end;
local tablica_przestrzeni_ksiazki=tablica_przestrzeni[nazwa_przestrzeni_ksiazki];
if(not tablica_przestrzeni_ksiazki[nazwa_ksiazki])then tablica_przestrzeni_ksiazki[nazwa_ksiazki]={};end;
local tablica_ksiazki=tablica_przestrzeni_ksiazki[nazwa_ksiazki];
if(not tablica_ksiazki.lista_podstron_woluminu)then tablica_ksiazki.lista_podstron_woluminu={};end;
if(nazwa_artykulu)then
if(not tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu])then tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu]={};end;
local artykul_analizowany=tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu];
return tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany;
else
return tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki;
end;
end;
local korzystany_wolumin=false;
local function __FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if(not czy_artykul_korzystany)then
if(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni and self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu and self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu and self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu)then
if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu==nazwa_przestrzeni_ksiazki)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu==nazwa_ksiazki))then
korzystany_wolumin=true;
if(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu)then
return 0,nil,nil,nil,nil,nil,self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron,false;
else
if(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=true;
end;
end;
else
if(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=true;
end;
end;
else
return nil;
end;
else
korzystany_wolumin=true;
end;
if(self.tabela_listy_danych_analizy_ksiazki)then
if(self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron)then
local tabela_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni];
if(tabela_przestrzeni)then
local tabela_przestrzeni_ksiazki=tabela_przestrzeni[nazwa_przestrzeni_ksiazki];
if(tabela_przestrzeni_ksiazki)then
local tabela_ksiazka=tabela_przestrzeni_ksiazki[nazwa_ksiazki];
if(tabela_ksiazka)then
local lista_artykolow=tabela_ksiazka.lista_podstron_woluminu;
if(lista_artykolow)then
local tabela_artykul=lista_artykolow[nazwa_artykulu];
if(tabela_artykul)then
local dane_zebrane_ze_stron=tabela_artykul.dane_zebrane_ze_stron;
----
if(not czy_artykul_korzystany)then
if(tabela_artykul.TOCSPIS_FUNCTION)then
local wynik=tabela_artykul.TOCSPIS_FUNCTION();
if(wynik)then
tabela_artykul.TOCSPIS_FUNCTION=nil;
end;
end;
end;
return 0,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni,dane_zebrane_ze_stron,true;
end;
end;
end;
end;
end;
else
return nil;
end;
else
return nil;
end;
return true;
end;
local nazwy_modul=require("Module:Nazwy");
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni,dane_zebrane_ze_stron,czy_inna=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local function StronaSubstFunkcja(tabela_artykul,spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if((czy_szablon_pudelkowy_strony_zbiorczej)and(not czy_artykul_korzystany)and(tabela_artykul)and(not tabela_artykul.strona_zbiorcza))then
--local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
local TakFun=function(frame) return "tak";end;local NieFun=function(frame) return "";end;
tabela_artykul.strona_zbiorcza=stronicowyparser_stronasubst_modul.AnalizaStronaSubst(self.tabela_listy_danych_analizy_ksiazki,spis,nil,TakFun,NieFun,nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
end;
end;
if(not wartosc_wyniku)then
return wartosc_wyniku,dane_zebrane_ze_stron,czy_inna;
elseif(wartosc_wyniku==0)then
if(tabela_artykul)then
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku,dane_zebrane_ze_stron,czy_inna;
else
return wartosc_wyniku,dane_zebrane_ze_stron,czy_inna;
end;
end;
----
local pozawoluminowe_strony;
----
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if((nazwa_przestrzeni~=nazwy_np_modul.Main)
and(nazwa_przestrzeni~=nazwy_np_modul.Wikijunior)
and((nazwa_przestrzeni~=nazwy_np_modul.User)or(not mw.ustring.match(nazwa_przestrzeni_ksiazki,"^([^/]+)$")))
and((nazwa_przestrzeni~=nazwy_np_modul.Wikibooks)or(not mw.ustring.match(nazwa_przestrzeni_ksiazki,"^%s*[Bb]rudnopis/([^/]+)$")))
)then
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
pozawoluminowe_strony=true;
end;
----
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local parametry_modul=require("Module:Parametry");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
----
local tekst_rozwiniety_calego_artykulu_ref=nil;
local tablica_analizy_obiektow_strony_dany_modul_ref=nil;
local tablica_danych_parametrow_szablonu_strony_ref=nil;
----
local function InneInformacjePrzebneDoAnalizowanejKsiazki()
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then
if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki))then
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki["CzyArtykułKsiążki"])then self.tabela_listy_danych_analizy_ksiazki["CzyArtykułKsiążki"]="tak";end;
end;
local czy_ksiazka_istnieje_w_tablicy=((tablica_ksiazki)and(tablica_ksiazki.czy_spis_analizowano))and true or false;
if(not czy_ksiazka_istnieje_w_tablicy)then
tablica_ksiazki.czy_spis_analizowano=true;
local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści");
local nazwa_przestrzeni_strona_temp,nazwa_przestrzeni_ksiazki_strona_temp,nazwa_ksiazki_strona_temp;
local tabela_artykulow,tabela_licencji_spisu_tresci,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,adres_ksiazki_glownego_spisu_tresci=stronicowyparser_spistresci_modul.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,czy_artykul_korzystany,function(nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona)
local tablica_przestrzeni_strona=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni_strona];
if(tablica_przestrzeni_strona)then
local tablica_przestrzeni_ksiazki_strona=tablica_przestrzeni_strona[nazwa_przestrzeni_ksiazki_strona];
if(tablica_przestrzeni_ksiazki_strona)then
local tablica_ksiazki_strona=tablica_przestrzeni_ksiazki_strona[nazwa_ksiazki_strona];
if(tablica_ksiazki_strona)then
if(tablica_ksiazki_strona.spis)then
nazwa_przestrzeni_strona_temp,nazwa_przestrzeni_ksiazki_strona_temp,nazwa_ksiazki_strona_temp=nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona;
tablica_ksiazki.spis=tablica_ksiazki_strona.spis;
tablica_ksiazki.licencja=tablica_ksiazki_strona.licencja;
tablica_ksiazki.nazwa_bazowego_spisu=tablica_ksiazki_strona.nazwa_bazowego_spisu;
tablica_ksiazki.tab_inne_spisy=tablica_ksiazki_strona.tab_inne_spisy;
tablica_ksiazki.dodatkowe_strony_woluminu=tablica_ksiazki_strona.dodatkowe_strony_woluminu;
tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy=tablica_ksiazki_strona.adres_woluminu_bazowego_spisu_rzeczy;
tablica_ksiazki.referencja_do_nowej_formy_spisu={tablica_przestrzeni_strona,tablica_przestrzeni_ksiazki_strona,tablica_ksiazki_strona,};
return 1;
end;
end;
end
end;
end,function(tekst_rozwiniety_calego_artykulu_ref_spis,nazwa_przestrzeni_ref_spis,nazwa_przestrzeni_ksiazki_ref_spis,nazwa_ksiazki_ref_spis,nazwa_artykulu_ref_spis,tablica_analizy_obiektow_strony_dany_modul_ref_spis,tablica_danych_parametrow_szablonu_strony_ref_spis)
----
if((nazwa_przestrzeni==nazwa_przestrzeni_ref_spis)and(nazwa_przestrzeni_ksiazki==nazwa_przestrzeni_ksiazki_ref_spis)and(nazwa_ksiazki==nazwa_ksiazki_ref_spis)and(nazwa_artykulu==nazwa_artykulu_ref_spis))then
tekst_rozwiniety_calego_artykulu_ref=tekst_rozwiniety_calego_artykulu_ref_spis;
local parametry_modul=require("Module:Parametry");
tablica_analizy_obiektow_strony_dany_modul_ref=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_analizy_obiektow_strony_dany_modul_ref_spis);
tablica_danych_parametrow_szablonu_strony_ref=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_danych_parametrow_szablonu_strony_ref_spis);
end;
----
end);
local function __FUNKCJA_SPISU(tablica_ksiazki,czy_podac_adres)
tablica_ksiazki.spis=tabela_artykulow;
if(czy_artykul_korzystany)then
tablica_ksiazki.licencja=tabela_licencji_spisu_tresci;
end;
tablica_ksiazki.nazwa_bazowego_spisu=nazwa_glownego_spisu;
tablica_ksiazki.tab_inne_spisy=tab_inne_spisy;
tablica_ksiazki.dodatkowe_strony_woluminu=dodatkowe_artykuly;
tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy=czy_podac_adres and adres_ksiazki_glownego_spisu_tresci or nil;
end;
if(tabela_artykulow==0)then
if(czy_artykul_korzystany)then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"korzystana strona główna nie istnieje");
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"dołączone strony główne nie istnieją",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
end;
elseif(tabela_artykulow)then
if(parametry_modul.TypeTable(tabela_artykulow))then
if(adres_ksiazki_glownego_spisu_tresci)then
__FUNKCJA_SPISU(tablica_ksiazki,true);
local tablica_ksiazki_stara=tablica_ksiazki;
local artykul,kod_wyniku=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,true);
local nazwa_przestrzeni=adres_ksiazki_glownego_spisu_tresci[1];
local nazwa_przestrzeni_ksiazki=adres_ksiazki_glownego_spisu_tresci[2];
local nazwa_ksiazki=adres_ksiazki_glownego_spisu_tresci[3];
if((kod_wyniku==1)or(kod_wyniku==2))then
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul);
if(not wartosc_wyniku)then
return wartosc_wyniku,true;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
local nazwa_artykulu=artykul;
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku,true;
end;
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni ,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul);
tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,};
__FUNKCJA_SPISU(tablica_ksiazki,false);
return nil,nil,artykul,kod_wyniku;
elseif((kod_wyniku==3)or(kod_wyniku==4))then
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul);
tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,};
__FUNKCJA_SPISU(tablica_ksiazki,false);
return nil,nil,artykul,kod_wyniku;
end;
else
__FUNKCJA_SPISU(tablica_ksiazki,false);
end;
elseif(tabela_artykulow~=1)then
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(not wartosc_wyniku)then
return wartosc_wyniku,true;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku,true;
end;
end;
else
if(czy_artykul_korzystany)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak spisów treści do korzystanych książek na ich stronach głównych"))then
if(((self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu=="")and(nazwa_artykulu~=""))or(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu~=""))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak spisów treści do korzystanych książek na ich stronach głównych");
end;
end;
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"brak spisów treści do dołączonych książek na ich stronach głównych",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
end;
end;
end;
end;
end;
end;
----
local wartosc_wyniku,wynik_bledu,artykul_bazowy,kod_wyniku_bazowy=InneInformacjePrzebneDoAnalizowanejKsiazki();
if(wynik_bledu)then return wartosc_wyniku;end;
local kod_wyniku_przekierowan=kod_wyniku_bazowy;
----
--if((not tablica_przestrzeni)or(not tablica_przestrzeni_ksiazki)or(not tablica_ksiazki)or(not artykul_analizowany))then
-- tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
--end;
----
if((tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy)and(kod_wyniku_bazowy))--[[and((kod_wyniku_bazowy==1)or(kod_wyniku_bazowy==2))]]then
----
nazwa_przestrzeni=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[1];
nazwa_przestrzeni_ksiazki=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[2];
nazwa_ksiazki=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[3];
nazwa_artykulu=artykul_bazowy;
----
tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki=tablica_ksiazki.referencja_do_nowej_formy_spisu[1],tablica_ksiazki.referencja_do_nowej_formy_spisu[2],tablica_ksiazki.referencja_do_nowej_formy_spisu[3];
end;
local tabela_artykulow=tablica_ksiazki.spis;
if(tabela_artykulow)then
local nazwa_glownego_spisu=tablica_ksiazki.nazwa_bazowego_spisu;
local tab_inne_spisy=tablica_ksiazki.tab_inne_spisy;
local dodatkowe_artykuly=tablica_ksiazki.dodatkowe_strony_woluminu
local artykul,kod_wyniku=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,false);
if(kod_wyniku)then
nazwa_artykulu=artykul;
tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
end;
kod_wyniku_przekierowan=kod_wyniku_przekierowan or kod_wyniku;
end;
local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local PrzekierownieAwaryjne=function()
if(not kod_wyniku_przekierowan)then
--local artykul2,kod_wyniku2=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,true);
local techniczne_modul=require("Module:Techniczne");
local strona=techniczne_modul.PrzekierowanieDoStrony(nazwa_modulu);
if(strona)then
if(strona~=nazwa_modulu)then
----
local tabela_nazw={};
nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw);
nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw);
nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw) or nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw));
nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazwa);
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(not wartosc_wyniku)then
return wartosc_wyniku;
elseif(wartosc_wyniku==0)then
if(tabela_artykul)then
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku;
else
return wartosc_wyniku;
end;
end;
tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
nazwa_modulu=strona;
else
return 0;
end;
end;
end;
end;
local wynik=PrzekierownieAwaryjne();
if(czy_artykul_korzystany)then
self.nazwa_modulu_biezaca=nazwa_modulu;
end;
if(wynik)then return wynik;end;
----
if(czy_artykul_korzystany)then
if((not self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu))then
self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni=nazwa_przestrzeni;
self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu=nazwa_przestrzeni_ksiazki;
self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu=nazwa_ksiazki;
self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu=nazwa_artykulu;
end;
end;
local nazwa_modulu_aktualna_czy_biezaca=self.tabela_listy_danych_analizy_ksiazki.alternatywna and nazwy_modul["NazwaModułu"](self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu) or nazwa_modulu;
-- przydzielanie tablicy
if(czy_artykul_korzystany)then
artykul_analizowany.artykul_biezacy=true;
tablica_ksiazki.ksiazka_analizowana=true;
end;
--koniec
--local iterator=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,"{{[^{}]-}}");
if(not tablica_zmiennych)then tablica_zmiennych={};end;
if(not tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)then tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2={};end;
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
for _,element_w_tablicy_obiekt in pairs(stronicowyparser_obiekty_modul.tablica_obiektowych_form)do
local CzyLink=element_w_tablicy_obiekt.CzyLink;
local CzyNum=element_w_tablicy_obiekt.CzyNum;
local wartosc=element_w_tablicy_obiekt[1];
tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[wartosc]={CzyLink=CzyLink,CzyNum=CzyNum,};
if(czy_artykul_korzystany)then tablica_zmiennych.linkobiekt[wartosc]={CzyLink=CzyLink,CzyNum=CzyNum;};end;
end;
local function StronaZbiorcza()
if(czy_artykul_korzystany)then
local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
local TakFun=function(frame) return true;end;local NieFun=function(frame) return nil;end;
local wynik=stronicowyparser_stronasubst_modul.AnalizaStronaSubst(self.tabela_listy_danych_analizy_ksiazki,tablica_ksiazki.spis,nil,TakFun,NieFun,nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
artykul_analizowany.strona_zbiorcza=(wynik and "tak" or "");
return wynik;
end;
return nil;
end;
local strona_zbiorcza=StronaZbiorcza();
local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
local szablonowe_modul=require("Module:Szablonowe");
local nazwa_modulu_aktualna_czy_biezaca_szablonowa=szablonowe_modul["SzablonowaKompletnaNazwaStrony"](nazwa_modulu_aktualna_czy_biezaca);
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
----
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony;
if((not tekst_rozwiniety_calego_artykulu_ref)or(not tablica_analizy_obiektow_strony_dany_modul_ref)or(not tablica_danych_parametrow_szablonu_strony_ref))then
tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,(((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.inna_strona_aktualna_niz_biezaca))and true or nil),
nil)
else
tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=tekst_rozwiniety_calego_artykulu_ref,tablica_analizy_obiektow_strony_dany_modul_ref,tablica_danych_parametrow_szablonu_strony_ref;
end;
----
if(not czy_artykul_korzystany)then
if(not tekst_rozwiniety_calego_artykulu)then return 0;end;
end;
if(czy_artykul_korzystany)then
if(not tekst_rozwiniety_calego_artykulu)then
if(strona_zbiorcza)then
self.tabela_listy_danych_analizy_ksiazki["CzyStronaSubst"]="tak";
end;
return nil;
end;
end;
local parametry_modul=require("Module:Parametry");
if((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.inna_strona_aktualna_niz_biezaca))then
local aktualna_nazwa_modulu;local aktualna_nazwa_modulu_szablonowa;
if(nazwa_modulu_aktualna_czy_biezaca)then
aktualna_nazwa_modulu=nazwa_modulu_aktualna_czy_biezaca;
aktualna_nazwa_modulu_szablonowa=nazwa_modulu_aktualna_czy_biezaca_szablonowa;
else
aktualna_nazwa_modulu=nazwy_modul["NazwaModułu"](self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu);
aktualna_nazwa_modulu_szablonowa=szablonowe_modul["SzablonowaKompletnaNazwaStrony"](aktualna_nazwa_modulu);
end;
local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(self,aktualna_nazwa_modulu,aktualna_nazwa_modulu_szablonowa);
if(tekst)then
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,aktualna_nazwa_modulu);
local tablica_danych_parametrow_szablonu_strony={};
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,aktualna_nazwa_modulu_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(stronicowyparser_obiekty_modul.strona_start_ze_spisem_rzeczy_strony[nazwa_szablonu])then
self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak";
self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
return true;
elseif(stronicowyparser_obiekty_modul.strona_start[nazwa_szablonu])then
self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak";
self.tabela_listy_danych_analizy_ksiazki.formatowanie=tabela_parametrow_szablonu["formatowanie"];
local boczne_menu=tabela_parametrow_szablonu["boczne menu"] or "";
local spis_tresci=tabela_parametrow_szablonu["spis treści"] or "TOC";
if((parametry_modul.CzyTak(boczne_menu))or(parametry_modul.CzyTak(spis_tresci)))then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
end;
return true;
end;
end);
if(wynik)then break;end;
end;
end;
end;
end;
local uzyskano_w_wyniku_parsowania_wywolanie_szablonu;
local analiza_stron_korzystanych_zbiorczych=nil;
local stronastart=nil;
----
local tablica_obiekty=stronicowyparser_obiekty_modul.obiekty;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty;
local format_elementowy_referencji_obiektowy=stronicowyparser_obiekty_modul.format_elementowy_referencji_obiektowy;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
local szablony_wykorzystywane_przez_strony_zbiorcze=stronicowyparser_obiekty_modul.szablony_wykorzystywane_przez_strony_zbiorcze;
local format_elementowy_obiektowy=stronicowyparser_obiekty_modul.format_elementowy_obiektowy;
local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty;
local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_naglowka=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu;
local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
----
local strona_start=stronicowyparser_obiekty_modul.strona_start;
local strona_start_ze_spisem_rzeczy_strony=stronicowyparser_obiekty_modul.strona_start_ze_spisem_rzeczy_strony;
local strona_start_inne=stronicowyparser_obiekty_modul.strona_start_inne;
local szablony_strony_zbiorczej=stronicowyparser_obiekty_modul.strona_zbiorcza;
----
local tab_szablony=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_kontenerowe;
local tab_szablony_stronicowe_niekontenerowe=stronicowyparser_obiekty_modul.szablony_stronicowe_niekontenerowe;
local tab_szablony_stronicowe_formatowania_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowe_formatowania_tekstu;
local tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego=stronicowyparser_obiekty_modul.szablony_stronicowe_kontenerowe_formatowania_wzorowego;
----
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local stronicowyparser_zbieraniedanychstron_poprzebne_modul=require("Module:StronicowyParser/ZbieranieDanychStron/Potrzebne");
local tabela_elementow_strony_kodow={};
----
-- for uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod in iterator do
local function AnalizaParametrowaOrazNazwowaStronicowegoIteratoraSzablonowego(tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer)
if(czy_artykul_korzystany)then
if(tabela_parametrow_szablonu)then
if((not stronastart)and(self.tabela_listy_danych_analizy_ksiazki.formatowanie==nil))then
if(strona_start[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak";
self.tabela_listy_danych_analizy_ksiazki.formatowanie=tabela_parametrow_szablonu["formatowanie"];
stronastart=true;
local boczne_menu=tabela_parametrow_szablonu["boczne menu"] or "";
local spis_tresci=tabela_parametrow_szablonu["spis treści"] or "TOC";
if((parametry_modul.CzyTak(boczne_menu))or(parametry_modul.CzyTak(spis_tresci)))then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
end;
return;
elseif(strona_start_ze_spisem_rzeczy_strony[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak";
self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
stronastart=true;
return;
elseif(strona_start_inne[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak";
self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
stronastart=true;
return;
elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then
analiza_stron_korzystanych_zbiorczych=true;
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"];
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"];
if((not parametry_modul.CzyTak(nazwa_prestreni_nazw))and(not parametry_modul.CzyTak(nazwa_jednostki)))then
return;
end;
end;
elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then
analiza_stron_korzystanych_zbiorczych=true;
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"];
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"];
if((not parametry_modul.CzyTak(nazwa_przestrzeni))and(not parametry_modul.CzyTak(nazwa_jednostki)))then
return;
end;
end;
end;
end;
local plik=mw.ustring.match(nazwa_szablonu_wywolania,"^:");
if(plik==nil)then
if(tabela_parametrow_szablonu)then
if(not parametry_modul.CzyTak(tabela_parametrow_szablonu["bez automatu"]))then
local czy_wypowiedzenie=(nazwa_szablonu_wywolania=="Wypowiedzenie");
local czy_linkobiekt;
local czy_link;local czy_pobierz;
local czy_wypowiedzenie_z_parametrami;
local czy_linkobiekt_z_parametrami;
if(czy_wypowiedzenie)then
czy_linkobiekt=false;
czy_link=false;
czy_pobierz=false;
czy_wypowiedzenie_z_parametrami=parametry_modul.CzyTak(tabela_parametrow_szablonu["rodzaj"]);
else
czy_linkobiekt=(nazwa_szablonu_wywolania=="LinkObiekt");
if(czy_linkobiekt)then
czy_link=true;
czy_pobierz=false;
czy_linkobiekt_z_parametrami=parametry_modul.CzyTak(tabela_parametrow_szablonu["typ"]);
else
czy_link=mw.ustring.match(nazwa_szablonu_wywolania,"^Link");
czy_pobierz=(not czy_link) and mw.ustring.match(nazwa_szablonu_wywolania,"^Pobierz") or nil;
end;
end;
if((not czy_link)and(not czy_pobierz))then
local wartosc_elementu;local numer_uchwytu;
if(not czy_wypowiedzenie_z_parametrami) then
local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty[nazwa_szablonu_wywolania];
if(tab_wartosc_elementu)then
wartosc_elementu=tab_wartosc_elementu[1];
numer_uchwytu=tab_wartosc_elementu[2];
end;
else
local rodzaj=tabela_parametrow_szablonu["rodzaj"];
if(rodzaj)then
wartosc_elementu=format_elementowy_obiektowy[rodzaj] and rodzaj or nil;
if(wartosc_elementu)then
numer_uchwytu=tablica_obiekty[5];
end;
end;
end;
if(wartosc_elementu)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
if(uchwyt_obiektu and (uchwyt_obiektu~=""))then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
end;
stronicowyparser_zbieraniedanychstron_poprzebne_modul.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],tab_numer,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
end;
elseif(czy_artykul_korzystany)then
if(czy_link)then
local wartosc_elementu;
if(not czy_linkobiekt_z_parametrami)then
wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty[nazwa_szablonu_wywolania];
else
local typ=tabela_parametrow_szablonu["typ"];
if(typ)then
typ=format_elementowy_referencji_obiektowy[typ] and typ or nil;
if(typ)then
wartosc_elementu=mw.getContentLanguage():ucfirst(typ);
end;
end;
end;
if(wartosc_elementu)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Link"..wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
stronicowyparser_zbieraniedanychstron_poprzebne_modul.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
else
local wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu[nazwa_szablonu_wywolania];
if(wartosc_elementu)then
local korzystane=self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
stronicowyparser_zbieraniedanychstron_poprzebne_modul.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=korzystane;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
return;
end;
end;
elseif(czy_pobierz)then
local wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu[nazwa_szablonu_wywolania];
if(wartosc_elementu)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
stronicowyparser_zbieraniedanychstron_poprzebne_modul.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie,true);
return;
end;
end;
end;
if(czy_wypowiedzenie)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Obiekt:"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
stronicowyparser_zbieraniedanychstron_poprzebne_modul.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,"Obiekt", czy_artykul_korzystany,tablica_obiekty[5],tab_numer,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
elseif(stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_wprowadzenia_tekstu[nazwa_szablonu_wywolania])then
local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_naglowka[nazwa_szablonu_wywolania];
local wartosc_elementu;local numer_uchwytu;
if(tab_wartosc_elementu)then
wartosc_elementu=tab_wartosc_elementu[1];
numer_uchwytu=tab_wartosc_elementu[2];
end;
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
if(uchwyt_obiektu and (uchwyt_obiektu~=""))then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
end;
local lista_dwuelementowa=stronicowyparser_zbieraniedanychstron_poprzebne_modul.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],tab_numer,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
stronicowyparser_zbieraniedanychstron_poprzebne_modul.UstawUchwytyWeTablicyBezNumeracji(self,tabela_elementow_strony_kodow,wartosc_elementu,lista_dwuelementowa,kod);
if(czy_artykul_korzystany)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
end;
return;
elseif(stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu[nazwa_szablonu_wywolania])then
local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu[nazwa_szablonu_wywolania];
local wartosc_elementu;local numer_uchwytu;
if(tab_wartosc_elementu)then
wartosc_elementu=tab_wartosc_elementu[1];
numer_uchwytu=tab_wartosc_elementu[2];
end;
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
if(uchwyt_obiektu and (uchwyt_obiektu~=""))then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
end;
local lista_dwuelementowa=stronicowyparser_zbieraniedanychstron_poprzebne_modul.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],tab_numer,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
if(lista_dwuelementowa)then
local stronicowyparser_szablonytekstu_modul=require("Module:StronicowyParser/SzablonyTekstu");
local tekst=stronicowyparser_szablonytekstu_modul.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu);
local bez_preprocess=stronicowyparser_szablonytekstu_modul.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu);
local czy_bez_preprocess=parametry_modul.CzyTak(bez_preprocess);
if(tekst)then
----
local tekst_stare=tekst;
local tablica_analizy_obiektow_strony_dany_modul_stare=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_analizy_obiektow_strony_dany_modul);
local tablica_danych_parametrow_szablonu_strony_stare=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_danych_parametrow_szablonu_strony);
local tabela_parametrow_szablonu_stare=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tabela_parametrow_szablonu);
----
local tekst_szablon=stronicowyparser_szablonytekstu_modul.PreparowanieSzablonoweLinkoweSzablonuTekstu(szablonowe_modul.NormaKoduKodowaniaTekstu("SZABLON",kod),nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_ksiazki,nazwa_artykulu,czy_bez_preprocess);
local tekst=stronicowyparser_szablonytekstu_modul.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu);
local czy_szablon_wszystko=false;
tekst_stare=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_stare,nil,tablica_analizy_obiektow_strony_dany_modul_stare,
function(szablon,obiekt,kod)
if(czy_bez_preprocess)then return nil;end;
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony_stare,kod,nazwa_modulu,
function(tabela_parametrow_szablonu_stare,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(
(tab_szablony[nazwa_szablonu])
or(tab_szablony_stronicowe_niekontenerowe[nazwa_szablonu])
or(tab_szablony_stronicowe_formatowania_tekstu[nazwa_szablonu])
or(tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego[nazwa_szablonu])
)then
if(not czy_artykul_korzystany)then
tabela_parametrow_szablonu_stare["nazwa przestrzeni nazw"]=tabela_parametrow_szablonu_stare["nazwa przestrzeni nazw"] or nazwa_przestrzeni;
tabela_parametrow_szablonu_stare["nazwa jednostki"]=tabela_parametrow_szablonu_stare["nazwa jednostki"] or (((nazwa_przestrzeni_ksiazki~="") and (nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki..((nazwa_artykulu~="") and ("/"..nazwa_artykulu) or ""))
if(self)then
local czy_link_lub_pobierz=mw.ustring.match(nazwa_szablonu,"^Link") or mw.ustring.match(nazwa_szablonu,"^Pobierz");
if(czy_link_lub_pobierz)then
stronicowyparser_zbieraniedanychstron_poprzebne_modul.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu_stare,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
else
stronicowyparser_zbieraniedanychstron_poprzebne_modul.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu_stare,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
end;
end;
end;
return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu_stare,tabela_modyfikatorow,true);
end;
return nil;
end,
function(tabela_parametrow_szablonu_stare,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
---- instrukcje warunkowe;
return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu_stare,tabela_modyfikatorow,true);
end,
function(tabela_parametrow_szablonu_stare,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
---- wywołania ramek Lua w Scribunto
return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu_stare,tabela_modyfikatorow,true);
end,
function(tabela_parametrow_szablonu_stare,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
---- tagi szablonowe;
return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu_stare,tabela_modyfikatorow,true);
end);
czy_szablon_wszystko=czy_szablon_wszystko or true;
if(wynik)then return wynik;end;
elseif(obiekt=="ZMIENNA")then
czy_szablon_wszystko=czy_szablon_wszystko or true;
local zawartosc=mw.ustring.match(szablon,"^{{{(.*)}}}$");
if(zawartosc)then
zawartosc=mw.ustring.gsub(zawartosc,"|","{{!}}");
return "{{(((}}"..zawartosc.."{{)))}}";
end;
end;
end);
if((czy_szablon_wszystko)and(not czy_bez_preprocess))then
local frame=mw.getCurrentFrame();
tekst_stare=frame:preprocess(tekst_stare);
end;
lista_dwuelementowa[2]=tekst_stare;
--local __metatabelka=getmetatable(tabela_parametrow_szablonu_stare);
--if(__metatabelka)then setmetatable(tabela_parametrow_szablonu_stare,nil);end;
stronicowyparser_szablonytekstu_modul.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu_stare,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul_stare,tablica_danych_parametrow_szablonu_strony_stare,czy_artykul_korzystany);
end;
end;
return;
elseif(czy_artykul_korzystany)then
if(czy_linkobiekt)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="LinkObiekt:"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
stronicowyparser_zbieraniedanychstron_poprzebne_modul.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,"Obiekt",nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
else
if(stronicowyparser_obiekty_modul.szablony_z_lokalnym_spisem_rzeczy_strony[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
return;
elseif(stronicowyparser_obiekty_modul.bez_uchwytow_spis_rzeczy_strony[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true;
local korzystane=self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA_KATEGORIE)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[2] or "";
local artykul=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[1] or "";
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..nazwa_ksiazki..((artykul)and ("/"..artykul) or "")
end;
end;
stronicowyparser_zbieraniedanychstron_poprzebne_modul.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=korzystane;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
return;
elseif(stronicowyparser_obiekty_modul.szablony_spisu[nazwa_szablonu_wywolania])then
local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA_KATEGORIE)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[2] or "";
local artykul=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[1] or "";
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..nazwa_ksiazki..((artykul)and ("/"..artykul) or "")
end;
end;
local czy_analiza=parametry_modul.CzyTak(tabela_parametrow_szablonu["analiza"]);
local czy_parser=parametry_modul.CzyTak(tabela_parametrow_szablonu["parser"]);
local czy_specjalne=parametry_modul.CzyTak(tabela_parametrow_szablonu["specjalne"]);
local dokumentacja=tabela_parametrow_szablonu["dokumentacja"];
local czy_dokumentacja;
if(not dokumentacja)then
czy_dokumentacja=czy_analiza or czy_specjalne or czy_parser;
else
czy_dokumentacja=parametry_modul.CzyTak(dokumentacja);
end;
if(
((czy_dokumentacja)and(czy_parser))
or((not czy_dokumentacja)and(czy_analiza))
)then
stronicowyparser_zbieraniedanychstron_poprzebne_modul.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
end;
return;
else
local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA_KATEGORIE)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local nazwy_modul=require("Module:Nazwy");
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or "";
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or "";
local nazwa_symulacyjnej_strony=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki;
local uchwyt=nazwa_szablonu_wywolania..":"..nazwa_symulacyjnej_strony;
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=uchwyt;
end;
end;
if((stronicowyparser_obiekty_modul.szablony_kontenerowe[nazwa_szablonu_wywolania])
or(szablony_strony_zbiorczej[nazwa_szablonu_wywolania])
)then
if(szablony_wykorzystywane_przez_strony_zbiorcze[nazwa_szablonu_wywolania])then
stronicowyparser_zbieraniedanychstron_poprzebne_modul.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true,KtorySzablonMaZwracacKategorie);
else
stronicowyparser_zbieraniedanychstron_poprzebne_modul.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nil,KtorySzablonMaZwracacKategorie);
end;
return;
elseif((strona_zbiorcza)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then
stronicowyparser_zbieraniedanychstron_poprzebne_modul.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true,KtorySzablonMaZwracacKategorie);
return;
end;
end;
end;
end;
end;
end;
end;
end;
----
local function GeneralnaAnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer)
stronicowyparser_potrzebne_modul:AnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_danych_parametrow_szablonu_strony,AnalizaParametrowaOrazNazwowaStronicowegoIteratoraSzablonowego);
end;
local function IterowaniePoElementachTekstu(tekst_rozwiniety_calego_artykulu,tab_numer)
--local stronicowyparser_szablonytekstu_modul=require("Module:StronicowyParser/SzablonyTekstu");
--tekst_rozwiniety_calego_artykulu=stronicowyparser_szablonytekstu_modul.PreparowanieSzablonoweLinkoweSzablonuTekstu(tekst_rozwiniety_calego_artykulu,"",nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul);
for uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod in iterator do
GeneralnaAnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer);
end;
end;
if(czy_artykul_korzystany)then
self.tabela_listy_danych_analizy_ksiazki.nazwa_bazowa_strony=nazwy_modul["PEŁNABAZOWANAZWASTRONY"](nazwa_modulu);
end;
IterowaniePoElementachTekstu(tekst_rozwiniety_calego_artykulu);
----
local tablica_danych_nazwy_artykulu=tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu] or {};
tablica_danych_nazwy_artykulu.uchwyty_i_numeracje=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2;
----
local wiki_modul=require("Module:Wiki");
tablica_danych_nazwy_artykulu.link_wikidane={wiki_modul.KodyKlasStronyNaDanejWiki{["strona"]=nazwa_modulu_aktualna_czy_biezaca,["nagłówek"]=true,["aktywny"]=true,},};
if(not czy_artykul_korzystany)then
if(pozawoluminowe_strony)then
if(not tablica_danych_nazwy_artykulu.prefiks_numeru_woluminowego_strony)then
local nazwa_modulu_korzystana_bazowa=self.tabela_listy_danych_analizy_ksiazki.nazwa_bazowa_strony;
local stronicowyparser_pomocne_modul=require("Module:StronicowyParser/Pomocne");
local zrostek=stronicowyparser_pomocne_modul["SkrótDoNumeruOdnośnika"](nazwa_modulu_korzystana_bazowa,nazwa_modulu);
tablica_danych_nazwy_artykulu.prefiks_numeru_woluminowego_strony={zrostek,pozawoluminowe_strony,czy_artykul_korzystany,};
end;
else
local niekorzystany_wolumin=(not korzystany_wolumin);
if(niekorzystany_wolumin)then
if(not tablica_danych_nazwy_artykulu.prefiks_numeru_woluminowego_strony)then
local stronicowyparser_pomocne_modul=require("Module:StronicowyParser/Pomocne");
local zrostek=stronicowyparser_pomocne_modul["SkrótDoNumeruOdnośnikaDołączonejKsiążki"](nazwa_ksiazki);
tablica_danych_nazwy_artykulu.prefiks_numeru_woluminowego_strony={zrostek,niekorzystany_wolumin,czy_artykul_korzystany,};
end;
end;
end;
end;
----
if(czy_artykul_korzystany)then
if(analiza_stron_korzystanych_zbiorczych)then
local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
tekst_rozwiniety_calego_artykulu=stronicowyparser_stronasubst_modul.LiczOperacjeStronZbiorczych(self,tekst_rozwiniety_calego_artykulu,tablica_ksiazki.spis,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
end;
end;
local strona;
if(czy_artykul_korzystany)then strona="";else strona=nazwa_modulu;end;
----
if(czy_artykul_korzystany)then
local stronicowyparser_szablonytekstu_modul=require("Module:StronicowyParser/SzablonyTekstu");
stronicowyparser_szablonytekstu_modul.UstawPobierzKorzystanie(tablica_zmiennych);
tekst_rozwiniety_calego_artykulu=stronicowyparser_szablonytekstu_modul.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu) or tekst_rozwiniety_calego_artykulu;
end;
----
local function SpisToc(self,czy_artykul_korzystany,tablica_danych_nazwy_artykulu,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,tabela_elementow_strony_kodow,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki, nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
return function()
if(((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane))
or((not czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)))then
----
local tablica_obiektow_strony_danych_kodow_specjalnych_modul=nil;
----
tekst_rozwiniety_calego_artykulu,tablica_obiektow_strony_danych_kodow_specjalnych_modul=szablonowe_modul:KodowanieInaczejZakodowanychNormKodowychTekstuWedleJegoTablicyKodowania(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,false);
----
local function KtorySzablonMaZwracacKategorieNaglowek(numeracja_aktualna,nazwa_szablonu)
if(czy_artykul_korzystany)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"powtórka nagłowek w stronie korzystanej"))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"powtórka nagłowek w stronie korzystanej");
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"powtórka nagłówek w stronie dołączonej",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
end;
local function KtorySzablonMaZwracacKategorieTekst(numeracja_aktualna,nazwa_szablonu)
if(czy_artykul_korzystany)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej"))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej");
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"nagłowek w tekście rozdziału w stronie dołączonej",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
end;
local function CzyJestTakiProblemJakoElementTablicySzablonuNaglowkaPozaNapisemWprowadzeniaTekstu()
return stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej");
end;
local nazwa_naglowka=stronicowyparser_obiekty_modul.nazwa_szablonu_wprowadzenia_tekstu;
local stronicowyparser_glownafunkcjazbieraniadanych_modul=require("Module:StronicowyParser/GłównaFunkcjaZbieraniaDanychStron");
local tablica_naglowka_obiekty=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_naglowka];
tablica_naglowka_obiekty.uchwyty_bez_numeracji={};
local toc=stronicowyparser_glownafunkcjazbieraniadanych_modul.SpisRzeczyWedlePodanegoTekstu(self,tekst_rozwiniety_calego_artykulu,strona,czy_artykul_korzystany,nil,tablica_naglowka_obiekty.uchwyty_bez_numeracji, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki, nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_obiektow_strony_danych_kodow_specjalnych_modul,{KtorySzablonMaZwracacKategorieNaglowek,KtorySzablonMaZwracacKategorieTekst,CzyJestTakiProblemJakoElementTablicySzablonuNaglowkaPozaNapisemWprowadzeniaTekstu,},nil,tabela_elementow_strony_kodow);
tablica_danych_nazwy_artykulu.TOC=toc;
return true;
end;
end;
end;
local czy_spis_function=SpisToc(self,czy_artykul_korzystany,tablica_danych_nazwy_artykulu,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,tabela_elementow_strony_kodow,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki, nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
local wynik=czy_spis_function();
if(not czy_artykul_korzystany)then
if(not wynik)then
tablica_danych_nazwy_artykulu.TOCSPIS_FUNCTION=czy_spis_function;
end;
end;
StronaSubstFunkcja(tablica_danych_nazwy_artykulu,tablica_ksiazki.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(czy_artykul_korzystany)then
self.tabela_listy_danych_analizy_ksiazki.link_wikidane=tablica_danych_nazwy_artykulu.link_wikidane;
self.tabela_listy_danych_analizy_ksiazki.prefiks_numeru_woluminowego_strony=tablica_danych_nazwy_artykulu.prefiks_numeru_woluminowego_strony;
self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2;
self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni];
self.tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki=self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw[nazwa_przestrzeni_ksiazki];
self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_ksiazki=self.tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki[nazwa_ksiazki];
--self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron=tablica_zmiennych;
end;
if(not czy_artykul_korzystany)then
tablica_danych_nazwy_artykulu.dane_zebrane_ze_stron=tablica_zmiennych;
if(not self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista)then self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista={};end;
table.insert(self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista,tablica_danych_nazwy_artykulu);
else
local dane_zebrane_ze_stron_lista=self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista;
if(dane_zebrane_ze_stron_lista)then
for _,tablica_danych_nazwy_artykulu in ipairs(dane_zebrane_ze_stron_lista)do
tablica_danych_nazwy_artykulu.dane_zebrane_ze_stron=nil;
tablica_danych_nazwy_artykulu.TOCSPIS_FUNCTION=nil;
end;
end;
tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane=nil;
end;
return self.tabela_listy_danych_analizy_ksiazki,tablica_zmiennych,true;
end;
return p;
swci3ro64nc9fn1eys7unr0izlszh56
558363
558360
2026-10-02T21:49:57Z
Persino
2851
558363
Scribunto
text/plain
local p={};
function p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, czy_artykul_korzystany,tablica_zmiennych,czy_szablon_pudelkowy_strony_zbiorczej)
local function __FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if(not self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni])then self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]={};end;
local tablica_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni];
if(not tablica_przestrzeni[nazwa_przestrzeni_ksiazki])then tablica_przestrzeni[nazwa_przestrzeni_ksiazki]={};end;
local tablica_przestrzeni_ksiazki=tablica_przestrzeni[nazwa_przestrzeni_ksiazki];
if(not tablica_przestrzeni_ksiazki[nazwa_ksiazki])then tablica_przestrzeni_ksiazki[nazwa_ksiazki]={};end;
local tablica_ksiazki=tablica_przestrzeni_ksiazki[nazwa_ksiazki];
if(not tablica_ksiazki.lista_podstron_woluminu)then tablica_ksiazki.lista_podstron_woluminu={};end;
if(nazwa_artykulu)then
if(not tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu])then tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu]={};end;
local artykul_analizowany=tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu];
return tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany;
else
return tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki;
end;
end;
local korzystany_wolumin=false;
local function __FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if(not czy_artykul_korzystany)then
if(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni and self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu and self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu and self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu)then
if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu==nazwa_przestrzeni_ksiazki)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu==nazwa_ksiazki))then
korzystany_wolumin=true;
if(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu)then
return 0,nil,nil,nil,nil,nil,self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron,false;
else
if(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=true;
end;
end;
else
if(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=true;
end;
end;
else
return nil;
end;
else
korzystany_wolumin=true;
end;
if(self.tabela_listy_danych_analizy_ksiazki)then
if(self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron)then
local tabela_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni];
if(tabela_przestrzeni)then
local tabela_przestrzeni_ksiazki=tabela_przestrzeni[nazwa_przestrzeni_ksiazki];
if(tabela_przestrzeni_ksiazki)then
local tabela_ksiazka=tabela_przestrzeni_ksiazki[nazwa_ksiazki];
if(tabela_ksiazka)then
local lista_artykolow=tabela_ksiazka.lista_podstron_woluminu;
if(lista_artykolow)then
local tabela_artykul=lista_artykolow[nazwa_artykulu];
if(tabela_artykul)then
local dane_zebrane_ze_stron=tabela_artykul.dane_zebrane_ze_stron;
----
if(not czy_artykul_korzystany)then
if(tabela_artykul.TOCSPIS_FUNCTION)then
local wynik=tabela_artykul.TOCSPIS_FUNCTION();
if(wynik)then
tabela_artykul.TOCSPIS_FUNCTION=nil;
end;
end;
end;
return 0,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni,dane_zebrane_ze_stron,true;
end;
end;
end;
end;
end;
else
return nil;
end;
else
return nil;
end;
return true;
end;
local nazwy_modul=require("Module:Nazwy");
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni,dane_zebrane_ze_stron,czy_inna=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local function StronaSubstFunkcja(tabela_artykul,spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if((czy_szablon_pudelkowy_strony_zbiorczej)and(not czy_artykul_korzystany)and(tabela_artykul)and(not tabela_artykul.strona_zbiorcza))then
--local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
local TakFun=function(frame) return "tak";end;local NieFun=function(frame) return "";end;
tabela_artykul.strona_zbiorcza=stronicowyparser_stronasubst_modul.AnalizaStronaSubst(self.tabela_listy_danych_analizy_ksiazki,spis,nil,TakFun,NieFun,nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
end;
end;
if(not wartosc_wyniku)then
return wartosc_wyniku,dane_zebrane_ze_stron,czy_inna;
elseif(wartosc_wyniku==0)then
if(tabela_artykul)then
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku,dane_zebrane_ze_stron,czy_inna;
else
return wartosc_wyniku,dane_zebrane_ze_stron,czy_inna;
end;
end;
----
local pozawoluminowe_strony;
----
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if((nazwa_przestrzeni~=nazwy_np_modul.Main)
and(nazwa_przestrzeni~=nazwy_np_modul.Wikijunior)
and((nazwa_przestrzeni~=nazwy_np_modul.User)or(not mw.ustring.match(nazwa_przestrzeni_ksiazki,"^([^/]+)$")))
and((nazwa_przestrzeni~=nazwy_np_modul.Wikibooks)or(not mw.ustring.match(nazwa_przestrzeni_ksiazki,"^%s*[Bb]rudnopis/([^/]+)$")))
)then
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
pozawoluminowe_strony=true;
end;
----
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local parametry_modul=require("Module:Parametry");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
----
local tekst_rozwiniety_calego_artykulu_ref=nil;
local tablica_analizy_obiektow_strony_dany_modul_ref=nil;
local tablica_danych_parametrow_szablonu_strony_ref=nil;
----
local function InneInformacjePrzebneDoAnalizowanejKsiazki()
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then
if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki))then
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki["CzyArtykułKsiążki"])then self.tabela_listy_danych_analizy_ksiazki["CzyArtykułKsiążki"]="tak";end;
end;
local czy_ksiazka_istnieje_w_tablicy=((tablica_ksiazki)and(tablica_ksiazki.czy_spis_analizowano))and true or false;
if(not czy_ksiazka_istnieje_w_tablicy)then
tablica_ksiazki.czy_spis_analizowano=true;
local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści");
local nazwa_przestrzeni_strona_temp,nazwa_przestrzeni_ksiazki_strona_temp,nazwa_ksiazki_strona_temp;
local tabela_artykulow,tabela_licencji_spisu_tresci,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,adres_ksiazki_glownego_spisu_tresci=stronicowyparser_spistresci_modul.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,czy_artykul_korzystany,function(nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona)
local tablica_przestrzeni_strona=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni_strona];
if(tablica_przestrzeni_strona)then
local tablica_przestrzeni_ksiazki_strona=tablica_przestrzeni_strona[nazwa_przestrzeni_ksiazki_strona];
if(tablica_przestrzeni_ksiazki_strona)then
local tablica_ksiazki_strona=tablica_przestrzeni_ksiazki_strona[nazwa_ksiazki_strona];
if(tablica_ksiazki_strona)then
if(tablica_ksiazki_strona.spis)then
nazwa_przestrzeni_strona_temp,nazwa_przestrzeni_ksiazki_strona_temp,nazwa_ksiazki_strona_temp=nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona;
tablica_ksiazki.spis=tablica_ksiazki_strona.spis;
tablica_ksiazki.licencja=tablica_ksiazki_strona.licencja;
tablica_ksiazki.nazwa_bazowego_spisu=tablica_ksiazki_strona.nazwa_bazowego_spisu;
tablica_ksiazki.tab_inne_spisy=tablica_ksiazki_strona.tab_inne_spisy;
tablica_ksiazki.dodatkowe_strony_woluminu=tablica_ksiazki_strona.dodatkowe_strony_woluminu;
tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy=tablica_ksiazki_strona.adres_woluminu_bazowego_spisu_rzeczy;
tablica_ksiazki.referencja_do_nowej_formy_spisu={tablica_przestrzeni_strona,tablica_przestrzeni_ksiazki_strona,tablica_ksiazki_strona,};
return 1;
end;
end;
end
end;
end,function(tekst_rozwiniety_calego_artykulu_ref_spis,nazwa_przestrzeni_ref_spis,nazwa_przestrzeni_ksiazki_ref_spis,nazwa_ksiazki_ref_spis,nazwa_artykulu_ref_spis,tablica_analizy_obiektow_strony_dany_modul_ref_spis,tablica_danych_parametrow_szablonu_strony_ref_spis)
----
if((nazwa_przestrzeni==nazwa_przestrzeni_ref_spis)and(nazwa_przestrzeni_ksiazki==nazwa_przestrzeni_ksiazki_ref_spis)and(nazwa_ksiazki==nazwa_ksiazki_ref_spis)and(nazwa_artykulu==nazwa_artykulu_ref_spis))then
tekst_rozwiniety_calego_artykulu_ref=tekst_rozwiniety_calego_artykulu_ref_spis;
local parametry_modul=require("Module:Parametry");
tablica_analizy_obiektow_strony_dany_modul_ref=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_analizy_obiektow_strony_dany_modul_ref_spis);
tablica_danych_parametrow_szablonu_strony_ref=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_danych_parametrow_szablonu_strony_ref_spis);
end;
----
end);
local function __FUNKCJA_SPISU(tablica_ksiazki,czy_podac_adres)
tablica_ksiazki.spis=tabela_artykulow;
if(czy_artykul_korzystany)then
tablica_ksiazki.licencja=tabela_licencji_spisu_tresci;
end;
tablica_ksiazki.nazwa_bazowego_spisu=nazwa_glownego_spisu;
tablica_ksiazki.tab_inne_spisy=tab_inne_spisy;
tablica_ksiazki.dodatkowe_strony_woluminu=dodatkowe_artykuly;
tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy=czy_podac_adres and adres_ksiazki_glownego_spisu_tresci or nil;
end;
if(tabela_artykulow==0)then
if(czy_artykul_korzystany)then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"korzystana strona główna nie istnieje");
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"dołączone strony główne nie istnieją",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
end;
elseif(tabela_artykulow)then
if(parametry_modul.TypeTable(tabela_artykulow))then
if(adres_ksiazki_glownego_spisu_tresci)then
__FUNKCJA_SPISU(tablica_ksiazki,true);
local tablica_ksiazki_stara=tablica_ksiazki;
local artykul,kod_wyniku=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,true);
local nazwa_przestrzeni=adres_ksiazki_glownego_spisu_tresci[1];
local nazwa_przestrzeni_ksiazki=adres_ksiazki_glownego_spisu_tresci[2];
local nazwa_ksiazki=adres_ksiazki_glownego_spisu_tresci[3];
if((kod_wyniku==1)or(kod_wyniku==2))then
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul);
if(not wartosc_wyniku)then
return wartosc_wyniku,true;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
local nazwa_artykulu=artykul;
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku,true;
end;
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni ,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul);
tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,};
__FUNKCJA_SPISU(tablica_ksiazki,false);
return nil,nil,artykul,kod_wyniku;
elseif((kod_wyniku==3)or(kod_wyniku==4))then
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul);
tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,};
__FUNKCJA_SPISU(tablica_ksiazki,false);
return nil,nil,artykul,kod_wyniku;
end;
else
__FUNKCJA_SPISU(tablica_ksiazki,false);
end;
elseif(tabela_artykulow~=1)then
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(not wartosc_wyniku)then
return wartosc_wyniku,true;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku,true;
end;
end;
else
if(czy_artykul_korzystany)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak spisów treści do korzystanych książek na ich stronach głównych"))then
if(((self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu=="")and(nazwa_artykulu~=""))or(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu~=""))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak spisów treści do korzystanych książek na ich stronach głównych");
end;
end;
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"brak spisów treści do dołączonych książek na ich stronach głównych",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
end;
end;
end;
end;
end;
end;
----
local wartosc_wyniku,wynik_bledu,artykul_bazowy,kod_wyniku_bazowy=InneInformacjePrzebneDoAnalizowanejKsiazki();
if(wynik_bledu)then return wartosc_wyniku;end;
local kod_wyniku_przekierowan=kod_wyniku_bazowy;
----
--if((not tablica_przestrzeni)or(not tablica_przestrzeni_ksiazki)or(not tablica_ksiazki)or(not artykul_analizowany))then
-- tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
--end;
----
if((tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy)and(kod_wyniku_bazowy))--[[and((kod_wyniku_bazowy==1)or(kod_wyniku_bazowy==2))]]then
----
nazwa_przestrzeni=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[1];
nazwa_przestrzeni_ksiazki=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[2];
nazwa_ksiazki=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[3];
nazwa_artykulu=artykul_bazowy;
----
tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki=tablica_ksiazki.referencja_do_nowej_formy_spisu[1],tablica_ksiazki.referencja_do_nowej_formy_spisu[2],tablica_ksiazki.referencja_do_nowej_formy_spisu[3];
end;
local tabela_artykulow=tablica_ksiazki.spis;
if(tabela_artykulow)then
local nazwa_glownego_spisu=tablica_ksiazki.nazwa_bazowego_spisu;
local tab_inne_spisy=tablica_ksiazki.tab_inne_spisy;
local dodatkowe_artykuly=tablica_ksiazki.dodatkowe_strony_woluminu
local artykul,kod_wyniku=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,false);
if(kod_wyniku)then
nazwa_artykulu=artykul;
tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
end;
kod_wyniku_przekierowan=kod_wyniku_przekierowan or kod_wyniku;
end;
local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local PrzekierownieAwaryjne=function()
if(not kod_wyniku_przekierowan)then
--local artykul2,kod_wyniku2=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,true);
local techniczne_modul=require("Module:Techniczne");
local strona=techniczne_modul.PrzekierowanieDoStrony(nazwa_modulu);
if(strona)then
if(strona~=nazwa_modulu)then
----
local tabela_nazw={};
nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw);
nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw);
nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw) or nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw));
nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazwa);
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(not wartosc_wyniku)then
return wartosc_wyniku;
elseif(wartosc_wyniku==0)then
if(tabela_artykul)then
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku;
else
return wartosc_wyniku;
end;
end;
tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
nazwa_modulu=strona;
else
return 0;
end;
end;
end;
end;
local wynik=PrzekierownieAwaryjne();
if(czy_artykul_korzystany)then
self.nazwa_modulu_biezaca=nazwa_modulu;
end;
if(wynik)then return wynik;end;
----
if(czy_artykul_korzystany)then
if((not self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu))then
self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni=nazwa_przestrzeni;
self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu=nazwa_przestrzeni_ksiazki;
self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu=nazwa_ksiazki;
self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu=nazwa_artykulu;
end;
end;
local nazwa_modulu_aktualna_czy_biezaca=self.tabela_listy_danych_analizy_ksiazki.alternatywna and nazwy_modul["NazwaModułu"](self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu) or nazwa_modulu;
-- przydzielanie tablicy
if(czy_artykul_korzystany)then
artykul_analizowany.artykul_biezacy=true;
tablica_ksiazki.ksiazka_analizowana=true;
end;
--koniec
--local iterator=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,"{{[^{}]-}}");
if(not tablica_zmiennych)then tablica_zmiennych={};end;
if(not tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)then tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2={};end;
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
for _,element_w_tablicy_obiekt in pairs(stronicowyparser_obiekty_modul.tablica_obiektowych_form)do
local CzyLink=element_w_tablicy_obiekt.CzyLink;
local CzyNum=element_w_tablicy_obiekt.CzyNum;
local wartosc=element_w_tablicy_obiekt[1];
tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[wartosc]={CzyLink=CzyLink,CzyNum=CzyNum,};
if(czy_artykul_korzystany)then tablica_zmiennych.linkobiekt[wartosc]={CzyLink=CzyLink,CzyNum=CzyNum;};end;
end;
local function StronaZbiorcza()
if(czy_artykul_korzystany)then
local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
local TakFun=function(frame) return true;end;local NieFun=function(frame) return nil;end;
local wynik=stronicowyparser_stronasubst_modul.AnalizaStronaSubst(self.tabela_listy_danych_analizy_ksiazki,tablica_ksiazki.spis,nil,TakFun,NieFun,nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
artykul_analizowany.strona_zbiorcza=(wynik and "tak" or "");
return wynik;
end;
return nil;
end;
local strona_zbiorcza=StronaZbiorcza();
local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
local szablonowe_modul=require("Module:Szablonowe");
local nazwa_modulu_aktualna_czy_biezaca_szablonowa=szablonowe_modul["SzablonowaKompletnaNazwaStrony"](nazwa_modulu_aktualna_czy_biezaca);
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
----
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony;
if((not tekst_rozwiniety_calego_artykulu_ref)or(not tablica_analizy_obiektow_strony_dany_modul_ref)or(not tablica_danych_parametrow_szablonu_strony_ref))then
tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,(((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.inna_strona_aktualna_niz_biezaca))and true or nil),
nil)
else
tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=tekst_rozwiniety_calego_artykulu_ref,tablica_analizy_obiektow_strony_dany_modul_ref,tablica_danych_parametrow_szablonu_strony_ref;
end;
----
if(not czy_artykul_korzystany)then
if(not tekst_rozwiniety_calego_artykulu)then return 0;end;
end;
if(czy_artykul_korzystany)then
if(not tekst_rozwiniety_calego_artykulu)then
if(strona_zbiorcza)then
self.tabela_listy_danych_analizy_ksiazki["CzyStronaSubst"]="tak";
end;
return nil;
end;
end;
local parametry_modul=require("Module:Parametry");
if((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.inna_strona_aktualna_niz_biezaca))then
local aktualna_nazwa_modulu;local aktualna_nazwa_modulu_szablonowa;
if(nazwa_modulu_aktualna_czy_biezaca)then
aktualna_nazwa_modulu=nazwa_modulu_aktualna_czy_biezaca;
aktualna_nazwa_modulu_szablonowa=nazwa_modulu_aktualna_czy_biezaca_szablonowa;
else
aktualna_nazwa_modulu=nazwy_modul["NazwaModułu"](self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu);
aktualna_nazwa_modulu_szablonowa=szablonowe_modul["SzablonowaKompletnaNazwaStrony"](aktualna_nazwa_modulu);
end;
local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(self,aktualna_nazwa_modulu,aktualna_nazwa_modulu_szablonowa);
if(tekst)then
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,aktualna_nazwa_modulu);
local tablica_danych_parametrow_szablonu_strony={};
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,aktualna_nazwa_modulu_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(stronicowyparser_obiekty_modul.strona_start_ze_spisem_rzeczy_strony[nazwa_szablonu])then
self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak";
self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
return true;
elseif(stronicowyparser_obiekty_modul.strona_start[nazwa_szablonu])then
self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak";
self.tabela_listy_danych_analizy_ksiazki.formatowanie=tabela_parametrow_szablonu["formatowanie"];
local boczne_menu=tabela_parametrow_szablonu["boczne menu"] or "";
local spis_tresci=tabela_parametrow_szablonu["spis treści"] or "TOC";
if((parametry_modul.CzyTak(boczne_menu))or(parametry_modul.CzyTak(spis_tresci)))then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
end;
return true;
end;
end);
if(wynik)then break;end;
end;
end;
end;
end;
local uzyskano_w_wyniku_parsowania_wywolanie_szablonu;
local analiza_stron_korzystanych_zbiorczych=nil;
local stronastart=nil;
----
local tablica_obiekty=stronicowyparser_obiekty_modul.obiekty;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty;
local format_elementowy_referencji_obiektowy=stronicowyparser_obiekty_modul.format_elementowy_referencji_obiektowy;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
local szablony_wykorzystywane_przez_strony_zbiorcze=stronicowyparser_obiekty_modul.szablony_wykorzystywane_przez_strony_zbiorcze;
local format_elementowy_obiektowy=stronicowyparser_obiekty_modul.format_elementowy_obiektowy;
local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty;
local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_naglowka=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu;
local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
----
local strona_start=stronicowyparser_obiekty_modul.strona_start;
local strona_start_ze_spisem_rzeczy_strony=stronicowyparser_obiekty_modul.strona_start_ze_spisem_rzeczy_strony;
local strona_start_inne=stronicowyparser_obiekty_modul.strona_start_inne;
local szablony_strony_zbiorczej=stronicowyparser_obiekty_modul.strona_zbiorcza;
----
local tab_szablony=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_kontenerowe;
local tab_szablony_stronicowe_niekontenerowe=stronicowyparser_obiekty_modul.szablony_stronicowe_niekontenerowe;
local tab_szablony_stronicowe_formatowania_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowe_formatowania_tekstu;
local tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego=stronicowyparser_obiekty_modul.szablony_stronicowe_kontenerowe_formatowania_wzorowego;
----
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local stronicowyparser_zbieraniedanychstron_poprzebne_modul=require("Module:StronicowyParser/ZbieranieDanychStron/Potrzebne");
local tabela_elementow_strony_kodow={};
----
-- for uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod in iterator do
local function AnalizaParametrowaOrazNazwowaStronicowegoIteratoraSzablonowego(tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer)
if(czy_artykul_korzystany)then
if(tabela_parametrow_szablonu)then
if((not stronastart)and(self.tabela_listy_danych_analizy_ksiazki.formatowanie==nil))then
if(strona_start[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak";
self.tabela_listy_danych_analizy_ksiazki.formatowanie=tabela_parametrow_szablonu["formatowanie"];
stronastart=true;
local boczne_menu=tabela_parametrow_szablonu["boczne menu"] or "";
local spis_tresci=tabela_parametrow_szablonu["spis treści"] or "TOC";
if((parametry_modul.CzyTak(boczne_menu))or(parametry_modul.CzyTak(spis_tresci)))then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
end;
return;
elseif(strona_start_ze_spisem_rzeczy_strony[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak";
self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
stronastart=true;
return;
elseif(strona_start_inne[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak";
self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
stronastart=true;
return;
elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then
analiza_stron_korzystanych_zbiorczych=true;
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"];
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"];
if((not parametry_modul.CzyTak(nazwa_prestreni_nazw))and(not parametry_modul.CzyTak(nazwa_jednostki)))then
return;
end;
end;
elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then
analiza_stron_korzystanych_zbiorczych=true;
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"];
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"];
if((not parametry_modul.CzyTak(nazwa_przestrzeni))and(not parametry_modul.CzyTak(nazwa_jednostki)))then
return;
end;
end;
end;
end;
local plik=mw.ustring.match(nazwa_szablonu_wywolania,"^:");
if(plik==nil)then
if(tabela_parametrow_szablonu)then
if(not parametry_modul.CzyTak(tabela_parametrow_szablonu["bez automatu"]))then
local czy_wypowiedzenie=(nazwa_szablonu_wywolania=="Wypowiedzenie");
local czy_linkobiekt;
local czy_link;local czy_pobierz;
local czy_wypowiedzenie_z_parametrami;
local czy_linkobiekt_z_parametrami;
if(czy_wypowiedzenie)then
czy_linkobiekt=false;
czy_link=false;
czy_pobierz=false;
czy_wypowiedzenie_z_parametrami=parametry_modul.CzyTak(tabela_parametrow_szablonu["rodzaj"]);
else
czy_linkobiekt=(nazwa_szablonu_wywolania=="LinkObiekt");
if(czy_linkobiekt)then
czy_link=true;
czy_pobierz=false;
czy_linkobiekt_z_parametrami=parametry_modul.CzyTak(tabela_parametrow_szablonu["typ"]);
else
czy_link=mw.ustring.match(nazwa_szablonu_wywolania,"^Link");
czy_pobierz=(not czy_link) and mw.ustring.match(nazwa_szablonu_wywolania,"^Pobierz") or nil;
end;
end;
if((not czy_link)and(not czy_pobierz))then
local wartosc_elementu;local numer_uchwytu;
if(not czy_wypowiedzenie_z_parametrami) then
local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty[nazwa_szablonu_wywolania];
if(tab_wartosc_elementu)then
wartosc_elementu=tab_wartosc_elementu[1];
numer_uchwytu=tab_wartosc_elementu[2];
end;
else
local rodzaj=tabela_parametrow_szablonu["rodzaj"];
if(rodzaj)then
wartosc_elementu=format_elementowy_obiektowy[rodzaj] and rodzaj or nil;
if(wartosc_elementu)then
numer_uchwytu=tablica_obiekty[5];
end;
end;
end;
if(wartosc_elementu)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
if(uchwyt_obiektu and (uchwyt_obiektu~=""))then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
end;
stronicowyparser_zbieraniedanychstron_poprzebne_modul.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],tab_numer,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
end;
elseif(czy_artykul_korzystany)then
if(czy_link)then
local wartosc_elementu;
if(not czy_linkobiekt_z_parametrami)then
wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty[nazwa_szablonu_wywolania];
else
local typ=tabela_parametrow_szablonu["typ"];
if(typ)then
typ=format_elementowy_referencji_obiektowy[typ] and typ or nil;
if(typ)then
wartosc_elementu=mw.getContentLanguage():ucfirst(typ);
end;
end;
end;
if(wartosc_elementu)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Link"..wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
stronicowyparser_zbieraniedanychstron_poprzebne_modul.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
else
local wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu[nazwa_szablonu_wywolania];
if(wartosc_elementu)then
local korzystane=self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
stronicowyparser_zbieraniedanychstron_poprzebne_modul.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=korzystane;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
return;
end;
end;
elseif(czy_pobierz)then
local wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu[nazwa_szablonu_wywolania];
if(wartosc_elementu)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
stronicowyparser_zbieraniedanychstron_poprzebne_modul.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie,true);
return;
end;
end;
end;
if(czy_wypowiedzenie)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Obiekt:"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
stronicowyparser_zbieraniedanychstron_poprzebne_modul.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,"Obiekt", czy_artykul_korzystany,tablica_obiekty[5],tab_numer,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
elseif(stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_wprowadzenia_tekstu[nazwa_szablonu_wywolania])then
local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_naglowka[nazwa_szablonu_wywolania];
local wartosc_elementu;local numer_uchwytu;
if(tab_wartosc_elementu)then
wartosc_elementu=tab_wartosc_elementu[1];
numer_uchwytu=tab_wartosc_elementu[2];
end;
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
if(uchwyt_obiektu and (uchwyt_obiektu~=""))then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
end;
local lista_dwuelementowa=stronicowyparser_zbieraniedanychstron_poprzebne_modul.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],tab_numer,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
stronicowyparser_zbieraniedanychstron_poprzebne_modul.UstawUchwytyWeTablicyBezNumeracji(self,tabela_elementow_strony_kodow,wartosc_elementu,lista_dwuelementowa,kod);
if(czy_artykul_korzystany)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
end;
return;
elseif(stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu[nazwa_szablonu_wywolania])then
local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu[nazwa_szablonu_wywolania];
local wartosc_elementu;local numer_uchwytu;
if(tab_wartosc_elementu)then
wartosc_elementu=tab_wartosc_elementu[1];
numer_uchwytu=tab_wartosc_elementu[2];
end;
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
if(uchwyt_obiektu and (uchwyt_obiektu~=""))then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
end;
local lista_dwuelementowa=stronicowyparser_zbieraniedanychstron_poprzebne_modul.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],tab_numer,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
if(lista_dwuelementowa)then
local stronicowyparser_szablonytekstu_modul=require("Module:StronicowyParser/SzablonyTekstu");
local tekst=stronicowyparser_szablonytekstu_modul.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu);
local bez_preprocess=stronicowyparser_szablonytekstu_modul.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu);
local czy_bez_preprocess=parametry_modul.CzyTak(bez_preprocess);
if(tekst)then
----
local tekst_stare=tekst;
local tablica_analizy_obiektow_strony_dany_modul_stare=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_analizy_obiektow_strony_dany_modul);
local tablica_danych_parametrow_szablonu_strony_stare=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_danych_parametrow_szablonu_strony);
local tabela_parametrow_szablonu_stare=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tabela_parametrow_szablonu);
----
mw.log("-TYTAn123",pelna_nazwa_ksiazki,nazwa_artykulu);
local tekst_szablon=stronicowyparser_szablonytekstu_modul.PreparowanieSzablonoweLinkoweSzablonuTekstu(szablonowe_modul.NormaKoduKodowaniaTekstu("SZABLON",kod),nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_ksiazki,nazwa_artykulu,czy_bez_preprocess);
local tekst=stronicowyparser_szablonytekstu_modul.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu);
local czy_szablon_wszystko=false;
tekst_stare=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_stare,nil,tablica_analizy_obiektow_strony_dany_modul_stare,
function(szablon,obiekt,kod)
if(czy_bez_preprocess)then return nil;end;
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony_stare,kod,nazwa_modulu,
function(tabela_parametrow_szablonu_stare,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(
(tab_szablony[nazwa_szablonu])
or(tab_szablony_stronicowe_niekontenerowe[nazwa_szablonu])
or(tab_szablony_stronicowe_formatowania_tekstu[nazwa_szablonu])
or(tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego[nazwa_szablonu])
)then
if(not czy_artykul_korzystany)then
tabela_parametrow_szablonu_stare["nazwa przestrzeni nazw"]=tabela_parametrow_szablonu_stare["nazwa przestrzeni nazw"] or nazwa_przestrzeni;
tabela_parametrow_szablonu_stare["nazwa jednostki"]=tabela_parametrow_szablonu_stare["nazwa jednostki"] or (((nazwa_przestrzeni_ksiazki~="") and (nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki..((nazwa_artykulu~="") and ("/"..nazwa_artykulu) or ""))
if(self)then
local czy_link_lub_pobierz=mw.ustring.match(nazwa_szablonu,"^Link") or mw.ustring.match(nazwa_szablonu,"^Pobierz");
if(czy_link_lub_pobierz)then
stronicowyparser_zbieraniedanychstron_poprzebne_modul.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu_stare,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
else
stronicowyparser_zbieraniedanychstron_poprzebne_modul.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu_stare,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
end;
end;
end;
return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu_stare,tabela_modyfikatorow,true);
end;
return nil;
end,
function(tabela_parametrow_szablonu_stare,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
---- instrukcje warunkowe;
return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu_stare,tabela_modyfikatorow,true);
end,
function(tabela_parametrow_szablonu_stare,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
---- wywołania ramek Lua w Scribunto
return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu_stare,tabela_modyfikatorow,true);
end,
function(tabela_parametrow_szablonu_stare,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
---- tagi szablonowe;
return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu_stare,tabela_modyfikatorow,true);
end);
czy_szablon_wszystko=czy_szablon_wszystko or true;
if(wynik)then return wynik;end;
elseif(obiekt=="ZMIENNA")then
czy_szablon_wszystko=czy_szablon_wszystko or true;
local zawartosc=mw.ustring.match(szablon,"^{{{(.*)}}}$");
if(zawartosc)then
zawartosc=mw.ustring.gsub(zawartosc,"|","{{!}}");
return "{{(((}}"..zawartosc.."{{)))}}";
end;
end;
end);
if((czy_szablon_wszystko)and(not czy_bez_preprocess))then
local frame=mw.getCurrentFrame();
tekst_stare=frame:preprocess(tekst_stare);
end;
lista_dwuelementowa[2]=tekst_stare;
--local __metatabelka=getmetatable(tabela_parametrow_szablonu_stare);
--if(__metatabelka)then setmetatable(tabela_parametrow_szablonu_stare,nil);end;
stronicowyparser_szablonytekstu_modul.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu_stare,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul_stare,tablica_danych_parametrow_szablonu_strony_stare,czy_artykul_korzystany);
end;
end;
return;
elseif(czy_artykul_korzystany)then
if(czy_linkobiekt)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="LinkObiekt:"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
stronicowyparser_zbieraniedanychstron_poprzebne_modul.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,"Obiekt",nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
else
if(stronicowyparser_obiekty_modul.szablony_z_lokalnym_spisem_rzeczy_strony[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
return;
elseif(stronicowyparser_obiekty_modul.bez_uchwytow_spis_rzeczy_strony[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true;
local korzystane=self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA_KATEGORIE)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[2] or "";
local artykul=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[1] or "";
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..nazwa_ksiazki..((artykul)and ("/"..artykul) or "")
end;
end;
stronicowyparser_zbieraniedanychstron_poprzebne_modul.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=korzystane;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
return;
elseif(stronicowyparser_obiekty_modul.szablony_spisu[nazwa_szablonu_wywolania])then
local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA_KATEGORIE)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[2] or "";
local artykul=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[1] or "";
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..nazwa_ksiazki..((artykul)and ("/"..artykul) or "")
end;
end;
local czy_analiza=parametry_modul.CzyTak(tabela_parametrow_szablonu["analiza"]);
local czy_parser=parametry_modul.CzyTak(tabela_parametrow_szablonu["parser"]);
local czy_specjalne=parametry_modul.CzyTak(tabela_parametrow_szablonu["specjalne"]);
local dokumentacja=tabela_parametrow_szablonu["dokumentacja"];
local czy_dokumentacja;
if(not dokumentacja)then
czy_dokumentacja=czy_analiza or czy_specjalne or czy_parser;
else
czy_dokumentacja=parametry_modul.CzyTak(dokumentacja);
end;
if(
((czy_dokumentacja)and(czy_parser))
or((not czy_dokumentacja)and(czy_analiza))
)then
stronicowyparser_zbieraniedanychstron_poprzebne_modul.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
end;
return;
else
local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA_KATEGORIE)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local nazwy_modul=require("Module:Nazwy");
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or "";
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or "";
local nazwa_symulacyjnej_strony=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki;
local uchwyt=nazwa_szablonu_wywolania..":"..nazwa_symulacyjnej_strony;
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=uchwyt;
end;
end;
if((stronicowyparser_obiekty_modul.szablony_kontenerowe[nazwa_szablonu_wywolania])
or(szablony_strony_zbiorczej[nazwa_szablonu_wywolania])
)then
if(szablony_wykorzystywane_przez_strony_zbiorcze[nazwa_szablonu_wywolania])then
stronicowyparser_zbieraniedanychstron_poprzebne_modul.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true,KtorySzablonMaZwracacKategorie);
else
stronicowyparser_zbieraniedanychstron_poprzebne_modul.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nil,KtorySzablonMaZwracacKategorie);
end;
return;
elseif((strona_zbiorcza)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then
stronicowyparser_zbieraniedanychstron_poprzebne_modul.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true,KtorySzablonMaZwracacKategorie);
return;
end;
end;
end;
end;
end;
end;
end;
end;
----
local function GeneralnaAnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer)
stronicowyparser_potrzebne_modul:AnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_danych_parametrow_szablonu_strony,AnalizaParametrowaOrazNazwowaStronicowegoIteratoraSzablonowego);
end;
local function IterowaniePoElementachTekstu(tekst_rozwiniety_calego_artykulu,tab_numer)
--local stronicowyparser_szablonytekstu_modul=require("Module:StronicowyParser/SzablonyTekstu");
--tekst_rozwiniety_calego_artykulu=stronicowyparser_szablonytekstu_modul.PreparowanieSzablonoweLinkoweSzablonuTekstu(tekst_rozwiniety_calego_artykulu,"",nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul);
for uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod in iterator do
GeneralnaAnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer);
end;
end;
if(czy_artykul_korzystany)then
self.tabela_listy_danych_analizy_ksiazki.nazwa_bazowa_strony=nazwy_modul["PEŁNABAZOWANAZWASTRONY"](nazwa_modulu);
end;
IterowaniePoElementachTekstu(tekst_rozwiniety_calego_artykulu);
----
local tablica_danych_nazwy_artykulu=tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu] or {};
tablica_danych_nazwy_artykulu.uchwyty_i_numeracje=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2;
----
local wiki_modul=require("Module:Wiki");
tablica_danych_nazwy_artykulu.link_wikidane={wiki_modul.KodyKlasStronyNaDanejWiki{["strona"]=nazwa_modulu_aktualna_czy_biezaca,["nagłówek"]=true,["aktywny"]=true,},};
if(not czy_artykul_korzystany)then
if(pozawoluminowe_strony)then
if(not tablica_danych_nazwy_artykulu.prefiks_numeru_woluminowego_strony)then
local nazwa_modulu_korzystana_bazowa=self.tabela_listy_danych_analizy_ksiazki.nazwa_bazowa_strony;
local stronicowyparser_pomocne_modul=require("Module:StronicowyParser/Pomocne");
local zrostek=stronicowyparser_pomocne_modul["SkrótDoNumeruOdnośnika"](nazwa_modulu_korzystana_bazowa,nazwa_modulu);
tablica_danych_nazwy_artykulu.prefiks_numeru_woluminowego_strony={zrostek,pozawoluminowe_strony,czy_artykul_korzystany,};
end;
else
local niekorzystany_wolumin=(not korzystany_wolumin);
if(niekorzystany_wolumin)then
if(not tablica_danych_nazwy_artykulu.prefiks_numeru_woluminowego_strony)then
local stronicowyparser_pomocne_modul=require("Module:StronicowyParser/Pomocne");
local zrostek=stronicowyparser_pomocne_modul["SkrótDoNumeruOdnośnikaDołączonejKsiążki"](nazwa_ksiazki);
tablica_danych_nazwy_artykulu.prefiks_numeru_woluminowego_strony={zrostek,niekorzystany_wolumin,czy_artykul_korzystany,};
end;
end;
end;
end;
----
if(czy_artykul_korzystany)then
if(analiza_stron_korzystanych_zbiorczych)then
local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
tekst_rozwiniety_calego_artykulu=stronicowyparser_stronasubst_modul.LiczOperacjeStronZbiorczych(self,tekst_rozwiniety_calego_artykulu,tablica_ksiazki.spis,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
end;
end;
local strona;
if(czy_artykul_korzystany)then strona="";else strona=nazwa_modulu;end;
----
if(czy_artykul_korzystany)then
local stronicowyparser_szablonytekstu_modul=require("Module:StronicowyParser/SzablonyTekstu");
stronicowyparser_szablonytekstu_modul.UstawPobierzKorzystanie(tablica_zmiennych);
tekst_rozwiniety_calego_artykulu=stronicowyparser_szablonytekstu_modul.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu) or tekst_rozwiniety_calego_artykulu;
end;
----
local function SpisToc(self,czy_artykul_korzystany,tablica_danych_nazwy_artykulu,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,tabela_elementow_strony_kodow,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki, nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
return function()
if(((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane))
or((not czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)))then
----
local tablica_obiektow_strony_danych_kodow_specjalnych_modul=nil;
----
tekst_rozwiniety_calego_artykulu,tablica_obiektow_strony_danych_kodow_specjalnych_modul=szablonowe_modul:KodowanieInaczejZakodowanychNormKodowychTekstuWedleJegoTablicyKodowania(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,false);
----
local function KtorySzablonMaZwracacKategorieNaglowek(numeracja_aktualna,nazwa_szablonu)
if(czy_artykul_korzystany)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"powtórka nagłowek w stronie korzystanej"))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"powtórka nagłowek w stronie korzystanej");
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"powtórka nagłówek w stronie dołączonej",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
end;
local function KtorySzablonMaZwracacKategorieTekst(numeracja_aktualna,nazwa_szablonu)
if(czy_artykul_korzystany)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej"))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej");
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"nagłowek w tekście rozdziału w stronie dołączonej",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
end;
local function CzyJestTakiProblemJakoElementTablicySzablonuNaglowkaPozaNapisemWprowadzeniaTekstu()
return stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej");
end;
local nazwa_naglowka=stronicowyparser_obiekty_modul.nazwa_szablonu_wprowadzenia_tekstu;
local stronicowyparser_glownafunkcjazbieraniadanych_modul=require("Module:StronicowyParser/GłównaFunkcjaZbieraniaDanychStron");
local tablica_naglowka_obiekty=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_naglowka];
tablica_naglowka_obiekty.uchwyty_bez_numeracji={};
local toc=stronicowyparser_glownafunkcjazbieraniadanych_modul.SpisRzeczyWedlePodanegoTekstu(self,tekst_rozwiniety_calego_artykulu,strona,czy_artykul_korzystany,nil,tablica_naglowka_obiekty.uchwyty_bez_numeracji, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki, nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_obiektow_strony_danych_kodow_specjalnych_modul,{KtorySzablonMaZwracacKategorieNaglowek,KtorySzablonMaZwracacKategorieTekst,CzyJestTakiProblemJakoElementTablicySzablonuNaglowkaPozaNapisemWprowadzeniaTekstu,},nil,tabela_elementow_strony_kodow);
tablica_danych_nazwy_artykulu.TOC=toc;
return true;
end;
end;
end;
local czy_spis_function=SpisToc(self,czy_artykul_korzystany,tablica_danych_nazwy_artykulu,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,tabela_elementow_strony_kodow,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki, nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
local wynik=czy_spis_function();
if(not czy_artykul_korzystany)then
if(not wynik)then
tablica_danych_nazwy_artykulu.TOCSPIS_FUNCTION=czy_spis_function;
end;
end;
StronaSubstFunkcja(tablica_danych_nazwy_artykulu,tablica_ksiazki.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(czy_artykul_korzystany)then
self.tabela_listy_danych_analizy_ksiazki.link_wikidane=tablica_danych_nazwy_artykulu.link_wikidane;
self.tabela_listy_danych_analizy_ksiazki.prefiks_numeru_woluminowego_strony=tablica_danych_nazwy_artykulu.prefiks_numeru_woluminowego_strony;
self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2;
self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni];
self.tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki=self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw[nazwa_przestrzeni_ksiazki];
self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_ksiazki=self.tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki[nazwa_ksiazki];
--self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron=tablica_zmiennych;
end;
if(not czy_artykul_korzystany)then
tablica_danych_nazwy_artykulu.dane_zebrane_ze_stron=tablica_zmiennych;
if(not self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista)then self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista={};end;
table.insert(self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista,tablica_danych_nazwy_artykulu);
else
local dane_zebrane_ze_stron_lista=self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista;
if(dane_zebrane_ze_stron_lista)then
for _,tablica_danych_nazwy_artykulu in ipairs(dane_zebrane_ze_stron_lista)do
tablica_danych_nazwy_artykulu.dane_zebrane_ze_stron=nil;
tablica_danych_nazwy_artykulu.TOCSPIS_FUNCTION=nil;
end;
end;
tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane=nil;
end;
return self.tabela_listy_danych_analizy_ksiazki,tablica_zmiennych,true;
end;
return p;
pfuhbi20lmqx1rrug460ebk9lcvfuv3
558365
558363
2026-10-02T21:54:23Z
Persino
2851
558365
Scribunto
text/plain
local p={};
function p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, czy_artykul_korzystany,tablica_zmiennych,czy_szablon_pudelkowy_strony_zbiorczej)
local function __FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if(not self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni])then self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]={};end;
local tablica_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni];
if(not tablica_przestrzeni[nazwa_przestrzeni_ksiazki])then tablica_przestrzeni[nazwa_przestrzeni_ksiazki]={};end;
local tablica_przestrzeni_ksiazki=tablica_przestrzeni[nazwa_przestrzeni_ksiazki];
if(not tablica_przestrzeni_ksiazki[nazwa_ksiazki])then tablica_przestrzeni_ksiazki[nazwa_ksiazki]={};end;
local tablica_ksiazki=tablica_przestrzeni_ksiazki[nazwa_ksiazki];
if(not tablica_ksiazki.lista_podstron_woluminu)then tablica_ksiazki.lista_podstron_woluminu={};end;
if(nazwa_artykulu)then
if(not tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu])then tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu]={};end;
local artykul_analizowany=tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu];
return tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany;
else
return tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki;
end;
end;
local korzystany_wolumin=false;
local function __FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if(not czy_artykul_korzystany)then
if(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni and self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu and self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu and self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu)then
if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu==nazwa_przestrzeni_ksiazki)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu==nazwa_ksiazki))then
korzystany_wolumin=true;
if(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu)then
return 0,nil,nil,nil,nil,nil,self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron,false;
else
if(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=true;
end;
end;
else
if(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=true;
end;
end;
else
return nil;
end;
else
korzystany_wolumin=true;
end;
if(self.tabela_listy_danych_analizy_ksiazki)then
if(self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron)then
local tabela_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni];
if(tabela_przestrzeni)then
local tabela_przestrzeni_ksiazki=tabela_przestrzeni[nazwa_przestrzeni_ksiazki];
if(tabela_przestrzeni_ksiazki)then
local tabela_ksiazka=tabela_przestrzeni_ksiazki[nazwa_ksiazki];
if(tabela_ksiazka)then
local lista_artykolow=tabela_ksiazka.lista_podstron_woluminu;
if(lista_artykolow)then
local tabela_artykul=lista_artykolow[nazwa_artykulu];
if(tabela_artykul)then
local dane_zebrane_ze_stron=tabela_artykul.dane_zebrane_ze_stron;
----
if(not czy_artykul_korzystany)then
if(tabela_artykul.TOCSPIS_FUNCTION)then
local wynik=tabela_artykul.TOCSPIS_FUNCTION();
if(wynik)then
tabela_artykul.TOCSPIS_FUNCTION=nil;
end;
end;
end;
return 0,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni,dane_zebrane_ze_stron,true;
end;
end;
end;
end;
end;
else
return nil;
end;
else
return nil;
end;
return true;
end;
local nazwy_modul=require("Module:Nazwy");
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni,dane_zebrane_ze_stron,czy_inna=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local function StronaSubstFunkcja(tabela_artykul,spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if((czy_szablon_pudelkowy_strony_zbiorczej)and(not czy_artykul_korzystany)and(tabela_artykul)and(not tabela_artykul.strona_zbiorcza))then
--local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
local TakFun=function(frame) return "tak";end;local NieFun=function(frame) return "";end;
tabela_artykul.strona_zbiorcza=stronicowyparser_stronasubst_modul.AnalizaStronaSubst(self.tabela_listy_danych_analizy_ksiazki,spis,nil,TakFun,NieFun,nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
end;
end;
if(not wartosc_wyniku)then
return wartosc_wyniku,dane_zebrane_ze_stron,czy_inna;
elseif(wartosc_wyniku==0)then
if(tabela_artykul)then
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku,dane_zebrane_ze_stron,czy_inna;
else
return wartosc_wyniku,dane_zebrane_ze_stron,czy_inna;
end;
end;
----
local pozawoluminowe_strony;
----
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if((nazwa_przestrzeni~=nazwy_np_modul.Main)
and(nazwa_przestrzeni~=nazwy_np_modul.Wikijunior)
and((nazwa_przestrzeni~=nazwy_np_modul.User)or(not mw.ustring.match(nazwa_przestrzeni_ksiazki,"^([^/]+)$")))
and((nazwa_przestrzeni~=nazwy_np_modul.Wikibooks)or(not mw.ustring.match(nazwa_przestrzeni_ksiazki,"^%s*[Bb]rudnopis/([^/]+)$")))
)then
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
pozawoluminowe_strony=true;
end;
----
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local parametry_modul=require("Module:Parametry");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
----
local tekst_rozwiniety_calego_artykulu_ref=nil;
local tablica_analizy_obiektow_strony_dany_modul_ref=nil;
local tablica_danych_parametrow_szablonu_strony_ref=nil;
----
local function InneInformacjePrzebneDoAnalizowanejKsiazki()
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then
if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki))then
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki["CzyArtykułKsiążki"])then self.tabela_listy_danych_analizy_ksiazki["CzyArtykułKsiążki"]="tak";end;
end;
local czy_ksiazka_istnieje_w_tablicy=((tablica_ksiazki)and(tablica_ksiazki.czy_spis_analizowano))and true or false;
if(not czy_ksiazka_istnieje_w_tablicy)then
tablica_ksiazki.czy_spis_analizowano=true;
local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści");
local nazwa_przestrzeni_strona_temp,nazwa_przestrzeni_ksiazki_strona_temp,nazwa_ksiazki_strona_temp;
local tabela_artykulow,tabela_licencji_spisu_tresci,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,adres_ksiazki_glownego_spisu_tresci=stronicowyparser_spistresci_modul.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,czy_artykul_korzystany,function(nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona)
local tablica_przestrzeni_strona=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni_strona];
if(tablica_przestrzeni_strona)then
local tablica_przestrzeni_ksiazki_strona=tablica_przestrzeni_strona[nazwa_przestrzeni_ksiazki_strona];
if(tablica_przestrzeni_ksiazki_strona)then
local tablica_ksiazki_strona=tablica_przestrzeni_ksiazki_strona[nazwa_ksiazki_strona];
if(tablica_ksiazki_strona)then
if(tablica_ksiazki_strona.spis)then
nazwa_przestrzeni_strona_temp,nazwa_przestrzeni_ksiazki_strona_temp,nazwa_ksiazki_strona_temp=nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona;
tablica_ksiazki.spis=tablica_ksiazki_strona.spis;
tablica_ksiazki.licencja=tablica_ksiazki_strona.licencja;
tablica_ksiazki.nazwa_bazowego_spisu=tablica_ksiazki_strona.nazwa_bazowego_spisu;
tablica_ksiazki.tab_inne_spisy=tablica_ksiazki_strona.tab_inne_spisy;
tablica_ksiazki.dodatkowe_strony_woluminu=tablica_ksiazki_strona.dodatkowe_strony_woluminu;
tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy=tablica_ksiazki_strona.adres_woluminu_bazowego_spisu_rzeczy;
tablica_ksiazki.referencja_do_nowej_formy_spisu={tablica_przestrzeni_strona,tablica_przestrzeni_ksiazki_strona,tablica_ksiazki_strona,};
return 1;
end;
end;
end
end;
end,function(tekst_rozwiniety_calego_artykulu_ref_spis,nazwa_przestrzeni_ref_spis,nazwa_przestrzeni_ksiazki_ref_spis,nazwa_ksiazki_ref_spis,nazwa_artykulu_ref_spis,tablica_analizy_obiektow_strony_dany_modul_ref_spis,tablica_danych_parametrow_szablonu_strony_ref_spis)
----
if((nazwa_przestrzeni==nazwa_przestrzeni_ref_spis)and(nazwa_przestrzeni_ksiazki==nazwa_przestrzeni_ksiazki_ref_spis)and(nazwa_ksiazki==nazwa_ksiazki_ref_spis)and(nazwa_artykulu==nazwa_artykulu_ref_spis))then
tekst_rozwiniety_calego_artykulu_ref=tekst_rozwiniety_calego_artykulu_ref_spis;
local parametry_modul=require("Module:Parametry");
tablica_analizy_obiektow_strony_dany_modul_ref=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_analizy_obiektow_strony_dany_modul_ref_spis);
tablica_danych_parametrow_szablonu_strony_ref=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_danych_parametrow_szablonu_strony_ref_spis);
end;
----
end);
local function __FUNKCJA_SPISU(tablica_ksiazki,czy_podac_adres)
tablica_ksiazki.spis=tabela_artykulow;
if(czy_artykul_korzystany)then
tablica_ksiazki.licencja=tabela_licencji_spisu_tresci;
end;
tablica_ksiazki.nazwa_bazowego_spisu=nazwa_glownego_spisu;
tablica_ksiazki.tab_inne_spisy=tab_inne_spisy;
tablica_ksiazki.dodatkowe_strony_woluminu=dodatkowe_artykuly;
tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy=czy_podac_adres and adres_ksiazki_glownego_spisu_tresci or nil;
end;
if(tabela_artykulow==0)then
if(czy_artykul_korzystany)then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"korzystana strona główna nie istnieje");
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"dołączone strony główne nie istnieją",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
end;
elseif(tabela_artykulow)then
if(parametry_modul.TypeTable(tabela_artykulow))then
if(adres_ksiazki_glownego_spisu_tresci)then
__FUNKCJA_SPISU(tablica_ksiazki,true);
local tablica_ksiazki_stara=tablica_ksiazki;
local artykul,kod_wyniku=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,true);
local nazwa_przestrzeni=adres_ksiazki_glownego_spisu_tresci[1];
local nazwa_przestrzeni_ksiazki=adres_ksiazki_glownego_spisu_tresci[2];
local nazwa_ksiazki=adres_ksiazki_glownego_spisu_tresci[3];
if((kod_wyniku==1)or(kod_wyniku==2))then
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul);
if(not wartosc_wyniku)then
return wartosc_wyniku,true;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
local nazwa_artykulu=artykul;
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku,true;
end;
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni ,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul);
tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,};
__FUNKCJA_SPISU(tablica_ksiazki,false);
return nil,nil,artykul,kod_wyniku;
elseif((kod_wyniku==3)or(kod_wyniku==4))then
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul);
tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,};
__FUNKCJA_SPISU(tablica_ksiazki,false);
return nil,nil,artykul,kod_wyniku;
end;
else
__FUNKCJA_SPISU(tablica_ksiazki,false);
end;
elseif(tabela_artykulow~=1)then
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(not wartosc_wyniku)then
return wartosc_wyniku,true;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku,true;
end;
end;
else
if(czy_artykul_korzystany)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak spisów treści do korzystanych książek na ich stronach głównych"))then
if(((self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu=="")and(nazwa_artykulu~=""))or(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu~=""))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak spisów treści do korzystanych książek na ich stronach głównych");
end;
end;
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"brak spisów treści do dołączonych książek na ich stronach głównych",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
end;
end;
end;
end;
end;
end;
----
local wartosc_wyniku,wynik_bledu,artykul_bazowy,kod_wyniku_bazowy=InneInformacjePrzebneDoAnalizowanejKsiazki();
if(wynik_bledu)then return wartosc_wyniku;end;
local kod_wyniku_przekierowan=kod_wyniku_bazowy;
----
--if((not tablica_przestrzeni)or(not tablica_przestrzeni_ksiazki)or(not tablica_ksiazki)or(not artykul_analizowany))then
-- tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
--end;
----
if((tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy)and(kod_wyniku_bazowy))--[[and((kod_wyniku_bazowy==1)or(kod_wyniku_bazowy==2))]]then
----
nazwa_przestrzeni=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[1];
nazwa_przestrzeni_ksiazki=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[2];
nazwa_ksiazki=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[3];
nazwa_artykulu=artykul_bazowy;
----
tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki=tablica_ksiazki.referencja_do_nowej_formy_spisu[1],tablica_ksiazki.referencja_do_nowej_formy_spisu[2],tablica_ksiazki.referencja_do_nowej_formy_spisu[3];
end;
local tabela_artykulow=tablica_ksiazki.spis;
if(tabela_artykulow)then
local nazwa_glownego_spisu=tablica_ksiazki.nazwa_bazowego_spisu;
local tab_inne_spisy=tablica_ksiazki.tab_inne_spisy;
local dodatkowe_artykuly=tablica_ksiazki.dodatkowe_strony_woluminu
local artykul,kod_wyniku=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,false);
if(kod_wyniku)then
nazwa_artykulu=artykul;
tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
end;
kod_wyniku_przekierowan=kod_wyniku_przekierowan or kod_wyniku;
end;
local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local PrzekierownieAwaryjne=function()
if(not kod_wyniku_przekierowan)then
--local artykul2,kod_wyniku2=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,true);
local techniczne_modul=require("Module:Techniczne");
local strona=techniczne_modul.PrzekierowanieDoStrony(nazwa_modulu);
if(strona)then
if(strona~=nazwa_modulu)then
----
local tabela_nazw={};
nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw);
nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw);
nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw) or nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw));
nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazwa);
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(not wartosc_wyniku)then
return wartosc_wyniku;
elseif(wartosc_wyniku==0)then
if(tabela_artykul)then
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku;
else
return wartosc_wyniku;
end;
end;
tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
nazwa_modulu=strona;
else
return 0;
end;
end;
end;
end;
local wynik=PrzekierownieAwaryjne();
if(czy_artykul_korzystany)then
self.nazwa_modulu_biezaca=nazwa_modulu;
end;
if(wynik)then return wynik;end;
----
if(czy_artykul_korzystany)then
if((not self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu))then
self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni=nazwa_przestrzeni;
self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu=nazwa_przestrzeni_ksiazki;
self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu=nazwa_ksiazki;
self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu=nazwa_artykulu;
end;
end;
local nazwa_modulu_aktualna_czy_biezaca=self.tabela_listy_danych_analizy_ksiazki.alternatywna and nazwy_modul["NazwaModułu"](self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu) or nazwa_modulu;
-- przydzielanie tablicy
if(czy_artykul_korzystany)then
artykul_analizowany.artykul_biezacy=true;
tablica_ksiazki.ksiazka_analizowana=true;
end;
--koniec
--local iterator=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,"{{[^{}]-}}");
if(not tablica_zmiennych)then tablica_zmiennych={};end;
if(not tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)then tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2={};end;
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
for _,element_w_tablicy_obiekt in pairs(stronicowyparser_obiekty_modul.tablica_obiektowych_form)do
local CzyLink=element_w_tablicy_obiekt.CzyLink;
local CzyNum=element_w_tablicy_obiekt.CzyNum;
local wartosc=element_w_tablicy_obiekt[1];
tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[wartosc]={CzyLink=CzyLink,CzyNum=CzyNum,};
if(czy_artykul_korzystany)then tablica_zmiennych.linkobiekt[wartosc]={CzyLink=CzyLink,CzyNum=CzyNum;};end;
end;
local function StronaZbiorcza()
if(czy_artykul_korzystany)then
local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
local TakFun=function(frame) return true;end;local NieFun=function(frame) return nil;end;
local wynik=stronicowyparser_stronasubst_modul.AnalizaStronaSubst(self.tabela_listy_danych_analizy_ksiazki,tablica_ksiazki.spis,nil,TakFun,NieFun,nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
artykul_analizowany.strona_zbiorcza=(wynik and "tak" or "");
return wynik;
end;
return nil;
end;
local strona_zbiorcza=StronaZbiorcza();
local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
local szablonowe_modul=require("Module:Szablonowe");
local nazwa_modulu_aktualna_czy_biezaca_szablonowa=szablonowe_modul["SzablonowaKompletnaNazwaStrony"](nazwa_modulu_aktualna_czy_biezaca);
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
----
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony;
if((not tekst_rozwiniety_calego_artykulu_ref)or(not tablica_analizy_obiektow_strony_dany_modul_ref)or(not tablica_danych_parametrow_szablonu_strony_ref))then
tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,(((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.inna_strona_aktualna_niz_biezaca))and true or nil),
nil)
else
tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=tekst_rozwiniety_calego_artykulu_ref,tablica_analizy_obiektow_strony_dany_modul_ref,tablica_danych_parametrow_szablonu_strony_ref;
end;
----
if(not czy_artykul_korzystany)then
if(not tekst_rozwiniety_calego_artykulu)then return 0;end;
end;
if(czy_artykul_korzystany)then
if(not tekst_rozwiniety_calego_artykulu)then
if(strona_zbiorcza)then
self.tabela_listy_danych_analizy_ksiazki["CzyStronaSubst"]="tak";
end;
return nil;
end;
end;
local parametry_modul=require("Module:Parametry");
if((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.inna_strona_aktualna_niz_biezaca))then
local aktualna_nazwa_modulu;local aktualna_nazwa_modulu_szablonowa;
if(nazwa_modulu_aktualna_czy_biezaca)then
aktualna_nazwa_modulu=nazwa_modulu_aktualna_czy_biezaca;
aktualna_nazwa_modulu_szablonowa=nazwa_modulu_aktualna_czy_biezaca_szablonowa;
else
aktualna_nazwa_modulu=nazwy_modul["NazwaModułu"](self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu);
aktualna_nazwa_modulu_szablonowa=szablonowe_modul["SzablonowaKompletnaNazwaStrony"](aktualna_nazwa_modulu);
end;
local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(self,aktualna_nazwa_modulu,aktualna_nazwa_modulu_szablonowa);
if(tekst)then
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,aktualna_nazwa_modulu);
local tablica_danych_parametrow_szablonu_strony={};
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,aktualna_nazwa_modulu_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(stronicowyparser_obiekty_modul.strona_start_ze_spisem_rzeczy_strony[nazwa_szablonu])then
self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak";
self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
return true;
elseif(stronicowyparser_obiekty_modul.strona_start[nazwa_szablonu])then
self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak";
self.tabela_listy_danych_analizy_ksiazki.formatowanie=tabela_parametrow_szablonu["formatowanie"];
local boczne_menu=tabela_parametrow_szablonu["boczne menu"] or "";
local spis_tresci=tabela_parametrow_szablonu["spis treści"] or "TOC";
if((parametry_modul.CzyTak(boczne_menu))or(parametry_modul.CzyTak(spis_tresci)))then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
end;
return true;
end;
end);
if(wynik)then break;end;
end;
end;
end;
end;
local uzyskano_w_wyniku_parsowania_wywolanie_szablonu;
local analiza_stron_korzystanych_zbiorczych=nil;
local stronastart=nil;
----
local tablica_obiekty=stronicowyparser_obiekty_modul.obiekty;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty;
local format_elementowy_referencji_obiektowy=stronicowyparser_obiekty_modul.format_elementowy_referencji_obiektowy;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
local szablony_wykorzystywane_przez_strony_zbiorcze=stronicowyparser_obiekty_modul.szablony_wykorzystywane_przez_strony_zbiorcze;
local format_elementowy_obiektowy=stronicowyparser_obiekty_modul.format_elementowy_obiektowy;
local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty;
local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_naglowka=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu;
local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
----
local strona_start=stronicowyparser_obiekty_modul.strona_start;
local strona_start_ze_spisem_rzeczy_strony=stronicowyparser_obiekty_modul.strona_start_ze_spisem_rzeczy_strony;
local strona_start_inne=stronicowyparser_obiekty_modul.strona_start_inne;
local szablony_strony_zbiorczej=stronicowyparser_obiekty_modul.strona_zbiorcza;
----
local tab_szablony=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_kontenerowe;
local tab_szablony_stronicowe_niekontenerowe=stronicowyparser_obiekty_modul.szablony_stronicowe_niekontenerowe;
local tab_szablony_stronicowe_formatowania_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowe_formatowania_tekstu;
local tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego=stronicowyparser_obiekty_modul.szablony_stronicowe_kontenerowe_formatowania_wzorowego;
----
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local stronicowyparser_zbieraniedanychstron_poprzebne_modul=require("Module:StronicowyParser/ZbieranieDanychStron/Potrzebne");
local tabela_elementow_strony_kodow={};
----
-- for uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod in iterator do
local function AnalizaParametrowaOrazNazwowaStronicowegoIteratoraSzablonowego(tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer)
if(czy_artykul_korzystany)then
if(tabela_parametrow_szablonu)then
if((not stronastart)and(self.tabela_listy_danych_analizy_ksiazki.formatowanie==nil))then
if(strona_start[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak";
self.tabela_listy_danych_analizy_ksiazki.formatowanie=tabela_parametrow_szablonu["formatowanie"];
stronastart=true;
local boczne_menu=tabela_parametrow_szablonu["boczne menu"] or "";
local spis_tresci=tabela_parametrow_szablonu["spis treści"] or "TOC";
if((parametry_modul.CzyTak(boczne_menu))or(parametry_modul.CzyTak(spis_tresci)))then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
end;
return;
elseif(strona_start_ze_spisem_rzeczy_strony[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak";
self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
stronastart=true;
return;
elseif(strona_start_inne[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak";
self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
stronastart=true;
return;
elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then
analiza_stron_korzystanych_zbiorczych=true;
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"];
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"];
if((not parametry_modul.CzyTak(nazwa_prestreni_nazw))and(not parametry_modul.CzyTak(nazwa_jednostki)))then
return;
end;
end;
elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then
analiza_stron_korzystanych_zbiorczych=true;
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"];
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"];
if((not parametry_modul.CzyTak(nazwa_przestrzeni))and(not parametry_modul.CzyTak(nazwa_jednostki)))then
return;
end;
end;
end;
end;
local plik=mw.ustring.match(nazwa_szablonu_wywolania,"^:");
if(plik==nil)then
if(tabela_parametrow_szablonu)then
if(not parametry_modul.CzyTak(tabela_parametrow_szablonu["bez automatu"]))then
local czy_wypowiedzenie=(nazwa_szablonu_wywolania=="Wypowiedzenie");
local czy_linkobiekt;
local czy_link;local czy_pobierz;
local czy_wypowiedzenie_z_parametrami;
local czy_linkobiekt_z_parametrami;
if(czy_wypowiedzenie)then
czy_linkobiekt=false;
czy_link=false;
czy_pobierz=false;
czy_wypowiedzenie_z_parametrami=parametry_modul.CzyTak(tabela_parametrow_szablonu["rodzaj"]);
else
czy_linkobiekt=(nazwa_szablonu_wywolania=="LinkObiekt");
if(czy_linkobiekt)then
czy_link=true;
czy_pobierz=false;
czy_linkobiekt_z_parametrami=parametry_modul.CzyTak(tabela_parametrow_szablonu["typ"]);
else
czy_link=mw.ustring.match(nazwa_szablonu_wywolania,"^Link");
czy_pobierz=(not czy_link) and mw.ustring.match(nazwa_szablonu_wywolania,"^Pobierz") or nil;
end;
end;
if((not czy_link)and(not czy_pobierz))then
local wartosc_elementu;local numer_uchwytu;
if(not czy_wypowiedzenie_z_parametrami) then
local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty[nazwa_szablonu_wywolania];
if(tab_wartosc_elementu)then
wartosc_elementu=tab_wartosc_elementu[1];
numer_uchwytu=tab_wartosc_elementu[2];
end;
else
local rodzaj=tabela_parametrow_szablonu["rodzaj"];
if(rodzaj)then
wartosc_elementu=format_elementowy_obiektowy[rodzaj] and rodzaj or nil;
if(wartosc_elementu)then
numer_uchwytu=tablica_obiekty[5];
end;
end;
end;
if(wartosc_elementu)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
if(uchwyt_obiektu and (uchwyt_obiektu~=""))then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
end;
stronicowyparser_zbieraniedanychstron_poprzebne_modul.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],tab_numer,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
end;
elseif(czy_artykul_korzystany)then
if(czy_link)then
local wartosc_elementu;
if(not czy_linkobiekt_z_parametrami)then
wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty[nazwa_szablonu_wywolania];
else
local typ=tabela_parametrow_szablonu["typ"];
if(typ)then
typ=format_elementowy_referencji_obiektowy[typ] and typ or nil;
if(typ)then
wartosc_elementu=mw.getContentLanguage():ucfirst(typ);
end;
end;
end;
if(wartosc_elementu)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Link"..wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
stronicowyparser_zbieraniedanychstron_poprzebne_modul.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
else
local wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu[nazwa_szablonu_wywolania];
if(wartosc_elementu)then
local korzystane=self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
stronicowyparser_zbieraniedanychstron_poprzebne_modul.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=korzystane;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
return;
end;
end;
elseif(czy_pobierz)then
local wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu[nazwa_szablonu_wywolania];
if(wartosc_elementu)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
stronicowyparser_zbieraniedanychstron_poprzebne_modul.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie,true);
return;
end;
end;
end;
if(czy_wypowiedzenie)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Obiekt:"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
stronicowyparser_zbieraniedanychstron_poprzebne_modul.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,"Obiekt", czy_artykul_korzystany,tablica_obiekty[5],tab_numer,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
elseif(stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_wprowadzenia_tekstu[nazwa_szablonu_wywolania])then
local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_naglowka[nazwa_szablonu_wywolania];
local wartosc_elementu;local numer_uchwytu;
if(tab_wartosc_elementu)then
wartosc_elementu=tab_wartosc_elementu[1];
numer_uchwytu=tab_wartosc_elementu[2];
end;
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
if(uchwyt_obiektu and (uchwyt_obiektu~=""))then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
end;
local lista_dwuelementowa=stronicowyparser_zbieraniedanychstron_poprzebne_modul.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],tab_numer,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
stronicowyparser_zbieraniedanychstron_poprzebne_modul.UstawUchwytyWeTablicyBezNumeracji(self,tabela_elementow_strony_kodow,wartosc_elementu,lista_dwuelementowa,kod);
if(czy_artykul_korzystany)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
end;
return;
elseif(stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu[nazwa_szablonu_wywolania])then
local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu[nazwa_szablonu_wywolania];
local wartosc_elementu;local numer_uchwytu;
if(tab_wartosc_elementu)then
wartosc_elementu=tab_wartosc_elementu[1];
numer_uchwytu=tab_wartosc_elementu[2];
end;
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
if(uchwyt_obiektu and (uchwyt_obiektu~=""))then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
end;
local lista_dwuelementowa=stronicowyparser_zbieraniedanychstron_poprzebne_modul.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],tab_numer,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
if(lista_dwuelementowa)then
local stronicowyparser_szablonytekstu_modul=require("Module:StronicowyParser/SzablonyTekstu");
local tekst=stronicowyparser_szablonytekstu_modul.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu);
local bez_preprocess=stronicowyparser_szablonytekstu_modul.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu);
local czy_bez_preprocess=parametry_modul.CzyTak(bez_preprocess);
if(tekst)then
----
local tekst_stare=tekst;
local tablica_analizy_obiektow_strony_dany_modul_stare=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_analizy_obiektow_strony_dany_modul);
local tablica_danych_parametrow_szablonu_strony_stare=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_danych_parametrow_szablonu_strony);
local tabela_parametrow_szablonu_stare=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tabela_parametrow_szablonu);
----
local tekst_szablon=stronicowyparser_szablonytekstu_modul.PreparowanieSzablonoweLinkoweSzablonuTekstu(szablonowe_modul.NormaKoduKodowaniaTekstu("SZABLON",kod),nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
local tekst=stronicowyparser_szablonytekstu_modul.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu);
local czy_szablon_wszystko=false;
tekst_stare=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_stare,nil,tablica_analizy_obiektow_strony_dany_modul_stare,
function(szablon,obiekt,kod)
if(czy_bez_preprocess)then return nil;end;
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony_stare,kod,nazwa_modulu,
function(tabela_parametrow_szablonu_stare,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(
(tab_szablony[nazwa_szablonu])
or(tab_szablony_stronicowe_niekontenerowe[nazwa_szablonu])
or(tab_szablony_stronicowe_formatowania_tekstu[nazwa_szablonu])
or(tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego[nazwa_szablonu])
)then
if(not czy_artykul_korzystany)then
tabela_parametrow_szablonu_stare["nazwa przestrzeni nazw"]=tabela_parametrow_szablonu_stare["nazwa przestrzeni nazw"] or nazwa_przestrzeni;
tabela_parametrow_szablonu_stare["nazwa jednostki"]=tabela_parametrow_szablonu_stare["nazwa jednostki"] or (((nazwa_przestrzeni_ksiazki~="") and (nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki..((nazwa_artykulu~="") and ("/"..nazwa_artykulu) or ""))
if(self)then
local czy_link_lub_pobierz=mw.ustring.match(nazwa_szablonu,"^Link") or mw.ustring.match(nazwa_szablonu,"^Pobierz");
if(czy_link_lub_pobierz)then
stronicowyparser_zbieraniedanychstron_poprzebne_modul.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu_stare,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
else
stronicowyparser_zbieraniedanychstron_poprzebne_modul.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu_stare,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
end;
end;
end;
return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu_stare,tabela_modyfikatorow,true);
end;
return nil;
end,
function(tabela_parametrow_szablonu_stare,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
---- instrukcje warunkowe;
return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu_stare,tabela_modyfikatorow,true);
end,
function(tabela_parametrow_szablonu_stare,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
---- wywołania ramek Lua w Scribunto
return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu_stare,tabela_modyfikatorow,true);
end,
function(tabela_parametrow_szablonu_stare,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
---- tagi szablonowe;
return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu_stare,tabela_modyfikatorow,true);
end);
czy_szablon_wszystko=czy_szablon_wszystko or true;
if(wynik)then return wynik;end;
elseif(obiekt=="ZMIENNA")then
czy_szablon_wszystko=czy_szablon_wszystko or true;
local zawartosc=mw.ustring.match(szablon,"^{{{(.*)}}}$");
if(zawartosc)then
zawartosc=mw.ustring.gsub(zawartosc,"|","{{!}}");
return "{{(((}}"..zawartosc.."{{)))}}";
end;
end;
end);
if((czy_szablon_wszystko)and(not czy_bez_preprocess))then
local frame=mw.getCurrentFrame();
tekst_stare=frame:preprocess(tekst_stare);
end;
lista_dwuelementowa[2]=tekst_stare;
--local __metatabelka=getmetatable(tabela_parametrow_szablonu_stare);
--if(__metatabelka)then setmetatable(tabela_parametrow_szablonu_stare,nil);end;
stronicowyparser_szablonytekstu_modul.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu_stare,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul_stare,tablica_danych_parametrow_szablonu_strony_stare,czy_artykul_korzystany);
end;
end;
return;
elseif(czy_artykul_korzystany)then
if(czy_linkobiekt)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="LinkObiekt:"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
stronicowyparser_zbieraniedanychstron_poprzebne_modul.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,"Obiekt",nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
else
if(stronicowyparser_obiekty_modul.szablony_z_lokalnym_spisem_rzeczy_strony[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
return;
elseif(stronicowyparser_obiekty_modul.bez_uchwytow_spis_rzeczy_strony[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true;
local korzystane=self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA_KATEGORIE)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[2] or "";
local artykul=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[1] or "";
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..nazwa_ksiazki..((artykul)and ("/"..artykul) or "")
end;
end;
stronicowyparser_zbieraniedanychstron_poprzebne_modul.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=korzystane;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
return;
elseif(stronicowyparser_obiekty_modul.szablony_spisu[nazwa_szablonu_wywolania])then
local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA_KATEGORIE)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[2] or "";
local artykul=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[1] or "";
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..nazwa_ksiazki..((artykul)and ("/"..artykul) or "")
end;
end;
local czy_analiza=parametry_modul.CzyTak(tabela_parametrow_szablonu["analiza"]);
local czy_parser=parametry_modul.CzyTak(tabela_parametrow_szablonu["parser"]);
local czy_specjalne=parametry_modul.CzyTak(tabela_parametrow_szablonu["specjalne"]);
local dokumentacja=tabela_parametrow_szablonu["dokumentacja"];
local czy_dokumentacja;
if(not dokumentacja)then
czy_dokumentacja=czy_analiza or czy_specjalne or czy_parser;
else
czy_dokumentacja=parametry_modul.CzyTak(dokumentacja);
end;
if(
((czy_dokumentacja)and(czy_parser))
or((not czy_dokumentacja)and(czy_analiza))
)then
stronicowyparser_zbieraniedanychstron_poprzebne_modul.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
end;
return;
else
local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA_KATEGORIE)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local nazwy_modul=require("Module:Nazwy");
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or "";
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or "";
local nazwa_symulacyjnej_strony=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki;
local uchwyt=nazwa_szablonu_wywolania..":"..nazwa_symulacyjnej_strony;
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=uchwyt;
end;
end;
if((stronicowyparser_obiekty_modul.szablony_kontenerowe[nazwa_szablonu_wywolania])
or(szablony_strony_zbiorczej[nazwa_szablonu_wywolania])
)then
if(szablony_wykorzystywane_przez_strony_zbiorcze[nazwa_szablonu_wywolania])then
stronicowyparser_zbieraniedanychstron_poprzebne_modul.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true,KtorySzablonMaZwracacKategorie);
else
stronicowyparser_zbieraniedanychstron_poprzebne_modul.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nil,KtorySzablonMaZwracacKategorie);
end;
return;
elseif((strona_zbiorcza)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then
stronicowyparser_zbieraniedanychstron_poprzebne_modul.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true,KtorySzablonMaZwracacKategorie);
return;
end;
end;
end;
end;
end;
end;
end;
end;
----
local function GeneralnaAnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer)
stronicowyparser_potrzebne_modul:AnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_danych_parametrow_szablonu_strony,AnalizaParametrowaOrazNazwowaStronicowegoIteratoraSzablonowego);
end;
local function IterowaniePoElementachTekstu(tekst_rozwiniety_calego_artykulu,tab_numer)
--local stronicowyparser_szablonytekstu_modul=require("Module:StronicowyParser/SzablonyTekstu");
--tekst_rozwiniety_calego_artykulu=stronicowyparser_szablonytekstu_modul.PreparowanieSzablonoweLinkoweSzablonuTekstu(tekst_rozwiniety_calego_artykulu,"",nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul);
for uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod in iterator do
GeneralnaAnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer);
end;
end;
if(czy_artykul_korzystany)then
self.tabela_listy_danych_analizy_ksiazki.nazwa_bazowa_strony=nazwy_modul["PEŁNABAZOWANAZWASTRONY"](nazwa_modulu);
end;
IterowaniePoElementachTekstu(tekst_rozwiniety_calego_artykulu);
----
local tablica_danych_nazwy_artykulu=tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu] or {};
tablica_danych_nazwy_artykulu.uchwyty_i_numeracje=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2;
----
local wiki_modul=require("Module:Wiki");
tablica_danych_nazwy_artykulu.link_wikidane={wiki_modul.KodyKlasStronyNaDanejWiki{["strona"]=nazwa_modulu_aktualna_czy_biezaca,["nagłówek"]=true,["aktywny"]=true,},};
if(not czy_artykul_korzystany)then
if(pozawoluminowe_strony)then
if(not tablica_danych_nazwy_artykulu.prefiks_numeru_woluminowego_strony)then
local nazwa_modulu_korzystana_bazowa=self.tabela_listy_danych_analizy_ksiazki.nazwa_bazowa_strony;
local stronicowyparser_pomocne_modul=require("Module:StronicowyParser/Pomocne");
local zrostek=stronicowyparser_pomocne_modul["SkrótDoNumeruOdnośnika"](nazwa_modulu_korzystana_bazowa,nazwa_modulu);
tablica_danych_nazwy_artykulu.prefiks_numeru_woluminowego_strony={zrostek,pozawoluminowe_strony,czy_artykul_korzystany,};
end;
else
local niekorzystany_wolumin=(not korzystany_wolumin);
if(niekorzystany_wolumin)then
if(not tablica_danych_nazwy_artykulu.prefiks_numeru_woluminowego_strony)then
local stronicowyparser_pomocne_modul=require("Module:StronicowyParser/Pomocne");
local zrostek=stronicowyparser_pomocne_modul["SkrótDoNumeruOdnośnikaDołączonejKsiążki"](nazwa_ksiazki);
tablica_danych_nazwy_artykulu.prefiks_numeru_woluminowego_strony={zrostek,niekorzystany_wolumin,czy_artykul_korzystany,};
end;
end;
end;
end;
----
if(czy_artykul_korzystany)then
if(analiza_stron_korzystanych_zbiorczych)then
local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
tekst_rozwiniety_calego_artykulu=stronicowyparser_stronasubst_modul.LiczOperacjeStronZbiorczych(self,tekst_rozwiniety_calego_artykulu,tablica_ksiazki.spis,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
end;
end;
local strona;
if(czy_artykul_korzystany)then strona="";else strona=nazwa_modulu;end;
----
if(czy_artykul_korzystany)then
local stronicowyparser_szablonytekstu_modul=require("Module:StronicowyParser/SzablonyTekstu");
stronicowyparser_szablonytekstu_modul.UstawPobierzKorzystanie(tablica_zmiennych);
tekst_rozwiniety_calego_artykulu=stronicowyparser_szablonytekstu_modul.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu) or tekst_rozwiniety_calego_artykulu;
end;
----
local function SpisToc(self,czy_artykul_korzystany,tablica_danych_nazwy_artykulu,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,tabela_elementow_strony_kodow,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki, nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
return function()
if(((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane))
or((not czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)))then
----
local tablica_obiektow_strony_danych_kodow_specjalnych_modul=nil;
----
tekst_rozwiniety_calego_artykulu,tablica_obiektow_strony_danych_kodow_specjalnych_modul=szablonowe_modul:KodowanieInaczejZakodowanychNormKodowychTekstuWedleJegoTablicyKodowania(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,false);
----
local function KtorySzablonMaZwracacKategorieNaglowek(numeracja_aktualna,nazwa_szablonu)
if(czy_artykul_korzystany)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"powtórka nagłowek w stronie korzystanej"))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"powtórka nagłowek w stronie korzystanej");
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"powtórka nagłówek w stronie dołączonej",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
end;
local function KtorySzablonMaZwracacKategorieTekst(numeracja_aktualna,nazwa_szablonu)
if(czy_artykul_korzystany)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej"))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej");
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"nagłowek w tekście rozdziału w stronie dołączonej",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
end;
local function CzyJestTakiProblemJakoElementTablicySzablonuNaglowkaPozaNapisemWprowadzeniaTekstu()
return stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej");
end;
local nazwa_naglowka=stronicowyparser_obiekty_modul.nazwa_szablonu_wprowadzenia_tekstu;
local stronicowyparser_glownafunkcjazbieraniadanych_modul=require("Module:StronicowyParser/GłównaFunkcjaZbieraniaDanychStron");
local tablica_naglowka_obiekty=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_naglowka];
tablica_naglowka_obiekty.uchwyty_bez_numeracji={};
local toc=stronicowyparser_glownafunkcjazbieraniadanych_modul.SpisRzeczyWedlePodanegoTekstu(self,tekst_rozwiniety_calego_artykulu,strona,czy_artykul_korzystany,nil,tablica_naglowka_obiekty.uchwyty_bez_numeracji, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki, nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_obiektow_strony_danych_kodow_specjalnych_modul,{KtorySzablonMaZwracacKategorieNaglowek,KtorySzablonMaZwracacKategorieTekst,CzyJestTakiProblemJakoElementTablicySzablonuNaglowkaPozaNapisemWprowadzeniaTekstu,},nil,tabela_elementow_strony_kodow);
tablica_danych_nazwy_artykulu.TOC=toc;
return true;
end;
end;
end;
local czy_spis_function=SpisToc(self,czy_artykul_korzystany,tablica_danych_nazwy_artykulu,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,tabela_elementow_strony_kodow,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki, nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
local wynik=czy_spis_function();
if(not czy_artykul_korzystany)then
if(not wynik)then
tablica_danych_nazwy_artykulu.TOCSPIS_FUNCTION=czy_spis_function;
end;
end;
StronaSubstFunkcja(tablica_danych_nazwy_artykulu,tablica_ksiazki.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(czy_artykul_korzystany)then
self.tabela_listy_danych_analizy_ksiazki.link_wikidane=tablica_danych_nazwy_artykulu.link_wikidane;
self.tabela_listy_danych_analizy_ksiazki.prefiks_numeru_woluminowego_strony=tablica_danych_nazwy_artykulu.prefiks_numeru_woluminowego_strony;
self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2;
self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni];
self.tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki=self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw[nazwa_przestrzeni_ksiazki];
self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_ksiazki=self.tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki[nazwa_ksiazki];
--self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron=tablica_zmiennych;
end;
if(not czy_artykul_korzystany)then
tablica_danych_nazwy_artykulu.dane_zebrane_ze_stron=tablica_zmiennych;
if(not self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista)then self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista={};end;
table.insert(self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista,tablica_danych_nazwy_artykulu);
else
local dane_zebrane_ze_stron_lista=self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista;
if(dane_zebrane_ze_stron_lista)then
for _,tablica_danych_nazwy_artykulu in ipairs(dane_zebrane_ze_stron_lista)do
tablica_danych_nazwy_artykulu.dane_zebrane_ze_stron=nil;
tablica_danych_nazwy_artykulu.TOCSPIS_FUNCTION=nil;
end;
end;
tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane=nil;
end;
return self.tabela_listy_danych_analizy_ksiazki,tablica_zmiennych,true;
end;
return p;
1wjm21xo6yb9k79u35yh218dqbuyuhx
558410
558365
2026-10-03T11:35:17Z
Persino
2851
558410
Scribunto
text/plain
local p={};
function p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, czy_artykul_korzystany,tablica_zmiennych,czy_szablon_pudelkowy_strony_zbiorczej)
local function __FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if(not self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni])then self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]={};end;
local tablica_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni];
if(not tablica_przestrzeni[nazwa_przestrzeni_ksiazki])then tablica_przestrzeni[nazwa_przestrzeni_ksiazki]={};end;
local tablica_przestrzeni_ksiazki=tablica_przestrzeni[nazwa_przestrzeni_ksiazki];
if(not tablica_przestrzeni_ksiazki[nazwa_ksiazki])then tablica_przestrzeni_ksiazki[nazwa_ksiazki]={};end;
local tablica_ksiazki=tablica_przestrzeni_ksiazki[nazwa_ksiazki];
if(not tablica_ksiazki.lista_podstron_woluminu)then tablica_ksiazki.lista_podstron_woluminu={};end;
if(nazwa_artykulu)then
if(not tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu])then tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu]={};end;
local artykul_analizowany=tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu];
return tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany;
else
return tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki;
end;
end;
local korzystany_wolumin=false;
local function __FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if(not czy_artykul_korzystany)then
if(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni and self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu and self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu and self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu)then
if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu==nazwa_przestrzeni_ksiazki)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu==nazwa_ksiazki))then
korzystany_wolumin=true;
if(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu)then
return 0,nil,nil,nil,nil,nil,self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron,false;
else
if(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=true;
end;
end;
else
if(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=true;
end;
end;
else
return nil;
end;
else
korzystany_wolumin=true;
end;
if(self.tabela_listy_danych_analizy_ksiazki)then
if(self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron)then
local tabela_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni];
if(tabela_przestrzeni)then
local tabela_przestrzeni_ksiazki=tabela_przestrzeni[nazwa_przestrzeni_ksiazki];
if(tabela_przestrzeni_ksiazki)then
local tabela_ksiazka=tabela_przestrzeni_ksiazki[nazwa_ksiazki];
if(tabela_ksiazka)then
local lista_artykolow=tabela_ksiazka.lista_podstron_woluminu;
if(lista_artykolow)then
local tabela_artykul=lista_artykolow[nazwa_artykulu];
if(tabela_artykul)then
local dane_zebrane_ze_stron=tabela_artykul.dane_zebrane_ze_stron;
----
if(not czy_artykul_korzystany)then
if(tabela_artykul.TOCSPIS_FUNCTION)then
local wynik=tabela_artykul.TOCSPIS_FUNCTION();
if(wynik)then
tabela_artykul.TOCSPIS_FUNCTION=nil;
end;
end;
end;
return 0,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni,dane_zebrane_ze_stron,true;
end;
end;
end;
end;
end;
else
return nil;
end;
else
return nil;
end;
return true;
end;
local nazwy_modul=require("Module:Nazwy");
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni,dane_zebrane_ze_stron,czy_inna=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local function StronaSubstFunkcja(tabela_artykul,spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if((czy_szablon_pudelkowy_strony_zbiorczej)and(not czy_artykul_korzystany)and(tabela_artykul)and(not tabela_artykul.strona_zbiorcza))then
--local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
local TakFun=function(frame) return "tak";end;local NieFun=function(frame) return "";end;
tabela_artykul.strona_zbiorcza=stronicowyparser_stronasubst_modul.AnalizaStronaSubst(self.tabela_listy_danych_analizy_ksiazki,spis,nil,TakFun,NieFun,nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
end;
end;
if(not wartosc_wyniku)then
return wartosc_wyniku,dane_zebrane_ze_stron,czy_inna;
elseif(wartosc_wyniku==0)then
if(tabela_artykul)then
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku,dane_zebrane_ze_stron,czy_inna;
else
return wartosc_wyniku,dane_zebrane_ze_stron,czy_inna;
end;
end;
----
local pozawoluminowe_strony;
----
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if((nazwa_przestrzeni~=nazwy_np_modul.Main)
and(nazwa_przestrzeni~=nazwy_np_modul.Wikijunior)
and((nazwa_przestrzeni~=nazwy_np_modul.User)or(not mw.ustring.match(nazwa_przestrzeni_ksiazki,"^([^/]+)$")))
and((nazwa_przestrzeni~=nazwy_np_modul.Wikibooks)or(not mw.ustring.match(nazwa_przestrzeni_ksiazki,"^%s*[Bb]rudnopis/([^/]+)$")))
)then
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
pozawoluminowe_strony=true;
end;
----
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local parametry_modul=require("Module:Parametry");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
----
local tekst_rozwiniety_calego_artykulu_ref=nil;
local tablica_analizy_obiektow_strony_dany_modul_ref=nil;
local tablica_danych_parametrow_szablonu_strony_ref=nil;
----
local function InneInformacjePrzebneDoAnalizowanejKsiazki()
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then
if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki))then
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki["CzyArtykułKsiążki"])then self.tabela_listy_danych_analizy_ksiazki["CzyArtykułKsiążki"]="tak";end;
end;
local czy_ksiazka_istnieje_w_tablicy=((tablica_ksiazki)and(tablica_ksiazki.czy_spis_analizowano))and true or false;
if(not czy_ksiazka_istnieje_w_tablicy)then
tablica_ksiazki.czy_spis_analizowano=true;
local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści");
local nazwa_przestrzeni_strona_temp,nazwa_przestrzeni_ksiazki_strona_temp,nazwa_ksiazki_strona_temp;
local tabela_artykulow,tabela_licencji_spisu_tresci,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,adres_ksiazki_glownego_spisu_tresci=stronicowyparser_spistresci_modul.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,czy_artykul_korzystany,function(nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona)
local tablica_przestrzeni_strona=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni_strona];
if(tablica_przestrzeni_strona)then
local tablica_przestrzeni_ksiazki_strona=tablica_przestrzeni_strona[nazwa_przestrzeni_ksiazki_strona];
if(tablica_przestrzeni_ksiazki_strona)then
local tablica_ksiazki_strona=tablica_przestrzeni_ksiazki_strona[nazwa_ksiazki_strona];
if(tablica_ksiazki_strona)then
if(tablica_ksiazki_strona.spis)then
nazwa_przestrzeni_strona_temp,nazwa_przestrzeni_ksiazki_strona_temp,nazwa_ksiazki_strona_temp=nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona;
tablica_ksiazki.spis=tablica_ksiazki_strona.spis;
tablica_ksiazki.licencja=tablica_ksiazki_strona.licencja;
tablica_ksiazki.nazwa_bazowego_spisu=tablica_ksiazki_strona.nazwa_bazowego_spisu;
tablica_ksiazki.tab_inne_spisy=tablica_ksiazki_strona.tab_inne_spisy;
tablica_ksiazki.dodatkowe_strony_woluminu=tablica_ksiazki_strona.dodatkowe_strony_woluminu;
tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy=tablica_ksiazki_strona.adres_woluminu_bazowego_spisu_rzeczy;
tablica_ksiazki.referencja_do_nowej_formy_spisu={tablica_przestrzeni_strona,tablica_przestrzeni_ksiazki_strona,tablica_ksiazki_strona,};
return 1;
end;
end;
end
end;
end,function(tekst_rozwiniety_calego_artykulu_ref_spis,nazwa_przestrzeni_ref_spis,nazwa_przestrzeni_ksiazki_ref_spis,nazwa_ksiazki_ref_spis,nazwa_artykulu_ref_spis,tablica_analizy_obiektow_strony_dany_modul_ref_spis,tablica_danych_parametrow_szablonu_strony_ref_spis)
----
if((nazwa_przestrzeni==nazwa_przestrzeni_ref_spis)and(nazwa_przestrzeni_ksiazki==nazwa_przestrzeni_ksiazki_ref_spis)and(nazwa_ksiazki==nazwa_ksiazki_ref_spis)and(nazwa_artykulu==nazwa_artykulu_ref_spis))then
tekst_rozwiniety_calego_artykulu_ref=tekst_rozwiniety_calego_artykulu_ref_spis;
local parametry_modul=require("Module:Parametry");
tablica_analizy_obiektow_strony_dany_modul_ref=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_analizy_obiektow_strony_dany_modul_ref_spis);
tablica_danych_parametrow_szablonu_strony_ref=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_danych_parametrow_szablonu_strony_ref_spis);
end;
----
end);
local function __FUNKCJA_SPISU(tablica_ksiazki,czy_podac_adres)
tablica_ksiazki.spis=tabela_artykulow;
if(czy_artykul_korzystany)then
tablica_ksiazki.licencja=tabela_licencji_spisu_tresci;
end;
tablica_ksiazki.nazwa_bazowego_spisu=nazwa_glownego_spisu;
tablica_ksiazki.tab_inne_spisy=tab_inne_spisy;
tablica_ksiazki.dodatkowe_strony_woluminu=dodatkowe_artykuly;
tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy=czy_podac_adres and adres_ksiazki_glownego_spisu_tresci or nil;
end;
if(tabela_artykulow==0)then
if(czy_artykul_korzystany)then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"korzystana strona główna nie istnieje");
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"dołączone strony główne nie istnieją",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
end;
elseif(tabela_artykulow)then
if(parametry_modul.TypeTable(tabela_artykulow))then
if(adres_ksiazki_glownego_spisu_tresci)then
__FUNKCJA_SPISU(tablica_ksiazki,true);
local tablica_ksiazki_stara=tablica_ksiazki;
local artykul,kod_wyniku=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,true);
local nazwa_przestrzeni=adres_ksiazki_glownego_spisu_tresci[1];
local nazwa_przestrzeni_ksiazki=adres_ksiazki_glownego_spisu_tresci[2];
local nazwa_ksiazki=adres_ksiazki_glownego_spisu_tresci[3];
if((kod_wyniku==1)or(kod_wyniku==2))then
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul);
if(not wartosc_wyniku)then
return wartosc_wyniku,true;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
local nazwa_artykulu=artykul;
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku,true;
end;
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni ,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul);
tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,};
__FUNKCJA_SPISU(tablica_ksiazki,false);
return nil,nil,artykul,kod_wyniku;
elseif((kod_wyniku==3)or(kod_wyniku==4))then
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul);
tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,};
__FUNKCJA_SPISU(tablica_ksiazki,false);
return nil,nil,artykul,kod_wyniku;
end;
else
__FUNKCJA_SPISU(tablica_ksiazki,false);
end;
elseif(tabela_artykulow~=1)then
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(not wartosc_wyniku)then
return wartosc_wyniku,true;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku,true;
end;
end;
else
if(czy_artykul_korzystany)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak spisów treści do korzystanych książek na ich stronach głównych"))then
if(((self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu=="")and(nazwa_artykulu~=""))or(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu~=""))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak spisów treści do korzystanych książek na ich stronach głównych");
end;
end;
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"brak spisów treści do dołączonych książek na ich stronach głównych",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
end;
end;
end;
end;
end;
end;
----
local wartosc_wyniku,wynik_bledu,artykul_bazowy,kod_wyniku_bazowy=InneInformacjePrzebneDoAnalizowanejKsiazki();
if(wynik_bledu)then return wartosc_wyniku;end;
local kod_wyniku_przekierowan=kod_wyniku_bazowy;
----
--if((not tablica_przestrzeni)or(not tablica_przestrzeni_ksiazki)or(not tablica_ksiazki)or(not artykul_analizowany))then
-- tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
--end;
----
if((tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy)and(kod_wyniku_bazowy))--[[and((kod_wyniku_bazowy==1)or(kod_wyniku_bazowy==2))]]then
----
nazwa_przestrzeni=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[1];
nazwa_przestrzeni_ksiazki=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[2];
nazwa_ksiazki=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[3];
nazwa_artykulu=artykul_bazowy;
----
tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki=tablica_ksiazki.referencja_do_nowej_formy_spisu[1],tablica_ksiazki.referencja_do_nowej_formy_spisu[2],tablica_ksiazki.referencja_do_nowej_formy_spisu[3];
end;
local tabela_artykulow=tablica_ksiazki.spis;
if(tabela_artykulow)then
local nazwa_glownego_spisu=tablica_ksiazki.nazwa_bazowego_spisu;
local tab_inne_spisy=tablica_ksiazki.tab_inne_spisy;
local dodatkowe_artykuly=tablica_ksiazki.dodatkowe_strony_woluminu
local artykul,kod_wyniku=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,false);
if(kod_wyniku)then
nazwa_artykulu=artykul;
tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
end;
kod_wyniku_przekierowan=kod_wyniku_przekierowan or kod_wyniku;
end;
local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local PrzekierownieAwaryjne=function()
if(not kod_wyniku_przekierowan)then
--local artykul2,kod_wyniku2=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,true);
local techniczne_modul=require("Module:Techniczne");
local strona=techniczne_modul.PrzekierowanieDoStrony(nazwa_modulu);
if(strona)then
if(strona~=nazwa_modulu)then
----
local tabela_nazw={};
nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw);
nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw);
nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw) or nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw));
nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazwa);
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(not wartosc_wyniku)then
return wartosc_wyniku;
elseif(wartosc_wyniku==0)then
if(tabela_artykul)then
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku;
else
return wartosc_wyniku;
end;
end;
tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
nazwa_modulu=strona;
else
return 0;
end;
end;
end;
end;
local wynik=PrzekierownieAwaryjne();
if(czy_artykul_korzystany)then
self.nazwa_modulu_biezaca=nazwa_modulu;
end;
if(wynik)then return wynik;end;
----
if(czy_artykul_korzystany)then
if((not self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu))then
self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni=nazwa_przestrzeni;
self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu=nazwa_przestrzeni_ksiazki;
self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu=nazwa_ksiazki;
self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu=nazwa_artykulu;
end;
end;
local nazwa_modulu_aktualna_czy_biezaca=self.tabela_listy_danych_analizy_ksiazki.alternatywna and nazwy_modul["NazwaModułu"](self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu) or nazwa_modulu;
-- przydzielanie tablicy
if(czy_artykul_korzystany)then
artykul_analizowany.artykul_biezacy=true;
tablica_ksiazki.ksiazka_analizowana=true;
end;
--koniec
--local iterator=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,"{{[^{}]-}}");
if(not tablica_zmiennych)then tablica_zmiennych={};end;
if(not tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)then tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2={};end;
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
for _,element_w_tablicy_obiekt in pairs(stronicowyparser_obiekty_modul.tablica_obiektowych_form)do
local CzyLink=element_w_tablicy_obiekt.CzyLink;
local CzyNum=element_w_tablicy_obiekt.CzyNum;
local wartosc=element_w_tablicy_obiekt[1];
tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[wartosc]={CzyLink=CzyLink,CzyNum=CzyNum,};
if(czy_artykul_korzystany)then tablica_zmiennych.linkobiekt[wartosc]={CzyLink=CzyLink,CzyNum=CzyNum;};end;
end;
local function StronaZbiorcza()
if(czy_artykul_korzystany)then
local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
local TakFun=function(frame) return true;end;local NieFun=function(frame) return nil;end;
local wynik=stronicowyparser_stronasubst_modul.AnalizaStronaSubst(self.tabela_listy_danych_analizy_ksiazki,tablica_ksiazki.spis,nil,TakFun,NieFun,nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
artykul_analizowany.strona_zbiorcza=(wynik and "tak" or "");
return wynik;
end;
return nil;
end;
local strona_zbiorcza=StronaZbiorcza();
local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
local szablonowe_modul=require("Module:Szablonowe");
local nazwa_modulu_aktualna_czy_biezaca_szablonowa=szablonowe_modul["SzablonowaKompletnaNazwaStrony"](nazwa_modulu_aktualna_czy_biezaca);
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
----
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony;
if((not tekst_rozwiniety_calego_artykulu_ref)or(not tablica_analizy_obiektow_strony_dany_modul_ref)or(not tablica_danych_parametrow_szablonu_strony_ref))then
tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,(((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.inna_strona_aktualna_niz_biezaca))and true or nil),
nil)
else
tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=tekst_rozwiniety_calego_artykulu_ref,tablica_analizy_obiektow_strony_dany_modul_ref,tablica_danych_parametrow_szablonu_strony_ref;
end;
----
if(not czy_artykul_korzystany)then
if(not tekst_rozwiniety_calego_artykulu)then return 0;end;
end;
if(czy_artykul_korzystany)then
if(not tekst_rozwiniety_calego_artykulu)then
if(strona_zbiorcza)then
self.tabela_listy_danych_analizy_ksiazki["CzyStronaSubst"]="tak";
end;
return nil;
end;
end;
local parametry_modul=require("Module:Parametry");
if((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.inna_strona_aktualna_niz_biezaca))then
local aktualna_nazwa_modulu;local aktualna_nazwa_modulu_szablonowa;
if(nazwa_modulu_aktualna_czy_biezaca)then
aktualna_nazwa_modulu=nazwa_modulu_aktualna_czy_biezaca;
aktualna_nazwa_modulu_szablonowa=nazwa_modulu_aktualna_czy_biezaca_szablonowa;
else
aktualna_nazwa_modulu=nazwy_modul["NazwaModułu"](self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu);
aktualna_nazwa_modulu_szablonowa=szablonowe_modul["SzablonowaKompletnaNazwaStrony"](aktualna_nazwa_modulu);
end;
local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(self,aktualna_nazwa_modulu,aktualna_nazwa_modulu_szablonowa);
if(tekst)then
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,aktualna_nazwa_modulu);
local tablica_danych_parametrow_szablonu_strony={};
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,aktualna_nazwa_modulu_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(stronicowyparser_obiekty_modul.strona_start_ze_spisem_rzeczy_strony[nazwa_szablonu])then
self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak";
self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
return true;
elseif(stronicowyparser_obiekty_modul.strona_start[nazwa_szablonu])then
self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak";
self.tabela_listy_danych_analizy_ksiazki.formatowanie=tabela_parametrow_szablonu["formatowanie"];
local boczne_menu=tabela_parametrow_szablonu["boczne menu"] or "";
local spis_tresci=tabela_parametrow_szablonu["spis treści"] or "TOC";
if((parametry_modul.CzyTak(boczne_menu))or(parametry_modul.CzyTak(spis_tresci)))then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
end;
return true;
end;
end);
if(wynik)then break;end;
end;
end;
end;
end;
local uzyskano_w_wyniku_parsowania_wywolanie_szablonu;
local analiza_stron_korzystanych_zbiorczych=nil;
local stronastart=nil;
----
local tablica_obiekty=stronicowyparser_obiekty_modul.obiekty;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty;
local format_elementowy_referencji_obiektowy=stronicowyparser_obiekty_modul.format_elementowy_referencji_obiektowy;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
local szablony_wykorzystywane_przez_strony_zbiorcze=stronicowyparser_obiekty_modul.szablony_wykorzystywane_przez_strony_zbiorcze;
local format_elementowy_obiektowy=stronicowyparser_obiekty_modul.format_elementowy_obiektowy;
local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty;
local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_naglowka=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu;
local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
----
local strona_start=stronicowyparser_obiekty_modul.strona_start;
local strona_start_ze_spisem_rzeczy_strony=stronicowyparser_obiekty_modul.strona_start_ze_spisem_rzeczy_strony;
local strona_start_inne=stronicowyparser_obiekty_modul.strona_start_inne;
local szablony_strony_zbiorczej=stronicowyparser_obiekty_modul.strona_zbiorcza;
----
local tab_szablony=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_kontenerowe;
local tab_szablony_stronicowe_niekontenerowe=stronicowyparser_obiekty_modul.szablony_stronicowe_niekontenerowe;
local tab_szablony_stronicowe_formatowania_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowe_formatowania_tekstu;
local tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego=stronicowyparser_obiekty_modul.szablony_stronicowe_kontenerowe_formatowania_wzorowego;
----
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local stronicowyparser_zbieraniedanychstron_poprzebne_modul=require("Module:StronicowyParser/ZbieranieDanychStron/Potrzebne");
local tabela_elementow_strony_kodow={};
----
-- for uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod in iterator do
local function AnalizaParametrowaOrazNazwowaStronicowegoIteratoraSzablonowego(tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer)
if(czy_artykul_korzystany)then
if(tabela_parametrow_szablonu)then
if((not stronastart)and(self.tabela_listy_danych_analizy_ksiazki.formatowanie==nil))then
if(strona_start[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak";
self.tabela_listy_danych_analizy_ksiazki.formatowanie=tabela_parametrow_szablonu["formatowanie"];
stronastart=true;
local boczne_menu=tabela_parametrow_szablonu["boczne menu"] or "";
local spis_tresci=tabela_parametrow_szablonu["spis treści"] or "TOC";
if((parametry_modul.CzyTak(boczne_menu))or(parametry_modul.CzyTak(spis_tresci)))then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
end;
return;
elseif(strona_start_ze_spisem_rzeczy_strony[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak";
self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
stronastart=true;
return;
elseif(strona_start_inne[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak";
self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
stronastart=true;
return;
elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then
analiza_stron_korzystanych_zbiorczych=true;
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"];
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"];
if((not parametry_modul.CzyTak(nazwa_prestreni_nazw))and(not parametry_modul.CzyTak(nazwa_jednostki)))then
return;
end;
end;
elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then
analiza_stron_korzystanych_zbiorczych=true;
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"];
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"];
if((not parametry_modul.CzyTak(nazwa_przestrzeni))and(not parametry_modul.CzyTak(nazwa_jednostki)))then
return;
end;
end;
end;
end;
local plik=mw.ustring.match(nazwa_szablonu_wywolania,"^:");
if(plik==nil)then
if(tabela_parametrow_szablonu)then
if(not parametry_modul.CzyTak(tabela_parametrow_szablonu["bez automatu"]))then
local czy_wypowiedzenie=(nazwa_szablonu_wywolania=="Wypowiedzenie");
local czy_linkobiekt;
local czy_link;local czy_pobierz;
local czy_wypowiedzenie_z_parametrami;
local czy_linkobiekt_z_parametrami;
if(czy_wypowiedzenie)then
czy_linkobiekt=false;
czy_link=false;
czy_pobierz=false;
czy_wypowiedzenie_z_parametrami=parametry_modul.CzyTak(tabela_parametrow_szablonu["rodzaj"]);
else
czy_linkobiekt=(nazwa_szablonu_wywolania=="LinkObiekt");
if(czy_linkobiekt)then
czy_link=true;
czy_pobierz=false;
czy_linkobiekt_z_parametrami=parametry_modul.CzyTak(tabela_parametrow_szablonu["typ"]);
else
czy_link=mw.ustring.match(nazwa_szablonu_wywolania,"^Link");
czy_pobierz=(not czy_link) and mw.ustring.match(nazwa_szablonu_wywolania,"^Pobierz") or nil;
end;
end;
if((not czy_link)and(not czy_pobierz))then
local wartosc_elementu;local numer_uchwytu;
if(not czy_wypowiedzenie_z_parametrami) then
local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty[nazwa_szablonu_wywolania];
if(tab_wartosc_elementu)then
wartosc_elementu=tab_wartosc_elementu[1];
numer_uchwytu=tab_wartosc_elementu[2];
end;
else
local rodzaj=tabela_parametrow_szablonu["rodzaj"];
if(rodzaj)then
wartosc_elementu=format_elementowy_obiektowy[rodzaj] and rodzaj or nil;
if(wartosc_elementu)then
numer_uchwytu=tablica_obiekty[5];
end;
end;
end;
if(wartosc_elementu)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
if(uchwyt_obiektu and (uchwyt_obiektu~=""))then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
end;
stronicowyparser_zbieraniedanychstron_poprzebne_modul.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],tab_numer,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
end;
elseif(czy_artykul_korzystany)then
if(czy_link)then
local wartosc_elementu;
if(not czy_linkobiekt_z_parametrami)then
wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty[nazwa_szablonu_wywolania];
else
local typ=tabela_parametrow_szablonu["typ"];
if(typ)then
typ=format_elementowy_referencji_obiektowy[typ] and typ or nil;
if(typ)then
wartosc_elementu=mw.getContentLanguage():ucfirst(typ);
end;
end;
end;
if(wartosc_elementu)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Link"..wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
stronicowyparser_zbieraniedanychstron_poprzebne_modul.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
else
local wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu[nazwa_szablonu_wywolania];
if(wartosc_elementu)then
local korzystane=self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
stronicowyparser_zbieraniedanychstron_poprzebne_modul.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=korzystane;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
return;
end;
end;
elseif(czy_pobierz)then
local wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu[nazwa_szablonu_wywolania];
if(wartosc_elementu)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
stronicowyparser_zbieraniedanychstron_poprzebne_modul.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie,true);
return;
end;
end;
end;
if(czy_wypowiedzenie)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Obiekt:"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
stronicowyparser_zbieraniedanychstron_poprzebne_modul.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,"Obiekt", czy_artykul_korzystany,tablica_obiekty[5],tab_numer,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
elseif(stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_wprowadzenia_tekstu[nazwa_szablonu_wywolania])then
local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_naglowka[nazwa_szablonu_wywolania];
local wartosc_elementu;local numer_uchwytu;
if(tab_wartosc_elementu)then
wartosc_elementu=tab_wartosc_elementu[1];
numer_uchwytu=tab_wartosc_elementu[2];
end;
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
if(uchwyt_obiektu and (uchwyt_obiektu~=""))then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
end;
local lista_dwuelementowa=stronicowyparser_zbieraniedanychstron_poprzebne_modul.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],tab_numer,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
stronicowyparser_zbieraniedanychstron_poprzebne_modul.UstawUchwytyWeTablicyBezNumeracji(self,tabela_elementow_strony_kodow,wartosc_elementu,lista_dwuelementowa,kod);
if(czy_artykul_korzystany)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
end;
return;
elseif(stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu[nazwa_szablonu_wywolania])then
local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu[nazwa_szablonu_wywolania];
local wartosc_elementu;local numer_uchwytu;
if(tab_wartosc_elementu)then
wartosc_elementu=tab_wartosc_elementu[1];
numer_uchwytu=tab_wartosc_elementu[2];
end;
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
if(uchwyt_obiektu and (uchwyt_obiektu~=""))then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
end;
local lista_dwuelementowa=stronicowyparser_zbieraniedanychstron_poprzebne_modul.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],tab_numer,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
if(lista_dwuelementowa)then
local stronicowyparser_szablonytekstu_modul=require("Module:StronicowyParser/SzablonyTekstu");
local tekst=stronicowyparser_szablonytekstu_modul.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu);
local bez_preprocess=stronicowyparser_szablonytekstu_modul.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu);
local czy_bez_preprocess=parametry_modul.CzyTak(bez_preprocess);
if(tekst)then
----
local tekst_stare=tekst;
--local tablica_analizy_obiektow_strony_dany_modul_stare=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_analizy_obiektow_strony_dany_modul);
--local tablica_danych_parametrow_szablonu_strony_stare=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_danych_parametrow_szablonu_strony);
local tablica_analizy_obiektow_strony_dany_modul_stare,tablica_danych_parametrow_szablonu_strony_stare=stronicowyparser_szablonytekstu_modul["KopiujRekurencyjnieTabelęElementówSzablonuTekstu"](uzyskano_w_wyniku_parsowania_wywolanie_szablonu,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
local tabela_parametrow_szablonu_stare=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tabela_parametrow_szablonu);
----
local tekst_szablon=stronicowyparser_szablonytekstu_modul.PreparowanieSzablonoweLinkoweSzablonuTekstu(szablonowe_modul.NormaKoduKodowaniaTekstu("SZABLON",kod),nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
local tekst=stronicowyparser_szablonytekstu_modul.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu);
local czy_szablon_wszystko=false;
tekst_stare=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_stare,nil,tablica_analizy_obiektow_strony_dany_modul_stare,
function(szablon,obiekt,kod)
if(czy_bez_preprocess)then return nil;end;
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony_stare,kod,nazwa_modulu,
function(tabela_parametrow_szablonu_stare,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(
(tab_szablony[nazwa_szablonu])
or(tab_szablony_stronicowe_niekontenerowe[nazwa_szablonu])
or(tab_szablony_stronicowe_formatowania_tekstu[nazwa_szablonu])
or(tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego[nazwa_szablonu])
)then
if(not czy_artykul_korzystany)then
tabela_parametrow_szablonu_stare["nazwa przestrzeni nazw"]=tabela_parametrow_szablonu_stare["nazwa przestrzeni nazw"] or nazwa_przestrzeni;
tabela_parametrow_szablonu_stare["nazwa jednostki"]=tabela_parametrow_szablonu_stare["nazwa jednostki"] or (((nazwa_przestrzeni_ksiazki~="") and (nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki..((nazwa_artykulu~="") and ("/"..nazwa_artykulu) or ""))
if(self)then
local czy_link_lub_pobierz=mw.ustring.match(nazwa_szablonu,"^Link") or mw.ustring.match(nazwa_szablonu,"^Pobierz");
if(czy_link_lub_pobierz)then
stronicowyparser_zbieraniedanychstron_poprzebne_modul.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu_stare,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
else
stronicowyparser_zbieraniedanychstron_poprzebne_modul.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu_stare,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
end;
end;
end;
return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu_stare,tabela_modyfikatorow,true);
end;
return nil;
end,
function(tabela_parametrow_szablonu_stare,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
---- instrukcje warunkowe;
return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu_stare,tabela_modyfikatorow,true);
end,
function(tabela_parametrow_szablonu_stare,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
---- wywołania ramek Lua w Scribunto
return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu_stare,tabela_modyfikatorow,true);
end,
function(tabela_parametrow_szablonu_stare,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
---- tagi szablonowe;
return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu_stare,tabela_modyfikatorow,true);
end);
czy_szablon_wszystko=czy_szablon_wszystko or true;
if(wynik)then return wynik;end;
elseif(obiekt=="ZMIENNA")then
czy_szablon_wszystko=czy_szablon_wszystko or true;
local zawartosc=mw.ustring.match(szablon,"^{{{(.*)}}}$");
if(zawartosc)then
zawartosc=mw.ustring.gsub(zawartosc,"|","{{!}}");
return "{{(((}}"..zawartosc.."{{)))}}";
end;
end;
end);
if((czy_szablon_wszystko)and(not czy_bez_preprocess))then
local frame=mw.getCurrentFrame();
tekst_stare=frame:preprocess(tekst_stare);
end;
lista_dwuelementowa[2]=tekst_stare;
--local __metatabelka=getmetatable(tabela_parametrow_szablonu_stare);
--if(__metatabelka)then setmetatable(tabela_parametrow_szablonu_stare,nil);end;
stronicowyparser_szablonytekstu_modul.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu_stare,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul_stare,tablica_danych_parametrow_szablonu_strony_stare,czy_artykul_korzystany);
end;
end;
return;
elseif(czy_artykul_korzystany)then
if(czy_linkobiekt)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="LinkObiekt:"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
stronicowyparser_zbieraniedanychstron_poprzebne_modul.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,"Obiekt",nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
else
if(stronicowyparser_obiekty_modul.szablony_z_lokalnym_spisem_rzeczy_strony[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
return;
elseif(stronicowyparser_obiekty_modul.bez_uchwytow_spis_rzeczy_strony[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true;
local korzystane=self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA_KATEGORIE)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[2] or "";
local artykul=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[1] or "";
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..nazwa_ksiazki..((artykul)and ("/"..artykul) or "")
end;
end;
stronicowyparser_zbieraniedanychstron_poprzebne_modul.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=korzystane;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
return;
elseif(stronicowyparser_obiekty_modul.szablony_spisu[nazwa_szablonu_wywolania])then
local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA_KATEGORIE)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[2] or "";
local artykul=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[1] or "";
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..nazwa_ksiazki..((artykul)and ("/"..artykul) or "")
end;
end;
local czy_analiza=parametry_modul.CzyTak(tabela_parametrow_szablonu["analiza"]);
local czy_parser=parametry_modul.CzyTak(tabela_parametrow_szablonu["parser"]);
local czy_specjalne=parametry_modul.CzyTak(tabela_parametrow_szablonu["specjalne"]);
local dokumentacja=tabela_parametrow_szablonu["dokumentacja"];
local czy_dokumentacja;
if(not dokumentacja)then
czy_dokumentacja=czy_analiza or czy_specjalne or czy_parser;
else
czy_dokumentacja=parametry_modul.CzyTak(dokumentacja);
end;
if(
((czy_dokumentacja)and(czy_parser))
or((not czy_dokumentacja)and(czy_analiza))
)then
stronicowyparser_zbieraniedanychstron_poprzebne_modul.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
end;
return;
else
local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA_KATEGORIE)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local nazwy_modul=require("Module:Nazwy");
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or "";
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or "";
local nazwa_symulacyjnej_strony=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki;
local uchwyt=nazwa_szablonu_wywolania..":"..nazwa_symulacyjnej_strony;
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=uchwyt;
end;
end;
if((stronicowyparser_obiekty_modul.szablony_kontenerowe[nazwa_szablonu_wywolania])
or(szablony_strony_zbiorczej[nazwa_szablonu_wywolania])
)then
if(szablony_wykorzystywane_przez_strony_zbiorcze[nazwa_szablonu_wywolania])then
stronicowyparser_zbieraniedanychstron_poprzebne_modul.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true,KtorySzablonMaZwracacKategorie);
else
stronicowyparser_zbieraniedanychstron_poprzebne_modul.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nil,KtorySzablonMaZwracacKategorie);
end;
return;
elseif((strona_zbiorcza)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then
stronicowyparser_zbieraniedanychstron_poprzebne_modul.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true,KtorySzablonMaZwracacKategorie);
return;
end;
end;
end;
end;
end;
end;
end;
end;
----
local function GeneralnaAnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer)
stronicowyparser_potrzebne_modul:AnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_danych_parametrow_szablonu_strony,AnalizaParametrowaOrazNazwowaStronicowegoIteratoraSzablonowego);
end;
local function IterowaniePoElementachTekstu(tekst_rozwiniety_calego_artykulu,tab_numer)
--local stronicowyparser_szablonytekstu_modul=require("Module:StronicowyParser/SzablonyTekstu");
--tekst_rozwiniety_calego_artykulu=stronicowyparser_szablonytekstu_modul.PreparowanieSzablonoweLinkoweSzablonuTekstu(tekst_rozwiniety_calego_artykulu,"",nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul);
for uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod in iterator do
GeneralnaAnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer);
end;
end;
if(czy_artykul_korzystany)then
self.tabela_listy_danych_analizy_ksiazki.nazwa_bazowa_strony=nazwy_modul["PEŁNABAZOWANAZWASTRONY"](nazwa_modulu);
end;
IterowaniePoElementachTekstu(tekst_rozwiniety_calego_artykulu);
----
local tablica_danych_nazwy_artykulu=tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu] or {};
tablica_danych_nazwy_artykulu.uchwyty_i_numeracje=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2;
----
local wiki_modul=require("Module:Wiki");
tablica_danych_nazwy_artykulu.link_wikidane={wiki_modul.KodyKlasStronyNaDanejWiki{["strona"]=nazwa_modulu_aktualna_czy_biezaca,["nagłówek"]=true,["aktywny"]=true,},};
if(not czy_artykul_korzystany)then
if(pozawoluminowe_strony)then
if(not tablica_danych_nazwy_artykulu.prefiks_numeru_woluminowego_strony)then
local nazwa_modulu_korzystana_bazowa=self.tabela_listy_danych_analizy_ksiazki.nazwa_bazowa_strony;
local stronicowyparser_pomocne_modul=require("Module:StronicowyParser/Pomocne");
local zrostek=stronicowyparser_pomocne_modul["SkrótDoNumeruOdnośnika"](nazwa_modulu_korzystana_bazowa,nazwa_modulu);
tablica_danych_nazwy_artykulu.prefiks_numeru_woluminowego_strony={zrostek,pozawoluminowe_strony,czy_artykul_korzystany,};
end;
else
local niekorzystany_wolumin=(not korzystany_wolumin);
if(niekorzystany_wolumin)then
if(not tablica_danych_nazwy_artykulu.prefiks_numeru_woluminowego_strony)then
local stronicowyparser_pomocne_modul=require("Module:StronicowyParser/Pomocne");
local zrostek=stronicowyparser_pomocne_modul["SkrótDoNumeruOdnośnikaDołączonejKsiążki"](nazwa_ksiazki);
tablica_danych_nazwy_artykulu.prefiks_numeru_woluminowego_strony={zrostek,niekorzystany_wolumin,czy_artykul_korzystany,};
end;
end;
end;
end;
----
if(czy_artykul_korzystany)then
if(analiza_stron_korzystanych_zbiorczych)then
local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
tekst_rozwiniety_calego_artykulu=stronicowyparser_stronasubst_modul.LiczOperacjeStronZbiorczych(self,tekst_rozwiniety_calego_artykulu,tablica_ksiazki.spis,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
end;
end;
local strona;
if(czy_artykul_korzystany)then strona="";else strona=nazwa_modulu;end;
----
if(czy_artykul_korzystany)then
local stronicowyparser_szablonytekstu_modul=require("Module:StronicowyParser/SzablonyTekstu");
stronicowyparser_szablonytekstu_modul.UstawPobierzKorzystanie(tablica_zmiennych);
tekst_rozwiniety_calego_artykulu=stronicowyparser_szablonytekstu_modul.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu) or tekst_rozwiniety_calego_artykulu;
end;
----
local function SpisToc(self,czy_artykul_korzystany,tablica_danych_nazwy_artykulu,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,tabela_elementow_strony_kodow,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki, nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
return function()
if(((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane))
or((not czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)))then
----
local tablica_obiektow_strony_danych_kodow_specjalnych_modul=nil;
----
tekst_rozwiniety_calego_artykulu,tablica_obiektow_strony_danych_kodow_specjalnych_modul=szablonowe_modul:KodowanieInaczejZakodowanychNormKodowychTekstuWedleJegoTablicyKodowania(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,false);
----
local function KtorySzablonMaZwracacKategorieNaglowek(numeracja_aktualna,nazwa_szablonu)
if(czy_artykul_korzystany)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"powtórka nagłowek w stronie korzystanej"))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"powtórka nagłowek w stronie korzystanej");
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"powtórka nagłówek w stronie dołączonej",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
end;
local function KtorySzablonMaZwracacKategorieTekst(numeracja_aktualna,nazwa_szablonu)
if(czy_artykul_korzystany)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej"))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej");
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"nagłowek w tekście rozdziału w stronie dołączonej",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
end;
local function CzyJestTakiProblemJakoElementTablicySzablonuNaglowkaPozaNapisemWprowadzeniaTekstu()
return stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej");
end;
local nazwa_naglowka=stronicowyparser_obiekty_modul.nazwa_szablonu_wprowadzenia_tekstu;
local stronicowyparser_glownafunkcjazbieraniadanych_modul=require("Module:StronicowyParser/GłównaFunkcjaZbieraniaDanychStron");
local tablica_naglowka_obiekty=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_naglowka];
tablica_naglowka_obiekty.uchwyty_bez_numeracji={};
local toc=stronicowyparser_glownafunkcjazbieraniadanych_modul.SpisRzeczyWedlePodanegoTekstu(self,tekst_rozwiniety_calego_artykulu,strona,czy_artykul_korzystany,nil,tablica_naglowka_obiekty.uchwyty_bez_numeracji, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki, nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_obiektow_strony_danych_kodow_specjalnych_modul,{KtorySzablonMaZwracacKategorieNaglowek,KtorySzablonMaZwracacKategorieTekst,CzyJestTakiProblemJakoElementTablicySzablonuNaglowkaPozaNapisemWprowadzeniaTekstu,},nil,tabela_elementow_strony_kodow);
tablica_danych_nazwy_artykulu.TOC=toc;
return true;
end;
end;
end;
local czy_spis_function=SpisToc(self,czy_artykul_korzystany,tablica_danych_nazwy_artykulu,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,tabela_elementow_strony_kodow,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki, nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
local wynik=czy_spis_function();
if(not czy_artykul_korzystany)then
if(not wynik)then
tablica_danych_nazwy_artykulu.TOCSPIS_FUNCTION=czy_spis_function;
end;
end;
StronaSubstFunkcja(tablica_danych_nazwy_artykulu,tablica_ksiazki.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(czy_artykul_korzystany)then
self.tabela_listy_danych_analizy_ksiazki.link_wikidane=tablica_danych_nazwy_artykulu.link_wikidane;
self.tabela_listy_danych_analizy_ksiazki.prefiks_numeru_woluminowego_strony=tablica_danych_nazwy_artykulu.prefiks_numeru_woluminowego_strony;
self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2;
self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni];
self.tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki=self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw[nazwa_przestrzeni_ksiazki];
self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_ksiazki=self.tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki[nazwa_ksiazki];
--self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron=tablica_zmiennych;
end;
if(not czy_artykul_korzystany)then
tablica_danych_nazwy_artykulu.dane_zebrane_ze_stron=tablica_zmiennych;
if(not self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista)then self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista={};end;
table.insert(self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista,tablica_danych_nazwy_artykulu);
else
local dane_zebrane_ze_stron_lista=self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista;
if(dane_zebrane_ze_stron_lista)then
for _,tablica_danych_nazwy_artykulu in ipairs(dane_zebrane_ze_stron_lista)do
tablica_danych_nazwy_artykulu.dane_zebrane_ze_stron=nil;
tablica_danych_nazwy_artykulu.TOCSPIS_FUNCTION=nil;
end;
end;
tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane=nil;
end;
return self.tabela_listy_danych_analizy_ksiazki,tablica_zmiennych,true;
end;
return p;
gblv6pkcjfx451hqtie7qii4dvp55w0
Wikipedysta:Persino/brudnopis10
2
62835
558355
557429
2026-10-02T20:05:55Z
Persino
2851
558355
wikitext
text/x-wiki
{{CentrujStart2}}
{{ce|Szkice artystyczne|w=40px|po=10px}}
{{ce|''Władysława Tarnowskiego''|w=28px|po=30px}}
{{ce|z komentarzem|w=18px|po=15px}}
{{ce|Marcina Tarnowskiego|w=18px|po=60px}}
{{---}}
<br><br>
{{ce|''SPIS RZECZY''|w=120%|po=30px}}
{{---}}
<br><br>
{{SpisZw||[[/Monografia łzy|Monografia łzy]]|1}}
{{SpisZw||[[/Monografia uśmiechu|Monografia uśmiechu]]|2}}
{{SpisZw||[[/Monografia pocałunku|Monografia pocałunku]]|3}}
{{SpisZw||[[/Cena|Cena]]|4}}
{{CentrujKoniec2}}
{{PobierzNumerArtykułu|Monografia łzy|dane=3|który=1|poziomowo=tak|nagłówek=tak|bez automatu=|nazwa przestrzeni nazw=User|nazwa jednostki=Persino/brudnopis10}}
{{PobierzNumerNagłówka|Spis treści|bez kategorii stronicowych=tak|nazwa przestrzeni nazw=Wikibooks|nazwa jednostki=Brudnopis/Karol Karolus/Ulice miasta Lublina/Spis treści}}
{{#invoke:StronicowyParser|PobierzDaneKsiążki|spis=Spis treści|nagłówek=tak|poziomowo=tak|nazwa przestrzeni nazw=Wikibooks|nazwa jednostki=Brudnopis/Karol Karolus/Ulice miasta Lublina/Spis treści|wyspecjalizowana=tak}}
{{PobierzŚródtekst|uchwyt=brudnopis|nazwa artykułu=|nazwa książki=brudnopis13}}
lopm8sh9ln4jnxhtrlkdy5hns4zkto5
558374
558355
2026-10-02T23:01:26Z
Persino
2851
558374
wikitext
text/x-wiki
{{CentrujStart2}}
{{ce|Szkice artystyczne|w=40px|po=10px}}
{{ce|''Władysława Tarnowskiego''|w=28px|po=30px}}
{{ce|z komentarzem|w=18px|po=15px}}
{{ce|Marcina Tarnowskiego|w=18px|po=60px}}
{{---}}
<br><br>
{{ce|''SPIS RZECZY''|w=120%|po=30px}}
{{---}}
<br><br>
{{SpisZw||[[/Monografia łzy|Monografia łzy]]|1}}
{{SpisZw||[[/Monografia uśmiechu|Monografia uśmiechu]]|2}}
{{SpisZw||[[/Monografia pocałunku|Monografia pocałunku]]|3}}
{{SpisZw||[[/Cena|Cena]]|4}}
{{CentrujKoniec2}}
{{PobierzNumerArtykułu|Monografia łzy|dane=3|który=1|poziomowo=tak|nagłówek=tak|bez automatu=|nazwa przestrzeni nazw=User|nazwa jednostki=Persino/brudnopis10}}
{{PobierzNumerNagłówka|Spis treści|bez kategorii stronicowych=tak|nazwa przestrzeni nazw=Wikibooks|nazwa jednostki=Brudnopis/Karol Karolus/Ulice miasta Lublina/Spis treści}}
{{#invoke:StronicowyParser|PobierzDaneKsiążki|spis=Spis treści|nagłówek=tak|poziomowo=tak|nazwa przestrzeni nazw=Wikibooks|nazwa jednostki=Brudnopis/Karol Karolus/Ulice miasta Lublina/Spis treści|wyspecjalizowana=tak}}
{{PobierzŚródtekst|uchwyt=brudnopis|nazwa artykułu=|nazwa książki={{PEŁNANAZWASTRONY}}}}{{PEŁNANAZWASTRONY}}
i6phux24uvr8z7jdlejd8etylqbk0kn
558376
558374
2026-10-02T23:06:32Z
Persino
2851
558376
wikitext
text/x-wiki
{{CentrujStart2}}
{{ce|Szkice artystyczne|w=40px|po=10px}}
{{ce|''Władysława Tarnowskiego''|w=28px|po=30px}}
{{ce|z komentarzem|w=18px|po=15px}}
{{ce|Marcina Tarnowskiego|w=18px|po=60px}}
{{---}}
<br><br>
{{ce|''SPIS RZECZY''|w=120%|po=30px}}
{{---}}
<br><br>
{{SpisZw||[[/Monografia łzy|Monografia łzy]]|1}}
{{SpisZw||[[/Monografia uśmiechu|Monografia uśmiechu]]|2}}
{{SpisZw||[[/Monografia pocałunku|Monografia pocałunku]]|3}}
{{SpisZw||[[/Cena|Cena]]|4}}
{{CentrujKoniec2}}
{{PobierzNumerArtykułu|Monografia łzy|dane=3|który=1|poziomowo=tak|nagłówek=tak|bez automatu=|nazwa przestrzeni nazw=User|nazwa jednostki=Persino/brudnopis10}}
{{PobierzNumerNagłówka|Spis treści|bez kategorii stronicowych=tak|nazwa przestrzeni nazw=Wikibooks|nazwa jednostki=Brudnopis/Karol Karolus/Ulice miasta Lublina/Spis treści}}
{{#invoke:StronicowyParser|PobierzDaneKsiążki|spis=Spis treści|nagłówek=tak|poziomowo=tak|nazwa przestrzeni nazw=Wikibooks|nazwa jednostki=Brudnopis/Karol Karolus/Ulice miasta Lublina/Spis treści|wyspecjalizowana=tak}}
{{PobierzŚródtekst|uchwyt=brudnopis|nazwa artykułu=|nazwa książki=brudnopis13}}{{PEŁNANAZWASTRONY}}
rcdkh0jmokmmeh3o0742tk5loyoqn7w
558377
558376
2026-10-02T23:09:01Z
Persino
2851
558377
wikitext
text/x-wiki
{{CentrujStart2}}
{{ce|Szkice artystyczne|w=40px|po=10px}}
{{ce|''Władysława Tarnowskiego''|w=28px|po=30px}}
{{ce|z komentarzem|w=18px|po=15px}}
{{ce|Marcina Tarnowskiego|w=18px|po=60px}}
{{---}}
<br><br>
{{ce|''SPIS RZECZY''|w=120%|po=30px}}
{{---}}
<br><br>
{{SpisZw||[[/Monografia łzy|Monografia łzy]]|1}}
{{SpisZw||[[/Monografia uśmiechu|Monografia uśmiechu]]|2}}
{{SpisZw||[[/Monografia pocałunku|Monografia pocałunku]]|3}}
{{SpisZw||[[/Cena|Cena]]|4}}
{{CentrujKoniec2}}
{{PobierzNumerArtykułu|Monografia łzy|dane=3|który=1|poziomowo=tak|nagłówek=tak|bez automatu=|nazwa przestrzeni nazw=User|nazwa jednostki=Persino/brudnopis10}}
{{PobierzNumerNagłówka|Spis treści|bez kategorii stronicowych=tak|nazwa przestrzeni nazw=Wikibooks|nazwa jednostki=Brudnopis/Karol Karolus/Ulice miasta Lublina/Spis treści}}
{{#invoke:StronicowyParser|PobierzDaneKsiążki|spis=Spis treści|nagłówek=tak|poziomowo=tak|nazwa przestrzeni nazw=Wikibooks|nazwa jednostki=Brudnopis/Karol Karolus/Ulice miasta Lublina/Spis treści|wyspecjalizowana=tak}}
{{PobierzŚródtekst|uchwyt=brudnopis|nazwa artykułu=|nazwa książki={{PEŁNANAZWASTRONY}}}}{{PEŁNANAZWASTRONY}}
i6phux24uvr8z7jdlejd8etylqbk0kn
558382
558377
2026-10-03T00:10:27Z
Persino
2851
558382
wikitext
text/x-wiki
{{CentrujStart2}}
{{ce|Szkice artystyczne|w=40px|po=10px}}
{{ce|''Władysława Tarnowskiego''|w=28px|po=30px}}
{{ce|z komentarzem|w=18px|po=15px}}
{{ce|Marcina Tarnowskiego|w=18px|po=60px}}
{{---}}
<br><br>
{{ce|''SPIS RZECZY''|w=120%|po=30px}}
{{---}}
<br><br>
{{SpisZw||[[/Monografia łzy|Monografia łzy]]|1}}
{{SpisZw||[[/Monografia uśmiechu|Monografia uśmiechu]]|2}}
{{SpisZw||[[/Monografia pocałunku|Monografia pocałunku]]|3}}
{{SpisZw||[[/Cena|Cena]]|4}}
{{CentrujKoniec2}}
{{PobierzNumerArtykułu|Monografia łzy|dane=3|który=1|poziomowo=tak|nagłówek=tak|bez automatu=|nazwa przestrzeni nazw=User|nazwa jednostki=Persino/brudnopis10}}
{{PobierzNumerNagłówka|Spis treści|bez kategorii stronicowych=tak|nazwa przestrzeni nazw=Wikibooks|nazwa jednostki=Brudnopis/Karol Karolus/Ulice miasta Lublina/Spis treści}}
{{#invoke:StronicowyParser|PobierzDaneKsiążki|spis=Spis treści|nagłówek=tak|poziomowo=tak|nazwa przestrzeni nazw=Wikibooks|nazwa jednostki=Brudnopis/Karol Karolus/Ulice miasta Lublina/Spis treści|wyspecjalizowana=tak}}
{{PobierzŚródtekst|uchwyt=brudnopis|nazwa artykułu=|nazwa książki={{Zastąp|ciąg={{PEŁNANAZWASTRONY}}|wzór=10$|zamień=13}}}}{{PEŁNANAZWASTRONY}}
jb0ff1xoxvvmsr33l4o0f98ew71lge4
558394
558382
2026-10-03T09:44:22Z
Persino
2851
558394
wikitext
text/x-wiki
{{CentrujStart2}}
{{ce|Szkice artystyczne|w=40px|po=10px}}
{{ce|''Władysława Tarnowskiego''|w=28px|po=30px}}
{{ce|z komentarzem|w=18px|po=15px}}
{{ce|Marcina Tarnowskiego|w=18px|po=60px}}
{{---}}
<br><br>
{{ce|''SPIS RZECZY''|w=120%|po=30px}}
{{---}}
<br><br>
{{SpisZw||[[/Monografia łzy|Monografia łzy]]|1}}
{{SpisZw||[[/Monografia uśmiechu|Monografia uśmiechu]]|2}}
{{SpisZw||[[/Monografia pocałunku|Monografia pocałunku]]|3}}
{{SpisZw||[[/Cena|Cena]]|4}}
{{CentrujKoniec2}}
{{PobierzNumerArtykułu|Monografia łzy|dane=3|który=1|poziomowo=tak|nagłówek=tak|bez automatu=|nazwa przestrzeni nazw=User|nazwa jednostki=Persino/brudnopis10}}
{{PobierzNumerNagłówka|Spis treści|bez kategorii stronicowych=tak|nazwa przestrzeni nazw=Wikibooks|nazwa jednostki=Brudnopis/Karol Karolus/Ulice miasta Lublina/Spis treści}}
{{#invoke:StronicowyParser|PobierzDaneKsiążki|spis=Spis treści|nagłówek=tak|poziomowo=tak|nazwa przestrzeni nazw=Wikibooks|nazwa jednostki=Brudnopis/Karol Karolus/Ulice miasta Lublina/Spis treści|wyspecjalizowana=tak}}
{{PobierzŚródtekst|uchwyt=brudnopis|klucz=|nazwa artykułu=|nazwa książki={{Zastąp|ciąg={{PEŁNANAZWASTRONY}}|wzór=10$|zamień=13}}}}{{PEŁNANAZWASTRONY}}
r3rcmxew5xeo65hlbxzunburfgdohby
558395
558394
2026-10-03T09:45:37Z
Persino
2851
558395
wikitext
text/x-wiki
{{CentrujStart2}}
{{ce|Szkice artystyczne|w=40px|po=10px}}
{{ce|''Władysława Tarnowskiego''|w=28px|po=30px}}
{{ce|z komentarzem|w=18px|po=15px}}
{{ce|Marcina Tarnowskiego|w=18px|po=60px}}
{{---}}
<br><br>
{{ce|''SPIS RZECZY''|w=120%|po=30px}}
{{---}}
<br><br>
{{SpisZw||[[/Monografia łzy|Monografia łzy]]|1}}
{{SpisZw||[[/Monografia uśmiechu|Monografia uśmiechu]]|2}}
{{SpisZw||[[/Monografia pocałunku|Monografia pocałunku]]|3}}
{{SpisZw||[[/Cena|Cena]]|4}}
{{CentrujKoniec2}}
{{PobierzNumerArtykułu|Monografia łzy|dane=3|który=1|poziomowo=tak|nagłówek=tak|bez automatu=|nazwa przestrzeni nazw=User|nazwa jednostki=Persino/brudnopis10}}
{{PobierzNumerNagłówka|Spis treści|bez kategorii stronicowych=tak|nazwa przestrzeni nazw=Wikibooks|nazwa jednostki=Brudnopis/Karol Karolus/Ulice miasta Lublina/Spis treści}}
{{#invoke:StronicowyParser|PobierzDaneKsiążki|spis=Spis treści|nagłówek=tak|poziomowo=tak|nazwa przestrzeni nazw=Wikibooks|nazwa jednostki=Brudnopis/Karol Karolus/Ulice miasta Lublina/Spis treści|wyspecjalizowana=tak}}
{{PobierzŚródtekst|uchwyt=brudnopis|klucz=|nazwa artykułu=|nazwa książki={{Zastąp|ciąg={{PEŁNANAZWASTRONY}}|wzór=10$|zamień=13}}}}{{PEŁNANAZWASTRONY}}
{{PobierzŚródtekst|uchwyt=brudnopis|klucz=tak|nazwa artykułu=|nazwa książki={{Zastąp|ciąg={{PEŁNANAZWASTRONY}}|wzór=10$|zamień=13}}}}
ijgsnuxzozs1x0br9ds1s62knu4iujy
558408
558395
2026-10-03T11:32:27Z
Persino
2851
558408
wikitext
text/x-wiki
{{CentrujStart2}}
{{ce|Szkice artystyczne|w=40px|po=10px}}
{{ce|''Władysława Tarnowskiego''|w=28px|po=30px}}
{{ce|z komentarzem|w=18px|po=15px}}
{{ce|Marcina Tarnowskiego|w=18px|po=60px}}
{{---}}
<br><br>
{{ce|''SPIS RZECZY''|w=120%|po=30px}}
{{---}}
<br><br>
{{SpisZw||[[/Monografia łzy|Monografia łzy]]|1}}
{{SpisZw||[[/Monografia uśmiechu|Monografia uśmiechu]]|2}}
{{SpisZw||[[/Monografia pocałunku|Monografia pocałunku]]|3}}
{{SpisZw||[[/Cena|Cena]]|4}}
{{CentrujKoniec2}}
{{PobierzNumerArtykułu|Monografia łzy|dane=3|który=1|poziomowo=tak|nagłówek=tak|bez automatu=|nazwa przestrzeni nazw=User|nazwa jednostki=Persino/brudnopis10}}
{{PobierzNumerNagłówka|Spis treści|bez kategorii stronicowych=tak|nazwa przestrzeni nazw=Wikibooks|nazwa jednostki=Brudnopis/Karol Karolus/Ulice miasta Lublina/Spis treści}}
{{#invoke:StronicowyParser|PobierzDaneKsiążki|spis=Spis treści|nagłówek=tak|poziomowo=tak|nazwa przestrzeni nazw=Wikibooks|nazwa jednostki=Brudnopis/Karol Karolus/Ulice miasta Lublina/Spis treści|wyspecjalizowana=tak}}
{{PobierzŚródtekst|uchwyt=brudnopis|klucz=|nazwa artykułu=|nazwa książki={{Zastąp|ciąg={{PEŁNANAZWASTRONY}}|wzór=10$|zamień=13}}}}{{PEŁNANAZWASTRONY}}
{{PobierzŚródtekst|uchwyt=brudnopis|klucz=|nazwa artykułu=|nazwa książki={{Zastąp|ciąg={{PEŁNANAZWASTRONY}}|wzór=10$|zamień=13}}}}
9arckqhid5xvsx4a85xs3m1hokbq2c1
Wikibooks:Moduły/StronicowyParser/SpisTreści/Tom I
4
63522
558333
558266
2026-10-02T18:41:07Z
Persino
2851
/* Opis pobieżny funkcji */
558333
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SpisTreści}}|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 lokalne ==
=== {{Śródtytuł|Ile}}{{Code|Ile}} ===
Funkcja liczy liczbę elementów we wszystkich podtabelach tabeli {{Code|tabela_rozdzial_artykulow2}} {{Patrz|tabela_rozdzial_artykulow2}}, licząc od drugiej tabeli, po pierwszej tabeli mieści się podtabela z informacjami o rozdziale, w której znajdują się artykuły określone dalszymi podtabelami.
Tymi podtabelami są od {{Code|2}} do {{Code|7}}, czyli {{Code|6}} tabelek, w których są artykuły, które zaliczamy do kategorii wliczane, tzn. one nie znajdują się w takich rozdziałach przetłumaczonych na małą literę, ale przedtem na nią była działana funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, usuwając z nich odstępy na końcach, w tym dolne myślniki, a wewnątrz zamieniając kolejne dolne myślniki i spacje na jedną spacją.
Metafunkcja, w metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, w: {{Code|{{ld2|Parametry}}}}, aby porównać to z tablicą {{Code|{{sr|#p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu}}, by zaliczyć je do tego typu:
<syntaxhighlight lang="lua">
p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu={
["licencja"]=true,
["inne"]=true,
["bibliografia"]=true,
["zobacz też"]=true,
["linki zewnętrzne"]=true,
};
</syntaxhighlight>
Twew rozdziały należą do kategorii rozdziałów, w których artykuły są pomijane przez: '''{{ld|StronicowyParser|Stronicowy parser}}''', ale jeżeli one należą do rozdziału spisu treści lub rzeczy, to tam jednak nie są takie, inaczej jest poza.
A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}.
A ta powyższa tabela mieści się: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a jego opis w: {{Code|{{sr|#p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu|p=StronicowyParser/obiekty}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow2)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|numer_rodzaju_artykulu}} | _1 = Numer podtabeli elementtu, do którego wsadzamy element.
| 2 = {{Code|tabela_rozdzial_artykulow2}} | _2 = Tabela wraz podtabelami, od {{Code|1}} do {{Code|13}}, ale liczenie jest od {{Code|2}}.
}}
=== {{Śródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}{{Code|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}} ===
==== Opis pobieżny funkcji ====
Funkcja do wstawiania elementów z ogólnej tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}, za pomocą funkcji wstawianej jako parametr: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{Patrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, do odpowiedniej pozycji artykularnej od: {{Code|2}} do {{Code|13}}, a pozycja {{Code|1}}, to pozycja rozdziałowa, ona jest określana przez zmienną: {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{Patrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, a pozycja, którą wsadzamy to: {{Code|tab_stare}} {{Patrz|tab_stare}}.
Funkcja zwraca pozycje:
<syntaxhighlight lang="lua">
return numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych;
</syntaxhighlight>
Opis tych parametrów funkcji:
{{OpisParametrów
| 1 = {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} | _1 = Jest to wartość zwrócona przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}}, w odróżnieniu od: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, jest mniejszy o jeden, czyli wtedy to była a poziomie przypisywania wartość {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}},
| 2 = {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} | _2 = Pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}.
| 3 = {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} | _3 = Tablica do sprawdzania, czy artykuł z nagłówkiem, ma powtórzenie tego bez nagłówka, czyli dla tego bez tego jest inna numeracja niż z nagłówkiem, a gdy niema tego bez, to wtedy dzięki tej funkcji numeracja tak się zachowuje, jak tam by był ten element, co prawda jest tam dodawany, ale jako z informacją taką, że bz numeru ustalanym przez funkcję: {{LinkŚródtytuł|Ile}}, A przy okazji, aby tego elementu nie dodawać ponownie, to w nim jest ustalana druga zmienna na {{Code|1}}, a wcześniej była na {{Code|0}}, i dlatego ona była wtedy dodawana, a później już tak nie jest.
}}
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY,tabela_rozdzial_artykulow2,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow--[[]])...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{Patrz|self}} | _1 = Zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}}.
| 2 = {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} | _2 = Opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow2,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare);
</syntaxhighlight>
Funkcja jest wywoływana w:
<syntaxhighlight lang="lua">
numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych=WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,WsadzanieParametryDoTablicy(linia,czy_linia_uwzgledniana),tabela_rozdzial_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow);
</syntaxhighlight>
Gdzie funkcja: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, to jest: {{Code|WsadzanieParametryDoTablicy}} {{LinkPatrz|WsadzanieParametryDoTablicy}}.
| 3 = {{Code|tabela_rozdzial_artykulow2}} | _3 = Ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow2}}.
| 4 = {{Code|tablica_artykulow_zebranych}} | _4 = Diała jak w: {{LinkPatrz|tablica_artykulow_zebranych}}.
| 5 = {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} | _5 = Jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}}.
| 6 = {{Code|szablon}} {{Patrz|szablon}} | _6 = Jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu.
| 7 = {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - | _7 = Kolejno to jest: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''' i '''nazwa książki'''.
| 8 = {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} | _8 = Jest to nazwa artykułu danego spisu treści.
| 9 = {{Code|pelna_nazwa_spisu_tresci}} {{Patrz|pelna_nazwa_spisu_tresci}} | _9 = Uchwyt do bazy kodowania tekstu strony spisu treści.
| 10 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} | _10 = Nazwa strony szablonowa, jak są wywoływane w postaci szablonowej, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}}.
| 11 = {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} | _11 = Uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 12 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _12 = Tablica bazy zapisana w postaci osobnej tablicy, a nie jej w wewnętrznej bazie, nie jak to było w postaci zmiennej {{LinkPatrz|nazwa_modulu}}, używana zamiast: {{LinkPatrz|nazwa_modulu}}.
| 13 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _13 = Tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}.
| 14 = {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} | _14 = Obiekt i kod, czyli: zmienne charakteryzujące zmienną wnętrza: {{Code|szablon}} {{LinkPatrz|szablon}}.
| 15 = {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} | _15 = Tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy.
| 16 = {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} | _16 = Tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię.
| 17 = {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} | _17 = Numeracja rozdziału, z jakim rozpoczyna się rozdział.
| 18 = {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} | _18 = Gdy link znajduje się w rozdziale dodatnim.
| 19 = {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} | _19 = Cała linia z artykułem lub artykułami, tą linią równie dobrze może być rozdział, tu chodzi o rozdział dodatni.
}}
==== Opis pobieżny funkcji {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} ====
Przedstawiamy tutaj funkcję: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, która jest opisana w punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Definicja funkcji w nagłówku:
<syntaxhighlight lang="lua">
__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow2,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare);
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tabela_rozdzial_artykulow2}} | _1 = Jak w: {{LinkPatrz|tabela_rozdzial_artykulow2}},
| 2 = {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} | _2 = Jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}},
| 3 = {{Code|tab_stare}} | _3 = Jak w: {{LinkPatrz|tab_stare}}.
}}
Ta funkcja została opisana już wcześniej.
==== Szczegółowy opis funkcji głównej ====
Uruchamiamy funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, która jest zdefiniowana w module: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}}. Wywołujemy tę funkcję:
<syntaxhighlight lang="lua">
local tab_pozycja_elementow_w_spisie_rzeczy,numer_rodzaju_artykulu,id,parametry_szablonu,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nil,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
</syntaxhighlight>
Pierwszy elementem: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest to zmienna tablicowa, która opisuje parametry artykularno-linkowe parametry, drugi: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, do której kategorii należy dany artykuł w linku, a trzeci parametr, to: {{Code|id}} {{Patrz|id}}, to zbierane są parametry linkowe z szablonu {{s|SpisTreści}}, czwarty to: {{Code|parametry_szablonu}} {{Patrz|parametry_szablonu}}, w przypadku szablonów inteligentnych linków, to są parametry wywołań tych szablonów, ostatni parametr to: {{Code|kom}} {{Patrz|kom}}, przedstawia on, jeśli {{Code|false}}, to artykuł zakwalifikowany został poprawnie do rozważań, a {{Code|true}} już nie.
To {{LinkPatrz|parametry szablonu}}, to jest tablica z trzech elementów, tzn.:
<syntaxhighlight lang="lua">
local parametry szablonu={tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,};
</syntaxhighlight>
Elementy tablicy:
{{OpisParametrów
| 1 = {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} | _1 = Tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych.
| 2 = {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} | _2 = To jest nazwa uzyskanego szablonu linków inteligentnych lub nie.
| 3 = {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} | _3 = Tabela modyfikatorów rozkładanego szablonu.
}}
Jeśli parametr: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, istnieje, to tworzona jest z niego taka sama wersja lub przy nieistnnieniu parametru {{LinkPatrz|wliczaj_artykuly_tego_rozdzialu}}, do niego jest dodawana jest liczba {{Code|6}}. W ten sposób możemy zbierać artykuły książki i inne,ktore należą do pewnych rozdziałów i które nie należą.
===== {{Śródtytuł|ParametrPierwszy}}{{Code|ParametrPierwszy}} =====
Funkcja zbierające dane z {{Code|tab_artykul}} {{Patrz|tab_artykul}}, którego to jest czteroelementowa tablica, dotycząca danego artykułu. Drugim parametrem: {{Code|czy_niedozwolone}} {{Patrz|czy_niedozwolone}}, jest zmienna logiczna mówiąca, czy wskazać w nazwie artykułu, czy są dozwolone znaki, jest to sprawdzenie według wyrażenia regularnego: {{Code|<nowiki>[|<>{}%[%]]</nowiki>}} {{Patrz|wzor_znaki_niedozwolone}} na podstawie funkcji {{LzLua|mw.ustring.match}}, czyli: {{Code|znaki_niedozwolone}} {{Patrz|znaki_niedozwolone}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
ParametrPierwszy(tab_artykul,czy_niedozwolone)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tab_artykul}} | _1 = Jak w: {{LinkPatrz|tab_artykul}}.
| 2 = {{Code|czy_niedozwolone}} | _2 = Jak w: {{LinkPatrz|czy_niedozwolone}}.
}}
Gdzie: {{Code|tab_artykul}} {{LinkPatrz|tab_artykul}}, który jest pierwszym parametrem przyjmowanym przez funkcję, jest zdefiniowany jako czteroelementowa tablica, którą przypisujemy do czterem osobnych parametrów:
<syntaxhighlight lang="lua">
local artykul=tab_artykul[1];
local parametry=tab_artykul[2];
local naglowek=tab_artykul[3];
local tablica_przekierowania=tab_artykul[4];
</syntaxhighlight>
Jeżeli, któreś z parametrów z: {{LinkPatrz|tab_artykul}}, tzn. element jego {{Code|2}}-gi i {{Code|3}}-ci, istnieje, to układana jest trzyelementowa tablica z elementów od {{Code|1}} do {{Code|3}}, z dodatkowym elementem: {{Code|<nowiki>["LINK"] = true</nowiki>}}, a element czwarty to jest: {{Code|tablica_przekierowania}} {{Patrz|tablica_przekierowania}}, a jeżeli te dwa elementy, nie licząc czwartego, wcale nie istnieją, wtedy jest tworzony łańcuch znakowy z tego pierwszego elementu. Tak tworzymy, nową wersję tablicy: {{Code|tab_artykul}} {{Patrz|tab_artykul-nowa wersja}}, lub łańcuch znakowy, w postaci:
<syntaxhighlight lang="lua">
tab_artykul=((artykul)and(parametry or naglowek))and{[1]=artykul,[2]=parametry,[3]=naglowek,["LINK"]=true,} or artykul;
</syntaxhighlight>
Funkcja zwraca trzy parametry, tzn. parametry: {{LinkPatrz|tab_artykul-nowa wersja}}, {{LinkPatrz|znaki_niedozwolone}} i tablicę przekierowania: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}:
<syntaxhighlight lang="lua">
return tab_artykul,znaki_niedozwolone,tablica_przekierowania;
</syntaxhighlight>
===== Rozwijanie nazwy linku artykułu =====
Do rozwijania nazwy linku służy funkcja: {{Code|{{sr|#p.DekodowanieTekstuNazwLinku|p=StronicowyParser/Pomocne}}}} {{Patrz|p.DekodowanieTekstuNazwLinku}}, pod względem szablonowym i nie tylko.
Funkcja rozwija tą nazwę tym: {{LzLua|frame:preprocess}}, jedynie nie rozwija szablonów stronicowego parsera, podane podkategoriach w kategorii: {{Code|{{lk2|Szablony stronicowe}}}}, za pomocą odpowiednich metod, bo to by wywołało nieskończoną pętle, i dlatego takie szablony są zamieniane tylko na wywołania symboliczne.
==== Dalszy opis funkcji nadrzędnej przy istnieniu parametrów linkowych normalnych, czy szablonowych (linków inteligentnych) ====
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|{{=}}}} {{Code|1}} =====
Tworzony jest numerek: {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{Patrz|numer_rodzaju_artykulu_w_podreczniku}}, który w stosunku do: {{LinkPatrz|numer_rodzaju_artykulu}}, jest większy o jeden, a schemat tej operacji:
<syntaxhighlight lang="lua">
local numer_rodzaju_artykulu_w_podreczniku=numer_rodzaju_artykulu+1;
</syntaxhighlight>
====== Tworzenie tablicy: {{nobold|{{Code|tablica_artykulow_zebranych}}}} ======
Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną wstępnie w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}.
; Tablica{{dk}} {{nobold|{{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}}}}, nie jest tablicą{{dk}}
Gdy element pierwszy: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, nie jest tablicą, wtedy jedynie liczymy, czy ona ma znaki niedozwolone: {{Code|wzor_znaki_niedozwolone}} {{LinkPatrz|wzor_znaki_niedozwolone}}, a póżniej wiedząc ten element, który jest aktualną nazwą artykułu kiążki, tworzymy tabelę {{Patrz|tablica_artykulow_zebranych-imicjacja}}:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,};
</syntaxhighlight>
; Gdy element{{dk}} {{nobold|{{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}}}}, jest łańcuchem znaków{{dk}}
Wpierw liczone są parametry z wywołania, z opcją, czy ma liczyć, czy nazwa artykułu ma znaki niedozwolone, z funkcji: {{LinkŚródtytuł|ParametrPierwszy}}:
<syntaxhighlight lang="lua">
tab_pozycja_elementow_w_spisie_rzeczy[1],znaki_niedozwolone,tablica_przekierowania=ParametrPierwszy(tab_pozycja_elementow_w_spisie_rzeczy[1],true);
</syntaxhighlight>
; Inna książka - atrybut, tzn. czy artykuł wychodzi poza daną książkę, lub jego przekierowanie w niej kieruje na stronę poza nią{{dk}}
Dalej sprawdzane jest, czy książka przyjmuje atrybut, tzn.: '''czy inna książka''', wtedy liczymy to z kodu z tablicy przekierowania: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, jeżeli jej wartość istnieje, tzn.: {{Code|czy_inna_ksiazka}} {{Patrz|czy_inna_ksiazka}}:
<syntaxhighlight lang="lua">
local czy_inna_ksiazka=tablica_przekierowania and tablica_przekierowania[1] and tablica_przekierowania[1][5] or nil;
</syntaxhighlight>
; Tablica przekierowania artykułu względem bieżącej książki{{dk}}
Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, który przedstawia, czy to jest artykuł bieżącej książki, którego przekierowanie kieruje, wtedy ten parametr ma wartość {{Code|true}}, a gdy adres przekierowania wskazuje na inną książkę, wtedy {{Code|false}}. Jeśli ten parametr ma wartość fałszywą, wtedy jest sprawdzane, czy jest tablicą w: {{Code|czy_tablica}} {{Patrz|czy_tablica}}, według:
<syntaxhighlight lang="lua">
czy_tablica=parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1]);
</syntaxhighlight>
Lub w przeciwnym wypadku liczymy parametry artykularne z tablicy przekierowania: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek przekierowania, w tej tablicy, istnieje, wtedy parametr: {{Code|czy_tablica}} {{LinkPatrz|czy_tablica}}, przyjmuje wartość {{Code|true}}, w przeciwnym wypadku wartość fałszywą.
Gdy ten element nie jest tablicą, to tworzona jest nazwa pełna artykułu: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}} i umieszczana w tablicy: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z podobną tablicą początkową jak w poprzednim przypadku jego tworzenia, czyli jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}.
; Tablica zebranych artykułów i porównywanie artykułu z nagłówkiem, czy istnieje wcześniejszy artykuł bez niego{{dk}}
Gdy element jest jednak tablicą, też jest liczona pełna nazwa artykułu (gdy nazwa artykułu przekierowania istnieje, wtedy ona jest liczona z: {{Code|tablica_przekierowania[2]}}, w przeciwnym wypadku, jeśli element: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}}, jest tablicą, wtedy liczymy ją z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1][1]}}, w innym wypadku z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}}), a z niej liczymy tablicę: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}, w przypadku pierwszego artykułu nienagłówkowego.
A w przypadku pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie, artykuł poprzedni nie istnieje, a więc tego tam nie ma tam w takim przypadku.
Gdy funkcja napotkała artykuł o takim samym stronie, co poprzednio, to do wartości początkowej, bez definiowania jeszcze raz tej samej tablicy, jest ustawiane odpowiednio:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych[3]=true;
</syntaxhighlight>
Co informuje, że artykuł jest ten sam, tylko inny nagłówek niż poprzedni, a poprzedni pierwszy jest bez niego.
====== Rozwijanie nazwy linku ======
Kompletowany jest drugi element tablicy: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkPatrz|p.DekodowanieTekstuNazwLinku}}. Dalej z tej nazwy są usuwane znaki specjalne według funkcji: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, z modułu: {{Code|{{ld2|Specjalne}}}}. Następnie działamy funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, które końcowe spacje usuwa, a wewnętrz powtarzające zamienia kolejne na jedną spację.
====== Dodawanie do tablicy problemów, jeśli nastąpił problem ze znakami niedozwolonymi ======
A między czasie, gdy mamy niedozwolone znaki: {{Code|znaki_niedozwolone}} {{LinkPatrz|znaki_niedozwolone}}, za pomocą funkcji pytającej sprawdzamy, czy element inny zgłoszeniowy został dodany do tablicy problemów: {{Code|{{sr|#p.CzyJestTakiProblemowyElement|p=StronicowyParser/Problemy}}}}, aż w końcu dodajemy ten problem, jeśli go nie ma przy pomocy funkcji: {{Code|{{sr|#p.UstawTakiProblemowyElement|p=StronicowyParser/Problemy}}}}.
====== {{Śródtytuł|inicjacja_i_kompletowanie_zmiennych}}Ustalanie nazwy jednostki, kompletowanie linii artykułów i inicjowanie pozycji, w tabeli zebranych elementów, w tabeli zebranych elementów ======
Ustalamy nazwę jednostki z funkcji: {{Code|{{sr|#p.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem|p=StronicowyParser/Potrzebne}}}}, i inicjujemy tą wartością, czyli: {{Code|nazwa jednostki}} {{Patrz|nazwa jednostki}}, wartość starą: {{Code|stara_nazwa_jednostki}} {{Patrz|stara_nazwa_jednostki}}, według:
<syntaxhighlight lang="lua">
---- Piszanie pełnej nazwy jednostki bez parametrów i nagłówka;
local nazwa_jednostki=stronicowyparser_potrzebne_modul.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(tab_pozycja_elementow_w_spisie_rzeczy[1],false);
---- Inicjowanie starej wartości tą policzoną;
local stara_nazwa_jednostki=nazwa_jednostki;
</syntaxhighlight>
Dalej {{Śródtekst|uchwyt=tabela_rozdzial_artykulow2|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}}}, według:
<syntaxhighlight lang="lua">
if(not tabela_rozdzial_artykulow2[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow2[numer_rodzaju_artykulu_w_podreczniku]={};end;
</syntaxhighlight>
Co {{Śródtekst|uchwyt=linia_artykokow|tekst=dalej linię artykułów {{Code|linia_artykokow}} {{LinkPatrz|linia_artykokow}}, kompletujemy, funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, z modułu: {{Code|{{ld2|Szablonowe}}}}, znając tablicę: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}}}, według:
<syntaxhighlight lang="lua">
linia_artykokow=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_artykokow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
</syntaxhighlight>
====== Uwzględnianie niepodanego elementu nienagłówkowego w tablicy zebranych parametrów ======
Gdy tablica przekierowania: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, istnieje, wtedy sprawdzamy, czy zmienna logiczna: {{Code|czy_tablica}} {{LinkPatrz|czy_tablica}}, jest prawdą i czy: {{Code|stara_nazwa_jednostki}} {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej: {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie artykułu przekierowania.
Inicjujemy nową zmienną: {{Code|przekierowanie}} {{LinkPatrz|przekierowanie}}, z artykułu, parametrów i nagłówka, ale wpierw sprawdzamy, czy dwa ostatnie istnieją, według:
<syntaxhighlight lang="lua">
przekierowanie=przekierowanie and ((tablica_przekierowania[3] or tablica_przekierowania[4]) and {przekierowanie, tablica_przekierowania[3], tablica_przekierowania[4],["LINK"]=true,}or przekierowanie) or nil;
</syntaxhighlight>
Tworzony jest nowy element: {{Code|nazwa jednostki}} {{Patrz|nazwajednostki-nowy}}, z: {{LinkPatrz|nazwa jednostki}}, parametrów i nagłówka, według rysu:
<syntaxhighlight lang="lua">
nazwa_jednostki={nazwa_jednostki, tab_pozycja_elementow_w_spisie_rzeczy[1][2], tab_pozycja_elementow_w_spisie_rzeczy[1][3],["LINK"]=true,};
</syntaxhighlight>
Jeżeli parametr drugi: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}.
Wsadzamy element: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, do zbioru: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, przy pomocy funkcji: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Następnie jej drugiemu elementowi: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, do tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}, na pozycji: {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, według funkcji: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej.
Jeżeli tablica przekierowania: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, jednak nie istnieje, wtedy tak samo sprawdzamy, co poprzednio potem, ale po spełnieniu tych warunków robimy inną tablicą: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, i tę tablicę robimy podobnie, i inicjujemy te same elementy też podobnie.
====== Uwzględnianie pozycji podanej w tablicy zebranych elementów ======
Tworzymy zmienną: {{Code|ile_dodac_do_poziomu_artykulu}} {{Patrz|ile_dodac_do_poziomu_artykulu}}, z drugiego elementu tablicy: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, następnię tworzymy inną zmienną: {{Code|ile_dodac_do_poziomu_artykulu_lub_nil}} {{Patrz|ile_dodac_do_poziomu_artykulu_lub_nil}}, co uwidaczniamy wzorem:
<syntaxhighlight lang="lua">
local ile_dodac_do_poziomu_artykulu_lub_nil=((ile_dodac_do_poziomu_artykulu)and(ile_dodac_do_poziomu_artykulu>0))and ile_dodac_do_poziomu_artykulu or nil;
</syntaxhighlight>
Tą zmienną wykorzystamy do sformułowania: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}.
{{Śródtekst|tekst=Tworzymy zmienną: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}, na pozycji: {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, przy pomocy funkcji: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.|uchwyt=__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|>{{=}}}} {{Code|2}} =====
Będziemy tutaj operowali, gdy parametr drugi zwracany z funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, wskazuje na nie artykuł książki, zatem ten rozdział jest właśnie dla tego przypadku.
====== Odkodowanie i przygotowanie zmiennych artykułu linku, jej nazwy, także kodu języka i projektu ======
* Gdy pierwszy element tablicy: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}.
* Dla drugiego takiego elementu z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, co jest nazwą linku, wtedy gdy nazwa linku normalnego, czy szablonowego, jest zakodowana, to ją odkodujemy, którego każdy jego element kod odkodujemy według funkcji: {{LinkPatrz|p.DekodowanieTekstuNazwLinku}}, następnie z niej usuwamy znaki specjalne według: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, następnie usuwamy końcowe spacje i wewnątrz kolejne spacje zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
* Dla trzeciego i czwartego takiego elementu z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, te elementy odkodujemy, następnie z nich usuwamy końcowe spacje, a wewnątrz kolejne spacje zastępujemy jedną, według tej samej funkcji, co powyżej.
====== Przygotowanie zmiennych, inicjowanie tablicy: {{Code|tab_stare}}, i wsadzanie jej do tablicy ogólnej: {{Code|tabela_rozdzial_artykulow2}} ======
Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow2}}, także co {{PobierzŚródtekst|linia_artykokow}}, co wszystko robimy podobnie jak w rozdziale: {{LinkŚródtytuł|inicjacja_i_kompletowanie_zmiennych}}.
{{PobierzŚródtekst|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
==== Definicja tablicy: {{Code|tab_stare}}, inicjowanie jej elementów w różnych przypadkach ====
Przedstawiamy tutaj ogólną definicję zmiennej: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. Ta wersja jest jedynie sformułowana dla artykułów w rozdziale, a nie dla rozdziałów, bo w tablicy, do której jest ona wsadzana przyjmuje ona możliwy numerek od "2" do "13", a nie również "1". Jej wersja ogólna:
<syntaxhighlight lang="lua">
local tab_stare=
{
---- Początek elementów alternatywnych
{
---- Początek wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[1], -- artykuł bez pełnej nazwy ksiązki, bez parametrów i nagłówka, bo ich nie posiadałna samym początku;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- artykuł bez pełnej nazwy książki, bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[2], -- nazwa linku artykułu normalnego, czy szablonowego;
---- Początek elementów alternatywnych dla przekierowania
---- Poczatek parametrów przekierowania
{
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
tablica_przekierowania[3], -- parametry przekierowania artykułu;
tablica_przekierowania[4], -- nagłówek przekierowania artykułu;
["LINK"]=true, -- zmienna świadcząca, że nazwa przekierowania artykułu jest z parametrami i nagłówkiem;
},
---- lub
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
---- Koniec parametrów przekierowania
tablica_przekierowania[1], -- tablica o definicji: {
nazwa_przestrzeni_strony_przekierowania, -- nazwa przestrzzeni nazw przekierowania artykułu;
nazwa_przestrzeni_ksiazki_strony_przekierowania, -- nazwa przestrzeni książki przekierowania artykułu;
nazwa_ksiazki_strony_przekierowania, -- nazwa książki orzekierowania artykułu;
true/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce;
true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie;
czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach;
};
---- lub
nil, -- dotycząca przekierowania artykułu, a tutaj strona nie ma przekierowania, więc: nil;
nil, -- dotycząca tablicy książki, na którą wskazuje przekierowanie, a tutaj nie ma tablicy, więc: nil;
---- Koniec elementów alternatywnych dla przekierowania
tab_pozycja_elementow_w_spisie_rzeczy[3], -- kod języka;
tab_pozycja_elementow_w_spisie_rzeczy[4], -- kod projektu;
tab_pozycja_elementow_w_spisie_rzeczy[5], -- adres artykułu bez przetworzenia w linku normalnym,czy szablonowym;
ile_dodac_do_poziomu_artykulu_lub_nil, -- parametr mający tylko wartości: 1, gdy do aktualnego poziomu musi być dodane jeden - ta wartość, tylko dotyczy artykułów należących do tej samej książki, lub: nil, gdy nic, czyli w pozostałych przypadkach;
tab_pozycja_elementow_w_spisie_rzeczy[6], -- "url", pozycja świadcząca, że to jest link zewnętrzny, a nil, gdy to jest normalny link;
},
---- lub
tab_pozycja_elementow_w_spisie_rzeczy[1], -- nazwa artykułu linku, która nie posiada, ani parametrów w sobie, a po nim nagłówka, lub bezpośrednio po nazwie;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- nazwa artykułu bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec elementów alternatywnych
{
#przedrostek_listy, -- poziom listy, w którym jest artykuł, dla artykułów w linii z listą, w innym wypadku dla artykułu znajdującego się w rozdziale dodatnim, czy ujemnym jest zero;
przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])", przeciwnie dla artykułów w rozdziale dodatnim ma wartość pustą;
tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu, gdy nie ma takiej numeracji, bo nie da się jej wydzielić, to ma wartość pustą;
w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym, wtedy "true", w przeciwnym wypadku: "false";
},
linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare";
true/false, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: false;
true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika, przeciwnie: false;
---- Początek elementów alternaatywnych
Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow2), -- który numer artykułu, w momencie wsadzenia do tabeli zbierania rozdziałów i w nich artykułów, nawet w rozdziale;
---- lub
nil, -- nil, wtedy gdy link jest tak sobie dodany, który nie należy do żadnego spisu, a po nim elementy jego z nagłówkiem natomiast należą;
---- Koniec elementów alternatywnych
};
</syntaxhighlight>
W powyższym: {{Tag|syntaxhighlight|parametry=lang="lua"}}, dla elementu: {{Code|<nowiki>---- lub</nowiki>}}, jest powiedziane, że są dostępne alternatywy, które są zawarte w tablicy, że wybieramy te, aby nie spowodować czysto podwójnej tablicy, aby każda tablica zawierały inne elementy, jak wiele, a nie jedną tablicę, jak i łańcuchy znaków, wartość nil, powoduje, że czy ma być taka tablica, ale nie podwójna, co to znaczy podowójna, tzn. tablica w sobie zawiera inną jedyną tablicę, a tak nie może być, a jak zawiera jedną tablicę, to musi posiadać inne nienilowe elementy.
== Funkcje tablicy transportu ==
=== {{Śródtytuł|p.AnalizaNapisuWprowadzeniaTekstu}}{{Code|p.AnalizaNapisuWprowadzeniaTekstu}} ===
Funkcja przyjmuje jako parametr nieskompletowaną i nieprzetworzony tekst napisu wprowadzenia tekstu. On kompletujei przekształca go w odpowiedni sposób,aby otrzymać czysty tekst tytułu rozdziału.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AnalizaNapisuWprowadzeniaTekstu(rozdzial,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|rozdzial}} | _1 = Ten tekst tytułu rozdziału, o którym mówimy.
| 2 = {{Code|pelna_nazwa_spisu_tresci}} | _2 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci}}
| 3 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _3 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _5 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
==== Obiekty typu {{nobold|{{Code|SZABLON}}}} ====
Funkcja korzysta z funkcji: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, funkcja ma zdefiniowaną pierwszą jej funkcję, która dla: {{Code|obiekt {{=}} "SZABLON"}}, używamy pierwsze dwie tabelę, te tabele:
Pierwsza {{Patrz|szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu}}, która służy do zamieniania szablonów na ich parametry, tutaj pierwsza, to jest tablica: {{Code|{{sr|#p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu}}:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu={
["MDL:RozszerzonyLink"]=1,
["Kompletność"]="",
["Kompletność krótka"]="",
["Kompletność junior"]="",
["Książka"]="",
};
</syntaxhighlight>
Druga: {{Code|{{sr|#p.szablony_dozwolone_w_nazwach_linkowych|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_dozwolone_w_nazwach_linkowych}}, też służy do tego samego.
Funkcja wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja {{Patrz|p.szablony_dozwolone_w_nazwach_linkowych}}:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_w_nazwach_linkowych={
["Korekta"] =2,
};
</syntaxhighlight>
===== Funkcje zawartości i dodatków, dla szablonów =====
One służą do zamieniania wywołań szablonowych na odpowiednie ich zawartości parametrów określone przez numery parametrów tych elementów w tch tabelach. Jeżeli przy którym wywolaniu przy wykorzystaniu kolejnych tych tabel przy użyciu funkcji: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, nastąpiło zamienienie, to funkcja pierwsza w: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, zakańcza się z tą wartością. A jeżeli nie to uruchamia się funkcj dodatków: {{Code|{{sr|#p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu|p=StronicowyParser/Rozdziały}}}}, a jeśli nastąpiło zastąpienie, to funkcja kompletowania się kończy z tą wartością.
===== Szablonowe linki =====
Dalej jeżeli tak się nie stało, to uruchamia się funkcja parametrów, w którym wywołanie szablonowe jest rozkładane na nazwę szablonu, modyfikatory i parametry. Dalej jest spradzanie , czy jest to link inteligentny według funkcji: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}, a gdy jest, to funkcja kończy swoje działania z nazwą tego linku lub jego adreesem wewnętrznym, a jeśli on nie jest tym, to sprawdza, czy są inne szablonowe linki, które podejrzewa się poprzez wywołanie funkcji: {{Code|{{sr|#p.NazwaInnegoSzablonowegoLinkowegoObiektu|p=StronicowyParser/Potrzebne}}}}, a jeżeli jest tym linkiem, to funkcja składania zwraca też jak poprzednio nazwę linku lub jego adres wewnętrzny, ewentualnie z dodatkiem. A gdy nie, to w innym przypadku sprawwdzane, czy to jest inny link wewnętrzny generowane przez szablony, która spradza funkcja tutaj: {{Code|{{sr|#p.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy|p=StronicowyParser/Potrzebne}}}}, a jeżeli szablon jest tym linkiem, to kunkcja składania zwraca jego nazwę linkową.
===== Szablony rozwijane przez {{lpg|JavaScript}} =====
A następnym krokiem jest sprawdzanie, czy nazwa szablonu jest jednych z elementów z tablicy: {{LinkPatrz|P.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu}}, która ma ten element, te szablony wymienione w tej tablicy są po to, aby służyły do rozwijania przez JavaScript, są to elementy wikikodu, które są pracochłonne ze względu na ich skomplikowany kod, czy wikikod, nawet {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, i dlatego ich się nie rozwija przez stronicowy parser: {{Code|{{ld2|StronicowyParser}}}}, te nazwy szablonów są określone tablicą: {{Code|{{sr|#p.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu}}:
<syntaxhighlight lang="lua">
p.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu={
["Cytuj"]=true,
["Cytuj stronę"]=true,
["Cytuj pismo"]=true,
["Cytuj odcinek"]=true,
["Cytuj książkę"]=true,
["Cytuj grę komputerową"]=true,
};
</syntaxhighlight>
I funkcja wtedy zwraca zkompletowany szablon bez rozwijania jego, pod warunkiemjeżeli jest tym szablonem o tej nazwę szablonu wywołującego.
===== Co jest zwracane w przypadku szablonów =====
Te powyżej elementy dla funkcji parametrów, w niej wartości są zwracane do niej, a jeżeli ona przyjmuje wartość nienilową, to do funkcji składania zwracana jest jego wartość, a przeciwnie jest zwracane pierwszy parametr szablonu do niej.
==== Obiekty typu: {{nobold|{{Code|NOWIKI}}}}, {{nobold|{{Code|PRE}}}} i {{nobold|{{Code|ŹRÓDŁO}}}} ====
A gdy dla elementów, jeśli nazwa obiektu jest: {{Code|obiekt {{=}} "NOWIKI"}}, {{Code|obiekt {{=}} "PRE"}}, lub: {{Code|obiekt {{=}} "ŹRÓDŁO"}}, znacznik jest rozkładany na czynniki pierwsze, a jeżeli nnie ma zawartości, to przez funkcję skłądania jest zwracana wartość pusta, a jeśli nie, to pewne znaki specjalne tagu {{Tag|nowiki}}, które mają w nim być zamienione na tekst, są zamieniane na kody '''HTML''', co po zamienieniu ta ona jest zwracana.
==== Obiekty typu: {{nobold|{{Code|MATH}}}}, {{nobold|{{Code|GALERIA}}}}, {{nobold|{{Code|MAPAOBRAZU}}}}, i {{nobold|{{Code|INNEPRE}}}} ====
A jeżeli wartość: {{Code|obiekt}}, jest nie równa: {{Code|MATH}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} lub {{Code|INNEPRE}}, wtedy z zawartości zmiennej: {{Code|szablon}}, są wykorzystanne funkcje z modułu: {{Code|{{ld2|Specjalne}}}}, które w tej podanej zmiennej są usuwane z komentarze z: {{Code|{{sr|#p["UsuńKomentarze"]|p=Specjalne}}}}, zamieniane są linki zewnętrzne i wewnętrzne na ich nazwy lub adresy według: {{Code|{{sr|#p["ZamieńLinkiZewnętrzneNaTekst"]|p=Specjalne}}}} i {{Code|{{sr|#p["ZamieńLinkiWewnętrzneNaTekst"]|p=Specjalne}}}}. Są usuwane rozwinięte znaczniki szablonów stylów używając do tego celu: {{Code|{{sr|#p["UsuńSzablonyStylów"]|p=Specjalne}}}}. Są też usuwane znaczniki na podstawie: {{Code|{{sr|#p["UsuńZnaczniki"]|p=Specjalne}}}}. Z tekstu szablonu są usuwane normalne kategorie nieszablonowe: {{Code|{{sr|#p"UsuńKategorie"]|p=Specjalne}}}}. Są też usuwane z zawartości wywołania plików i interwiki z: {{Code|{{sr|#p["UsuńWywołaniaPlików"]|p=Specjalne}}}} i {{Code|{{sr|#p["UsuńInterwiki"]|p=Specjalne}}}}. Dalej z tego obiektu są usuwane znaki specjalne z: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}.
A gdy mamy do czynienia z innymi znacznikami, to są zwracane jest zamiast niego wartość pusta do funkcji kompletowania.
Dane z funkcji kompletowane są zwracane, które z niej są usuwane znaki specjalne z całości tekstu rozdziału: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, i znaki białe z końców tekstu i powtarzarzające się te znaki kolejne z wewnętrz są zamieniane na jedną spację, to się dzieje według funkcji: {{Code|{{sr|#p["UsuńZbędneBiałeZnaki"]|p=Specjalne}}}}.
Cały taki wynik operacji robione w funkcji w nagłówku są zwracane do niej, to jest, co uzyskujemy nazwa rozdziału w postaci przetworzonej.
=== {{Śródtytuł|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}{{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} ===
Opisane tutaj są podfunkcje, z których korzysta ta funkcja, co one robią, do czego są wykorzystane.
==== Opis funkcji: {{nobold|{{Patrz|opis funkcji-ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}}} ====
Funkcja służy do zbierania nagłówków i z niej danych,tzn. linków normalnych i inteligentnych, a także są zbierane nagłówki z listy bez artykułów i do nich elementy podlisty z artykułami w postaci wywołań linkowych w niej. Tworzona jest specjalnie dla niegp tablica: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, która w odpowiedni po przekształaceniach wsadzana jest do tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} | _1 = Jak w: {{LinkPatrz|self}}.
| 2 = {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} | _2 = Kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}.
| 3 = {{Code|nazwa_spisu_tresci}} | _3 = Jak w: {{LinkPatrz|nazwa_spisu_tresci}}.
| 4 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _4 = Czy dany spis treści dla książki dla jej artykułu korzystanego, dla innej książki, wtedy to artykuł niekorzystany.
| 5 = {{Code|adres_ksiazki_glownego_spisu_tresci}} {{Patrz|adres_ksiazki_glownego_spisu_tresci}} | _5 = Jest to wewnętrzny adres książki głównego spisu treści,jest to taki adresm na który wskazuje przekierowanie innej książki.
| 6 = {{Code|__FUNKCJA_ZBIERANIA_DANYCH}} {{Patrz|__FUNKCJA_ZBIERANIA_DANYCH}} | _6 = Jest to funkcja, która zbiera informacje o aktualnym artykule, która jest spisem treści, w postaci nieprzetworzonej przez funkcje z modułu: {{Code|{{ld2|StronicowyParser/Rozdziały}}}}, opisanego w: {{Code|{{sr|Rozdziały|StronicowyParser - Rozdziały|p=StronicowyParser}}}}, ta funkcja kopiuje, np. tabele danych bazy modułu: {{Code|{{m|Szablonowe}}}}, tzn: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, i tabelę rozkładu elementów w niej na czynniki pierwsze, tzn.: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, co jest napisane w module: {{Code|{{ld2|StronicowyParser/ZbieranieDanychStron}}}}, a w dokumentacji: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}.
}}
==== Funkcje lokalne ====
Funkcja ma w sobie też definicję funkcji lokalnych zdefiniowanej w tej funkcji tutaj opisywanej.
===== {{Śródtytuł|FunkcjaIteratoraTekstuZakodowego}}{{Code|FunkcjaIteratoraTekstuZakodowego}} =====
Funkcja służy do pomijania tego, co nie jest linkiem wewnętrznym, czy zewnętrznym, czyli oznaczone kodami: {{Code|LINKW}} lub {{Code|LINKZ}}, czy nawet szablonem linkuinteligentnego, czy innego służacego do generowania spisu treści, do tego celu również używa funkcji: {{LinkŚródtytuł|CzySzablonLinkLubLicencja}}, oraz tego co nie jest w liście okreslonym wzorem {{Code|<nowiki>\n([#:*;]+)</nowiki>}} z mozliwym na początku tekstem, ale nie z kodami, w danej pozycji listy, lub co ewentualnie nie może być w możliwej liście, tzn.: {{Code|<nowiki>\n([#:*;]*)</nowiki>}}, ale wtedy musi tam być z tekstem, ale nie z kodami, na początku danej pozycji listy, nawet jeśli to nie jest lista, to też tak samo.
Jeżeli funkcja nie ma kodów linków wewnętrznych, czy to normalnych, czy szablonowych, to się zakańcza z wartością domyślną {{Code|nil}}, w przeciwnym wypadku do sprawdzenia używa do tego funkcji: {{LinkŚródtytuł|PomijajLinkiOrazLicencje}}, do sprawdzania, czy to jest link lub licencji, a jeżeli ta funkcja zwraca wartość {{Code|true}}, to cała funkcja zwraca {{Code|nil}}. Jeżeli oba te sposoby nie dały rezultatu {{Code|true}}, to wtedy funkcja zwraca wartość pustą, czyli okreslonym ciągiem znakowym o szwerokości zerowej.
Funkcja ma w sobie dwie definicje funkcji: {{LinkŚródtytuł|PomijajLinkiOrazLicencje}} i {{LinkŚródtytuł|CzySzablonLinkLubLicencja}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local FunkcjaIteratoraTekstuZakodowego=function(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}.
| 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}.
| 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod}}.
}}
====== {{Śródtytuł|PomijajLinkiOrazLicencje}}{{Code|PomijajLinkiOrazLicencje}} ======
Funkcja służy do sprawdzania, czy są odpowiednie szablony w kodzie.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function PomijajLinkiOrazLicencje(szablon)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}.
}}
Funkcja sprawdza, czy to są szablony spisu treści określone tablicą o kluczach, którymi są nazwy szablonów, z wartościami {{Code|true}}, czyli: {{Code|{{sr|#p.szablony_licencji|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_licencji}}:
<syntaxhighlight lang="lua">
p.szablony_licencji={
["Licencja"]=true,
};
</syntaxhighlight>
Tzn., czy to są szablony ozdobne woluminu, którego tablica: {{Code|{{sr|#p.szablony_ozdobne_stron_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_ozdobne_stron_woluminu}}, jest podobnie zbudowana, co poprzednia:
<syntaxhighlight lang="lua">
p.szablony_ozdobne_stron_woluminu={
["MDL:RozszerzonyLink"]=true,
};
</syntaxhighlight>
A jeżeli to są te szablony, to funkcja zwraca wartość {{Code|true}}.
Jeżeli jednak to nie są te szablony, należy użyć tablic, tak samo zbudowanej jak poprzednie, czyli: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.linki_szablony_elementy_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.linki_szablony_elementy_spisu_rzeczy={
["SpisTreści"]=true,
["Sekcja referencyjna"]=true,
["Sr"]=true,
["Link wewnętrzny"]=true,
["Ly"]=true,
["LinkOgólne"]=true,
["Lo"]=true,
};
</syntaxhighlight>
lub innej, inaczej zbudowanej niż poprzednie, ale ważne, że ma wartość niefałszywą, czyli taką tablicą: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}, jest:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
Jak są te nazwy szablonów określone ich kluczami tych tablic, to funkcja zwraca wartość {{Code|true}}. A jeżeli jednak nie to funkcją: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}, jest sprawdzane,czy to jest link inteligentny, nawet przekierowanie, jeżeli link taki jest, to funkcja zwraca wartość w tym wypadku {{Code|true}}. W przeciwnym wypadku, jak nie zwrócił tej wartości,bo taka nie jest nazwa szablonu, to funkcja nic nie zwraca.
====== {{Śródtytuł|CzySzablonLinkLubLicencja}}{{Code|CzySzablonLinkLubLicencja}} ======
Funkcja sprawdzająca za pomocą: {{LinkŚródtytuł|PomijajLinkiOrazLicencje}}, na podstawie parsowania tekstu szablonu funkcją: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, z parsowanym przechwytywanym typem obiektu: {{Code|obiekt}} {{LinkPatrz|obiekt}}, równym {{Code|SZABLON}}. A jeżeli funkcja ta wspomniana w tekście zwróci {{Code|true}}, to funkcja taki obiekt policzy.
Jeżeli liczba policzonych obiektów i znalezionych w wyniku parsowania jest większa od zera, to funkcja w nagłówku zwróci wartość {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local CzySzablonLinkLubLicencja=function(szablon)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}.
}}
===== {{Śródtytuł|iteratorTekstuNaglowka}}{{Code|iteratorTekstuNaglowka}} =====
Jest to funkcja iteratora, którego funkcja zwracana (iterator) zwraca parametry, dla rozdziałów dodatnich i pozycji list.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function iteratorTekstuNaglowka()
... ---- Kod przed zwróceniem iteratora;
return function()
... ---- Ciało funkcji iteratora;
end;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = Brak parametrów. | komórka1 = tak
}}
Iterator (funkcja zwracana przez funkcję w nagłówku) zwraca parametry w wyniku kolejnych wywołań:
<syntaxhighlight lang="lua">
return przedrostek_listy,tekstowy_przedrostek,wyzyskane_wywolanie_szablonu_spis_tresci,true/false;
</syntaxhighlight>
Parametry zwracane przez iterator:
{{OpisParametrów
| 1 = {{Code|przedrostek_listy}} | _1 = Przedrostek pozycji listy, dla rozdziałów dodatnich jest wartością pustą.
| 2 = {{Code|tekstowy_przedrostek}} | _2 = Numeracja pozycji w liście lub w nagłówku dodatnim.
| 3 = {{Code|wyzyskane_wywolanie_szablonu_spis_tresci}} | _3 = Jest to rozdział bez numeracji i przedrostka pozycji listy.
| 4 = {{Code|true/false}} | _4 = Wartość {{Code|true}} świadczy o rozdziale dodatnim, a w przypadku innym funkcja zwraca zawsze wartość tą {{Code|false}} jako ostatni element zwracany.
}}
Funkcja jest przykowana na rozdziałów dodatnich i pozycji list oraz innych linii, dla tego pierwszego funkcja zwraca:
<syntaxhighlight lang="lua">
return "","",wartosc,true;
</syntaxhighlight>
Gdzie {{Code|wartość}} jest to zawartość napisu wprowadzenia tekstu (rozdziału dodatniego).
W przypadku list oraz innych niż rozdziały dodatnie samo wyrażenie regularne {{lpg|Lua}} w {{lpr|Lua|Scribunto}} jest okreslone przez wyrażenie:
<syntaxhighlight lang="lua">
local re="([#:*;]*)[^%S\n]*([%d%.]*[^%S\n]*[^\n]+)";
</syntaxhighlight>
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu|p=StronicowyParser/Rozdziały}}}}, aby zamienić zawartość pozycji listy na rozdział bez numeracji i numerację, i dlatego ta funkcja zwraca te dwie wartości. Gdy funkcja jak nie znajdzie więcej linii (wyszukań), to zwraca wartość {{Code|nil}} mówiąca o zakończeniu iteracji iteratora, tzn. dane dla iteratora się zakończyły.
===== {{Śródtytuł|LiniaArtykulow}}{{Code|LiniaArtykulow}} =====
Funkcja dla szablonów kompletowania określonym tabelką: {{Code|{{sr|#p.szablony_kompletowania_stron_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_kompletowania_stron_woluminu}}, o definicji:
<syntaxhighlight lang="lua">
p.szablony_kompletowania_stron_woluminu={
["Kompletność"]=true,
["Kompletność krótka"]=true,
["Kompletność junior"]=true,
["Książka"]=true,
};
</syntaxhighlight>
Rozdziela linię na wiele obsługiwanych podlinii.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function LiniaArtykulow(linia)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|linia}} {{Patrz|linia}} | _1 = Pojedyncza przetworzona linia.
}}
====== {{Śródtytuł|SzablonAnalizujKompletnosc}}{{Code|SzablonAnalizujKompletnosc}} ======
Funkcja sprawdza, czy dane wywołania szablonu, ma swoją nazwę szablonu, która jest nazwą szablonu kompletowania.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function SzablonAnalizujKompletnosc(szablon)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}.
}}
====== Dalszy opis funkcji ======
Możliwe są dwie opcje, szablon kompletowania jest pierwszy, a drugi drugi, lub odwrotnie. Funkcja obsługuje te oba przypadki. Ona stawia przecinkiem dla obu wersji ustawień, jeśli potraktować układem link i szablon kompletowania, to wstawiany jest on pomiędzy tymi układami, aby rozdzielić linię, a w liście bez jego znaków pozycji, na elementy przy pomocy funkcji: {{LzLua|mw.text.split}}, z opcją jako drugi parametr, aby uwzględniał wyrażenia regularne {{Code|false}}. W tych rozdzielonych linią tą funkcją dzielącą ciąg znakowy na tabelę, kody '''HTML''' przecinka są zamieniane na zwykły przecinek.
Funkcja zwraca tabelę podzielonej linii na mniejsze podlinie, który można iterować funkcją: {{Code|pairs}} lub {{Code|ipairs}}.
===== {{Śródtytuł|WsadzanieParametryDoTablicy}}{{Code|WsadzanieParametryDoTablicy}} =====
Funkcja z parametrami, która uruchamia inną funkcję uruchamianą w: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}, która wstawia tabelę {{LinkPatrz|tab_stare}}, do ogólnej tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}, ewentualnie do {{Code|tabela_rozdzial_artykulow}} {{Patrz|tabela_rozdzial_artykulow}} na pozycję {{Code|numer_podtablicy_w_tablicy}} {{Patrz|numer_podtablicy_w_tablicy}}, a dokładniej na pozycję {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}} w funkcji {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function WsadzanieParametryDoTablicy(linia,czy_linia_uwzgledniana)
return function(tabela_rozdzial_artykulow2,numer_podtablicy_w_tablicy,tab_stare)
... ---- ciało funkcji.
end;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|linia}} | _1 = Jak w: {{LinkPatrz|linia}}.
| 2 = {{Code|czy_linia_uwzgledniana}} {{Patrz|czy_linia_uwzgledniana}} | _2 = Czy linię ma uwzględnić w powiększaniu poziomu o jeden dla artykułu.
}}
Parametry zwracanej funkcji przez tę w nagłówku:
{{OpisParametrów
| 1 = {{Code|tabela_rozdzial_artykulow2}} | _1 = Jak w: {{LinkPatrz|tabela_rozdzial_artykulow2}}.
| 2 = {{Code|numer_podtablicy_w_tablicy}} | _2 = Jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}.
| 3 = {{Code|tab_stare}} | _3 = Jak w: {{LinkPatrz|tab_stare}}.
}}
====== {{Śródtytuł|CzyZaliczac}}{{Code|CzyZaliczac}} ======
Funkcja sprawdza, czy z początkiem linii pozycji listy, bez przedrostka listy, jest z możliwym cudzysłowem, po którym następują liczby, litery, lub myślniki dolne, w takim pzypadku linia nie może składać się z nich, po ktorym występują znaki interpunkcyjne. Jeśli to sprawdzenie było pozytywne funkcja zwraca wartość logiczną odpwowiadającą {{Code|true}}, w przeciwnym wypadku jak {{Code|false}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function CzyZaliczac()...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = Brak parametrów funkcji. | komórka1 = tak
}}
Funkcja zwraca informację, czy daną linię traktować jako rozdział, chodzi tu o pozycje list, a w przypadku rozdziałów dodatnich wiadomo, że one są właśnie, że rozdziałami.
====== Dalszy opis funkcji ======
Funkcja sprawdza w funkcji zwracanej, czy rozważany rozdział jest centrowany danego artykułu, który siedzi pod rozdziałem lub w samym rozdziale, sprawdza, czy artykuł jest w rozdziale, sprawdza czy linia jest uwzględniana: {{Code|czy_linia_uwzgledniana}} {{LinkPatrz|czy_linia_uwzgledniana}}. Funkcja sprawdza, czy sekcja czy w: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, czy istnieje element: {{Code|tab_stare[2]}} {{Patrz|tab_stare[2]}}, i dalszy: {{Code|tab_stare[2][1]}} {{Patrz|tab_stare[2][1]}} - ten element jest to w: {{Code|tab_stare}}, taki: {{Code|#przedrostek_listy}} {{Patrz|#przedrostek_listy}}, a jeżeli to sprawdzenie przeszło pozytywnie, który dla tego jest poziomem listy, lub zerowego rozdziału lub rozdziału dodatniego.
Dla każdej linii zmienna: {{Code|nowa_linia}} {{Patrz|nowa_linia}}, przyjmuje wartość {{Code|false}}, wtedy dla przypadku przeciwnego, tzn. gdy mamy rozdział i uwzględniamy artykuły w jednej linii, którym jest rozdział będacy pozycją listy, w zmiennej: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, jest ustawiany element: {{Code|tab_stare[2][4]}} {{Patrz|tab_stare[2][4]}}, czyli zmienna: {{Code|w_rozdziale}} {{LinkPatrz|w_rozdziale}}, zaczyna przyjmować wartość {{Code|true}}. Wsadzany jest wtedy do tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}, na pozycję: {{Code|numer_podtablicy_w_tablicy}} {{LinkPatrz|numer_podtablicy_w_tablicy}}, czyli to jest też: {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, element {{Code|tab_stare}} {{LinkPatrz|tab_stare}}.
Gdy: {{Code|nowa_linia}} {{LinkPatrz|nowa_linia}}, gdy jednak przyjmuje wartość {{Code|false}}, wtedy jeśli poziom rozdzialu istnieje i przedrostek listy {{LinkPatrz|#przedrostek_listy}} jest większy od zera, i istnieje wiele artykułów w pozycji liście, wtedy: {{Code|ile>0}}, lub funkcja: {{LinkŚródtytuł|CzyZaliczac}}, przyjmuje wartość odpowiadające prawdziwej, w taki przypadku zmiennej: {{Code|nowa_linia}} {{LinkPatrz|nowa_linia}}, przydzielamy wartość {{Code|true}}, by dalsze artykuły można było wsadzić, do tablicy z nowym rozdziałem. Powiększamy numer rozdziału o jeden, tzn.: {{Code|numer_rozdzialu_w_ksiazce}} {{Patrz|numer_rozdzialu_w_ksiazce}}, wtedy w zmiennej: {{Code|tabela_artykulow}} {{Patrz|tabela_artykulow}}, tabeli rozdziałów i w nich artykułów dla tej pozycji przydzielamy wartość równą tablicy pustej. Liczymy rozdział dla tego rozdział z artykułami, z funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}, liczymy napis rozdziału, wtedy do pierwszej pozycji tablicy utworzonej w: {{Code|tabela_artykulow}} {{LinkPatrz|tabela_artykulow}}, dla miejsca: {{Code|numer_rozdzialu_w_ksiazce}} {{LinkPatrz|numer_rozdzialu_w_ksiazce}}, czyli: {{Code|tabela_rozdzial_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}, piszemy:
<syntaxhighlight lang="lua">
tabela_rozdzial_artykulow[1]={rozdzial_na_tekst,{-#przedrostek_listy,przedrostek_listy,tekstowy_przedrostek,false,},linia,};
</syntaxhighlight>
Gdzie: {{Code|rozdzial_na_tekst}} {{Patrz|rozdzial_na_tekst}}, to policzony rozdział, {{Code|-#przedrostek_listy}} {{Patrz|-#przedrostek_listy}} to poziom rozdziału ujemnego, i dlatego minus. A: {{Code|przedrostek_listy}}, to znaki poczatkowe z listy: {{Code|wzor_do_linii_z_lista}} {{LinkPatrz|wzor_do_linii_z_lista}}, a: {{Code|tekstowy_przedrostek}}, to numeracja tego rozdziału. Wartość {{Code|false}} to jest ze ten rozdział nie jest centrowany, a: {{Code|linia}} {{LinkPatrz|linia}}, to wyzyskana linia bez początku pozycji listy. Ustawiamy: {{Code|tab_stare[2][4]}} {{LinkPatrz|tab_stare[2][4]}}, na wartość {{Code|true}} i element: {{Code|tab_stare[6]}} {{Patrz|tab_stare[6]}}, ustawiamy na zero. Tworzymy tablicę pustą na pozycję: {{LinkPatrz|numer_podtablicy_w_tablicy}}, tablicy: {{Code|tabela_rozdzial_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}, i do tej tablicy dodajemy: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, za pomocą funkcji: {{LzLua|table.insert}}.
A jeżeli nie jest tworzony nowy rozdział z listy w tabeli: {{Code|tabela_artykulow}} {{LinkPatrz|tabela_artykulow}}, to na pozycję: {{Code|numer_podtablicy_w_tablicy}} {{LinkPatrz|numer_podtablicy_w_tablicy}}, jest dodawany element: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, również tak jest robione, gdy artykuły znajdują się w rozdziale dodatnim, tzn. równaniowej lub centrowanej, tzn. wtedy: {{Code|w_rozdziale}} {{LinkPatrz|w_rozdziale}}, przyjmuje wartość {{Code|true}}.
===== {{Śródtytuł|AnalizaLiniiObiekty}}{{Code|AnalizaLiniiObiekty}} =====
Za pomocą funkcji: {{LinkŚródtytuł|LiniaArtykulow}}, linia: {{Code|linia_rozwazana}} {{Patrz|linia_rozwazana}}, jest rozdzielana na wiele linii. To wiele linii w postaci tabeli, są iterowane od: {{Code|k {{=}} 1}}, do: {{Code|k {{=}} #tab_linia}}, gdzie: {{Code|#tab_linia}} {{Patrz|#tab_linia}}, jest to długość linii, tzn. liczba elementów numerowanych tablicy, tzn. od 1 do zwyż aż do apotkania najbliższej przerwy lub końca. Wtedy dla pojedyńczej literacji mamy: {{Code|tab_linia[k]}} {{Patrz|tab_linia[k]}}.
Iterujemy po kodach dla linii: {{Code|tab_linia[k]}} {{LinkPatrz|tab_linia[k]}}, przy pomocy funkcji: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} {{Patrz|p.IteratorSzablonowyZakodowanegoTekstu}}, iteratorem: {{Code|iterator2}} {{Patrz|iterator2}}.
Inicjujemy zmienną: {{Code|tab_nieobslugiwane {{=}} nil}}, następnie iterujemy: {{LinkPatrz|iterator2}}, uzyskując w każdej iteracji: {{Code|szablon}} {{LinkPatrz|szablon}}, {{Code|obiekt}} {{LinkPatrz|obiekt}}, i {{Code|kod}} {{LinkPatrz|kod}}.
Gdy mamy do czynienia: {{Code|SZABLON}}, lub: {{Code|LINKW}}, albo: {{Code|LINKZ}}, wtedy dla elementów tego pierwszego bierzemy tablicę: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}, dla elementu: {{Code|nazwa_szablonu}} {{LinkPatrz|nazwa_szablonu}}.
Jeżeli ten element: {{Code|tabela_spisu}}, istnieje, element pierwszy: {{Code|tabela_spisu[1]}}, jest równy wartości {{Code|true}}, wtedy mamy do czynienia z szablonem {{s|SpisPozycja}}. Jej element: {{Code|tabela_spisu["numer_link"]}}, istnieje i jest równy: {{Code|tyt}} {{Patrz|tyt}}. Iterujemy po kluczach i jego wartościach tego szablonu i sprawdzamy, który element jest równy właśnie tej wartości, a jeżeli jest taki, to dla elementów nie równych niemu, a właściwie w jego wartości iterujemy po kodach funkcją: {{LinkPatrz|p.IteratorSzablonowyZakodowanegoTekstu}}, dla tej wartości, w ten sposób zbieramy tablicę wielowymiarową najpierw po: {{Code|obiekt}} {{LinkPatrz|obiekt}}, póżniej po: {{Code|kod}}, {{LinkPatrz|kod}}, którą nazwiemy: {{Code|tab_nieobslugiwane}} {{Patrz|tab_nieobslugiwane}}, którego każda jej wartość jest równa {{Code|true}}. Ta tablica mówi dla jakich elementów ma nie zbierać w tablicy elementów w głównej tablicy rozdziałów i jego artykułach.
Dla elementu {{Code|tyt}} {{LinkPatrz|tyt}} tablicy parametrów przedrostek listy {{Code|przedrostek_listy}} ustawiamy na pusty, i liczmy numerację {{Code|tekstowy_przedrostek}} i zmienną {{Code|szablon}} {{LinkPatrz|szablon}} i ustawiamy zmienną {{Code|przerwij}} {{Patrz|przerwij}} na {{Code|true}}, aby dla tego szablonu nie zbierać elementów w tablicy rozdziałów i jego artykułów.
W przypadku przeciwnym dla: {{Code|tabela_spisu}}, gdy ma wartość {{Code|false}}, wtedy mamy do czynienia z funkcją: {{s|SpisZw}}. Dla niej liczymy: {{Code|przedrostek_listy}}, którą ustawiamy na pustą wartość. A: {{Code|tekstowy_przedrostek}}, liczmy uzyskując parametr o kluczu: {{Code|tabela_spisu["numer"]}}, którym jest parametr o numerze: {{Code|1}}, i {{Code|szablon}} {{LinkPatrz|szablon}}, który liczmy z parametrów szablonu o kluczu {{Code|tabela_spisu["link"]}}, którym jest numer {{Code|2}}. Ustawiamy tutaj zmienną: {{Code|}} {{LinkPatrz|przerwij}}, na wartosć {{Code|true}}.
====== {{Śródtytuł|CzyObslugiwane}}{{Code|CzyObslugiwane}} ======
Funkcja sprawdzająca, które elementy są obsługiwane, jeśli istnieje tablica: {{Code|tab_nieobslugiwane}} {{LinkPatrz|tab_nieobslugiwane}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local CzyObslugiwane=function()...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = Brak parametrów. | komórka1 = tak
}}
====== Dalszy opis funkcji ======
; Uwzględnianie tablicy, reprezentujące artykuł w rozdziale, wstawiany do tablicy danego rozdziału{{dk}}
Sprawdzany jest warunek:
<syntaxhighlight lang="lua">
if((--[[wliczaj_artykuly_tego_rozdzialu]] true)and(not przerwij)and((not tab_nieobslugiwane)or(CzyObslugiwane())))then
</syntaxhighlight>
Jeżeli jest on spełniony, wtedy wywołujemy funkcję: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}, później dla:
<syntaxhighlight lang="lua">
if((not czy_obslugiwane)and(not numer_rodzaju_artykulu_poprz))then
</syntaxhighlight>
Sprawdzamy, czy jest zebrana licencja z autorem według zmiennej: {{Code|licencja_z_autorem}} {{Patrz|licencja_z_autorem}}, i sprawdzamy, czy: {{Code|szablon}} {{LinkPatrz|szablon}}, jest wnetrzem szablonu, jeżeli tak, to ona przyjmuje wartość odpowiadająca prawdziwej, przeciwnie ma fałszywą.
Jeżeli ten pierwszy warunek jest niespełniony, to tylko liczymy to samo coostatnio.
; Szablony licencji, i jego parametry, uwzględnianie jego tylko raz ca całą książkę, mieszcząca się w artykule głównej książki{{dk}}
Następnie dla warunku, który musi być spełniony:
<syntaxhighlight lang="lua">
if((not numer_rodzaju_artykulu_poprz)and(not przerwij)and(link_szablon)and((not tab_pozycja_elementow_w_spisie_rzeczy)or(not tab_pozycja_elementow_w_spisie_rzeczy[1]))and(czy_artykul_korzystany)and(licencja_z_autorem))then
</syntaxhighlight>
Sprawdzamy szablony licencji, takich jak: {{s|Licencja}}, według tablicy: {{Code|{{sr|#p.szablony_licencji|p=StronicowyParser/obiekty}}}}.
Dla parametrów szablonu, liczymy jego parametry o kluczach, tzn.: {{Code|Autor}} {{Patrz|Autor}}, {{Code|Ukończone szkoły}} {{Patrz|Ukończone szkoły}}, {{Code|Email}} {{Patrz|Email}}, {{Code|Dotyczy}} {{Patrz|DotyczyDotyczy}}, {{Code|Licencjonowanie}} {{Patrz|Licencjonowanie}}, {{Code|Umowa prawna}} {{Patrz|Umowa prawna}} i {{Code|Konsekwencje}} {{Patrz|Konsekwencje}}, którego wartości przydzielamy do odpowiednich zmiennych. Każdą z tych zmiennych kompletujemy funkcją: {{Code|{{sr|#p.DekodowanieTekstuDekodowanieTekstu|p=StronicowyParser/Potrzebne}}}}, poprzez zwracaną przez nią funkcję, w której jest wykorzystywana funkcją: {{LzLua|frame:preprocess}}, do rozwijania. A dla elementu istniejącego: {{Code|Autor}}, piszemy zmienną: {{Code|licencja_z_autorem}} {{LinkPatrz|licencja_z_autorem}}, któremu przydzielamy wartość {{Code|false}}, co spowoduje, że nie będziemy analizowali jeszcze raz innego szablonu licencji.
Te zmienne tego szablonu zbieramy natomiast w tablicy: {{Code|tabela_licencji_spisu_tresci}} {{Patrz|tabela_licencji_spisu_tresci}}, dane dotyczące licencji, więc:
<syntaxhighlight lang="lua">
tabela_licencji_spisu_tresci={autor, szkoly, email, dotyczy, licencjonowanie, umowa_prawna, konsekwencje};
</syntaxhighlight>
Co później przerywamy pętle po: {{Code|iterator2}} {{LinkPatrz|iterator2}}, instrukcją: {{Code|break}}.
==== Dalszy opis funkcji {{nobold|{{LinkPatrz|opis funkcji-ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}}} ====
Ściągamy tekst, tabelę bazy i tabelę parametrów strony o nazwie: {{Code|nazwa_modulu}}, przy pomocy funkcji: {{Code|{{sr|#p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony|p=StronicowyParser/Tekst}}}}, według:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=nil;
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
return nil;
end,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Uruchamiamy funkcję: {{Code|__FUNKCJA_ZBIERANIA_DANYCH}} {{LinkPatrz|__FUNKCJA_ZBIERANIA_DANYCH}}, jeżeli istnieje.
Dalej wywołujemy funkcję: {{Code|{{sr|#p.IterTekst|p=StronicowyParser/Rozdziały}}}}, w celu znalezienia tekstu: {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}}, i iteratora: {{Code|iterator}} {{Patrz|iterator}}, po napisach wprowadzenia tekstu rozdziałów i ich zawartości rozdziałów i na podstawie:
<syntaxhighlight lang="lua">
local iterator,tekst_rozwiniety_calego_artykulu=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,true,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,
__FUNKCJA, ---- funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adresu szablonu, określa i zawraca jego zawartość;
__FUNKCJA2, ---- funkcja operująca na przygotowanej zawartości napisu wprowadzenia tekstu i tekście napisu wprowadzenia tekstu (rozdziału);
__FUNKCJA_ANALIZA_SPISU ---- funkcja do analizy i modyfikacji tekstu (może zwracać wartość: nil) przed samym kodowaniem, jeżeli tekst jest w ogóle jest taki, a jeśli nie, ta funkcja wtedy nie jest uruchamiana, funkcja ta bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: IterTekst, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: SpisTreści, co jest uwidocznione w module: Moduł:StronicowyParser/SpisTreści;
);
</syntaxhighlight>
Opis parametrów zwracanych:
{{OpisParametrów
| 1 = {{Code|iterator}} {{Patrz|iterator-IterTekst}} | _1 = Iterator po rozdziałach i jego zawartościach.
| 2 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu-IterTekst}} | _2 = Tekst przetworzony rozdziału.
}}
Odczytujemy tabelę: {{LinkPatrz|p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu}} i dalej: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}, o definicji:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={
["spis treści"]=true,
["spis tresci"]=true,
["spis rzeczy"]=true,
};
</syntaxhighlight>
Robimy kopię tych tabel i przyłączamy do metatabeli: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, przy pomocy funkcji: {{LzLua|setmetatable}}, aby nie odrózniać tych rozdziałów ze względu na wielkość liter i polskie znaki.
Inicjiujemy zmienną: {{Code|numer_rozdzialu_w_ksiazce}} {{LinkPatrz|numer_rozdzialu_w_ksiazce}}, wartością: {{Code|1}}, aby zbierać po kolei artykuły ze poszczególnego pojedynczego spisu treści.
Ustawiamy maksymalny rozmiar rozdziału zerowego na {{Code|50}}, w zmiennej: {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{Patrz|maksymalny_rozmiar_rozdzialu_zerowego}}, według:
<syntaxhighlight lang="lua">
local maksymalny_rozmiar_rozdzialu_zerowego=50;
</syntaxhighlight>
===== {{Śródtytuł|AnalizaRozdzialu}}{{Code|AnalizaRozdzialu}} =====
Jest to funkcja do zbierania danych z pojedynczgo rozdziału o pewnej linii, inicjowana z jego parametrami, także tekstem rozdziału.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function AnalizaRozdzialu(rozdzial,linia_rozdzialu,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|rozdzial}} {{Patrz|rozdzial}} | _1 = Jest to tekst rozdziału.
| 2 = {{Code|linia_rozdzialu}} {{Patrz|linia_rozdzialu}} | _2 = Jest to linia z rozdziałem.
| 3 = {{Code|text}} {{Patrz|text}} | _3 = Jest to tekst rozdziału o pewnym napisie wprowadzenia tekstu.
| 4 = {{Code|poziom_rozdzialu}} {{Patrz|poziom_rozdzialu}} | _4 = Jest to poziom danego rozdziału.
| 5 = {{Code|poczatek_rozdzialu}} {{Patrz|poczatek_rozdzialu}} | _5 = Początek pozycji listy rozdziałów mechanizmu {{Strong|MediaWiki}}.
| 6 = {{Code|numeracja}} {{Patrz|numeracja}} | _6 = Numeracja rozdziału.
| 7 = {{Code|czy_rozdzial_centrowany}} {{Patrz|czy_rozdzial_centrowany}} | _7 = Czy dany rozdział jest centrowany.
}}
====== Tabela artykułów rozdziałów i w nich artykułów oraz jego poszczególnych ======
Tworzymy tabelę: {{Code|tabela_artykulow}} {{LinkPatrz|tabela_artykulow}}, jeżeli nie istnieje, z pustą tablicą, a później dla elementu: {{Code|numer_rozdzialu_w_ksiazce}} {{LinkPatrz|numer_rozdzialu_w_ksiazce}}, jeżeli też go nie ma, to też pustą tablicą. Dalej liczymy napis wprowadzenia tekstu rozdziału dodatniego funkcją: {{LinkŚródtytuł|p.AnalizaNapisuWprowadzeniaTekstu}} i uwzględniamy je w tabeli rozdziałów dla danego rozdziału pod wartością: {{Code|tabela_rozdzial_artykulow[1]}}, w sposób:
<syntaxhighlight lang="lua">
tabela_rozdzial_artykulow[1]={rozdzial_na_tekst,{poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany,},rozdzial,};
</syntaxhighlight>
Dalej wprowadzamy zmienną: {{Code|czy_spis_rzeczy_napis_wprowadzenia_tekstu}} {{Patrz|czy_spis_rzeczy_napis_wprowadzenia_tekstu}}, mówiącą teraz rozpatrujemy rozdziały i artykuły w ramach spisu treści o nagłówkach typu: {{Code|Spis treści}}, czy: {{Code|SPIS RZECZY}}. Jeżeli wyszliszmy poza to, to ta zmienna wtedy przyjmuje wartość fałszywą, a definicja inicjacji tej zmiennej jest:
<syntaxhighlight lang="lua">
local czy_spis_rzeczy_napis_wprowadzenia_tekstu=(poziom_rozdzialu)and(not czy_jest_spis_tresci)and(not dalej_nie_rozwazaj_spis_tresci)and(jakie_spisy_tresci[spreparowany_uzyskany_tekst_rozdzialu]);
</syntaxhighlight>
Gdzie:
{{OpisParametrów
| 1 = {{Code|poziom_rozdzialu}} | _1 = Jak w: {{LinkPatrz|poziom_rozdzialu}}.
| 2 = {{Code|czy_jest_spis_tresci}} {{Patrz|czy_jest_spis_tresci}} | _2 = Czy jesteśmy w spisie treści.
| 3 = {{Code|dalej_nie_rozwazaj_spis_tresci}} {{Patrz|dalej_nie_rozwazaj_spis_tresci}} | _3 = Zmienna mówiąca, że teraz jesteśmy poza spisem treści.
}}
====== Kiedy uwzględniamy artykuły rozdziału ======
Jeżeli jesteśmy w spisie, to zawsze są uwzględniane artykuły rozdziału, bo jest ustawiona zmienna: {{Code|wliczaj_artykuly_tego_rozdzialu}} {{LinkPatrz|wliczaj_artykuly_tego_rozdzialu}}, na {{Code|true}}, a poza na {{Code|nil}}.
Funkcja jest przyszykowana jest dla jednego spisu treści, o ściśle określonym specjalnym napisie wprowadzenia tekstu, w danym spisie na stronie.
====== Iterator linii artykułu spis treści ======
Uruchamiamy iterator używając funkcji lokalnej: {{LinkŚródtytuł|iteratorTekstuNaglowka}}, według wywołania:
<syntaxhighlight lang="lua">
local iterator=iteratorTekstuNaglowka();
</syntaxhighlight>
Ustawiamy zmienną: {{Code|wliczaj_artykuly_tego_rozdzialu}} {{LinkPatrz|wliczaj_artykuly_tego_rozdzialu}}, aby wliczał lub nie, pewne artykuły rozdziału według:
<syntaxhighlight lang="lua">
local wliczaj_artykuly_tego_rozdzialu=((wliczaj_artykuly_tego_rozdzialu)or(not jakie_nie_rozdzialy[rozdzial]));
</syntaxhighlight>
Iterujemy otrzymanym ostatnio iteratorem, uzyskując kolejno zmienne: {{Code|przedrostek_listy}} {{LinkPatrz|przedrostek_listy}}, {{Code|tekstowy_przedrostek}} {{LinkPatrz|tekstowy_przedrostek}}, {{Code|linia}} {{LinkPatrz|linia}}, i {{Code|w_rozdziale}} {{LinkPatrz|w_rozdziale}}.
; Kiedy rozdziałów zerowych nie liczymy jako je{{dk}}
Dla rozdziałów, które nie sa poziomami z listą, sprawdzamy, czy to jest rozdział zerowy przy pomocy funkcji: {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|p=StronicowyParser/Rozdziały}}}}, i sprawdzamy, czy on przekracza rozmiar: {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}, jeżeli jest tym rozdziałem i nie przekracza pewnego rozmiaru, to to jest rozdział traktowany jako zerowy niepomijany rozdział zerowy, wtedy ustawiamy zmienną: {{Code|nie_pomijaj_tego_rozdzialu}} {{Patrz|nie_pomijaj_tego_rozdzialu}}, na {{Code|true}}.
; A jeśli to są rozdziały z listy zaczynające się od dwukropka w linii{{dk}}
Gdy taki rozdział nie pretenduje do zerowych, to sprawdzamy funkcją: {{Code|{{sr|#p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu|p=StronicowyParser/Rozdziały}}}}, czy ten rozdział pominąć, a jeżeli ona przyjmuje wartość odpowiadającej fałszywej, czyli {{Code|false}}, wtedy ustawiamy zmienną: {{Code|nie_pomijaj_tego_rozdzialunie_pomijaj_tego_rozdzialu}} {{LinkPatrz|nie_pomijaj_tego_rozdzialu}}, na taką samą wartość jak poprzednio.
; Inne rozdziały{{dk}}
Dla rozdziałów innych ta wartość przyjmuje postać {{Code|false}}.
; Rozdziały jednak nie pomijane{{dk}}
Dla rozdziałów, które nie są pomijane, wtedy zmienna: {{Code|nie_pomijaj_tego_rozdzialu}} {{LinkPatrz|nie_pomijaj_tego_rozdzialu}}, przyjmuje wartość {{Code|true}}, w takim przypadku wchodzimy do funkcji: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstuZgodnieZJegoSzablonowymiElementami|p=Szablonowe}}}}, wtedy dla linków szablonowych sprawdzamy, czy to są linki określone tablicami: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy}}, {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}} lub ewentualnie funkcją: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}.
Innym sposobem sprawdzania, czy to jest szablon linkowy jest tablica: {{Code|{{sr|#p.szablony_kompletowania_stron_woluminu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_kompletowania_stron_woluminu}}, lub {{Code|{{sr|#p.szablony_licencji|p=StroncowyParser/obiekty}}}} {{LinkPatrz|p.szablony_licencji}}.
Jeżeli to jest szablon linków, wtedy jest zwracana wartość: {{Code|return true,obiekt,kod}}, w przeciwnym wypadku: {{Code|return false,obiekt,kod}}.
Innym sposobem liczenia, czy to jest link, to wtedy może być to link normalny: {{Code|LINKW}}, który można sprawdzić funkcją: {{Code|{{sr|#p["CzyLinkWewnętrzny"]|p=Specjalne}}}}, wtedy jest zwracane {{Code|return true,obiekt,kod}}.
Link też może być zewnętrzny, wtedy to jest: {{Code|LINKZ}}, wtedy funkcja zwraca wartość: {{Code|return true,obiekt,kod}}.
; Kiedy analizujemy artykuły rozdziału{{dk}}
Następnie dla linii: {{Code|linia_rozwazana}} {{LinkPatrz|linia_rozwazana}}, co na podstawie tego liczymy, czy daną linię nie uwzględnić, w obliczeniach według schematu:
<syntaxhighlight lang="lua">
local czy_linia_uwzgledniana=mw.ustring.match(linia_rozwazana,"^%s*%-%-+(.*)%-%-+%s*$");
local czy_linia=((not czy_linia_uwzgledniana)and(mw.ustring.match(linia_rozwazana,"^%s*[%-%+%=%~]+.*$")
or ((#przedrostek_listy==0)and((mw.ustring.match(linia_rozwazana,"!"))and(mw.ustring.match(linia_rozwazana,"[^!]%s*$"))))
or mw.ustring.match(linia_rozwazana,"^%s*<")) or nil);
</syntaxhighlight>
Co następnie jest ustawiana {{Code|nowa_linia}} {{LinkPatrz|nowa_linia}} na wartość {{Code|false}}.
; Warunek analizowania artykułów rozdziałów{{dk}}
W obliczeniach raz uwzględniamy funkcję: {{LinkŚródtytuł|AnalizaLiniiObiekty}}, w ostatniej omawianej pętli, schematycznie:
<syntaxhighlight lang="lua">
if(not czy_linia)then AnalizaLiniiObiekty(linia_rozwazana);end;
</syntaxhighlight>
===== Dalsza część funkcji {{nobold|{{LinkPatrz|opis funkcji-ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}}} =====
Bierzemy zakodowany tekst: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu-IterTekst}}, i po nim iterator: {{Code|iterator}} {{LinkPatrz|iterator-IterTekst}}, wtedy iterujemy po parametrach:
<syntaxhighlight lang="lua">
local parsuj_rozdzialami=nil; ---- ta zmienna służy na wypadek, gdy by nie była żadnych rozwazanych rozdziałów;
for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do
---- za każdym razem jest uruchamiana funkcja: AnalizaRozdzialu, przy rozważanym rozdziale;
AnalizaRozdzialu(rozdzial_tab[1],rozdzial_tab[2],text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany);
---- oznacz zmienną: parsuj_rozdzialami, wartością; true, a póżniej jąnie inicjuj;
if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end
end;
</syntaxhighlight>
Parametry zwracane przez iterator: {{Code|iterator}} {{LinkPatrz|iterator-IterTekst}}:
{{OpisParametrów
| 1 = {{Code|rozdzial_tab}} {{Code|{{=}}}} {{Code|<nowiki>{ [1] = rozdzial, [2] = linia_rozdzialu, }</nowiki>}} | _1 = tabela składająca się z dwóch elementów:
| 2 = Pod elementy tabeli: | nagłówek2 = tak
| 3 = {{Code|rozdzial}} | _3 = Jak w: {{LinkPatrz|rozdzial}}.
| 4 = {{Code|linia_rozdzialu}} | _4 = Jak w: {{LinkPatrz|linia_rozdzialu}}.
| 5 = Inne parametry: | nagłówek5 = tak
| 6 = {{Code|text}} | _6 = Jak w: {{LinkPatrz|text}}.
| 7 = {{Code|poziom_rozdzialu}} | _7 =Jak w: {{LinkPatrz|poziom_rozdzialu}}.
| 8 = {{Code|poczatek_rozdzialu}} | _8 = Jak w: {{LinkPatrz|poczatek_rozdzialu}}.
| 9 = {{Code|numeracja}} | _9 = Jak w: {{LinkPatrz|numeracja}}.
| 10 = {{Code|czy_rozdzial_centrowany}} | _10 = Jak w: {{LinkPatrz|czy_rozdzial_centrowany}}.
}}
Gdy nie napotkano żadnego rozważanego rozdziału, wtedy: {{Code|parsuj_rozdzialami}}, przyjmuje wartość {{Code|nil}}, w takim razie uruchamiana jest funkcja:
<syntaxhighlight lang="lua">
if(not parsuj_rozdzialami)then
AnalizaRozdzialu("Spis treści",nil,tekst_rozwiniety_calego_artykulu,nil,nil,nil,nil);
end;
</syntaxhighlight>
Funkcja zwraca parametry inaczej, gdy artykuł, do którego należy książka jest korzystany, a inaczej, jeśli nie. W takim razie możemy zwracać na dwa sposoby:
<syntaxhighlight lang="lua">
if(czy_artykul_korzystany)then
return tabela_artykulow,tabela_licencji_spisu_tresci,przekierowanie_spisu_tresci;
else
return tabela_artykulow,nil,przekierowanie_spisu_tresci;
end;
</syntaxhighlight>
Przy artykułach korzystanych, co jest określone zmienną: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, tabelę: {{Code|tabela_licencji_spisu_tresci}} {{LinkPatrz|tabela_licencji_spisu_tresci}}, przy jego spisach treści w książkach, do której należy ten artykuł, zwracana jest jako wartość przeważnie jako nierówna {{Code|nil}}, a dla artykułów z innych książkach, ta wartość już jest taka, tzn. przyjmuje wartość {{Code|nil}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
8n17kot8wzerbz24yvpu7afrtka9zf3
558334
558333
2026-10-02T18:42:39Z
Persino
2851
/* Opis pobieżny funkcji */
558334
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SpisTreści}}|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 lokalne ==
=== {{Śródtytuł|Ile}}{{Code|Ile}} ===
Funkcja liczy liczbę elementów we wszystkich podtabelach tabeli {{Code|tabela_rozdzial_artykulow2}} {{Patrz|tabela_rozdzial_artykulow2}}, licząc od drugiej tabeli, po pierwszej tabeli mieści się podtabela z informacjami o rozdziale, w której znajdują się artykuły określone dalszymi podtabelami.
Tymi podtabelami są od {{Code|2}} do {{Code|7}}, czyli {{Code|6}} tabelek, w których są artykuły, które zaliczamy do kategorii wliczane, tzn. one nie znajdują się w takich rozdziałach przetłumaczonych na małą literę, ale przedtem na nią była działana funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, usuwając z nich odstępy na końcach, w tym dolne myślniki, a wewnątrz zamieniając kolejne dolne myślniki i spacje na jedną spacją.
Metafunkcja, w metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, w: {{Code|{{ld2|Parametry}}}}, aby porównać to z tablicą {{Code|{{sr|#p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu}}, by zaliczyć je do tego typu:
<syntaxhighlight lang="lua">
p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu={
["licencja"]=true,
["inne"]=true,
["bibliografia"]=true,
["zobacz też"]=true,
["linki zewnętrzne"]=true,
};
</syntaxhighlight>
Twew rozdziały należą do kategorii rozdziałów, w których artykuły są pomijane przez: '''{{ld|StronicowyParser|Stronicowy parser}}''', ale jeżeli one należą do rozdziału spisu treści lub rzeczy, to tam jednak nie są takie, inaczej jest poza.
A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}.
A ta powyższa tabela mieści się: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a jego opis w: {{Code|{{sr|#p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu|p=StronicowyParser/obiekty}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow2)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|numer_rodzaju_artykulu}} | _1 = Numer podtabeli elementtu, do którego wsadzamy element.
| 2 = {{Code|tabela_rozdzial_artykulow2}} | _2 = Tabela wraz podtabelami, od {{Code|1}} do {{Code|13}}, ale liczenie jest od {{Code|2}}.
}}
=== {{Śródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}{{Code|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}} ===
==== Opis pobieżny funkcji ====
Funkcja do wstawiania elementów z ogólnej tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}, za pomocą funkcji wstawianej jako parametr: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{Patrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, do odpowiedniej pozycji artykularnej od: {{Code|2}} do {{Code|13}}, a pozycja {{Code|1}}, to pozycja rozdziałowa, ona jest określana przez zmienną: {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{Patrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, a pozycja, którą wsadzamy to: {{Code|tab_stare}} {{Patrz|tab_stare}}.
Funkcja zwraca pozycje:
<syntaxhighlight lang="lua">
return numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych;
</syntaxhighlight>
Opis tych parametrów funkcji:
{{OpisParametrów
| 1 = {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} | _1 = Jest to wartość zwrócona przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}}, w odróżnieniu od: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, jest mniejszy o jeden, czyli wtedy to była a poziomie przypisywania wartość {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}},
| 2 = {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} | _2 = Pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}.
| 3 = {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} | _3 = Tablica do sprawdzania, czy artykuł z nagłówkiem, ma powtórzenie tego bez nagłówka, czyli dla tego bez tego jest inna numeracja niż z nagłówkiem, a gdy niema tego bez, to wtedy dzięki tej funkcji numeracja tak się zachowuje, jak tam by był ten element, co prawda jest tam dodawany, ale jako z informacją taką, że bz numeru ustalanym przez funkcję: {{LinkŚródtytuł|Ile}}, A przy okazji, aby tego elementu nie dodawać ponownie, to w nim jest ustalana druga zmienna na {{Code|1}}, a wcześniej była na {{Code|0}}, i dlatego ona była wtedy dodawana, a później już tak nie jest.
}}
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY,tabela_rozdzial_artykulow2,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow--[[]])...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{Patrz|self}} | _1 = Zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}}.
| 2 = {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} | _2 = Opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow2,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare);
</syntaxhighlight>
Funkcja jest wywoływana w:
<syntaxhighlight lang="lua">
numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych=WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,WsadzanieParametryDoTablicy(linia,czy_linia_uwzgledniana),tabela_rozdzial_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow);
</syntaxhighlight>
Gdzie funkcja: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, to jest: {{Code|WsadzanieParametryDoTablicy}} {{LinkŚródtytuł|WsadzanieParametryDoTablicy}}.
| 3 = {{Code|tabela_rozdzial_artykulow2}} | _3 = Ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow2}}.
| 4 = {{Code|tablica_artykulow_zebranych}} | _4 = Diała jak w: {{LinkPatrz|tablica_artykulow_zebranych}}.
| 5 = {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} | _5 = Jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}}.
| 6 = {{Code|szablon}} {{Patrz|szablon}} | _6 = Jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu.
| 7 = {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - | _7 = Kolejno to jest: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''' i '''nazwa książki'''.
| 8 = {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} | _8 = Jest to nazwa artykułu danego spisu treści.
| 9 = {{Code|pelna_nazwa_spisu_tresci}} {{Patrz|pelna_nazwa_spisu_tresci}} | _9 = Uchwyt do bazy kodowania tekstu strony spisu treści.
| 10 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} | _10 = Nazwa strony szablonowa, jak są wywoływane w postaci szablonowej, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}}.
| 11 = {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} | _11 = Uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 12 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _12 = Tablica bazy zapisana w postaci osobnej tablicy, a nie jej w wewnętrznej bazie, nie jak to było w postaci zmiennej {{LinkPatrz|nazwa_modulu}}, używana zamiast: {{LinkPatrz|nazwa_modulu}}.
| 13 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _13 = Tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}.
| 14 = {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} | _14 = Obiekt i kod, czyli: zmienne charakteryzujące zmienną wnętrza: {{Code|szablon}} {{LinkPatrz|szablon}}.
| 15 = {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} | _15 = Tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy.
| 16 = {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} | _16 = Tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię.
| 17 = {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} | _17 = Numeracja rozdziału, z jakim rozpoczyna się rozdział.
| 18 = {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} | _18 = Gdy link znajduje się w rozdziale dodatnim.
| 19 = {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} | _19 = Cała linia z artykułem lub artykułami, tą linią równie dobrze może być rozdział, tu chodzi o rozdział dodatni.
}}
==== Opis pobieżny funkcji {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} ====
Przedstawiamy tutaj funkcję: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, która jest opisana w punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Definicja funkcji w nagłówku:
<syntaxhighlight lang="lua">
__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow2,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare);
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tabela_rozdzial_artykulow2}} | _1 = Jak w: {{LinkPatrz|tabela_rozdzial_artykulow2}},
| 2 = {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} | _2 = Jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}},
| 3 = {{Code|tab_stare}} | _3 = Jak w: {{LinkPatrz|tab_stare}}.
}}
Ta funkcja została opisana już wcześniej.
==== Szczegółowy opis funkcji głównej ====
Uruchamiamy funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, która jest zdefiniowana w module: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}}. Wywołujemy tę funkcję:
<syntaxhighlight lang="lua">
local tab_pozycja_elementow_w_spisie_rzeczy,numer_rodzaju_artykulu,id,parametry_szablonu,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nil,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
</syntaxhighlight>
Pierwszy elementem: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest to zmienna tablicowa, która opisuje parametry artykularno-linkowe parametry, drugi: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, do której kategorii należy dany artykuł w linku, a trzeci parametr, to: {{Code|id}} {{Patrz|id}}, to zbierane są parametry linkowe z szablonu {{s|SpisTreści}}, czwarty to: {{Code|parametry_szablonu}} {{Patrz|parametry_szablonu}}, w przypadku szablonów inteligentnych linków, to są parametry wywołań tych szablonów, ostatni parametr to: {{Code|kom}} {{Patrz|kom}}, przedstawia on, jeśli {{Code|false}}, to artykuł zakwalifikowany został poprawnie do rozważań, a {{Code|true}} już nie.
To {{LinkPatrz|parametry szablonu}}, to jest tablica z trzech elementów, tzn.:
<syntaxhighlight lang="lua">
local parametry szablonu={tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,};
</syntaxhighlight>
Elementy tablicy:
{{OpisParametrów
| 1 = {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} | _1 = Tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych.
| 2 = {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} | _2 = To jest nazwa uzyskanego szablonu linków inteligentnych lub nie.
| 3 = {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} | _3 = Tabela modyfikatorów rozkładanego szablonu.
}}
Jeśli parametr: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, istnieje, to tworzona jest z niego taka sama wersja lub przy nieistnnieniu parametru {{LinkPatrz|wliczaj_artykuly_tego_rozdzialu}}, do niego jest dodawana jest liczba {{Code|6}}. W ten sposób możemy zbierać artykuły książki i inne,ktore należą do pewnych rozdziałów i które nie należą.
===== {{Śródtytuł|ParametrPierwszy}}{{Code|ParametrPierwszy}} =====
Funkcja zbierające dane z {{Code|tab_artykul}} {{Patrz|tab_artykul}}, którego to jest czteroelementowa tablica, dotycząca danego artykułu. Drugim parametrem: {{Code|czy_niedozwolone}} {{Patrz|czy_niedozwolone}}, jest zmienna logiczna mówiąca, czy wskazać w nazwie artykułu, czy są dozwolone znaki, jest to sprawdzenie według wyrażenia regularnego: {{Code|<nowiki>[|<>{}%[%]]</nowiki>}} {{Patrz|wzor_znaki_niedozwolone}} na podstawie funkcji {{LzLua|mw.ustring.match}}, czyli: {{Code|znaki_niedozwolone}} {{Patrz|znaki_niedozwolone}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
ParametrPierwszy(tab_artykul,czy_niedozwolone)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tab_artykul}} | _1 = Jak w: {{LinkPatrz|tab_artykul}}.
| 2 = {{Code|czy_niedozwolone}} | _2 = Jak w: {{LinkPatrz|czy_niedozwolone}}.
}}
Gdzie: {{Code|tab_artykul}} {{LinkPatrz|tab_artykul}}, który jest pierwszym parametrem przyjmowanym przez funkcję, jest zdefiniowany jako czteroelementowa tablica, którą przypisujemy do czterem osobnych parametrów:
<syntaxhighlight lang="lua">
local artykul=tab_artykul[1];
local parametry=tab_artykul[2];
local naglowek=tab_artykul[3];
local tablica_przekierowania=tab_artykul[4];
</syntaxhighlight>
Jeżeli, któreś z parametrów z: {{LinkPatrz|tab_artykul}}, tzn. element jego {{Code|2}}-gi i {{Code|3}}-ci, istnieje, to układana jest trzyelementowa tablica z elementów od {{Code|1}} do {{Code|3}}, z dodatkowym elementem: {{Code|<nowiki>["LINK"] = true</nowiki>}}, a element czwarty to jest: {{Code|tablica_przekierowania}} {{Patrz|tablica_przekierowania}}, a jeżeli te dwa elementy, nie licząc czwartego, wcale nie istnieją, wtedy jest tworzony łańcuch znakowy z tego pierwszego elementu. Tak tworzymy, nową wersję tablicy: {{Code|tab_artykul}} {{Patrz|tab_artykul-nowa wersja}}, lub łańcuch znakowy, w postaci:
<syntaxhighlight lang="lua">
tab_artykul=((artykul)and(parametry or naglowek))and{[1]=artykul,[2]=parametry,[3]=naglowek,["LINK"]=true,} or artykul;
</syntaxhighlight>
Funkcja zwraca trzy parametry, tzn. parametry: {{LinkPatrz|tab_artykul-nowa wersja}}, {{LinkPatrz|znaki_niedozwolone}} i tablicę przekierowania: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}:
<syntaxhighlight lang="lua">
return tab_artykul,znaki_niedozwolone,tablica_przekierowania;
</syntaxhighlight>
===== Rozwijanie nazwy linku artykułu =====
Do rozwijania nazwy linku służy funkcja: {{Code|{{sr|#p.DekodowanieTekstuNazwLinku|p=StronicowyParser/Pomocne}}}} {{Patrz|p.DekodowanieTekstuNazwLinku}}, pod względem szablonowym i nie tylko.
Funkcja rozwija tą nazwę tym: {{LzLua|frame:preprocess}}, jedynie nie rozwija szablonów stronicowego parsera, podane podkategoriach w kategorii: {{Code|{{lk2|Szablony stronicowe}}}}, za pomocą odpowiednich metod, bo to by wywołało nieskończoną pętle, i dlatego takie szablony są zamieniane tylko na wywołania symboliczne.
==== Dalszy opis funkcji nadrzędnej przy istnieniu parametrów linkowych normalnych, czy szablonowych (linków inteligentnych) ====
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|{{=}}}} {{Code|1}} =====
Tworzony jest numerek: {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{Patrz|numer_rodzaju_artykulu_w_podreczniku}}, który w stosunku do: {{LinkPatrz|numer_rodzaju_artykulu}}, jest większy o jeden, a schemat tej operacji:
<syntaxhighlight lang="lua">
local numer_rodzaju_artykulu_w_podreczniku=numer_rodzaju_artykulu+1;
</syntaxhighlight>
====== Tworzenie tablicy: {{nobold|{{Code|tablica_artykulow_zebranych}}}} ======
Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną wstępnie w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}.
; Tablica{{dk}} {{nobold|{{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}}}}, nie jest tablicą{{dk}}
Gdy element pierwszy: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, nie jest tablicą, wtedy jedynie liczymy, czy ona ma znaki niedozwolone: {{Code|wzor_znaki_niedozwolone}} {{LinkPatrz|wzor_znaki_niedozwolone}}, a póżniej wiedząc ten element, który jest aktualną nazwą artykułu kiążki, tworzymy tabelę {{Patrz|tablica_artykulow_zebranych-imicjacja}}:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,};
</syntaxhighlight>
; Gdy element{{dk}} {{nobold|{{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}}}}, jest łańcuchem znaków{{dk}}
Wpierw liczone są parametry z wywołania, z opcją, czy ma liczyć, czy nazwa artykułu ma znaki niedozwolone, z funkcji: {{LinkŚródtytuł|ParametrPierwszy}}:
<syntaxhighlight lang="lua">
tab_pozycja_elementow_w_spisie_rzeczy[1],znaki_niedozwolone,tablica_przekierowania=ParametrPierwszy(tab_pozycja_elementow_w_spisie_rzeczy[1],true);
</syntaxhighlight>
; Inna książka - atrybut, tzn. czy artykuł wychodzi poza daną książkę, lub jego przekierowanie w niej kieruje na stronę poza nią{{dk}}
Dalej sprawdzane jest, czy książka przyjmuje atrybut, tzn.: '''czy inna książka''', wtedy liczymy to z kodu z tablicy przekierowania: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, jeżeli jej wartość istnieje, tzn.: {{Code|czy_inna_ksiazka}} {{Patrz|czy_inna_ksiazka}}:
<syntaxhighlight lang="lua">
local czy_inna_ksiazka=tablica_przekierowania and tablica_przekierowania[1] and tablica_przekierowania[1][5] or nil;
</syntaxhighlight>
; Tablica przekierowania artykułu względem bieżącej książki{{dk}}
Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, który przedstawia, czy to jest artykuł bieżącej książki, którego przekierowanie kieruje, wtedy ten parametr ma wartość {{Code|true}}, a gdy adres przekierowania wskazuje na inną książkę, wtedy {{Code|false}}. Jeśli ten parametr ma wartość fałszywą, wtedy jest sprawdzane, czy jest tablicą w: {{Code|czy_tablica}} {{Patrz|czy_tablica}}, według:
<syntaxhighlight lang="lua">
czy_tablica=parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1]);
</syntaxhighlight>
Lub w przeciwnym wypadku liczymy parametry artykularne z tablicy przekierowania: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek przekierowania, w tej tablicy, istnieje, wtedy parametr: {{Code|czy_tablica}} {{LinkPatrz|czy_tablica}}, przyjmuje wartość {{Code|true}}, w przeciwnym wypadku wartość fałszywą.
Gdy ten element nie jest tablicą, to tworzona jest nazwa pełna artykułu: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}} i umieszczana w tablicy: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z podobną tablicą początkową jak w poprzednim przypadku jego tworzenia, czyli jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}.
; Tablica zebranych artykułów i porównywanie artykułu z nagłówkiem, czy istnieje wcześniejszy artykuł bez niego{{dk}}
Gdy element jest jednak tablicą, też jest liczona pełna nazwa artykułu (gdy nazwa artykułu przekierowania istnieje, wtedy ona jest liczona z: {{Code|tablica_przekierowania[2]}}, w przeciwnym wypadku, jeśli element: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}}, jest tablicą, wtedy liczymy ją z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1][1]}}, w innym wypadku z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}}), a z niej liczymy tablicę: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}, w przypadku pierwszego artykułu nienagłówkowego.
A w przypadku pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie, artykuł poprzedni nie istnieje, a więc tego tam nie ma tam w takim przypadku.
Gdy funkcja napotkała artykuł o takim samym stronie, co poprzednio, to do wartości początkowej, bez definiowania jeszcze raz tej samej tablicy, jest ustawiane odpowiednio:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych[3]=true;
</syntaxhighlight>
Co informuje, że artykuł jest ten sam, tylko inny nagłówek niż poprzedni, a poprzedni pierwszy jest bez niego.
====== Rozwijanie nazwy linku ======
Kompletowany jest drugi element tablicy: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkPatrz|p.DekodowanieTekstuNazwLinku}}. Dalej z tej nazwy są usuwane znaki specjalne według funkcji: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, z modułu: {{Code|{{ld2|Specjalne}}}}. Następnie działamy funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, które końcowe spacje usuwa, a wewnętrz powtarzające zamienia kolejne na jedną spację.
====== Dodawanie do tablicy problemów, jeśli nastąpił problem ze znakami niedozwolonymi ======
A między czasie, gdy mamy niedozwolone znaki: {{Code|znaki_niedozwolone}} {{LinkPatrz|znaki_niedozwolone}}, za pomocą funkcji pytającej sprawdzamy, czy element inny zgłoszeniowy został dodany do tablicy problemów: {{Code|{{sr|#p.CzyJestTakiProblemowyElement|p=StronicowyParser/Problemy}}}}, aż w końcu dodajemy ten problem, jeśli go nie ma przy pomocy funkcji: {{Code|{{sr|#p.UstawTakiProblemowyElement|p=StronicowyParser/Problemy}}}}.
====== {{Śródtytuł|inicjacja_i_kompletowanie_zmiennych}}Ustalanie nazwy jednostki, kompletowanie linii artykułów i inicjowanie pozycji, w tabeli zebranych elementów, w tabeli zebranych elementów ======
Ustalamy nazwę jednostki z funkcji: {{Code|{{sr|#p.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem|p=StronicowyParser/Potrzebne}}}}, i inicjujemy tą wartością, czyli: {{Code|nazwa jednostki}} {{Patrz|nazwa jednostki}}, wartość starą: {{Code|stara_nazwa_jednostki}} {{Patrz|stara_nazwa_jednostki}}, według:
<syntaxhighlight lang="lua">
---- Piszanie pełnej nazwy jednostki bez parametrów i nagłówka;
local nazwa_jednostki=stronicowyparser_potrzebne_modul.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(tab_pozycja_elementow_w_spisie_rzeczy[1],false);
---- Inicjowanie starej wartości tą policzoną;
local stara_nazwa_jednostki=nazwa_jednostki;
</syntaxhighlight>
Dalej {{Śródtekst|uchwyt=tabela_rozdzial_artykulow2|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}}}, według:
<syntaxhighlight lang="lua">
if(not tabela_rozdzial_artykulow2[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow2[numer_rodzaju_artykulu_w_podreczniku]={};end;
</syntaxhighlight>
Co {{Śródtekst|uchwyt=linia_artykokow|tekst=dalej linię artykułów {{Code|linia_artykokow}} {{LinkPatrz|linia_artykokow}}, kompletujemy, funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, z modułu: {{Code|{{ld2|Szablonowe}}}}, znając tablicę: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}}}, według:
<syntaxhighlight lang="lua">
linia_artykokow=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_artykokow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
</syntaxhighlight>
====== Uwzględnianie niepodanego elementu nienagłówkowego w tablicy zebranych parametrów ======
Gdy tablica przekierowania: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, istnieje, wtedy sprawdzamy, czy zmienna logiczna: {{Code|czy_tablica}} {{LinkPatrz|czy_tablica}}, jest prawdą i czy: {{Code|stara_nazwa_jednostki}} {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej: {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie artykułu przekierowania.
Inicjujemy nową zmienną: {{Code|przekierowanie}} {{LinkPatrz|przekierowanie}}, z artykułu, parametrów i nagłówka, ale wpierw sprawdzamy, czy dwa ostatnie istnieją, według:
<syntaxhighlight lang="lua">
przekierowanie=przekierowanie and ((tablica_przekierowania[3] or tablica_przekierowania[4]) and {przekierowanie, tablica_przekierowania[3], tablica_przekierowania[4],["LINK"]=true,}or przekierowanie) or nil;
</syntaxhighlight>
Tworzony jest nowy element: {{Code|nazwa jednostki}} {{Patrz|nazwajednostki-nowy}}, z: {{LinkPatrz|nazwa jednostki}}, parametrów i nagłówka, według rysu:
<syntaxhighlight lang="lua">
nazwa_jednostki={nazwa_jednostki, tab_pozycja_elementow_w_spisie_rzeczy[1][2], tab_pozycja_elementow_w_spisie_rzeczy[1][3],["LINK"]=true,};
</syntaxhighlight>
Jeżeli parametr drugi: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}.
Wsadzamy element: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, do zbioru: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, przy pomocy funkcji: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Następnie jej drugiemu elementowi: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, do tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}, na pozycji: {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, według funkcji: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej.
Jeżeli tablica przekierowania: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, jednak nie istnieje, wtedy tak samo sprawdzamy, co poprzednio potem, ale po spełnieniu tych warunków robimy inną tablicą: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, i tę tablicę robimy podobnie, i inicjujemy te same elementy też podobnie.
====== Uwzględnianie pozycji podanej w tablicy zebranych elementów ======
Tworzymy zmienną: {{Code|ile_dodac_do_poziomu_artykulu}} {{Patrz|ile_dodac_do_poziomu_artykulu}}, z drugiego elementu tablicy: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, następnię tworzymy inną zmienną: {{Code|ile_dodac_do_poziomu_artykulu_lub_nil}} {{Patrz|ile_dodac_do_poziomu_artykulu_lub_nil}}, co uwidaczniamy wzorem:
<syntaxhighlight lang="lua">
local ile_dodac_do_poziomu_artykulu_lub_nil=((ile_dodac_do_poziomu_artykulu)and(ile_dodac_do_poziomu_artykulu>0))and ile_dodac_do_poziomu_artykulu or nil;
</syntaxhighlight>
Tą zmienną wykorzystamy do sformułowania: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}.
{{Śródtekst|tekst=Tworzymy zmienną: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}, na pozycji: {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, przy pomocy funkcji: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.|uchwyt=__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|>{{=}}}} {{Code|2}} =====
Będziemy tutaj operowali, gdy parametr drugi zwracany z funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, wskazuje na nie artykuł książki, zatem ten rozdział jest właśnie dla tego przypadku.
====== Odkodowanie i przygotowanie zmiennych artykułu linku, jej nazwy, także kodu języka i projektu ======
* Gdy pierwszy element tablicy: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}.
* Dla drugiego takiego elementu z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, co jest nazwą linku, wtedy gdy nazwa linku normalnego, czy szablonowego, jest zakodowana, to ją odkodujemy, którego każdy jego element kod odkodujemy według funkcji: {{LinkPatrz|p.DekodowanieTekstuNazwLinku}}, następnie z niej usuwamy znaki specjalne według: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, następnie usuwamy końcowe spacje i wewnątrz kolejne spacje zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
* Dla trzeciego i czwartego takiego elementu z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, te elementy odkodujemy, następnie z nich usuwamy końcowe spacje, a wewnątrz kolejne spacje zastępujemy jedną, według tej samej funkcji, co powyżej.
====== Przygotowanie zmiennych, inicjowanie tablicy: {{Code|tab_stare}}, i wsadzanie jej do tablicy ogólnej: {{Code|tabela_rozdzial_artykulow2}} ======
Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow2}}, także co {{PobierzŚródtekst|linia_artykokow}}, co wszystko robimy podobnie jak w rozdziale: {{LinkŚródtytuł|inicjacja_i_kompletowanie_zmiennych}}.
{{PobierzŚródtekst|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
==== Definicja tablicy: {{Code|tab_stare}}, inicjowanie jej elementów w różnych przypadkach ====
Przedstawiamy tutaj ogólną definicję zmiennej: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. Ta wersja jest jedynie sformułowana dla artykułów w rozdziale, a nie dla rozdziałów, bo w tablicy, do której jest ona wsadzana przyjmuje ona możliwy numerek od "2" do "13", a nie również "1". Jej wersja ogólna:
<syntaxhighlight lang="lua">
local tab_stare=
{
---- Początek elementów alternatywnych
{
---- Początek wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[1], -- artykuł bez pełnej nazwy ksiązki, bez parametrów i nagłówka, bo ich nie posiadałna samym początku;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- artykuł bez pełnej nazwy książki, bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[2], -- nazwa linku artykułu normalnego, czy szablonowego;
---- Początek elementów alternatywnych dla przekierowania
---- Poczatek parametrów przekierowania
{
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
tablica_przekierowania[3], -- parametry przekierowania artykułu;
tablica_przekierowania[4], -- nagłówek przekierowania artykułu;
["LINK"]=true, -- zmienna świadcząca, że nazwa przekierowania artykułu jest z parametrami i nagłówkiem;
},
---- lub
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
---- Koniec parametrów przekierowania
tablica_przekierowania[1], -- tablica o definicji: {
nazwa_przestrzeni_strony_przekierowania, -- nazwa przestrzzeni nazw przekierowania artykułu;
nazwa_przestrzeni_ksiazki_strony_przekierowania, -- nazwa przestrzeni książki przekierowania artykułu;
nazwa_ksiazki_strony_przekierowania, -- nazwa książki orzekierowania artykułu;
true/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce;
true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie;
czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach;
};
---- lub
nil, -- dotycząca przekierowania artykułu, a tutaj strona nie ma przekierowania, więc: nil;
nil, -- dotycząca tablicy książki, na którą wskazuje przekierowanie, a tutaj nie ma tablicy, więc: nil;
---- Koniec elementów alternatywnych dla przekierowania
tab_pozycja_elementow_w_spisie_rzeczy[3], -- kod języka;
tab_pozycja_elementow_w_spisie_rzeczy[4], -- kod projektu;
tab_pozycja_elementow_w_spisie_rzeczy[5], -- adres artykułu bez przetworzenia w linku normalnym,czy szablonowym;
ile_dodac_do_poziomu_artykulu_lub_nil, -- parametr mający tylko wartości: 1, gdy do aktualnego poziomu musi być dodane jeden - ta wartość, tylko dotyczy artykułów należących do tej samej książki, lub: nil, gdy nic, czyli w pozostałych przypadkach;
tab_pozycja_elementow_w_spisie_rzeczy[6], -- "url", pozycja świadcząca, że to jest link zewnętrzny, a nil, gdy to jest normalny link;
},
---- lub
tab_pozycja_elementow_w_spisie_rzeczy[1], -- nazwa artykułu linku, która nie posiada, ani parametrów w sobie, a po nim nagłówka, lub bezpośrednio po nazwie;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- nazwa artykułu bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec elementów alternatywnych
{
#przedrostek_listy, -- poziom listy, w którym jest artykuł, dla artykułów w linii z listą, w innym wypadku dla artykułu znajdującego się w rozdziale dodatnim, czy ujemnym jest zero;
przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])", przeciwnie dla artykułów w rozdziale dodatnim ma wartość pustą;
tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu, gdy nie ma takiej numeracji, bo nie da się jej wydzielić, to ma wartość pustą;
w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym, wtedy "true", w przeciwnym wypadku: "false";
},
linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare";
true/false, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: false;
true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika, przeciwnie: false;
---- Początek elementów alternaatywnych
Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow2), -- który numer artykułu, w momencie wsadzenia do tabeli zbierania rozdziałów i w nich artykułów, nawet w rozdziale;
---- lub
nil, -- nil, wtedy gdy link jest tak sobie dodany, który nie należy do żadnego spisu, a po nim elementy jego z nagłówkiem natomiast należą;
---- Koniec elementów alternatywnych
};
</syntaxhighlight>
W powyższym: {{Tag|syntaxhighlight|parametry=lang="lua"}}, dla elementu: {{Code|<nowiki>---- lub</nowiki>}}, jest powiedziane, że są dostępne alternatywy, które są zawarte w tablicy, że wybieramy te, aby nie spowodować czysto podwójnej tablicy, aby każda tablica zawierały inne elementy, jak wiele, a nie jedną tablicę, jak i łańcuchy znaków, wartość nil, powoduje, że czy ma być taka tablica, ale nie podwójna, co to znaczy podowójna, tzn. tablica w sobie zawiera inną jedyną tablicę, a tak nie może być, a jak zawiera jedną tablicę, to musi posiadać inne nienilowe elementy.
== Funkcje tablicy transportu ==
=== {{Śródtytuł|p.AnalizaNapisuWprowadzeniaTekstu}}{{Code|p.AnalizaNapisuWprowadzeniaTekstu}} ===
Funkcja przyjmuje jako parametr nieskompletowaną i nieprzetworzony tekst napisu wprowadzenia tekstu. On kompletujei przekształca go w odpowiedni sposób,aby otrzymać czysty tekst tytułu rozdziału.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AnalizaNapisuWprowadzeniaTekstu(rozdzial,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|rozdzial}} | _1 = Ten tekst tytułu rozdziału, o którym mówimy.
| 2 = {{Code|pelna_nazwa_spisu_tresci}} | _2 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci}}
| 3 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _3 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _5 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
==== Obiekty typu {{nobold|{{Code|SZABLON}}}} ====
Funkcja korzysta z funkcji: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, funkcja ma zdefiniowaną pierwszą jej funkcję, która dla: {{Code|obiekt {{=}} "SZABLON"}}, używamy pierwsze dwie tabelę, te tabele:
Pierwsza {{Patrz|szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu}}, która służy do zamieniania szablonów na ich parametry, tutaj pierwsza, to jest tablica: {{Code|{{sr|#p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu}}:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu={
["MDL:RozszerzonyLink"]=1,
["Kompletność"]="",
["Kompletność krótka"]="",
["Kompletność junior"]="",
["Książka"]="",
};
</syntaxhighlight>
Druga: {{Code|{{sr|#p.szablony_dozwolone_w_nazwach_linkowych|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_dozwolone_w_nazwach_linkowych}}, też służy do tego samego.
Funkcja wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja {{Patrz|p.szablony_dozwolone_w_nazwach_linkowych}}:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_w_nazwach_linkowych={
["Korekta"] =2,
};
</syntaxhighlight>
===== Funkcje zawartości i dodatków, dla szablonów =====
One służą do zamieniania wywołań szablonowych na odpowiednie ich zawartości parametrów określone przez numery parametrów tych elementów w tch tabelach. Jeżeli przy którym wywolaniu przy wykorzystaniu kolejnych tych tabel przy użyciu funkcji: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, nastąpiło zamienienie, to funkcja pierwsza w: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, zakańcza się z tą wartością. A jeżeli nie to uruchamia się funkcj dodatków: {{Code|{{sr|#p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu|p=StronicowyParser/Rozdziały}}}}, a jeśli nastąpiło zastąpienie, to funkcja kompletowania się kończy z tą wartością.
===== Szablonowe linki =====
Dalej jeżeli tak się nie stało, to uruchamia się funkcja parametrów, w którym wywołanie szablonowe jest rozkładane na nazwę szablonu, modyfikatory i parametry. Dalej jest spradzanie , czy jest to link inteligentny według funkcji: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}, a gdy jest, to funkcja kończy swoje działania z nazwą tego linku lub jego adreesem wewnętrznym, a jeśli on nie jest tym, to sprawdza, czy są inne szablonowe linki, które podejrzewa się poprzez wywołanie funkcji: {{Code|{{sr|#p.NazwaInnegoSzablonowegoLinkowegoObiektu|p=StronicowyParser/Potrzebne}}}}, a jeżeli jest tym linkiem, to funkcja składania zwraca też jak poprzednio nazwę linku lub jego adres wewnętrzny, ewentualnie z dodatkiem. A gdy nie, to w innym przypadku sprawwdzane, czy to jest inny link wewnętrzny generowane przez szablony, która spradza funkcja tutaj: {{Code|{{sr|#p.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy|p=StronicowyParser/Potrzebne}}}}, a jeżeli szablon jest tym linkiem, to kunkcja składania zwraca jego nazwę linkową.
===== Szablony rozwijane przez {{lpg|JavaScript}} =====
A następnym krokiem jest sprawdzanie, czy nazwa szablonu jest jednych z elementów z tablicy: {{LinkPatrz|P.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu}}, która ma ten element, te szablony wymienione w tej tablicy są po to, aby służyły do rozwijania przez JavaScript, są to elementy wikikodu, które są pracochłonne ze względu na ich skomplikowany kod, czy wikikod, nawet {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, i dlatego ich się nie rozwija przez stronicowy parser: {{Code|{{ld2|StronicowyParser}}}}, te nazwy szablonów są określone tablicą: {{Code|{{sr|#p.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu}}:
<syntaxhighlight lang="lua">
p.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu={
["Cytuj"]=true,
["Cytuj stronę"]=true,
["Cytuj pismo"]=true,
["Cytuj odcinek"]=true,
["Cytuj książkę"]=true,
["Cytuj grę komputerową"]=true,
};
</syntaxhighlight>
I funkcja wtedy zwraca zkompletowany szablon bez rozwijania jego, pod warunkiemjeżeli jest tym szablonem o tej nazwę szablonu wywołującego.
===== Co jest zwracane w przypadku szablonów =====
Te powyżej elementy dla funkcji parametrów, w niej wartości są zwracane do niej, a jeżeli ona przyjmuje wartość nienilową, to do funkcji składania zwracana jest jego wartość, a przeciwnie jest zwracane pierwszy parametr szablonu do niej.
==== Obiekty typu: {{nobold|{{Code|NOWIKI}}}}, {{nobold|{{Code|PRE}}}} i {{nobold|{{Code|ŹRÓDŁO}}}} ====
A gdy dla elementów, jeśli nazwa obiektu jest: {{Code|obiekt {{=}} "NOWIKI"}}, {{Code|obiekt {{=}} "PRE"}}, lub: {{Code|obiekt {{=}} "ŹRÓDŁO"}}, znacznik jest rozkładany na czynniki pierwsze, a jeżeli nnie ma zawartości, to przez funkcję skłądania jest zwracana wartość pusta, a jeśli nie, to pewne znaki specjalne tagu {{Tag|nowiki}}, które mają w nim być zamienione na tekst, są zamieniane na kody '''HTML''', co po zamienieniu ta ona jest zwracana.
==== Obiekty typu: {{nobold|{{Code|MATH}}}}, {{nobold|{{Code|GALERIA}}}}, {{nobold|{{Code|MAPAOBRAZU}}}}, i {{nobold|{{Code|INNEPRE}}}} ====
A jeżeli wartość: {{Code|obiekt}}, jest nie równa: {{Code|MATH}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} lub {{Code|INNEPRE}}, wtedy z zawartości zmiennej: {{Code|szablon}}, są wykorzystanne funkcje z modułu: {{Code|{{ld2|Specjalne}}}}, które w tej podanej zmiennej są usuwane z komentarze z: {{Code|{{sr|#p["UsuńKomentarze"]|p=Specjalne}}}}, zamieniane są linki zewnętrzne i wewnętrzne na ich nazwy lub adresy według: {{Code|{{sr|#p["ZamieńLinkiZewnętrzneNaTekst"]|p=Specjalne}}}} i {{Code|{{sr|#p["ZamieńLinkiWewnętrzneNaTekst"]|p=Specjalne}}}}. Są usuwane rozwinięte znaczniki szablonów stylów używając do tego celu: {{Code|{{sr|#p["UsuńSzablonyStylów"]|p=Specjalne}}}}. Są też usuwane znaczniki na podstawie: {{Code|{{sr|#p["UsuńZnaczniki"]|p=Specjalne}}}}. Z tekstu szablonu są usuwane normalne kategorie nieszablonowe: {{Code|{{sr|#p"UsuńKategorie"]|p=Specjalne}}}}. Są też usuwane z zawartości wywołania plików i interwiki z: {{Code|{{sr|#p["UsuńWywołaniaPlików"]|p=Specjalne}}}} i {{Code|{{sr|#p["UsuńInterwiki"]|p=Specjalne}}}}. Dalej z tego obiektu są usuwane znaki specjalne z: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}.
A gdy mamy do czynienia z innymi znacznikami, to są zwracane jest zamiast niego wartość pusta do funkcji kompletowania.
Dane z funkcji kompletowane są zwracane, które z niej są usuwane znaki specjalne z całości tekstu rozdziału: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, i znaki białe z końców tekstu i powtarzarzające się te znaki kolejne z wewnętrz są zamieniane na jedną spację, to się dzieje według funkcji: {{Code|{{sr|#p["UsuńZbędneBiałeZnaki"]|p=Specjalne}}}}.
Cały taki wynik operacji robione w funkcji w nagłówku są zwracane do niej, to jest, co uzyskujemy nazwa rozdziału w postaci przetworzonej.
=== {{Śródtytuł|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}{{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} ===
Opisane tutaj są podfunkcje, z których korzysta ta funkcja, co one robią, do czego są wykorzystane.
==== Opis funkcji: {{nobold|{{Patrz|opis funkcji-ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}}} ====
Funkcja służy do zbierania nagłówków i z niej danych,tzn. linków normalnych i inteligentnych, a także są zbierane nagłówki z listy bez artykułów i do nich elementy podlisty z artykułami w postaci wywołań linkowych w niej. Tworzona jest specjalnie dla niegp tablica: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, która w odpowiedni po przekształaceniach wsadzana jest do tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} | _1 = Jak w: {{LinkPatrz|self}}.
| 2 = {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} | _2 = Kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}.
| 3 = {{Code|nazwa_spisu_tresci}} | _3 = Jak w: {{LinkPatrz|nazwa_spisu_tresci}}.
| 4 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _4 = Czy dany spis treści dla książki dla jej artykułu korzystanego, dla innej książki, wtedy to artykuł niekorzystany.
| 5 = {{Code|adres_ksiazki_glownego_spisu_tresci}} {{Patrz|adres_ksiazki_glownego_spisu_tresci}} | _5 = Jest to wewnętrzny adres książki głównego spisu treści,jest to taki adresm na który wskazuje przekierowanie innej książki.
| 6 = {{Code|__FUNKCJA_ZBIERANIA_DANYCH}} {{Patrz|__FUNKCJA_ZBIERANIA_DANYCH}} | _6 = Jest to funkcja, która zbiera informacje o aktualnym artykule, która jest spisem treści, w postaci nieprzetworzonej przez funkcje z modułu: {{Code|{{ld2|StronicowyParser/Rozdziały}}}}, opisanego w: {{Code|{{sr|Rozdziały|StronicowyParser - Rozdziały|p=StronicowyParser}}}}, ta funkcja kopiuje, np. tabele danych bazy modułu: {{Code|{{m|Szablonowe}}}}, tzn: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, i tabelę rozkładu elementów w niej na czynniki pierwsze, tzn.: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, co jest napisane w module: {{Code|{{ld2|StronicowyParser/ZbieranieDanychStron}}}}, a w dokumentacji: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}.
}}
==== Funkcje lokalne ====
Funkcja ma w sobie też definicję funkcji lokalnych zdefiniowanej w tej funkcji tutaj opisywanej.
===== {{Śródtytuł|FunkcjaIteratoraTekstuZakodowego}}{{Code|FunkcjaIteratoraTekstuZakodowego}} =====
Funkcja służy do pomijania tego, co nie jest linkiem wewnętrznym, czy zewnętrznym, czyli oznaczone kodami: {{Code|LINKW}} lub {{Code|LINKZ}}, czy nawet szablonem linkuinteligentnego, czy innego służacego do generowania spisu treści, do tego celu również używa funkcji: {{LinkŚródtytuł|CzySzablonLinkLubLicencja}}, oraz tego co nie jest w liście okreslonym wzorem {{Code|<nowiki>\n([#:*;]+)</nowiki>}} z mozliwym na początku tekstem, ale nie z kodami, w danej pozycji listy, lub co ewentualnie nie może być w możliwej liście, tzn.: {{Code|<nowiki>\n([#:*;]*)</nowiki>}}, ale wtedy musi tam być z tekstem, ale nie z kodami, na początku danej pozycji listy, nawet jeśli to nie jest lista, to też tak samo.
Jeżeli funkcja nie ma kodów linków wewnętrznych, czy to normalnych, czy szablonowych, to się zakańcza z wartością domyślną {{Code|nil}}, w przeciwnym wypadku do sprawdzenia używa do tego funkcji: {{LinkŚródtytuł|PomijajLinkiOrazLicencje}}, do sprawdzania, czy to jest link lub licencji, a jeżeli ta funkcja zwraca wartość {{Code|true}}, to cała funkcja zwraca {{Code|nil}}. Jeżeli oba te sposoby nie dały rezultatu {{Code|true}}, to wtedy funkcja zwraca wartość pustą, czyli okreslonym ciągiem znakowym o szwerokości zerowej.
Funkcja ma w sobie dwie definicje funkcji: {{LinkŚródtytuł|PomijajLinkiOrazLicencje}} i {{LinkŚródtytuł|CzySzablonLinkLubLicencja}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local FunkcjaIteratoraTekstuZakodowego=function(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}.
| 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}.
| 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod}}.
}}
====== {{Śródtytuł|PomijajLinkiOrazLicencje}}{{Code|PomijajLinkiOrazLicencje}} ======
Funkcja służy do sprawdzania, czy są odpowiednie szablony w kodzie.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function PomijajLinkiOrazLicencje(szablon)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}.
}}
Funkcja sprawdza, czy to są szablony spisu treści określone tablicą o kluczach, którymi są nazwy szablonów, z wartościami {{Code|true}}, czyli: {{Code|{{sr|#p.szablony_licencji|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_licencji}}:
<syntaxhighlight lang="lua">
p.szablony_licencji={
["Licencja"]=true,
};
</syntaxhighlight>
Tzn., czy to są szablony ozdobne woluminu, którego tablica: {{Code|{{sr|#p.szablony_ozdobne_stron_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_ozdobne_stron_woluminu}}, jest podobnie zbudowana, co poprzednia:
<syntaxhighlight lang="lua">
p.szablony_ozdobne_stron_woluminu={
["MDL:RozszerzonyLink"]=true,
};
</syntaxhighlight>
A jeżeli to są te szablony, to funkcja zwraca wartość {{Code|true}}.
Jeżeli jednak to nie są te szablony, należy użyć tablic, tak samo zbudowanej jak poprzednie, czyli: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.linki_szablony_elementy_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.linki_szablony_elementy_spisu_rzeczy={
["SpisTreści"]=true,
["Sekcja referencyjna"]=true,
["Sr"]=true,
["Link wewnętrzny"]=true,
["Ly"]=true,
["LinkOgólne"]=true,
["Lo"]=true,
};
</syntaxhighlight>
lub innej, inaczej zbudowanej niż poprzednie, ale ważne, że ma wartość niefałszywą, czyli taką tablicą: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}, jest:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
Jak są te nazwy szablonów określone ich kluczami tych tablic, to funkcja zwraca wartość {{Code|true}}. A jeżeli jednak nie to funkcją: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}, jest sprawdzane,czy to jest link inteligentny, nawet przekierowanie, jeżeli link taki jest, to funkcja zwraca wartość w tym wypadku {{Code|true}}. W przeciwnym wypadku, jak nie zwrócił tej wartości,bo taka nie jest nazwa szablonu, to funkcja nic nie zwraca.
====== {{Śródtytuł|CzySzablonLinkLubLicencja}}{{Code|CzySzablonLinkLubLicencja}} ======
Funkcja sprawdzająca za pomocą: {{LinkŚródtytuł|PomijajLinkiOrazLicencje}}, na podstawie parsowania tekstu szablonu funkcją: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, z parsowanym przechwytywanym typem obiektu: {{Code|obiekt}} {{LinkPatrz|obiekt}}, równym {{Code|SZABLON}}. A jeżeli funkcja ta wspomniana w tekście zwróci {{Code|true}}, to funkcja taki obiekt policzy.
Jeżeli liczba policzonych obiektów i znalezionych w wyniku parsowania jest większa od zera, to funkcja w nagłówku zwróci wartość {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local CzySzablonLinkLubLicencja=function(szablon)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}.
}}
===== {{Śródtytuł|iteratorTekstuNaglowka}}{{Code|iteratorTekstuNaglowka}} =====
Jest to funkcja iteratora, którego funkcja zwracana (iterator) zwraca parametry, dla rozdziałów dodatnich i pozycji list.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function iteratorTekstuNaglowka()
... ---- Kod przed zwróceniem iteratora;
return function()
... ---- Ciało funkcji iteratora;
end;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = Brak parametrów. | komórka1 = tak
}}
Iterator (funkcja zwracana przez funkcję w nagłówku) zwraca parametry w wyniku kolejnych wywołań:
<syntaxhighlight lang="lua">
return przedrostek_listy,tekstowy_przedrostek,wyzyskane_wywolanie_szablonu_spis_tresci,true/false;
</syntaxhighlight>
Parametry zwracane przez iterator:
{{OpisParametrów
| 1 = {{Code|przedrostek_listy}} | _1 = Przedrostek pozycji listy, dla rozdziałów dodatnich jest wartością pustą.
| 2 = {{Code|tekstowy_przedrostek}} | _2 = Numeracja pozycji w liście lub w nagłówku dodatnim.
| 3 = {{Code|wyzyskane_wywolanie_szablonu_spis_tresci}} | _3 = Jest to rozdział bez numeracji i przedrostka pozycji listy.
| 4 = {{Code|true/false}} | _4 = Wartość {{Code|true}} świadczy o rozdziale dodatnim, a w przypadku innym funkcja zwraca zawsze wartość tą {{Code|false}} jako ostatni element zwracany.
}}
Funkcja jest przykowana na rozdziałów dodatnich i pozycji list oraz innych linii, dla tego pierwszego funkcja zwraca:
<syntaxhighlight lang="lua">
return "","",wartosc,true;
</syntaxhighlight>
Gdzie {{Code|wartość}} jest to zawartość napisu wprowadzenia tekstu (rozdziału dodatniego).
W przypadku list oraz innych niż rozdziały dodatnie samo wyrażenie regularne {{lpg|Lua}} w {{lpr|Lua|Scribunto}} jest okreslone przez wyrażenie:
<syntaxhighlight lang="lua">
local re="([#:*;]*)[^%S\n]*([%d%.]*[^%S\n]*[^\n]+)";
</syntaxhighlight>
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu|p=StronicowyParser/Rozdziały}}}}, aby zamienić zawartość pozycji listy na rozdział bez numeracji i numerację, i dlatego ta funkcja zwraca te dwie wartości. Gdy funkcja jak nie znajdzie więcej linii (wyszukań), to zwraca wartość {{Code|nil}} mówiąca o zakończeniu iteracji iteratora, tzn. dane dla iteratora się zakończyły.
===== {{Śródtytuł|LiniaArtykulow}}{{Code|LiniaArtykulow}} =====
Funkcja dla szablonów kompletowania określonym tabelką: {{Code|{{sr|#p.szablony_kompletowania_stron_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_kompletowania_stron_woluminu}}, o definicji:
<syntaxhighlight lang="lua">
p.szablony_kompletowania_stron_woluminu={
["Kompletność"]=true,
["Kompletność krótka"]=true,
["Kompletność junior"]=true,
["Książka"]=true,
};
</syntaxhighlight>
Rozdziela linię na wiele obsługiwanych podlinii.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function LiniaArtykulow(linia)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|linia}} {{Patrz|linia}} | _1 = Pojedyncza przetworzona linia.
}}
====== {{Śródtytuł|SzablonAnalizujKompletnosc}}{{Code|SzablonAnalizujKompletnosc}} ======
Funkcja sprawdza, czy dane wywołania szablonu, ma swoją nazwę szablonu, która jest nazwą szablonu kompletowania.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function SzablonAnalizujKompletnosc(szablon)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}.
}}
====== Dalszy opis funkcji ======
Możliwe są dwie opcje, szablon kompletowania jest pierwszy, a drugi drugi, lub odwrotnie. Funkcja obsługuje te oba przypadki. Ona stawia przecinkiem dla obu wersji ustawień, jeśli potraktować układem link i szablon kompletowania, to wstawiany jest on pomiędzy tymi układami, aby rozdzielić linię, a w liście bez jego znaków pozycji, na elementy przy pomocy funkcji: {{LzLua|mw.text.split}}, z opcją jako drugi parametr, aby uwzględniał wyrażenia regularne {{Code|false}}. W tych rozdzielonych linią tą funkcją dzielącą ciąg znakowy na tabelę, kody '''HTML''' przecinka są zamieniane na zwykły przecinek.
Funkcja zwraca tabelę podzielonej linii na mniejsze podlinie, który można iterować funkcją: {{Code|pairs}} lub {{Code|ipairs}}.
===== {{Śródtytuł|WsadzanieParametryDoTablicy}}{{Code|WsadzanieParametryDoTablicy}} =====
Funkcja z parametrami, która uruchamia inną funkcję uruchamianą w: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}, która wstawia tabelę {{LinkPatrz|tab_stare}}, do ogólnej tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}, ewentualnie do {{Code|tabela_rozdzial_artykulow}} {{Patrz|tabela_rozdzial_artykulow}} na pozycję {{Code|numer_podtablicy_w_tablicy}} {{Patrz|numer_podtablicy_w_tablicy}}, a dokładniej na pozycję {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}} w funkcji {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function WsadzanieParametryDoTablicy(linia,czy_linia_uwzgledniana)
return function(tabela_rozdzial_artykulow2,numer_podtablicy_w_tablicy,tab_stare)
... ---- ciało funkcji.
end;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|linia}} | _1 = Jak w: {{LinkPatrz|linia}}.
| 2 = {{Code|czy_linia_uwzgledniana}} {{Patrz|czy_linia_uwzgledniana}} | _2 = Czy linię ma uwzględnić w powiększaniu poziomu o jeden dla artykułu.
}}
Parametry zwracanej funkcji przez tę w nagłówku:
{{OpisParametrów
| 1 = {{Code|tabela_rozdzial_artykulow2}} | _1 = Jak w: {{LinkPatrz|tabela_rozdzial_artykulow2}}.
| 2 = {{Code|numer_podtablicy_w_tablicy}} | _2 = Jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}.
| 3 = {{Code|tab_stare}} | _3 = Jak w: {{LinkPatrz|tab_stare}}.
}}
====== {{Śródtytuł|CzyZaliczac}}{{Code|CzyZaliczac}} ======
Funkcja sprawdza, czy z początkiem linii pozycji listy, bez przedrostka listy, jest z możliwym cudzysłowem, po którym następują liczby, litery, lub myślniki dolne, w takim pzypadku linia nie może składać się z nich, po ktorym występują znaki interpunkcyjne. Jeśli to sprawdzenie było pozytywne funkcja zwraca wartość logiczną odpwowiadającą {{Code|true}}, w przeciwnym wypadku jak {{Code|false}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function CzyZaliczac()...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = Brak parametrów funkcji. | komórka1 = tak
}}
Funkcja zwraca informację, czy daną linię traktować jako rozdział, chodzi tu o pozycje list, a w przypadku rozdziałów dodatnich wiadomo, że one są właśnie, że rozdziałami.
====== Dalszy opis funkcji ======
Funkcja sprawdza w funkcji zwracanej, czy rozważany rozdział jest centrowany danego artykułu, który siedzi pod rozdziałem lub w samym rozdziale, sprawdza, czy artykuł jest w rozdziale, sprawdza czy linia jest uwzględniana: {{Code|czy_linia_uwzgledniana}} {{LinkPatrz|czy_linia_uwzgledniana}}. Funkcja sprawdza, czy sekcja czy w: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, czy istnieje element: {{Code|tab_stare[2]}} {{Patrz|tab_stare[2]}}, i dalszy: {{Code|tab_stare[2][1]}} {{Patrz|tab_stare[2][1]}} - ten element jest to w: {{Code|tab_stare}}, taki: {{Code|#przedrostek_listy}} {{Patrz|#przedrostek_listy}}, a jeżeli to sprawdzenie przeszło pozytywnie, który dla tego jest poziomem listy, lub zerowego rozdziału lub rozdziału dodatniego.
Dla każdej linii zmienna: {{Code|nowa_linia}} {{Patrz|nowa_linia}}, przyjmuje wartość {{Code|false}}, wtedy dla przypadku przeciwnego, tzn. gdy mamy rozdział i uwzględniamy artykuły w jednej linii, którym jest rozdział będacy pozycją listy, w zmiennej: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, jest ustawiany element: {{Code|tab_stare[2][4]}} {{Patrz|tab_stare[2][4]}}, czyli zmienna: {{Code|w_rozdziale}} {{LinkPatrz|w_rozdziale}}, zaczyna przyjmować wartość {{Code|true}}. Wsadzany jest wtedy do tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}, na pozycję: {{Code|numer_podtablicy_w_tablicy}} {{LinkPatrz|numer_podtablicy_w_tablicy}}, czyli to jest też: {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, element {{Code|tab_stare}} {{LinkPatrz|tab_stare}}.
Gdy: {{Code|nowa_linia}} {{LinkPatrz|nowa_linia}}, gdy jednak przyjmuje wartość {{Code|false}}, wtedy jeśli poziom rozdzialu istnieje i przedrostek listy {{LinkPatrz|#przedrostek_listy}} jest większy od zera, i istnieje wiele artykułów w pozycji liście, wtedy: {{Code|ile>0}}, lub funkcja: {{LinkŚródtytuł|CzyZaliczac}}, przyjmuje wartość odpowiadające prawdziwej, w taki przypadku zmiennej: {{Code|nowa_linia}} {{LinkPatrz|nowa_linia}}, przydzielamy wartość {{Code|true}}, by dalsze artykuły można było wsadzić, do tablicy z nowym rozdziałem. Powiększamy numer rozdziału o jeden, tzn.: {{Code|numer_rozdzialu_w_ksiazce}} {{Patrz|numer_rozdzialu_w_ksiazce}}, wtedy w zmiennej: {{Code|tabela_artykulow}} {{Patrz|tabela_artykulow}}, tabeli rozdziałów i w nich artykułów dla tej pozycji przydzielamy wartość równą tablicy pustej. Liczymy rozdział dla tego rozdział z artykułami, z funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}, liczymy napis rozdziału, wtedy do pierwszej pozycji tablicy utworzonej w: {{Code|tabela_artykulow}} {{LinkPatrz|tabela_artykulow}}, dla miejsca: {{Code|numer_rozdzialu_w_ksiazce}} {{LinkPatrz|numer_rozdzialu_w_ksiazce}}, czyli: {{Code|tabela_rozdzial_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}, piszemy:
<syntaxhighlight lang="lua">
tabela_rozdzial_artykulow[1]={rozdzial_na_tekst,{-#przedrostek_listy,przedrostek_listy,tekstowy_przedrostek,false,},linia,};
</syntaxhighlight>
Gdzie: {{Code|rozdzial_na_tekst}} {{Patrz|rozdzial_na_tekst}}, to policzony rozdział, {{Code|-#przedrostek_listy}} {{Patrz|-#przedrostek_listy}} to poziom rozdziału ujemnego, i dlatego minus. A: {{Code|przedrostek_listy}}, to znaki poczatkowe z listy: {{Code|wzor_do_linii_z_lista}} {{LinkPatrz|wzor_do_linii_z_lista}}, a: {{Code|tekstowy_przedrostek}}, to numeracja tego rozdziału. Wartość {{Code|false}} to jest ze ten rozdział nie jest centrowany, a: {{Code|linia}} {{LinkPatrz|linia}}, to wyzyskana linia bez początku pozycji listy. Ustawiamy: {{Code|tab_stare[2][4]}} {{LinkPatrz|tab_stare[2][4]}}, na wartość {{Code|true}} i element: {{Code|tab_stare[6]}} {{Patrz|tab_stare[6]}}, ustawiamy na zero. Tworzymy tablicę pustą na pozycję: {{LinkPatrz|numer_podtablicy_w_tablicy}}, tablicy: {{Code|tabela_rozdzial_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}, i do tej tablicy dodajemy: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, za pomocą funkcji: {{LzLua|table.insert}}.
A jeżeli nie jest tworzony nowy rozdział z listy w tabeli: {{Code|tabela_artykulow}} {{LinkPatrz|tabela_artykulow}}, to na pozycję: {{Code|numer_podtablicy_w_tablicy}} {{LinkPatrz|numer_podtablicy_w_tablicy}}, jest dodawany element: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, również tak jest robione, gdy artykuły znajdują się w rozdziale dodatnim, tzn. równaniowej lub centrowanej, tzn. wtedy: {{Code|w_rozdziale}} {{LinkPatrz|w_rozdziale}}, przyjmuje wartość {{Code|true}}.
===== {{Śródtytuł|AnalizaLiniiObiekty}}{{Code|AnalizaLiniiObiekty}} =====
Za pomocą funkcji: {{LinkŚródtytuł|LiniaArtykulow}}, linia: {{Code|linia_rozwazana}} {{Patrz|linia_rozwazana}}, jest rozdzielana na wiele linii. To wiele linii w postaci tabeli, są iterowane od: {{Code|k {{=}} 1}}, do: {{Code|k {{=}} #tab_linia}}, gdzie: {{Code|#tab_linia}} {{Patrz|#tab_linia}}, jest to długość linii, tzn. liczba elementów numerowanych tablicy, tzn. od 1 do zwyż aż do apotkania najbliższej przerwy lub końca. Wtedy dla pojedyńczej literacji mamy: {{Code|tab_linia[k]}} {{Patrz|tab_linia[k]}}.
Iterujemy po kodach dla linii: {{Code|tab_linia[k]}} {{LinkPatrz|tab_linia[k]}}, przy pomocy funkcji: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} {{Patrz|p.IteratorSzablonowyZakodowanegoTekstu}}, iteratorem: {{Code|iterator2}} {{Patrz|iterator2}}.
Inicjujemy zmienną: {{Code|tab_nieobslugiwane {{=}} nil}}, następnie iterujemy: {{LinkPatrz|iterator2}}, uzyskując w każdej iteracji: {{Code|szablon}} {{LinkPatrz|szablon}}, {{Code|obiekt}} {{LinkPatrz|obiekt}}, i {{Code|kod}} {{LinkPatrz|kod}}.
Gdy mamy do czynienia: {{Code|SZABLON}}, lub: {{Code|LINKW}}, albo: {{Code|LINKZ}}, wtedy dla elementów tego pierwszego bierzemy tablicę: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}, dla elementu: {{Code|nazwa_szablonu}} {{LinkPatrz|nazwa_szablonu}}.
Jeżeli ten element: {{Code|tabela_spisu}}, istnieje, element pierwszy: {{Code|tabela_spisu[1]}}, jest równy wartości {{Code|true}}, wtedy mamy do czynienia z szablonem {{s|SpisPozycja}}. Jej element: {{Code|tabela_spisu["numer_link"]}}, istnieje i jest równy: {{Code|tyt}} {{Patrz|tyt}}. Iterujemy po kluczach i jego wartościach tego szablonu i sprawdzamy, który element jest równy właśnie tej wartości, a jeżeli jest taki, to dla elementów nie równych niemu, a właściwie w jego wartości iterujemy po kodach funkcją: {{LinkPatrz|p.IteratorSzablonowyZakodowanegoTekstu}}, dla tej wartości, w ten sposób zbieramy tablicę wielowymiarową najpierw po: {{Code|obiekt}} {{LinkPatrz|obiekt}}, póżniej po: {{Code|kod}}, {{LinkPatrz|kod}}, którą nazwiemy: {{Code|tab_nieobslugiwane}} {{Patrz|tab_nieobslugiwane}}, którego każda jej wartość jest równa {{Code|true}}. Ta tablica mówi dla jakich elementów ma nie zbierać w tablicy elementów w głównej tablicy rozdziałów i jego artykułach.
Dla elementu {{Code|tyt}} {{LinkPatrz|tyt}} tablicy parametrów przedrostek listy {{Code|przedrostek_listy}} ustawiamy na pusty, i liczmy numerację {{Code|tekstowy_przedrostek}} i zmienną {{Code|szablon}} {{LinkPatrz|szablon}} i ustawiamy zmienną {{Code|przerwij}} {{Patrz|przerwij}} na {{Code|true}}, aby dla tego szablonu nie zbierać elementów w tablicy rozdziałów i jego artykułów.
W przypadku przeciwnym dla: {{Code|tabela_spisu}}, gdy ma wartość {{Code|false}}, wtedy mamy do czynienia z funkcją: {{s|SpisZw}}. Dla niej liczymy: {{Code|przedrostek_listy}}, którą ustawiamy na pustą wartość. A: {{Code|tekstowy_przedrostek}}, liczmy uzyskując parametr o kluczu: {{Code|tabela_spisu["numer"]}}, którym jest parametr o numerze: {{Code|1}}, i {{Code|szablon}} {{LinkPatrz|szablon}}, który liczmy z parametrów szablonu o kluczu {{Code|tabela_spisu["link"]}}, którym jest numer {{Code|2}}. Ustawiamy tutaj zmienną: {{Code|}} {{LinkPatrz|przerwij}}, na wartosć {{Code|true}}.
====== {{Śródtytuł|CzyObslugiwane}}{{Code|CzyObslugiwane}} ======
Funkcja sprawdzająca, które elementy są obsługiwane, jeśli istnieje tablica: {{Code|tab_nieobslugiwane}} {{LinkPatrz|tab_nieobslugiwane}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local CzyObslugiwane=function()...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = Brak parametrów. | komórka1 = tak
}}
====== Dalszy opis funkcji ======
; Uwzględnianie tablicy, reprezentujące artykuł w rozdziale, wstawiany do tablicy danego rozdziału{{dk}}
Sprawdzany jest warunek:
<syntaxhighlight lang="lua">
if((--[[wliczaj_artykuly_tego_rozdzialu]] true)and(not przerwij)and((not tab_nieobslugiwane)or(CzyObslugiwane())))then
</syntaxhighlight>
Jeżeli jest on spełniony, wtedy wywołujemy funkcję: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}, później dla:
<syntaxhighlight lang="lua">
if((not czy_obslugiwane)and(not numer_rodzaju_artykulu_poprz))then
</syntaxhighlight>
Sprawdzamy, czy jest zebrana licencja z autorem według zmiennej: {{Code|licencja_z_autorem}} {{Patrz|licencja_z_autorem}}, i sprawdzamy, czy: {{Code|szablon}} {{LinkPatrz|szablon}}, jest wnetrzem szablonu, jeżeli tak, to ona przyjmuje wartość odpowiadająca prawdziwej, przeciwnie ma fałszywą.
Jeżeli ten pierwszy warunek jest niespełniony, to tylko liczymy to samo coostatnio.
; Szablony licencji, i jego parametry, uwzględnianie jego tylko raz ca całą książkę, mieszcząca się w artykule głównej książki{{dk}}
Następnie dla warunku, który musi być spełniony:
<syntaxhighlight lang="lua">
if((not numer_rodzaju_artykulu_poprz)and(not przerwij)and(link_szablon)and((not tab_pozycja_elementow_w_spisie_rzeczy)or(not tab_pozycja_elementow_w_spisie_rzeczy[1]))and(czy_artykul_korzystany)and(licencja_z_autorem))then
</syntaxhighlight>
Sprawdzamy szablony licencji, takich jak: {{s|Licencja}}, według tablicy: {{Code|{{sr|#p.szablony_licencji|p=StronicowyParser/obiekty}}}}.
Dla parametrów szablonu, liczymy jego parametry o kluczach, tzn.: {{Code|Autor}} {{Patrz|Autor}}, {{Code|Ukończone szkoły}} {{Patrz|Ukończone szkoły}}, {{Code|Email}} {{Patrz|Email}}, {{Code|Dotyczy}} {{Patrz|DotyczyDotyczy}}, {{Code|Licencjonowanie}} {{Patrz|Licencjonowanie}}, {{Code|Umowa prawna}} {{Patrz|Umowa prawna}} i {{Code|Konsekwencje}} {{Patrz|Konsekwencje}}, którego wartości przydzielamy do odpowiednich zmiennych. Każdą z tych zmiennych kompletujemy funkcją: {{Code|{{sr|#p.DekodowanieTekstuDekodowanieTekstu|p=StronicowyParser/Potrzebne}}}}, poprzez zwracaną przez nią funkcję, w której jest wykorzystywana funkcją: {{LzLua|frame:preprocess}}, do rozwijania. A dla elementu istniejącego: {{Code|Autor}}, piszemy zmienną: {{Code|licencja_z_autorem}} {{LinkPatrz|licencja_z_autorem}}, któremu przydzielamy wartość {{Code|false}}, co spowoduje, że nie będziemy analizowali jeszcze raz innego szablonu licencji.
Te zmienne tego szablonu zbieramy natomiast w tablicy: {{Code|tabela_licencji_spisu_tresci}} {{Patrz|tabela_licencji_spisu_tresci}}, dane dotyczące licencji, więc:
<syntaxhighlight lang="lua">
tabela_licencji_spisu_tresci={autor, szkoly, email, dotyczy, licencjonowanie, umowa_prawna, konsekwencje};
</syntaxhighlight>
Co później przerywamy pętle po: {{Code|iterator2}} {{LinkPatrz|iterator2}}, instrukcją: {{Code|break}}.
==== Dalszy opis funkcji {{nobold|{{LinkPatrz|opis funkcji-ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}}} ====
Ściągamy tekst, tabelę bazy i tabelę parametrów strony o nazwie: {{Code|nazwa_modulu}}, przy pomocy funkcji: {{Code|{{sr|#p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony|p=StronicowyParser/Tekst}}}}, według:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=nil;
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
return nil;
end,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Uruchamiamy funkcję: {{Code|__FUNKCJA_ZBIERANIA_DANYCH}} {{LinkPatrz|__FUNKCJA_ZBIERANIA_DANYCH}}, jeżeli istnieje.
Dalej wywołujemy funkcję: {{Code|{{sr|#p.IterTekst|p=StronicowyParser/Rozdziały}}}}, w celu znalezienia tekstu: {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}}, i iteratora: {{Code|iterator}} {{Patrz|iterator}}, po napisach wprowadzenia tekstu rozdziałów i ich zawartości rozdziałów i na podstawie:
<syntaxhighlight lang="lua">
local iterator,tekst_rozwiniety_calego_artykulu=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,true,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,
__FUNKCJA, ---- funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adresu szablonu, określa i zawraca jego zawartość;
__FUNKCJA2, ---- funkcja operująca na przygotowanej zawartości napisu wprowadzenia tekstu i tekście napisu wprowadzenia tekstu (rozdziału);
__FUNKCJA_ANALIZA_SPISU ---- funkcja do analizy i modyfikacji tekstu (może zwracać wartość: nil) przed samym kodowaniem, jeżeli tekst jest w ogóle jest taki, a jeśli nie, ta funkcja wtedy nie jest uruchamiana, funkcja ta bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: IterTekst, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: SpisTreści, co jest uwidocznione w module: Moduł:StronicowyParser/SpisTreści;
);
</syntaxhighlight>
Opis parametrów zwracanych:
{{OpisParametrów
| 1 = {{Code|iterator}} {{Patrz|iterator-IterTekst}} | _1 = Iterator po rozdziałach i jego zawartościach.
| 2 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu-IterTekst}} | _2 = Tekst przetworzony rozdziału.
}}
Odczytujemy tabelę: {{LinkPatrz|p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu}} i dalej: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}, o definicji:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={
["spis treści"]=true,
["spis tresci"]=true,
["spis rzeczy"]=true,
};
</syntaxhighlight>
Robimy kopię tych tabel i przyłączamy do metatabeli: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, przy pomocy funkcji: {{LzLua|setmetatable}}, aby nie odrózniać tych rozdziałów ze względu na wielkość liter i polskie znaki.
Inicjiujemy zmienną: {{Code|numer_rozdzialu_w_ksiazce}} {{LinkPatrz|numer_rozdzialu_w_ksiazce}}, wartością: {{Code|1}}, aby zbierać po kolei artykuły ze poszczególnego pojedynczego spisu treści.
Ustawiamy maksymalny rozmiar rozdziału zerowego na {{Code|50}}, w zmiennej: {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{Patrz|maksymalny_rozmiar_rozdzialu_zerowego}}, według:
<syntaxhighlight lang="lua">
local maksymalny_rozmiar_rozdzialu_zerowego=50;
</syntaxhighlight>
===== {{Śródtytuł|AnalizaRozdzialu}}{{Code|AnalizaRozdzialu}} =====
Jest to funkcja do zbierania danych z pojedynczgo rozdziału o pewnej linii, inicjowana z jego parametrami, także tekstem rozdziału.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function AnalizaRozdzialu(rozdzial,linia_rozdzialu,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|rozdzial}} {{Patrz|rozdzial}} | _1 = Jest to tekst rozdziału.
| 2 = {{Code|linia_rozdzialu}} {{Patrz|linia_rozdzialu}} | _2 = Jest to linia z rozdziałem.
| 3 = {{Code|text}} {{Patrz|text}} | _3 = Jest to tekst rozdziału o pewnym napisie wprowadzenia tekstu.
| 4 = {{Code|poziom_rozdzialu}} {{Patrz|poziom_rozdzialu}} | _4 = Jest to poziom danego rozdziału.
| 5 = {{Code|poczatek_rozdzialu}} {{Patrz|poczatek_rozdzialu}} | _5 = Początek pozycji listy rozdziałów mechanizmu {{Strong|MediaWiki}}.
| 6 = {{Code|numeracja}} {{Patrz|numeracja}} | _6 = Numeracja rozdziału.
| 7 = {{Code|czy_rozdzial_centrowany}} {{Patrz|czy_rozdzial_centrowany}} | _7 = Czy dany rozdział jest centrowany.
}}
====== Tabela artykułów rozdziałów i w nich artykułów oraz jego poszczególnych ======
Tworzymy tabelę: {{Code|tabela_artykulow}} {{LinkPatrz|tabela_artykulow}}, jeżeli nie istnieje, z pustą tablicą, a później dla elementu: {{Code|numer_rozdzialu_w_ksiazce}} {{LinkPatrz|numer_rozdzialu_w_ksiazce}}, jeżeli też go nie ma, to też pustą tablicą. Dalej liczymy napis wprowadzenia tekstu rozdziału dodatniego funkcją: {{LinkŚródtytuł|p.AnalizaNapisuWprowadzeniaTekstu}} i uwzględniamy je w tabeli rozdziałów dla danego rozdziału pod wartością: {{Code|tabela_rozdzial_artykulow[1]}}, w sposób:
<syntaxhighlight lang="lua">
tabela_rozdzial_artykulow[1]={rozdzial_na_tekst,{poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany,},rozdzial,};
</syntaxhighlight>
Dalej wprowadzamy zmienną: {{Code|czy_spis_rzeczy_napis_wprowadzenia_tekstu}} {{Patrz|czy_spis_rzeczy_napis_wprowadzenia_tekstu}}, mówiącą teraz rozpatrujemy rozdziały i artykuły w ramach spisu treści o nagłówkach typu: {{Code|Spis treści}}, czy: {{Code|SPIS RZECZY}}. Jeżeli wyszliszmy poza to, to ta zmienna wtedy przyjmuje wartość fałszywą, a definicja inicjacji tej zmiennej jest:
<syntaxhighlight lang="lua">
local czy_spis_rzeczy_napis_wprowadzenia_tekstu=(poziom_rozdzialu)and(not czy_jest_spis_tresci)and(not dalej_nie_rozwazaj_spis_tresci)and(jakie_spisy_tresci[spreparowany_uzyskany_tekst_rozdzialu]);
</syntaxhighlight>
Gdzie:
{{OpisParametrów
| 1 = {{Code|poziom_rozdzialu}} | _1 = Jak w: {{LinkPatrz|poziom_rozdzialu}}.
| 2 = {{Code|czy_jest_spis_tresci}} {{Patrz|czy_jest_spis_tresci}} | _2 = Czy jesteśmy w spisie treści.
| 3 = {{Code|dalej_nie_rozwazaj_spis_tresci}} {{Patrz|dalej_nie_rozwazaj_spis_tresci}} | _3 = Zmienna mówiąca, że teraz jesteśmy poza spisem treści.
}}
====== Kiedy uwzględniamy artykuły rozdziału ======
Jeżeli jesteśmy w spisie, to zawsze są uwzględniane artykuły rozdziału, bo jest ustawiona zmienna: {{Code|wliczaj_artykuly_tego_rozdzialu}} {{LinkPatrz|wliczaj_artykuly_tego_rozdzialu}}, na {{Code|true}}, a poza na {{Code|nil}}.
Funkcja jest przyszykowana jest dla jednego spisu treści, o ściśle określonym specjalnym napisie wprowadzenia tekstu, w danym spisie na stronie.
====== Iterator linii artykułu spis treści ======
Uruchamiamy iterator używając funkcji lokalnej: {{LinkŚródtytuł|iteratorTekstuNaglowka}}, według wywołania:
<syntaxhighlight lang="lua">
local iterator=iteratorTekstuNaglowka();
</syntaxhighlight>
Ustawiamy zmienną: {{Code|wliczaj_artykuly_tego_rozdzialu}} {{LinkPatrz|wliczaj_artykuly_tego_rozdzialu}}, aby wliczał lub nie, pewne artykuły rozdziału według:
<syntaxhighlight lang="lua">
local wliczaj_artykuly_tego_rozdzialu=((wliczaj_artykuly_tego_rozdzialu)or(not jakie_nie_rozdzialy[rozdzial]));
</syntaxhighlight>
Iterujemy otrzymanym ostatnio iteratorem, uzyskując kolejno zmienne: {{Code|przedrostek_listy}} {{LinkPatrz|przedrostek_listy}}, {{Code|tekstowy_przedrostek}} {{LinkPatrz|tekstowy_przedrostek}}, {{Code|linia}} {{LinkPatrz|linia}}, i {{Code|w_rozdziale}} {{LinkPatrz|w_rozdziale}}.
; Kiedy rozdziałów zerowych nie liczymy jako je{{dk}}
Dla rozdziałów, które nie sa poziomami z listą, sprawdzamy, czy to jest rozdział zerowy przy pomocy funkcji: {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|p=StronicowyParser/Rozdziały}}}}, i sprawdzamy, czy on przekracza rozmiar: {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}, jeżeli jest tym rozdziałem i nie przekracza pewnego rozmiaru, to to jest rozdział traktowany jako zerowy niepomijany rozdział zerowy, wtedy ustawiamy zmienną: {{Code|nie_pomijaj_tego_rozdzialu}} {{Patrz|nie_pomijaj_tego_rozdzialu}}, na {{Code|true}}.
; A jeśli to są rozdziały z listy zaczynające się od dwukropka w linii{{dk}}
Gdy taki rozdział nie pretenduje do zerowych, to sprawdzamy funkcją: {{Code|{{sr|#p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu|p=StronicowyParser/Rozdziały}}}}, czy ten rozdział pominąć, a jeżeli ona przyjmuje wartość odpowiadającej fałszywej, czyli {{Code|false}}, wtedy ustawiamy zmienną: {{Code|nie_pomijaj_tego_rozdzialunie_pomijaj_tego_rozdzialu}} {{LinkPatrz|nie_pomijaj_tego_rozdzialu}}, na taką samą wartość jak poprzednio.
; Inne rozdziały{{dk}}
Dla rozdziałów innych ta wartość przyjmuje postać {{Code|false}}.
; Rozdziały jednak nie pomijane{{dk}}
Dla rozdziałów, które nie są pomijane, wtedy zmienna: {{Code|nie_pomijaj_tego_rozdzialu}} {{LinkPatrz|nie_pomijaj_tego_rozdzialu}}, przyjmuje wartość {{Code|true}}, w takim przypadku wchodzimy do funkcji: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstuZgodnieZJegoSzablonowymiElementami|p=Szablonowe}}}}, wtedy dla linków szablonowych sprawdzamy, czy to są linki określone tablicami: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy}}, {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}} lub ewentualnie funkcją: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}.
Innym sposobem sprawdzania, czy to jest szablon linkowy jest tablica: {{Code|{{sr|#p.szablony_kompletowania_stron_woluminu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_kompletowania_stron_woluminu}}, lub {{Code|{{sr|#p.szablony_licencji|p=StroncowyParser/obiekty}}}} {{LinkPatrz|p.szablony_licencji}}.
Jeżeli to jest szablon linków, wtedy jest zwracana wartość: {{Code|return true,obiekt,kod}}, w przeciwnym wypadku: {{Code|return false,obiekt,kod}}.
Innym sposobem liczenia, czy to jest link, to wtedy może być to link normalny: {{Code|LINKW}}, który można sprawdzić funkcją: {{Code|{{sr|#p["CzyLinkWewnętrzny"]|p=Specjalne}}}}, wtedy jest zwracane {{Code|return true,obiekt,kod}}.
Link też może być zewnętrzny, wtedy to jest: {{Code|LINKZ}}, wtedy funkcja zwraca wartość: {{Code|return true,obiekt,kod}}.
; Kiedy analizujemy artykuły rozdziału{{dk}}
Następnie dla linii: {{Code|linia_rozwazana}} {{LinkPatrz|linia_rozwazana}}, co na podstawie tego liczymy, czy daną linię nie uwzględnić, w obliczeniach według schematu:
<syntaxhighlight lang="lua">
local czy_linia_uwzgledniana=mw.ustring.match(linia_rozwazana,"^%s*%-%-+(.*)%-%-+%s*$");
local czy_linia=((not czy_linia_uwzgledniana)and(mw.ustring.match(linia_rozwazana,"^%s*[%-%+%=%~]+.*$")
or ((#przedrostek_listy==0)and((mw.ustring.match(linia_rozwazana,"!"))and(mw.ustring.match(linia_rozwazana,"[^!]%s*$"))))
or mw.ustring.match(linia_rozwazana,"^%s*<")) or nil);
</syntaxhighlight>
Co następnie jest ustawiana {{Code|nowa_linia}} {{LinkPatrz|nowa_linia}} na wartość {{Code|false}}.
; Warunek analizowania artykułów rozdziałów{{dk}}
W obliczeniach raz uwzględniamy funkcję: {{LinkŚródtytuł|AnalizaLiniiObiekty}}, w ostatniej omawianej pętli, schematycznie:
<syntaxhighlight lang="lua">
if(not czy_linia)then AnalizaLiniiObiekty(linia_rozwazana);end;
</syntaxhighlight>
===== Dalsza część funkcji {{nobold|{{LinkPatrz|opis funkcji-ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}}} =====
Bierzemy zakodowany tekst: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu-IterTekst}}, i po nim iterator: {{Code|iterator}} {{LinkPatrz|iterator-IterTekst}}, wtedy iterujemy po parametrach:
<syntaxhighlight lang="lua">
local parsuj_rozdzialami=nil; ---- ta zmienna służy na wypadek, gdy by nie była żadnych rozwazanych rozdziałów;
for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do
---- za każdym razem jest uruchamiana funkcja: AnalizaRozdzialu, przy rozważanym rozdziale;
AnalizaRozdzialu(rozdzial_tab[1],rozdzial_tab[2],text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany);
---- oznacz zmienną: parsuj_rozdzialami, wartością; true, a póżniej jąnie inicjuj;
if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end
end;
</syntaxhighlight>
Parametry zwracane przez iterator: {{Code|iterator}} {{LinkPatrz|iterator-IterTekst}}:
{{OpisParametrów
| 1 = {{Code|rozdzial_tab}} {{Code|{{=}}}} {{Code|<nowiki>{ [1] = rozdzial, [2] = linia_rozdzialu, }</nowiki>}} | _1 = tabela składająca się z dwóch elementów:
| 2 = Pod elementy tabeli: | nagłówek2 = tak
| 3 = {{Code|rozdzial}} | _3 = Jak w: {{LinkPatrz|rozdzial}}.
| 4 = {{Code|linia_rozdzialu}} | _4 = Jak w: {{LinkPatrz|linia_rozdzialu}}.
| 5 = Inne parametry: | nagłówek5 = tak
| 6 = {{Code|text}} | _6 = Jak w: {{LinkPatrz|text}}.
| 7 = {{Code|poziom_rozdzialu}} | _7 =Jak w: {{LinkPatrz|poziom_rozdzialu}}.
| 8 = {{Code|poczatek_rozdzialu}} | _8 = Jak w: {{LinkPatrz|poczatek_rozdzialu}}.
| 9 = {{Code|numeracja}} | _9 = Jak w: {{LinkPatrz|numeracja}}.
| 10 = {{Code|czy_rozdzial_centrowany}} | _10 = Jak w: {{LinkPatrz|czy_rozdzial_centrowany}}.
}}
Gdy nie napotkano żadnego rozważanego rozdziału, wtedy: {{Code|parsuj_rozdzialami}}, przyjmuje wartość {{Code|nil}}, w takim razie uruchamiana jest funkcja:
<syntaxhighlight lang="lua">
if(not parsuj_rozdzialami)then
AnalizaRozdzialu("Spis treści",nil,tekst_rozwiniety_calego_artykulu,nil,nil,nil,nil);
end;
</syntaxhighlight>
Funkcja zwraca parametry inaczej, gdy artykuł, do którego należy książka jest korzystany, a inaczej, jeśli nie. W takim razie możemy zwracać na dwa sposoby:
<syntaxhighlight lang="lua">
if(czy_artykul_korzystany)then
return tabela_artykulow,tabela_licencji_spisu_tresci,przekierowanie_spisu_tresci;
else
return tabela_artykulow,nil,przekierowanie_spisu_tresci;
end;
</syntaxhighlight>
Przy artykułach korzystanych, co jest określone zmienną: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, tabelę: {{Code|tabela_licencji_spisu_tresci}} {{LinkPatrz|tabela_licencji_spisu_tresci}}, przy jego spisach treści w książkach, do której należy ten artykuł, zwracana jest jako wartość przeważnie jako nierówna {{Code|nil}}, a dla artykułów z innych książkach, ta wartość już jest taka, tzn. przyjmuje wartość {{Code|nil}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
po57ddm5vhgcd2u80uclc512y0670sx
558335
558334
2026-10-02T18:43:32Z
Persino
2851
/* Opis pobieżny funkcji */
558335
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SpisTreści}}|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 lokalne ==
=== {{Śródtytuł|Ile}}{{Code|Ile}} ===
Funkcja liczy liczbę elementów we wszystkich podtabelach tabeli {{Code|tabela_rozdzial_artykulow2}} {{Patrz|tabela_rozdzial_artykulow2}}, licząc od drugiej tabeli, po pierwszej tabeli mieści się podtabela z informacjami o rozdziale, w której znajdują się artykuły określone dalszymi podtabelami.
Tymi podtabelami są od {{Code|2}} do {{Code|7}}, czyli {{Code|6}} tabelek, w których są artykuły, które zaliczamy do kategorii wliczane, tzn. one nie znajdują się w takich rozdziałach przetłumaczonych na małą literę, ale przedtem na nią była działana funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, usuwając z nich odstępy na końcach, w tym dolne myślniki, a wewnątrz zamieniając kolejne dolne myślniki i spacje na jedną spacją.
Metafunkcja, w metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, w: {{Code|{{ld2|Parametry}}}}, aby porównać to z tablicą {{Code|{{sr|#p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu}}, by zaliczyć je do tego typu:
<syntaxhighlight lang="lua">
p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu={
["licencja"]=true,
["inne"]=true,
["bibliografia"]=true,
["zobacz też"]=true,
["linki zewnętrzne"]=true,
};
</syntaxhighlight>
Twew rozdziały należą do kategorii rozdziałów, w których artykuły są pomijane przez: '''{{ld|StronicowyParser|Stronicowy parser}}''', ale jeżeli one należą do rozdziału spisu treści lub rzeczy, to tam jednak nie są takie, inaczej jest poza.
A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}.
A ta powyższa tabela mieści się: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a jego opis w: {{Code|{{sr|#p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu|p=StronicowyParser/obiekty}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow2)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|numer_rodzaju_artykulu}} | _1 = Numer podtabeli elementtu, do którego wsadzamy element.
| 2 = {{Code|tabela_rozdzial_artykulow2}} | _2 = Tabela wraz podtabelami, od {{Code|1}} do {{Code|13}}, ale liczenie jest od {{Code|2}}.
}}
=== {{Śródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}{{Code|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}} ===
==== Opis pobieżny funkcji ====
Funkcja do wstawiania elementów z ogólnej tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}, za pomocą funkcji wstawianej jako parametr: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{Patrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, do odpowiedniej pozycji artykularnej od: {{Code|2}} do {{Code|13}}, a pozycja {{Code|1}}, to pozycja rozdziałowa, ona jest określana przez zmienną: {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{Patrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, a pozycja, którą wsadzamy to: {{Code|tab_stare}} {{Patrz|tab_stare}}.
Funkcja zwraca pozycje:
<syntaxhighlight lang="lua">
return numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych;
</syntaxhighlight>
Opis tych parametrów funkcji:
{{OpisParametrów
| 1 = {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} | _1 = Jest to wartość zwrócona przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}}, w odróżnieniu od: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, jest mniejszy o jeden, czyli wtedy to była a poziomie przypisywania wartość {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}},
| 2 = {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} | _2 = Pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}.
| 3 = {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} | _3 = Tablica do sprawdzania, czy artykuł z nagłówkiem, ma powtórzenie tego bez nagłówka, czyli dla tego bez tego jest inna numeracja niż z nagłówkiem, a gdy niema tego bez, to wtedy dzięki tej funkcji numeracja tak się zachowuje, jak tam by był ten element, co prawda jest tam dodawany, ale jako z informacją taką, że bz numeru ustalanym przez funkcję: {{LinkŚródtytuł|Ile}}, A przy okazji, aby tego elementu nie dodawać ponownie, to w nim jest ustalana druga zmienna na {{Code|1}}, a wcześniej była na {{Code|0}}, i dlatego ona była wtedy dodawana, a później już tak nie jest.
}}
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY,tabela_rozdzial_artykulow2,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow--[[]])...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{Patrz|self}} | _1 = Zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}}.
| 2 = {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} | _2 = Opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow2,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare);
</syntaxhighlight>
Funkcja jest wywoływana w:
<syntaxhighlight lang="lua">
numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych=WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,WsadzanieParametryDoTablicy(linia,czy_linia_uwzgledniana),tabela_rozdzial_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow);
</syntaxhighlight>
Gdzie funkcja: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, to jest: {{LinkŚródtytuł|WsadzanieParametryDoTablicy}}.
| 3 = {{Code|tabela_rozdzial_artykulow2}} | _3 = Ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow2}}.
| 4 = {{Code|tablica_artykulow_zebranych}} | _4 = Diała jak w: {{LinkPatrz|tablica_artykulow_zebranych}}.
| 5 = {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} | _5 = Jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}}.
| 6 = {{Code|szablon}} {{Patrz|szablon}} | _6 = Jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu.
| 7 = {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - | _7 = Kolejno to jest: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''' i '''nazwa książki'''.
| 8 = {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} | _8 = Jest to nazwa artykułu danego spisu treści.
| 9 = {{Code|pelna_nazwa_spisu_tresci}} {{Patrz|pelna_nazwa_spisu_tresci}} | _9 = Uchwyt do bazy kodowania tekstu strony spisu treści.
| 10 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} | _10 = Nazwa strony szablonowa, jak są wywoływane w postaci szablonowej, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}}.
| 11 = {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} | _11 = Uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 12 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _12 = Tablica bazy zapisana w postaci osobnej tablicy, a nie jej w wewnętrznej bazie, nie jak to było w postaci zmiennej {{LinkPatrz|nazwa_modulu}}, używana zamiast: {{LinkPatrz|nazwa_modulu}}.
| 13 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _13 = Tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}.
| 14 = {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} | _14 = Obiekt i kod, czyli: zmienne charakteryzujące zmienną wnętrza: {{Code|szablon}} {{LinkPatrz|szablon}}.
| 15 = {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} | _15 = Tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy.
| 16 = {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} | _16 = Tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię.
| 17 = {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} | _17 = Numeracja rozdziału, z jakim rozpoczyna się rozdział.
| 18 = {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} | _18 = Gdy link znajduje się w rozdziale dodatnim.
| 19 = {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} | _19 = Cała linia z artykułem lub artykułami, tą linią równie dobrze może być rozdział, tu chodzi o rozdział dodatni.
}}
==== Opis pobieżny funkcji {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} ====
Przedstawiamy tutaj funkcję: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, która jest opisana w punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Definicja funkcji w nagłówku:
<syntaxhighlight lang="lua">
__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow2,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare);
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tabela_rozdzial_artykulow2}} | _1 = Jak w: {{LinkPatrz|tabela_rozdzial_artykulow2}},
| 2 = {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} | _2 = Jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}},
| 3 = {{Code|tab_stare}} | _3 = Jak w: {{LinkPatrz|tab_stare}}.
}}
Ta funkcja została opisana już wcześniej.
==== Szczegółowy opis funkcji głównej ====
Uruchamiamy funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, która jest zdefiniowana w module: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}}. Wywołujemy tę funkcję:
<syntaxhighlight lang="lua">
local tab_pozycja_elementow_w_spisie_rzeczy,numer_rodzaju_artykulu,id,parametry_szablonu,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nil,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
</syntaxhighlight>
Pierwszy elementem: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest to zmienna tablicowa, która opisuje parametry artykularno-linkowe parametry, drugi: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, do której kategorii należy dany artykuł w linku, a trzeci parametr, to: {{Code|id}} {{Patrz|id}}, to zbierane są parametry linkowe z szablonu {{s|SpisTreści}}, czwarty to: {{Code|parametry_szablonu}} {{Patrz|parametry_szablonu}}, w przypadku szablonów inteligentnych linków, to są parametry wywołań tych szablonów, ostatni parametr to: {{Code|kom}} {{Patrz|kom}}, przedstawia on, jeśli {{Code|false}}, to artykuł zakwalifikowany został poprawnie do rozważań, a {{Code|true}} już nie.
To {{LinkPatrz|parametry szablonu}}, to jest tablica z trzech elementów, tzn.:
<syntaxhighlight lang="lua">
local parametry szablonu={tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,};
</syntaxhighlight>
Elementy tablicy:
{{OpisParametrów
| 1 = {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} | _1 = Tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych.
| 2 = {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} | _2 = To jest nazwa uzyskanego szablonu linków inteligentnych lub nie.
| 3 = {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} | _3 = Tabela modyfikatorów rozkładanego szablonu.
}}
Jeśli parametr: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, istnieje, to tworzona jest z niego taka sama wersja lub przy nieistnnieniu parametru {{LinkPatrz|wliczaj_artykuly_tego_rozdzialu}}, do niego jest dodawana jest liczba {{Code|6}}. W ten sposób możemy zbierać artykuły książki i inne,ktore należą do pewnych rozdziałów i które nie należą.
===== {{Śródtytuł|ParametrPierwszy}}{{Code|ParametrPierwszy}} =====
Funkcja zbierające dane z {{Code|tab_artykul}} {{Patrz|tab_artykul}}, którego to jest czteroelementowa tablica, dotycząca danego artykułu. Drugim parametrem: {{Code|czy_niedozwolone}} {{Patrz|czy_niedozwolone}}, jest zmienna logiczna mówiąca, czy wskazać w nazwie artykułu, czy są dozwolone znaki, jest to sprawdzenie według wyrażenia regularnego: {{Code|<nowiki>[|<>{}%[%]]</nowiki>}} {{Patrz|wzor_znaki_niedozwolone}} na podstawie funkcji {{LzLua|mw.ustring.match}}, czyli: {{Code|znaki_niedozwolone}} {{Patrz|znaki_niedozwolone}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
ParametrPierwszy(tab_artykul,czy_niedozwolone)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tab_artykul}} | _1 = Jak w: {{LinkPatrz|tab_artykul}}.
| 2 = {{Code|czy_niedozwolone}} | _2 = Jak w: {{LinkPatrz|czy_niedozwolone}}.
}}
Gdzie: {{Code|tab_artykul}} {{LinkPatrz|tab_artykul}}, który jest pierwszym parametrem przyjmowanym przez funkcję, jest zdefiniowany jako czteroelementowa tablica, którą przypisujemy do czterem osobnych parametrów:
<syntaxhighlight lang="lua">
local artykul=tab_artykul[1];
local parametry=tab_artykul[2];
local naglowek=tab_artykul[3];
local tablica_przekierowania=tab_artykul[4];
</syntaxhighlight>
Jeżeli, któreś z parametrów z: {{LinkPatrz|tab_artykul}}, tzn. element jego {{Code|2}}-gi i {{Code|3}}-ci, istnieje, to układana jest trzyelementowa tablica z elementów od {{Code|1}} do {{Code|3}}, z dodatkowym elementem: {{Code|<nowiki>["LINK"] = true</nowiki>}}, a element czwarty to jest: {{Code|tablica_przekierowania}} {{Patrz|tablica_przekierowania}}, a jeżeli te dwa elementy, nie licząc czwartego, wcale nie istnieją, wtedy jest tworzony łańcuch znakowy z tego pierwszego elementu. Tak tworzymy, nową wersję tablicy: {{Code|tab_artykul}} {{Patrz|tab_artykul-nowa wersja}}, lub łańcuch znakowy, w postaci:
<syntaxhighlight lang="lua">
tab_artykul=((artykul)and(parametry or naglowek))and{[1]=artykul,[2]=parametry,[3]=naglowek,["LINK"]=true,} or artykul;
</syntaxhighlight>
Funkcja zwraca trzy parametry, tzn. parametry: {{LinkPatrz|tab_artykul-nowa wersja}}, {{LinkPatrz|znaki_niedozwolone}} i tablicę przekierowania: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}:
<syntaxhighlight lang="lua">
return tab_artykul,znaki_niedozwolone,tablica_przekierowania;
</syntaxhighlight>
===== Rozwijanie nazwy linku artykułu =====
Do rozwijania nazwy linku służy funkcja: {{Code|{{sr|#p.DekodowanieTekstuNazwLinku|p=StronicowyParser/Pomocne}}}} {{Patrz|p.DekodowanieTekstuNazwLinku}}, pod względem szablonowym i nie tylko.
Funkcja rozwija tą nazwę tym: {{LzLua|frame:preprocess}}, jedynie nie rozwija szablonów stronicowego parsera, podane podkategoriach w kategorii: {{Code|{{lk2|Szablony stronicowe}}}}, za pomocą odpowiednich metod, bo to by wywołało nieskończoną pętle, i dlatego takie szablony są zamieniane tylko na wywołania symboliczne.
==== Dalszy opis funkcji nadrzędnej przy istnieniu parametrów linkowych normalnych, czy szablonowych (linków inteligentnych) ====
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|{{=}}}} {{Code|1}} =====
Tworzony jest numerek: {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{Patrz|numer_rodzaju_artykulu_w_podreczniku}}, który w stosunku do: {{LinkPatrz|numer_rodzaju_artykulu}}, jest większy o jeden, a schemat tej operacji:
<syntaxhighlight lang="lua">
local numer_rodzaju_artykulu_w_podreczniku=numer_rodzaju_artykulu+1;
</syntaxhighlight>
====== Tworzenie tablicy: {{nobold|{{Code|tablica_artykulow_zebranych}}}} ======
Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną wstępnie w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}.
; Tablica{{dk}} {{nobold|{{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}}}}, nie jest tablicą{{dk}}
Gdy element pierwszy: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, nie jest tablicą, wtedy jedynie liczymy, czy ona ma znaki niedozwolone: {{Code|wzor_znaki_niedozwolone}} {{LinkPatrz|wzor_znaki_niedozwolone}}, a póżniej wiedząc ten element, który jest aktualną nazwą artykułu kiążki, tworzymy tabelę {{Patrz|tablica_artykulow_zebranych-imicjacja}}:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,};
</syntaxhighlight>
; Gdy element{{dk}} {{nobold|{{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}}}}, jest łańcuchem znaków{{dk}}
Wpierw liczone są parametry z wywołania, z opcją, czy ma liczyć, czy nazwa artykułu ma znaki niedozwolone, z funkcji: {{LinkŚródtytuł|ParametrPierwszy}}:
<syntaxhighlight lang="lua">
tab_pozycja_elementow_w_spisie_rzeczy[1],znaki_niedozwolone,tablica_przekierowania=ParametrPierwszy(tab_pozycja_elementow_w_spisie_rzeczy[1],true);
</syntaxhighlight>
; Inna książka - atrybut, tzn. czy artykuł wychodzi poza daną książkę, lub jego przekierowanie w niej kieruje na stronę poza nią{{dk}}
Dalej sprawdzane jest, czy książka przyjmuje atrybut, tzn.: '''czy inna książka''', wtedy liczymy to z kodu z tablicy przekierowania: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, jeżeli jej wartość istnieje, tzn.: {{Code|czy_inna_ksiazka}} {{Patrz|czy_inna_ksiazka}}:
<syntaxhighlight lang="lua">
local czy_inna_ksiazka=tablica_przekierowania and tablica_przekierowania[1] and tablica_przekierowania[1][5] or nil;
</syntaxhighlight>
; Tablica przekierowania artykułu względem bieżącej książki{{dk}}
Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, który przedstawia, czy to jest artykuł bieżącej książki, którego przekierowanie kieruje, wtedy ten parametr ma wartość {{Code|true}}, a gdy adres przekierowania wskazuje na inną książkę, wtedy {{Code|false}}. Jeśli ten parametr ma wartość fałszywą, wtedy jest sprawdzane, czy jest tablicą w: {{Code|czy_tablica}} {{Patrz|czy_tablica}}, według:
<syntaxhighlight lang="lua">
czy_tablica=parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1]);
</syntaxhighlight>
Lub w przeciwnym wypadku liczymy parametry artykularne z tablicy przekierowania: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek przekierowania, w tej tablicy, istnieje, wtedy parametr: {{Code|czy_tablica}} {{LinkPatrz|czy_tablica}}, przyjmuje wartość {{Code|true}}, w przeciwnym wypadku wartość fałszywą.
Gdy ten element nie jest tablicą, to tworzona jest nazwa pełna artykułu: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}} i umieszczana w tablicy: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z podobną tablicą początkową jak w poprzednim przypadku jego tworzenia, czyli jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}.
; Tablica zebranych artykułów i porównywanie artykułu z nagłówkiem, czy istnieje wcześniejszy artykuł bez niego{{dk}}
Gdy element jest jednak tablicą, też jest liczona pełna nazwa artykułu (gdy nazwa artykułu przekierowania istnieje, wtedy ona jest liczona z: {{Code|tablica_przekierowania[2]}}, w przeciwnym wypadku, jeśli element: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}}, jest tablicą, wtedy liczymy ją z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1][1]}}, w innym wypadku z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}}), a z niej liczymy tablicę: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}, w przypadku pierwszego artykułu nienagłówkowego.
A w przypadku pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie, artykuł poprzedni nie istnieje, a więc tego tam nie ma tam w takim przypadku.
Gdy funkcja napotkała artykuł o takim samym stronie, co poprzednio, to do wartości początkowej, bez definiowania jeszcze raz tej samej tablicy, jest ustawiane odpowiednio:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych[3]=true;
</syntaxhighlight>
Co informuje, że artykuł jest ten sam, tylko inny nagłówek niż poprzedni, a poprzedni pierwszy jest bez niego.
====== Rozwijanie nazwy linku ======
Kompletowany jest drugi element tablicy: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkPatrz|p.DekodowanieTekstuNazwLinku}}. Dalej z tej nazwy są usuwane znaki specjalne według funkcji: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, z modułu: {{Code|{{ld2|Specjalne}}}}. Następnie działamy funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, które końcowe spacje usuwa, a wewnętrz powtarzające zamienia kolejne na jedną spację.
====== Dodawanie do tablicy problemów, jeśli nastąpił problem ze znakami niedozwolonymi ======
A między czasie, gdy mamy niedozwolone znaki: {{Code|znaki_niedozwolone}} {{LinkPatrz|znaki_niedozwolone}}, za pomocą funkcji pytającej sprawdzamy, czy element inny zgłoszeniowy został dodany do tablicy problemów: {{Code|{{sr|#p.CzyJestTakiProblemowyElement|p=StronicowyParser/Problemy}}}}, aż w końcu dodajemy ten problem, jeśli go nie ma przy pomocy funkcji: {{Code|{{sr|#p.UstawTakiProblemowyElement|p=StronicowyParser/Problemy}}}}.
====== {{Śródtytuł|inicjacja_i_kompletowanie_zmiennych}}Ustalanie nazwy jednostki, kompletowanie linii artykułów i inicjowanie pozycji, w tabeli zebranych elementów, w tabeli zebranych elementów ======
Ustalamy nazwę jednostki z funkcji: {{Code|{{sr|#p.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem|p=StronicowyParser/Potrzebne}}}}, i inicjujemy tą wartością, czyli: {{Code|nazwa jednostki}} {{Patrz|nazwa jednostki}}, wartość starą: {{Code|stara_nazwa_jednostki}} {{Patrz|stara_nazwa_jednostki}}, według:
<syntaxhighlight lang="lua">
---- Piszanie pełnej nazwy jednostki bez parametrów i nagłówka;
local nazwa_jednostki=stronicowyparser_potrzebne_modul.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(tab_pozycja_elementow_w_spisie_rzeczy[1],false);
---- Inicjowanie starej wartości tą policzoną;
local stara_nazwa_jednostki=nazwa_jednostki;
</syntaxhighlight>
Dalej {{Śródtekst|uchwyt=tabela_rozdzial_artykulow2|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}}}, według:
<syntaxhighlight lang="lua">
if(not tabela_rozdzial_artykulow2[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow2[numer_rodzaju_artykulu_w_podreczniku]={};end;
</syntaxhighlight>
Co {{Śródtekst|uchwyt=linia_artykokow|tekst=dalej linię artykułów {{Code|linia_artykokow}} {{LinkPatrz|linia_artykokow}}, kompletujemy, funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, z modułu: {{Code|{{ld2|Szablonowe}}}}, znając tablicę: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}}}, według:
<syntaxhighlight lang="lua">
linia_artykokow=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_artykokow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
</syntaxhighlight>
====== Uwzględnianie niepodanego elementu nienagłówkowego w tablicy zebranych parametrów ======
Gdy tablica przekierowania: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, istnieje, wtedy sprawdzamy, czy zmienna logiczna: {{Code|czy_tablica}} {{LinkPatrz|czy_tablica}}, jest prawdą i czy: {{Code|stara_nazwa_jednostki}} {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej: {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie artykułu przekierowania.
Inicjujemy nową zmienną: {{Code|przekierowanie}} {{LinkPatrz|przekierowanie}}, z artykułu, parametrów i nagłówka, ale wpierw sprawdzamy, czy dwa ostatnie istnieją, według:
<syntaxhighlight lang="lua">
przekierowanie=przekierowanie and ((tablica_przekierowania[3] or tablica_przekierowania[4]) and {przekierowanie, tablica_przekierowania[3], tablica_przekierowania[4],["LINK"]=true,}or przekierowanie) or nil;
</syntaxhighlight>
Tworzony jest nowy element: {{Code|nazwa jednostki}} {{Patrz|nazwajednostki-nowy}}, z: {{LinkPatrz|nazwa jednostki}}, parametrów i nagłówka, według rysu:
<syntaxhighlight lang="lua">
nazwa_jednostki={nazwa_jednostki, tab_pozycja_elementow_w_spisie_rzeczy[1][2], tab_pozycja_elementow_w_spisie_rzeczy[1][3],["LINK"]=true,};
</syntaxhighlight>
Jeżeli parametr drugi: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}.
Wsadzamy element: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, do zbioru: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, przy pomocy funkcji: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Następnie jej drugiemu elementowi: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, do tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}, na pozycji: {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, według funkcji: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej.
Jeżeli tablica przekierowania: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, jednak nie istnieje, wtedy tak samo sprawdzamy, co poprzednio potem, ale po spełnieniu tych warunków robimy inną tablicą: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, i tę tablicę robimy podobnie, i inicjujemy te same elementy też podobnie.
====== Uwzględnianie pozycji podanej w tablicy zebranych elementów ======
Tworzymy zmienną: {{Code|ile_dodac_do_poziomu_artykulu}} {{Patrz|ile_dodac_do_poziomu_artykulu}}, z drugiego elementu tablicy: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, następnię tworzymy inną zmienną: {{Code|ile_dodac_do_poziomu_artykulu_lub_nil}} {{Patrz|ile_dodac_do_poziomu_artykulu_lub_nil}}, co uwidaczniamy wzorem:
<syntaxhighlight lang="lua">
local ile_dodac_do_poziomu_artykulu_lub_nil=((ile_dodac_do_poziomu_artykulu)and(ile_dodac_do_poziomu_artykulu>0))and ile_dodac_do_poziomu_artykulu or nil;
</syntaxhighlight>
Tą zmienną wykorzystamy do sformułowania: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}.
{{Śródtekst|tekst=Tworzymy zmienną: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}, na pozycji: {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, przy pomocy funkcji: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.|uchwyt=__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|>{{=}}}} {{Code|2}} =====
Będziemy tutaj operowali, gdy parametr drugi zwracany z funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, wskazuje na nie artykuł książki, zatem ten rozdział jest właśnie dla tego przypadku.
====== Odkodowanie i przygotowanie zmiennych artykułu linku, jej nazwy, także kodu języka i projektu ======
* Gdy pierwszy element tablicy: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}.
* Dla drugiego takiego elementu z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, co jest nazwą linku, wtedy gdy nazwa linku normalnego, czy szablonowego, jest zakodowana, to ją odkodujemy, którego każdy jego element kod odkodujemy według funkcji: {{LinkPatrz|p.DekodowanieTekstuNazwLinku}}, następnie z niej usuwamy znaki specjalne według: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, następnie usuwamy końcowe spacje i wewnątrz kolejne spacje zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
* Dla trzeciego i czwartego takiego elementu z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, te elementy odkodujemy, następnie z nich usuwamy końcowe spacje, a wewnątrz kolejne spacje zastępujemy jedną, według tej samej funkcji, co powyżej.
====== Przygotowanie zmiennych, inicjowanie tablicy: {{Code|tab_stare}}, i wsadzanie jej do tablicy ogólnej: {{Code|tabela_rozdzial_artykulow2}} ======
Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow2}}, także co {{PobierzŚródtekst|linia_artykokow}}, co wszystko robimy podobnie jak w rozdziale: {{LinkŚródtytuł|inicjacja_i_kompletowanie_zmiennych}}.
{{PobierzŚródtekst|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
==== Definicja tablicy: {{Code|tab_stare}}, inicjowanie jej elementów w różnych przypadkach ====
Przedstawiamy tutaj ogólną definicję zmiennej: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. Ta wersja jest jedynie sformułowana dla artykułów w rozdziale, a nie dla rozdziałów, bo w tablicy, do której jest ona wsadzana przyjmuje ona możliwy numerek od "2" do "13", a nie również "1". Jej wersja ogólna:
<syntaxhighlight lang="lua">
local tab_stare=
{
---- Początek elementów alternatywnych
{
---- Początek wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[1], -- artykuł bez pełnej nazwy ksiązki, bez parametrów i nagłówka, bo ich nie posiadałna samym początku;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- artykuł bez pełnej nazwy książki, bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[2], -- nazwa linku artykułu normalnego, czy szablonowego;
---- Początek elementów alternatywnych dla przekierowania
---- Poczatek parametrów przekierowania
{
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
tablica_przekierowania[3], -- parametry przekierowania artykułu;
tablica_przekierowania[4], -- nagłówek przekierowania artykułu;
["LINK"]=true, -- zmienna świadcząca, że nazwa przekierowania artykułu jest z parametrami i nagłówkiem;
},
---- lub
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
---- Koniec parametrów przekierowania
tablica_przekierowania[1], -- tablica o definicji: {
nazwa_przestrzeni_strony_przekierowania, -- nazwa przestrzzeni nazw przekierowania artykułu;
nazwa_przestrzeni_ksiazki_strony_przekierowania, -- nazwa przestrzeni książki przekierowania artykułu;
nazwa_ksiazki_strony_przekierowania, -- nazwa książki orzekierowania artykułu;
true/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce;
true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie;
czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach;
};
---- lub
nil, -- dotycząca przekierowania artykułu, a tutaj strona nie ma przekierowania, więc: nil;
nil, -- dotycząca tablicy książki, na którą wskazuje przekierowanie, a tutaj nie ma tablicy, więc: nil;
---- Koniec elementów alternatywnych dla przekierowania
tab_pozycja_elementow_w_spisie_rzeczy[3], -- kod języka;
tab_pozycja_elementow_w_spisie_rzeczy[4], -- kod projektu;
tab_pozycja_elementow_w_spisie_rzeczy[5], -- adres artykułu bez przetworzenia w linku normalnym,czy szablonowym;
ile_dodac_do_poziomu_artykulu_lub_nil, -- parametr mający tylko wartości: 1, gdy do aktualnego poziomu musi być dodane jeden - ta wartość, tylko dotyczy artykułów należących do tej samej książki, lub: nil, gdy nic, czyli w pozostałych przypadkach;
tab_pozycja_elementow_w_spisie_rzeczy[6], -- "url", pozycja świadcząca, że to jest link zewnętrzny, a nil, gdy to jest normalny link;
},
---- lub
tab_pozycja_elementow_w_spisie_rzeczy[1], -- nazwa artykułu linku, która nie posiada, ani parametrów w sobie, a po nim nagłówka, lub bezpośrednio po nazwie;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- nazwa artykułu bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec elementów alternatywnych
{
#przedrostek_listy, -- poziom listy, w którym jest artykuł, dla artykułów w linii z listą, w innym wypadku dla artykułu znajdującego się w rozdziale dodatnim, czy ujemnym jest zero;
przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])", przeciwnie dla artykułów w rozdziale dodatnim ma wartość pustą;
tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu, gdy nie ma takiej numeracji, bo nie da się jej wydzielić, to ma wartość pustą;
w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym, wtedy "true", w przeciwnym wypadku: "false";
},
linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare";
true/false, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: false;
true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika, przeciwnie: false;
---- Początek elementów alternaatywnych
Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow2), -- który numer artykułu, w momencie wsadzenia do tabeli zbierania rozdziałów i w nich artykułów, nawet w rozdziale;
---- lub
nil, -- nil, wtedy gdy link jest tak sobie dodany, który nie należy do żadnego spisu, a po nim elementy jego z nagłówkiem natomiast należą;
---- Koniec elementów alternatywnych
};
</syntaxhighlight>
W powyższym: {{Tag|syntaxhighlight|parametry=lang="lua"}}, dla elementu: {{Code|<nowiki>---- lub</nowiki>}}, jest powiedziane, że są dostępne alternatywy, które są zawarte w tablicy, że wybieramy te, aby nie spowodować czysto podwójnej tablicy, aby każda tablica zawierały inne elementy, jak wiele, a nie jedną tablicę, jak i łańcuchy znaków, wartość nil, powoduje, że czy ma być taka tablica, ale nie podwójna, co to znaczy podowójna, tzn. tablica w sobie zawiera inną jedyną tablicę, a tak nie może być, a jak zawiera jedną tablicę, to musi posiadać inne nienilowe elementy.
== Funkcje tablicy transportu ==
=== {{Śródtytuł|p.AnalizaNapisuWprowadzeniaTekstu}}{{Code|p.AnalizaNapisuWprowadzeniaTekstu}} ===
Funkcja przyjmuje jako parametr nieskompletowaną i nieprzetworzony tekst napisu wprowadzenia tekstu. On kompletujei przekształca go w odpowiedni sposób,aby otrzymać czysty tekst tytułu rozdziału.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AnalizaNapisuWprowadzeniaTekstu(rozdzial,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|rozdzial}} | _1 = Ten tekst tytułu rozdziału, o którym mówimy.
| 2 = {{Code|pelna_nazwa_spisu_tresci}} | _2 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci}}
| 3 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _3 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _5 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
==== Obiekty typu {{nobold|{{Code|SZABLON}}}} ====
Funkcja korzysta z funkcji: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, funkcja ma zdefiniowaną pierwszą jej funkcję, która dla: {{Code|obiekt {{=}} "SZABLON"}}, używamy pierwsze dwie tabelę, te tabele:
Pierwsza {{Patrz|szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu}}, która służy do zamieniania szablonów na ich parametry, tutaj pierwsza, to jest tablica: {{Code|{{sr|#p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu}}:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu={
["MDL:RozszerzonyLink"]=1,
["Kompletność"]="",
["Kompletność krótka"]="",
["Kompletność junior"]="",
["Książka"]="",
};
</syntaxhighlight>
Druga: {{Code|{{sr|#p.szablony_dozwolone_w_nazwach_linkowych|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_dozwolone_w_nazwach_linkowych}}, też służy do tego samego.
Funkcja wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja {{Patrz|p.szablony_dozwolone_w_nazwach_linkowych}}:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_w_nazwach_linkowych={
["Korekta"] =2,
};
</syntaxhighlight>
===== Funkcje zawartości i dodatków, dla szablonów =====
One służą do zamieniania wywołań szablonowych na odpowiednie ich zawartości parametrów określone przez numery parametrów tych elementów w tch tabelach. Jeżeli przy którym wywolaniu przy wykorzystaniu kolejnych tych tabel przy użyciu funkcji: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, nastąpiło zamienienie, to funkcja pierwsza w: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, zakańcza się z tą wartością. A jeżeli nie to uruchamia się funkcj dodatków: {{Code|{{sr|#p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu|p=StronicowyParser/Rozdziały}}}}, a jeśli nastąpiło zastąpienie, to funkcja kompletowania się kończy z tą wartością.
===== Szablonowe linki =====
Dalej jeżeli tak się nie stało, to uruchamia się funkcja parametrów, w którym wywołanie szablonowe jest rozkładane na nazwę szablonu, modyfikatory i parametry. Dalej jest spradzanie , czy jest to link inteligentny według funkcji: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}, a gdy jest, to funkcja kończy swoje działania z nazwą tego linku lub jego adreesem wewnętrznym, a jeśli on nie jest tym, to sprawdza, czy są inne szablonowe linki, które podejrzewa się poprzez wywołanie funkcji: {{Code|{{sr|#p.NazwaInnegoSzablonowegoLinkowegoObiektu|p=StronicowyParser/Potrzebne}}}}, a jeżeli jest tym linkiem, to funkcja składania zwraca też jak poprzednio nazwę linku lub jego adres wewnętrzny, ewentualnie z dodatkiem. A gdy nie, to w innym przypadku sprawwdzane, czy to jest inny link wewnętrzny generowane przez szablony, która spradza funkcja tutaj: {{Code|{{sr|#p.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy|p=StronicowyParser/Potrzebne}}}}, a jeżeli szablon jest tym linkiem, to kunkcja składania zwraca jego nazwę linkową.
===== Szablony rozwijane przez {{lpg|JavaScript}} =====
A następnym krokiem jest sprawdzanie, czy nazwa szablonu jest jednych z elementów z tablicy: {{LinkPatrz|P.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu}}, która ma ten element, te szablony wymienione w tej tablicy są po to, aby służyły do rozwijania przez JavaScript, są to elementy wikikodu, które są pracochłonne ze względu na ich skomplikowany kod, czy wikikod, nawet {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, i dlatego ich się nie rozwija przez stronicowy parser: {{Code|{{ld2|StronicowyParser}}}}, te nazwy szablonów są określone tablicą: {{Code|{{sr|#p.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu}}:
<syntaxhighlight lang="lua">
p.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu={
["Cytuj"]=true,
["Cytuj stronę"]=true,
["Cytuj pismo"]=true,
["Cytuj odcinek"]=true,
["Cytuj książkę"]=true,
["Cytuj grę komputerową"]=true,
};
</syntaxhighlight>
I funkcja wtedy zwraca zkompletowany szablon bez rozwijania jego, pod warunkiemjeżeli jest tym szablonem o tej nazwę szablonu wywołującego.
===== Co jest zwracane w przypadku szablonów =====
Te powyżej elementy dla funkcji parametrów, w niej wartości są zwracane do niej, a jeżeli ona przyjmuje wartość nienilową, to do funkcji składania zwracana jest jego wartość, a przeciwnie jest zwracane pierwszy parametr szablonu do niej.
==== Obiekty typu: {{nobold|{{Code|NOWIKI}}}}, {{nobold|{{Code|PRE}}}} i {{nobold|{{Code|ŹRÓDŁO}}}} ====
A gdy dla elementów, jeśli nazwa obiektu jest: {{Code|obiekt {{=}} "NOWIKI"}}, {{Code|obiekt {{=}} "PRE"}}, lub: {{Code|obiekt {{=}} "ŹRÓDŁO"}}, znacznik jest rozkładany na czynniki pierwsze, a jeżeli nnie ma zawartości, to przez funkcję skłądania jest zwracana wartość pusta, a jeśli nie, to pewne znaki specjalne tagu {{Tag|nowiki}}, które mają w nim być zamienione na tekst, są zamieniane na kody '''HTML''', co po zamienieniu ta ona jest zwracana.
==== Obiekty typu: {{nobold|{{Code|MATH}}}}, {{nobold|{{Code|GALERIA}}}}, {{nobold|{{Code|MAPAOBRAZU}}}}, i {{nobold|{{Code|INNEPRE}}}} ====
A jeżeli wartość: {{Code|obiekt}}, jest nie równa: {{Code|MATH}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} lub {{Code|INNEPRE}}, wtedy z zawartości zmiennej: {{Code|szablon}}, są wykorzystanne funkcje z modułu: {{Code|{{ld2|Specjalne}}}}, które w tej podanej zmiennej są usuwane z komentarze z: {{Code|{{sr|#p["UsuńKomentarze"]|p=Specjalne}}}}, zamieniane są linki zewnętrzne i wewnętrzne na ich nazwy lub adresy według: {{Code|{{sr|#p["ZamieńLinkiZewnętrzneNaTekst"]|p=Specjalne}}}} i {{Code|{{sr|#p["ZamieńLinkiWewnętrzneNaTekst"]|p=Specjalne}}}}. Są usuwane rozwinięte znaczniki szablonów stylów używając do tego celu: {{Code|{{sr|#p["UsuńSzablonyStylów"]|p=Specjalne}}}}. Są też usuwane znaczniki na podstawie: {{Code|{{sr|#p["UsuńZnaczniki"]|p=Specjalne}}}}. Z tekstu szablonu są usuwane normalne kategorie nieszablonowe: {{Code|{{sr|#p"UsuńKategorie"]|p=Specjalne}}}}. Są też usuwane z zawartości wywołania plików i interwiki z: {{Code|{{sr|#p["UsuńWywołaniaPlików"]|p=Specjalne}}}} i {{Code|{{sr|#p["UsuńInterwiki"]|p=Specjalne}}}}. Dalej z tego obiektu są usuwane znaki specjalne z: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}.
A gdy mamy do czynienia z innymi znacznikami, to są zwracane jest zamiast niego wartość pusta do funkcji kompletowania.
Dane z funkcji kompletowane są zwracane, które z niej są usuwane znaki specjalne z całości tekstu rozdziału: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, i znaki białe z końców tekstu i powtarzarzające się te znaki kolejne z wewnętrz są zamieniane na jedną spację, to się dzieje według funkcji: {{Code|{{sr|#p["UsuńZbędneBiałeZnaki"]|p=Specjalne}}}}.
Cały taki wynik operacji robione w funkcji w nagłówku są zwracane do niej, to jest, co uzyskujemy nazwa rozdziału w postaci przetworzonej.
=== {{Śródtytuł|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}{{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} ===
Opisane tutaj są podfunkcje, z których korzysta ta funkcja, co one robią, do czego są wykorzystane.
==== Opis funkcji: {{nobold|{{Patrz|opis funkcji-ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}}} ====
Funkcja służy do zbierania nagłówków i z niej danych,tzn. linków normalnych i inteligentnych, a także są zbierane nagłówki z listy bez artykułów i do nich elementy podlisty z artykułami w postaci wywołań linkowych w niej. Tworzona jest specjalnie dla niegp tablica: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, która w odpowiedni po przekształaceniach wsadzana jest do tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} | _1 = Jak w: {{LinkPatrz|self}}.
| 2 = {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} | _2 = Kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}.
| 3 = {{Code|nazwa_spisu_tresci}} | _3 = Jak w: {{LinkPatrz|nazwa_spisu_tresci}}.
| 4 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _4 = Czy dany spis treści dla książki dla jej artykułu korzystanego, dla innej książki, wtedy to artykuł niekorzystany.
| 5 = {{Code|adres_ksiazki_glownego_spisu_tresci}} {{Patrz|adres_ksiazki_glownego_spisu_tresci}} | _5 = Jest to wewnętrzny adres książki głównego spisu treści,jest to taki adresm na który wskazuje przekierowanie innej książki.
| 6 = {{Code|__FUNKCJA_ZBIERANIA_DANYCH}} {{Patrz|__FUNKCJA_ZBIERANIA_DANYCH}} | _6 = Jest to funkcja, która zbiera informacje o aktualnym artykule, która jest spisem treści, w postaci nieprzetworzonej przez funkcje z modułu: {{Code|{{ld2|StronicowyParser/Rozdziały}}}}, opisanego w: {{Code|{{sr|Rozdziały|StronicowyParser - Rozdziały|p=StronicowyParser}}}}, ta funkcja kopiuje, np. tabele danych bazy modułu: {{Code|{{m|Szablonowe}}}}, tzn: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, i tabelę rozkładu elementów w niej na czynniki pierwsze, tzn.: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, co jest napisane w module: {{Code|{{ld2|StronicowyParser/ZbieranieDanychStron}}}}, a w dokumentacji: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}.
}}
==== Funkcje lokalne ====
Funkcja ma w sobie też definicję funkcji lokalnych zdefiniowanej w tej funkcji tutaj opisywanej.
===== {{Śródtytuł|FunkcjaIteratoraTekstuZakodowego}}{{Code|FunkcjaIteratoraTekstuZakodowego}} =====
Funkcja służy do pomijania tego, co nie jest linkiem wewnętrznym, czy zewnętrznym, czyli oznaczone kodami: {{Code|LINKW}} lub {{Code|LINKZ}}, czy nawet szablonem linkuinteligentnego, czy innego służacego do generowania spisu treści, do tego celu również używa funkcji: {{LinkŚródtytuł|CzySzablonLinkLubLicencja}}, oraz tego co nie jest w liście okreslonym wzorem {{Code|<nowiki>\n([#:*;]+)</nowiki>}} z mozliwym na początku tekstem, ale nie z kodami, w danej pozycji listy, lub co ewentualnie nie może być w możliwej liście, tzn.: {{Code|<nowiki>\n([#:*;]*)</nowiki>}}, ale wtedy musi tam być z tekstem, ale nie z kodami, na początku danej pozycji listy, nawet jeśli to nie jest lista, to też tak samo.
Jeżeli funkcja nie ma kodów linków wewnętrznych, czy to normalnych, czy szablonowych, to się zakańcza z wartością domyślną {{Code|nil}}, w przeciwnym wypadku do sprawdzenia używa do tego funkcji: {{LinkŚródtytuł|PomijajLinkiOrazLicencje}}, do sprawdzania, czy to jest link lub licencji, a jeżeli ta funkcja zwraca wartość {{Code|true}}, to cała funkcja zwraca {{Code|nil}}. Jeżeli oba te sposoby nie dały rezultatu {{Code|true}}, to wtedy funkcja zwraca wartość pustą, czyli okreslonym ciągiem znakowym o szwerokości zerowej.
Funkcja ma w sobie dwie definicje funkcji: {{LinkŚródtytuł|PomijajLinkiOrazLicencje}} i {{LinkŚródtytuł|CzySzablonLinkLubLicencja}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local FunkcjaIteratoraTekstuZakodowego=function(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}.
| 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}.
| 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod}}.
}}
====== {{Śródtytuł|PomijajLinkiOrazLicencje}}{{Code|PomijajLinkiOrazLicencje}} ======
Funkcja służy do sprawdzania, czy są odpowiednie szablony w kodzie.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function PomijajLinkiOrazLicencje(szablon)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}.
}}
Funkcja sprawdza, czy to są szablony spisu treści określone tablicą o kluczach, którymi są nazwy szablonów, z wartościami {{Code|true}}, czyli: {{Code|{{sr|#p.szablony_licencji|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_licencji}}:
<syntaxhighlight lang="lua">
p.szablony_licencji={
["Licencja"]=true,
};
</syntaxhighlight>
Tzn., czy to są szablony ozdobne woluminu, którego tablica: {{Code|{{sr|#p.szablony_ozdobne_stron_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_ozdobne_stron_woluminu}}, jest podobnie zbudowana, co poprzednia:
<syntaxhighlight lang="lua">
p.szablony_ozdobne_stron_woluminu={
["MDL:RozszerzonyLink"]=true,
};
</syntaxhighlight>
A jeżeli to są te szablony, to funkcja zwraca wartość {{Code|true}}.
Jeżeli jednak to nie są te szablony, należy użyć tablic, tak samo zbudowanej jak poprzednie, czyli: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.linki_szablony_elementy_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.linki_szablony_elementy_spisu_rzeczy={
["SpisTreści"]=true,
["Sekcja referencyjna"]=true,
["Sr"]=true,
["Link wewnętrzny"]=true,
["Ly"]=true,
["LinkOgólne"]=true,
["Lo"]=true,
};
</syntaxhighlight>
lub innej, inaczej zbudowanej niż poprzednie, ale ważne, że ma wartość niefałszywą, czyli taką tablicą: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}, jest:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
Jak są te nazwy szablonów określone ich kluczami tych tablic, to funkcja zwraca wartość {{Code|true}}. A jeżeli jednak nie to funkcją: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}, jest sprawdzane,czy to jest link inteligentny, nawet przekierowanie, jeżeli link taki jest, to funkcja zwraca wartość w tym wypadku {{Code|true}}. W przeciwnym wypadku, jak nie zwrócił tej wartości,bo taka nie jest nazwa szablonu, to funkcja nic nie zwraca.
====== {{Śródtytuł|CzySzablonLinkLubLicencja}}{{Code|CzySzablonLinkLubLicencja}} ======
Funkcja sprawdzająca za pomocą: {{LinkŚródtytuł|PomijajLinkiOrazLicencje}}, na podstawie parsowania tekstu szablonu funkcją: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, z parsowanym przechwytywanym typem obiektu: {{Code|obiekt}} {{LinkPatrz|obiekt}}, równym {{Code|SZABLON}}. A jeżeli funkcja ta wspomniana w tekście zwróci {{Code|true}}, to funkcja taki obiekt policzy.
Jeżeli liczba policzonych obiektów i znalezionych w wyniku parsowania jest większa od zera, to funkcja w nagłówku zwróci wartość {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local CzySzablonLinkLubLicencja=function(szablon)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}.
}}
===== {{Śródtytuł|iteratorTekstuNaglowka}}{{Code|iteratorTekstuNaglowka}} =====
Jest to funkcja iteratora, którego funkcja zwracana (iterator) zwraca parametry, dla rozdziałów dodatnich i pozycji list.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function iteratorTekstuNaglowka()
... ---- Kod przed zwróceniem iteratora;
return function()
... ---- Ciało funkcji iteratora;
end;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = Brak parametrów. | komórka1 = tak
}}
Iterator (funkcja zwracana przez funkcję w nagłówku) zwraca parametry w wyniku kolejnych wywołań:
<syntaxhighlight lang="lua">
return przedrostek_listy,tekstowy_przedrostek,wyzyskane_wywolanie_szablonu_spis_tresci,true/false;
</syntaxhighlight>
Parametry zwracane przez iterator:
{{OpisParametrów
| 1 = {{Code|przedrostek_listy}} | _1 = Przedrostek pozycji listy, dla rozdziałów dodatnich jest wartością pustą.
| 2 = {{Code|tekstowy_przedrostek}} | _2 = Numeracja pozycji w liście lub w nagłówku dodatnim.
| 3 = {{Code|wyzyskane_wywolanie_szablonu_spis_tresci}} | _3 = Jest to rozdział bez numeracji i przedrostka pozycji listy.
| 4 = {{Code|true/false}} | _4 = Wartość {{Code|true}} świadczy o rozdziale dodatnim, a w przypadku innym funkcja zwraca zawsze wartość tą {{Code|false}} jako ostatni element zwracany.
}}
Funkcja jest przykowana na rozdziałów dodatnich i pozycji list oraz innych linii, dla tego pierwszego funkcja zwraca:
<syntaxhighlight lang="lua">
return "","",wartosc,true;
</syntaxhighlight>
Gdzie {{Code|wartość}} jest to zawartość napisu wprowadzenia tekstu (rozdziału dodatniego).
W przypadku list oraz innych niż rozdziały dodatnie samo wyrażenie regularne {{lpg|Lua}} w {{lpr|Lua|Scribunto}} jest okreslone przez wyrażenie:
<syntaxhighlight lang="lua">
local re="([#:*;]*)[^%S\n]*([%d%.]*[^%S\n]*[^\n]+)";
</syntaxhighlight>
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu|p=StronicowyParser/Rozdziały}}}}, aby zamienić zawartość pozycji listy na rozdział bez numeracji i numerację, i dlatego ta funkcja zwraca te dwie wartości. Gdy funkcja jak nie znajdzie więcej linii (wyszukań), to zwraca wartość {{Code|nil}} mówiąca o zakończeniu iteracji iteratora, tzn. dane dla iteratora się zakończyły.
===== {{Śródtytuł|LiniaArtykulow}}{{Code|LiniaArtykulow}} =====
Funkcja dla szablonów kompletowania określonym tabelką: {{Code|{{sr|#p.szablony_kompletowania_stron_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_kompletowania_stron_woluminu}}, o definicji:
<syntaxhighlight lang="lua">
p.szablony_kompletowania_stron_woluminu={
["Kompletność"]=true,
["Kompletność krótka"]=true,
["Kompletność junior"]=true,
["Książka"]=true,
};
</syntaxhighlight>
Rozdziela linię na wiele obsługiwanych podlinii.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function LiniaArtykulow(linia)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|linia}} {{Patrz|linia}} | _1 = Pojedyncza przetworzona linia.
}}
====== {{Śródtytuł|SzablonAnalizujKompletnosc}}{{Code|SzablonAnalizujKompletnosc}} ======
Funkcja sprawdza, czy dane wywołania szablonu, ma swoją nazwę szablonu, która jest nazwą szablonu kompletowania.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function SzablonAnalizujKompletnosc(szablon)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}.
}}
====== Dalszy opis funkcji ======
Możliwe są dwie opcje, szablon kompletowania jest pierwszy, a drugi drugi, lub odwrotnie. Funkcja obsługuje te oba przypadki. Ona stawia przecinkiem dla obu wersji ustawień, jeśli potraktować układem link i szablon kompletowania, to wstawiany jest on pomiędzy tymi układami, aby rozdzielić linię, a w liście bez jego znaków pozycji, na elementy przy pomocy funkcji: {{LzLua|mw.text.split}}, z opcją jako drugi parametr, aby uwzględniał wyrażenia regularne {{Code|false}}. W tych rozdzielonych linią tą funkcją dzielącą ciąg znakowy na tabelę, kody '''HTML''' przecinka są zamieniane na zwykły przecinek.
Funkcja zwraca tabelę podzielonej linii na mniejsze podlinie, który można iterować funkcją: {{Code|pairs}} lub {{Code|ipairs}}.
===== {{Śródtytuł|WsadzanieParametryDoTablicy}}{{Code|WsadzanieParametryDoTablicy}} =====
Funkcja z parametrami, która uruchamia inną funkcję uruchamianą w: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}, która wstawia tabelę {{LinkPatrz|tab_stare}}, do ogólnej tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}, ewentualnie do {{Code|tabela_rozdzial_artykulow}} {{Patrz|tabela_rozdzial_artykulow}} na pozycję {{Code|numer_podtablicy_w_tablicy}} {{Patrz|numer_podtablicy_w_tablicy}}, a dokładniej na pozycję {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}} w funkcji {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function WsadzanieParametryDoTablicy(linia,czy_linia_uwzgledniana)
return function(tabela_rozdzial_artykulow2,numer_podtablicy_w_tablicy,tab_stare)
... ---- ciało funkcji.
end;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|linia}} | _1 = Jak w: {{LinkPatrz|linia}}.
| 2 = {{Code|czy_linia_uwzgledniana}} {{Patrz|czy_linia_uwzgledniana}} | _2 = Czy linię ma uwzględnić w powiększaniu poziomu o jeden dla artykułu.
}}
Parametry zwracanej funkcji przez tę w nagłówku:
{{OpisParametrów
| 1 = {{Code|tabela_rozdzial_artykulow2}} | _1 = Jak w: {{LinkPatrz|tabela_rozdzial_artykulow2}}.
| 2 = {{Code|numer_podtablicy_w_tablicy}} | _2 = Jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}.
| 3 = {{Code|tab_stare}} | _3 = Jak w: {{LinkPatrz|tab_stare}}.
}}
====== {{Śródtytuł|CzyZaliczac}}{{Code|CzyZaliczac}} ======
Funkcja sprawdza, czy z początkiem linii pozycji listy, bez przedrostka listy, jest z możliwym cudzysłowem, po którym następują liczby, litery, lub myślniki dolne, w takim pzypadku linia nie może składać się z nich, po ktorym występują znaki interpunkcyjne. Jeśli to sprawdzenie było pozytywne funkcja zwraca wartość logiczną odpwowiadającą {{Code|true}}, w przeciwnym wypadku jak {{Code|false}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function CzyZaliczac()...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = Brak parametrów funkcji. | komórka1 = tak
}}
Funkcja zwraca informację, czy daną linię traktować jako rozdział, chodzi tu o pozycje list, a w przypadku rozdziałów dodatnich wiadomo, że one są właśnie, że rozdziałami.
====== Dalszy opis funkcji ======
Funkcja sprawdza w funkcji zwracanej, czy rozważany rozdział jest centrowany danego artykułu, który siedzi pod rozdziałem lub w samym rozdziale, sprawdza, czy artykuł jest w rozdziale, sprawdza czy linia jest uwzględniana: {{Code|czy_linia_uwzgledniana}} {{LinkPatrz|czy_linia_uwzgledniana}}. Funkcja sprawdza, czy sekcja czy w: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, czy istnieje element: {{Code|tab_stare[2]}} {{Patrz|tab_stare[2]}}, i dalszy: {{Code|tab_stare[2][1]}} {{Patrz|tab_stare[2][1]}} - ten element jest to w: {{Code|tab_stare}}, taki: {{Code|#przedrostek_listy}} {{Patrz|#przedrostek_listy}}, a jeżeli to sprawdzenie przeszło pozytywnie, który dla tego jest poziomem listy, lub zerowego rozdziału lub rozdziału dodatniego.
Dla każdej linii zmienna: {{Code|nowa_linia}} {{Patrz|nowa_linia}}, przyjmuje wartość {{Code|false}}, wtedy dla przypadku przeciwnego, tzn. gdy mamy rozdział i uwzględniamy artykuły w jednej linii, którym jest rozdział będacy pozycją listy, w zmiennej: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, jest ustawiany element: {{Code|tab_stare[2][4]}} {{Patrz|tab_stare[2][4]}}, czyli zmienna: {{Code|w_rozdziale}} {{LinkPatrz|w_rozdziale}}, zaczyna przyjmować wartość {{Code|true}}. Wsadzany jest wtedy do tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}, na pozycję: {{Code|numer_podtablicy_w_tablicy}} {{LinkPatrz|numer_podtablicy_w_tablicy}}, czyli to jest też: {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, element {{Code|tab_stare}} {{LinkPatrz|tab_stare}}.
Gdy: {{Code|nowa_linia}} {{LinkPatrz|nowa_linia}}, gdy jednak przyjmuje wartość {{Code|false}}, wtedy jeśli poziom rozdzialu istnieje i przedrostek listy {{LinkPatrz|#przedrostek_listy}} jest większy od zera, i istnieje wiele artykułów w pozycji liście, wtedy: {{Code|ile>0}}, lub funkcja: {{LinkŚródtytuł|CzyZaliczac}}, przyjmuje wartość odpowiadające prawdziwej, w taki przypadku zmiennej: {{Code|nowa_linia}} {{LinkPatrz|nowa_linia}}, przydzielamy wartość {{Code|true}}, by dalsze artykuły można było wsadzić, do tablicy z nowym rozdziałem. Powiększamy numer rozdziału o jeden, tzn.: {{Code|numer_rozdzialu_w_ksiazce}} {{Patrz|numer_rozdzialu_w_ksiazce}}, wtedy w zmiennej: {{Code|tabela_artykulow}} {{Patrz|tabela_artykulow}}, tabeli rozdziałów i w nich artykułów dla tej pozycji przydzielamy wartość równą tablicy pustej. Liczymy rozdział dla tego rozdział z artykułami, z funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}, liczymy napis rozdziału, wtedy do pierwszej pozycji tablicy utworzonej w: {{Code|tabela_artykulow}} {{LinkPatrz|tabela_artykulow}}, dla miejsca: {{Code|numer_rozdzialu_w_ksiazce}} {{LinkPatrz|numer_rozdzialu_w_ksiazce}}, czyli: {{Code|tabela_rozdzial_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}, piszemy:
<syntaxhighlight lang="lua">
tabela_rozdzial_artykulow[1]={rozdzial_na_tekst,{-#przedrostek_listy,przedrostek_listy,tekstowy_przedrostek,false,},linia,};
</syntaxhighlight>
Gdzie: {{Code|rozdzial_na_tekst}} {{Patrz|rozdzial_na_tekst}}, to policzony rozdział, {{Code|-#przedrostek_listy}} {{Patrz|-#przedrostek_listy}} to poziom rozdziału ujemnego, i dlatego minus. A: {{Code|przedrostek_listy}}, to znaki poczatkowe z listy: {{Code|wzor_do_linii_z_lista}} {{LinkPatrz|wzor_do_linii_z_lista}}, a: {{Code|tekstowy_przedrostek}}, to numeracja tego rozdziału. Wartość {{Code|false}} to jest ze ten rozdział nie jest centrowany, a: {{Code|linia}} {{LinkPatrz|linia}}, to wyzyskana linia bez początku pozycji listy. Ustawiamy: {{Code|tab_stare[2][4]}} {{LinkPatrz|tab_stare[2][4]}}, na wartość {{Code|true}} i element: {{Code|tab_stare[6]}} {{Patrz|tab_stare[6]}}, ustawiamy na zero. Tworzymy tablicę pustą na pozycję: {{LinkPatrz|numer_podtablicy_w_tablicy}}, tablicy: {{Code|tabela_rozdzial_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}, i do tej tablicy dodajemy: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, za pomocą funkcji: {{LzLua|table.insert}}.
A jeżeli nie jest tworzony nowy rozdział z listy w tabeli: {{Code|tabela_artykulow}} {{LinkPatrz|tabela_artykulow}}, to na pozycję: {{Code|numer_podtablicy_w_tablicy}} {{LinkPatrz|numer_podtablicy_w_tablicy}}, jest dodawany element: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, również tak jest robione, gdy artykuły znajdują się w rozdziale dodatnim, tzn. równaniowej lub centrowanej, tzn. wtedy: {{Code|w_rozdziale}} {{LinkPatrz|w_rozdziale}}, przyjmuje wartość {{Code|true}}.
===== {{Śródtytuł|AnalizaLiniiObiekty}}{{Code|AnalizaLiniiObiekty}} =====
Za pomocą funkcji: {{LinkŚródtytuł|LiniaArtykulow}}, linia: {{Code|linia_rozwazana}} {{Patrz|linia_rozwazana}}, jest rozdzielana na wiele linii. To wiele linii w postaci tabeli, są iterowane od: {{Code|k {{=}} 1}}, do: {{Code|k {{=}} #tab_linia}}, gdzie: {{Code|#tab_linia}} {{Patrz|#tab_linia}}, jest to długość linii, tzn. liczba elementów numerowanych tablicy, tzn. od 1 do zwyż aż do apotkania najbliższej przerwy lub końca. Wtedy dla pojedyńczej literacji mamy: {{Code|tab_linia[k]}} {{Patrz|tab_linia[k]}}.
Iterujemy po kodach dla linii: {{Code|tab_linia[k]}} {{LinkPatrz|tab_linia[k]}}, przy pomocy funkcji: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} {{Patrz|p.IteratorSzablonowyZakodowanegoTekstu}}, iteratorem: {{Code|iterator2}} {{Patrz|iterator2}}.
Inicjujemy zmienną: {{Code|tab_nieobslugiwane {{=}} nil}}, następnie iterujemy: {{LinkPatrz|iterator2}}, uzyskując w każdej iteracji: {{Code|szablon}} {{LinkPatrz|szablon}}, {{Code|obiekt}} {{LinkPatrz|obiekt}}, i {{Code|kod}} {{LinkPatrz|kod}}.
Gdy mamy do czynienia: {{Code|SZABLON}}, lub: {{Code|LINKW}}, albo: {{Code|LINKZ}}, wtedy dla elementów tego pierwszego bierzemy tablicę: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}, dla elementu: {{Code|nazwa_szablonu}} {{LinkPatrz|nazwa_szablonu}}.
Jeżeli ten element: {{Code|tabela_spisu}}, istnieje, element pierwszy: {{Code|tabela_spisu[1]}}, jest równy wartości {{Code|true}}, wtedy mamy do czynienia z szablonem {{s|SpisPozycja}}. Jej element: {{Code|tabela_spisu["numer_link"]}}, istnieje i jest równy: {{Code|tyt}} {{Patrz|tyt}}. Iterujemy po kluczach i jego wartościach tego szablonu i sprawdzamy, który element jest równy właśnie tej wartości, a jeżeli jest taki, to dla elementów nie równych niemu, a właściwie w jego wartości iterujemy po kodach funkcją: {{LinkPatrz|p.IteratorSzablonowyZakodowanegoTekstu}}, dla tej wartości, w ten sposób zbieramy tablicę wielowymiarową najpierw po: {{Code|obiekt}} {{LinkPatrz|obiekt}}, póżniej po: {{Code|kod}}, {{LinkPatrz|kod}}, którą nazwiemy: {{Code|tab_nieobslugiwane}} {{Patrz|tab_nieobslugiwane}}, którego każda jej wartość jest równa {{Code|true}}. Ta tablica mówi dla jakich elementów ma nie zbierać w tablicy elementów w głównej tablicy rozdziałów i jego artykułach.
Dla elementu {{Code|tyt}} {{LinkPatrz|tyt}} tablicy parametrów przedrostek listy {{Code|przedrostek_listy}} ustawiamy na pusty, i liczmy numerację {{Code|tekstowy_przedrostek}} i zmienną {{Code|szablon}} {{LinkPatrz|szablon}} i ustawiamy zmienną {{Code|przerwij}} {{Patrz|przerwij}} na {{Code|true}}, aby dla tego szablonu nie zbierać elementów w tablicy rozdziałów i jego artykułów.
W przypadku przeciwnym dla: {{Code|tabela_spisu}}, gdy ma wartość {{Code|false}}, wtedy mamy do czynienia z funkcją: {{s|SpisZw}}. Dla niej liczymy: {{Code|przedrostek_listy}}, którą ustawiamy na pustą wartość. A: {{Code|tekstowy_przedrostek}}, liczmy uzyskując parametr o kluczu: {{Code|tabela_spisu["numer"]}}, którym jest parametr o numerze: {{Code|1}}, i {{Code|szablon}} {{LinkPatrz|szablon}}, który liczmy z parametrów szablonu o kluczu {{Code|tabela_spisu["link"]}}, którym jest numer {{Code|2}}. Ustawiamy tutaj zmienną: {{Code|}} {{LinkPatrz|przerwij}}, na wartosć {{Code|true}}.
====== {{Śródtytuł|CzyObslugiwane}}{{Code|CzyObslugiwane}} ======
Funkcja sprawdzająca, które elementy są obsługiwane, jeśli istnieje tablica: {{Code|tab_nieobslugiwane}} {{LinkPatrz|tab_nieobslugiwane}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local CzyObslugiwane=function()...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = Brak parametrów. | komórka1 = tak
}}
====== Dalszy opis funkcji ======
; Uwzględnianie tablicy, reprezentujące artykuł w rozdziale, wstawiany do tablicy danego rozdziału{{dk}}
Sprawdzany jest warunek:
<syntaxhighlight lang="lua">
if((--[[wliczaj_artykuly_tego_rozdzialu]] true)and(not przerwij)and((not tab_nieobslugiwane)or(CzyObslugiwane())))then
</syntaxhighlight>
Jeżeli jest on spełniony, wtedy wywołujemy funkcję: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}, później dla:
<syntaxhighlight lang="lua">
if((not czy_obslugiwane)and(not numer_rodzaju_artykulu_poprz))then
</syntaxhighlight>
Sprawdzamy, czy jest zebrana licencja z autorem według zmiennej: {{Code|licencja_z_autorem}} {{Patrz|licencja_z_autorem}}, i sprawdzamy, czy: {{Code|szablon}} {{LinkPatrz|szablon}}, jest wnetrzem szablonu, jeżeli tak, to ona przyjmuje wartość odpowiadająca prawdziwej, przeciwnie ma fałszywą.
Jeżeli ten pierwszy warunek jest niespełniony, to tylko liczymy to samo coostatnio.
; Szablony licencji, i jego parametry, uwzględnianie jego tylko raz ca całą książkę, mieszcząca się w artykule głównej książki{{dk}}
Następnie dla warunku, który musi być spełniony:
<syntaxhighlight lang="lua">
if((not numer_rodzaju_artykulu_poprz)and(not przerwij)and(link_szablon)and((not tab_pozycja_elementow_w_spisie_rzeczy)or(not tab_pozycja_elementow_w_spisie_rzeczy[1]))and(czy_artykul_korzystany)and(licencja_z_autorem))then
</syntaxhighlight>
Sprawdzamy szablony licencji, takich jak: {{s|Licencja}}, według tablicy: {{Code|{{sr|#p.szablony_licencji|p=StronicowyParser/obiekty}}}}.
Dla parametrów szablonu, liczymy jego parametry o kluczach, tzn.: {{Code|Autor}} {{Patrz|Autor}}, {{Code|Ukończone szkoły}} {{Patrz|Ukończone szkoły}}, {{Code|Email}} {{Patrz|Email}}, {{Code|Dotyczy}} {{Patrz|DotyczyDotyczy}}, {{Code|Licencjonowanie}} {{Patrz|Licencjonowanie}}, {{Code|Umowa prawna}} {{Patrz|Umowa prawna}} i {{Code|Konsekwencje}} {{Patrz|Konsekwencje}}, którego wartości przydzielamy do odpowiednich zmiennych. Każdą z tych zmiennych kompletujemy funkcją: {{Code|{{sr|#p.DekodowanieTekstuDekodowanieTekstu|p=StronicowyParser/Potrzebne}}}}, poprzez zwracaną przez nią funkcję, w której jest wykorzystywana funkcją: {{LzLua|frame:preprocess}}, do rozwijania. A dla elementu istniejącego: {{Code|Autor}}, piszemy zmienną: {{Code|licencja_z_autorem}} {{LinkPatrz|licencja_z_autorem}}, któremu przydzielamy wartość {{Code|false}}, co spowoduje, że nie będziemy analizowali jeszcze raz innego szablonu licencji.
Te zmienne tego szablonu zbieramy natomiast w tablicy: {{Code|tabela_licencji_spisu_tresci}} {{Patrz|tabela_licencji_spisu_tresci}}, dane dotyczące licencji, więc:
<syntaxhighlight lang="lua">
tabela_licencji_spisu_tresci={autor, szkoly, email, dotyczy, licencjonowanie, umowa_prawna, konsekwencje};
</syntaxhighlight>
Co później przerywamy pętle po: {{Code|iterator2}} {{LinkPatrz|iterator2}}, instrukcją: {{Code|break}}.
==== Dalszy opis funkcji {{nobold|{{LinkPatrz|opis funkcji-ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}}} ====
Ściągamy tekst, tabelę bazy i tabelę parametrów strony o nazwie: {{Code|nazwa_modulu}}, przy pomocy funkcji: {{Code|{{sr|#p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony|p=StronicowyParser/Tekst}}}}, według:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=nil;
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
return nil;
end,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Uruchamiamy funkcję: {{Code|__FUNKCJA_ZBIERANIA_DANYCH}} {{LinkPatrz|__FUNKCJA_ZBIERANIA_DANYCH}}, jeżeli istnieje.
Dalej wywołujemy funkcję: {{Code|{{sr|#p.IterTekst|p=StronicowyParser/Rozdziały}}}}, w celu znalezienia tekstu: {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}}, i iteratora: {{Code|iterator}} {{Patrz|iterator}}, po napisach wprowadzenia tekstu rozdziałów i ich zawartości rozdziałów i na podstawie:
<syntaxhighlight lang="lua">
local iterator,tekst_rozwiniety_calego_artykulu=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,true,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,
__FUNKCJA, ---- funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adresu szablonu, określa i zawraca jego zawartość;
__FUNKCJA2, ---- funkcja operująca na przygotowanej zawartości napisu wprowadzenia tekstu i tekście napisu wprowadzenia tekstu (rozdziału);
__FUNKCJA_ANALIZA_SPISU ---- funkcja do analizy i modyfikacji tekstu (może zwracać wartość: nil) przed samym kodowaniem, jeżeli tekst jest w ogóle jest taki, a jeśli nie, ta funkcja wtedy nie jest uruchamiana, funkcja ta bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: IterTekst, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: SpisTreści, co jest uwidocznione w module: Moduł:StronicowyParser/SpisTreści;
);
</syntaxhighlight>
Opis parametrów zwracanych:
{{OpisParametrów
| 1 = {{Code|iterator}} {{Patrz|iterator-IterTekst}} | _1 = Iterator po rozdziałach i jego zawartościach.
| 2 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu-IterTekst}} | _2 = Tekst przetworzony rozdziału.
}}
Odczytujemy tabelę: {{LinkPatrz|p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu}} i dalej: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}, o definicji:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={
["spis treści"]=true,
["spis tresci"]=true,
["spis rzeczy"]=true,
};
</syntaxhighlight>
Robimy kopię tych tabel i przyłączamy do metatabeli: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, przy pomocy funkcji: {{LzLua|setmetatable}}, aby nie odrózniać tych rozdziałów ze względu na wielkość liter i polskie znaki.
Inicjiujemy zmienną: {{Code|numer_rozdzialu_w_ksiazce}} {{LinkPatrz|numer_rozdzialu_w_ksiazce}}, wartością: {{Code|1}}, aby zbierać po kolei artykuły ze poszczególnego pojedynczego spisu treści.
Ustawiamy maksymalny rozmiar rozdziału zerowego na {{Code|50}}, w zmiennej: {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{Patrz|maksymalny_rozmiar_rozdzialu_zerowego}}, według:
<syntaxhighlight lang="lua">
local maksymalny_rozmiar_rozdzialu_zerowego=50;
</syntaxhighlight>
===== {{Śródtytuł|AnalizaRozdzialu}}{{Code|AnalizaRozdzialu}} =====
Jest to funkcja do zbierania danych z pojedynczgo rozdziału o pewnej linii, inicjowana z jego parametrami, także tekstem rozdziału.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function AnalizaRozdzialu(rozdzial,linia_rozdzialu,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|rozdzial}} {{Patrz|rozdzial}} | _1 = Jest to tekst rozdziału.
| 2 = {{Code|linia_rozdzialu}} {{Patrz|linia_rozdzialu}} | _2 = Jest to linia z rozdziałem.
| 3 = {{Code|text}} {{Patrz|text}} | _3 = Jest to tekst rozdziału o pewnym napisie wprowadzenia tekstu.
| 4 = {{Code|poziom_rozdzialu}} {{Patrz|poziom_rozdzialu}} | _4 = Jest to poziom danego rozdziału.
| 5 = {{Code|poczatek_rozdzialu}} {{Patrz|poczatek_rozdzialu}} | _5 = Początek pozycji listy rozdziałów mechanizmu {{Strong|MediaWiki}}.
| 6 = {{Code|numeracja}} {{Patrz|numeracja}} | _6 = Numeracja rozdziału.
| 7 = {{Code|czy_rozdzial_centrowany}} {{Patrz|czy_rozdzial_centrowany}} | _7 = Czy dany rozdział jest centrowany.
}}
====== Tabela artykułów rozdziałów i w nich artykułów oraz jego poszczególnych ======
Tworzymy tabelę: {{Code|tabela_artykulow}} {{LinkPatrz|tabela_artykulow}}, jeżeli nie istnieje, z pustą tablicą, a później dla elementu: {{Code|numer_rozdzialu_w_ksiazce}} {{LinkPatrz|numer_rozdzialu_w_ksiazce}}, jeżeli też go nie ma, to też pustą tablicą. Dalej liczymy napis wprowadzenia tekstu rozdziału dodatniego funkcją: {{LinkŚródtytuł|p.AnalizaNapisuWprowadzeniaTekstu}} i uwzględniamy je w tabeli rozdziałów dla danego rozdziału pod wartością: {{Code|tabela_rozdzial_artykulow[1]}}, w sposób:
<syntaxhighlight lang="lua">
tabela_rozdzial_artykulow[1]={rozdzial_na_tekst,{poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany,},rozdzial,};
</syntaxhighlight>
Dalej wprowadzamy zmienną: {{Code|czy_spis_rzeczy_napis_wprowadzenia_tekstu}} {{Patrz|czy_spis_rzeczy_napis_wprowadzenia_tekstu}}, mówiącą teraz rozpatrujemy rozdziały i artykuły w ramach spisu treści o nagłówkach typu: {{Code|Spis treści}}, czy: {{Code|SPIS RZECZY}}. Jeżeli wyszliszmy poza to, to ta zmienna wtedy przyjmuje wartość fałszywą, a definicja inicjacji tej zmiennej jest:
<syntaxhighlight lang="lua">
local czy_spis_rzeczy_napis_wprowadzenia_tekstu=(poziom_rozdzialu)and(not czy_jest_spis_tresci)and(not dalej_nie_rozwazaj_spis_tresci)and(jakie_spisy_tresci[spreparowany_uzyskany_tekst_rozdzialu]);
</syntaxhighlight>
Gdzie:
{{OpisParametrów
| 1 = {{Code|poziom_rozdzialu}} | _1 = Jak w: {{LinkPatrz|poziom_rozdzialu}}.
| 2 = {{Code|czy_jest_spis_tresci}} {{Patrz|czy_jest_spis_tresci}} | _2 = Czy jesteśmy w spisie treści.
| 3 = {{Code|dalej_nie_rozwazaj_spis_tresci}} {{Patrz|dalej_nie_rozwazaj_spis_tresci}} | _3 = Zmienna mówiąca, że teraz jesteśmy poza spisem treści.
}}
====== Kiedy uwzględniamy artykuły rozdziału ======
Jeżeli jesteśmy w spisie, to zawsze są uwzględniane artykuły rozdziału, bo jest ustawiona zmienna: {{Code|wliczaj_artykuly_tego_rozdzialu}} {{LinkPatrz|wliczaj_artykuly_tego_rozdzialu}}, na {{Code|true}}, a poza na {{Code|nil}}.
Funkcja jest przyszykowana jest dla jednego spisu treści, o ściśle określonym specjalnym napisie wprowadzenia tekstu, w danym spisie na stronie.
====== Iterator linii artykułu spis treści ======
Uruchamiamy iterator używając funkcji lokalnej: {{LinkŚródtytuł|iteratorTekstuNaglowka}}, według wywołania:
<syntaxhighlight lang="lua">
local iterator=iteratorTekstuNaglowka();
</syntaxhighlight>
Ustawiamy zmienną: {{Code|wliczaj_artykuly_tego_rozdzialu}} {{LinkPatrz|wliczaj_artykuly_tego_rozdzialu}}, aby wliczał lub nie, pewne artykuły rozdziału według:
<syntaxhighlight lang="lua">
local wliczaj_artykuly_tego_rozdzialu=((wliczaj_artykuly_tego_rozdzialu)or(not jakie_nie_rozdzialy[rozdzial]));
</syntaxhighlight>
Iterujemy otrzymanym ostatnio iteratorem, uzyskując kolejno zmienne: {{Code|przedrostek_listy}} {{LinkPatrz|przedrostek_listy}}, {{Code|tekstowy_przedrostek}} {{LinkPatrz|tekstowy_przedrostek}}, {{Code|linia}} {{LinkPatrz|linia}}, i {{Code|w_rozdziale}} {{LinkPatrz|w_rozdziale}}.
; Kiedy rozdziałów zerowych nie liczymy jako je{{dk}}
Dla rozdziałów, które nie sa poziomami z listą, sprawdzamy, czy to jest rozdział zerowy przy pomocy funkcji: {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|p=StronicowyParser/Rozdziały}}}}, i sprawdzamy, czy on przekracza rozmiar: {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}, jeżeli jest tym rozdziałem i nie przekracza pewnego rozmiaru, to to jest rozdział traktowany jako zerowy niepomijany rozdział zerowy, wtedy ustawiamy zmienną: {{Code|nie_pomijaj_tego_rozdzialu}} {{Patrz|nie_pomijaj_tego_rozdzialu}}, na {{Code|true}}.
; A jeśli to są rozdziały z listy zaczynające się od dwukropka w linii{{dk}}
Gdy taki rozdział nie pretenduje do zerowych, to sprawdzamy funkcją: {{Code|{{sr|#p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu|p=StronicowyParser/Rozdziały}}}}, czy ten rozdział pominąć, a jeżeli ona przyjmuje wartość odpowiadającej fałszywej, czyli {{Code|false}}, wtedy ustawiamy zmienną: {{Code|nie_pomijaj_tego_rozdzialunie_pomijaj_tego_rozdzialu}} {{LinkPatrz|nie_pomijaj_tego_rozdzialu}}, na taką samą wartość jak poprzednio.
; Inne rozdziały{{dk}}
Dla rozdziałów innych ta wartość przyjmuje postać {{Code|false}}.
; Rozdziały jednak nie pomijane{{dk}}
Dla rozdziałów, które nie są pomijane, wtedy zmienna: {{Code|nie_pomijaj_tego_rozdzialu}} {{LinkPatrz|nie_pomijaj_tego_rozdzialu}}, przyjmuje wartość {{Code|true}}, w takim przypadku wchodzimy do funkcji: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstuZgodnieZJegoSzablonowymiElementami|p=Szablonowe}}}}, wtedy dla linków szablonowych sprawdzamy, czy to są linki określone tablicami: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy}}, {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}} lub ewentualnie funkcją: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}.
Innym sposobem sprawdzania, czy to jest szablon linkowy jest tablica: {{Code|{{sr|#p.szablony_kompletowania_stron_woluminu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_kompletowania_stron_woluminu}}, lub {{Code|{{sr|#p.szablony_licencji|p=StroncowyParser/obiekty}}}} {{LinkPatrz|p.szablony_licencji}}.
Jeżeli to jest szablon linków, wtedy jest zwracana wartość: {{Code|return true,obiekt,kod}}, w przeciwnym wypadku: {{Code|return false,obiekt,kod}}.
Innym sposobem liczenia, czy to jest link, to wtedy może być to link normalny: {{Code|LINKW}}, który można sprawdzić funkcją: {{Code|{{sr|#p["CzyLinkWewnętrzny"]|p=Specjalne}}}}, wtedy jest zwracane {{Code|return true,obiekt,kod}}.
Link też może być zewnętrzny, wtedy to jest: {{Code|LINKZ}}, wtedy funkcja zwraca wartość: {{Code|return true,obiekt,kod}}.
; Kiedy analizujemy artykuły rozdziału{{dk}}
Następnie dla linii: {{Code|linia_rozwazana}} {{LinkPatrz|linia_rozwazana}}, co na podstawie tego liczymy, czy daną linię nie uwzględnić, w obliczeniach według schematu:
<syntaxhighlight lang="lua">
local czy_linia_uwzgledniana=mw.ustring.match(linia_rozwazana,"^%s*%-%-+(.*)%-%-+%s*$");
local czy_linia=((not czy_linia_uwzgledniana)and(mw.ustring.match(linia_rozwazana,"^%s*[%-%+%=%~]+.*$")
or ((#przedrostek_listy==0)and((mw.ustring.match(linia_rozwazana,"!"))and(mw.ustring.match(linia_rozwazana,"[^!]%s*$"))))
or mw.ustring.match(linia_rozwazana,"^%s*<")) or nil);
</syntaxhighlight>
Co następnie jest ustawiana {{Code|nowa_linia}} {{LinkPatrz|nowa_linia}} na wartość {{Code|false}}.
; Warunek analizowania artykułów rozdziałów{{dk}}
W obliczeniach raz uwzględniamy funkcję: {{LinkŚródtytuł|AnalizaLiniiObiekty}}, w ostatniej omawianej pętli, schematycznie:
<syntaxhighlight lang="lua">
if(not czy_linia)then AnalizaLiniiObiekty(linia_rozwazana);end;
</syntaxhighlight>
===== Dalsza część funkcji {{nobold|{{LinkPatrz|opis funkcji-ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}}} =====
Bierzemy zakodowany tekst: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu-IterTekst}}, i po nim iterator: {{Code|iterator}} {{LinkPatrz|iterator-IterTekst}}, wtedy iterujemy po parametrach:
<syntaxhighlight lang="lua">
local parsuj_rozdzialami=nil; ---- ta zmienna służy na wypadek, gdy by nie była żadnych rozwazanych rozdziałów;
for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do
---- za każdym razem jest uruchamiana funkcja: AnalizaRozdzialu, przy rozważanym rozdziale;
AnalizaRozdzialu(rozdzial_tab[1],rozdzial_tab[2],text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany);
---- oznacz zmienną: parsuj_rozdzialami, wartością; true, a póżniej jąnie inicjuj;
if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end
end;
</syntaxhighlight>
Parametry zwracane przez iterator: {{Code|iterator}} {{LinkPatrz|iterator-IterTekst}}:
{{OpisParametrów
| 1 = {{Code|rozdzial_tab}} {{Code|{{=}}}} {{Code|<nowiki>{ [1] = rozdzial, [2] = linia_rozdzialu, }</nowiki>}} | _1 = tabela składająca się z dwóch elementów:
| 2 = Pod elementy tabeli: | nagłówek2 = tak
| 3 = {{Code|rozdzial}} | _3 = Jak w: {{LinkPatrz|rozdzial}}.
| 4 = {{Code|linia_rozdzialu}} | _4 = Jak w: {{LinkPatrz|linia_rozdzialu}}.
| 5 = Inne parametry: | nagłówek5 = tak
| 6 = {{Code|text}} | _6 = Jak w: {{LinkPatrz|text}}.
| 7 = {{Code|poziom_rozdzialu}} | _7 =Jak w: {{LinkPatrz|poziom_rozdzialu}}.
| 8 = {{Code|poczatek_rozdzialu}} | _8 = Jak w: {{LinkPatrz|poczatek_rozdzialu}}.
| 9 = {{Code|numeracja}} | _9 = Jak w: {{LinkPatrz|numeracja}}.
| 10 = {{Code|czy_rozdzial_centrowany}} | _10 = Jak w: {{LinkPatrz|czy_rozdzial_centrowany}}.
}}
Gdy nie napotkano żadnego rozważanego rozdziału, wtedy: {{Code|parsuj_rozdzialami}}, przyjmuje wartość {{Code|nil}}, w takim razie uruchamiana jest funkcja:
<syntaxhighlight lang="lua">
if(not parsuj_rozdzialami)then
AnalizaRozdzialu("Spis treści",nil,tekst_rozwiniety_calego_artykulu,nil,nil,nil,nil);
end;
</syntaxhighlight>
Funkcja zwraca parametry inaczej, gdy artykuł, do którego należy książka jest korzystany, a inaczej, jeśli nie. W takim razie możemy zwracać na dwa sposoby:
<syntaxhighlight lang="lua">
if(czy_artykul_korzystany)then
return tabela_artykulow,tabela_licencji_spisu_tresci,przekierowanie_spisu_tresci;
else
return tabela_artykulow,nil,przekierowanie_spisu_tresci;
end;
</syntaxhighlight>
Przy artykułach korzystanych, co jest określone zmienną: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, tabelę: {{Code|tabela_licencji_spisu_tresci}} {{LinkPatrz|tabela_licencji_spisu_tresci}}, przy jego spisach treści w książkach, do której należy ten artykuł, zwracana jest jako wartość przeważnie jako nierówna {{Code|nil}}, a dla artykułów z innych książkach, ta wartość już jest taka, tzn. przyjmuje wartość {{Code|nil}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
5hfqo1uixy20358uv0ssjsrc5fesepx
558336
558335
2026-10-02T18:45:31Z
Persino
2851
/* Szablony rozwijane przez {{lpg|JavaScript}} */
558336
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SpisTreści}}|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 lokalne ==
=== {{Śródtytuł|Ile}}{{Code|Ile}} ===
Funkcja liczy liczbę elementów we wszystkich podtabelach tabeli {{Code|tabela_rozdzial_artykulow2}} {{Patrz|tabela_rozdzial_artykulow2}}, licząc od drugiej tabeli, po pierwszej tabeli mieści się podtabela z informacjami o rozdziale, w której znajdują się artykuły określone dalszymi podtabelami.
Tymi podtabelami są od {{Code|2}} do {{Code|7}}, czyli {{Code|6}} tabelek, w których są artykuły, które zaliczamy do kategorii wliczane, tzn. one nie znajdują się w takich rozdziałach przetłumaczonych na małą literę, ale przedtem na nią była działana funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, usuwając z nich odstępy na końcach, w tym dolne myślniki, a wewnątrz zamieniając kolejne dolne myślniki i spacje na jedną spacją.
Metafunkcja, w metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, w: {{Code|{{ld2|Parametry}}}}, aby porównać to z tablicą {{Code|{{sr|#p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu}}, by zaliczyć je do tego typu:
<syntaxhighlight lang="lua">
p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu={
["licencja"]=true,
["inne"]=true,
["bibliografia"]=true,
["zobacz też"]=true,
["linki zewnętrzne"]=true,
};
</syntaxhighlight>
Twew rozdziały należą do kategorii rozdziałów, w których artykuły są pomijane przez: '''{{ld|StronicowyParser|Stronicowy parser}}''', ale jeżeli one należą do rozdziału spisu treści lub rzeczy, to tam jednak nie są takie, inaczej jest poza.
A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}.
A ta powyższa tabela mieści się: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a jego opis w: {{Code|{{sr|#p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu|p=StronicowyParser/obiekty}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow2)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|numer_rodzaju_artykulu}} | _1 = Numer podtabeli elementtu, do którego wsadzamy element.
| 2 = {{Code|tabela_rozdzial_artykulow2}} | _2 = Tabela wraz podtabelami, od {{Code|1}} do {{Code|13}}, ale liczenie jest od {{Code|2}}.
}}
=== {{Śródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}{{Code|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}} ===
==== Opis pobieżny funkcji ====
Funkcja do wstawiania elementów z ogólnej tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}, za pomocą funkcji wstawianej jako parametr: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{Patrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, do odpowiedniej pozycji artykularnej od: {{Code|2}} do {{Code|13}}, a pozycja {{Code|1}}, to pozycja rozdziałowa, ona jest określana przez zmienną: {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{Patrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, a pozycja, którą wsadzamy to: {{Code|tab_stare}} {{Patrz|tab_stare}}.
Funkcja zwraca pozycje:
<syntaxhighlight lang="lua">
return numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych;
</syntaxhighlight>
Opis tych parametrów funkcji:
{{OpisParametrów
| 1 = {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} | _1 = Jest to wartość zwrócona przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}}, w odróżnieniu od: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, jest mniejszy o jeden, czyli wtedy to była a poziomie przypisywania wartość {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}},
| 2 = {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} | _2 = Pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}.
| 3 = {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} | _3 = Tablica do sprawdzania, czy artykuł z nagłówkiem, ma powtórzenie tego bez nagłówka, czyli dla tego bez tego jest inna numeracja niż z nagłówkiem, a gdy niema tego bez, to wtedy dzięki tej funkcji numeracja tak się zachowuje, jak tam by był ten element, co prawda jest tam dodawany, ale jako z informacją taką, że bz numeru ustalanym przez funkcję: {{LinkŚródtytuł|Ile}}, A przy okazji, aby tego elementu nie dodawać ponownie, to w nim jest ustalana druga zmienna na {{Code|1}}, a wcześniej była na {{Code|0}}, i dlatego ona była wtedy dodawana, a później już tak nie jest.
}}
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY,tabela_rozdzial_artykulow2,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow--[[]])...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{Patrz|self}} | _1 = Zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}}.
| 2 = {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} | _2 = Opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow2,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare);
</syntaxhighlight>
Funkcja jest wywoływana w:
<syntaxhighlight lang="lua">
numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych=WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,WsadzanieParametryDoTablicy(linia,czy_linia_uwzgledniana),tabela_rozdzial_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow);
</syntaxhighlight>
Gdzie funkcja: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, to jest: {{LinkŚródtytuł|WsadzanieParametryDoTablicy}}.
| 3 = {{Code|tabela_rozdzial_artykulow2}} | _3 = Ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow2}}.
| 4 = {{Code|tablica_artykulow_zebranych}} | _4 = Diała jak w: {{LinkPatrz|tablica_artykulow_zebranych}}.
| 5 = {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} | _5 = Jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}}.
| 6 = {{Code|szablon}} {{Patrz|szablon}} | _6 = Jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu.
| 7 = {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - | _7 = Kolejno to jest: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''' i '''nazwa książki'''.
| 8 = {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} | _8 = Jest to nazwa artykułu danego spisu treści.
| 9 = {{Code|pelna_nazwa_spisu_tresci}} {{Patrz|pelna_nazwa_spisu_tresci}} | _9 = Uchwyt do bazy kodowania tekstu strony spisu treści.
| 10 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} | _10 = Nazwa strony szablonowa, jak są wywoływane w postaci szablonowej, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}}.
| 11 = {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} | _11 = Uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 12 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _12 = Tablica bazy zapisana w postaci osobnej tablicy, a nie jej w wewnętrznej bazie, nie jak to było w postaci zmiennej {{LinkPatrz|nazwa_modulu}}, używana zamiast: {{LinkPatrz|nazwa_modulu}}.
| 13 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _13 = Tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}.
| 14 = {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} | _14 = Obiekt i kod, czyli: zmienne charakteryzujące zmienną wnętrza: {{Code|szablon}} {{LinkPatrz|szablon}}.
| 15 = {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} | _15 = Tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy.
| 16 = {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} | _16 = Tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię.
| 17 = {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} | _17 = Numeracja rozdziału, z jakim rozpoczyna się rozdział.
| 18 = {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} | _18 = Gdy link znajduje się w rozdziale dodatnim.
| 19 = {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} | _19 = Cała linia z artykułem lub artykułami, tą linią równie dobrze może być rozdział, tu chodzi o rozdział dodatni.
}}
==== Opis pobieżny funkcji {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} ====
Przedstawiamy tutaj funkcję: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, która jest opisana w punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Definicja funkcji w nagłówku:
<syntaxhighlight lang="lua">
__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow2,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare);
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tabela_rozdzial_artykulow2}} | _1 = Jak w: {{LinkPatrz|tabela_rozdzial_artykulow2}},
| 2 = {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} | _2 = Jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}},
| 3 = {{Code|tab_stare}} | _3 = Jak w: {{LinkPatrz|tab_stare}}.
}}
Ta funkcja została opisana już wcześniej.
==== Szczegółowy opis funkcji głównej ====
Uruchamiamy funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, która jest zdefiniowana w module: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}}. Wywołujemy tę funkcję:
<syntaxhighlight lang="lua">
local tab_pozycja_elementow_w_spisie_rzeczy,numer_rodzaju_artykulu,id,parametry_szablonu,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nil,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
</syntaxhighlight>
Pierwszy elementem: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest to zmienna tablicowa, która opisuje parametry artykularno-linkowe parametry, drugi: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, do której kategorii należy dany artykuł w linku, a trzeci parametr, to: {{Code|id}} {{Patrz|id}}, to zbierane są parametry linkowe z szablonu {{s|SpisTreści}}, czwarty to: {{Code|parametry_szablonu}} {{Patrz|parametry_szablonu}}, w przypadku szablonów inteligentnych linków, to są parametry wywołań tych szablonów, ostatni parametr to: {{Code|kom}} {{Patrz|kom}}, przedstawia on, jeśli {{Code|false}}, to artykuł zakwalifikowany został poprawnie do rozważań, a {{Code|true}} już nie.
To {{LinkPatrz|parametry szablonu}}, to jest tablica z trzech elementów, tzn.:
<syntaxhighlight lang="lua">
local parametry szablonu={tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,};
</syntaxhighlight>
Elementy tablicy:
{{OpisParametrów
| 1 = {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} | _1 = Tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych.
| 2 = {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} | _2 = To jest nazwa uzyskanego szablonu linków inteligentnych lub nie.
| 3 = {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} | _3 = Tabela modyfikatorów rozkładanego szablonu.
}}
Jeśli parametr: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, istnieje, to tworzona jest z niego taka sama wersja lub przy nieistnnieniu parametru {{LinkPatrz|wliczaj_artykuly_tego_rozdzialu}}, do niego jest dodawana jest liczba {{Code|6}}. W ten sposób możemy zbierać artykuły książki i inne,ktore należą do pewnych rozdziałów i które nie należą.
===== {{Śródtytuł|ParametrPierwszy}}{{Code|ParametrPierwszy}} =====
Funkcja zbierające dane z {{Code|tab_artykul}} {{Patrz|tab_artykul}}, którego to jest czteroelementowa tablica, dotycząca danego artykułu. Drugim parametrem: {{Code|czy_niedozwolone}} {{Patrz|czy_niedozwolone}}, jest zmienna logiczna mówiąca, czy wskazać w nazwie artykułu, czy są dozwolone znaki, jest to sprawdzenie według wyrażenia regularnego: {{Code|<nowiki>[|<>{}%[%]]</nowiki>}} {{Patrz|wzor_znaki_niedozwolone}} na podstawie funkcji {{LzLua|mw.ustring.match}}, czyli: {{Code|znaki_niedozwolone}} {{Patrz|znaki_niedozwolone}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
ParametrPierwszy(tab_artykul,czy_niedozwolone)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tab_artykul}} | _1 = Jak w: {{LinkPatrz|tab_artykul}}.
| 2 = {{Code|czy_niedozwolone}} | _2 = Jak w: {{LinkPatrz|czy_niedozwolone}}.
}}
Gdzie: {{Code|tab_artykul}} {{LinkPatrz|tab_artykul}}, który jest pierwszym parametrem przyjmowanym przez funkcję, jest zdefiniowany jako czteroelementowa tablica, którą przypisujemy do czterem osobnych parametrów:
<syntaxhighlight lang="lua">
local artykul=tab_artykul[1];
local parametry=tab_artykul[2];
local naglowek=tab_artykul[3];
local tablica_przekierowania=tab_artykul[4];
</syntaxhighlight>
Jeżeli, któreś z parametrów z: {{LinkPatrz|tab_artykul}}, tzn. element jego {{Code|2}}-gi i {{Code|3}}-ci, istnieje, to układana jest trzyelementowa tablica z elementów od {{Code|1}} do {{Code|3}}, z dodatkowym elementem: {{Code|<nowiki>["LINK"] = true</nowiki>}}, a element czwarty to jest: {{Code|tablica_przekierowania}} {{Patrz|tablica_przekierowania}}, a jeżeli te dwa elementy, nie licząc czwartego, wcale nie istnieją, wtedy jest tworzony łańcuch znakowy z tego pierwszego elementu. Tak tworzymy, nową wersję tablicy: {{Code|tab_artykul}} {{Patrz|tab_artykul-nowa wersja}}, lub łańcuch znakowy, w postaci:
<syntaxhighlight lang="lua">
tab_artykul=((artykul)and(parametry or naglowek))and{[1]=artykul,[2]=parametry,[3]=naglowek,["LINK"]=true,} or artykul;
</syntaxhighlight>
Funkcja zwraca trzy parametry, tzn. parametry: {{LinkPatrz|tab_artykul-nowa wersja}}, {{LinkPatrz|znaki_niedozwolone}} i tablicę przekierowania: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}:
<syntaxhighlight lang="lua">
return tab_artykul,znaki_niedozwolone,tablica_przekierowania;
</syntaxhighlight>
===== Rozwijanie nazwy linku artykułu =====
Do rozwijania nazwy linku służy funkcja: {{Code|{{sr|#p.DekodowanieTekstuNazwLinku|p=StronicowyParser/Pomocne}}}} {{Patrz|p.DekodowanieTekstuNazwLinku}}, pod względem szablonowym i nie tylko.
Funkcja rozwija tą nazwę tym: {{LzLua|frame:preprocess}}, jedynie nie rozwija szablonów stronicowego parsera, podane podkategoriach w kategorii: {{Code|{{lk2|Szablony stronicowe}}}}, za pomocą odpowiednich metod, bo to by wywołało nieskończoną pętle, i dlatego takie szablony są zamieniane tylko na wywołania symboliczne.
==== Dalszy opis funkcji nadrzędnej przy istnieniu parametrów linkowych normalnych, czy szablonowych (linków inteligentnych) ====
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|{{=}}}} {{Code|1}} =====
Tworzony jest numerek: {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{Patrz|numer_rodzaju_artykulu_w_podreczniku}}, który w stosunku do: {{LinkPatrz|numer_rodzaju_artykulu}}, jest większy o jeden, a schemat tej operacji:
<syntaxhighlight lang="lua">
local numer_rodzaju_artykulu_w_podreczniku=numer_rodzaju_artykulu+1;
</syntaxhighlight>
====== Tworzenie tablicy: {{nobold|{{Code|tablica_artykulow_zebranych}}}} ======
Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną wstępnie w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}.
; Tablica{{dk}} {{nobold|{{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}}}}, nie jest tablicą{{dk}}
Gdy element pierwszy: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, nie jest tablicą, wtedy jedynie liczymy, czy ona ma znaki niedozwolone: {{Code|wzor_znaki_niedozwolone}} {{LinkPatrz|wzor_znaki_niedozwolone}}, a póżniej wiedząc ten element, który jest aktualną nazwą artykułu kiążki, tworzymy tabelę {{Patrz|tablica_artykulow_zebranych-imicjacja}}:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,};
</syntaxhighlight>
; Gdy element{{dk}} {{nobold|{{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}}}}, jest łańcuchem znaków{{dk}}
Wpierw liczone są parametry z wywołania, z opcją, czy ma liczyć, czy nazwa artykułu ma znaki niedozwolone, z funkcji: {{LinkŚródtytuł|ParametrPierwszy}}:
<syntaxhighlight lang="lua">
tab_pozycja_elementow_w_spisie_rzeczy[1],znaki_niedozwolone,tablica_przekierowania=ParametrPierwszy(tab_pozycja_elementow_w_spisie_rzeczy[1],true);
</syntaxhighlight>
; Inna książka - atrybut, tzn. czy artykuł wychodzi poza daną książkę, lub jego przekierowanie w niej kieruje na stronę poza nią{{dk}}
Dalej sprawdzane jest, czy książka przyjmuje atrybut, tzn.: '''czy inna książka''', wtedy liczymy to z kodu z tablicy przekierowania: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, jeżeli jej wartość istnieje, tzn.: {{Code|czy_inna_ksiazka}} {{Patrz|czy_inna_ksiazka}}:
<syntaxhighlight lang="lua">
local czy_inna_ksiazka=tablica_przekierowania and tablica_przekierowania[1] and tablica_przekierowania[1][5] or nil;
</syntaxhighlight>
; Tablica przekierowania artykułu względem bieżącej książki{{dk}}
Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, który przedstawia, czy to jest artykuł bieżącej książki, którego przekierowanie kieruje, wtedy ten parametr ma wartość {{Code|true}}, a gdy adres przekierowania wskazuje na inną książkę, wtedy {{Code|false}}. Jeśli ten parametr ma wartość fałszywą, wtedy jest sprawdzane, czy jest tablicą w: {{Code|czy_tablica}} {{Patrz|czy_tablica}}, według:
<syntaxhighlight lang="lua">
czy_tablica=parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1]);
</syntaxhighlight>
Lub w przeciwnym wypadku liczymy parametry artykularne z tablicy przekierowania: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek przekierowania, w tej tablicy, istnieje, wtedy parametr: {{Code|czy_tablica}} {{LinkPatrz|czy_tablica}}, przyjmuje wartość {{Code|true}}, w przeciwnym wypadku wartość fałszywą.
Gdy ten element nie jest tablicą, to tworzona jest nazwa pełna artykułu: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}} i umieszczana w tablicy: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z podobną tablicą początkową jak w poprzednim przypadku jego tworzenia, czyli jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}.
; Tablica zebranych artykułów i porównywanie artykułu z nagłówkiem, czy istnieje wcześniejszy artykuł bez niego{{dk}}
Gdy element jest jednak tablicą, też jest liczona pełna nazwa artykułu (gdy nazwa artykułu przekierowania istnieje, wtedy ona jest liczona z: {{Code|tablica_przekierowania[2]}}, w przeciwnym wypadku, jeśli element: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}}, jest tablicą, wtedy liczymy ją z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1][1]}}, w innym wypadku z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}}), a z niej liczymy tablicę: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}, w przypadku pierwszego artykułu nienagłówkowego.
A w przypadku pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie, artykuł poprzedni nie istnieje, a więc tego tam nie ma tam w takim przypadku.
Gdy funkcja napotkała artykuł o takim samym stronie, co poprzednio, to do wartości początkowej, bez definiowania jeszcze raz tej samej tablicy, jest ustawiane odpowiednio:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych[3]=true;
</syntaxhighlight>
Co informuje, że artykuł jest ten sam, tylko inny nagłówek niż poprzedni, a poprzedni pierwszy jest bez niego.
====== Rozwijanie nazwy linku ======
Kompletowany jest drugi element tablicy: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkPatrz|p.DekodowanieTekstuNazwLinku}}. Dalej z tej nazwy są usuwane znaki specjalne według funkcji: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, z modułu: {{Code|{{ld2|Specjalne}}}}. Następnie działamy funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, które końcowe spacje usuwa, a wewnętrz powtarzające zamienia kolejne na jedną spację.
====== Dodawanie do tablicy problemów, jeśli nastąpił problem ze znakami niedozwolonymi ======
A między czasie, gdy mamy niedozwolone znaki: {{Code|znaki_niedozwolone}} {{LinkPatrz|znaki_niedozwolone}}, za pomocą funkcji pytającej sprawdzamy, czy element inny zgłoszeniowy został dodany do tablicy problemów: {{Code|{{sr|#p.CzyJestTakiProblemowyElement|p=StronicowyParser/Problemy}}}}, aż w końcu dodajemy ten problem, jeśli go nie ma przy pomocy funkcji: {{Code|{{sr|#p.UstawTakiProblemowyElement|p=StronicowyParser/Problemy}}}}.
====== {{Śródtytuł|inicjacja_i_kompletowanie_zmiennych}}Ustalanie nazwy jednostki, kompletowanie linii artykułów i inicjowanie pozycji, w tabeli zebranych elementów, w tabeli zebranych elementów ======
Ustalamy nazwę jednostki z funkcji: {{Code|{{sr|#p.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem|p=StronicowyParser/Potrzebne}}}}, i inicjujemy tą wartością, czyli: {{Code|nazwa jednostki}} {{Patrz|nazwa jednostki}}, wartość starą: {{Code|stara_nazwa_jednostki}} {{Patrz|stara_nazwa_jednostki}}, według:
<syntaxhighlight lang="lua">
---- Piszanie pełnej nazwy jednostki bez parametrów i nagłówka;
local nazwa_jednostki=stronicowyparser_potrzebne_modul.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(tab_pozycja_elementow_w_spisie_rzeczy[1],false);
---- Inicjowanie starej wartości tą policzoną;
local stara_nazwa_jednostki=nazwa_jednostki;
</syntaxhighlight>
Dalej {{Śródtekst|uchwyt=tabela_rozdzial_artykulow2|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}}}, według:
<syntaxhighlight lang="lua">
if(not tabela_rozdzial_artykulow2[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow2[numer_rodzaju_artykulu_w_podreczniku]={};end;
</syntaxhighlight>
Co {{Śródtekst|uchwyt=linia_artykokow|tekst=dalej linię artykułów {{Code|linia_artykokow}} {{LinkPatrz|linia_artykokow}}, kompletujemy, funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, z modułu: {{Code|{{ld2|Szablonowe}}}}, znając tablicę: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}}}, według:
<syntaxhighlight lang="lua">
linia_artykokow=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_artykokow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
</syntaxhighlight>
====== Uwzględnianie niepodanego elementu nienagłówkowego w tablicy zebranych parametrów ======
Gdy tablica przekierowania: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, istnieje, wtedy sprawdzamy, czy zmienna logiczna: {{Code|czy_tablica}} {{LinkPatrz|czy_tablica}}, jest prawdą i czy: {{Code|stara_nazwa_jednostki}} {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej: {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie artykułu przekierowania.
Inicjujemy nową zmienną: {{Code|przekierowanie}} {{LinkPatrz|przekierowanie}}, z artykułu, parametrów i nagłówka, ale wpierw sprawdzamy, czy dwa ostatnie istnieją, według:
<syntaxhighlight lang="lua">
przekierowanie=przekierowanie and ((tablica_przekierowania[3] or tablica_przekierowania[4]) and {przekierowanie, tablica_przekierowania[3], tablica_przekierowania[4],["LINK"]=true,}or przekierowanie) or nil;
</syntaxhighlight>
Tworzony jest nowy element: {{Code|nazwa jednostki}} {{Patrz|nazwajednostki-nowy}}, z: {{LinkPatrz|nazwa jednostki}}, parametrów i nagłówka, według rysu:
<syntaxhighlight lang="lua">
nazwa_jednostki={nazwa_jednostki, tab_pozycja_elementow_w_spisie_rzeczy[1][2], tab_pozycja_elementow_w_spisie_rzeczy[1][3],["LINK"]=true,};
</syntaxhighlight>
Jeżeli parametr drugi: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}.
Wsadzamy element: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, do zbioru: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, przy pomocy funkcji: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Następnie jej drugiemu elementowi: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, do tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}, na pozycji: {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, według funkcji: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej.
Jeżeli tablica przekierowania: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, jednak nie istnieje, wtedy tak samo sprawdzamy, co poprzednio potem, ale po spełnieniu tych warunków robimy inną tablicą: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, i tę tablicę robimy podobnie, i inicjujemy te same elementy też podobnie.
====== Uwzględnianie pozycji podanej w tablicy zebranych elementów ======
Tworzymy zmienną: {{Code|ile_dodac_do_poziomu_artykulu}} {{Patrz|ile_dodac_do_poziomu_artykulu}}, z drugiego elementu tablicy: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, następnię tworzymy inną zmienną: {{Code|ile_dodac_do_poziomu_artykulu_lub_nil}} {{Patrz|ile_dodac_do_poziomu_artykulu_lub_nil}}, co uwidaczniamy wzorem:
<syntaxhighlight lang="lua">
local ile_dodac_do_poziomu_artykulu_lub_nil=((ile_dodac_do_poziomu_artykulu)and(ile_dodac_do_poziomu_artykulu>0))and ile_dodac_do_poziomu_artykulu or nil;
</syntaxhighlight>
Tą zmienną wykorzystamy do sformułowania: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}.
{{Śródtekst|tekst=Tworzymy zmienną: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}, na pozycji: {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, przy pomocy funkcji: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.|uchwyt=__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|>{{=}}}} {{Code|2}} =====
Będziemy tutaj operowali, gdy parametr drugi zwracany z funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, wskazuje na nie artykuł książki, zatem ten rozdział jest właśnie dla tego przypadku.
====== Odkodowanie i przygotowanie zmiennych artykułu linku, jej nazwy, także kodu języka i projektu ======
* Gdy pierwszy element tablicy: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}.
* Dla drugiego takiego elementu z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, co jest nazwą linku, wtedy gdy nazwa linku normalnego, czy szablonowego, jest zakodowana, to ją odkodujemy, którego każdy jego element kod odkodujemy według funkcji: {{LinkPatrz|p.DekodowanieTekstuNazwLinku}}, następnie z niej usuwamy znaki specjalne według: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, następnie usuwamy końcowe spacje i wewnątrz kolejne spacje zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
* Dla trzeciego i czwartego takiego elementu z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, te elementy odkodujemy, następnie z nich usuwamy końcowe spacje, a wewnątrz kolejne spacje zastępujemy jedną, według tej samej funkcji, co powyżej.
====== Przygotowanie zmiennych, inicjowanie tablicy: {{Code|tab_stare}}, i wsadzanie jej do tablicy ogólnej: {{Code|tabela_rozdzial_artykulow2}} ======
Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow2}}, także co {{PobierzŚródtekst|linia_artykokow}}, co wszystko robimy podobnie jak w rozdziale: {{LinkŚródtytuł|inicjacja_i_kompletowanie_zmiennych}}.
{{PobierzŚródtekst|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
==== Definicja tablicy: {{Code|tab_stare}}, inicjowanie jej elementów w różnych przypadkach ====
Przedstawiamy tutaj ogólną definicję zmiennej: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. Ta wersja jest jedynie sformułowana dla artykułów w rozdziale, a nie dla rozdziałów, bo w tablicy, do której jest ona wsadzana przyjmuje ona możliwy numerek od "2" do "13", a nie również "1". Jej wersja ogólna:
<syntaxhighlight lang="lua">
local tab_stare=
{
---- Początek elementów alternatywnych
{
---- Początek wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[1], -- artykuł bez pełnej nazwy ksiązki, bez parametrów i nagłówka, bo ich nie posiadałna samym początku;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- artykuł bez pełnej nazwy książki, bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[2], -- nazwa linku artykułu normalnego, czy szablonowego;
---- Początek elementów alternatywnych dla przekierowania
---- Poczatek parametrów przekierowania
{
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
tablica_przekierowania[3], -- parametry przekierowania artykułu;
tablica_przekierowania[4], -- nagłówek przekierowania artykułu;
["LINK"]=true, -- zmienna świadcząca, że nazwa przekierowania artykułu jest z parametrami i nagłówkiem;
},
---- lub
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
---- Koniec parametrów przekierowania
tablica_przekierowania[1], -- tablica o definicji: {
nazwa_przestrzeni_strony_przekierowania, -- nazwa przestrzzeni nazw przekierowania artykułu;
nazwa_przestrzeni_ksiazki_strony_przekierowania, -- nazwa przestrzeni książki przekierowania artykułu;
nazwa_ksiazki_strony_przekierowania, -- nazwa książki orzekierowania artykułu;
true/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce;
true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie;
czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach;
};
---- lub
nil, -- dotycząca przekierowania artykułu, a tutaj strona nie ma przekierowania, więc: nil;
nil, -- dotycząca tablicy książki, na którą wskazuje przekierowanie, a tutaj nie ma tablicy, więc: nil;
---- Koniec elementów alternatywnych dla przekierowania
tab_pozycja_elementow_w_spisie_rzeczy[3], -- kod języka;
tab_pozycja_elementow_w_spisie_rzeczy[4], -- kod projektu;
tab_pozycja_elementow_w_spisie_rzeczy[5], -- adres artykułu bez przetworzenia w linku normalnym,czy szablonowym;
ile_dodac_do_poziomu_artykulu_lub_nil, -- parametr mający tylko wartości: 1, gdy do aktualnego poziomu musi być dodane jeden - ta wartość, tylko dotyczy artykułów należących do tej samej książki, lub: nil, gdy nic, czyli w pozostałych przypadkach;
tab_pozycja_elementow_w_spisie_rzeczy[6], -- "url", pozycja świadcząca, że to jest link zewnętrzny, a nil, gdy to jest normalny link;
},
---- lub
tab_pozycja_elementow_w_spisie_rzeczy[1], -- nazwa artykułu linku, która nie posiada, ani parametrów w sobie, a po nim nagłówka, lub bezpośrednio po nazwie;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- nazwa artykułu bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec elementów alternatywnych
{
#przedrostek_listy, -- poziom listy, w którym jest artykuł, dla artykułów w linii z listą, w innym wypadku dla artykułu znajdującego się w rozdziale dodatnim, czy ujemnym jest zero;
przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])", przeciwnie dla artykułów w rozdziale dodatnim ma wartość pustą;
tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu, gdy nie ma takiej numeracji, bo nie da się jej wydzielić, to ma wartość pustą;
w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym, wtedy "true", w przeciwnym wypadku: "false";
},
linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare";
true/false, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: false;
true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika, przeciwnie: false;
---- Początek elementów alternaatywnych
Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow2), -- który numer artykułu, w momencie wsadzenia do tabeli zbierania rozdziałów i w nich artykułów, nawet w rozdziale;
---- lub
nil, -- nil, wtedy gdy link jest tak sobie dodany, który nie należy do żadnego spisu, a po nim elementy jego z nagłówkiem natomiast należą;
---- Koniec elementów alternatywnych
};
</syntaxhighlight>
W powyższym: {{Tag|syntaxhighlight|parametry=lang="lua"}}, dla elementu: {{Code|<nowiki>---- lub</nowiki>}}, jest powiedziane, że są dostępne alternatywy, które są zawarte w tablicy, że wybieramy te, aby nie spowodować czysto podwójnej tablicy, aby każda tablica zawierały inne elementy, jak wiele, a nie jedną tablicę, jak i łańcuchy znaków, wartość nil, powoduje, że czy ma być taka tablica, ale nie podwójna, co to znaczy podowójna, tzn. tablica w sobie zawiera inną jedyną tablicę, a tak nie może być, a jak zawiera jedną tablicę, to musi posiadać inne nienilowe elementy.
== Funkcje tablicy transportu ==
=== {{Śródtytuł|p.AnalizaNapisuWprowadzeniaTekstu}}{{Code|p.AnalizaNapisuWprowadzeniaTekstu}} ===
Funkcja przyjmuje jako parametr nieskompletowaną i nieprzetworzony tekst napisu wprowadzenia tekstu. On kompletujei przekształca go w odpowiedni sposób,aby otrzymać czysty tekst tytułu rozdziału.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AnalizaNapisuWprowadzeniaTekstu(rozdzial,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|rozdzial}} | _1 = Ten tekst tytułu rozdziału, o którym mówimy.
| 2 = {{Code|pelna_nazwa_spisu_tresci}} | _2 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci}}
| 3 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _3 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _5 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
==== Obiekty typu {{nobold|{{Code|SZABLON}}}} ====
Funkcja korzysta z funkcji: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, funkcja ma zdefiniowaną pierwszą jej funkcję, która dla: {{Code|obiekt {{=}} "SZABLON"}}, używamy pierwsze dwie tabelę, te tabele:
Pierwsza {{Patrz|szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu}}, która służy do zamieniania szablonów na ich parametry, tutaj pierwsza, to jest tablica: {{Code|{{sr|#p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu}}:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu={
["MDL:RozszerzonyLink"]=1,
["Kompletność"]="",
["Kompletność krótka"]="",
["Kompletność junior"]="",
["Książka"]="",
};
</syntaxhighlight>
Druga: {{Code|{{sr|#p.szablony_dozwolone_w_nazwach_linkowych|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_dozwolone_w_nazwach_linkowych}}, też służy do tego samego.
Funkcja wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja {{Patrz|p.szablony_dozwolone_w_nazwach_linkowych}}:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_w_nazwach_linkowych={
["Korekta"] =2,
};
</syntaxhighlight>
===== Funkcje zawartości i dodatków, dla szablonów =====
One służą do zamieniania wywołań szablonowych na odpowiednie ich zawartości parametrów określone przez numery parametrów tych elementów w tch tabelach. Jeżeli przy którym wywolaniu przy wykorzystaniu kolejnych tych tabel przy użyciu funkcji: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, nastąpiło zamienienie, to funkcja pierwsza w: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, zakańcza się z tą wartością. A jeżeli nie to uruchamia się funkcj dodatków: {{Code|{{sr|#p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu|p=StronicowyParser/Rozdziały}}}}, a jeśli nastąpiło zastąpienie, to funkcja kompletowania się kończy z tą wartością.
===== Szablonowe linki =====
Dalej jeżeli tak się nie stało, to uruchamia się funkcja parametrów, w którym wywołanie szablonowe jest rozkładane na nazwę szablonu, modyfikatory i parametry. Dalej jest spradzanie , czy jest to link inteligentny według funkcji: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}, a gdy jest, to funkcja kończy swoje działania z nazwą tego linku lub jego adreesem wewnętrznym, a jeśli on nie jest tym, to sprawdza, czy są inne szablonowe linki, które podejrzewa się poprzez wywołanie funkcji: {{Code|{{sr|#p.NazwaInnegoSzablonowegoLinkowegoObiektu|p=StronicowyParser/Potrzebne}}}}, a jeżeli jest tym linkiem, to funkcja składania zwraca też jak poprzednio nazwę linku lub jego adres wewnętrzny, ewentualnie z dodatkiem. A gdy nie, to w innym przypadku sprawwdzane, czy to jest inny link wewnętrzny generowane przez szablony, która spradza funkcja tutaj: {{Code|{{sr|#p.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy|p=StronicowyParser/Potrzebne}}}}, a jeżeli szablon jest tym linkiem, to kunkcja składania zwraca jego nazwę linkową.
===== Szablony rozwijane przez {{lpg|JavaScript}} =====
A następnym krokiem jest sprawdzanie, czy nazwa szablonu jest jednych z elementów z tablicy: {{LinkPatrz|p.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu}}, która ma ten element, te szablony wymienione w tej tablicy są po to, aby służyły do rozwijania przez JavaScript, są to elementy wikikodu, które są pracochłonne ze względu na ich skomplikowany kod, czy wikikod, nawet {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, i dlatego ich się nie rozwija przez stronicowy parser: {{Code|{{ld2|StronicowyParser}}}}, te nazwy szablonów są określone tablicą: {{Code|{{sr|#p.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu}}:
<syntaxhighlight lang="lua">
p.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu={
["Cytuj"]=true,
["Cytuj stronę"]=true,
["Cytuj pismo"]=true,
["Cytuj odcinek"]=true,
["Cytuj książkę"]=true,
["Cytuj grę komputerową"]=true,
};
</syntaxhighlight>
I funkcja wtedy zwraca zkompletowany szablon bez rozwijania jego, pod warunkiemjeżeli jest tym szablonem o tej nazwę szablonu wywołującego.
===== Co jest zwracane w przypadku szablonów =====
Te powyżej elementy dla funkcji parametrów, w niej wartości są zwracane do niej, a jeżeli ona przyjmuje wartość nienilową, to do funkcji składania zwracana jest jego wartość, a przeciwnie jest zwracane pierwszy parametr szablonu do niej.
==== Obiekty typu: {{nobold|{{Code|NOWIKI}}}}, {{nobold|{{Code|PRE}}}} i {{nobold|{{Code|ŹRÓDŁO}}}} ====
A gdy dla elementów, jeśli nazwa obiektu jest: {{Code|obiekt {{=}} "NOWIKI"}}, {{Code|obiekt {{=}} "PRE"}}, lub: {{Code|obiekt {{=}} "ŹRÓDŁO"}}, znacznik jest rozkładany na czynniki pierwsze, a jeżeli nnie ma zawartości, to przez funkcję skłądania jest zwracana wartość pusta, a jeśli nie, to pewne znaki specjalne tagu {{Tag|nowiki}}, które mają w nim być zamienione na tekst, są zamieniane na kody '''HTML''', co po zamienieniu ta ona jest zwracana.
==== Obiekty typu: {{nobold|{{Code|MATH}}}}, {{nobold|{{Code|GALERIA}}}}, {{nobold|{{Code|MAPAOBRAZU}}}}, i {{nobold|{{Code|INNEPRE}}}} ====
A jeżeli wartość: {{Code|obiekt}}, jest nie równa: {{Code|MATH}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} lub {{Code|INNEPRE}}, wtedy z zawartości zmiennej: {{Code|szablon}}, są wykorzystanne funkcje z modułu: {{Code|{{ld2|Specjalne}}}}, które w tej podanej zmiennej są usuwane z komentarze z: {{Code|{{sr|#p["UsuńKomentarze"]|p=Specjalne}}}}, zamieniane są linki zewnętrzne i wewnętrzne na ich nazwy lub adresy według: {{Code|{{sr|#p["ZamieńLinkiZewnętrzneNaTekst"]|p=Specjalne}}}} i {{Code|{{sr|#p["ZamieńLinkiWewnętrzneNaTekst"]|p=Specjalne}}}}. Są usuwane rozwinięte znaczniki szablonów stylów używając do tego celu: {{Code|{{sr|#p["UsuńSzablonyStylów"]|p=Specjalne}}}}. Są też usuwane znaczniki na podstawie: {{Code|{{sr|#p["UsuńZnaczniki"]|p=Specjalne}}}}. Z tekstu szablonu są usuwane normalne kategorie nieszablonowe: {{Code|{{sr|#p"UsuńKategorie"]|p=Specjalne}}}}. Są też usuwane z zawartości wywołania plików i interwiki z: {{Code|{{sr|#p["UsuńWywołaniaPlików"]|p=Specjalne}}}} i {{Code|{{sr|#p["UsuńInterwiki"]|p=Specjalne}}}}. Dalej z tego obiektu są usuwane znaki specjalne z: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}.
A gdy mamy do czynienia z innymi znacznikami, to są zwracane jest zamiast niego wartość pusta do funkcji kompletowania.
Dane z funkcji kompletowane są zwracane, które z niej są usuwane znaki specjalne z całości tekstu rozdziału: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, i znaki białe z końców tekstu i powtarzarzające się te znaki kolejne z wewnętrz są zamieniane na jedną spację, to się dzieje według funkcji: {{Code|{{sr|#p["UsuńZbędneBiałeZnaki"]|p=Specjalne}}}}.
Cały taki wynik operacji robione w funkcji w nagłówku są zwracane do niej, to jest, co uzyskujemy nazwa rozdziału w postaci przetworzonej.
=== {{Śródtytuł|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}{{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} ===
Opisane tutaj są podfunkcje, z których korzysta ta funkcja, co one robią, do czego są wykorzystane.
==== Opis funkcji: {{nobold|{{Patrz|opis funkcji-ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}}} ====
Funkcja służy do zbierania nagłówków i z niej danych,tzn. linków normalnych i inteligentnych, a także są zbierane nagłówki z listy bez artykułów i do nich elementy podlisty z artykułami w postaci wywołań linkowych w niej. Tworzona jest specjalnie dla niegp tablica: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, która w odpowiedni po przekształaceniach wsadzana jest do tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} | _1 = Jak w: {{LinkPatrz|self}}.
| 2 = {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} | _2 = Kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}.
| 3 = {{Code|nazwa_spisu_tresci}} | _3 = Jak w: {{LinkPatrz|nazwa_spisu_tresci}}.
| 4 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _4 = Czy dany spis treści dla książki dla jej artykułu korzystanego, dla innej książki, wtedy to artykuł niekorzystany.
| 5 = {{Code|adres_ksiazki_glownego_spisu_tresci}} {{Patrz|adres_ksiazki_glownego_spisu_tresci}} | _5 = Jest to wewnętrzny adres książki głównego spisu treści,jest to taki adresm na który wskazuje przekierowanie innej książki.
| 6 = {{Code|__FUNKCJA_ZBIERANIA_DANYCH}} {{Patrz|__FUNKCJA_ZBIERANIA_DANYCH}} | _6 = Jest to funkcja, która zbiera informacje o aktualnym artykule, która jest spisem treści, w postaci nieprzetworzonej przez funkcje z modułu: {{Code|{{ld2|StronicowyParser/Rozdziały}}}}, opisanego w: {{Code|{{sr|Rozdziały|StronicowyParser - Rozdziały|p=StronicowyParser}}}}, ta funkcja kopiuje, np. tabele danych bazy modułu: {{Code|{{m|Szablonowe}}}}, tzn: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, i tabelę rozkładu elementów w niej na czynniki pierwsze, tzn.: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, co jest napisane w module: {{Code|{{ld2|StronicowyParser/ZbieranieDanychStron}}}}, a w dokumentacji: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}.
}}
==== Funkcje lokalne ====
Funkcja ma w sobie też definicję funkcji lokalnych zdefiniowanej w tej funkcji tutaj opisywanej.
===== {{Śródtytuł|FunkcjaIteratoraTekstuZakodowego}}{{Code|FunkcjaIteratoraTekstuZakodowego}} =====
Funkcja służy do pomijania tego, co nie jest linkiem wewnętrznym, czy zewnętrznym, czyli oznaczone kodami: {{Code|LINKW}} lub {{Code|LINKZ}}, czy nawet szablonem linkuinteligentnego, czy innego służacego do generowania spisu treści, do tego celu również używa funkcji: {{LinkŚródtytuł|CzySzablonLinkLubLicencja}}, oraz tego co nie jest w liście okreslonym wzorem {{Code|<nowiki>\n([#:*;]+)</nowiki>}} z mozliwym na początku tekstem, ale nie z kodami, w danej pozycji listy, lub co ewentualnie nie może być w możliwej liście, tzn.: {{Code|<nowiki>\n([#:*;]*)</nowiki>}}, ale wtedy musi tam być z tekstem, ale nie z kodami, na początku danej pozycji listy, nawet jeśli to nie jest lista, to też tak samo.
Jeżeli funkcja nie ma kodów linków wewnętrznych, czy to normalnych, czy szablonowych, to się zakańcza z wartością domyślną {{Code|nil}}, w przeciwnym wypadku do sprawdzenia używa do tego funkcji: {{LinkŚródtytuł|PomijajLinkiOrazLicencje}}, do sprawdzania, czy to jest link lub licencji, a jeżeli ta funkcja zwraca wartość {{Code|true}}, to cała funkcja zwraca {{Code|nil}}. Jeżeli oba te sposoby nie dały rezultatu {{Code|true}}, to wtedy funkcja zwraca wartość pustą, czyli okreslonym ciągiem znakowym o szwerokości zerowej.
Funkcja ma w sobie dwie definicje funkcji: {{LinkŚródtytuł|PomijajLinkiOrazLicencje}} i {{LinkŚródtytuł|CzySzablonLinkLubLicencja}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local FunkcjaIteratoraTekstuZakodowego=function(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}.
| 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}.
| 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod}}.
}}
====== {{Śródtytuł|PomijajLinkiOrazLicencje}}{{Code|PomijajLinkiOrazLicencje}} ======
Funkcja służy do sprawdzania, czy są odpowiednie szablony w kodzie.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function PomijajLinkiOrazLicencje(szablon)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}.
}}
Funkcja sprawdza, czy to są szablony spisu treści określone tablicą o kluczach, którymi są nazwy szablonów, z wartościami {{Code|true}}, czyli: {{Code|{{sr|#p.szablony_licencji|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_licencji}}:
<syntaxhighlight lang="lua">
p.szablony_licencji={
["Licencja"]=true,
};
</syntaxhighlight>
Tzn., czy to są szablony ozdobne woluminu, którego tablica: {{Code|{{sr|#p.szablony_ozdobne_stron_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_ozdobne_stron_woluminu}}, jest podobnie zbudowana, co poprzednia:
<syntaxhighlight lang="lua">
p.szablony_ozdobne_stron_woluminu={
["MDL:RozszerzonyLink"]=true,
};
</syntaxhighlight>
A jeżeli to są te szablony, to funkcja zwraca wartość {{Code|true}}.
Jeżeli jednak to nie są te szablony, należy użyć tablic, tak samo zbudowanej jak poprzednie, czyli: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.linki_szablony_elementy_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.linki_szablony_elementy_spisu_rzeczy={
["SpisTreści"]=true,
["Sekcja referencyjna"]=true,
["Sr"]=true,
["Link wewnętrzny"]=true,
["Ly"]=true,
["LinkOgólne"]=true,
["Lo"]=true,
};
</syntaxhighlight>
lub innej, inaczej zbudowanej niż poprzednie, ale ważne, że ma wartość niefałszywą, czyli taką tablicą: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}, jest:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
Jak są te nazwy szablonów określone ich kluczami tych tablic, to funkcja zwraca wartość {{Code|true}}. A jeżeli jednak nie to funkcją: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}, jest sprawdzane,czy to jest link inteligentny, nawet przekierowanie, jeżeli link taki jest, to funkcja zwraca wartość w tym wypadku {{Code|true}}. W przeciwnym wypadku, jak nie zwrócił tej wartości,bo taka nie jest nazwa szablonu, to funkcja nic nie zwraca.
====== {{Śródtytuł|CzySzablonLinkLubLicencja}}{{Code|CzySzablonLinkLubLicencja}} ======
Funkcja sprawdzająca za pomocą: {{LinkŚródtytuł|PomijajLinkiOrazLicencje}}, na podstawie parsowania tekstu szablonu funkcją: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, z parsowanym przechwytywanym typem obiektu: {{Code|obiekt}} {{LinkPatrz|obiekt}}, równym {{Code|SZABLON}}. A jeżeli funkcja ta wspomniana w tekście zwróci {{Code|true}}, to funkcja taki obiekt policzy.
Jeżeli liczba policzonych obiektów i znalezionych w wyniku parsowania jest większa od zera, to funkcja w nagłówku zwróci wartość {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local CzySzablonLinkLubLicencja=function(szablon)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}.
}}
===== {{Śródtytuł|iteratorTekstuNaglowka}}{{Code|iteratorTekstuNaglowka}} =====
Jest to funkcja iteratora, którego funkcja zwracana (iterator) zwraca parametry, dla rozdziałów dodatnich i pozycji list.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function iteratorTekstuNaglowka()
... ---- Kod przed zwróceniem iteratora;
return function()
... ---- Ciało funkcji iteratora;
end;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = Brak parametrów. | komórka1 = tak
}}
Iterator (funkcja zwracana przez funkcję w nagłówku) zwraca parametry w wyniku kolejnych wywołań:
<syntaxhighlight lang="lua">
return przedrostek_listy,tekstowy_przedrostek,wyzyskane_wywolanie_szablonu_spis_tresci,true/false;
</syntaxhighlight>
Parametry zwracane przez iterator:
{{OpisParametrów
| 1 = {{Code|przedrostek_listy}} | _1 = Przedrostek pozycji listy, dla rozdziałów dodatnich jest wartością pustą.
| 2 = {{Code|tekstowy_przedrostek}} | _2 = Numeracja pozycji w liście lub w nagłówku dodatnim.
| 3 = {{Code|wyzyskane_wywolanie_szablonu_spis_tresci}} | _3 = Jest to rozdział bez numeracji i przedrostka pozycji listy.
| 4 = {{Code|true/false}} | _4 = Wartość {{Code|true}} świadczy o rozdziale dodatnim, a w przypadku innym funkcja zwraca zawsze wartość tą {{Code|false}} jako ostatni element zwracany.
}}
Funkcja jest przykowana na rozdziałów dodatnich i pozycji list oraz innych linii, dla tego pierwszego funkcja zwraca:
<syntaxhighlight lang="lua">
return "","",wartosc,true;
</syntaxhighlight>
Gdzie {{Code|wartość}} jest to zawartość napisu wprowadzenia tekstu (rozdziału dodatniego).
W przypadku list oraz innych niż rozdziały dodatnie samo wyrażenie regularne {{lpg|Lua}} w {{lpr|Lua|Scribunto}} jest okreslone przez wyrażenie:
<syntaxhighlight lang="lua">
local re="([#:*;]*)[^%S\n]*([%d%.]*[^%S\n]*[^\n]+)";
</syntaxhighlight>
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu|p=StronicowyParser/Rozdziały}}}}, aby zamienić zawartość pozycji listy na rozdział bez numeracji i numerację, i dlatego ta funkcja zwraca te dwie wartości. Gdy funkcja jak nie znajdzie więcej linii (wyszukań), to zwraca wartość {{Code|nil}} mówiąca o zakończeniu iteracji iteratora, tzn. dane dla iteratora się zakończyły.
===== {{Śródtytuł|LiniaArtykulow}}{{Code|LiniaArtykulow}} =====
Funkcja dla szablonów kompletowania określonym tabelką: {{Code|{{sr|#p.szablony_kompletowania_stron_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_kompletowania_stron_woluminu}}, o definicji:
<syntaxhighlight lang="lua">
p.szablony_kompletowania_stron_woluminu={
["Kompletność"]=true,
["Kompletność krótka"]=true,
["Kompletność junior"]=true,
["Książka"]=true,
};
</syntaxhighlight>
Rozdziela linię na wiele obsługiwanych podlinii.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function LiniaArtykulow(linia)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|linia}} {{Patrz|linia}} | _1 = Pojedyncza przetworzona linia.
}}
====== {{Śródtytuł|SzablonAnalizujKompletnosc}}{{Code|SzablonAnalizujKompletnosc}} ======
Funkcja sprawdza, czy dane wywołania szablonu, ma swoją nazwę szablonu, która jest nazwą szablonu kompletowania.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function SzablonAnalizujKompletnosc(szablon)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}.
}}
====== Dalszy opis funkcji ======
Możliwe są dwie opcje, szablon kompletowania jest pierwszy, a drugi drugi, lub odwrotnie. Funkcja obsługuje te oba przypadki. Ona stawia przecinkiem dla obu wersji ustawień, jeśli potraktować układem link i szablon kompletowania, to wstawiany jest on pomiędzy tymi układami, aby rozdzielić linię, a w liście bez jego znaków pozycji, na elementy przy pomocy funkcji: {{LzLua|mw.text.split}}, z opcją jako drugi parametr, aby uwzględniał wyrażenia regularne {{Code|false}}. W tych rozdzielonych linią tą funkcją dzielącą ciąg znakowy na tabelę, kody '''HTML''' przecinka są zamieniane na zwykły przecinek.
Funkcja zwraca tabelę podzielonej linii na mniejsze podlinie, który można iterować funkcją: {{Code|pairs}} lub {{Code|ipairs}}.
===== {{Śródtytuł|WsadzanieParametryDoTablicy}}{{Code|WsadzanieParametryDoTablicy}} =====
Funkcja z parametrami, która uruchamia inną funkcję uruchamianą w: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}, która wstawia tabelę {{LinkPatrz|tab_stare}}, do ogólnej tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}, ewentualnie do {{Code|tabela_rozdzial_artykulow}} {{Patrz|tabela_rozdzial_artykulow}} na pozycję {{Code|numer_podtablicy_w_tablicy}} {{Patrz|numer_podtablicy_w_tablicy}}, a dokładniej na pozycję {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}} w funkcji {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function WsadzanieParametryDoTablicy(linia,czy_linia_uwzgledniana)
return function(tabela_rozdzial_artykulow2,numer_podtablicy_w_tablicy,tab_stare)
... ---- ciało funkcji.
end;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|linia}} | _1 = Jak w: {{LinkPatrz|linia}}.
| 2 = {{Code|czy_linia_uwzgledniana}} {{Patrz|czy_linia_uwzgledniana}} | _2 = Czy linię ma uwzględnić w powiększaniu poziomu o jeden dla artykułu.
}}
Parametry zwracanej funkcji przez tę w nagłówku:
{{OpisParametrów
| 1 = {{Code|tabela_rozdzial_artykulow2}} | _1 = Jak w: {{LinkPatrz|tabela_rozdzial_artykulow2}}.
| 2 = {{Code|numer_podtablicy_w_tablicy}} | _2 = Jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}.
| 3 = {{Code|tab_stare}} | _3 = Jak w: {{LinkPatrz|tab_stare}}.
}}
====== {{Śródtytuł|CzyZaliczac}}{{Code|CzyZaliczac}} ======
Funkcja sprawdza, czy z początkiem linii pozycji listy, bez przedrostka listy, jest z możliwym cudzysłowem, po którym następują liczby, litery, lub myślniki dolne, w takim pzypadku linia nie może składać się z nich, po ktorym występują znaki interpunkcyjne. Jeśli to sprawdzenie było pozytywne funkcja zwraca wartość logiczną odpwowiadającą {{Code|true}}, w przeciwnym wypadku jak {{Code|false}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function CzyZaliczac()...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = Brak parametrów funkcji. | komórka1 = tak
}}
Funkcja zwraca informację, czy daną linię traktować jako rozdział, chodzi tu o pozycje list, a w przypadku rozdziałów dodatnich wiadomo, że one są właśnie, że rozdziałami.
====== Dalszy opis funkcji ======
Funkcja sprawdza w funkcji zwracanej, czy rozważany rozdział jest centrowany danego artykułu, który siedzi pod rozdziałem lub w samym rozdziale, sprawdza, czy artykuł jest w rozdziale, sprawdza czy linia jest uwzględniana: {{Code|czy_linia_uwzgledniana}} {{LinkPatrz|czy_linia_uwzgledniana}}. Funkcja sprawdza, czy sekcja czy w: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, czy istnieje element: {{Code|tab_stare[2]}} {{Patrz|tab_stare[2]}}, i dalszy: {{Code|tab_stare[2][1]}} {{Patrz|tab_stare[2][1]}} - ten element jest to w: {{Code|tab_stare}}, taki: {{Code|#przedrostek_listy}} {{Patrz|#przedrostek_listy}}, a jeżeli to sprawdzenie przeszło pozytywnie, który dla tego jest poziomem listy, lub zerowego rozdziału lub rozdziału dodatniego.
Dla każdej linii zmienna: {{Code|nowa_linia}} {{Patrz|nowa_linia}}, przyjmuje wartość {{Code|false}}, wtedy dla przypadku przeciwnego, tzn. gdy mamy rozdział i uwzględniamy artykuły w jednej linii, którym jest rozdział będacy pozycją listy, w zmiennej: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, jest ustawiany element: {{Code|tab_stare[2][4]}} {{Patrz|tab_stare[2][4]}}, czyli zmienna: {{Code|w_rozdziale}} {{LinkPatrz|w_rozdziale}}, zaczyna przyjmować wartość {{Code|true}}. Wsadzany jest wtedy do tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}, na pozycję: {{Code|numer_podtablicy_w_tablicy}} {{LinkPatrz|numer_podtablicy_w_tablicy}}, czyli to jest też: {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, element {{Code|tab_stare}} {{LinkPatrz|tab_stare}}.
Gdy: {{Code|nowa_linia}} {{LinkPatrz|nowa_linia}}, gdy jednak przyjmuje wartość {{Code|false}}, wtedy jeśli poziom rozdzialu istnieje i przedrostek listy {{LinkPatrz|#przedrostek_listy}} jest większy od zera, i istnieje wiele artykułów w pozycji liście, wtedy: {{Code|ile>0}}, lub funkcja: {{LinkŚródtytuł|CzyZaliczac}}, przyjmuje wartość odpowiadające prawdziwej, w taki przypadku zmiennej: {{Code|nowa_linia}} {{LinkPatrz|nowa_linia}}, przydzielamy wartość {{Code|true}}, by dalsze artykuły można było wsadzić, do tablicy z nowym rozdziałem. Powiększamy numer rozdziału o jeden, tzn.: {{Code|numer_rozdzialu_w_ksiazce}} {{Patrz|numer_rozdzialu_w_ksiazce}}, wtedy w zmiennej: {{Code|tabela_artykulow}} {{Patrz|tabela_artykulow}}, tabeli rozdziałów i w nich artykułów dla tej pozycji przydzielamy wartość równą tablicy pustej. Liczymy rozdział dla tego rozdział z artykułami, z funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}, liczymy napis rozdziału, wtedy do pierwszej pozycji tablicy utworzonej w: {{Code|tabela_artykulow}} {{LinkPatrz|tabela_artykulow}}, dla miejsca: {{Code|numer_rozdzialu_w_ksiazce}} {{LinkPatrz|numer_rozdzialu_w_ksiazce}}, czyli: {{Code|tabela_rozdzial_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}, piszemy:
<syntaxhighlight lang="lua">
tabela_rozdzial_artykulow[1]={rozdzial_na_tekst,{-#przedrostek_listy,przedrostek_listy,tekstowy_przedrostek,false,},linia,};
</syntaxhighlight>
Gdzie: {{Code|rozdzial_na_tekst}} {{Patrz|rozdzial_na_tekst}}, to policzony rozdział, {{Code|-#przedrostek_listy}} {{Patrz|-#przedrostek_listy}} to poziom rozdziału ujemnego, i dlatego minus. A: {{Code|przedrostek_listy}}, to znaki poczatkowe z listy: {{Code|wzor_do_linii_z_lista}} {{LinkPatrz|wzor_do_linii_z_lista}}, a: {{Code|tekstowy_przedrostek}}, to numeracja tego rozdziału. Wartość {{Code|false}} to jest ze ten rozdział nie jest centrowany, a: {{Code|linia}} {{LinkPatrz|linia}}, to wyzyskana linia bez początku pozycji listy. Ustawiamy: {{Code|tab_stare[2][4]}} {{LinkPatrz|tab_stare[2][4]}}, na wartość {{Code|true}} i element: {{Code|tab_stare[6]}} {{Patrz|tab_stare[6]}}, ustawiamy na zero. Tworzymy tablicę pustą na pozycję: {{LinkPatrz|numer_podtablicy_w_tablicy}}, tablicy: {{Code|tabela_rozdzial_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}, i do tej tablicy dodajemy: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, za pomocą funkcji: {{LzLua|table.insert}}.
A jeżeli nie jest tworzony nowy rozdział z listy w tabeli: {{Code|tabela_artykulow}} {{LinkPatrz|tabela_artykulow}}, to na pozycję: {{Code|numer_podtablicy_w_tablicy}} {{LinkPatrz|numer_podtablicy_w_tablicy}}, jest dodawany element: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, również tak jest robione, gdy artykuły znajdują się w rozdziale dodatnim, tzn. równaniowej lub centrowanej, tzn. wtedy: {{Code|w_rozdziale}} {{LinkPatrz|w_rozdziale}}, przyjmuje wartość {{Code|true}}.
===== {{Śródtytuł|AnalizaLiniiObiekty}}{{Code|AnalizaLiniiObiekty}} =====
Za pomocą funkcji: {{LinkŚródtytuł|LiniaArtykulow}}, linia: {{Code|linia_rozwazana}} {{Patrz|linia_rozwazana}}, jest rozdzielana na wiele linii. To wiele linii w postaci tabeli, są iterowane od: {{Code|k {{=}} 1}}, do: {{Code|k {{=}} #tab_linia}}, gdzie: {{Code|#tab_linia}} {{Patrz|#tab_linia}}, jest to długość linii, tzn. liczba elementów numerowanych tablicy, tzn. od 1 do zwyż aż do apotkania najbliższej przerwy lub końca. Wtedy dla pojedyńczej literacji mamy: {{Code|tab_linia[k]}} {{Patrz|tab_linia[k]}}.
Iterujemy po kodach dla linii: {{Code|tab_linia[k]}} {{LinkPatrz|tab_linia[k]}}, przy pomocy funkcji: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} {{Patrz|p.IteratorSzablonowyZakodowanegoTekstu}}, iteratorem: {{Code|iterator2}} {{Patrz|iterator2}}.
Inicjujemy zmienną: {{Code|tab_nieobslugiwane {{=}} nil}}, następnie iterujemy: {{LinkPatrz|iterator2}}, uzyskując w każdej iteracji: {{Code|szablon}} {{LinkPatrz|szablon}}, {{Code|obiekt}} {{LinkPatrz|obiekt}}, i {{Code|kod}} {{LinkPatrz|kod}}.
Gdy mamy do czynienia: {{Code|SZABLON}}, lub: {{Code|LINKW}}, albo: {{Code|LINKZ}}, wtedy dla elementów tego pierwszego bierzemy tablicę: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}, dla elementu: {{Code|nazwa_szablonu}} {{LinkPatrz|nazwa_szablonu}}.
Jeżeli ten element: {{Code|tabela_spisu}}, istnieje, element pierwszy: {{Code|tabela_spisu[1]}}, jest równy wartości {{Code|true}}, wtedy mamy do czynienia z szablonem {{s|SpisPozycja}}. Jej element: {{Code|tabela_spisu["numer_link"]}}, istnieje i jest równy: {{Code|tyt}} {{Patrz|tyt}}. Iterujemy po kluczach i jego wartościach tego szablonu i sprawdzamy, który element jest równy właśnie tej wartości, a jeżeli jest taki, to dla elementów nie równych niemu, a właściwie w jego wartości iterujemy po kodach funkcją: {{LinkPatrz|p.IteratorSzablonowyZakodowanegoTekstu}}, dla tej wartości, w ten sposób zbieramy tablicę wielowymiarową najpierw po: {{Code|obiekt}} {{LinkPatrz|obiekt}}, póżniej po: {{Code|kod}}, {{LinkPatrz|kod}}, którą nazwiemy: {{Code|tab_nieobslugiwane}} {{Patrz|tab_nieobslugiwane}}, którego każda jej wartość jest równa {{Code|true}}. Ta tablica mówi dla jakich elementów ma nie zbierać w tablicy elementów w głównej tablicy rozdziałów i jego artykułach.
Dla elementu {{Code|tyt}} {{LinkPatrz|tyt}} tablicy parametrów przedrostek listy {{Code|przedrostek_listy}} ustawiamy na pusty, i liczmy numerację {{Code|tekstowy_przedrostek}} i zmienną {{Code|szablon}} {{LinkPatrz|szablon}} i ustawiamy zmienną {{Code|przerwij}} {{Patrz|przerwij}} na {{Code|true}}, aby dla tego szablonu nie zbierać elementów w tablicy rozdziałów i jego artykułów.
W przypadku przeciwnym dla: {{Code|tabela_spisu}}, gdy ma wartość {{Code|false}}, wtedy mamy do czynienia z funkcją: {{s|SpisZw}}. Dla niej liczymy: {{Code|przedrostek_listy}}, którą ustawiamy na pustą wartość. A: {{Code|tekstowy_przedrostek}}, liczmy uzyskując parametr o kluczu: {{Code|tabela_spisu["numer"]}}, którym jest parametr o numerze: {{Code|1}}, i {{Code|szablon}} {{LinkPatrz|szablon}}, który liczmy z parametrów szablonu o kluczu {{Code|tabela_spisu["link"]}}, którym jest numer {{Code|2}}. Ustawiamy tutaj zmienną: {{Code|}} {{LinkPatrz|przerwij}}, na wartosć {{Code|true}}.
====== {{Śródtytuł|CzyObslugiwane}}{{Code|CzyObslugiwane}} ======
Funkcja sprawdzająca, które elementy są obsługiwane, jeśli istnieje tablica: {{Code|tab_nieobslugiwane}} {{LinkPatrz|tab_nieobslugiwane}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local CzyObslugiwane=function()...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = Brak parametrów. | komórka1 = tak
}}
====== Dalszy opis funkcji ======
; Uwzględnianie tablicy, reprezentujące artykuł w rozdziale, wstawiany do tablicy danego rozdziału{{dk}}
Sprawdzany jest warunek:
<syntaxhighlight lang="lua">
if((--[[wliczaj_artykuly_tego_rozdzialu]] true)and(not przerwij)and((not tab_nieobslugiwane)or(CzyObslugiwane())))then
</syntaxhighlight>
Jeżeli jest on spełniony, wtedy wywołujemy funkcję: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}, później dla:
<syntaxhighlight lang="lua">
if((not czy_obslugiwane)and(not numer_rodzaju_artykulu_poprz))then
</syntaxhighlight>
Sprawdzamy, czy jest zebrana licencja z autorem według zmiennej: {{Code|licencja_z_autorem}} {{Patrz|licencja_z_autorem}}, i sprawdzamy, czy: {{Code|szablon}} {{LinkPatrz|szablon}}, jest wnetrzem szablonu, jeżeli tak, to ona przyjmuje wartość odpowiadająca prawdziwej, przeciwnie ma fałszywą.
Jeżeli ten pierwszy warunek jest niespełniony, to tylko liczymy to samo coostatnio.
; Szablony licencji, i jego parametry, uwzględnianie jego tylko raz ca całą książkę, mieszcząca się w artykule głównej książki{{dk}}
Następnie dla warunku, który musi być spełniony:
<syntaxhighlight lang="lua">
if((not numer_rodzaju_artykulu_poprz)and(not przerwij)and(link_szablon)and((not tab_pozycja_elementow_w_spisie_rzeczy)or(not tab_pozycja_elementow_w_spisie_rzeczy[1]))and(czy_artykul_korzystany)and(licencja_z_autorem))then
</syntaxhighlight>
Sprawdzamy szablony licencji, takich jak: {{s|Licencja}}, według tablicy: {{Code|{{sr|#p.szablony_licencji|p=StronicowyParser/obiekty}}}}.
Dla parametrów szablonu, liczymy jego parametry o kluczach, tzn.: {{Code|Autor}} {{Patrz|Autor}}, {{Code|Ukończone szkoły}} {{Patrz|Ukończone szkoły}}, {{Code|Email}} {{Patrz|Email}}, {{Code|Dotyczy}} {{Patrz|DotyczyDotyczy}}, {{Code|Licencjonowanie}} {{Patrz|Licencjonowanie}}, {{Code|Umowa prawna}} {{Patrz|Umowa prawna}} i {{Code|Konsekwencje}} {{Patrz|Konsekwencje}}, którego wartości przydzielamy do odpowiednich zmiennych. Każdą z tych zmiennych kompletujemy funkcją: {{Code|{{sr|#p.DekodowanieTekstuDekodowanieTekstu|p=StronicowyParser/Potrzebne}}}}, poprzez zwracaną przez nią funkcję, w której jest wykorzystywana funkcją: {{LzLua|frame:preprocess}}, do rozwijania. A dla elementu istniejącego: {{Code|Autor}}, piszemy zmienną: {{Code|licencja_z_autorem}} {{LinkPatrz|licencja_z_autorem}}, któremu przydzielamy wartość {{Code|false}}, co spowoduje, że nie będziemy analizowali jeszcze raz innego szablonu licencji.
Te zmienne tego szablonu zbieramy natomiast w tablicy: {{Code|tabela_licencji_spisu_tresci}} {{Patrz|tabela_licencji_spisu_tresci}}, dane dotyczące licencji, więc:
<syntaxhighlight lang="lua">
tabela_licencji_spisu_tresci={autor, szkoly, email, dotyczy, licencjonowanie, umowa_prawna, konsekwencje};
</syntaxhighlight>
Co później przerywamy pętle po: {{Code|iterator2}} {{LinkPatrz|iterator2}}, instrukcją: {{Code|break}}.
==== Dalszy opis funkcji {{nobold|{{LinkPatrz|opis funkcji-ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}}} ====
Ściągamy tekst, tabelę bazy i tabelę parametrów strony o nazwie: {{Code|nazwa_modulu}}, przy pomocy funkcji: {{Code|{{sr|#p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony|p=StronicowyParser/Tekst}}}}, według:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=nil;
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
return nil;
end,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Uruchamiamy funkcję: {{Code|__FUNKCJA_ZBIERANIA_DANYCH}} {{LinkPatrz|__FUNKCJA_ZBIERANIA_DANYCH}}, jeżeli istnieje.
Dalej wywołujemy funkcję: {{Code|{{sr|#p.IterTekst|p=StronicowyParser/Rozdziały}}}}, w celu znalezienia tekstu: {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}}, i iteratora: {{Code|iterator}} {{Patrz|iterator}}, po napisach wprowadzenia tekstu rozdziałów i ich zawartości rozdziałów i na podstawie:
<syntaxhighlight lang="lua">
local iterator,tekst_rozwiniety_calego_artykulu=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,true,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,
__FUNKCJA, ---- funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adresu szablonu, określa i zawraca jego zawartość;
__FUNKCJA2, ---- funkcja operująca na przygotowanej zawartości napisu wprowadzenia tekstu i tekście napisu wprowadzenia tekstu (rozdziału);
__FUNKCJA_ANALIZA_SPISU ---- funkcja do analizy i modyfikacji tekstu (może zwracać wartość: nil) przed samym kodowaniem, jeżeli tekst jest w ogóle jest taki, a jeśli nie, ta funkcja wtedy nie jest uruchamiana, funkcja ta bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: IterTekst, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: SpisTreści, co jest uwidocznione w module: Moduł:StronicowyParser/SpisTreści;
);
</syntaxhighlight>
Opis parametrów zwracanych:
{{OpisParametrów
| 1 = {{Code|iterator}} {{Patrz|iterator-IterTekst}} | _1 = Iterator po rozdziałach i jego zawartościach.
| 2 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu-IterTekst}} | _2 = Tekst przetworzony rozdziału.
}}
Odczytujemy tabelę: {{LinkPatrz|p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu}} i dalej: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}, o definicji:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={
["spis treści"]=true,
["spis tresci"]=true,
["spis rzeczy"]=true,
};
</syntaxhighlight>
Robimy kopię tych tabel i przyłączamy do metatabeli: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, przy pomocy funkcji: {{LzLua|setmetatable}}, aby nie odrózniać tych rozdziałów ze względu na wielkość liter i polskie znaki.
Inicjiujemy zmienną: {{Code|numer_rozdzialu_w_ksiazce}} {{LinkPatrz|numer_rozdzialu_w_ksiazce}}, wartością: {{Code|1}}, aby zbierać po kolei artykuły ze poszczególnego pojedynczego spisu treści.
Ustawiamy maksymalny rozmiar rozdziału zerowego na {{Code|50}}, w zmiennej: {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{Patrz|maksymalny_rozmiar_rozdzialu_zerowego}}, według:
<syntaxhighlight lang="lua">
local maksymalny_rozmiar_rozdzialu_zerowego=50;
</syntaxhighlight>
===== {{Śródtytuł|AnalizaRozdzialu}}{{Code|AnalizaRozdzialu}} =====
Jest to funkcja do zbierania danych z pojedynczgo rozdziału o pewnej linii, inicjowana z jego parametrami, także tekstem rozdziału.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function AnalizaRozdzialu(rozdzial,linia_rozdzialu,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|rozdzial}} {{Patrz|rozdzial}} | _1 = Jest to tekst rozdziału.
| 2 = {{Code|linia_rozdzialu}} {{Patrz|linia_rozdzialu}} | _2 = Jest to linia z rozdziałem.
| 3 = {{Code|text}} {{Patrz|text}} | _3 = Jest to tekst rozdziału o pewnym napisie wprowadzenia tekstu.
| 4 = {{Code|poziom_rozdzialu}} {{Patrz|poziom_rozdzialu}} | _4 = Jest to poziom danego rozdziału.
| 5 = {{Code|poczatek_rozdzialu}} {{Patrz|poczatek_rozdzialu}} | _5 = Początek pozycji listy rozdziałów mechanizmu {{Strong|MediaWiki}}.
| 6 = {{Code|numeracja}} {{Patrz|numeracja}} | _6 = Numeracja rozdziału.
| 7 = {{Code|czy_rozdzial_centrowany}} {{Patrz|czy_rozdzial_centrowany}} | _7 = Czy dany rozdział jest centrowany.
}}
====== Tabela artykułów rozdziałów i w nich artykułów oraz jego poszczególnych ======
Tworzymy tabelę: {{Code|tabela_artykulow}} {{LinkPatrz|tabela_artykulow}}, jeżeli nie istnieje, z pustą tablicą, a później dla elementu: {{Code|numer_rozdzialu_w_ksiazce}} {{LinkPatrz|numer_rozdzialu_w_ksiazce}}, jeżeli też go nie ma, to też pustą tablicą. Dalej liczymy napis wprowadzenia tekstu rozdziału dodatniego funkcją: {{LinkŚródtytuł|p.AnalizaNapisuWprowadzeniaTekstu}} i uwzględniamy je w tabeli rozdziałów dla danego rozdziału pod wartością: {{Code|tabela_rozdzial_artykulow[1]}}, w sposób:
<syntaxhighlight lang="lua">
tabela_rozdzial_artykulow[1]={rozdzial_na_tekst,{poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany,},rozdzial,};
</syntaxhighlight>
Dalej wprowadzamy zmienną: {{Code|czy_spis_rzeczy_napis_wprowadzenia_tekstu}} {{Patrz|czy_spis_rzeczy_napis_wprowadzenia_tekstu}}, mówiącą teraz rozpatrujemy rozdziały i artykuły w ramach spisu treści o nagłówkach typu: {{Code|Spis treści}}, czy: {{Code|SPIS RZECZY}}. Jeżeli wyszliszmy poza to, to ta zmienna wtedy przyjmuje wartość fałszywą, a definicja inicjacji tej zmiennej jest:
<syntaxhighlight lang="lua">
local czy_spis_rzeczy_napis_wprowadzenia_tekstu=(poziom_rozdzialu)and(not czy_jest_spis_tresci)and(not dalej_nie_rozwazaj_spis_tresci)and(jakie_spisy_tresci[spreparowany_uzyskany_tekst_rozdzialu]);
</syntaxhighlight>
Gdzie:
{{OpisParametrów
| 1 = {{Code|poziom_rozdzialu}} | _1 = Jak w: {{LinkPatrz|poziom_rozdzialu}}.
| 2 = {{Code|czy_jest_spis_tresci}} {{Patrz|czy_jest_spis_tresci}} | _2 = Czy jesteśmy w spisie treści.
| 3 = {{Code|dalej_nie_rozwazaj_spis_tresci}} {{Patrz|dalej_nie_rozwazaj_spis_tresci}} | _3 = Zmienna mówiąca, że teraz jesteśmy poza spisem treści.
}}
====== Kiedy uwzględniamy artykuły rozdziału ======
Jeżeli jesteśmy w spisie, to zawsze są uwzględniane artykuły rozdziału, bo jest ustawiona zmienna: {{Code|wliczaj_artykuly_tego_rozdzialu}} {{LinkPatrz|wliczaj_artykuly_tego_rozdzialu}}, na {{Code|true}}, a poza na {{Code|nil}}.
Funkcja jest przyszykowana jest dla jednego spisu treści, o ściśle określonym specjalnym napisie wprowadzenia tekstu, w danym spisie na stronie.
====== Iterator linii artykułu spis treści ======
Uruchamiamy iterator używając funkcji lokalnej: {{LinkŚródtytuł|iteratorTekstuNaglowka}}, według wywołania:
<syntaxhighlight lang="lua">
local iterator=iteratorTekstuNaglowka();
</syntaxhighlight>
Ustawiamy zmienną: {{Code|wliczaj_artykuly_tego_rozdzialu}} {{LinkPatrz|wliczaj_artykuly_tego_rozdzialu}}, aby wliczał lub nie, pewne artykuły rozdziału według:
<syntaxhighlight lang="lua">
local wliczaj_artykuly_tego_rozdzialu=((wliczaj_artykuly_tego_rozdzialu)or(not jakie_nie_rozdzialy[rozdzial]));
</syntaxhighlight>
Iterujemy otrzymanym ostatnio iteratorem, uzyskując kolejno zmienne: {{Code|przedrostek_listy}} {{LinkPatrz|przedrostek_listy}}, {{Code|tekstowy_przedrostek}} {{LinkPatrz|tekstowy_przedrostek}}, {{Code|linia}} {{LinkPatrz|linia}}, i {{Code|w_rozdziale}} {{LinkPatrz|w_rozdziale}}.
; Kiedy rozdziałów zerowych nie liczymy jako je{{dk}}
Dla rozdziałów, które nie sa poziomami z listą, sprawdzamy, czy to jest rozdział zerowy przy pomocy funkcji: {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|p=StronicowyParser/Rozdziały}}}}, i sprawdzamy, czy on przekracza rozmiar: {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}, jeżeli jest tym rozdziałem i nie przekracza pewnego rozmiaru, to to jest rozdział traktowany jako zerowy niepomijany rozdział zerowy, wtedy ustawiamy zmienną: {{Code|nie_pomijaj_tego_rozdzialu}} {{Patrz|nie_pomijaj_tego_rozdzialu}}, na {{Code|true}}.
; A jeśli to są rozdziały z listy zaczynające się od dwukropka w linii{{dk}}
Gdy taki rozdział nie pretenduje do zerowych, to sprawdzamy funkcją: {{Code|{{sr|#p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu|p=StronicowyParser/Rozdziały}}}}, czy ten rozdział pominąć, a jeżeli ona przyjmuje wartość odpowiadającej fałszywej, czyli {{Code|false}}, wtedy ustawiamy zmienną: {{Code|nie_pomijaj_tego_rozdzialunie_pomijaj_tego_rozdzialu}} {{LinkPatrz|nie_pomijaj_tego_rozdzialu}}, na taką samą wartość jak poprzednio.
; Inne rozdziały{{dk}}
Dla rozdziałów innych ta wartość przyjmuje postać {{Code|false}}.
; Rozdziały jednak nie pomijane{{dk}}
Dla rozdziałów, które nie są pomijane, wtedy zmienna: {{Code|nie_pomijaj_tego_rozdzialu}} {{LinkPatrz|nie_pomijaj_tego_rozdzialu}}, przyjmuje wartość {{Code|true}}, w takim przypadku wchodzimy do funkcji: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstuZgodnieZJegoSzablonowymiElementami|p=Szablonowe}}}}, wtedy dla linków szablonowych sprawdzamy, czy to są linki określone tablicami: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy}}, {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}} lub ewentualnie funkcją: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}.
Innym sposobem sprawdzania, czy to jest szablon linkowy jest tablica: {{Code|{{sr|#p.szablony_kompletowania_stron_woluminu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_kompletowania_stron_woluminu}}, lub {{Code|{{sr|#p.szablony_licencji|p=StroncowyParser/obiekty}}}} {{LinkPatrz|p.szablony_licencji}}.
Jeżeli to jest szablon linków, wtedy jest zwracana wartość: {{Code|return true,obiekt,kod}}, w przeciwnym wypadku: {{Code|return false,obiekt,kod}}.
Innym sposobem liczenia, czy to jest link, to wtedy może być to link normalny: {{Code|LINKW}}, który można sprawdzić funkcją: {{Code|{{sr|#p["CzyLinkWewnętrzny"]|p=Specjalne}}}}, wtedy jest zwracane {{Code|return true,obiekt,kod}}.
Link też może być zewnętrzny, wtedy to jest: {{Code|LINKZ}}, wtedy funkcja zwraca wartość: {{Code|return true,obiekt,kod}}.
; Kiedy analizujemy artykuły rozdziału{{dk}}
Następnie dla linii: {{Code|linia_rozwazana}} {{LinkPatrz|linia_rozwazana}}, co na podstawie tego liczymy, czy daną linię nie uwzględnić, w obliczeniach według schematu:
<syntaxhighlight lang="lua">
local czy_linia_uwzgledniana=mw.ustring.match(linia_rozwazana,"^%s*%-%-+(.*)%-%-+%s*$");
local czy_linia=((not czy_linia_uwzgledniana)and(mw.ustring.match(linia_rozwazana,"^%s*[%-%+%=%~]+.*$")
or ((#przedrostek_listy==0)and((mw.ustring.match(linia_rozwazana,"!"))and(mw.ustring.match(linia_rozwazana,"[^!]%s*$"))))
or mw.ustring.match(linia_rozwazana,"^%s*<")) or nil);
</syntaxhighlight>
Co następnie jest ustawiana {{Code|nowa_linia}} {{LinkPatrz|nowa_linia}} na wartość {{Code|false}}.
; Warunek analizowania artykułów rozdziałów{{dk}}
W obliczeniach raz uwzględniamy funkcję: {{LinkŚródtytuł|AnalizaLiniiObiekty}}, w ostatniej omawianej pętli, schematycznie:
<syntaxhighlight lang="lua">
if(not czy_linia)then AnalizaLiniiObiekty(linia_rozwazana);end;
</syntaxhighlight>
===== Dalsza część funkcji {{nobold|{{LinkPatrz|opis funkcji-ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}}} =====
Bierzemy zakodowany tekst: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu-IterTekst}}, i po nim iterator: {{Code|iterator}} {{LinkPatrz|iterator-IterTekst}}, wtedy iterujemy po parametrach:
<syntaxhighlight lang="lua">
local parsuj_rozdzialami=nil; ---- ta zmienna służy na wypadek, gdy by nie była żadnych rozwazanych rozdziałów;
for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do
---- za każdym razem jest uruchamiana funkcja: AnalizaRozdzialu, przy rozważanym rozdziale;
AnalizaRozdzialu(rozdzial_tab[1],rozdzial_tab[2],text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany);
---- oznacz zmienną: parsuj_rozdzialami, wartością; true, a póżniej jąnie inicjuj;
if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end
end;
</syntaxhighlight>
Parametry zwracane przez iterator: {{Code|iterator}} {{LinkPatrz|iterator-IterTekst}}:
{{OpisParametrów
| 1 = {{Code|rozdzial_tab}} {{Code|{{=}}}} {{Code|<nowiki>{ [1] = rozdzial, [2] = linia_rozdzialu, }</nowiki>}} | _1 = tabela składająca się z dwóch elementów:
| 2 = Pod elementy tabeli: | nagłówek2 = tak
| 3 = {{Code|rozdzial}} | _3 = Jak w: {{LinkPatrz|rozdzial}}.
| 4 = {{Code|linia_rozdzialu}} | _4 = Jak w: {{LinkPatrz|linia_rozdzialu}}.
| 5 = Inne parametry: | nagłówek5 = tak
| 6 = {{Code|text}} | _6 = Jak w: {{LinkPatrz|text}}.
| 7 = {{Code|poziom_rozdzialu}} | _7 =Jak w: {{LinkPatrz|poziom_rozdzialu}}.
| 8 = {{Code|poczatek_rozdzialu}} | _8 = Jak w: {{LinkPatrz|poczatek_rozdzialu}}.
| 9 = {{Code|numeracja}} | _9 = Jak w: {{LinkPatrz|numeracja}}.
| 10 = {{Code|czy_rozdzial_centrowany}} | _10 = Jak w: {{LinkPatrz|czy_rozdzial_centrowany}}.
}}
Gdy nie napotkano żadnego rozważanego rozdziału, wtedy: {{Code|parsuj_rozdzialami}}, przyjmuje wartość {{Code|nil}}, w takim razie uruchamiana jest funkcja:
<syntaxhighlight lang="lua">
if(not parsuj_rozdzialami)then
AnalizaRozdzialu("Spis treści",nil,tekst_rozwiniety_calego_artykulu,nil,nil,nil,nil);
end;
</syntaxhighlight>
Funkcja zwraca parametry inaczej, gdy artykuł, do którego należy książka jest korzystany, a inaczej, jeśli nie. W takim razie możemy zwracać na dwa sposoby:
<syntaxhighlight lang="lua">
if(czy_artykul_korzystany)then
return tabela_artykulow,tabela_licencji_spisu_tresci,przekierowanie_spisu_tresci;
else
return tabela_artykulow,nil,przekierowanie_spisu_tresci;
end;
</syntaxhighlight>
Przy artykułach korzystanych, co jest określone zmienną: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, tabelę: {{Code|tabela_licencji_spisu_tresci}} {{LinkPatrz|tabela_licencji_spisu_tresci}}, przy jego spisach treści w książkach, do której należy ten artykuł, zwracana jest jako wartość przeważnie jako nierówna {{Code|nil}}, a dla artykułów z innych książkach, ta wartość już jest taka, tzn. przyjmuje wartość {{Code|nil}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
n7y705j82fdg35lj6lyvf3pjhck3mky
558337
558336
2026-10-02T18:46:18Z
Persino
2851
/* Szablony rozwijane przez {{lpg|JavaScript}} */
558337
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SpisTreści}}|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 lokalne ==
=== {{Śródtytuł|Ile}}{{Code|Ile}} ===
Funkcja liczy liczbę elementów we wszystkich podtabelach tabeli {{Code|tabela_rozdzial_artykulow2}} {{Patrz|tabela_rozdzial_artykulow2}}, licząc od drugiej tabeli, po pierwszej tabeli mieści się podtabela z informacjami o rozdziale, w której znajdują się artykuły określone dalszymi podtabelami.
Tymi podtabelami są od {{Code|2}} do {{Code|7}}, czyli {{Code|6}} tabelek, w których są artykuły, które zaliczamy do kategorii wliczane, tzn. one nie znajdują się w takich rozdziałach przetłumaczonych na małą literę, ale przedtem na nią była działana funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, usuwając z nich odstępy na końcach, w tym dolne myślniki, a wewnątrz zamieniając kolejne dolne myślniki i spacje na jedną spacją.
Metafunkcja, w metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, w: {{Code|{{ld2|Parametry}}}}, aby porównać to z tablicą {{Code|{{sr|#p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu}}, by zaliczyć je do tego typu:
<syntaxhighlight lang="lua">
p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu={
["licencja"]=true,
["inne"]=true,
["bibliografia"]=true,
["zobacz też"]=true,
["linki zewnętrzne"]=true,
};
</syntaxhighlight>
Twew rozdziały należą do kategorii rozdziałów, w których artykuły są pomijane przez: '''{{ld|StronicowyParser|Stronicowy parser}}''', ale jeżeli one należą do rozdziału spisu treści lub rzeczy, to tam jednak nie są takie, inaczej jest poza.
A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}.
A ta powyższa tabela mieści się: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a jego opis w: {{Code|{{sr|#p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu|p=StronicowyParser/obiekty}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow2)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|numer_rodzaju_artykulu}} | _1 = Numer podtabeli elementtu, do którego wsadzamy element.
| 2 = {{Code|tabela_rozdzial_artykulow2}} | _2 = Tabela wraz podtabelami, od {{Code|1}} do {{Code|13}}, ale liczenie jest od {{Code|2}}.
}}
=== {{Śródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}{{Code|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}} ===
==== Opis pobieżny funkcji ====
Funkcja do wstawiania elementów z ogólnej tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}, za pomocą funkcji wstawianej jako parametr: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{Patrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, do odpowiedniej pozycji artykularnej od: {{Code|2}} do {{Code|13}}, a pozycja {{Code|1}}, to pozycja rozdziałowa, ona jest określana przez zmienną: {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{Patrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, a pozycja, którą wsadzamy to: {{Code|tab_stare}} {{Patrz|tab_stare}}.
Funkcja zwraca pozycje:
<syntaxhighlight lang="lua">
return numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych;
</syntaxhighlight>
Opis tych parametrów funkcji:
{{OpisParametrów
| 1 = {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} | _1 = Jest to wartość zwrócona przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}}, w odróżnieniu od: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, jest mniejszy o jeden, czyli wtedy to była a poziomie przypisywania wartość {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}},
| 2 = {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} | _2 = Pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}.
| 3 = {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} | _3 = Tablica do sprawdzania, czy artykuł z nagłówkiem, ma powtórzenie tego bez nagłówka, czyli dla tego bez tego jest inna numeracja niż z nagłówkiem, a gdy niema tego bez, to wtedy dzięki tej funkcji numeracja tak się zachowuje, jak tam by był ten element, co prawda jest tam dodawany, ale jako z informacją taką, że bz numeru ustalanym przez funkcję: {{LinkŚródtytuł|Ile}}, A przy okazji, aby tego elementu nie dodawać ponownie, to w nim jest ustalana druga zmienna na {{Code|1}}, a wcześniej była na {{Code|0}}, i dlatego ona była wtedy dodawana, a później już tak nie jest.
}}
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY,tabela_rozdzial_artykulow2,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow--[[]])...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{Patrz|self}} | _1 = Zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}}.
| 2 = {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} | _2 = Opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow2,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare);
</syntaxhighlight>
Funkcja jest wywoływana w:
<syntaxhighlight lang="lua">
numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych=WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,WsadzanieParametryDoTablicy(linia,czy_linia_uwzgledniana),tabela_rozdzial_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow);
</syntaxhighlight>
Gdzie funkcja: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, to jest: {{LinkŚródtytuł|WsadzanieParametryDoTablicy}}.
| 3 = {{Code|tabela_rozdzial_artykulow2}} | _3 = Ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow2}}.
| 4 = {{Code|tablica_artykulow_zebranych}} | _4 = Diała jak w: {{LinkPatrz|tablica_artykulow_zebranych}}.
| 5 = {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} | _5 = Jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}}.
| 6 = {{Code|szablon}} {{Patrz|szablon}} | _6 = Jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu.
| 7 = {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - | _7 = Kolejno to jest: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''' i '''nazwa książki'''.
| 8 = {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} | _8 = Jest to nazwa artykułu danego spisu treści.
| 9 = {{Code|pelna_nazwa_spisu_tresci}} {{Patrz|pelna_nazwa_spisu_tresci}} | _9 = Uchwyt do bazy kodowania tekstu strony spisu treści.
| 10 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} | _10 = Nazwa strony szablonowa, jak są wywoływane w postaci szablonowej, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}}.
| 11 = {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} | _11 = Uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 12 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _12 = Tablica bazy zapisana w postaci osobnej tablicy, a nie jej w wewnętrznej bazie, nie jak to było w postaci zmiennej {{LinkPatrz|nazwa_modulu}}, używana zamiast: {{LinkPatrz|nazwa_modulu}}.
| 13 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _13 = Tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}.
| 14 = {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} | _14 = Obiekt i kod, czyli: zmienne charakteryzujące zmienną wnętrza: {{Code|szablon}} {{LinkPatrz|szablon}}.
| 15 = {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} | _15 = Tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy.
| 16 = {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} | _16 = Tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię.
| 17 = {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} | _17 = Numeracja rozdziału, z jakim rozpoczyna się rozdział.
| 18 = {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} | _18 = Gdy link znajduje się w rozdziale dodatnim.
| 19 = {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} | _19 = Cała linia z artykułem lub artykułami, tą linią równie dobrze może być rozdział, tu chodzi o rozdział dodatni.
}}
==== Opis pobieżny funkcji {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} ====
Przedstawiamy tutaj funkcję: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, która jest opisana w punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Definicja funkcji w nagłówku:
<syntaxhighlight lang="lua">
__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow2,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare);
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tabela_rozdzial_artykulow2}} | _1 = Jak w: {{LinkPatrz|tabela_rozdzial_artykulow2}},
| 2 = {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} | _2 = Jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}},
| 3 = {{Code|tab_stare}} | _3 = Jak w: {{LinkPatrz|tab_stare}}.
}}
Ta funkcja została opisana już wcześniej.
==== Szczegółowy opis funkcji głównej ====
Uruchamiamy funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, która jest zdefiniowana w module: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}}. Wywołujemy tę funkcję:
<syntaxhighlight lang="lua">
local tab_pozycja_elementow_w_spisie_rzeczy,numer_rodzaju_artykulu,id,parametry_szablonu,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nil,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
</syntaxhighlight>
Pierwszy elementem: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest to zmienna tablicowa, która opisuje parametry artykularno-linkowe parametry, drugi: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, do której kategorii należy dany artykuł w linku, a trzeci parametr, to: {{Code|id}} {{Patrz|id}}, to zbierane są parametry linkowe z szablonu {{s|SpisTreści}}, czwarty to: {{Code|parametry_szablonu}} {{Patrz|parametry_szablonu}}, w przypadku szablonów inteligentnych linków, to są parametry wywołań tych szablonów, ostatni parametr to: {{Code|kom}} {{Patrz|kom}}, przedstawia on, jeśli {{Code|false}}, to artykuł zakwalifikowany został poprawnie do rozważań, a {{Code|true}} już nie.
To {{LinkPatrz|parametry szablonu}}, to jest tablica z trzech elementów, tzn.:
<syntaxhighlight lang="lua">
local parametry szablonu={tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,};
</syntaxhighlight>
Elementy tablicy:
{{OpisParametrów
| 1 = {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} | _1 = Tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych.
| 2 = {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} | _2 = To jest nazwa uzyskanego szablonu linków inteligentnych lub nie.
| 3 = {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} | _3 = Tabela modyfikatorów rozkładanego szablonu.
}}
Jeśli parametr: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, istnieje, to tworzona jest z niego taka sama wersja lub przy nieistnnieniu parametru {{LinkPatrz|wliczaj_artykuly_tego_rozdzialu}}, do niego jest dodawana jest liczba {{Code|6}}. W ten sposób możemy zbierać artykuły książki i inne,ktore należą do pewnych rozdziałów i które nie należą.
===== {{Śródtytuł|ParametrPierwszy}}{{Code|ParametrPierwszy}} =====
Funkcja zbierające dane z {{Code|tab_artykul}} {{Patrz|tab_artykul}}, którego to jest czteroelementowa tablica, dotycząca danego artykułu. Drugim parametrem: {{Code|czy_niedozwolone}} {{Patrz|czy_niedozwolone}}, jest zmienna logiczna mówiąca, czy wskazać w nazwie artykułu, czy są dozwolone znaki, jest to sprawdzenie według wyrażenia regularnego: {{Code|<nowiki>[|<>{}%[%]]</nowiki>}} {{Patrz|wzor_znaki_niedozwolone}} na podstawie funkcji {{LzLua|mw.ustring.match}}, czyli: {{Code|znaki_niedozwolone}} {{Patrz|znaki_niedozwolone}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
ParametrPierwszy(tab_artykul,czy_niedozwolone)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tab_artykul}} | _1 = Jak w: {{LinkPatrz|tab_artykul}}.
| 2 = {{Code|czy_niedozwolone}} | _2 = Jak w: {{LinkPatrz|czy_niedozwolone}}.
}}
Gdzie: {{Code|tab_artykul}} {{LinkPatrz|tab_artykul}}, który jest pierwszym parametrem przyjmowanym przez funkcję, jest zdefiniowany jako czteroelementowa tablica, którą przypisujemy do czterem osobnych parametrów:
<syntaxhighlight lang="lua">
local artykul=tab_artykul[1];
local parametry=tab_artykul[2];
local naglowek=tab_artykul[3];
local tablica_przekierowania=tab_artykul[4];
</syntaxhighlight>
Jeżeli, któreś z parametrów z: {{LinkPatrz|tab_artykul}}, tzn. element jego {{Code|2}}-gi i {{Code|3}}-ci, istnieje, to układana jest trzyelementowa tablica z elementów od {{Code|1}} do {{Code|3}}, z dodatkowym elementem: {{Code|<nowiki>["LINK"] = true</nowiki>}}, a element czwarty to jest: {{Code|tablica_przekierowania}} {{Patrz|tablica_przekierowania}}, a jeżeli te dwa elementy, nie licząc czwartego, wcale nie istnieją, wtedy jest tworzony łańcuch znakowy z tego pierwszego elementu. Tak tworzymy, nową wersję tablicy: {{Code|tab_artykul}} {{Patrz|tab_artykul-nowa wersja}}, lub łańcuch znakowy, w postaci:
<syntaxhighlight lang="lua">
tab_artykul=((artykul)and(parametry or naglowek))and{[1]=artykul,[2]=parametry,[3]=naglowek,["LINK"]=true,} or artykul;
</syntaxhighlight>
Funkcja zwraca trzy parametry, tzn. parametry: {{LinkPatrz|tab_artykul-nowa wersja}}, {{LinkPatrz|znaki_niedozwolone}} i tablicę przekierowania: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}:
<syntaxhighlight lang="lua">
return tab_artykul,znaki_niedozwolone,tablica_przekierowania;
</syntaxhighlight>
===== Rozwijanie nazwy linku artykułu =====
Do rozwijania nazwy linku służy funkcja: {{Code|{{sr|#p.DekodowanieTekstuNazwLinku|p=StronicowyParser/Pomocne}}}} {{Patrz|p.DekodowanieTekstuNazwLinku}}, pod względem szablonowym i nie tylko.
Funkcja rozwija tą nazwę tym: {{LzLua|frame:preprocess}}, jedynie nie rozwija szablonów stronicowego parsera, podane podkategoriach w kategorii: {{Code|{{lk2|Szablony stronicowe}}}}, za pomocą odpowiednich metod, bo to by wywołało nieskończoną pętle, i dlatego takie szablony są zamieniane tylko na wywołania symboliczne.
==== Dalszy opis funkcji nadrzędnej przy istnieniu parametrów linkowych normalnych, czy szablonowych (linków inteligentnych) ====
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|{{=}}}} {{Code|1}} =====
Tworzony jest numerek: {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{Patrz|numer_rodzaju_artykulu_w_podreczniku}}, który w stosunku do: {{LinkPatrz|numer_rodzaju_artykulu}}, jest większy o jeden, a schemat tej operacji:
<syntaxhighlight lang="lua">
local numer_rodzaju_artykulu_w_podreczniku=numer_rodzaju_artykulu+1;
</syntaxhighlight>
====== Tworzenie tablicy: {{nobold|{{Code|tablica_artykulow_zebranych}}}} ======
Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną wstępnie w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}.
; Tablica{{dk}} {{nobold|{{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}}}}, nie jest tablicą{{dk}}
Gdy element pierwszy: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, nie jest tablicą, wtedy jedynie liczymy, czy ona ma znaki niedozwolone: {{Code|wzor_znaki_niedozwolone}} {{LinkPatrz|wzor_znaki_niedozwolone}}, a póżniej wiedząc ten element, który jest aktualną nazwą artykułu kiążki, tworzymy tabelę {{Patrz|tablica_artykulow_zebranych-imicjacja}}:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,};
</syntaxhighlight>
; Gdy element{{dk}} {{nobold|{{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}}}}, jest łańcuchem znaków{{dk}}
Wpierw liczone są parametry z wywołania, z opcją, czy ma liczyć, czy nazwa artykułu ma znaki niedozwolone, z funkcji: {{LinkŚródtytuł|ParametrPierwszy}}:
<syntaxhighlight lang="lua">
tab_pozycja_elementow_w_spisie_rzeczy[1],znaki_niedozwolone,tablica_przekierowania=ParametrPierwszy(tab_pozycja_elementow_w_spisie_rzeczy[1],true);
</syntaxhighlight>
; Inna książka - atrybut, tzn. czy artykuł wychodzi poza daną książkę, lub jego przekierowanie w niej kieruje na stronę poza nią{{dk}}
Dalej sprawdzane jest, czy książka przyjmuje atrybut, tzn.: '''czy inna książka''', wtedy liczymy to z kodu z tablicy przekierowania: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, jeżeli jej wartość istnieje, tzn.: {{Code|czy_inna_ksiazka}} {{Patrz|czy_inna_ksiazka}}:
<syntaxhighlight lang="lua">
local czy_inna_ksiazka=tablica_przekierowania and tablica_przekierowania[1] and tablica_przekierowania[1][5] or nil;
</syntaxhighlight>
; Tablica przekierowania artykułu względem bieżącej książki{{dk}}
Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, który przedstawia, czy to jest artykuł bieżącej książki, którego przekierowanie kieruje, wtedy ten parametr ma wartość {{Code|true}}, a gdy adres przekierowania wskazuje na inną książkę, wtedy {{Code|false}}. Jeśli ten parametr ma wartość fałszywą, wtedy jest sprawdzane, czy jest tablicą w: {{Code|czy_tablica}} {{Patrz|czy_tablica}}, według:
<syntaxhighlight lang="lua">
czy_tablica=parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1]);
</syntaxhighlight>
Lub w przeciwnym wypadku liczymy parametry artykularne z tablicy przekierowania: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek przekierowania, w tej tablicy, istnieje, wtedy parametr: {{Code|czy_tablica}} {{LinkPatrz|czy_tablica}}, przyjmuje wartość {{Code|true}}, w przeciwnym wypadku wartość fałszywą.
Gdy ten element nie jest tablicą, to tworzona jest nazwa pełna artykułu: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}} i umieszczana w tablicy: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z podobną tablicą początkową jak w poprzednim przypadku jego tworzenia, czyli jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}.
; Tablica zebranych artykułów i porównywanie artykułu z nagłówkiem, czy istnieje wcześniejszy artykuł bez niego{{dk}}
Gdy element jest jednak tablicą, też jest liczona pełna nazwa artykułu (gdy nazwa artykułu przekierowania istnieje, wtedy ona jest liczona z: {{Code|tablica_przekierowania[2]}}, w przeciwnym wypadku, jeśli element: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}}, jest tablicą, wtedy liczymy ją z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1][1]}}, w innym wypadku z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}}), a z niej liczymy tablicę: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}, w przypadku pierwszego artykułu nienagłówkowego.
A w przypadku pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie, artykuł poprzedni nie istnieje, a więc tego tam nie ma tam w takim przypadku.
Gdy funkcja napotkała artykuł o takim samym stronie, co poprzednio, to do wartości początkowej, bez definiowania jeszcze raz tej samej tablicy, jest ustawiane odpowiednio:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych[3]=true;
</syntaxhighlight>
Co informuje, że artykuł jest ten sam, tylko inny nagłówek niż poprzedni, a poprzedni pierwszy jest bez niego.
====== Rozwijanie nazwy linku ======
Kompletowany jest drugi element tablicy: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkPatrz|p.DekodowanieTekstuNazwLinku}}. Dalej z tej nazwy są usuwane znaki specjalne według funkcji: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, z modułu: {{Code|{{ld2|Specjalne}}}}. Następnie działamy funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, które końcowe spacje usuwa, a wewnętrz powtarzające zamienia kolejne na jedną spację.
====== Dodawanie do tablicy problemów, jeśli nastąpił problem ze znakami niedozwolonymi ======
A między czasie, gdy mamy niedozwolone znaki: {{Code|znaki_niedozwolone}} {{LinkPatrz|znaki_niedozwolone}}, za pomocą funkcji pytającej sprawdzamy, czy element inny zgłoszeniowy został dodany do tablicy problemów: {{Code|{{sr|#p.CzyJestTakiProblemowyElement|p=StronicowyParser/Problemy}}}}, aż w końcu dodajemy ten problem, jeśli go nie ma przy pomocy funkcji: {{Code|{{sr|#p.UstawTakiProblemowyElement|p=StronicowyParser/Problemy}}}}.
====== {{Śródtytuł|inicjacja_i_kompletowanie_zmiennych}}Ustalanie nazwy jednostki, kompletowanie linii artykułów i inicjowanie pozycji, w tabeli zebranych elementów, w tabeli zebranych elementów ======
Ustalamy nazwę jednostki z funkcji: {{Code|{{sr|#p.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem|p=StronicowyParser/Potrzebne}}}}, i inicjujemy tą wartością, czyli: {{Code|nazwa jednostki}} {{Patrz|nazwa jednostki}}, wartość starą: {{Code|stara_nazwa_jednostki}} {{Patrz|stara_nazwa_jednostki}}, według:
<syntaxhighlight lang="lua">
---- Piszanie pełnej nazwy jednostki bez parametrów i nagłówka;
local nazwa_jednostki=stronicowyparser_potrzebne_modul.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(tab_pozycja_elementow_w_spisie_rzeczy[1],false);
---- Inicjowanie starej wartości tą policzoną;
local stara_nazwa_jednostki=nazwa_jednostki;
</syntaxhighlight>
Dalej {{Śródtekst|uchwyt=tabela_rozdzial_artykulow2|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}}}, według:
<syntaxhighlight lang="lua">
if(not tabela_rozdzial_artykulow2[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow2[numer_rodzaju_artykulu_w_podreczniku]={};end;
</syntaxhighlight>
Co {{Śródtekst|uchwyt=linia_artykokow|tekst=dalej linię artykułów {{Code|linia_artykokow}} {{LinkPatrz|linia_artykokow}}, kompletujemy, funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, z modułu: {{Code|{{ld2|Szablonowe}}}}, znając tablicę: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}}}, według:
<syntaxhighlight lang="lua">
linia_artykokow=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_artykokow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
</syntaxhighlight>
====== Uwzględnianie niepodanego elementu nienagłówkowego w tablicy zebranych parametrów ======
Gdy tablica przekierowania: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, istnieje, wtedy sprawdzamy, czy zmienna logiczna: {{Code|czy_tablica}} {{LinkPatrz|czy_tablica}}, jest prawdą i czy: {{Code|stara_nazwa_jednostki}} {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej: {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie artykułu przekierowania.
Inicjujemy nową zmienną: {{Code|przekierowanie}} {{LinkPatrz|przekierowanie}}, z artykułu, parametrów i nagłówka, ale wpierw sprawdzamy, czy dwa ostatnie istnieją, według:
<syntaxhighlight lang="lua">
przekierowanie=przekierowanie and ((tablica_przekierowania[3] or tablica_przekierowania[4]) and {przekierowanie, tablica_przekierowania[3], tablica_przekierowania[4],["LINK"]=true,}or przekierowanie) or nil;
</syntaxhighlight>
Tworzony jest nowy element: {{Code|nazwa jednostki}} {{Patrz|nazwajednostki-nowy}}, z: {{LinkPatrz|nazwa jednostki}}, parametrów i nagłówka, według rysu:
<syntaxhighlight lang="lua">
nazwa_jednostki={nazwa_jednostki, tab_pozycja_elementow_w_spisie_rzeczy[1][2], tab_pozycja_elementow_w_spisie_rzeczy[1][3],["LINK"]=true,};
</syntaxhighlight>
Jeżeli parametr drugi: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}.
Wsadzamy element: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, do zbioru: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, przy pomocy funkcji: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Następnie jej drugiemu elementowi: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, do tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}, na pozycji: {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, według funkcji: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej.
Jeżeli tablica przekierowania: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, jednak nie istnieje, wtedy tak samo sprawdzamy, co poprzednio potem, ale po spełnieniu tych warunków robimy inną tablicą: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, i tę tablicę robimy podobnie, i inicjujemy te same elementy też podobnie.
====== Uwzględnianie pozycji podanej w tablicy zebranych elementów ======
Tworzymy zmienną: {{Code|ile_dodac_do_poziomu_artykulu}} {{Patrz|ile_dodac_do_poziomu_artykulu}}, z drugiego elementu tablicy: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, następnię tworzymy inną zmienną: {{Code|ile_dodac_do_poziomu_artykulu_lub_nil}} {{Patrz|ile_dodac_do_poziomu_artykulu_lub_nil}}, co uwidaczniamy wzorem:
<syntaxhighlight lang="lua">
local ile_dodac_do_poziomu_artykulu_lub_nil=((ile_dodac_do_poziomu_artykulu)and(ile_dodac_do_poziomu_artykulu>0))and ile_dodac_do_poziomu_artykulu or nil;
</syntaxhighlight>
Tą zmienną wykorzystamy do sformułowania: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}.
{{Śródtekst|tekst=Tworzymy zmienną: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}, na pozycji: {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, przy pomocy funkcji: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.|uchwyt=__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|>{{=}}}} {{Code|2}} =====
Będziemy tutaj operowali, gdy parametr drugi zwracany z funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, wskazuje na nie artykuł książki, zatem ten rozdział jest właśnie dla tego przypadku.
====== Odkodowanie i przygotowanie zmiennych artykułu linku, jej nazwy, także kodu języka i projektu ======
* Gdy pierwszy element tablicy: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}.
* Dla drugiego takiego elementu z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, co jest nazwą linku, wtedy gdy nazwa linku normalnego, czy szablonowego, jest zakodowana, to ją odkodujemy, którego każdy jego element kod odkodujemy według funkcji: {{LinkPatrz|p.DekodowanieTekstuNazwLinku}}, następnie z niej usuwamy znaki specjalne według: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, następnie usuwamy końcowe spacje i wewnątrz kolejne spacje zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
* Dla trzeciego i czwartego takiego elementu z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, te elementy odkodujemy, następnie z nich usuwamy końcowe spacje, a wewnątrz kolejne spacje zastępujemy jedną, według tej samej funkcji, co powyżej.
====== Przygotowanie zmiennych, inicjowanie tablicy: {{Code|tab_stare}}, i wsadzanie jej do tablicy ogólnej: {{Code|tabela_rozdzial_artykulow2}} ======
Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow2}}, także co {{PobierzŚródtekst|linia_artykokow}}, co wszystko robimy podobnie jak w rozdziale: {{LinkŚródtytuł|inicjacja_i_kompletowanie_zmiennych}}.
{{PobierzŚródtekst|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
==== Definicja tablicy: {{Code|tab_stare}}, inicjowanie jej elementów w różnych przypadkach ====
Przedstawiamy tutaj ogólną definicję zmiennej: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. Ta wersja jest jedynie sformułowana dla artykułów w rozdziale, a nie dla rozdziałów, bo w tablicy, do której jest ona wsadzana przyjmuje ona możliwy numerek od "2" do "13", a nie również "1". Jej wersja ogólna:
<syntaxhighlight lang="lua">
local tab_stare=
{
---- Początek elementów alternatywnych
{
---- Początek wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[1], -- artykuł bez pełnej nazwy ksiązki, bez parametrów i nagłówka, bo ich nie posiadałna samym początku;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- artykuł bez pełnej nazwy książki, bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[2], -- nazwa linku artykułu normalnego, czy szablonowego;
---- Początek elementów alternatywnych dla przekierowania
---- Poczatek parametrów przekierowania
{
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
tablica_przekierowania[3], -- parametry przekierowania artykułu;
tablica_przekierowania[4], -- nagłówek przekierowania artykułu;
["LINK"]=true, -- zmienna świadcząca, że nazwa przekierowania artykułu jest z parametrami i nagłówkiem;
},
---- lub
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
---- Koniec parametrów przekierowania
tablica_przekierowania[1], -- tablica o definicji: {
nazwa_przestrzeni_strony_przekierowania, -- nazwa przestrzzeni nazw przekierowania artykułu;
nazwa_przestrzeni_ksiazki_strony_przekierowania, -- nazwa przestrzeni książki przekierowania artykułu;
nazwa_ksiazki_strony_przekierowania, -- nazwa książki orzekierowania artykułu;
true/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce;
true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie;
czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach;
};
---- lub
nil, -- dotycząca przekierowania artykułu, a tutaj strona nie ma przekierowania, więc: nil;
nil, -- dotycząca tablicy książki, na którą wskazuje przekierowanie, a tutaj nie ma tablicy, więc: nil;
---- Koniec elementów alternatywnych dla przekierowania
tab_pozycja_elementow_w_spisie_rzeczy[3], -- kod języka;
tab_pozycja_elementow_w_spisie_rzeczy[4], -- kod projektu;
tab_pozycja_elementow_w_spisie_rzeczy[5], -- adres artykułu bez przetworzenia w linku normalnym,czy szablonowym;
ile_dodac_do_poziomu_artykulu_lub_nil, -- parametr mający tylko wartości: 1, gdy do aktualnego poziomu musi być dodane jeden - ta wartość, tylko dotyczy artykułów należących do tej samej książki, lub: nil, gdy nic, czyli w pozostałych przypadkach;
tab_pozycja_elementow_w_spisie_rzeczy[6], -- "url", pozycja świadcząca, że to jest link zewnętrzny, a nil, gdy to jest normalny link;
},
---- lub
tab_pozycja_elementow_w_spisie_rzeczy[1], -- nazwa artykułu linku, która nie posiada, ani parametrów w sobie, a po nim nagłówka, lub bezpośrednio po nazwie;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- nazwa artykułu bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec elementów alternatywnych
{
#przedrostek_listy, -- poziom listy, w którym jest artykuł, dla artykułów w linii z listą, w innym wypadku dla artykułu znajdującego się w rozdziale dodatnim, czy ujemnym jest zero;
przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])", przeciwnie dla artykułów w rozdziale dodatnim ma wartość pustą;
tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu, gdy nie ma takiej numeracji, bo nie da się jej wydzielić, to ma wartość pustą;
w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym, wtedy "true", w przeciwnym wypadku: "false";
},
linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare";
true/false, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: false;
true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika, przeciwnie: false;
---- Początek elementów alternaatywnych
Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow2), -- który numer artykułu, w momencie wsadzenia do tabeli zbierania rozdziałów i w nich artykułów, nawet w rozdziale;
---- lub
nil, -- nil, wtedy gdy link jest tak sobie dodany, który nie należy do żadnego spisu, a po nim elementy jego z nagłówkiem natomiast należą;
---- Koniec elementów alternatywnych
};
</syntaxhighlight>
W powyższym: {{Tag|syntaxhighlight|parametry=lang="lua"}}, dla elementu: {{Code|<nowiki>---- lub</nowiki>}}, jest powiedziane, że są dostępne alternatywy, które są zawarte w tablicy, że wybieramy te, aby nie spowodować czysto podwójnej tablicy, aby każda tablica zawierały inne elementy, jak wiele, a nie jedną tablicę, jak i łańcuchy znaków, wartość nil, powoduje, że czy ma być taka tablica, ale nie podwójna, co to znaczy podowójna, tzn. tablica w sobie zawiera inną jedyną tablicę, a tak nie może być, a jak zawiera jedną tablicę, to musi posiadać inne nienilowe elementy.
== Funkcje tablicy transportu ==
=== {{Śródtytuł|p.AnalizaNapisuWprowadzeniaTekstu}}{{Code|p.AnalizaNapisuWprowadzeniaTekstu}} ===
Funkcja przyjmuje jako parametr nieskompletowaną i nieprzetworzony tekst napisu wprowadzenia tekstu. On kompletujei przekształca go w odpowiedni sposób,aby otrzymać czysty tekst tytułu rozdziału.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AnalizaNapisuWprowadzeniaTekstu(rozdzial,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|rozdzial}} | _1 = Ten tekst tytułu rozdziału, o którym mówimy.
| 2 = {{Code|pelna_nazwa_spisu_tresci}} | _2 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci}}
| 3 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _3 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _5 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
==== Obiekty typu {{nobold|{{Code|SZABLON}}}} ====
Funkcja korzysta z funkcji: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, funkcja ma zdefiniowaną pierwszą jej funkcję, która dla: {{Code|obiekt {{=}} "SZABLON"}}, używamy pierwsze dwie tabelę, te tabele:
Pierwsza {{Patrz|szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu}}, która służy do zamieniania szablonów na ich parametry, tutaj pierwsza, to jest tablica: {{Code|{{sr|#p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu}}:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu={
["MDL:RozszerzonyLink"]=1,
["Kompletność"]="",
["Kompletność krótka"]="",
["Kompletność junior"]="",
["Książka"]="",
};
</syntaxhighlight>
Druga: {{Code|{{sr|#p.szablony_dozwolone_w_nazwach_linkowych|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_dozwolone_w_nazwach_linkowych}}, też służy do tego samego.
Funkcja wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja {{Patrz|p.szablony_dozwolone_w_nazwach_linkowych}}:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_w_nazwach_linkowych={
["Korekta"] =2,
};
</syntaxhighlight>
===== Funkcje zawartości i dodatków, dla szablonów =====
One służą do zamieniania wywołań szablonowych na odpowiednie ich zawartości parametrów określone przez numery parametrów tych elementów w tch tabelach. Jeżeli przy którym wywolaniu przy wykorzystaniu kolejnych tych tabel przy użyciu funkcji: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, nastąpiło zamienienie, to funkcja pierwsza w: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, zakańcza się z tą wartością. A jeżeli nie to uruchamia się funkcj dodatków: {{Code|{{sr|#p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu|p=StronicowyParser/Rozdziały}}}}, a jeśli nastąpiło zastąpienie, to funkcja kompletowania się kończy z tą wartością.
===== Szablonowe linki =====
Dalej jeżeli tak się nie stało, to uruchamia się funkcja parametrów, w którym wywołanie szablonowe jest rozkładane na nazwę szablonu, modyfikatory i parametry. Dalej jest spradzanie , czy jest to link inteligentny według funkcji: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}, a gdy jest, to funkcja kończy swoje działania z nazwą tego linku lub jego adreesem wewnętrznym, a jeśli on nie jest tym, to sprawdza, czy są inne szablonowe linki, które podejrzewa się poprzez wywołanie funkcji: {{Code|{{sr|#p.NazwaInnegoSzablonowegoLinkowegoObiektu|p=StronicowyParser/Potrzebne}}}}, a jeżeli jest tym linkiem, to funkcja składania zwraca też jak poprzednio nazwę linku lub jego adres wewnętrzny, ewentualnie z dodatkiem. A gdy nie, to w innym przypadku sprawwdzane, czy to jest inny link wewnętrzny generowane przez szablony, która spradza funkcja tutaj: {{Code|{{sr|#p.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy|p=StronicowyParser/Potrzebne}}}}, a jeżeli szablon jest tym linkiem, to kunkcja składania zwraca jego nazwę linkową.
===== Szablony rozwijane przez {{lpg|JavaScript}} =====
A następnym krokiem jest sprawdzanie, czy nazwa szablonu jest jednych z elementów z tablicy: {{LinkPatrz|p.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu}}, która ma ten element, te szablony wymienione w tej tablicy są po to, aby służyły do rozwijania przez JavaScript, są to elementy wikikodu, które są pracochłonne ze względu na ich skomplikowany kod, czy wikikod, nawet {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, i dlatego ich się nie rozwija przez stronicowy parser: {{Code|{{ld2|StronicowyParser}}}}, te nazwy szablonów są określone tablicą: {{Code|{{sr|#p.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu}}:
<syntaxhighlight lang="lua">
p.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu={
["Cytuj"]=true,
["Cytuj stronę"]=true,
["Cytuj pismo"]=true,
["Cytuj odcinek"]=true,
["Cytuj książkę"]=true,
["Cytuj grę komputerową"]=true,
};
</syntaxhighlight>
I funkcja wtedy zwraca skompletowany szablon bez rozwijania jego, pod warunkiem, jeżeli jest tym szablonem o tej nazwę szablonu wywołującego.
===== Co jest zwracane w przypadku szablonów =====
Te powyżej elementy dla funkcji parametrów, w niej wartości są zwracane do niej, a jeżeli ona przyjmuje wartość nienilową, to do funkcji składania zwracana jest jego wartość, a przeciwnie jest zwracane pierwszy parametr szablonu do niej.
==== Obiekty typu: {{nobold|{{Code|NOWIKI}}}}, {{nobold|{{Code|PRE}}}} i {{nobold|{{Code|ŹRÓDŁO}}}} ====
A gdy dla elementów, jeśli nazwa obiektu jest: {{Code|obiekt {{=}} "NOWIKI"}}, {{Code|obiekt {{=}} "PRE"}}, lub: {{Code|obiekt {{=}} "ŹRÓDŁO"}}, znacznik jest rozkładany na czynniki pierwsze, a jeżeli nnie ma zawartości, to przez funkcję skłądania jest zwracana wartość pusta, a jeśli nie, to pewne znaki specjalne tagu {{Tag|nowiki}}, które mają w nim być zamienione na tekst, są zamieniane na kody '''HTML''', co po zamienieniu ta ona jest zwracana.
==== Obiekty typu: {{nobold|{{Code|MATH}}}}, {{nobold|{{Code|GALERIA}}}}, {{nobold|{{Code|MAPAOBRAZU}}}}, i {{nobold|{{Code|INNEPRE}}}} ====
A jeżeli wartość: {{Code|obiekt}}, jest nie równa: {{Code|MATH}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} lub {{Code|INNEPRE}}, wtedy z zawartości zmiennej: {{Code|szablon}}, są wykorzystanne funkcje z modułu: {{Code|{{ld2|Specjalne}}}}, które w tej podanej zmiennej są usuwane z komentarze z: {{Code|{{sr|#p["UsuńKomentarze"]|p=Specjalne}}}}, zamieniane są linki zewnętrzne i wewnętrzne na ich nazwy lub adresy według: {{Code|{{sr|#p["ZamieńLinkiZewnętrzneNaTekst"]|p=Specjalne}}}} i {{Code|{{sr|#p["ZamieńLinkiWewnętrzneNaTekst"]|p=Specjalne}}}}. Są usuwane rozwinięte znaczniki szablonów stylów używając do tego celu: {{Code|{{sr|#p["UsuńSzablonyStylów"]|p=Specjalne}}}}. Są też usuwane znaczniki na podstawie: {{Code|{{sr|#p["UsuńZnaczniki"]|p=Specjalne}}}}. Z tekstu szablonu są usuwane normalne kategorie nieszablonowe: {{Code|{{sr|#p"UsuńKategorie"]|p=Specjalne}}}}. Są też usuwane z zawartości wywołania plików i interwiki z: {{Code|{{sr|#p["UsuńWywołaniaPlików"]|p=Specjalne}}}} i {{Code|{{sr|#p["UsuńInterwiki"]|p=Specjalne}}}}. Dalej z tego obiektu są usuwane znaki specjalne z: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}.
A gdy mamy do czynienia z innymi znacznikami, to są zwracane jest zamiast niego wartość pusta do funkcji kompletowania.
Dane z funkcji kompletowane są zwracane, które z niej są usuwane znaki specjalne z całości tekstu rozdziału: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, i znaki białe z końców tekstu i powtarzarzające się te znaki kolejne z wewnętrz są zamieniane na jedną spację, to się dzieje według funkcji: {{Code|{{sr|#p["UsuńZbędneBiałeZnaki"]|p=Specjalne}}}}.
Cały taki wynik operacji robione w funkcji w nagłówku są zwracane do niej, to jest, co uzyskujemy nazwa rozdziału w postaci przetworzonej.
=== {{Śródtytuł|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}{{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} ===
Opisane tutaj są podfunkcje, z których korzysta ta funkcja, co one robią, do czego są wykorzystane.
==== Opis funkcji: {{nobold|{{Patrz|opis funkcji-ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}}} ====
Funkcja służy do zbierania nagłówków i z niej danych,tzn. linków normalnych i inteligentnych, a także są zbierane nagłówki z listy bez artykułów i do nich elementy podlisty z artykułami w postaci wywołań linkowych w niej. Tworzona jest specjalnie dla niegp tablica: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, która w odpowiedni po przekształaceniach wsadzana jest do tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} | _1 = Jak w: {{LinkPatrz|self}}.
| 2 = {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} | _2 = Kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}.
| 3 = {{Code|nazwa_spisu_tresci}} | _3 = Jak w: {{LinkPatrz|nazwa_spisu_tresci}}.
| 4 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _4 = Czy dany spis treści dla książki dla jej artykułu korzystanego, dla innej książki, wtedy to artykuł niekorzystany.
| 5 = {{Code|adres_ksiazki_glownego_spisu_tresci}} {{Patrz|adres_ksiazki_glownego_spisu_tresci}} | _5 = Jest to wewnętrzny adres książki głównego spisu treści,jest to taki adresm na który wskazuje przekierowanie innej książki.
| 6 = {{Code|__FUNKCJA_ZBIERANIA_DANYCH}} {{Patrz|__FUNKCJA_ZBIERANIA_DANYCH}} | _6 = Jest to funkcja, która zbiera informacje o aktualnym artykule, która jest spisem treści, w postaci nieprzetworzonej przez funkcje z modułu: {{Code|{{ld2|StronicowyParser/Rozdziały}}}}, opisanego w: {{Code|{{sr|Rozdziały|StronicowyParser - Rozdziały|p=StronicowyParser}}}}, ta funkcja kopiuje, np. tabele danych bazy modułu: {{Code|{{m|Szablonowe}}}}, tzn: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, i tabelę rozkładu elementów w niej na czynniki pierwsze, tzn.: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, co jest napisane w module: {{Code|{{ld2|StronicowyParser/ZbieranieDanychStron}}}}, a w dokumentacji: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}.
}}
==== Funkcje lokalne ====
Funkcja ma w sobie też definicję funkcji lokalnych zdefiniowanej w tej funkcji tutaj opisywanej.
===== {{Śródtytuł|FunkcjaIteratoraTekstuZakodowego}}{{Code|FunkcjaIteratoraTekstuZakodowego}} =====
Funkcja służy do pomijania tego, co nie jest linkiem wewnętrznym, czy zewnętrznym, czyli oznaczone kodami: {{Code|LINKW}} lub {{Code|LINKZ}}, czy nawet szablonem linkuinteligentnego, czy innego służacego do generowania spisu treści, do tego celu również używa funkcji: {{LinkŚródtytuł|CzySzablonLinkLubLicencja}}, oraz tego co nie jest w liście okreslonym wzorem {{Code|<nowiki>\n([#:*;]+)</nowiki>}} z mozliwym na początku tekstem, ale nie z kodami, w danej pozycji listy, lub co ewentualnie nie może być w możliwej liście, tzn.: {{Code|<nowiki>\n([#:*;]*)</nowiki>}}, ale wtedy musi tam być z tekstem, ale nie z kodami, na początku danej pozycji listy, nawet jeśli to nie jest lista, to też tak samo.
Jeżeli funkcja nie ma kodów linków wewnętrznych, czy to normalnych, czy szablonowych, to się zakańcza z wartością domyślną {{Code|nil}}, w przeciwnym wypadku do sprawdzenia używa do tego funkcji: {{LinkŚródtytuł|PomijajLinkiOrazLicencje}}, do sprawdzania, czy to jest link lub licencji, a jeżeli ta funkcja zwraca wartość {{Code|true}}, to cała funkcja zwraca {{Code|nil}}. Jeżeli oba te sposoby nie dały rezultatu {{Code|true}}, to wtedy funkcja zwraca wartość pustą, czyli okreslonym ciągiem znakowym o szwerokości zerowej.
Funkcja ma w sobie dwie definicje funkcji: {{LinkŚródtytuł|PomijajLinkiOrazLicencje}} i {{LinkŚródtytuł|CzySzablonLinkLubLicencja}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local FunkcjaIteratoraTekstuZakodowego=function(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}.
| 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}.
| 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod}}.
}}
====== {{Śródtytuł|PomijajLinkiOrazLicencje}}{{Code|PomijajLinkiOrazLicencje}} ======
Funkcja służy do sprawdzania, czy są odpowiednie szablony w kodzie.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function PomijajLinkiOrazLicencje(szablon)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}.
}}
Funkcja sprawdza, czy to są szablony spisu treści określone tablicą o kluczach, którymi są nazwy szablonów, z wartościami {{Code|true}}, czyli: {{Code|{{sr|#p.szablony_licencji|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_licencji}}:
<syntaxhighlight lang="lua">
p.szablony_licencji={
["Licencja"]=true,
};
</syntaxhighlight>
Tzn., czy to są szablony ozdobne woluminu, którego tablica: {{Code|{{sr|#p.szablony_ozdobne_stron_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_ozdobne_stron_woluminu}}, jest podobnie zbudowana, co poprzednia:
<syntaxhighlight lang="lua">
p.szablony_ozdobne_stron_woluminu={
["MDL:RozszerzonyLink"]=true,
};
</syntaxhighlight>
A jeżeli to są te szablony, to funkcja zwraca wartość {{Code|true}}.
Jeżeli jednak to nie są te szablony, należy użyć tablic, tak samo zbudowanej jak poprzednie, czyli: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.linki_szablony_elementy_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.linki_szablony_elementy_spisu_rzeczy={
["SpisTreści"]=true,
["Sekcja referencyjna"]=true,
["Sr"]=true,
["Link wewnętrzny"]=true,
["Ly"]=true,
["LinkOgólne"]=true,
["Lo"]=true,
};
</syntaxhighlight>
lub innej, inaczej zbudowanej niż poprzednie, ale ważne, że ma wartość niefałszywą, czyli taką tablicą: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}, jest:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
Jak są te nazwy szablonów określone ich kluczami tych tablic, to funkcja zwraca wartość {{Code|true}}. A jeżeli jednak nie to funkcją: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}, jest sprawdzane,czy to jest link inteligentny, nawet przekierowanie, jeżeli link taki jest, to funkcja zwraca wartość w tym wypadku {{Code|true}}. W przeciwnym wypadku, jak nie zwrócił tej wartości,bo taka nie jest nazwa szablonu, to funkcja nic nie zwraca.
====== {{Śródtytuł|CzySzablonLinkLubLicencja}}{{Code|CzySzablonLinkLubLicencja}} ======
Funkcja sprawdzająca za pomocą: {{LinkŚródtytuł|PomijajLinkiOrazLicencje}}, na podstawie parsowania tekstu szablonu funkcją: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, z parsowanym przechwytywanym typem obiektu: {{Code|obiekt}} {{LinkPatrz|obiekt}}, równym {{Code|SZABLON}}. A jeżeli funkcja ta wspomniana w tekście zwróci {{Code|true}}, to funkcja taki obiekt policzy.
Jeżeli liczba policzonych obiektów i znalezionych w wyniku parsowania jest większa od zera, to funkcja w nagłówku zwróci wartość {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local CzySzablonLinkLubLicencja=function(szablon)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}.
}}
===== {{Śródtytuł|iteratorTekstuNaglowka}}{{Code|iteratorTekstuNaglowka}} =====
Jest to funkcja iteratora, którego funkcja zwracana (iterator) zwraca parametry, dla rozdziałów dodatnich i pozycji list.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function iteratorTekstuNaglowka()
... ---- Kod przed zwróceniem iteratora;
return function()
... ---- Ciało funkcji iteratora;
end;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = Brak parametrów. | komórka1 = tak
}}
Iterator (funkcja zwracana przez funkcję w nagłówku) zwraca parametry w wyniku kolejnych wywołań:
<syntaxhighlight lang="lua">
return przedrostek_listy,tekstowy_przedrostek,wyzyskane_wywolanie_szablonu_spis_tresci,true/false;
</syntaxhighlight>
Parametry zwracane przez iterator:
{{OpisParametrów
| 1 = {{Code|przedrostek_listy}} | _1 = Przedrostek pozycji listy, dla rozdziałów dodatnich jest wartością pustą.
| 2 = {{Code|tekstowy_przedrostek}} | _2 = Numeracja pozycji w liście lub w nagłówku dodatnim.
| 3 = {{Code|wyzyskane_wywolanie_szablonu_spis_tresci}} | _3 = Jest to rozdział bez numeracji i przedrostka pozycji listy.
| 4 = {{Code|true/false}} | _4 = Wartość {{Code|true}} świadczy o rozdziale dodatnim, a w przypadku innym funkcja zwraca zawsze wartość tą {{Code|false}} jako ostatni element zwracany.
}}
Funkcja jest przykowana na rozdziałów dodatnich i pozycji list oraz innych linii, dla tego pierwszego funkcja zwraca:
<syntaxhighlight lang="lua">
return "","",wartosc,true;
</syntaxhighlight>
Gdzie {{Code|wartość}} jest to zawartość napisu wprowadzenia tekstu (rozdziału dodatniego).
W przypadku list oraz innych niż rozdziały dodatnie samo wyrażenie regularne {{lpg|Lua}} w {{lpr|Lua|Scribunto}} jest okreslone przez wyrażenie:
<syntaxhighlight lang="lua">
local re="([#:*;]*)[^%S\n]*([%d%.]*[^%S\n]*[^\n]+)";
</syntaxhighlight>
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu|p=StronicowyParser/Rozdziały}}}}, aby zamienić zawartość pozycji listy na rozdział bez numeracji i numerację, i dlatego ta funkcja zwraca te dwie wartości. Gdy funkcja jak nie znajdzie więcej linii (wyszukań), to zwraca wartość {{Code|nil}} mówiąca o zakończeniu iteracji iteratora, tzn. dane dla iteratora się zakończyły.
===== {{Śródtytuł|LiniaArtykulow}}{{Code|LiniaArtykulow}} =====
Funkcja dla szablonów kompletowania określonym tabelką: {{Code|{{sr|#p.szablony_kompletowania_stron_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_kompletowania_stron_woluminu}}, o definicji:
<syntaxhighlight lang="lua">
p.szablony_kompletowania_stron_woluminu={
["Kompletność"]=true,
["Kompletność krótka"]=true,
["Kompletność junior"]=true,
["Książka"]=true,
};
</syntaxhighlight>
Rozdziela linię na wiele obsługiwanych podlinii.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function LiniaArtykulow(linia)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|linia}} {{Patrz|linia}} | _1 = Pojedyncza przetworzona linia.
}}
====== {{Śródtytuł|SzablonAnalizujKompletnosc}}{{Code|SzablonAnalizujKompletnosc}} ======
Funkcja sprawdza, czy dane wywołania szablonu, ma swoją nazwę szablonu, która jest nazwą szablonu kompletowania.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function SzablonAnalizujKompletnosc(szablon)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}.
}}
====== Dalszy opis funkcji ======
Możliwe są dwie opcje, szablon kompletowania jest pierwszy, a drugi drugi, lub odwrotnie. Funkcja obsługuje te oba przypadki. Ona stawia przecinkiem dla obu wersji ustawień, jeśli potraktować układem link i szablon kompletowania, to wstawiany jest on pomiędzy tymi układami, aby rozdzielić linię, a w liście bez jego znaków pozycji, na elementy przy pomocy funkcji: {{LzLua|mw.text.split}}, z opcją jako drugi parametr, aby uwzględniał wyrażenia regularne {{Code|false}}. W tych rozdzielonych linią tą funkcją dzielącą ciąg znakowy na tabelę, kody '''HTML''' przecinka są zamieniane na zwykły przecinek.
Funkcja zwraca tabelę podzielonej linii na mniejsze podlinie, który można iterować funkcją: {{Code|pairs}} lub {{Code|ipairs}}.
===== {{Śródtytuł|WsadzanieParametryDoTablicy}}{{Code|WsadzanieParametryDoTablicy}} =====
Funkcja z parametrami, która uruchamia inną funkcję uruchamianą w: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}, która wstawia tabelę {{LinkPatrz|tab_stare}}, do ogólnej tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}, ewentualnie do {{Code|tabela_rozdzial_artykulow}} {{Patrz|tabela_rozdzial_artykulow}} na pozycję {{Code|numer_podtablicy_w_tablicy}} {{Patrz|numer_podtablicy_w_tablicy}}, a dokładniej na pozycję {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}} w funkcji {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function WsadzanieParametryDoTablicy(linia,czy_linia_uwzgledniana)
return function(tabela_rozdzial_artykulow2,numer_podtablicy_w_tablicy,tab_stare)
... ---- ciało funkcji.
end;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|linia}} | _1 = Jak w: {{LinkPatrz|linia}}.
| 2 = {{Code|czy_linia_uwzgledniana}} {{Patrz|czy_linia_uwzgledniana}} | _2 = Czy linię ma uwzględnić w powiększaniu poziomu o jeden dla artykułu.
}}
Parametry zwracanej funkcji przez tę w nagłówku:
{{OpisParametrów
| 1 = {{Code|tabela_rozdzial_artykulow2}} | _1 = Jak w: {{LinkPatrz|tabela_rozdzial_artykulow2}}.
| 2 = {{Code|numer_podtablicy_w_tablicy}} | _2 = Jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}.
| 3 = {{Code|tab_stare}} | _3 = Jak w: {{LinkPatrz|tab_stare}}.
}}
====== {{Śródtytuł|CzyZaliczac}}{{Code|CzyZaliczac}} ======
Funkcja sprawdza, czy z początkiem linii pozycji listy, bez przedrostka listy, jest z możliwym cudzysłowem, po którym następują liczby, litery, lub myślniki dolne, w takim pzypadku linia nie może składać się z nich, po ktorym występują znaki interpunkcyjne. Jeśli to sprawdzenie było pozytywne funkcja zwraca wartość logiczną odpwowiadającą {{Code|true}}, w przeciwnym wypadku jak {{Code|false}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function CzyZaliczac()...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = Brak parametrów funkcji. | komórka1 = tak
}}
Funkcja zwraca informację, czy daną linię traktować jako rozdział, chodzi tu o pozycje list, a w przypadku rozdziałów dodatnich wiadomo, że one są właśnie, że rozdziałami.
====== Dalszy opis funkcji ======
Funkcja sprawdza w funkcji zwracanej, czy rozważany rozdział jest centrowany danego artykułu, który siedzi pod rozdziałem lub w samym rozdziale, sprawdza, czy artykuł jest w rozdziale, sprawdza czy linia jest uwzględniana: {{Code|czy_linia_uwzgledniana}} {{LinkPatrz|czy_linia_uwzgledniana}}. Funkcja sprawdza, czy sekcja czy w: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, czy istnieje element: {{Code|tab_stare[2]}} {{Patrz|tab_stare[2]}}, i dalszy: {{Code|tab_stare[2][1]}} {{Patrz|tab_stare[2][1]}} - ten element jest to w: {{Code|tab_stare}}, taki: {{Code|#przedrostek_listy}} {{Patrz|#przedrostek_listy}}, a jeżeli to sprawdzenie przeszło pozytywnie, który dla tego jest poziomem listy, lub zerowego rozdziału lub rozdziału dodatniego.
Dla każdej linii zmienna: {{Code|nowa_linia}} {{Patrz|nowa_linia}}, przyjmuje wartość {{Code|false}}, wtedy dla przypadku przeciwnego, tzn. gdy mamy rozdział i uwzględniamy artykuły w jednej linii, którym jest rozdział będacy pozycją listy, w zmiennej: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, jest ustawiany element: {{Code|tab_stare[2][4]}} {{Patrz|tab_stare[2][4]}}, czyli zmienna: {{Code|w_rozdziale}} {{LinkPatrz|w_rozdziale}}, zaczyna przyjmować wartość {{Code|true}}. Wsadzany jest wtedy do tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}, na pozycję: {{Code|numer_podtablicy_w_tablicy}} {{LinkPatrz|numer_podtablicy_w_tablicy}}, czyli to jest też: {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, element {{Code|tab_stare}} {{LinkPatrz|tab_stare}}.
Gdy: {{Code|nowa_linia}} {{LinkPatrz|nowa_linia}}, gdy jednak przyjmuje wartość {{Code|false}}, wtedy jeśli poziom rozdzialu istnieje i przedrostek listy {{LinkPatrz|#przedrostek_listy}} jest większy od zera, i istnieje wiele artykułów w pozycji liście, wtedy: {{Code|ile>0}}, lub funkcja: {{LinkŚródtytuł|CzyZaliczac}}, przyjmuje wartość odpowiadające prawdziwej, w taki przypadku zmiennej: {{Code|nowa_linia}} {{LinkPatrz|nowa_linia}}, przydzielamy wartość {{Code|true}}, by dalsze artykuły można było wsadzić, do tablicy z nowym rozdziałem. Powiększamy numer rozdziału o jeden, tzn.: {{Code|numer_rozdzialu_w_ksiazce}} {{Patrz|numer_rozdzialu_w_ksiazce}}, wtedy w zmiennej: {{Code|tabela_artykulow}} {{Patrz|tabela_artykulow}}, tabeli rozdziałów i w nich artykułów dla tej pozycji przydzielamy wartość równą tablicy pustej. Liczymy rozdział dla tego rozdział z artykułami, z funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}, liczymy napis rozdziału, wtedy do pierwszej pozycji tablicy utworzonej w: {{Code|tabela_artykulow}} {{LinkPatrz|tabela_artykulow}}, dla miejsca: {{Code|numer_rozdzialu_w_ksiazce}} {{LinkPatrz|numer_rozdzialu_w_ksiazce}}, czyli: {{Code|tabela_rozdzial_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}, piszemy:
<syntaxhighlight lang="lua">
tabela_rozdzial_artykulow[1]={rozdzial_na_tekst,{-#przedrostek_listy,przedrostek_listy,tekstowy_przedrostek,false,},linia,};
</syntaxhighlight>
Gdzie: {{Code|rozdzial_na_tekst}} {{Patrz|rozdzial_na_tekst}}, to policzony rozdział, {{Code|-#przedrostek_listy}} {{Patrz|-#przedrostek_listy}} to poziom rozdziału ujemnego, i dlatego minus. A: {{Code|przedrostek_listy}}, to znaki poczatkowe z listy: {{Code|wzor_do_linii_z_lista}} {{LinkPatrz|wzor_do_linii_z_lista}}, a: {{Code|tekstowy_przedrostek}}, to numeracja tego rozdziału. Wartość {{Code|false}} to jest ze ten rozdział nie jest centrowany, a: {{Code|linia}} {{LinkPatrz|linia}}, to wyzyskana linia bez początku pozycji listy. Ustawiamy: {{Code|tab_stare[2][4]}} {{LinkPatrz|tab_stare[2][4]}}, na wartość {{Code|true}} i element: {{Code|tab_stare[6]}} {{Patrz|tab_stare[6]}}, ustawiamy na zero. Tworzymy tablicę pustą na pozycję: {{LinkPatrz|numer_podtablicy_w_tablicy}}, tablicy: {{Code|tabela_rozdzial_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}, i do tej tablicy dodajemy: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, za pomocą funkcji: {{LzLua|table.insert}}.
A jeżeli nie jest tworzony nowy rozdział z listy w tabeli: {{Code|tabela_artykulow}} {{LinkPatrz|tabela_artykulow}}, to na pozycję: {{Code|numer_podtablicy_w_tablicy}} {{LinkPatrz|numer_podtablicy_w_tablicy}}, jest dodawany element: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, również tak jest robione, gdy artykuły znajdują się w rozdziale dodatnim, tzn. równaniowej lub centrowanej, tzn. wtedy: {{Code|w_rozdziale}} {{LinkPatrz|w_rozdziale}}, przyjmuje wartość {{Code|true}}.
===== {{Śródtytuł|AnalizaLiniiObiekty}}{{Code|AnalizaLiniiObiekty}} =====
Za pomocą funkcji: {{LinkŚródtytuł|LiniaArtykulow}}, linia: {{Code|linia_rozwazana}} {{Patrz|linia_rozwazana}}, jest rozdzielana na wiele linii. To wiele linii w postaci tabeli, są iterowane od: {{Code|k {{=}} 1}}, do: {{Code|k {{=}} #tab_linia}}, gdzie: {{Code|#tab_linia}} {{Patrz|#tab_linia}}, jest to długość linii, tzn. liczba elementów numerowanych tablicy, tzn. od 1 do zwyż aż do apotkania najbliższej przerwy lub końca. Wtedy dla pojedyńczej literacji mamy: {{Code|tab_linia[k]}} {{Patrz|tab_linia[k]}}.
Iterujemy po kodach dla linii: {{Code|tab_linia[k]}} {{LinkPatrz|tab_linia[k]}}, przy pomocy funkcji: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} {{Patrz|p.IteratorSzablonowyZakodowanegoTekstu}}, iteratorem: {{Code|iterator2}} {{Patrz|iterator2}}.
Inicjujemy zmienną: {{Code|tab_nieobslugiwane {{=}} nil}}, następnie iterujemy: {{LinkPatrz|iterator2}}, uzyskując w każdej iteracji: {{Code|szablon}} {{LinkPatrz|szablon}}, {{Code|obiekt}} {{LinkPatrz|obiekt}}, i {{Code|kod}} {{LinkPatrz|kod}}.
Gdy mamy do czynienia: {{Code|SZABLON}}, lub: {{Code|LINKW}}, albo: {{Code|LINKZ}}, wtedy dla elementów tego pierwszego bierzemy tablicę: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}, dla elementu: {{Code|nazwa_szablonu}} {{LinkPatrz|nazwa_szablonu}}.
Jeżeli ten element: {{Code|tabela_spisu}}, istnieje, element pierwszy: {{Code|tabela_spisu[1]}}, jest równy wartości {{Code|true}}, wtedy mamy do czynienia z szablonem {{s|SpisPozycja}}. Jej element: {{Code|tabela_spisu["numer_link"]}}, istnieje i jest równy: {{Code|tyt}} {{Patrz|tyt}}. Iterujemy po kluczach i jego wartościach tego szablonu i sprawdzamy, który element jest równy właśnie tej wartości, a jeżeli jest taki, to dla elementów nie równych niemu, a właściwie w jego wartości iterujemy po kodach funkcją: {{LinkPatrz|p.IteratorSzablonowyZakodowanegoTekstu}}, dla tej wartości, w ten sposób zbieramy tablicę wielowymiarową najpierw po: {{Code|obiekt}} {{LinkPatrz|obiekt}}, póżniej po: {{Code|kod}}, {{LinkPatrz|kod}}, którą nazwiemy: {{Code|tab_nieobslugiwane}} {{Patrz|tab_nieobslugiwane}}, którego każda jej wartość jest równa {{Code|true}}. Ta tablica mówi dla jakich elementów ma nie zbierać w tablicy elementów w głównej tablicy rozdziałów i jego artykułach.
Dla elementu {{Code|tyt}} {{LinkPatrz|tyt}} tablicy parametrów przedrostek listy {{Code|przedrostek_listy}} ustawiamy na pusty, i liczmy numerację {{Code|tekstowy_przedrostek}} i zmienną {{Code|szablon}} {{LinkPatrz|szablon}} i ustawiamy zmienną {{Code|przerwij}} {{Patrz|przerwij}} na {{Code|true}}, aby dla tego szablonu nie zbierać elementów w tablicy rozdziałów i jego artykułów.
W przypadku przeciwnym dla: {{Code|tabela_spisu}}, gdy ma wartość {{Code|false}}, wtedy mamy do czynienia z funkcją: {{s|SpisZw}}. Dla niej liczymy: {{Code|przedrostek_listy}}, którą ustawiamy na pustą wartość. A: {{Code|tekstowy_przedrostek}}, liczmy uzyskując parametr o kluczu: {{Code|tabela_spisu["numer"]}}, którym jest parametr o numerze: {{Code|1}}, i {{Code|szablon}} {{LinkPatrz|szablon}}, który liczmy z parametrów szablonu o kluczu {{Code|tabela_spisu["link"]}}, którym jest numer {{Code|2}}. Ustawiamy tutaj zmienną: {{Code|}} {{LinkPatrz|przerwij}}, na wartosć {{Code|true}}.
====== {{Śródtytuł|CzyObslugiwane}}{{Code|CzyObslugiwane}} ======
Funkcja sprawdzająca, które elementy są obsługiwane, jeśli istnieje tablica: {{Code|tab_nieobslugiwane}} {{LinkPatrz|tab_nieobslugiwane}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local CzyObslugiwane=function()...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = Brak parametrów. | komórka1 = tak
}}
====== Dalszy opis funkcji ======
; Uwzględnianie tablicy, reprezentujące artykuł w rozdziale, wstawiany do tablicy danego rozdziału{{dk}}
Sprawdzany jest warunek:
<syntaxhighlight lang="lua">
if((--[[wliczaj_artykuly_tego_rozdzialu]] true)and(not przerwij)and((not tab_nieobslugiwane)or(CzyObslugiwane())))then
</syntaxhighlight>
Jeżeli jest on spełniony, wtedy wywołujemy funkcję: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}, później dla:
<syntaxhighlight lang="lua">
if((not czy_obslugiwane)and(not numer_rodzaju_artykulu_poprz))then
</syntaxhighlight>
Sprawdzamy, czy jest zebrana licencja z autorem według zmiennej: {{Code|licencja_z_autorem}} {{Patrz|licencja_z_autorem}}, i sprawdzamy, czy: {{Code|szablon}} {{LinkPatrz|szablon}}, jest wnetrzem szablonu, jeżeli tak, to ona przyjmuje wartość odpowiadająca prawdziwej, przeciwnie ma fałszywą.
Jeżeli ten pierwszy warunek jest niespełniony, to tylko liczymy to samo coostatnio.
; Szablony licencji, i jego parametry, uwzględnianie jego tylko raz ca całą książkę, mieszcząca się w artykule głównej książki{{dk}}
Następnie dla warunku, który musi być spełniony:
<syntaxhighlight lang="lua">
if((not numer_rodzaju_artykulu_poprz)and(not przerwij)and(link_szablon)and((not tab_pozycja_elementow_w_spisie_rzeczy)or(not tab_pozycja_elementow_w_spisie_rzeczy[1]))and(czy_artykul_korzystany)and(licencja_z_autorem))then
</syntaxhighlight>
Sprawdzamy szablony licencji, takich jak: {{s|Licencja}}, według tablicy: {{Code|{{sr|#p.szablony_licencji|p=StronicowyParser/obiekty}}}}.
Dla parametrów szablonu, liczymy jego parametry o kluczach, tzn.: {{Code|Autor}} {{Patrz|Autor}}, {{Code|Ukończone szkoły}} {{Patrz|Ukończone szkoły}}, {{Code|Email}} {{Patrz|Email}}, {{Code|Dotyczy}} {{Patrz|DotyczyDotyczy}}, {{Code|Licencjonowanie}} {{Patrz|Licencjonowanie}}, {{Code|Umowa prawna}} {{Patrz|Umowa prawna}} i {{Code|Konsekwencje}} {{Patrz|Konsekwencje}}, którego wartości przydzielamy do odpowiednich zmiennych. Każdą z tych zmiennych kompletujemy funkcją: {{Code|{{sr|#p.DekodowanieTekstuDekodowanieTekstu|p=StronicowyParser/Potrzebne}}}}, poprzez zwracaną przez nią funkcję, w której jest wykorzystywana funkcją: {{LzLua|frame:preprocess}}, do rozwijania. A dla elementu istniejącego: {{Code|Autor}}, piszemy zmienną: {{Code|licencja_z_autorem}} {{LinkPatrz|licencja_z_autorem}}, któremu przydzielamy wartość {{Code|false}}, co spowoduje, że nie będziemy analizowali jeszcze raz innego szablonu licencji.
Te zmienne tego szablonu zbieramy natomiast w tablicy: {{Code|tabela_licencji_spisu_tresci}} {{Patrz|tabela_licencji_spisu_tresci}}, dane dotyczące licencji, więc:
<syntaxhighlight lang="lua">
tabela_licencji_spisu_tresci={autor, szkoly, email, dotyczy, licencjonowanie, umowa_prawna, konsekwencje};
</syntaxhighlight>
Co później przerywamy pętle po: {{Code|iterator2}} {{LinkPatrz|iterator2}}, instrukcją: {{Code|break}}.
==== Dalszy opis funkcji {{nobold|{{LinkPatrz|opis funkcji-ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}}} ====
Ściągamy tekst, tabelę bazy i tabelę parametrów strony o nazwie: {{Code|nazwa_modulu}}, przy pomocy funkcji: {{Code|{{sr|#p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony|p=StronicowyParser/Tekst}}}}, według:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=nil;
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
return nil;
end,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Uruchamiamy funkcję: {{Code|__FUNKCJA_ZBIERANIA_DANYCH}} {{LinkPatrz|__FUNKCJA_ZBIERANIA_DANYCH}}, jeżeli istnieje.
Dalej wywołujemy funkcję: {{Code|{{sr|#p.IterTekst|p=StronicowyParser/Rozdziały}}}}, w celu znalezienia tekstu: {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}}, i iteratora: {{Code|iterator}} {{Patrz|iterator}}, po napisach wprowadzenia tekstu rozdziałów i ich zawartości rozdziałów i na podstawie:
<syntaxhighlight lang="lua">
local iterator,tekst_rozwiniety_calego_artykulu=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,true,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,
__FUNKCJA, ---- funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adresu szablonu, określa i zawraca jego zawartość;
__FUNKCJA2, ---- funkcja operująca na przygotowanej zawartości napisu wprowadzenia tekstu i tekście napisu wprowadzenia tekstu (rozdziału);
__FUNKCJA_ANALIZA_SPISU ---- funkcja do analizy i modyfikacji tekstu (może zwracać wartość: nil) przed samym kodowaniem, jeżeli tekst jest w ogóle jest taki, a jeśli nie, ta funkcja wtedy nie jest uruchamiana, funkcja ta bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: IterTekst, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: SpisTreści, co jest uwidocznione w module: Moduł:StronicowyParser/SpisTreści;
);
</syntaxhighlight>
Opis parametrów zwracanych:
{{OpisParametrów
| 1 = {{Code|iterator}} {{Patrz|iterator-IterTekst}} | _1 = Iterator po rozdziałach i jego zawartościach.
| 2 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu-IterTekst}} | _2 = Tekst przetworzony rozdziału.
}}
Odczytujemy tabelę: {{LinkPatrz|p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu}} i dalej: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}, o definicji:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={
["spis treści"]=true,
["spis tresci"]=true,
["spis rzeczy"]=true,
};
</syntaxhighlight>
Robimy kopię tych tabel i przyłączamy do metatabeli: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, przy pomocy funkcji: {{LzLua|setmetatable}}, aby nie odrózniać tych rozdziałów ze względu na wielkość liter i polskie znaki.
Inicjiujemy zmienną: {{Code|numer_rozdzialu_w_ksiazce}} {{LinkPatrz|numer_rozdzialu_w_ksiazce}}, wartością: {{Code|1}}, aby zbierać po kolei artykuły ze poszczególnego pojedynczego spisu treści.
Ustawiamy maksymalny rozmiar rozdziału zerowego na {{Code|50}}, w zmiennej: {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{Patrz|maksymalny_rozmiar_rozdzialu_zerowego}}, według:
<syntaxhighlight lang="lua">
local maksymalny_rozmiar_rozdzialu_zerowego=50;
</syntaxhighlight>
===== {{Śródtytuł|AnalizaRozdzialu}}{{Code|AnalizaRozdzialu}} =====
Jest to funkcja do zbierania danych z pojedynczgo rozdziału o pewnej linii, inicjowana z jego parametrami, także tekstem rozdziału.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function AnalizaRozdzialu(rozdzial,linia_rozdzialu,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|rozdzial}} {{Patrz|rozdzial}} | _1 = Jest to tekst rozdziału.
| 2 = {{Code|linia_rozdzialu}} {{Patrz|linia_rozdzialu}} | _2 = Jest to linia z rozdziałem.
| 3 = {{Code|text}} {{Patrz|text}} | _3 = Jest to tekst rozdziału o pewnym napisie wprowadzenia tekstu.
| 4 = {{Code|poziom_rozdzialu}} {{Patrz|poziom_rozdzialu}} | _4 = Jest to poziom danego rozdziału.
| 5 = {{Code|poczatek_rozdzialu}} {{Patrz|poczatek_rozdzialu}} | _5 = Początek pozycji listy rozdziałów mechanizmu {{Strong|MediaWiki}}.
| 6 = {{Code|numeracja}} {{Patrz|numeracja}} | _6 = Numeracja rozdziału.
| 7 = {{Code|czy_rozdzial_centrowany}} {{Patrz|czy_rozdzial_centrowany}} | _7 = Czy dany rozdział jest centrowany.
}}
====== Tabela artykułów rozdziałów i w nich artykułów oraz jego poszczególnych ======
Tworzymy tabelę: {{Code|tabela_artykulow}} {{LinkPatrz|tabela_artykulow}}, jeżeli nie istnieje, z pustą tablicą, a później dla elementu: {{Code|numer_rozdzialu_w_ksiazce}} {{LinkPatrz|numer_rozdzialu_w_ksiazce}}, jeżeli też go nie ma, to też pustą tablicą. Dalej liczymy napis wprowadzenia tekstu rozdziału dodatniego funkcją: {{LinkŚródtytuł|p.AnalizaNapisuWprowadzeniaTekstu}} i uwzględniamy je w tabeli rozdziałów dla danego rozdziału pod wartością: {{Code|tabela_rozdzial_artykulow[1]}}, w sposób:
<syntaxhighlight lang="lua">
tabela_rozdzial_artykulow[1]={rozdzial_na_tekst,{poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany,},rozdzial,};
</syntaxhighlight>
Dalej wprowadzamy zmienną: {{Code|czy_spis_rzeczy_napis_wprowadzenia_tekstu}} {{Patrz|czy_spis_rzeczy_napis_wprowadzenia_tekstu}}, mówiącą teraz rozpatrujemy rozdziały i artykuły w ramach spisu treści o nagłówkach typu: {{Code|Spis treści}}, czy: {{Code|SPIS RZECZY}}. Jeżeli wyszliszmy poza to, to ta zmienna wtedy przyjmuje wartość fałszywą, a definicja inicjacji tej zmiennej jest:
<syntaxhighlight lang="lua">
local czy_spis_rzeczy_napis_wprowadzenia_tekstu=(poziom_rozdzialu)and(not czy_jest_spis_tresci)and(not dalej_nie_rozwazaj_spis_tresci)and(jakie_spisy_tresci[spreparowany_uzyskany_tekst_rozdzialu]);
</syntaxhighlight>
Gdzie:
{{OpisParametrów
| 1 = {{Code|poziom_rozdzialu}} | _1 = Jak w: {{LinkPatrz|poziom_rozdzialu}}.
| 2 = {{Code|czy_jest_spis_tresci}} {{Patrz|czy_jest_spis_tresci}} | _2 = Czy jesteśmy w spisie treści.
| 3 = {{Code|dalej_nie_rozwazaj_spis_tresci}} {{Patrz|dalej_nie_rozwazaj_spis_tresci}} | _3 = Zmienna mówiąca, że teraz jesteśmy poza spisem treści.
}}
====== Kiedy uwzględniamy artykuły rozdziału ======
Jeżeli jesteśmy w spisie, to zawsze są uwzględniane artykuły rozdziału, bo jest ustawiona zmienna: {{Code|wliczaj_artykuly_tego_rozdzialu}} {{LinkPatrz|wliczaj_artykuly_tego_rozdzialu}}, na {{Code|true}}, a poza na {{Code|nil}}.
Funkcja jest przyszykowana jest dla jednego spisu treści, o ściśle określonym specjalnym napisie wprowadzenia tekstu, w danym spisie na stronie.
====== Iterator linii artykułu spis treści ======
Uruchamiamy iterator używając funkcji lokalnej: {{LinkŚródtytuł|iteratorTekstuNaglowka}}, według wywołania:
<syntaxhighlight lang="lua">
local iterator=iteratorTekstuNaglowka();
</syntaxhighlight>
Ustawiamy zmienną: {{Code|wliczaj_artykuly_tego_rozdzialu}} {{LinkPatrz|wliczaj_artykuly_tego_rozdzialu}}, aby wliczał lub nie, pewne artykuły rozdziału według:
<syntaxhighlight lang="lua">
local wliczaj_artykuly_tego_rozdzialu=((wliczaj_artykuly_tego_rozdzialu)or(not jakie_nie_rozdzialy[rozdzial]));
</syntaxhighlight>
Iterujemy otrzymanym ostatnio iteratorem, uzyskując kolejno zmienne: {{Code|przedrostek_listy}} {{LinkPatrz|przedrostek_listy}}, {{Code|tekstowy_przedrostek}} {{LinkPatrz|tekstowy_przedrostek}}, {{Code|linia}} {{LinkPatrz|linia}}, i {{Code|w_rozdziale}} {{LinkPatrz|w_rozdziale}}.
; Kiedy rozdziałów zerowych nie liczymy jako je{{dk}}
Dla rozdziałów, które nie sa poziomami z listą, sprawdzamy, czy to jest rozdział zerowy przy pomocy funkcji: {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|p=StronicowyParser/Rozdziały}}}}, i sprawdzamy, czy on przekracza rozmiar: {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}, jeżeli jest tym rozdziałem i nie przekracza pewnego rozmiaru, to to jest rozdział traktowany jako zerowy niepomijany rozdział zerowy, wtedy ustawiamy zmienną: {{Code|nie_pomijaj_tego_rozdzialu}} {{Patrz|nie_pomijaj_tego_rozdzialu}}, na {{Code|true}}.
; A jeśli to są rozdziały z listy zaczynające się od dwukropka w linii{{dk}}
Gdy taki rozdział nie pretenduje do zerowych, to sprawdzamy funkcją: {{Code|{{sr|#p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu|p=StronicowyParser/Rozdziały}}}}, czy ten rozdział pominąć, a jeżeli ona przyjmuje wartość odpowiadającej fałszywej, czyli {{Code|false}}, wtedy ustawiamy zmienną: {{Code|nie_pomijaj_tego_rozdzialunie_pomijaj_tego_rozdzialu}} {{LinkPatrz|nie_pomijaj_tego_rozdzialu}}, na taką samą wartość jak poprzednio.
; Inne rozdziały{{dk}}
Dla rozdziałów innych ta wartość przyjmuje postać {{Code|false}}.
; Rozdziały jednak nie pomijane{{dk}}
Dla rozdziałów, które nie są pomijane, wtedy zmienna: {{Code|nie_pomijaj_tego_rozdzialu}} {{LinkPatrz|nie_pomijaj_tego_rozdzialu}}, przyjmuje wartość {{Code|true}}, w takim przypadku wchodzimy do funkcji: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstuZgodnieZJegoSzablonowymiElementami|p=Szablonowe}}}}, wtedy dla linków szablonowych sprawdzamy, czy to są linki określone tablicami: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy}}, {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}} lub ewentualnie funkcją: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}.
Innym sposobem sprawdzania, czy to jest szablon linkowy jest tablica: {{Code|{{sr|#p.szablony_kompletowania_stron_woluminu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_kompletowania_stron_woluminu}}, lub {{Code|{{sr|#p.szablony_licencji|p=StroncowyParser/obiekty}}}} {{LinkPatrz|p.szablony_licencji}}.
Jeżeli to jest szablon linków, wtedy jest zwracana wartość: {{Code|return true,obiekt,kod}}, w przeciwnym wypadku: {{Code|return false,obiekt,kod}}.
Innym sposobem liczenia, czy to jest link, to wtedy może być to link normalny: {{Code|LINKW}}, który można sprawdzić funkcją: {{Code|{{sr|#p["CzyLinkWewnętrzny"]|p=Specjalne}}}}, wtedy jest zwracane {{Code|return true,obiekt,kod}}.
Link też może być zewnętrzny, wtedy to jest: {{Code|LINKZ}}, wtedy funkcja zwraca wartość: {{Code|return true,obiekt,kod}}.
; Kiedy analizujemy artykuły rozdziału{{dk}}
Następnie dla linii: {{Code|linia_rozwazana}} {{LinkPatrz|linia_rozwazana}}, co na podstawie tego liczymy, czy daną linię nie uwzględnić, w obliczeniach według schematu:
<syntaxhighlight lang="lua">
local czy_linia_uwzgledniana=mw.ustring.match(linia_rozwazana,"^%s*%-%-+(.*)%-%-+%s*$");
local czy_linia=((not czy_linia_uwzgledniana)and(mw.ustring.match(linia_rozwazana,"^%s*[%-%+%=%~]+.*$")
or ((#przedrostek_listy==0)and((mw.ustring.match(linia_rozwazana,"!"))and(mw.ustring.match(linia_rozwazana,"[^!]%s*$"))))
or mw.ustring.match(linia_rozwazana,"^%s*<")) or nil);
</syntaxhighlight>
Co następnie jest ustawiana {{Code|nowa_linia}} {{LinkPatrz|nowa_linia}} na wartość {{Code|false}}.
; Warunek analizowania artykułów rozdziałów{{dk}}
W obliczeniach raz uwzględniamy funkcję: {{LinkŚródtytuł|AnalizaLiniiObiekty}}, w ostatniej omawianej pętli, schematycznie:
<syntaxhighlight lang="lua">
if(not czy_linia)then AnalizaLiniiObiekty(linia_rozwazana);end;
</syntaxhighlight>
===== Dalsza część funkcji {{nobold|{{LinkPatrz|opis funkcji-ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}}} =====
Bierzemy zakodowany tekst: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu-IterTekst}}, i po nim iterator: {{Code|iterator}} {{LinkPatrz|iterator-IterTekst}}, wtedy iterujemy po parametrach:
<syntaxhighlight lang="lua">
local parsuj_rozdzialami=nil; ---- ta zmienna służy na wypadek, gdy by nie była żadnych rozwazanych rozdziałów;
for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do
---- za każdym razem jest uruchamiana funkcja: AnalizaRozdzialu, przy rozważanym rozdziale;
AnalizaRozdzialu(rozdzial_tab[1],rozdzial_tab[2],text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany);
---- oznacz zmienną: parsuj_rozdzialami, wartością; true, a póżniej jąnie inicjuj;
if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end
end;
</syntaxhighlight>
Parametry zwracane przez iterator: {{Code|iterator}} {{LinkPatrz|iterator-IterTekst}}:
{{OpisParametrów
| 1 = {{Code|rozdzial_tab}} {{Code|{{=}}}} {{Code|<nowiki>{ [1] = rozdzial, [2] = linia_rozdzialu, }</nowiki>}} | _1 = tabela składająca się z dwóch elementów:
| 2 = Pod elementy tabeli: | nagłówek2 = tak
| 3 = {{Code|rozdzial}} | _3 = Jak w: {{LinkPatrz|rozdzial}}.
| 4 = {{Code|linia_rozdzialu}} | _4 = Jak w: {{LinkPatrz|linia_rozdzialu}}.
| 5 = Inne parametry: | nagłówek5 = tak
| 6 = {{Code|text}} | _6 = Jak w: {{LinkPatrz|text}}.
| 7 = {{Code|poziom_rozdzialu}} | _7 =Jak w: {{LinkPatrz|poziom_rozdzialu}}.
| 8 = {{Code|poczatek_rozdzialu}} | _8 = Jak w: {{LinkPatrz|poczatek_rozdzialu}}.
| 9 = {{Code|numeracja}} | _9 = Jak w: {{LinkPatrz|numeracja}}.
| 10 = {{Code|czy_rozdzial_centrowany}} | _10 = Jak w: {{LinkPatrz|czy_rozdzial_centrowany}}.
}}
Gdy nie napotkano żadnego rozważanego rozdziału, wtedy: {{Code|parsuj_rozdzialami}}, przyjmuje wartość {{Code|nil}}, w takim razie uruchamiana jest funkcja:
<syntaxhighlight lang="lua">
if(not parsuj_rozdzialami)then
AnalizaRozdzialu("Spis treści",nil,tekst_rozwiniety_calego_artykulu,nil,nil,nil,nil);
end;
</syntaxhighlight>
Funkcja zwraca parametry inaczej, gdy artykuł, do którego należy książka jest korzystany, a inaczej, jeśli nie. W takim razie możemy zwracać na dwa sposoby:
<syntaxhighlight lang="lua">
if(czy_artykul_korzystany)then
return tabela_artykulow,tabela_licencji_spisu_tresci,przekierowanie_spisu_tresci;
else
return tabela_artykulow,nil,przekierowanie_spisu_tresci;
end;
</syntaxhighlight>
Przy artykułach korzystanych, co jest określone zmienną: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, tabelę: {{Code|tabela_licencji_spisu_tresci}} {{LinkPatrz|tabela_licencji_spisu_tresci}}, przy jego spisach treści w książkach, do której należy ten artykuł, zwracana jest jako wartość przeważnie jako nierówna {{Code|nil}}, a dla artykułów z innych książkach, ta wartość już jest taka, tzn. przyjmuje wartość {{Code|nil}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
437uevb80i8bgwg3rlywoszcs7fshjf
558338
558337
2026-10-02T18:53:07Z
Persino
2851
/* {{Śródtytuł|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}{{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} */
558338
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SpisTreści}}|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 lokalne ==
=== {{Śródtytuł|Ile}}{{Code|Ile}} ===
Funkcja liczy liczbę elementów we wszystkich podtabelach tabeli {{Code|tabela_rozdzial_artykulow2}} {{Patrz|tabela_rozdzial_artykulow2}}, licząc od drugiej tabeli, po pierwszej tabeli mieści się podtabela z informacjami o rozdziale, w której znajdują się artykuły określone dalszymi podtabelami.
Tymi podtabelami są od {{Code|2}} do {{Code|7}}, czyli {{Code|6}} tabelek, w których są artykuły, które zaliczamy do kategorii wliczane, tzn. one nie znajdują się w takich rozdziałach przetłumaczonych na małą literę, ale przedtem na nią była działana funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, usuwając z nich odstępy na końcach, w tym dolne myślniki, a wewnątrz zamieniając kolejne dolne myślniki i spacje na jedną spacją.
Metafunkcja, w metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, w: {{Code|{{ld2|Parametry}}}}, aby porównać to z tablicą {{Code|{{sr|#p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu}}, by zaliczyć je do tego typu:
<syntaxhighlight lang="lua">
p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu={
["licencja"]=true,
["inne"]=true,
["bibliografia"]=true,
["zobacz też"]=true,
["linki zewnętrzne"]=true,
};
</syntaxhighlight>
Twew rozdziały należą do kategorii rozdziałów, w których artykuły są pomijane przez: '''{{ld|StronicowyParser|Stronicowy parser}}''', ale jeżeli one należą do rozdziału spisu treści lub rzeczy, to tam jednak nie są takie, inaczej jest poza.
A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}.
A ta powyższa tabela mieści się: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a jego opis w: {{Code|{{sr|#p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu|p=StronicowyParser/obiekty}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow2)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|numer_rodzaju_artykulu}} | _1 = Numer podtabeli elementtu, do którego wsadzamy element.
| 2 = {{Code|tabela_rozdzial_artykulow2}} | _2 = Tabela wraz podtabelami, od {{Code|1}} do {{Code|13}}, ale liczenie jest od {{Code|2}}.
}}
=== {{Śródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}{{Code|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}} ===
==== Opis pobieżny funkcji ====
Funkcja do wstawiania elementów z ogólnej tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}, za pomocą funkcji wstawianej jako parametr: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{Patrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, do odpowiedniej pozycji artykularnej od: {{Code|2}} do {{Code|13}}, a pozycja {{Code|1}}, to pozycja rozdziałowa, ona jest określana przez zmienną: {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{Patrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, a pozycja, którą wsadzamy to: {{Code|tab_stare}} {{Patrz|tab_stare}}.
Funkcja zwraca pozycje:
<syntaxhighlight lang="lua">
return numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych;
</syntaxhighlight>
Opis tych parametrów funkcji:
{{OpisParametrów
| 1 = {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} | _1 = Jest to wartość zwrócona przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}}, w odróżnieniu od: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, jest mniejszy o jeden, czyli wtedy to była a poziomie przypisywania wartość {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}},
| 2 = {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} | _2 = Pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}.
| 3 = {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} | _3 = Tablica do sprawdzania, czy artykuł z nagłówkiem, ma powtórzenie tego bez nagłówka, czyli dla tego bez tego jest inna numeracja niż z nagłówkiem, a gdy niema tego bez, to wtedy dzięki tej funkcji numeracja tak się zachowuje, jak tam by był ten element, co prawda jest tam dodawany, ale jako z informacją taką, że bz numeru ustalanym przez funkcję: {{LinkŚródtytuł|Ile}}, A przy okazji, aby tego elementu nie dodawać ponownie, to w nim jest ustalana druga zmienna na {{Code|1}}, a wcześniej była na {{Code|0}}, i dlatego ona była wtedy dodawana, a później już tak nie jest.
}}
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY,tabela_rozdzial_artykulow2,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow--[[]])...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{Patrz|self}} | _1 = Zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}}.
| 2 = {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} | _2 = Opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow2,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare);
</syntaxhighlight>
Funkcja jest wywoływana w:
<syntaxhighlight lang="lua">
numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych=WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,WsadzanieParametryDoTablicy(linia,czy_linia_uwzgledniana),tabela_rozdzial_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow);
</syntaxhighlight>
Gdzie funkcja: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, to jest: {{LinkŚródtytuł|WsadzanieParametryDoTablicy}}.
| 3 = {{Code|tabela_rozdzial_artykulow2}} | _3 = Ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow2}}.
| 4 = {{Code|tablica_artykulow_zebranych}} | _4 = Diała jak w: {{LinkPatrz|tablica_artykulow_zebranych}}.
| 5 = {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} | _5 = Jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}}.
| 6 = {{Code|szablon}} {{Patrz|szablon}} | _6 = Jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu.
| 7 = {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - | _7 = Kolejno to jest: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''' i '''nazwa książki'''.
| 8 = {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} | _8 = Jest to nazwa artykułu danego spisu treści.
| 9 = {{Code|pelna_nazwa_spisu_tresci}} {{Patrz|pelna_nazwa_spisu_tresci}} | _9 = Uchwyt do bazy kodowania tekstu strony spisu treści.
| 10 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} | _10 = Nazwa strony szablonowa, jak są wywoływane w postaci szablonowej, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}}.
| 11 = {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} | _11 = Uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 12 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _12 = Tablica bazy zapisana w postaci osobnej tablicy, a nie jej w wewnętrznej bazie, nie jak to było w postaci zmiennej {{LinkPatrz|nazwa_modulu}}, używana zamiast: {{LinkPatrz|nazwa_modulu}}.
| 13 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _13 = Tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}.
| 14 = {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} | _14 = Obiekt i kod, czyli: zmienne charakteryzujące zmienną wnętrza: {{Code|szablon}} {{LinkPatrz|szablon}}.
| 15 = {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} | _15 = Tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy.
| 16 = {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} | _16 = Tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię.
| 17 = {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} | _17 = Numeracja rozdziału, z jakim rozpoczyna się rozdział.
| 18 = {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} | _18 = Gdy link znajduje się w rozdziale dodatnim.
| 19 = {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} | _19 = Cała linia z artykułem lub artykułami, tą linią równie dobrze może być rozdział, tu chodzi o rozdział dodatni.
}}
==== Opis pobieżny funkcji {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} ====
Przedstawiamy tutaj funkcję: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, która jest opisana w punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Definicja funkcji w nagłówku:
<syntaxhighlight lang="lua">
__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow2,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare);
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tabela_rozdzial_artykulow2}} | _1 = Jak w: {{LinkPatrz|tabela_rozdzial_artykulow2}},
| 2 = {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} | _2 = Jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}},
| 3 = {{Code|tab_stare}} | _3 = Jak w: {{LinkPatrz|tab_stare}}.
}}
Ta funkcja została opisana już wcześniej.
==== Szczegółowy opis funkcji głównej ====
Uruchamiamy funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, która jest zdefiniowana w module: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}}. Wywołujemy tę funkcję:
<syntaxhighlight lang="lua">
local tab_pozycja_elementow_w_spisie_rzeczy,numer_rodzaju_artykulu,id,parametry_szablonu,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nil,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
</syntaxhighlight>
Pierwszy elementem: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest to zmienna tablicowa, która opisuje parametry artykularno-linkowe parametry, drugi: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, do której kategorii należy dany artykuł w linku, a trzeci parametr, to: {{Code|id}} {{Patrz|id}}, to zbierane są parametry linkowe z szablonu {{s|SpisTreści}}, czwarty to: {{Code|parametry_szablonu}} {{Patrz|parametry_szablonu}}, w przypadku szablonów inteligentnych linków, to są parametry wywołań tych szablonów, ostatni parametr to: {{Code|kom}} {{Patrz|kom}}, przedstawia on, jeśli {{Code|false}}, to artykuł zakwalifikowany został poprawnie do rozważań, a {{Code|true}} już nie.
To {{LinkPatrz|parametry szablonu}}, to jest tablica z trzech elementów, tzn.:
<syntaxhighlight lang="lua">
local parametry szablonu={tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,};
</syntaxhighlight>
Elementy tablicy:
{{OpisParametrów
| 1 = {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} | _1 = Tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych.
| 2 = {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} | _2 = To jest nazwa uzyskanego szablonu linków inteligentnych lub nie.
| 3 = {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} | _3 = Tabela modyfikatorów rozkładanego szablonu.
}}
Jeśli parametr: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, istnieje, to tworzona jest z niego taka sama wersja lub przy nieistnnieniu parametru {{LinkPatrz|wliczaj_artykuly_tego_rozdzialu}}, do niego jest dodawana jest liczba {{Code|6}}. W ten sposób możemy zbierać artykuły książki i inne,ktore należą do pewnych rozdziałów i które nie należą.
===== {{Śródtytuł|ParametrPierwszy}}{{Code|ParametrPierwszy}} =====
Funkcja zbierające dane z {{Code|tab_artykul}} {{Patrz|tab_artykul}}, którego to jest czteroelementowa tablica, dotycząca danego artykułu. Drugim parametrem: {{Code|czy_niedozwolone}} {{Patrz|czy_niedozwolone}}, jest zmienna logiczna mówiąca, czy wskazać w nazwie artykułu, czy są dozwolone znaki, jest to sprawdzenie według wyrażenia regularnego: {{Code|<nowiki>[|<>{}%[%]]</nowiki>}} {{Patrz|wzor_znaki_niedozwolone}} na podstawie funkcji {{LzLua|mw.ustring.match}}, czyli: {{Code|znaki_niedozwolone}} {{Patrz|znaki_niedozwolone}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
ParametrPierwszy(tab_artykul,czy_niedozwolone)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tab_artykul}} | _1 = Jak w: {{LinkPatrz|tab_artykul}}.
| 2 = {{Code|czy_niedozwolone}} | _2 = Jak w: {{LinkPatrz|czy_niedozwolone}}.
}}
Gdzie: {{Code|tab_artykul}} {{LinkPatrz|tab_artykul}}, który jest pierwszym parametrem przyjmowanym przez funkcję, jest zdefiniowany jako czteroelementowa tablica, którą przypisujemy do czterem osobnych parametrów:
<syntaxhighlight lang="lua">
local artykul=tab_artykul[1];
local parametry=tab_artykul[2];
local naglowek=tab_artykul[3];
local tablica_przekierowania=tab_artykul[4];
</syntaxhighlight>
Jeżeli, któreś z parametrów z: {{LinkPatrz|tab_artykul}}, tzn. element jego {{Code|2}}-gi i {{Code|3}}-ci, istnieje, to układana jest trzyelementowa tablica z elementów od {{Code|1}} do {{Code|3}}, z dodatkowym elementem: {{Code|<nowiki>["LINK"] = true</nowiki>}}, a element czwarty to jest: {{Code|tablica_przekierowania}} {{Patrz|tablica_przekierowania}}, a jeżeli te dwa elementy, nie licząc czwartego, wcale nie istnieją, wtedy jest tworzony łańcuch znakowy z tego pierwszego elementu. Tak tworzymy, nową wersję tablicy: {{Code|tab_artykul}} {{Patrz|tab_artykul-nowa wersja}}, lub łańcuch znakowy, w postaci:
<syntaxhighlight lang="lua">
tab_artykul=((artykul)and(parametry or naglowek))and{[1]=artykul,[2]=parametry,[3]=naglowek,["LINK"]=true,} or artykul;
</syntaxhighlight>
Funkcja zwraca trzy parametry, tzn. parametry: {{LinkPatrz|tab_artykul-nowa wersja}}, {{LinkPatrz|znaki_niedozwolone}} i tablicę przekierowania: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}:
<syntaxhighlight lang="lua">
return tab_artykul,znaki_niedozwolone,tablica_przekierowania;
</syntaxhighlight>
===== Rozwijanie nazwy linku artykułu =====
Do rozwijania nazwy linku służy funkcja: {{Code|{{sr|#p.DekodowanieTekstuNazwLinku|p=StronicowyParser/Pomocne}}}} {{Patrz|p.DekodowanieTekstuNazwLinku}}, pod względem szablonowym i nie tylko.
Funkcja rozwija tą nazwę tym: {{LzLua|frame:preprocess}}, jedynie nie rozwija szablonów stronicowego parsera, podane podkategoriach w kategorii: {{Code|{{lk2|Szablony stronicowe}}}}, za pomocą odpowiednich metod, bo to by wywołało nieskończoną pętle, i dlatego takie szablony są zamieniane tylko na wywołania symboliczne.
==== Dalszy opis funkcji nadrzędnej przy istnieniu parametrów linkowych normalnych, czy szablonowych (linków inteligentnych) ====
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|{{=}}}} {{Code|1}} =====
Tworzony jest numerek: {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{Patrz|numer_rodzaju_artykulu_w_podreczniku}}, który w stosunku do: {{LinkPatrz|numer_rodzaju_artykulu}}, jest większy o jeden, a schemat tej operacji:
<syntaxhighlight lang="lua">
local numer_rodzaju_artykulu_w_podreczniku=numer_rodzaju_artykulu+1;
</syntaxhighlight>
====== Tworzenie tablicy: {{nobold|{{Code|tablica_artykulow_zebranych}}}} ======
Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną wstępnie w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}.
; Tablica{{dk}} {{nobold|{{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}}}}, nie jest tablicą{{dk}}
Gdy element pierwszy: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, nie jest tablicą, wtedy jedynie liczymy, czy ona ma znaki niedozwolone: {{Code|wzor_znaki_niedozwolone}} {{LinkPatrz|wzor_znaki_niedozwolone}}, a póżniej wiedząc ten element, który jest aktualną nazwą artykułu kiążki, tworzymy tabelę {{Patrz|tablica_artykulow_zebranych-imicjacja}}:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,};
</syntaxhighlight>
; Gdy element{{dk}} {{nobold|{{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}}}}, jest łańcuchem znaków{{dk}}
Wpierw liczone są parametry z wywołania, z opcją, czy ma liczyć, czy nazwa artykułu ma znaki niedozwolone, z funkcji: {{LinkŚródtytuł|ParametrPierwszy}}:
<syntaxhighlight lang="lua">
tab_pozycja_elementow_w_spisie_rzeczy[1],znaki_niedozwolone,tablica_przekierowania=ParametrPierwszy(tab_pozycja_elementow_w_spisie_rzeczy[1],true);
</syntaxhighlight>
; Inna książka - atrybut, tzn. czy artykuł wychodzi poza daną książkę, lub jego przekierowanie w niej kieruje na stronę poza nią{{dk}}
Dalej sprawdzane jest, czy książka przyjmuje atrybut, tzn.: '''czy inna książka''', wtedy liczymy to z kodu z tablicy przekierowania: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, jeżeli jej wartość istnieje, tzn.: {{Code|czy_inna_ksiazka}} {{Patrz|czy_inna_ksiazka}}:
<syntaxhighlight lang="lua">
local czy_inna_ksiazka=tablica_przekierowania and tablica_przekierowania[1] and tablica_przekierowania[1][5] or nil;
</syntaxhighlight>
; Tablica przekierowania artykułu względem bieżącej książki{{dk}}
Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, który przedstawia, czy to jest artykuł bieżącej książki, którego przekierowanie kieruje, wtedy ten parametr ma wartość {{Code|true}}, a gdy adres przekierowania wskazuje na inną książkę, wtedy {{Code|false}}. Jeśli ten parametr ma wartość fałszywą, wtedy jest sprawdzane, czy jest tablicą w: {{Code|czy_tablica}} {{Patrz|czy_tablica}}, według:
<syntaxhighlight lang="lua">
czy_tablica=parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1]);
</syntaxhighlight>
Lub w przeciwnym wypadku liczymy parametry artykularne z tablicy przekierowania: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek przekierowania, w tej tablicy, istnieje, wtedy parametr: {{Code|czy_tablica}} {{LinkPatrz|czy_tablica}}, przyjmuje wartość {{Code|true}}, w przeciwnym wypadku wartość fałszywą.
Gdy ten element nie jest tablicą, to tworzona jest nazwa pełna artykułu: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}} i umieszczana w tablicy: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z podobną tablicą początkową jak w poprzednim przypadku jego tworzenia, czyli jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}.
; Tablica zebranych artykułów i porównywanie artykułu z nagłówkiem, czy istnieje wcześniejszy artykuł bez niego{{dk}}
Gdy element jest jednak tablicą, też jest liczona pełna nazwa artykułu (gdy nazwa artykułu przekierowania istnieje, wtedy ona jest liczona z: {{Code|tablica_przekierowania[2]}}, w przeciwnym wypadku, jeśli element: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}}, jest tablicą, wtedy liczymy ją z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1][1]}}, w innym wypadku z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}}), a z niej liczymy tablicę: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}, w przypadku pierwszego artykułu nienagłówkowego.
A w przypadku pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie, artykuł poprzedni nie istnieje, a więc tego tam nie ma tam w takim przypadku.
Gdy funkcja napotkała artykuł o takim samym stronie, co poprzednio, to do wartości początkowej, bez definiowania jeszcze raz tej samej tablicy, jest ustawiane odpowiednio:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych[3]=true;
</syntaxhighlight>
Co informuje, że artykuł jest ten sam, tylko inny nagłówek niż poprzedni, a poprzedni pierwszy jest bez niego.
====== Rozwijanie nazwy linku ======
Kompletowany jest drugi element tablicy: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkPatrz|p.DekodowanieTekstuNazwLinku}}. Dalej z tej nazwy są usuwane znaki specjalne według funkcji: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, z modułu: {{Code|{{ld2|Specjalne}}}}. Następnie działamy funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, które końcowe spacje usuwa, a wewnętrz powtarzające zamienia kolejne na jedną spację.
====== Dodawanie do tablicy problemów, jeśli nastąpił problem ze znakami niedozwolonymi ======
A między czasie, gdy mamy niedozwolone znaki: {{Code|znaki_niedozwolone}} {{LinkPatrz|znaki_niedozwolone}}, za pomocą funkcji pytającej sprawdzamy, czy element inny zgłoszeniowy został dodany do tablicy problemów: {{Code|{{sr|#p.CzyJestTakiProblemowyElement|p=StronicowyParser/Problemy}}}}, aż w końcu dodajemy ten problem, jeśli go nie ma przy pomocy funkcji: {{Code|{{sr|#p.UstawTakiProblemowyElement|p=StronicowyParser/Problemy}}}}.
====== {{Śródtytuł|inicjacja_i_kompletowanie_zmiennych}}Ustalanie nazwy jednostki, kompletowanie linii artykułów i inicjowanie pozycji, w tabeli zebranych elementów, w tabeli zebranych elementów ======
Ustalamy nazwę jednostki z funkcji: {{Code|{{sr|#p.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem|p=StronicowyParser/Potrzebne}}}}, i inicjujemy tą wartością, czyli: {{Code|nazwa jednostki}} {{Patrz|nazwa jednostki}}, wartość starą: {{Code|stara_nazwa_jednostki}} {{Patrz|stara_nazwa_jednostki}}, według:
<syntaxhighlight lang="lua">
---- Piszanie pełnej nazwy jednostki bez parametrów i nagłówka;
local nazwa_jednostki=stronicowyparser_potrzebne_modul.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(tab_pozycja_elementow_w_spisie_rzeczy[1],false);
---- Inicjowanie starej wartości tą policzoną;
local stara_nazwa_jednostki=nazwa_jednostki;
</syntaxhighlight>
Dalej {{Śródtekst|uchwyt=tabela_rozdzial_artykulow2|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}}}, według:
<syntaxhighlight lang="lua">
if(not tabela_rozdzial_artykulow2[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow2[numer_rodzaju_artykulu_w_podreczniku]={};end;
</syntaxhighlight>
Co {{Śródtekst|uchwyt=linia_artykokow|tekst=dalej linię artykułów {{Code|linia_artykokow}} {{LinkPatrz|linia_artykokow}}, kompletujemy, funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, z modułu: {{Code|{{ld2|Szablonowe}}}}, znając tablicę: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}}}, według:
<syntaxhighlight lang="lua">
linia_artykokow=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_artykokow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
</syntaxhighlight>
====== Uwzględnianie niepodanego elementu nienagłówkowego w tablicy zebranych parametrów ======
Gdy tablica przekierowania: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, istnieje, wtedy sprawdzamy, czy zmienna logiczna: {{Code|czy_tablica}} {{LinkPatrz|czy_tablica}}, jest prawdą i czy: {{Code|stara_nazwa_jednostki}} {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej: {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie artykułu przekierowania.
Inicjujemy nową zmienną: {{Code|przekierowanie}} {{LinkPatrz|przekierowanie}}, z artykułu, parametrów i nagłówka, ale wpierw sprawdzamy, czy dwa ostatnie istnieją, według:
<syntaxhighlight lang="lua">
przekierowanie=przekierowanie and ((tablica_przekierowania[3] or tablica_przekierowania[4]) and {przekierowanie, tablica_przekierowania[3], tablica_przekierowania[4],["LINK"]=true,}or przekierowanie) or nil;
</syntaxhighlight>
Tworzony jest nowy element: {{Code|nazwa jednostki}} {{Patrz|nazwajednostki-nowy}}, z: {{LinkPatrz|nazwa jednostki}}, parametrów i nagłówka, według rysu:
<syntaxhighlight lang="lua">
nazwa_jednostki={nazwa_jednostki, tab_pozycja_elementow_w_spisie_rzeczy[1][2], tab_pozycja_elementow_w_spisie_rzeczy[1][3],["LINK"]=true,};
</syntaxhighlight>
Jeżeli parametr drugi: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}.
Wsadzamy element: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, do zbioru: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, przy pomocy funkcji: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Następnie jej drugiemu elementowi: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, do tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}, na pozycji: {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, według funkcji: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej.
Jeżeli tablica przekierowania: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, jednak nie istnieje, wtedy tak samo sprawdzamy, co poprzednio potem, ale po spełnieniu tych warunków robimy inną tablicą: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, i tę tablicę robimy podobnie, i inicjujemy te same elementy też podobnie.
====== Uwzględnianie pozycji podanej w tablicy zebranych elementów ======
Tworzymy zmienną: {{Code|ile_dodac_do_poziomu_artykulu}} {{Patrz|ile_dodac_do_poziomu_artykulu}}, z drugiego elementu tablicy: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, następnię tworzymy inną zmienną: {{Code|ile_dodac_do_poziomu_artykulu_lub_nil}} {{Patrz|ile_dodac_do_poziomu_artykulu_lub_nil}}, co uwidaczniamy wzorem:
<syntaxhighlight lang="lua">
local ile_dodac_do_poziomu_artykulu_lub_nil=((ile_dodac_do_poziomu_artykulu)and(ile_dodac_do_poziomu_artykulu>0))and ile_dodac_do_poziomu_artykulu or nil;
</syntaxhighlight>
Tą zmienną wykorzystamy do sformułowania: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}.
{{Śródtekst|tekst=Tworzymy zmienną: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}, na pozycji: {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, przy pomocy funkcji: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.|uchwyt=__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|>{{=}}}} {{Code|2}} =====
Będziemy tutaj operowali, gdy parametr drugi zwracany z funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, wskazuje na nie artykuł książki, zatem ten rozdział jest właśnie dla tego przypadku.
====== Odkodowanie i przygotowanie zmiennych artykułu linku, jej nazwy, także kodu języka i projektu ======
* Gdy pierwszy element tablicy: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}.
* Dla drugiego takiego elementu z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, co jest nazwą linku, wtedy gdy nazwa linku normalnego, czy szablonowego, jest zakodowana, to ją odkodujemy, którego każdy jego element kod odkodujemy według funkcji: {{LinkPatrz|p.DekodowanieTekstuNazwLinku}}, następnie z niej usuwamy znaki specjalne według: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, następnie usuwamy końcowe spacje i wewnątrz kolejne spacje zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
* Dla trzeciego i czwartego takiego elementu z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, te elementy odkodujemy, następnie z nich usuwamy końcowe spacje, a wewnątrz kolejne spacje zastępujemy jedną, według tej samej funkcji, co powyżej.
====== Przygotowanie zmiennych, inicjowanie tablicy: {{Code|tab_stare}}, i wsadzanie jej do tablicy ogólnej: {{Code|tabela_rozdzial_artykulow2}} ======
Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow2}}, także co {{PobierzŚródtekst|linia_artykokow}}, co wszystko robimy podobnie jak w rozdziale: {{LinkŚródtytuł|inicjacja_i_kompletowanie_zmiennych}}.
{{PobierzŚródtekst|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
==== Definicja tablicy: {{Code|tab_stare}}, inicjowanie jej elementów w różnych przypadkach ====
Przedstawiamy tutaj ogólną definicję zmiennej: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. Ta wersja jest jedynie sformułowana dla artykułów w rozdziale, a nie dla rozdziałów, bo w tablicy, do której jest ona wsadzana przyjmuje ona możliwy numerek od "2" do "13", a nie również "1". Jej wersja ogólna:
<syntaxhighlight lang="lua">
local tab_stare=
{
---- Początek elementów alternatywnych
{
---- Początek wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[1], -- artykuł bez pełnej nazwy ksiązki, bez parametrów i nagłówka, bo ich nie posiadałna samym początku;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- artykuł bez pełnej nazwy książki, bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[2], -- nazwa linku artykułu normalnego, czy szablonowego;
---- Początek elementów alternatywnych dla przekierowania
---- Poczatek parametrów przekierowania
{
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
tablica_przekierowania[3], -- parametry przekierowania artykułu;
tablica_przekierowania[4], -- nagłówek przekierowania artykułu;
["LINK"]=true, -- zmienna świadcząca, że nazwa przekierowania artykułu jest z parametrami i nagłówkiem;
},
---- lub
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
---- Koniec parametrów przekierowania
tablica_przekierowania[1], -- tablica o definicji: {
nazwa_przestrzeni_strony_przekierowania, -- nazwa przestrzzeni nazw przekierowania artykułu;
nazwa_przestrzeni_ksiazki_strony_przekierowania, -- nazwa przestrzeni książki przekierowania artykułu;
nazwa_ksiazki_strony_przekierowania, -- nazwa książki orzekierowania artykułu;
true/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce;
true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie;
czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach;
};
---- lub
nil, -- dotycząca przekierowania artykułu, a tutaj strona nie ma przekierowania, więc: nil;
nil, -- dotycząca tablicy książki, na którą wskazuje przekierowanie, a tutaj nie ma tablicy, więc: nil;
---- Koniec elementów alternatywnych dla przekierowania
tab_pozycja_elementow_w_spisie_rzeczy[3], -- kod języka;
tab_pozycja_elementow_w_spisie_rzeczy[4], -- kod projektu;
tab_pozycja_elementow_w_spisie_rzeczy[5], -- adres artykułu bez przetworzenia w linku normalnym,czy szablonowym;
ile_dodac_do_poziomu_artykulu_lub_nil, -- parametr mający tylko wartości: 1, gdy do aktualnego poziomu musi być dodane jeden - ta wartość, tylko dotyczy artykułów należących do tej samej książki, lub: nil, gdy nic, czyli w pozostałych przypadkach;
tab_pozycja_elementow_w_spisie_rzeczy[6], -- "url", pozycja świadcząca, że to jest link zewnętrzny, a nil, gdy to jest normalny link;
},
---- lub
tab_pozycja_elementow_w_spisie_rzeczy[1], -- nazwa artykułu linku, która nie posiada, ani parametrów w sobie, a po nim nagłówka, lub bezpośrednio po nazwie;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- nazwa artykułu bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec elementów alternatywnych
{
#przedrostek_listy, -- poziom listy, w którym jest artykuł, dla artykułów w linii z listą, w innym wypadku dla artykułu znajdującego się w rozdziale dodatnim, czy ujemnym jest zero;
przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])", przeciwnie dla artykułów w rozdziale dodatnim ma wartość pustą;
tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu, gdy nie ma takiej numeracji, bo nie da się jej wydzielić, to ma wartość pustą;
w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym, wtedy "true", w przeciwnym wypadku: "false";
},
linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare";
true/false, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: false;
true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika, przeciwnie: false;
---- Początek elementów alternaatywnych
Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow2), -- który numer artykułu, w momencie wsadzenia do tabeli zbierania rozdziałów i w nich artykułów, nawet w rozdziale;
---- lub
nil, -- nil, wtedy gdy link jest tak sobie dodany, który nie należy do żadnego spisu, a po nim elementy jego z nagłówkiem natomiast należą;
---- Koniec elementów alternatywnych
};
</syntaxhighlight>
W powyższym: {{Tag|syntaxhighlight|parametry=lang="lua"}}, dla elementu: {{Code|<nowiki>---- lub</nowiki>}}, jest powiedziane, że są dostępne alternatywy, które są zawarte w tablicy, że wybieramy te, aby nie spowodować czysto podwójnej tablicy, aby każda tablica zawierały inne elementy, jak wiele, a nie jedną tablicę, jak i łańcuchy znaków, wartość nil, powoduje, że czy ma być taka tablica, ale nie podwójna, co to znaczy podowójna, tzn. tablica w sobie zawiera inną jedyną tablicę, a tak nie może być, a jak zawiera jedną tablicę, to musi posiadać inne nienilowe elementy.
== Funkcje tablicy transportu ==
=== {{Śródtytuł|p.AnalizaNapisuWprowadzeniaTekstu}}{{Code|p.AnalizaNapisuWprowadzeniaTekstu}} ===
Funkcja przyjmuje jako parametr nieskompletowaną i nieprzetworzony tekst napisu wprowadzenia tekstu. On kompletujei przekształca go w odpowiedni sposób,aby otrzymać czysty tekst tytułu rozdziału.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AnalizaNapisuWprowadzeniaTekstu(rozdzial,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|rozdzial}} | _1 = Ten tekst tytułu rozdziału, o którym mówimy.
| 2 = {{Code|pelna_nazwa_spisu_tresci}} | _2 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci}}
| 3 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _3 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _5 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
==== Obiekty typu {{nobold|{{Code|SZABLON}}}} ====
Funkcja korzysta z funkcji: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, funkcja ma zdefiniowaną pierwszą jej funkcję, która dla: {{Code|obiekt {{=}} "SZABLON"}}, używamy pierwsze dwie tabelę, te tabele:
Pierwsza {{Patrz|szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu}}, która służy do zamieniania szablonów na ich parametry, tutaj pierwsza, to jest tablica: {{Code|{{sr|#p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu}}:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu={
["MDL:RozszerzonyLink"]=1,
["Kompletność"]="",
["Kompletność krótka"]="",
["Kompletność junior"]="",
["Książka"]="",
};
</syntaxhighlight>
Druga: {{Code|{{sr|#p.szablony_dozwolone_w_nazwach_linkowych|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_dozwolone_w_nazwach_linkowych}}, też służy do tego samego.
Funkcja wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja {{Patrz|p.szablony_dozwolone_w_nazwach_linkowych}}:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_w_nazwach_linkowych={
["Korekta"] =2,
};
</syntaxhighlight>
===== Funkcje zawartości i dodatków, dla szablonów =====
One służą do zamieniania wywołań szablonowych na odpowiednie ich zawartości parametrów określone przez numery parametrów tych elementów w tch tabelach. Jeżeli przy którym wywolaniu przy wykorzystaniu kolejnych tych tabel przy użyciu funkcji: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, nastąpiło zamienienie, to funkcja pierwsza w: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, zakańcza się z tą wartością. A jeżeli nie to uruchamia się funkcj dodatków: {{Code|{{sr|#p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu|p=StronicowyParser/Rozdziały}}}}, a jeśli nastąpiło zastąpienie, to funkcja kompletowania się kończy z tą wartością.
===== Szablonowe linki =====
Dalej jeżeli tak się nie stało, to uruchamia się funkcja parametrów, w którym wywołanie szablonowe jest rozkładane na nazwę szablonu, modyfikatory i parametry. Dalej jest spradzanie , czy jest to link inteligentny według funkcji: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}, a gdy jest, to funkcja kończy swoje działania z nazwą tego linku lub jego adreesem wewnętrznym, a jeśli on nie jest tym, to sprawdza, czy są inne szablonowe linki, które podejrzewa się poprzez wywołanie funkcji: {{Code|{{sr|#p.NazwaInnegoSzablonowegoLinkowegoObiektu|p=StronicowyParser/Potrzebne}}}}, a jeżeli jest tym linkiem, to funkcja składania zwraca też jak poprzednio nazwę linku lub jego adres wewnętrzny, ewentualnie z dodatkiem. A gdy nie, to w innym przypadku sprawwdzane, czy to jest inny link wewnętrzny generowane przez szablony, która spradza funkcja tutaj: {{Code|{{sr|#p.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy|p=StronicowyParser/Potrzebne}}}}, a jeżeli szablon jest tym linkiem, to kunkcja składania zwraca jego nazwę linkową.
===== Szablony rozwijane przez {{lpg|JavaScript}} =====
A następnym krokiem jest sprawdzanie, czy nazwa szablonu jest jednych z elementów z tablicy: {{LinkPatrz|p.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu}}, która ma ten element, te szablony wymienione w tej tablicy są po to, aby służyły do rozwijania przez JavaScript, są to elementy wikikodu, które są pracochłonne ze względu na ich skomplikowany kod, czy wikikod, nawet {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, i dlatego ich się nie rozwija przez stronicowy parser: {{Code|{{ld2|StronicowyParser}}}}, te nazwy szablonów są określone tablicą: {{Code|{{sr|#p.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu}}:
<syntaxhighlight lang="lua">
p.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu={
["Cytuj"]=true,
["Cytuj stronę"]=true,
["Cytuj pismo"]=true,
["Cytuj odcinek"]=true,
["Cytuj książkę"]=true,
["Cytuj grę komputerową"]=true,
};
</syntaxhighlight>
I funkcja wtedy zwraca skompletowany szablon bez rozwijania jego, pod warunkiem, jeżeli jest tym szablonem o tej nazwę szablonu wywołującego.
===== Co jest zwracane w przypadku szablonów =====
Te powyżej elementy dla funkcji parametrów, w niej wartości są zwracane do niej, a jeżeli ona przyjmuje wartość nienilową, to do funkcji składania zwracana jest jego wartość, a przeciwnie jest zwracane pierwszy parametr szablonu do niej.
==== Obiekty typu: {{nobold|{{Code|NOWIKI}}}}, {{nobold|{{Code|PRE}}}} i {{nobold|{{Code|ŹRÓDŁO}}}} ====
A gdy dla elementów, jeśli nazwa obiektu jest: {{Code|obiekt {{=}} "NOWIKI"}}, {{Code|obiekt {{=}} "PRE"}}, lub: {{Code|obiekt {{=}} "ŹRÓDŁO"}}, znacznik jest rozkładany na czynniki pierwsze, a jeżeli nnie ma zawartości, to przez funkcję skłądania jest zwracana wartość pusta, a jeśli nie, to pewne znaki specjalne tagu {{Tag|nowiki}}, które mają w nim być zamienione na tekst, są zamieniane na kody '''HTML''', co po zamienieniu ta ona jest zwracana.
==== Obiekty typu: {{nobold|{{Code|MATH}}}}, {{nobold|{{Code|GALERIA}}}}, {{nobold|{{Code|MAPAOBRAZU}}}}, i {{nobold|{{Code|INNEPRE}}}} ====
A jeżeli wartość: {{Code|obiekt}}, jest nie równa: {{Code|MATH}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} lub {{Code|INNEPRE}}, wtedy z zawartości zmiennej: {{Code|szablon}}, są wykorzystanne funkcje z modułu: {{Code|{{ld2|Specjalne}}}}, które w tej podanej zmiennej są usuwane z komentarze z: {{Code|{{sr|#p["UsuńKomentarze"]|p=Specjalne}}}}, zamieniane są linki zewnętrzne i wewnętrzne na ich nazwy lub adresy według: {{Code|{{sr|#p["ZamieńLinkiZewnętrzneNaTekst"]|p=Specjalne}}}} i {{Code|{{sr|#p["ZamieńLinkiWewnętrzneNaTekst"]|p=Specjalne}}}}. Są usuwane rozwinięte znaczniki szablonów stylów używając do tego celu: {{Code|{{sr|#p["UsuńSzablonyStylów"]|p=Specjalne}}}}. Są też usuwane znaczniki na podstawie: {{Code|{{sr|#p["UsuńZnaczniki"]|p=Specjalne}}}}. Z tekstu szablonu są usuwane normalne kategorie nieszablonowe: {{Code|{{sr|#p"UsuńKategorie"]|p=Specjalne}}}}. Są też usuwane z zawartości wywołania plików i interwiki z: {{Code|{{sr|#p["UsuńWywołaniaPlików"]|p=Specjalne}}}} i {{Code|{{sr|#p["UsuńInterwiki"]|p=Specjalne}}}}. Dalej z tego obiektu są usuwane znaki specjalne z: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}.
A gdy mamy do czynienia z innymi znacznikami, to są zwracane jest zamiast niego wartość pusta do funkcji kompletowania.
Dane z funkcji kompletowane są zwracane, które z niej są usuwane znaki specjalne z całości tekstu rozdziału: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, i znaki białe z końców tekstu i powtarzarzające się te znaki kolejne z wewnętrz są zamieniane na jedną spację, to się dzieje według funkcji: {{Code|{{sr|#p["UsuńZbędneBiałeZnaki"]|p=Specjalne}}}}.
Cały taki wynik operacji robione w funkcji w nagłówku są zwracane do niej, to jest, co uzyskujemy nazwa rozdziału w postaci przetworzonej.
=== {{Śródtytuł|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}{{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} ===
Opisane tutaj są podfunkcje, z których korzysta ta funkcja, co one robią, do czego są wykorzystane.
==== Opis funkcji: {{nobold|{{Patrz|opis funkcji-ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}}} ====
Funkcja służy do zbierania nagłówków i z niej danych,tzn. linków normalnych i inteligentnych, a także są zbierane nagłówki z listy bez artykułów i do nich elementy podlisty z artykułami w postaci wywołań linkowych w niej. Tworzona jest specjalnie dla niegp tablica: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, która w odpowiedni po przekształaceniach wsadzana jest do tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} | _1 = Jak w: {{LinkPatrz|self}}.
| 2 = {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} | _2 = Kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}.
| 3 = {{Code|nazwa_spisu_tresci}} | _3 = Jak w: {{LinkPatrz|nazwa_spisu_tresci}}.
| 4 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _4 = Czy dany spis treści dla książki dla jej artykułu korzystanego, dla innej książki, wtedy to artykuł niekorzystany.
| 5 = {{Code|adres_ksiazki_glownego_spisu_tresci}} {{Patrz|adres_ksiazki_glownego_spisu_tresci}} | _5 = Jest to wewnętrzny adres książki głównego spisu treści,jest to taki adresm na który wskazuje przekierowanie innej książki.
| 6 = {{Code|__FUNKCJA_ZBIERANIA_DANYCH}} {{Patrz|__FUNKCJA_ZBIERANIA_DANYCH}} | _6 = Jest to funkcja, która zbiera informacje o aktualnym artykule, która jest spisem treści, w postaci nieprzetworzonej przez funkcje z modułu: {{Code|{{ld2|StronicowyParser/Rozdziały}}}}, opisanego w: {{Code|{{sr|Rozdziały|StronicowyParser - Rozdziały|p=StronicowyParser}}}}, ta funkcja kopiuje, np. tabele danych bazy modułu: {{Code|{{m|Szablonowe}}}}, tzn: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, i tabelę rozkładu elementów w niej na czynniki pierwsze, tzn.: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, co jest napisane w module: {{Code|{{ld2|StronicowyParser/ZbieranieDanychStron}}}}, a w dokumentacji: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}.
{{Śródtytuł|uchwyt=__FUNKCJA_ZBIERANIA_DANYCH|tekst=
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
kod_sukcesu_lub_bledu=__FUNKCJA_ZBIERANIA_DANYCH(nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona);
</syntaxhighlight>
}}
}}
==== Funkcje lokalne ====
Funkcja ma w sobie też definicję funkcji lokalnych zdefiniowanej w tej funkcji tutaj opisywanej.
===== {{Śródtytuł|FunkcjaIteratoraTekstuZakodowego}}{{Code|FunkcjaIteratoraTekstuZakodowego}} =====
Funkcja służy do pomijania tego, co nie jest linkiem wewnętrznym, czy zewnętrznym, czyli oznaczone kodami: {{Code|LINKW}} lub {{Code|LINKZ}}, czy nawet szablonem linkuinteligentnego, czy innego służacego do generowania spisu treści, do tego celu również używa funkcji: {{LinkŚródtytuł|CzySzablonLinkLubLicencja}}, oraz tego co nie jest w liście okreslonym wzorem {{Code|<nowiki>\n([#:*;]+)</nowiki>}} z mozliwym na początku tekstem, ale nie z kodami, w danej pozycji listy, lub co ewentualnie nie może być w możliwej liście, tzn.: {{Code|<nowiki>\n([#:*;]*)</nowiki>}}, ale wtedy musi tam być z tekstem, ale nie z kodami, na początku danej pozycji listy, nawet jeśli to nie jest lista, to też tak samo.
Jeżeli funkcja nie ma kodów linków wewnętrznych, czy to normalnych, czy szablonowych, to się zakańcza z wartością domyślną {{Code|nil}}, w przeciwnym wypadku do sprawdzenia używa do tego funkcji: {{LinkŚródtytuł|PomijajLinkiOrazLicencje}}, do sprawdzania, czy to jest link lub licencji, a jeżeli ta funkcja zwraca wartość {{Code|true}}, to cała funkcja zwraca {{Code|nil}}. Jeżeli oba te sposoby nie dały rezultatu {{Code|true}}, to wtedy funkcja zwraca wartość pustą, czyli okreslonym ciągiem znakowym o szwerokości zerowej.
Funkcja ma w sobie dwie definicje funkcji: {{LinkŚródtytuł|PomijajLinkiOrazLicencje}} i {{LinkŚródtytuł|CzySzablonLinkLubLicencja}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local FunkcjaIteratoraTekstuZakodowego=function(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}.
| 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}.
| 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod}}.
}}
====== {{Śródtytuł|PomijajLinkiOrazLicencje}}{{Code|PomijajLinkiOrazLicencje}} ======
Funkcja służy do sprawdzania, czy są odpowiednie szablony w kodzie.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function PomijajLinkiOrazLicencje(szablon)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}.
}}
Funkcja sprawdza, czy to są szablony spisu treści określone tablicą o kluczach, którymi są nazwy szablonów, z wartościami {{Code|true}}, czyli: {{Code|{{sr|#p.szablony_licencji|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_licencji}}:
<syntaxhighlight lang="lua">
p.szablony_licencji={
["Licencja"]=true,
};
</syntaxhighlight>
Tzn., czy to są szablony ozdobne woluminu, którego tablica: {{Code|{{sr|#p.szablony_ozdobne_stron_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_ozdobne_stron_woluminu}}, jest podobnie zbudowana, co poprzednia:
<syntaxhighlight lang="lua">
p.szablony_ozdobne_stron_woluminu={
["MDL:RozszerzonyLink"]=true,
};
</syntaxhighlight>
A jeżeli to są te szablony, to funkcja zwraca wartość {{Code|true}}.
Jeżeli jednak to nie są te szablony, należy użyć tablic, tak samo zbudowanej jak poprzednie, czyli: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.linki_szablony_elementy_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.linki_szablony_elementy_spisu_rzeczy={
["SpisTreści"]=true,
["Sekcja referencyjna"]=true,
["Sr"]=true,
["Link wewnętrzny"]=true,
["Ly"]=true,
["LinkOgólne"]=true,
["Lo"]=true,
};
</syntaxhighlight>
lub innej, inaczej zbudowanej niż poprzednie, ale ważne, że ma wartość niefałszywą, czyli taką tablicą: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}, jest:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
Jak są te nazwy szablonów określone ich kluczami tych tablic, to funkcja zwraca wartość {{Code|true}}. A jeżeli jednak nie to funkcją: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}, jest sprawdzane,czy to jest link inteligentny, nawet przekierowanie, jeżeli link taki jest, to funkcja zwraca wartość w tym wypadku {{Code|true}}. W przeciwnym wypadku, jak nie zwrócił tej wartości,bo taka nie jest nazwa szablonu, to funkcja nic nie zwraca.
====== {{Śródtytuł|CzySzablonLinkLubLicencja}}{{Code|CzySzablonLinkLubLicencja}} ======
Funkcja sprawdzająca za pomocą: {{LinkŚródtytuł|PomijajLinkiOrazLicencje}}, na podstawie parsowania tekstu szablonu funkcją: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, z parsowanym przechwytywanym typem obiektu: {{Code|obiekt}} {{LinkPatrz|obiekt}}, równym {{Code|SZABLON}}. A jeżeli funkcja ta wspomniana w tekście zwróci {{Code|true}}, to funkcja taki obiekt policzy.
Jeżeli liczba policzonych obiektów i znalezionych w wyniku parsowania jest większa od zera, to funkcja w nagłówku zwróci wartość {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local CzySzablonLinkLubLicencja=function(szablon)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}.
}}
===== {{Śródtytuł|iteratorTekstuNaglowka}}{{Code|iteratorTekstuNaglowka}} =====
Jest to funkcja iteratora, którego funkcja zwracana (iterator) zwraca parametry, dla rozdziałów dodatnich i pozycji list.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function iteratorTekstuNaglowka()
... ---- Kod przed zwróceniem iteratora;
return function()
... ---- Ciało funkcji iteratora;
end;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = Brak parametrów. | komórka1 = tak
}}
Iterator (funkcja zwracana przez funkcję w nagłówku) zwraca parametry w wyniku kolejnych wywołań:
<syntaxhighlight lang="lua">
return przedrostek_listy,tekstowy_przedrostek,wyzyskane_wywolanie_szablonu_spis_tresci,true/false;
</syntaxhighlight>
Parametry zwracane przez iterator:
{{OpisParametrów
| 1 = {{Code|przedrostek_listy}} | _1 = Przedrostek pozycji listy, dla rozdziałów dodatnich jest wartością pustą.
| 2 = {{Code|tekstowy_przedrostek}} | _2 = Numeracja pozycji w liście lub w nagłówku dodatnim.
| 3 = {{Code|wyzyskane_wywolanie_szablonu_spis_tresci}} | _3 = Jest to rozdział bez numeracji i przedrostka pozycji listy.
| 4 = {{Code|true/false}} | _4 = Wartość {{Code|true}} świadczy o rozdziale dodatnim, a w przypadku innym funkcja zwraca zawsze wartość tą {{Code|false}} jako ostatni element zwracany.
}}
Funkcja jest przykowana na rozdziałów dodatnich i pozycji list oraz innych linii, dla tego pierwszego funkcja zwraca:
<syntaxhighlight lang="lua">
return "","",wartosc,true;
</syntaxhighlight>
Gdzie {{Code|wartość}} jest to zawartość napisu wprowadzenia tekstu (rozdziału dodatniego).
W przypadku list oraz innych niż rozdziały dodatnie samo wyrażenie regularne {{lpg|Lua}} w {{lpr|Lua|Scribunto}} jest okreslone przez wyrażenie:
<syntaxhighlight lang="lua">
local re="([#:*;]*)[^%S\n]*([%d%.]*[^%S\n]*[^\n]+)";
</syntaxhighlight>
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu|p=StronicowyParser/Rozdziały}}}}, aby zamienić zawartość pozycji listy na rozdział bez numeracji i numerację, i dlatego ta funkcja zwraca te dwie wartości. Gdy funkcja jak nie znajdzie więcej linii (wyszukań), to zwraca wartość {{Code|nil}} mówiąca o zakończeniu iteracji iteratora, tzn. dane dla iteratora się zakończyły.
===== {{Śródtytuł|LiniaArtykulow}}{{Code|LiniaArtykulow}} =====
Funkcja dla szablonów kompletowania określonym tabelką: {{Code|{{sr|#p.szablony_kompletowania_stron_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_kompletowania_stron_woluminu}}, o definicji:
<syntaxhighlight lang="lua">
p.szablony_kompletowania_stron_woluminu={
["Kompletność"]=true,
["Kompletność krótka"]=true,
["Kompletność junior"]=true,
["Książka"]=true,
};
</syntaxhighlight>
Rozdziela linię na wiele obsługiwanych podlinii.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function LiniaArtykulow(linia)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|linia}} {{Patrz|linia}} | _1 = Pojedyncza przetworzona linia.
}}
====== {{Śródtytuł|SzablonAnalizujKompletnosc}}{{Code|SzablonAnalizujKompletnosc}} ======
Funkcja sprawdza, czy dane wywołania szablonu, ma swoją nazwę szablonu, która jest nazwą szablonu kompletowania.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function SzablonAnalizujKompletnosc(szablon)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}.
}}
====== Dalszy opis funkcji ======
Możliwe są dwie opcje, szablon kompletowania jest pierwszy, a drugi drugi, lub odwrotnie. Funkcja obsługuje te oba przypadki. Ona stawia przecinkiem dla obu wersji ustawień, jeśli potraktować układem link i szablon kompletowania, to wstawiany jest on pomiędzy tymi układami, aby rozdzielić linię, a w liście bez jego znaków pozycji, na elementy przy pomocy funkcji: {{LzLua|mw.text.split}}, z opcją jako drugi parametr, aby uwzględniał wyrażenia regularne {{Code|false}}. W tych rozdzielonych linią tą funkcją dzielącą ciąg znakowy na tabelę, kody '''HTML''' przecinka są zamieniane na zwykły przecinek.
Funkcja zwraca tabelę podzielonej linii na mniejsze podlinie, który można iterować funkcją: {{Code|pairs}} lub {{Code|ipairs}}.
===== {{Śródtytuł|WsadzanieParametryDoTablicy}}{{Code|WsadzanieParametryDoTablicy}} =====
Funkcja z parametrami, która uruchamia inną funkcję uruchamianą w: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}, która wstawia tabelę {{LinkPatrz|tab_stare}}, do ogólnej tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}, ewentualnie do {{Code|tabela_rozdzial_artykulow}} {{Patrz|tabela_rozdzial_artykulow}} na pozycję {{Code|numer_podtablicy_w_tablicy}} {{Patrz|numer_podtablicy_w_tablicy}}, a dokładniej na pozycję {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}} w funkcji {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function WsadzanieParametryDoTablicy(linia,czy_linia_uwzgledniana)
return function(tabela_rozdzial_artykulow2,numer_podtablicy_w_tablicy,tab_stare)
... ---- ciało funkcji.
end;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|linia}} | _1 = Jak w: {{LinkPatrz|linia}}.
| 2 = {{Code|czy_linia_uwzgledniana}} {{Patrz|czy_linia_uwzgledniana}} | _2 = Czy linię ma uwzględnić w powiększaniu poziomu o jeden dla artykułu.
}}
Parametry zwracanej funkcji przez tę w nagłówku:
{{OpisParametrów
| 1 = {{Code|tabela_rozdzial_artykulow2}} | _1 = Jak w: {{LinkPatrz|tabela_rozdzial_artykulow2}}.
| 2 = {{Code|numer_podtablicy_w_tablicy}} | _2 = Jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}.
| 3 = {{Code|tab_stare}} | _3 = Jak w: {{LinkPatrz|tab_stare}}.
}}
====== {{Śródtytuł|CzyZaliczac}}{{Code|CzyZaliczac}} ======
Funkcja sprawdza, czy z początkiem linii pozycji listy, bez przedrostka listy, jest z możliwym cudzysłowem, po którym następują liczby, litery, lub myślniki dolne, w takim pzypadku linia nie może składać się z nich, po ktorym występują znaki interpunkcyjne. Jeśli to sprawdzenie było pozytywne funkcja zwraca wartość logiczną odpwowiadającą {{Code|true}}, w przeciwnym wypadku jak {{Code|false}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function CzyZaliczac()...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = Brak parametrów funkcji. | komórka1 = tak
}}
Funkcja zwraca informację, czy daną linię traktować jako rozdział, chodzi tu o pozycje list, a w przypadku rozdziałów dodatnich wiadomo, że one są właśnie, że rozdziałami.
====== Dalszy opis funkcji ======
Funkcja sprawdza w funkcji zwracanej, czy rozważany rozdział jest centrowany danego artykułu, który siedzi pod rozdziałem lub w samym rozdziale, sprawdza, czy artykuł jest w rozdziale, sprawdza czy linia jest uwzględniana: {{Code|czy_linia_uwzgledniana}} {{LinkPatrz|czy_linia_uwzgledniana}}. Funkcja sprawdza, czy sekcja czy w: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, czy istnieje element: {{Code|tab_stare[2]}} {{Patrz|tab_stare[2]}}, i dalszy: {{Code|tab_stare[2][1]}} {{Patrz|tab_stare[2][1]}} - ten element jest to w: {{Code|tab_stare}}, taki: {{Code|#przedrostek_listy}} {{Patrz|#przedrostek_listy}}, a jeżeli to sprawdzenie przeszło pozytywnie, który dla tego jest poziomem listy, lub zerowego rozdziału lub rozdziału dodatniego.
Dla każdej linii zmienna: {{Code|nowa_linia}} {{Patrz|nowa_linia}}, przyjmuje wartość {{Code|false}}, wtedy dla przypadku przeciwnego, tzn. gdy mamy rozdział i uwzględniamy artykuły w jednej linii, którym jest rozdział będacy pozycją listy, w zmiennej: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, jest ustawiany element: {{Code|tab_stare[2][4]}} {{Patrz|tab_stare[2][4]}}, czyli zmienna: {{Code|w_rozdziale}} {{LinkPatrz|w_rozdziale}}, zaczyna przyjmować wartość {{Code|true}}. Wsadzany jest wtedy do tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}, na pozycję: {{Code|numer_podtablicy_w_tablicy}} {{LinkPatrz|numer_podtablicy_w_tablicy}}, czyli to jest też: {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, element {{Code|tab_stare}} {{LinkPatrz|tab_stare}}.
Gdy: {{Code|nowa_linia}} {{LinkPatrz|nowa_linia}}, gdy jednak przyjmuje wartość {{Code|false}}, wtedy jeśli poziom rozdzialu istnieje i przedrostek listy {{LinkPatrz|#przedrostek_listy}} jest większy od zera, i istnieje wiele artykułów w pozycji liście, wtedy: {{Code|ile>0}}, lub funkcja: {{LinkŚródtytuł|CzyZaliczac}}, przyjmuje wartość odpowiadające prawdziwej, w taki przypadku zmiennej: {{Code|nowa_linia}} {{LinkPatrz|nowa_linia}}, przydzielamy wartość {{Code|true}}, by dalsze artykuły można było wsadzić, do tablicy z nowym rozdziałem. Powiększamy numer rozdziału o jeden, tzn.: {{Code|numer_rozdzialu_w_ksiazce}} {{Patrz|numer_rozdzialu_w_ksiazce}}, wtedy w zmiennej: {{Code|tabela_artykulow}} {{Patrz|tabela_artykulow}}, tabeli rozdziałów i w nich artykułów dla tej pozycji przydzielamy wartość równą tablicy pustej. Liczymy rozdział dla tego rozdział z artykułami, z funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}, liczymy napis rozdziału, wtedy do pierwszej pozycji tablicy utworzonej w: {{Code|tabela_artykulow}} {{LinkPatrz|tabela_artykulow}}, dla miejsca: {{Code|numer_rozdzialu_w_ksiazce}} {{LinkPatrz|numer_rozdzialu_w_ksiazce}}, czyli: {{Code|tabela_rozdzial_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}, piszemy:
<syntaxhighlight lang="lua">
tabela_rozdzial_artykulow[1]={rozdzial_na_tekst,{-#przedrostek_listy,przedrostek_listy,tekstowy_przedrostek,false,},linia,};
</syntaxhighlight>
Gdzie: {{Code|rozdzial_na_tekst}} {{Patrz|rozdzial_na_tekst}}, to policzony rozdział, {{Code|-#przedrostek_listy}} {{Patrz|-#przedrostek_listy}} to poziom rozdziału ujemnego, i dlatego minus. A: {{Code|przedrostek_listy}}, to znaki poczatkowe z listy: {{Code|wzor_do_linii_z_lista}} {{LinkPatrz|wzor_do_linii_z_lista}}, a: {{Code|tekstowy_przedrostek}}, to numeracja tego rozdziału. Wartość {{Code|false}} to jest ze ten rozdział nie jest centrowany, a: {{Code|linia}} {{LinkPatrz|linia}}, to wyzyskana linia bez początku pozycji listy. Ustawiamy: {{Code|tab_stare[2][4]}} {{LinkPatrz|tab_stare[2][4]}}, na wartość {{Code|true}} i element: {{Code|tab_stare[6]}} {{Patrz|tab_stare[6]}}, ustawiamy na zero. Tworzymy tablicę pustą na pozycję: {{LinkPatrz|numer_podtablicy_w_tablicy}}, tablicy: {{Code|tabela_rozdzial_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}, i do tej tablicy dodajemy: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, za pomocą funkcji: {{LzLua|table.insert}}.
A jeżeli nie jest tworzony nowy rozdział z listy w tabeli: {{Code|tabela_artykulow}} {{LinkPatrz|tabela_artykulow}}, to na pozycję: {{Code|numer_podtablicy_w_tablicy}} {{LinkPatrz|numer_podtablicy_w_tablicy}}, jest dodawany element: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, również tak jest robione, gdy artykuły znajdują się w rozdziale dodatnim, tzn. równaniowej lub centrowanej, tzn. wtedy: {{Code|w_rozdziale}} {{LinkPatrz|w_rozdziale}}, przyjmuje wartość {{Code|true}}.
===== {{Śródtytuł|AnalizaLiniiObiekty}}{{Code|AnalizaLiniiObiekty}} =====
Za pomocą funkcji: {{LinkŚródtytuł|LiniaArtykulow}}, linia: {{Code|linia_rozwazana}} {{Patrz|linia_rozwazana}}, jest rozdzielana na wiele linii. To wiele linii w postaci tabeli, są iterowane od: {{Code|k {{=}} 1}}, do: {{Code|k {{=}} #tab_linia}}, gdzie: {{Code|#tab_linia}} {{Patrz|#tab_linia}}, jest to długość linii, tzn. liczba elementów numerowanych tablicy, tzn. od 1 do zwyż aż do apotkania najbliższej przerwy lub końca. Wtedy dla pojedyńczej literacji mamy: {{Code|tab_linia[k]}} {{Patrz|tab_linia[k]}}.
Iterujemy po kodach dla linii: {{Code|tab_linia[k]}} {{LinkPatrz|tab_linia[k]}}, przy pomocy funkcji: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} {{Patrz|p.IteratorSzablonowyZakodowanegoTekstu}}, iteratorem: {{Code|iterator2}} {{Patrz|iterator2}}.
Inicjujemy zmienną: {{Code|tab_nieobslugiwane {{=}} nil}}, następnie iterujemy: {{LinkPatrz|iterator2}}, uzyskując w każdej iteracji: {{Code|szablon}} {{LinkPatrz|szablon}}, {{Code|obiekt}} {{LinkPatrz|obiekt}}, i {{Code|kod}} {{LinkPatrz|kod}}.
Gdy mamy do czynienia: {{Code|SZABLON}}, lub: {{Code|LINKW}}, albo: {{Code|LINKZ}}, wtedy dla elementów tego pierwszego bierzemy tablicę: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}, dla elementu: {{Code|nazwa_szablonu}} {{LinkPatrz|nazwa_szablonu}}.
Jeżeli ten element: {{Code|tabela_spisu}}, istnieje, element pierwszy: {{Code|tabela_spisu[1]}}, jest równy wartości {{Code|true}}, wtedy mamy do czynienia z szablonem {{s|SpisPozycja}}. Jej element: {{Code|tabela_spisu["numer_link"]}}, istnieje i jest równy: {{Code|tyt}} {{Patrz|tyt}}. Iterujemy po kluczach i jego wartościach tego szablonu i sprawdzamy, który element jest równy właśnie tej wartości, a jeżeli jest taki, to dla elementów nie równych niemu, a właściwie w jego wartości iterujemy po kodach funkcją: {{LinkPatrz|p.IteratorSzablonowyZakodowanegoTekstu}}, dla tej wartości, w ten sposób zbieramy tablicę wielowymiarową najpierw po: {{Code|obiekt}} {{LinkPatrz|obiekt}}, póżniej po: {{Code|kod}}, {{LinkPatrz|kod}}, którą nazwiemy: {{Code|tab_nieobslugiwane}} {{Patrz|tab_nieobslugiwane}}, którego każda jej wartość jest równa {{Code|true}}. Ta tablica mówi dla jakich elementów ma nie zbierać w tablicy elementów w głównej tablicy rozdziałów i jego artykułach.
Dla elementu {{Code|tyt}} {{LinkPatrz|tyt}} tablicy parametrów przedrostek listy {{Code|przedrostek_listy}} ustawiamy na pusty, i liczmy numerację {{Code|tekstowy_przedrostek}} i zmienną {{Code|szablon}} {{LinkPatrz|szablon}} i ustawiamy zmienną {{Code|przerwij}} {{Patrz|przerwij}} na {{Code|true}}, aby dla tego szablonu nie zbierać elementów w tablicy rozdziałów i jego artykułów.
W przypadku przeciwnym dla: {{Code|tabela_spisu}}, gdy ma wartość {{Code|false}}, wtedy mamy do czynienia z funkcją: {{s|SpisZw}}. Dla niej liczymy: {{Code|przedrostek_listy}}, którą ustawiamy na pustą wartość. A: {{Code|tekstowy_przedrostek}}, liczmy uzyskując parametr o kluczu: {{Code|tabela_spisu["numer"]}}, którym jest parametr o numerze: {{Code|1}}, i {{Code|szablon}} {{LinkPatrz|szablon}}, który liczmy z parametrów szablonu o kluczu {{Code|tabela_spisu["link"]}}, którym jest numer {{Code|2}}. Ustawiamy tutaj zmienną: {{Code|}} {{LinkPatrz|przerwij}}, na wartosć {{Code|true}}.
====== {{Śródtytuł|CzyObslugiwane}}{{Code|CzyObslugiwane}} ======
Funkcja sprawdzająca, które elementy są obsługiwane, jeśli istnieje tablica: {{Code|tab_nieobslugiwane}} {{LinkPatrz|tab_nieobslugiwane}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local CzyObslugiwane=function()...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = Brak parametrów. | komórka1 = tak
}}
====== Dalszy opis funkcji ======
; Uwzględnianie tablicy, reprezentujące artykuł w rozdziale, wstawiany do tablicy danego rozdziału{{dk}}
Sprawdzany jest warunek:
<syntaxhighlight lang="lua">
if((--[[wliczaj_artykuly_tego_rozdzialu]] true)and(not przerwij)and((not tab_nieobslugiwane)or(CzyObslugiwane())))then
</syntaxhighlight>
Jeżeli jest on spełniony, wtedy wywołujemy funkcję: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}, później dla:
<syntaxhighlight lang="lua">
if((not czy_obslugiwane)and(not numer_rodzaju_artykulu_poprz))then
</syntaxhighlight>
Sprawdzamy, czy jest zebrana licencja z autorem według zmiennej: {{Code|licencja_z_autorem}} {{Patrz|licencja_z_autorem}}, i sprawdzamy, czy: {{Code|szablon}} {{LinkPatrz|szablon}}, jest wnetrzem szablonu, jeżeli tak, to ona przyjmuje wartość odpowiadająca prawdziwej, przeciwnie ma fałszywą.
Jeżeli ten pierwszy warunek jest niespełniony, to tylko liczymy to samo coostatnio.
; Szablony licencji, i jego parametry, uwzględnianie jego tylko raz ca całą książkę, mieszcząca się w artykule głównej książki{{dk}}
Następnie dla warunku, który musi być spełniony:
<syntaxhighlight lang="lua">
if((not numer_rodzaju_artykulu_poprz)and(not przerwij)and(link_szablon)and((not tab_pozycja_elementow_w_spisie_rzeczy)or(not tab_pozycja_elementow_w_spisie_rzeczy[1]))and(czy_artykul_korzystany)and(licencja_z_autorem))then
</syntaxhighlight>
Sprawdzamy szablony licencji, takich jak: {{s|Licencja}}, według tablicy: {{Code|{{sr|#p.szablony_licencji|p=StronicowyParser/obiekty}}}}.
Dla parametrów szablonu, liczymy jego parametry o kluczach, tzn.: {{Code|Autor}} {{Patrz|Autor}}, {{Code|Ukończone szkoły}} {{Patrz|Ukończone szkoły}}, {{Code|Email}} {{Patrz|Email}}, {{Code|Dotyczy}} {{Patrz|DotyczyDotyczy}}, {{Code|Licencjonowanie}} {{Patrz|Licencjonowanie}}, {{Code|Umowa prawna}} {{Patrz|Umowa prawna}} i {{Code|Konsekwencje}} {{Patrz|Konsekwencje}}, którego wartości przydzielamy do odpowiednich zmiennych. Każdą z tych zmiennych kompletujemy funkcją: {{Code|{{sr|#p.DekodowanieTekstuDekodowanieTekstu|p=StronicowyParser/Potrzebne}}}}, poprzez zwracaną przez nią funkcję, w której jest wykorzystywana funkcją: {{LzLua|frame:preprocess}}, do rozwijania. A dla elementu istniejącego: {{Code|Autor}}, piszemy zmienną: {{Code|licencja_z_autorem}} {{LinkPatrz|licencja_z_autorem}}, któremu przydzielamy wartość {{Code|false}}, co spowoduje, że nie będziemy analizowali jeszcze raz innego szablonu licencji.
Te zmienne tego szablonu zbieramy natomiast w tablicy: {{Code|tabela_licencji_spisu_tresci}} {{Patrz|tabela_licencji_spisu_tresci}}, dane dotyczące licencji, więc:
<syntaxhighlight lang="lua">
tabela_licencji_spisu_tresci={autor, szkoly, email, dotyczy, licencjonowanie, umowa_prawna, konsekwencje};
</syntaxhighlight>
Co później przerywamy pętle po: {{Code|iterator2}} {{LinkPatrz|iterator2}}, instrukcją: {{Code|break}}.
==== Dalszy opis funkcji {{nobold|{{LinkPatrz|opis funkcji-ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}}} ====
Ściągamy tekst, tabelę bazy i tabelę parametrów strony o nazwie: {{Code|nazwa_modulu}}, przy pomocy funkcji: {{Code|{{sr|#p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony|p=StronicowyParser/Tekst}}}}, według:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=nil;
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
return nil;
end,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Uruchamiamy funkcję: {{Code|__FUNKCJA_ZBIERANIA_DANYCH}} {{LinkPatrz|__FUNKCJA_ZBIERANIA_DANYCH}}, jeżeli istnieje.
Dalej wywołujemy funkcję: {{Code|{{sr|#p.IterTekst|p=StronicowyParser/Rozdziały}}}}, w celu znalezienia tekstu: {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}}, i iteratora: {{Code|iterator}} {{Patrz|iterator}}, po napisach wprowadzenia tekstu rozdziałów i ich zawartości rozdziałów i na podstawie:
<syntaxhighlight lang="lua">
local iterator,tekst_rozwiniety_calego_artykulu=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,true,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,
__FUNKCJA, ---- funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adresu szablonu, określa i zawraca jego zawartość;
__FUNKCJA2, ---- funkcja operująca na przygotowanej zawartości napisu wprowadzenia tekstu i tekście napisu wprowadzenia tekstu (rozdziału);
__FUNKCJA_ANALIZA_SPISU ---- funkcja do analizy i modyfikacji tekstu (może zwracać wartość: nil) przed samym kodowaniem, jeżeli tekst jest w ogóle jest taki, a jeśli nie, ta funkcja wtedy nie jest uruchamiana, funkcja ta bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: IterTekst, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: SpisTreści, co jest uwidocznione w module: Moduł:StronicowyParser/SpisTreści;
);
</syntaxhighlight>
Opis parametrów zwracanych:
{{OpisParametrów
| 1 = {{Code|iterator}} {{Patrz|iterator-IterTekst}} | _1 = Iterator po rozdziałach i jego zawartościach.
| 2 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu-IterTekst}} | _2 = Tekst przetworzony rozdziału.
}}
Odczytujemy tabelę: {{LinkPatrz|p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu}} i dalej: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}, o definicji:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={
["spis treści"]=true,
["spis tresci"]=true,
["spis rzeczy"]=true,
};
</syntaxhighlight>
Robimy kopię tych tabel i przyłączamy do metatabeli: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, przy pomocy funkcji: {{LzLua|setmetatable}}, aby nie odrózniać tych rozdziałów ze względu na wielkość liter i polskie znaki.
Inicjiujemy zmienną: {{Code|numer_rozdzialu_w_ksiazce}} {{LinkPatrz|numer_rozdzialu_w_ksiazce}}, wartością: {{Code|1}}, aby zbierać po kolei artykuły ze poszczególnego pojedynczego spisu treści.
Ustawiamy maksymalny rozmiar rozdziału zerowego na {{Code|50}}, w zmiennej: {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{Patrz|maksymalny_rozmiar_rozdzialu_zerowego}}, według:
<syntaxhighlight lang="lua">
local maksymalny_rozmiar_rozdzialu_zerowego=50;
</syntaxhighlight>
===== {{Śródtytuł|AnalizaRozdzialu}}{{Code|AnalizaRozdzialu}} =====
Jest to funkcja do zbierania danych z pojedynczgo rozdziału o pewnej linii, inicjowana z jego parametrami, także tekstem rozdziału.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function AnalizaRozdzialu(rozdzial,linia_rozdzialu,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|rozdzial}} {{Patrz|rozdzial}} | _1 = Jest to tekst rozdziału.
| 2 = {{Code|linia_rozdzialu}} {{Patrz|linia_rozdzialu}} | _2 = Jest to linia z rozdziałem.
| 3 = {{Code|text}} {{Patrz|text}} | _3 = Jest to tekst rozdziału o pewnym napisie wprowadzenia tekstu.
| 4 = {{Code|poziom_rozdzialu}} {{Patrz|poziom_rozdzialu}} | _4 = Jest to poziom danego rozdziału.
| 5 = {{Code|poczatek_rozdzialu}} {{Patrz|poczatek_rozdzialu}} | _5 = Początek pozycji listy rozdziałów mechanizmu {{Strong|MediaWiki}}.
| 6 = {{Code|numeracja}} {{Patrz|numeracja}} | _6 = Numeracja rozdziału.
| 7 = {{Code|czy_rozdzial_centrowany}} {{Patrz|czy_rozdzial_centrowany}} | _7 = Czy dany rozdział jest centrowany.
}}
====== Tabela artykułów rozdziałów i w nich artykułów oraz jego poszczególnych ======
Tworzymy tabelę: {{Code|tabela_artykulow}} {{LinkPatrz|tabela_artykulow}}, jeżeli nie istnieje, z pustą tablicą, a później dla elementu: {{Code|numer_rozdzialu_w_ksiazce}} {{LinkPatrz|numer_rozdzialu_w_ksiazce}}, jeżeli też go nie ma, to też pustą tablicą. Dalej liczymy napis wprowadzenia tekstu rozdziału dodatniego funkcją: {{LinkŚródtytuł|p.AnalizaNapisuWprowadzeniaTekstu}} i uwzględniamy je w tabeli rozdziałów dla danego rozdziału pod wartością: {{Code|tabela_rozdzial_artykulow[1]}}, w sposób:
<syntaxhighlight lang="lua">
tabela_rozdzial_artykulow[1]={rozdzial_na_tekst,{poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany,},rozdzial,};
</syntaxhighlight>
Dalej wprowadzamy zmienną: {{Code|czy_spis_rzeczy_napis_wprowadzenia_tekstu}} {{Patrz|czy_spis_rzeczy_napis_wprowadzenia_tekstu}}, mówiącą teraz rozpatrujemy rozdziały i artykuły w ramach spisu treści o nagłówkach typu: {{Code|Spis treści}}, czy: {{Code|SPIS RZECZY}}. Jeżeli wyszliszmy poza to, to ta zmienna wtedy przyjmuje wartość fałszywą, a definicja inicjacji tej zmiennej jest:
<syntaxhighlight lang="lua">
local czy_spis_rzeczy_napis_wprowadzenia_tekstu=(poziom_rozdzialu)and(not czy_jest_spis_tresci)and(not dalej_nie_rozwazaj_spis_tresci)and(jakie_spisy_tresci[spreparowany_uzyskany_tekst_rozdzialu]);
</syntaxhighlight>
Gdzie:
{{OpisParametrów
| 1 = {{Code|poziom_rozdzialu}} | _1 = Jak w: {{LinkPatrz|poziom_rozdzialu}}.
| 2 = {{Code|czy_jest_spis_tresci}} {{Patrz|czy_jest_spis_tresci}} | _2 = Czy jesteśmy w spisie treści.
| 3 = {{Code|dalej_nie_rozwazaj_spis_tresci}} {{Patrz|dalej_nie_rozwazaj_spis_tresci}} | _3 = Zmienna mówiąca, że teraz jesteśmy poza spisem treści.
}}
====== Kiedy uwzględniamy artykuły rozdziału ======
Jeżeli jesteśmy w spisie, to zawsze są uwzględniane artykuły rozdziału, bo jest ustawiona zmienna: {{Code|wliczaj_artykuly_tego_rozdzialu}} {{LinkPatrz|wliczaj_artykuly_tego_rozdzialu}}, na {{Code|true}}, a poza na {{Code|nil}}.
Funkcja jest przyszykowana jest dla jednego spisu treści, o ściśle określonym specjalnym napisie wprowadzenia tekstu, w danym spisie na stronie.
====== Iterator linii artykułu spis treści ======
Uruchamiamy iterator używając funkcji lokalnej: {{LinkŚródtytuł|iteratorTekstuNaglowka}}, według wywołania:
<syntaxhighlight lang="lua">
local iterator=iteratorTekstuNaglowka();
</syntaxhighlight>
Ustawiamy zmienną: {{Code|wliczaj_artykuly_tego_rozdzialu}} {{LinkPatrz|wliczaj_artykuly_tego_rozdzialu}}, aby wliczał lub nie, pewne artykuły rozdziału według:
<syntaxhighlight lang="lua">
local wliczaj_artykuly_tego_rozdzialu=((wliczaj_artykuly_tego_rozdzialu)or(not jakie_nie_rozdzialy[rozdzial]));
</syntaxhighlight>
Iterujemy otrzymanym ostatnio iteratorem, uzyskując kolejno zmienne: {{Code|przedrostek_listy}} {{LinkPatrz|przedrostek_listy}}, {{Code|tekstowy_przedrostek}} {{LinkPatrz|tekstowy_przedrostek}}, {{Code|linia}} {{LinkPatrz|linia}}, i {{Code|w_rozdziale}} {{LinkPatrz|w_rozdziale}}.
; Kiedy rozdziałów zerowych nie liczymy jako je{{dk}}
Dla rozdziałów, które nie sa poziomami z listą, sprawdzamy, czy to jest rozdział zerowy przy pomocy funkcji: {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|p=StronicowyParser/Rozdziały}}}}, i sprawdzamy, czy on przekracza rozmiar: {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}, jeżeli jest tym rozdziałem i nie przekracza pewnego rozmiaru, to to jest rozdział traktowany jako zerowy niepomijany rozdział zerowy, wtedy ustawiamy zmienną: {{Code|nie_pomijaj_tego_rozdzialu}} {{Patrz|nie_pomijaj_tego_rozdzialu}}, na {{Code|true}}.
; A jeśli to są rozdziały z listy zaczynające się od dwukropka w linii{{dk}}
Gdy taki rozdział nie pretenduje do zerowych, to sprawdzamy funkcją: {{Code|{{sr|#p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu|p=StronicowyParser/Rozdziały}}}}, czy ten rozdział pominąć, a jeżeli ona przyjmuje wartość odpowiadającej fałszywej, czyli {{Code|false}}, wtedy ustawiamy zmienną: {{Code|nie_pomijaj_tego_rozdzialunie_pomijaj_tego_rozdzialu}} {{LinkPatrz|nie_pomijaj_tego_rozdzialu}}, na taką samą wartość jak poprzednio.
; Inne rozdziały{{dk}}
Dla rozdziałów innych ta wartość przyjmuje postać {{Code|false}}.
; Rozdziały jednak nie pomijane{{dk}}
Dla rozdziałów, które nie są pomijane, wtedy zmienna: {{Code|nie_pomijaj_tego_rozdzialu}} {{LinkPatrz|nie_pomijaj_tego_rozdzialu}}, przyjmuje wartość {{Code|true}}, w takim przypadku wchodzimy do funkcji: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstuZgodnieZJegoSzablonowymiElementami|p=Szablonowe}}}}, wtedy dla linków szablonowych sprawdzamy, czy to są linki określone tablicami: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy}}, {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}} lub ewentualnie funkcją: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}.
Innym sposobem sprawdzania, czy to jest szablon linkowy jest tablica: {{Code|{{sr|#p.szablony_kompletowania_stron_woluminu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_kompletowania_stron_woluminu}}, lub {{Code|{{sr|#p.szablony_licencji|p=StroncowyParser/obiekty}}}} {{LinkPatrz|p.szablony_licencji}}.
Jeżeli to jest szablon linków, wtedy jest zwracana wartość: {{Code|return true,obiekt,kod}}, w przeciwnym wypadku: {{Code|return false,obiekt,kod}}.
Innym sposobem liczenia, czy to jest link, to wtedy może być to link normalny: {{Code|LINKW}}, który można sprawdzić funkcją: {{Code|{{sr|#p["CzyLinkWewnętrzny"]|p=Specjalne}}}}, wtedy jest zwracane {{Code|return true,obiekt,kod}}.
Link też może być zewnętrzny, wtedy to jest: {{Code|LINKZ}}, wtedy funkcja zwraca wartość: {{Code|return true,obiekt,kod}}.
; Kiedy analizujemy artykuły rozdziału{{dk}}
Następnie dla linii: {{Code|linia_rozwazana}} {{LinkPatrz|linia_rozwazana}}, co na podstawie tego liczymy, czy daną linię nie uwzględnić, w obliczeniach według schematu:
<syntaxhighlight lang="lua">
local czy_linia_uwzgledniana=mw.ustring.match(linia_rozwazana,"^%s*%-%-+(.*)%-%-+%s*$");
local czy_linia=((not czy_linia_uwzgledniana)and(mw.ustring.match(linia_rozwazana,"^%s*[%-%+%=%~]+.*$")
or ((#przedrostek_listy==0)and((mw.ustring.match(linia_rozwazana,"!"))and(mw.ustring.match(linia_rozwazana,"[^!]%s*$"))))
or mw.ustring.match(linia_rozwazana,"^%s*<")) or nil);
</syntaxhighlight>
Co następnie jest ustawiana {{Code|nowa_linia}} {{LinkPatrz|nowa_linia}} na wartość {{Code|false}}.
; Warunek analizowania artykułów rozdziałów{{dk}}
W obliczeniach raz uwzględniamy funkcję: {{LinkŚródtytuł|AnalizaLiniiObiekty}}, w ostatniej omawianej pętli, schematycznie:
<syntaxhighlight lang="lua">
if(not czy_linia)then AnalizaLiniiObiekty(linia_rozwazana);end;
</syntaxhighlight>
===== Dalsza część funkcji {{nobold|{{LinkPatrz|opis funkcji-ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}}} =====
Bierzemy zakodowany tekst: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu-IterTekst}}, i po nim iterator: {{Code|iterator}} {{LinkPatrz|iterator-IterTekst}}, wtedy iterujemy po parametrach:
<syntaxhighlight lang="lua">
local parsuj_rozdzialami=nil; ---- ta zmienna służy na wypadek, gdy by nie była żadnych rozwazanych rozdziałów;
for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do
---- za każdym razem jest uruchamiana funkcja: AnalizaRozdzialu, przy rozważanym rozdziale;
AnalizaRozdzialu(rozdzial_tab[1],rozdzial_tab[2],text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany);
---- oznacz zmienną: parsuj_rozdzialami, wartością; true, a póżniej jąnie inicjuj;
if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end
end;
</syntaxhighlight>
Parametry zwracane przez iterator: {{Code|iterator}} {{LinkPatrz|iterator-IterTekst}}:
{{OpisParametrów
| 1 = {{Code|rozdzial_tab}} {{Code|{{=}}}} {{Code|<nowiki>{ [1] = rozdzial, [2] = linia_rozdzialu, }</nowiki>}} | _1 = tabela składająca się z dwóch elementów:
| 2 = Pod elementy tabeli: | nagłówek2 = tak
| 3 = {{Code|rozdzial}} | _3 = Jak w: {{LinkPatrz|rozdzial}}.
| 4 = {{Code|linia_rozdzialu}} | _4 = Jak w: {{LinkPatrz|linia_rozdzialu}}.
| 5 = Inne parametry: | nagłówek5 = tak
| 6 = {{Code|text}} | _6 = Jak w: {{LinkPatrz|text}}.
| 7 = {{Code|poziom_rozdzialu}} | _7 =Jak w: {{LinkPatrz|poziom_rozdzialu}}.
| 8 = {{Code|poczatek_rozdzialu}} | _8 = Jak w: {{LinkPatrz|poczatek_rozdzialu}}.
| 9 = {{Code|numeracja}} | _9 = Jak w: {{LinkPatrz|numeracja}}.
| 10 = {{Code|czy_rozdzial_centrowany}} | _10 = Jak w: {{LinkPatrz|czy_rozdzial_centrowany}}.
}}
Gdy nie napotkano żadnego rozważanego rozdziału, wtedy: {{Code|parsuj_rozdzialami}}, przyjmuje wartość {{Code|nil}}, w takim razie uruchamiana jest funkcja:
<syntaxhighlight lang="lua">
if(not parsuj_rozdzialami)then
AnalizaRozdzialu("Spis treści",nil,tekst_rozwiniety_calego_artykulu,nil,nil,nil,nil);
end;
</syntaxhighlight>
Funkcja zwraca parametry inaczej, gdy artykuł, do którego należy książka jest korzystany, a inaczej, jeśli nie. W takim razie możemy zwracać na dwa sposoby:
<syntaxhighlight lang="lua">
if(czy_artykul_korzystany)then
return tabela_artykulow,tabela_licencji_spisu_tresci,przekierowanie_spisu_tresci;
else
return tabela_artykulow,nil,przekierowanie_spisu_tresci;
end;
</syntaxhighlight>
Przy artykułach korzystanych, co jest określone zmienną: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, tabelę: {{Code|tabela_licencji_spisu_tresci}} {{LinkPatrz|tabela_licencji_spisu_tresci}}, przy jego spisach treści w książkach, do której należy ten artykuł, zwracana jest jako wartość przeważnie jako nierówna {{Code|nil}}, a dla artykułów z innych książkach, ta wartość już jest taka, tzn. przyjmuje wartość {{Code|nil}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
7m6javyu1c9dla5oopvonesouwtfzxw
558339
558338
2026-10-02T18:54:30Z
Persino
2851
/* Opis funkcji: {{nobold|{{Patrz|opis funkcji-ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}}} */
558339
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SpisTreści}}|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 lokalne ==
=== {{Śródtytuł|Ile}}{{Code|Ile}} ===
Funkcja liczy liczbę elementów we wszystkich podtabelach tabeli {{Code|tabela_rozdzial_artykulow2}} {{Patrz|tabela_rozdzial_artykulow2}}, licząc od drugiej tabeli, po pierwszej tabeli mieści się podtabela z informacjami o rozdziale, w której znajdują się artykuły określone dalszymi podtabelami.
Tymi podtabelami są od {{Code|2}} do {{Code|7}}, czyli {{Code|6}} tabelek, w których są artykuły, które zaliczamy do kategorii wliczane, tzn. one nie znajdują się w takich rozdziałach przetłumaczonych na małą literę, ale przedtem na nią była działana funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, usuwając z nich odstępy na końcach, w tym dolne myślniki, a wewnątrz zamieniając kolejne dolne myślniki i spacje na jedną spacją.
Metafunkcja, w metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, w: {{Code|{{ld2|Parametry}}}}, aby porównać to z tablicą {{Code|{{sr|#p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu}}, by zaliczyć je do tego typu:
<syntaxhighlight lang="lua">
p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu={
["licencja"]=true,
["inne"]=true,
["bibliografia"]=true,
["zobacz też"]=true,
["linki zewnętrzne"]=true,
};
</syntaxhighlight>
Twew rozdziały należą do kategorii rozdziałów, w których artykuły są pomijane przez: '''{{ld|StronicowyParser|Stronicowy parser}}''', ale jeżeli one należą do rozdziału spisu treści lub rzeczy, to tam jednak nie są takie, inaczej jest poza.
A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}.
A ta powyższa tabela mieści się: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a jego opis w: {{Code|{{sr|#p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu|p=StronicowyParser/obiekty}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow2)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|numer_rodzaju_artykulu}} | _1 = Numer podtabeli elementtu, do którego wsadzamy element.
| 2 = {{Code|tabela_rozdzial_artykulow2}} | _2 = Tabela wraz podtabelami, od {{Code|1}} do {{Code|13}}, ale liczenie jest od {{Code|2}}.
}}
=== {{Śródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}{{Code|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}} ===
==== Opis pobieżny funkcji ====
Funkcja do wstawiania elementów z ogólnej tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}, za pomocą funkcji wstawianej jako parametr: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{Patrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, do odpowiedniej pozycji artykularnej od: {{Code|2}} do {{Code|13}}, a pozycja {{Code|1}}, to pozycja rozdziałowa, ona jest określana przez zmienną: {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{Patrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, a pozycja, którą wsadzamy to: {{Code|tab_stare}} {{Patrz|tab_stare}}.
Funkcja zwraca pozycje:
<syntaxhighlight lang="lua">
return numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych;
</syntaxhighlight>
Opis tych parametrów funkcji:
{{OpisParametrów
| 1 = {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} | _1 = Jest to wartość zwrócona przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}}, w odróżnieniu od: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, jest mniejszy o jeden, czyli wtedy to była a poziomie przypisywania wartość {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}},
| 2 = {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} | _2 = Pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}.
| 3 = {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} | _3 = Tablica do sprawdzania, czy artykuł z nagłówkiem, ma powtórzenie tego bez nagłówka, czyli dla tego bez tego jest inna numeracja niż z nagłówkiem, a gdy niema tego bez, to wtedy dzięki tej funkcji numeracja tak się zachowuje, jak tam by był ten element, co prawda jest tam dodawany, ale jako z informacją taką, że bz numeru ustalanym przez funkcję: {{LinkŚródtytuł|Ile}}, A przy okazji, aby tego elementu nie dodawać ponownie, to w nim jest ustalana druga zmienna na {{Code|1}}, a wcześniej była na {{Code|0}}, i dlatego ona była wtedy dodawana, a później już tak nie jest.
}}
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY,tabela_rozdzial_artykulow2,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow--[[]])...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{Patrz|self}} | _1 = Zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}}.
| 2 = {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} | _2 = Opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow2,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare);
</syntaxhighlight>
Funkcja jest wywoływana w:
<syntaxhighlight lang="lua">
numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych=WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,WsadzanieParametryDoTablicy(linia,czy_linia_uwzgledniana),tabela_rozdzial_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow);
</syntaxhighlight>
Gdzie funkcja: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, to jest: {{LinkŚródtytuł|WsadzanieParametryDoTablicy}}.
| 3 = {{Code|tabela_rozdzial_artykulow2}} | _3 = Ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow2}}.
| 4 = {{Code|tablica_artykulow_zebranych}} | _4 = Diała jak w: {{LinkPatrz|tablica_artykulow_zebranych}}.
| 5 = {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} | _5 = Jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}}.
| 6 = {{Code|szablon}} {{Patrz|szablon}} | _6 = Jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu.
| 7 = {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - | _7 = Kolejno to jest: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''' i '''nazwa książki'''.
| 8 = {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} | _8 = Jest to nazwa artykułu danego spisu treści.
| 9 = {{Code|pelna_nazwa_spisu_tresci}} {{Patrz|pelna_nazwa_spisu_tresci}} | _9 = Uchwyt do bazy kodowania tekstu strony spisu treści.
| 10 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} | _10 = Nazwa strony szablonowa, jak są wywoływane w postaci szablonowej, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}}.
| 11 = {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} | _11 = Uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 12 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _12 = Tablica bazy zapisana w postaci osobnej tablicy, a nie jej w wewnętrznej bazie, nie jak to było w postaci zmiennej {{LinkPatrz|nazwa_modulu}}, używana zamiast: {{LinkPatrz|nazwa_modulu}}.
| 13 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _13 = Tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}.
| 14 = {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} | _14 = Obiekt i kod, czyli: zmienne charakteryzujące zmienną wnętrza: {{Code|szablon}} {{LinkPatrz|szablon}}.
| 15 = {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} | _15 = Tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy.
| 16 = {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} | _16 = Tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię.
| 17 = {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} | _17 = Numeracja rozdziału, z jakim rozpoczyna się rozdział.
| 18 = {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} | _18 = Gdy link znajduje się w rozdziale dodatnim.
| 19 = {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} | _19 = Cała linia z artykułem lub artykułami, tą linią równie dobrze może być rozdział, tu chodzi o rozdział dodatni.
}}
==== Opis pobieżny funkcji {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} ====
Przedstawiamy tutaj funkcję: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, która jest opisana w punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Definicja funkcji w nagłówku:
<syntaxhighlight lang="lua">
__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow2,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare);
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tabela_rozdzial_artykulow2}} | _1 = Jak w: {{LinkPatrz|tabela_rozdzial_artykulow2}},
| 2 = {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} | _2 = Jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}},
| 3 = {{Code|tab_stare}} | _3 = Jak w: {{LinkPatrz|tab_stare}}.
}}
Ta funkcja została opisana już wcześniej.
==== Szczegółowy opis funkcji głównej ====
Uruchamiamy funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, która jest zdefiniowana w module: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}}. Wywołujemy tę funkcję:
<syntaxhighlight lang="lua">
local tab_pozycja_elementow_w_spisie_rzeczy,numer_rodzaju_artykulu,id,parametry_szablonu,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nil,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
</syntaxhighlight>
Pierwszy elementem: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest to zmienna tablicowa, która opisuje parametry artykularno-linkowe parametry, drugi: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, do której kategorii należy dany artykuł w linku, a trzeci parametr, to: {{Code|id}} {{Patrz|id}}, to zbierane są parametry linkowe z szablonu {{s|SpisTreści}}, czwarty to: {{Code|parametry_szablonu}} {{Patrz|parametry_szablonu}}, w przypadku szablonów inteligentnych linków, to są parametry wywołań tych szablonów, ostatni parametr to: {{Code|kom}} {{Patrz|kom}}, przedstawia on, jeśli {{Code|false}}, to artykuł zakwalifikowany został poprawnie do rozważań, a {{Code|true}} już nie.
To {{LinkPatrz|parametry szablonu}}, to jest tablica z trzech elementów, tzn.:
<syntaxhighlight lang="lua">
local parametry szablonu={tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,};
</syntaxhighlight>
Elementy tablicy:
{{OpisParametrów
| 1 = {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} | _1 = Tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych.
| 2 = {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} | _2 = To jest nazwa uzyskanego szablonu linków inteligentnych lub nie.
| 3 = {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} | _3 = Tabela modyfikatorów rozkładanego szablonu.
}}
Jeśli parametr: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, istnieje, to tworzona jest z niego taka sama wersja lub przy nieistnnieniu parametru {{LinkPatrz|wliczaj_artykuly_tego_rozdzialu}}, do niego jest dodawana jest liczba {{Code|6}}. W ten sposób możemy zbierać artykuły książki i inne,ktore należą do pewnych rozdziałów i które nie należą.
===== {{Śródtytuł|ParametrPierwszy}}{{Code|ParametrPierwszy}} =====
Funkcja zbierające dane z {{Code|tab_artykul}} {{Patrz|tab_artykul}}, którego to jest czteroelementowa tablica, dotycząca danego artykułu. Drugim parametrem: {{Code|czy_niedozwolone}} {{Patrz|czy_niedozwolone}}, jest zmienna logiczna mówiąca, czy wskazać w nazwie artykułu, czy są dozwolone znaki, jest to sprawdzenie według wyrażenia regularnego: {{Code|<nowiki>[|<>{}%[%]]</nowiki>}} {{Patrz|wzor_znaki_niedozwolone}} na podstawie funkcji {{LzLua|mw.ustring.match}}, czyli: {{Code|znaki_niedozwolone}} {{Patrz|znaki_niedozwolone}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
ParametrPierwszy(tab_artykul,czy_niedozwolone)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tab_artykul}} | _1 = Jak w: {{LinkPatrz|tab_artykul}}.
| 2 = {{Code|czy_niedozwolone}} | _2 = Jak w: {{LinkPatrz|czy_niedozwolone}}.
}}
Gdzie: {{Code|tab_artykul}} {{LinkPatrz|tab_artykul}}, który jest pierwszym parametrem przyjmowanym przez funkcję, jest zdefiniowany jako czteroelementowa tablica, którą przypisujemy do czterem osobnych parametrów:
<syntaxhighlight lang="lua">
local artykul=tab_artykul[1];
local parametry=tab_artykul[2];
local naglowek=tab_artykul[3];
local tablica_przekierowania=tab_artykul[4];
</syntaxhighlight>
Jeżeli, któreś z parametrów z: {{LinkPatrz|tab_artykul}}, tzn. element jego {{Code|2}}-gi i {{Code|3}}-ci, istnieje, to układana jest trzyelementowa tablica z elementów od {{Code|1}} do {{Code|3}}, z dodatkowym elementem: {{Code|<nowiki>["LINK"] = true</nowiki>}}, a element czwarty to jest: {{Code|tablica_przekierowania}} {{Patrz|tablica_przekierowania}}, a jeżeli te dwa elementy, nie licząc czwartego, wcale nie istnieją, wtedy jest tworzony łańcuch znakowy z tego pierwszego elementu. Tak tworzymy, nową wersję tablicy: {{Code|tab_artykul}} {{Patrz|tab_artykul-nowa wersja}}, lub łańcuch znakowy, w postaci:
<syntaxhighlight lang="lua">
tab_artykul=((artykul)and(parametry or naglowek))and{[1]=artykul,[2]=parametry,[3]=naglowek,["LINK"]=true,} or artykul;
</syntaxhighlight>
Funkcja zwraca trzy parametry, tzn. parametry: {{LinkPatrz|tab_artykul-nowa wersja}}, {{LinkPatrz|znaki_niedozwolone}} i tablicę przekierowania: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}:
<syntaxhighlight lang="lua">
return tab_artykul,znaki_niedozwolone,tablica_przekierowania;
</syntaxhighlight>
===== Rozwijanie nazwy linku artykułu =====
Do rozwijania nazwy linku służy funkcja: {{Code|{{sr|#p.DekodowanieTekstuNazwLinku|p=StronicowyParser/Pomocne}}}} {{Patrz|p.DekodowanieTekstuNazwLinku}}, pod względem szablonowym i nie tylko.
Funkcja rozwija tą nazwę tym: {{LzLua|frame:preprocess}}, jedynie nie rozwija szablonów stronicowego parsera, podane podkategoriach w kategorii: {{Code|{{lk2|Szablony stronicowe}}}}, za pomocą odpowiednich metod, bo to by wywołało nieskończoną pętle, i dlatego takie szablony są zamieniane tylko na wywołania symboliczne.
==== Dalszy opis funkcji nadrzędnej przy istnieniu parametrów linkowych normalnych, czy szablonowych (linków inteligentnych) ====
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|{{=}}}} {{Code|1}} =====
Tworzony jest numerek: {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{Patrz|numer_rodzaju_artykulu_w_podreczniku}}, który w stosunku do: {{LinkPatrz|numer_rodzaju_artykulu}}, jest większy o jeden, a schemat tej operacji:
<syntaxhighlight lang="lua">
local numer_rodzaju_artykulu_w_podreczniku=numer_rodzaju_artykulu+1;
</syntaxhighlight>
====== Tworzenie tablicy: {{nobold|{{Code|tablica_artykulow_zebranych}}}} ======
Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną wstępnie w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}.
; Tablica{{dk}} {{nobold|{{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}}}}, nie jest tablicą{{dk}}
Gdy element pierwszy: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, nie jest tablicą, wtedy jedynie liczymy, czy ona ma znaki niedozwolone: {{Code|wzor_znaki_niedozwolone}} {{LinkPatrz|wzor_znaki_niedozwolone}}, a póżniej wiedząc ten element, który jest aktualną nazwą artykułu kiążki, tworzymy tabelę {{Patrz|tablica_artykulow_zebranych-imicjacja}}:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,};
</syntaxhighlight>
; Gdy element{{dk}} {{nobold|{{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}}}}, jest łańcuchem znaków{{dk}}
Wpierw liczone są parametry z wywołania, z opcją, czy ma liczyć, czy nazwa artykułu ma znaki niedozwolone, z funkcji: {{LinkŚródtytuł|ParametrPierwszy}}:
<syntaxhighlight lang="lua">
tab_pozycja_elementow_w_spisie_rzeczy[1],znaki_niedozwolone,tablica_przekierowania=ParametrPierwszy(tab_pozycja_elementow_w_spisie_rzeczy[1],true);
</syntaxhighlight>
; Inna książka - atrybut, tzn. czy artykuł wychodzi poza daną książkę, lub jego przekierowanie w niej kieruje na stronę poza nią{{dk}}
Dalej sprawdzane jest, czy książka przyjmuje atrybut, tzn.: '''czy inna książka''', wtedy liczymy to z kodu z tablicy przekierowania: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, jeżeli jej wartość istnieje, tzn.: {{Code|czy_inna_ksiazka}} {{Patrz|czy_inna_ksiazka}}:
<syntaxhighlight lang="lua">
local czy_inna_ksiazka=tablica_przekierowania and tablica_przekierowania[1] and tablica_przekierowania[1][5] or nil;
</syntaxhighlight>
; Tablica przekierowania artykułu względem bieżącej książki{{dk}}
Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, który przedstawia, czy to jest artykuł bieżącej książki, którego przekierowanie kieruje, wtedy ten parametr ma wartość {{Code|true}}, a gdy adres przekierowania wskazuje na inną książkę, wtedy {{Code|false}}. Jeśli ten parametr ma wartość fałszywą, wtedy jest sprawdzane, czy jest tablicą w: {{Code|czy_tablica}} {{Patrz|czy_tablica}}, według:
<syntaxhighlight lang="lua">
czy_tablica=parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1]);
</syntaxhighlight>
Lub w przeciwnym wypadku liczymy parametry artykularne z tablicy przekierowania: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek przekierowania, w tej tablicy, istnieje, wtedy parametr: {{Code|czy_tablica}} {{LinkPatrz|czy_tablica}}, przyjmuje wartość {{Code|true}}, w przeciwnym wypadku wartość fałszywą.
Gdy ten element nie jest tablicą, to tworzona jest nazwa pełna artykułu: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}} i umieszczana w tablicy: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z podobną tablicą początkową jak w poprzednim przypadku jego tworzenia, czyli jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}.
; Tablica zebranych artykułów i porównywanie artykułu z nagłówkiem, czy istnieje wcześniejszy artykuł bez niego{{dk}}
Gdy element jest jednak tablicą, też jest liczona pełna nazwa artykułu (gdy nazwa artykułu przekierowania istnieje, wtedy ona jest liczona z: {{Code|tablica_przekierowania[2]}}, w przeciwnym wypadku, jeśli element: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}}, jest tablicą, wtedy liczymy ją z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1][1]}}, w innym wypadku z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}}), a z niej liczymy tablicę: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}, w przypadku pierwszego artykułu nienagłówkowego.
A w przypadku pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie, artykuł poprzedni nie istnieje, a więc tego tam nie ma tam w takim przypadku.
Gdy funkcja napotkała artykuł o takim samym stronie, co poprzednio, to do wartości początkowej, bez definiowania jeszcze raz tej samej tablicy, jest ustawiane odpowiednio:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych[3]=true;
</syntaxhighlight>
Co informuje, że artykuł jest ten sam, tylko inny nagłówek niż poprzedni, a poprzedni pierwszy jest bez niego.
====== Rozwijanie nazwy linku ======
Kompletowany jest drugi element tablicy: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkPatrz|p.DekodowanieTekstuNazwLinku}}. Dalej z tej nazwy są usuwane znaki specjalne według funkcji: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, z modułu: {{Code|{{ld2|Specjalne}}}}. Następnie działamy funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, które końcowe spacje usuwa, a wewnętrz powtarzające zamienia kolejne na jedną spację.
====== Dodawanie do tablicy problemów, jeśli nastąpił problem ze znakami niedozwolonymi ======
A między czasie, gdy mamy niedozwolone znaki: {{Code|znaki_niedozwolone}} {{LinkPatrz|znaki_niedozwolone}}, za pomocą funkcji pytającej sprawdzamy, czy element inny zgłoszeniowy został dodany do tablicy problemów: {{Code|{{sr|#p.CzyJestTakiProblemowyElement|p=StronicowyParser/Problemy}}}}, aż w końcu dodajemy ten problem, jeśli go nie ma przy pomocy funkcji: {{Code|{{sr|#p.UstawTakiProblemowyElement|p=StronicowyParser/Problemy}}}}.
====== {{Śródtytuł|inicjacja_i_kompletowanie_zmiennych}}Ustalanie nazwy jednostki, kompletowanie linii artykułów i inicjowanie pozycji, w tabeli zebranych elementów, w tabeli zebranych elementów ======
Ustalamy nazwę jednostki z funkcji: {{Code|{{sr|#p.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem|p=StronicowyParser/Potrzebne}}}}, i inicjujemy tą wartością, czyli: {{Code|nazwa jednostki}} {{Patrz|nazwa jednostki}}, wartość starą: {{Code|stara_nazwa_jednostki}} {{Patrz|stara_nazwa_jednostki}}, według:
<syntaxhighlight lang="lua">
---- Piszanie pełnej nazwy jednostki bez parametrów i nagłówka;
local nazwa_jednostki=stronicowyparser_potrzebne_modul.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(tab_pozycja_elementow_w_spisie_rzeczy[1],false);
---- Inicjowanie starej wartości tą policzoną;
local stara_nazwa_jednostki=nazwa_jednostki;
</syntaxhighlight>
Dalej {{Śródtekst|uchwyt=tabela_rozdzial_artykulow2|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}}}, według:
<syntaxhighlight lang="lua">
if(not tabela_rozdzial_artykulow2[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow2[numer_rodzaju_artykulu_w_podreczniku]={};end;
</syntaxhighlight>
Co {{Śródtekst|uchwyt=linia_artykokow|tekst=dalej linię artykułów {{Code|linia_artykokow}} {{LinkPatrz|linia_artykokow}}, kompletujemy, funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, z modułu: {{Code|{{ld2|Szablonowe}}}}, znając tablicę: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}}}, według:
<syntaxhighlight lang="lua">
linia_artykokow=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_artykokow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
</syntaxhighlight>
====== Uwzględnianie niepodanego elementu nienagłówkowego w tablicy zebranych parametrów ======
Gdy tablica przekierowania: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, istnieje, wtedy sprawdzamy, czy zmienna logiczna: {{Code|czy_tablica}} {{LinkPatrz|czy_tablica}}, jest prawdą i czy: {{Code|stara_nazwa_jednostki}} {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej: {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie artykułu przekierowania.
Inicjujemy nową zmienną: {{Code|przekierowanie}} {{LinkPatrz|przekierowanie}}, z artykułu, parametrów i nagłówka, ale wpierw sprawdzamy, czy dwa ostatnie istnieją, według:
<syntaxhighlight lang="lua">
przekierowanie=przekierowanie and ((tablica_przekierowania[3] or tablica_przekierowania[4]) and {przekierowanie, tablica_przekierowania[3], tablica_przekierowania[4],["LINK"]=true,}or przekierowanie) or nil;
</syntaxhighlight>
Tworzony jest nowy element: {{Code|nazwa jednostki}} {{Patrz|nazwajednostki-nowy}}, z: {{LinkPatrz|nazwa jednostki}}, parametrów i nagłówka, według rysu:
<syntaxhighlight lang="lua">
nazwa_jednostki={nazwa_jednostki, tab_pozycja_elementow_w_spisie_rzeczy[1][2], tab_pozycja_elementow_w_spisie_rzeczy[1][3],["LINK"]=true,};
</syntaxhighlight>
Jeżeli parametr drugi: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}.
Wsadzamy element: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, do zbioru: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, przy pomocy funkcji: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Następnie jej drugiemu elementowi: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, do tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}, na pozycji: {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, według funkcji: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej.
Jeżeli tablica przekierowania: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, jednak nie istnieje, wtedy tak samo sprawdzamy, co poprzednio potem, ale po spełnieniu tych warunków robimy inną tablicą: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, i tę tablicę robimy podobnie, i inicjujemy te same elementy też podobnie.
====== Uwzględnianie pozycji podanej w tablicy zebranych elementów ======
Tworzymy zmienną: {{Code|ile_dodac_do_poziomu_artykulu}} {{Patrz|ile_dodac_do_poziomu_artykulu}}, z drugiego elementu tablicy: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, następnię tworzymy inną zmienną: {{Code|ile_dodac_do_poziomu_artykulu_lub_nil}} {{Patrz|ile_dodac_do_poziomu_artykulu_lub_nil}}, co uwidaczniamy wzorem:
<syntaxhighlight lang="lua">
local ile_dodac_do_poziomu_artykulu_lub_nil=((ile_dodac_do_poziomu_artykulu)and(ile_dodac_do_poziomu_artykulu>0))and ile_dodac_do_poziomu_artykulu or nil;
</syntaxhighlight>
Tą zmienną wykorzystamy do sformułowania: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}.
{{Śródtekst|tekst=Tworzymy zmienną: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}, na pozycji: {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, przy pomocy funkcji: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.|uchwyt=__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|>{{=}}}} {{Code|2}} =====
Będziemy tutaj operowali, gdy parametr drugi zwracany z funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, wskazuje na nie artykuł książki, zatem ten rozdział jest właśnie dla tego przypadku.
====== Odkodowanie i przygotowanie zmiennych artykułu linku, jej nazwy, także kodu języka i projektu ======
* Gdy pierwszy element tablicy: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}.
* Dla drugiego takiego elementu z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, co jest nazwą linku, wtedy gdy nazwa linku normalnego, czy szablonowego, jest zakodowana, to ją odkodujemy, którego każdy jego element kod odkodujemy według funkcji: {{LinkPatrz|p.DekodowanieTekstuNazwLinku}}, następnie z niej usuwamy znaki specjalne według: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, następnie usuwamy końcowe spacje i wewnątrz kolejne spacje zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
* Dla trzeciego i czwartego takiego elementu z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, te elementy odkodujemy, następnie z nich usuwamy końcowe spacje, a wewnątrz kolejne spacje zastępujemy jedną, według tej samej funkcji, co powyżej.
====== Przygotowanie zmiennych, inicjowanie tablicy: {{Code|tab_stare}}, i wsadzanie jej do tablicy ogólnej: {{Code|tabela_rozdzial_artykulow2}} ======
Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow2}}, także co {{PobierzŚródtekst|linia_artykokow}}, co wszystko robimy podobnie jak w rozdziale: {{LinkŚródtytuł|inicjacja_i_kompletowanie_zmiennych}}.
{{PobierzŚródtekst|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
==== Definicja tablicy: {{Code|tab_stare}}, inicjowanie jej elementów w różnych przypadkach ====
Przedstawiamy tutaj ogólną definicję zmiennej: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. Ta wersja jest jedynie sformułowana dla artykułów w rozdziale, a nie dla rozdziałów, bo w tablicy, do której jest ona wsadzana przyjmuje ona możliwy numerek od "2" do "13", a nie również "1". Jej wersja ogólna:
<syntaxhighlight lang="lua">
local tab_stare=
{
---- Początek elementów alternatywnych
{
---- Początek wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[1], -- artykuł bez pełnej nazwy ksiązki, bez parametrów i nagłówka, bo ich nie posiadałna samym początku;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- artykuł bez pełnej nazwy książki, bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[2], -- nazwa linku artykułu normalnego, czy szablonowego;
---- Początek elementów alternatywnych dla przekierowania
---- Poczatek parametrów przekierowania
{
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
tablica_przekierowania[3], -- parametry przekierowania artykułu;
tablica_przekierowania[4], -- nagłówek przekierowania artykułu;
["LINK"]=true, -- zmienna świadcząca, że nazwa przekierowania artykułu jest z parametrami i nagłówkiem;
},
---- lub
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
---- Koniec parametrów przekierowania
tablica_przekierowania[1], -- tablica o definicji: {
nazwa_przestrzeni_strony_przekierowania, -- nazwa przestrzzeni nazw przekierowania artykułu;
nazwa_przestrzeni_ksiazki_strony_przekierowania, -- nazwa przestrzeni książki przekierowania artykułu;
nazwa_ksiazki_strony_przekierowania, -- nazwa książki orzekierowania artykułu;
true/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce;
true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie;
czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach;
};
---- lub
nil, -- dotycząca przekierowania artykułu, a tutaj strona nie ma przekierowania, więc: nil;
nil, -- dotycząca tablicy książki, na którą wskazuje przekierowanie, a tutaj nie ma tablicy, więc: nil;
---- Koniec elementów alternatywnych dla przekierowania
tab_pozycja_elementow_w_spisie_rzeczy[3], -- kod języka;
tab_pozycja_elementow_w_spisie_rzeczy[4], -- kod projektu;
tab_pozycja_elementow_w_spisie_rzeczy[5], -- adres artykułu bez przetworzenia w linku normalnym,czy szablonowym;
ile_dodac_do_poziomu_artykulu_lub_nil, -- parametr mający tylko wartości: 1, gdy do aktualnego poziomu musi być dodane jeden - ta wartość, tylko dotyczy artykułów należących do tej samej książki, lub: nil, gdy nic, czyli w pozostałych przypadkach;
tab_pozycja_elementow_w_spisie_rzeczy[6], -- "url", pozycja świadcząca, że to jest link zewnętrzny, a nil, gdy to jest normalny link;
},
---- lub
tab_pozycja_elementow_w_spisie_rzeczy[1], -- nazwa artykułu linku, która nie posiada, ani parametrów w sobie, a po nim nagłówka, lub bezpośrednio po nazwie;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- nazwa artykułu bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec elementów alternatywnych
{
#przedrostek_listy, -- poziom listy, w którym jest artykuł, dla artykułów w linii z listą, w innym wypadku dla artykułu znajdującego się w rozdziale dodatnim, czy ujemnym jest zero;
przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])", przeciwnie dla artykułów w rozdziale dodatnim ma wartość pustą;
tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu, gdy nie ma takiej numeracji, bo nie da się jej wydzielić, to ma wartość pustą;
w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym, wtedy "true", w przeciwnym wypadku: "false";
},
linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare";
true/false, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: false;
true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika, przeciwnie: false;
---- Początek elementów alternaatywnych
Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow2), -- który numer artykułu, w momencie wsadzenia do tabeli zbierania rozdziałów i w nich artykułów, nawet w rozdziale;
---- lub
nil, -- nil, wtedy gdy link jest tak sobie dodany, który nie należy do żadnego spisu, a po nim elementy jego z nagłówkiem natomiast należą;
---- Koniec elementów alternatywnych
};
</syntaxhighlight>
W powyższym: {{Tag|syntaxhighlight|parametry=lang="lua"}}, dla elementu: {{Code|<nowiki>---- lub</nowiki>}}, jest powiedziane, że są dostępne alternatywy, które są zawarte w tablicy, że wybieramy te, aby nie spowodować czysto podwójnej tablicy, aby każda tablica zawierały inne elementy, jak wiele, a nie jedną tablicę, jak i łańcuchy znaków, wartość nil, powoduje, że czy ma być taka tablica, ale nie podwójna, co to znaczy podowójna, tzn. tablica w sobie zawiera inną jedyną tablicę, a tak nie może być, a jak zawiera jedną tablicę, to musi posiadać inne nienilowe elementy.
== Funkcje tablicy transportu ==
=== {{Śródtytuł|p.AnalizaNapisuWprowadzeniaTekstu}}{{Code|p.AnalizaNapisuWprowadzeniaTekstu}} ===
Funkcja przyjmuje jako parametr nieskompletowaną i nieprzetworzony tekst napisu wprowadzenia tekstu. On kompletujei przekształca go w odpowiedni sposób,aby otrzymać czysty tekst tytułu rozdziału.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AnalizaNapisuWprowadzeniaTekstu(rozdzial,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|rozdzial}} | _1 = Ten tekst tytułu rozdziału, o którym mówimy.
| 2 = {{Code|pelna_nazwa_spisu_tresci}} | _2 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci}}
| 3 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _3 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _5 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
==== Obiekty typu {{nobold|{{Code|SZABLON}}}} ====
Funkcja korzysta z funkcji: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, funkcja ma zdefiniowaną pierwszą jej funkcję, która dla: {{Code|obiekt {{=}} "SZABLON"}}, używamy pierwsze dwie tabelę, te tabele:
Pierwsza {{Patrz|szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu}}, która służy do zamieniania szablonów na ich parametry, tutaj pierwsza, to jest tablica: {{Code|{{sr|#p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu}}:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu={
["MDL:RozszerzonyLink"]=1,
["Kompletność"]="",
["Kompletność krótka"]="",
["Kompletność junior"]="",
["Książka"]="",
};
</syntaxhighlight>
Druga: {{Code|{{sr|#p.szablony_dozwolone_w_nazwach_linkowych|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_dozwolone_w_nazwach_linkowych}}, też służy do tego samego.
Funkcja wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja {{Patrz|p.szablony_dozwolone_w_nazwach_linkowych}}:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_w_nazwach_linkowych={
["Korekta"] =2,
};
</syntaxhighlight>
===== Funkcje zawartości i dodatków, dla szablonów =====
One służą do zamieniania wywołań szablonowych na odpowiednie ich zawartości parametrów określone przez numery parametrów tych elementów w tch tabelach. Jeżeli przy którym wywolaniu przy wykorzystaniu kolejnych tych tabel przy użyciu funkcji: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, nastąpiło zamienienie, to funkcja pierwsza w: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, zakańcza się z tą wartością. A jeżeli nie to uruchamia się funkcj dodatków: {{Code|{{sr|#p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu|p=StronicowyParser/Rozdziały}}}}, a jeśli nastąpiło zastąpienie, to funkcja kompletowania się kończy z tą wartością.
===== Szablonowe linki =====
Dalej jeżeli tak się nie stało, to uruchamia się funkcja parametrów, w którym wywołanie szablonowe jest rozkładane na nazwę szablonu, modyfikatory i parametry. Dalej jest spradzanie , czy jest to link inteligentny według funkcji: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}, a gdy jest, to funkcja kończy swoje działania z nazwą tego linku lub jego adreesem wewnętrznym, a jeśli on nie jest tym, to sprawdza, czy są inne szablonowe linki, które podejrzewa się poprzez wywołanie funkcji: {{Code|{{sr|#p.NazwaInnegoSzablonowegoLinkowegoObiektu|p=StronicowyParser/Potrzebne}}}}, a jeżeli jest tym linkiem, to funkcja składania zwraca też jak poprzednio nazwę linku lub jego adres wewnętrzny, ewentualnie z dodatkiem. A gdy nie, to w innym przypadku sprawwdzane, czy to jest inny link wewnętrzny generowane przez szablony, która spradza funkcja tutaj: {{Code|{{sr|#p.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy|p=StronicowyParser/Potrzebne}}}}, a jeżeli szablon jest tym linkiem, to kunkcja składania zwraca jego nazwę linkową.
===== Szablony rozwijane przez {{lpg|JavaScript}} =====
A następnym krokiem jest sprawdzanie, czy nazwa szablonu jest jednych z elementów z tablicy: {{LinkPatrz|p.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu}}, która ma ten element, te szablony wymienione w tej tablicy są po to, aby służyły do rozwijania przez JavaScript, są to elementy wikikodu, które są pracochłonne ze względu na ich skomplikowany kod, czy wikikod, nawet {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, i dlatego ich się nie rozwija przez stronicowy parser: {{Code|{{ld2|StronicowyParser}}}}, te nazwy szablonów są określone tablicą: {{Code|{{sr|#p.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu}}:
<syntaxhighlight lang="lua">
p.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu={
["Cytuj"]=true,
["Cytuj stronę"]=true,
["Cytuj pismo"]=true,
["Cytuj odcinek"]=true,
["Cytuj książkę"]=true,
["Cytuj grę komputerową"]=true,
};
</syntaxhighlight>
I funkcja wtedy zwraca skompletowany szablon bez rozwijania jego, pod warunkiem, jeżeli jest tym szablonem o tej nazwę szablonu wywołującego.
===== Co jest zwracane w przypadku szablonów =====
Te powyżej elementy dla funkcji parametrów, w niej wartości są zwracane do niej, a jeżeli ona przyjmuje wartość nienilową, to do funkcji składania zwracana jest jego wartość, a przeciwnie jest zwracane pierwszy parametr szablonu do niej.
==== Obiekty typu: {{nobold|{{Code|NOWIKI}}}}, {{nobold|{{Code|PRE}}}} i {{nobold|{{Code|ŹRÓDŁO}}}} ====
A gdy dla elementów, jeśli nazwa obiektu jest: {{Code|obiekt {{=}} "NOWIKI"}}, {{Code|obiekt {{=}} "PRE"}}, lub: {{Code|obiekt {{=}} "ŹRÓDŁO"}}, znacznik jest rozkładany na czynniki pierwsze, a jeżeli nnie ma zawartości, to przez funkcję skłądania jest zwracana wartość pusta, a jeśli nie, to pewne znaki specjalne tagu {{Tag|nowiki}}, które mają w nim być zamienione na tekst, są zamieniane na kody '''HTML''', co po zamienieniu ta ona jest zwracana.
==== Obiekty typu: {{nobold|{{Code|MATH}}}}, {{nobold|{{Code|GALERIA}}}}, {{nobold|{{Code|MAPAOBRAZU}}}}, i {{nobold|{{Code|INNEPRE}}}} ====
A jeżeli wartość: {{Code|obiekt}}, jest nie równa: {{Code|MATH}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} lub {{Code|INNEPRE}}, wtedy z zawartości zmiennej: {{Code|szablon}}, są wykorzystanne funkcje z modułu: {{Code|{{ld2|Specjalne}}}}, które w tej podanej zmiennej są usuwane z komentarze z: {{Code|{{sr|#p["UsuńKomentarze"]|p=Specjalne}}}}, zamieniane są linki zewnętrzne i wewnętrzne na ich nazwy lub adresy według: {{Code|{{sr|#p["ZamieńLinkiZewnętrzneNaTekst"]|p=Specjalne}}}} i {{Code|{{sr|#p["ZamieńLinkiWewnętrzneNaTekst"]|p=Specjalne}}}}. Są usuwane rozwinięte znaczniki szablonów stylów używając do tego celu: {{Code|{{sr|#p["UsuńSzablonyStylów"]|p=Specjalne}}}}. Są też usuwane znaczniki na podstawie: {{Code|{{sr|#p["UsuńZnaczniki"]|p=Specjalne}}}}. Z tekstu szablonu są usuwane normalne kategorie nieszablonowe: {{Code|{{sr|#p"UsuńKategorie"]|p=Specjalne}}}}. Są też usuwane z zawartości wywołania plików i interwiki z: {{Code|{{sr|#p["UsuńWywołaniaPlików"]|p=Specjalne}}}} i {{Code|{{sr|#p["UsuńInterwiki"]|p=Specjalne}}}}. Dalej z tego obiektu są usuwane znaki specjalne z: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}.
A gdy mamy do czynienia z innymi znacznikami, to są zwracane jest zamiast niego wartość pusta do funkcji kompletowania.
Dane z funkcji kompletowane są zwracane, które z niej są usuwane znaki specjalne z całości tekstu rozdziału: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, i znaki białe z końców tekstu i powtarzarzające się te znaki kolejne z wewnętrz są zamieniane na jedną spację, to się dzieje według funkcji: {{Code|{{sr|#p["UsuńZbędneBiałeZnaki"]|p=Specjalne}}}}.
Cały taki wynik operacji robione w funkcji w nagłówku są zwracane do niej, to jest, co uzyskujemy nazwa rozdziału w postaci przetworzonej.
=== {{Śródtytuł|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}{{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} ===
Opisane tutaj są podfunkcje, z których korzysta ta funkcja, co one robią, do czego są wykorzystane.
==== Opis funkcji: {{nobold|{{Patrz|opis funkcji-ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}}} ====
Funkcja służy do zbierania nagłówków i z niej danych,tzn. linków normalnych i inteligentnych, a także są zbierane nagłówki z listy bez artykułów i do nich elementy podlisty z artykułami w postaci wywołań linkowych w niej. Tworzona jest specjalnie dla niegp tablica: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, która w odpowiedni po przekształaceniach wsadzana jest do tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} | _1 = Jak w: {{LinkPatrz|self}}.
| 2 = {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} | _2 = Kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}.
| 3 = {{Code|nazwa_spisu_tresci}} | _3 = Jak w: {{LinkPatrz|nazwa_spisu_tresci}}.
| 4 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _4 = Czy dany spis treści dla książki dla jej artykułu korzystanego, dla innej książki, wtedy to artykuł niekorzystany.
| 5 = {{Code|adres_ksiazki_glownego_spisu_tresci}} {{Patrz|adres_ksiazki_glownego_spisu_tresci}} | _5 = Jest to wewnętrzny adres książki głównego spisu treści,jest to taki adresm na który wskazuje przekierowanie innej książki.
| 6 = {{Code|__FUNKCJA_ZBIERANIA_DANYCH}} {{Patrz|__FUNKCJA_ZBIERANIA_DANYCH}} | _6 = Jest to funkcja, która zbiera informacje o aktualnym artykule, która jest spisem treści, w postaci nieprzetworzonej przez funkcje z modułu: {{Code|{{ld2|StronicowyParser/Rozdziały}}}}, opisanego w: {{Code|{{sr|Rozdziały|StronicowyParser - Rozdziały|p=StronicowyParser}}}}, ta funkcja kopiuje, np. tabele danych bazy modułu: {{Code|{{m|Szablonowe}}}}, tzn: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, i tabelę rozkładu elementów w niej na czynniki pierwsze, tzn.: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, co jest napisane w module: {{Code|{{ld2|StronicowyParser/ZbieranieDanychStron}}}}, a w dokumentacji: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}.
{{Śródtekst|uchwyt=__FUNKCJA_ZBIERANIA_DANYCH|tekst=
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
kod_sukcesu_lub_bledu=__FUNKCJA_ZBIERANIA_DANYCH(nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona);
</syntaxhighlight>
}}
}}
==== Funkcje lokalne ====
Funkcja ma w sobie też definicję funkcji lokalnych zdefiniowanej w tej funkcji tutaj opisywanej.
===== {{Śródtytuł|FunkcjaIteratoraTekstuZakodowego}}{{Code|FunkcjaIteratoraTekstuZakodowego}} =====
Funkcja służy do pomijania tego, co nie jest linkiem wewnętrznym, czy zewnętrznym, czyli oznaczone kodami: {{Code|LINKW}} lub {{Code|LINKZ}}, czy nawet szablonem linkuinteligentnego, czy innego służacego do generowania spisu treści, do tego celu również używa funkcji: {{LinkŚródtytuł|CzySzablonLinkLubLicencja}}, oraz tego co nie jest w liście okreslonym wzorem {{Code|<nowiki>\n([#:*;]+)</nowiki>}} z mozliwym na początku tekstem, ale nie z kodami, w danej pozycji listy, lub co ewentualnie nie może być w możliwej liście, tzn.: {{Code|<nowiki>\n([#:*;]*)</nowiki>}}, ale wtedy musi tam być z tekstem, ale nie z kodami, na początku danej pozycji listy, nawet jeśli to nie jest lista, to też tak samo.
Jeżeli funkcja nie ma kodów linków wewnętrznych, czy to normalnych, czy szablonowych, to się zakańcza z wartością domyślną {{Code|nil}}, w przeciwnym wypadku do sprawdzenia używa do tego funkcji: {{LinkŚródtytuł|PomijajLinkiOrazLicencje}}, do sprawdzania, czy to jest link lub licencji, a jeżeli ta funkcja zwraca wartość {{Code|true}}, to cała funkcja zwraca {{Code|nil}}. Jeżeli oba te sposoby nie dały rezultatu {{Code|true}}, to wtedy funkcja zwraca wartość pustą, czyli okreslonym ciągiem znakowym o szwerokości zerowej.
Funkcja ma w sobie dwie definicje funkcji: {{LinkŚródtytuł|PomijajLinkiOrazLicencje}} i {{LinkŚródtytuł|CzySzablonLinkLubLicencja}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local FunkcjaIteratoraTekstuZakodowego=function(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}.
| 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}.
| 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod}}.
}}
====== {{Śródtytuł|PomijajLinkiOrazLicencje}}{{Code|PomijajLinkiOrazLicencje}} ======
Funkcja służy do sprawdzania, czy są odpowiednie szablony w kodzie.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function PomijajLinkiOrazLicencje(szablon)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}.
}}
Funkcja sprawdza, czy to są szablony spisu treści określone tablicą o kluczach, którymi są nazwy szablonów, z wartościami {{Code|true}}, czyli: {{Code|{{sr|#p.szablony_licencji|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_licencji}}:
<syntaxhighlight lang="lua">
p.szablony_licencji={
["Licencja"]=true,
};
</syntaxhighlight>
Tzn., czy to są szablony ozdobne woluminu, którego tablica: {{Code|{{sr|#p.szablony_ozdobne_stron_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_ozdobne_stron_woluminu}}, jest podobnie zbudowana, co poprzednia:
<syntaxhighlight lang="lua">
p.szablony_ozdobne_stron_woluminu={
["MDL:RozszerzonyLink"]=true,
};
</syntaxhighlight>
A jeżeli to są te szablony, to funkcja zwraca wartość {{Code|true}}.
Jeżeli jednak to nie są te szablony, należy użyć tablic, tak samo zbudowanej jak poprzednie, czyli: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.linki_szablony_elementy_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.linki_szablony_elementy_spisu_rzeczy={
["SpisTreści"]=true,
["Sekcja referencyjna"]=true,
["Sr"]=true,
["Link wewnętrzny"]=true,
["Ly"]=true,
["LinkOgólne"]=true,
["Lo"]=true,
};
</syntaxhighlight>
lub innej, inaczej zbudowanej niż poprzednie, ale ważne, że ma wartość niefałszywą, czyli taką tablicą: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}, jest:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
Jak są te nazwy szablonów określone ich kluczami tych tablic, to funkcja zwraca wartość {{Code|true}}. A jeżeli jednak nie to funkcją: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}, jest sprawdzane,czy to jest link inteligentny, nawet przekierowanie, jeżeli link taki jest, to funkcja zwraca wartość w tym wypadku {{Code|true}}. W przeciwnym wypadku, jak nie zwrócił tej wartości,bo taka nie jest nazwa szablonu, to funkcja nic nie zwraca.
====== {{Śródtytuł|CzySzablonLinkLubLicencja}}{{Code|CzySzablonLinkLubLicencja}} ======
Funkcja sprawdzająca za pomocą: {{LinkŚródtytuł|PomijajLinkiOrazLicencje}}, na podstawie parsowania tekstu szablonu funkcją: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, z parsowanym przechwytywanym typem obiektu: {{Code|obiekt}} {{LinkPatrz|obiekt}}, równym {{Code|SZABLON}}. A jeżeli funkcja ta wspomniana w tekście zwróci {{Code|true}}, to funkcja taki obiekt policzy.
Jeżeli liczba policzonych obiektów i znalezionych w wyniku parsowania jest większa od zera, to funkcja w nagłówku zwróci wartość {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local CzySzablonLinkLubLicencja=function(szablon)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}.
}}
===== {{Śródtytuł|iteratorTekstuNaglowka}}{{Code|iteratorTekstuNaglowka}} =====
Jest to funkcja iteratora, którego funkcja zwracana (iterator) zwraca parametry, dla rozdziałów dodatnich i pozycji list.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function iteratorTekstuNaglowka()
... ---- Kod przed zwróceniem iteratora;
return function()
... ---- Ciało funkcji iteratora;
end;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = Brak parametrów. | komórka1 = tak
}}
Iterator (funkcja zwracana przez funkcję w nagłówku) zwraca parametry w wyniku kolejnych wywołań:
<syntaxhighlight lang="lua">
return przedrostek_listy,tekstowy_przedrostek,wyzyskane_wywolanie_szablonu_spis_tresci,true/false;
</syntaxhighlight>
Parametry zwracane przez iterator:
{{OpisParametrów
| 1 = {{Code|przedrostek_listy}} | _1 = Przedrostek pozycji listy, dla rozdziałów dodatnich jest wartością pustą.
| 2 = {{Code|tekstowy_przedrostek}} | _2 = Numeracja pozycji w liście lub w nagłówku dodatnim.
| 3 = {{Code|wyzyskane_wywolanie_szablonu_spis_tresci}} | _3 = Jest to rozdział bez numeracji i przedrostka pozycji listy.
| 4 = {{Code|true/false}} | _4 = Wartość {{Code|true}} świadczy o rozdziale dodatnim, a w przypadku innym funkcja zwraca zawsze wartość tą {{Code|false}} jako ostatni element zwracany.
}}
Funkcja jest przykowana na rozdziałów dodatnich i pozycji list oraz innych linii, dla tego pierwszego funkcja zwraca:
<syntaxhighlight lang="lua">
return "","",wartosc,true;
</syntaxhighlight>
Gdzie {{Code|wartość}} jest to zawartość napisu wprowadzenia tekstu (rozdziału dodatniego).
W przypadku list oraz innych niż rozdziały dodatnie samo wyrażenie regularne {{lpg|Lua}} w {{lpr|Lua|Scribunto}} jest okreslone przez wyrażenie:
<syntaxhighlight lang="lua">
local re="([#:*;]*)[^%S\n]*([%d%.]*[^%S\n]*[^\n]+)";
</syntaxhighlight>
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu|p=StronicowyParser/Rozdziały}}}}, aby zamienić zawartość pozycji listy na rozdział bez numeracji i numerację, i dlatego ta funkcja zwraca te dwie wartości. Gdy funkcja jak nie znajdzie więcej linii (wyszukań), to zwraca wartość {{Code|nil}} mówiąca o zakończeniu iteracji iteratora, tzn. dane dla iteratora się zakończyły.
===== {{Śródtytuł|LiniaArtykulow}}{{Code|LiniaArtykulow}} =====
Funkcja dla szablonów kompletowania określonym tabelką: {{Code|{{sr|#p.szablony_kompletowania_stron_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_kompletowania_stron_woluminu}}, o definicji:
<syntaxhighlight lang="lua">
p.szablony_kompletowania_stron_woluminu={
["Kompletność"]=true,
["Kompletność krótka"]=true,
["Kompletność junior"]=true,
["Książka"]=true,
};
</syntaxhighlight>
Rozdziela linię na wiele obsługiwanych podlinii.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function LiniaArtykulow(linia)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|linia}} {{Patrz|linia}} | _1 = Pojedyncza przetworzona linia.
}}
====== {{Śródtytuł|SzablonAnalizujKompletnosc}}{{Code|SzablonAnalizujKompletnosc}} ======
Funkcja sprawdza, czy dane wywołania szablonu, ma swoją nazwę szablonu, która jest nazwą szablonu kompletowania.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function SzablonAnalizujKompletnosc(szablon)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}.
}}
====== Dalszy opis funkcji ======
Możliwe są dwie opcje, szablon kompletowania jest pierwszy, a drugi drugi, lub odwrotnie. Funkcja obsługuje te oba przypadki. Ona stawia przecinkiem dla obu wersji ustawień, jeśli potraktować układem link i szablon kompletowania, to wstawiany jest on pomiędzy tymi układami, aby rozdzielić linię, a w liście bez jego znaków pozycji, na elementy przy pomocy funkcji: {{LzLua|mw.text.split}}, z opcją jako drugi parametr, aby uwzględniał wyrażenia regularne {{Code|false}}. W tych rozdzielonych linią tą funkcją dzielącą ciąg znakowy na tabelę, kody '''HTML''' przecinka są zamieniane na zwykły przecinek.
Funkcja zwraca tabelę podzielonej linii na mniejsze podlinie, który można iterować funkcją: {{Code|pairs}} lub {{Code|ipairs}}.
===== {{Śródtytuł|WsadzanieParametryDoTablicy}}{{Code|WsadzanieParametryDoTablicy}} =====
Funkcja z parametrami, która uruchamia inną funkcję uruchamianą w: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}, która wstawia tabelę {{LinkPatrz|tab_stare}}, do ogólnej tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}, ewentualnie do {{Code|tabela_rozdzial_artykulow}} {{Patrz|tabela_rozdzial_artykulow}} na pozycję {{Code|numer_podtablicy_w_tablicy}} {{Patrz|numer_podtablicy_w_tablicy}}, a dokładniej na pozycję {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}} w funkcji {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function WsadzanieParametryDoTablicy(linia,czy_linia_uwzgledniana)
return function(tabela_rozdzial_artykulow2,numer_podtablicy_w_tablicy,tab_stare)
... ---- ciało funkcji.
end;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|linia}} | _1 = Jak w: {{LinkPatrz|linia}}.
| 2 = {{Code|czy_linia_uwzgledniana}} {{Patrz|czy_linia_uwzgledniana}} | _2 = Czy linię ma uwzględnić w powiększaniu poziomu o jeden dla artykułu.
}}
Parametry zwracanej funkcji przez tę w nagłówku:
{{OpisParametrów
| 1 = {{Code|tabela_rozdzial_artykulow2}} | _1 = Jak w: {{LinkPatrz|tabela_rozdzial_artykulow2}}.
| 2 = {{Code|numer_podtablicy_w_tablicy}} | _2 = Jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}.
| 3 = {{Code|tab_stare}} | _3 = Jak w: {{LinkPatrz|tab_stare}}.
}}
====== {{Śródtytuł|CzyZaliczac}}{{Code|CzyZaliczac}} ======
Funkcja sprawdza, czy z początkiem linii pozycji listy, bez przedrostka listy, jest z możliwym cudzysłowem, po którym następują liczby, litery, lub myślniki dolne, w takim pzypadku linia nie może składać się z nich, po ktorym występują znaki interpunkcyjne. Jeśli to sprawdzenie było pozytywne funkcja zwraca wartość logiczną odpwowiadającą {{Code|true}}, w przeciwnym wypadku jak {{Code|false}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function CzyZaliczac()...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = Brak parametrów funkcji. | komórka1 = tak
}}
Funkcja zwraca informację, czy daną linię traktować jako rozdział, chodzi tu o pozycje list, a w przypadku rozdziałów dodatnich wiadomo, że one są właśnie, że rozdziałami.
====== Dalszy opis funkcji ======
Funkcja sprawdza w funkcji zwracanej, czy rozważany rozdział jest centrowany danego artykułu, który siedzi pod rozdziałem lub w samym rozdziale, sprawdza, czy artykuł jest w rozdziale, sprawdza czy linia jest uwzględniana: {{Code|czy_linia_uwzgledniana}} {{LinkPatrz|czy_linia_uwzgledniana}}. Funkcja sprawdza, czy sekcja czy w: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, czy istnieje element: {{Code|tab_stare[2]}} {{Patrz|tab_stare[2]}}, i dalszy: {{Code|tab_stare[2][1]}} {{Patrz|tab_stare[2][1]}} - ten element jest to w: {{Code|tab_stare}}, taki: {{Code|#przedrostek_listy}} {{Patrz|#przedrostek_listy}}, a jeżeli to sprawdzenie przeszło pozytywnie, który dla tego jest poziomem listy, lub zerowego rozdziału lub rozdziału dodatniego.
Dla każdej linii zmienna: {{Code|nowa_linia}} {{Patrz|nowa_linia}}, przyjmuje wartość {{Code|false}}, wtedy dla przypadku przeciwnego, tzn. gdy mamy rozdział i uwzględniamy artykuły w jednej linii, którym jest rozdział będacy pozycją listy, w zmiennej: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, jest ustawiany element: {{Code|tab_stare[2][4]}} {{Patrz|tab_stare[2][4]}}, czyli zmienna: {{Code|w_rozdziale}} {{LinkPatrz|w_rozdziale}}, zaczyna przyjmować wartość {{Code|true}}. Wsadzany jest wtedy do tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}, na pozycję: {{Code|numer_podtablicy_w_tablicy}} {{LinkPatrz|numer_podtablicy_w_tablicy}}, czyli to jest też: {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, element {{Code|tab_stare}} {{LinkPatrz|tab_stare}}.
Gdy: {{Code|nowa_linia}} {{LinkPatrz|nowa_linia}}, gdy jednak przyjmuje wartość {{Code|false}}, wtedy jeśli poziom rozdzialu istnieje i przedrostek listy {{LinkPatrz|#przedrostek_listy}} jest większy od zera, i istnieje wiele artykułów w pozycji liście, wtedy: {{Code|ile>0}}, lub funkcja: {{LinkŚródtytuł|CzyZaliczac}}, przyjmuje wartość odpowiadające prawdziwej, w taki przypadku zmiennej: {{Code|nowa_linia}} {{LinkPatrz|nowa_linia}}, przydzielamy wartość {{Code|true}}, by dalsze artykuły można było wsadzić, do tablicy z nowym rozdziałem. Powiększamy numer rozdziału o jeden, tzn.: {{Code|numer_rozdzialu_w_ksiazce}} {{Patrz|numer_rozdzialu_w_ksiazce}}, wtedy w zmiennej: {{Code|tabela_artykulow}} {{Patrz|tabela_artykulow}}, tabeli rozdziałów i w nich artykułów dla tej pozycji przydzielamy wartość równą tablicy pustej. Liczymy rozdział dla tego rozdział z artykułami, z funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}, liczymy napis rozdziału, wtedy do pierwszej pozycji tablicy utworzonej w: {{Code|tabela_artykulow}} {{LinkPatrz|tabela_artykulow}}, dla miejsca: {{Code|numer_rozdzialu_w_ksiazce}} {{LinkPatrz|numer_rozdzialu_w_ksiazce}}, czyli: {{Code|tabela_rozdzial_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}, piszemy:
<syntaxhighlight lang="lua">
tabela_rozdzial_artykulow[1]={rozdzial_na_tekst,{-#przedrostek_listy,przedrostek_listy,tekstowy_przedrostek,false,},linia,};
</syntaxhighlight>
Gdzie: {{Code|rozdzial_na_tekst}} {{Patrz|rozdzial_na_tekst}}, to policzony rozdział, {{Code|-#przedrostek_listy}} {{Patrz|-#przedrostek_listy}} to poziom rozdziału ujemnego, i dlatego minus. A: {{Code|przedrostek_listy}}, to znaki poczatkowe z listy: {{Code|wzor_do_linii_z_lista}} {{LinkPatrz|wzor_do_linii_z_lista}}, a: {{Code|tekstowy_przedrostek}}, to numeracja tego rozdziału. Wartość {{Code|false}} to jest ze ten rozdział nie jest centrowany, a: {{Code|linia}} {{LinkPatrz|linia}}, to wyzyskana linia bez początku pozycji listy. Ustawiamy: {{Code|tab_stare[2][4]}} {{LinkPatrz|tab_stare[2][4]}}, na wartość {{Code|true}} i element: {{Code|tab_stare[6]}} {{Patrz|tab_stare[6]}}, ustawiamy na zero. Tworzymy tablicę pustą na pozycję: {{LinkPatrz|numer_podtablicy_w_tablicy}}, tablicy: {{Code|tabela_rozdzial_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}, i do tej tablicy dodajemy: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, za pomocą funkcji: {{LzLua|table.insert}}.
A jeżeli nie jest tworzony nowy rozdział z listy w tabeli: {{Code|tabela_artykulow}} {{LinkPatrz|tabela_artykulow}}, to na pozycję: {{Code|numer_podtablicy_w_tablicy}} {{LinkPatrz|numer_podtablicy_w_tablicy}}, jest dodawany element: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, również tak jest robione, gdy artykuły znajdują się w rozdziale dodatnim, tzn. równaniowej lub centrowanej, tzn. wtedy: {{Code|w_rozdziale}} {{LinkPatrz|w_rozdziale}}, przyjmuje wartość {{Code|true}}.
===== {{Śródtytuł|AnalizaLiniiObiekty}}{{Code|AnalizaLiniiObiekty}} =====
Za pomocą funkcji: {{LinkŚródtytuł|LiniaArtykulow}}, linia: {{Code|linia_rozwazana}} {{Patrz|linia_rozwazana}}, jest rozdzielana na wiele linii. To wiele linii w postaci tabeli, są iterowane od: {{Code|k {{=}} 1}}, do: {{Code|k {{=}} #tab_linia}}, gdzie: {{Code|#tab_linia}} {{Patrz|#tab_linia}}, jest to długość linii, tzn. liczba elementów numerowanych tablicy, tzn. od 1 do zwyż aż do apotkania najbliższej przerwy lub końca. Wtedy dla pojedyńczej literacji mamy: {{Code|tab_linia[k]}} {{Patrz|tab_linia[k]}}.
Iterujemy po kodach dla linii: {{Code|tab_linia[k]}} {{LinkPatrz|tab_linia[k]}}, przy pomocy funkcji: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} {{Patrz|p.IteratorSzablonowyZakodowanegoTekstu}}, iteratorem: {{Code|iterator2}} {{Patrz|iterator2}}.
Inicjujemy zmienną: {{Code|tab_nieobslugiwane {{=}} nil}}, następnie iterujemy: {{LinkPatrz|iterator2}}, uzyskując w każdej iteracji: {{Code|szablon}} {{LinkPatrz|szablon}}, {{Code|obiekt}} {{LinkPatrz|obiekt}}, i {{Code|kod}} {{LinkPatrz|kod}}.
Gdy mamy do czynienia: {{Code|SZABLON}}, lub: {{Code|LINKW}}, albo: {{Code|LINKZ}}, wtedy dla elementów tego pierwszego bierzemy tablicę: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}, dla elementu: {{Code|nazwa_szablonu}} {{LinkPatrz|nazwa_szablonu}}.
Jeżeli ten element: {{Code|tabela_spisu}}, istnieje, element pierwszy: {{Code|tabela_spisu[1]}}, jest równy wartości {{Code|true}}, wtedy mamy do czynienia z szablonem {{s|SpisPozycja}}. Jej element: {{Code|tabela_spisu["numer_link"]}}, istnieje i jest równy: {{Code|tyt}} {{Patrz|tyt}}. Iterujemy po kluczach i jego wartościach tego szablonu i sprawdzamy, który element jest równy właśnie tej wartości, a jeżeli jest taki, to dla elementów nie równych niemu, a właściwie w jego wartości iterujemy po kodach funkcją: {{LinkPatrz|p.IteratorSzablonowyZakodowanegoTekstu}}, dla tej wartości, w ten sposób zbieramy tablicę wielowymiarową najpierw po: {{Code|obiekt}} {{LinkPatrz|obiekt}}, póżniej po: {{Code|kod}}, {{LinkPatrz|kod}}, którą nazwiemy: {{Code|tab_nieobslugiwane}} {{Patrz|tab_nieobslugiwane}}, którego każda jej wartość jest równa {{Code|true}}. Ta tablica mówi dla jakich elementów ma nie zbierać w tablicy elementów w głównej tablicy rozdziałów i jego artykułach.
Dla elementu {{Code|tyt}} {{LinkPatrz|tyt}} tablicy parametrów przedrostek listy {{Code|przedrostek_listy}} ustawiamy na pusty, i liczmy numerację {{Code|tekstowy_przedrostek}} i zmienną {{Code|szablon}} {{LinkPatrz|szablon}} i ustawiamy zmienną {{Code|przerwij}} {{Patrz|przerwij}} na {{Code|true}}, aby dla tego szablonu nie zbierać elementów w tablicy rozdziałów i jego artykułów.
W przypadku przeciwnym dla: {{Code|tabela_spisu}}, gdy ma wartość {{Code|false}}, wtedy mamy do czynienia z funkcją: {{s|SpisZw}}. Dla niej liczymy: {{Code|przedrostek_listy}}, którą ustawiamy na pustą wartość. A: {{Code|tekstowy_przedrostek}}, liczmy uzyskując parametr o kluczu: {{Code|tabela_spisu["numer"]}}, którym jest parametr o numerze: {{Code|1}}, i {{Code|szablon}} {{LinkPatrz|szablon}}, który liczmy z parametrów szablonu o kluczu {{Code|tabela_spisu["link"]}}, którym jest numer {{Code|2}}. Ustawiamy tutaj zmienną: {{Code|}} {{LinkPatrz|przerwij}}, na wartosć {{Code|true}}.
====== {{Śródtytuł|CzyObslugiwane}}{{Code|CzyObslugiwane}} ======
Funkcja sprawdzająca, które elementy są obsługiwane, jeśli istnieje tablica: {{Code|tab_nieobslugiwane}} {{LinkPatrz|tab_nieobslugiwane}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local CzyObslugiwane=function()...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = Brak parametrów. | komórka1 = tak
}}
====== Dalszy opis funkcji ======
; Uwzględnianie tablicy, reprezentujące artykuł w rozdziale, wstawiany do tablicy danego rozdziału{{dk}}
Sprawdzany jest warunek:
<syntaxhighlight lang="lua">
if((--[[wliczaj_artykuly_tego_rozdzialu]] true)and(not przerwij)and((not tab_nieobslugiwane)or(CzyObslugiwane())))then
</syntaxhighlight>
Jeżeli jest on spełniony, wtedy wywołujemy funkcję: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}, później dla:
<syntaxhighlight lang="lua">
if((not czy_obslugiwane)and(not numer_rodzaju_artykulu_poprz))then
</syntaxhighlight>
Sprawdzamy, czy jest zebrana licencja z autorem według zmiennej: {{Code|licencja_z_autorem}} {{Patrz|licencja_z_autorem}}, i sprawdzamy, czy: {{Code|szablon}} {{LinkPatrz|szablon}}, jest wnetrzem szablonu, jeżeli tak, to ona przyjmuje wartość odpowiadająca prawdziwej, przeciwnie ma fałszywą.
Jeżeli ten pierwszy warunek jest niespełniony, to tylko liczymy to samo coostatnio.
; Szablony licencji, i jego parametry, uwzględnianie jego tylko raz ca całą książkę, mieszcząca się w artykule głównej książki{{dk}}
Następnie dla warunku, który musi być spełniony:
<syntaxhighlight lang="lua">
if((not numer_rodzaju_artykulu_poprz)and(not przerwij)and(link_szablon)and((not tab_pozycja_elementow_w_spisie_rzeczy)or(not tab_pozycja_elementow_w_spisie_rzeczy[1]))and(czy_artykul_korzystany)and(licencja_z_autorem))then
</syntaxhighlight>
Sprawdzamy szablony licencji, takich jak: {{s|Licencja}}, według tablicy: {{Code|{{sr|#p.szablony_licencji|p=StronicowyParser/obiekty}}}}.
Dla parametrów szablonu, liczymy jego parametry o kluczach, tzn.: {{Code|Autor}} {{Patrz|Autor}}, {{Code|Ukończone szkoły}} {{Patrz|Ukończone szkoły}}, {{Code|Email}} {{Patrz|Email}}, {{Code|Dotyczy}} {{Patrz|DotyczyDotyczy}}, {{Code|Licencjonowanie}} {{Patrz|Licencjonowanie}}, {{Code|Umowa prawna}} {{Patrz|Umowa prawna}} i {{Code|Konsekwencje}} {{Patrz|Konsekwencje}}, którego wartości przydzielamy do odpowiednich zmiennych. Każdą z tych zmiennych kompletujemy funkcją: {{Code|{{sr|#p.DekodowanieTekstuDekodowanieTekstu|p=StronicowyParser/Potrzebne}}}}, poprzez zwracaną przez nią funkcję, w której jest wykorzystywana funkcją: {{LzLua|frame:preprocess}}, do rozwijania. A dla elementu istniejącego: {{Code|Autor}}, piszemy zmienną: {{Code|licencja_z_autorem}} {{LinkPatrz|licencja_z_autorem}}, któremu przydzielamy wartość {{Code|false}}, co spowoduje, że nie będziemy analizowali jeszcze raz innego szablonu licencji.
Te zmienne tego szablonu zbieramy natomiast w tablicy: {{Code|tabela_licencji_spisu_tresci}} {{Patrz|tabela_licencji_spisu_tresci}}, dane dotyczące licencji, więc:
<syntaxhighlight lang="lua">
tabela_licencji_spisu_tresci={autor, szkoly, email, dotyczy, licencjonowanie, umowa_prawna, konsekwencje};
</syntaxhighlight>
Co później przerywamy pętle po: {{Code|iterator2}} {{LinkPatrz|iterator2}}, instrukcją: {{Code|break}}.
==== Dalszy opis funkcji {{nobold|{{LinkPatrz|opis funkcji-ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}}} ====
Ściągamy tekst, tabelę bazy i tabelę parametrów strony o nazwie: {{Code|nazwa_modulu}}, przy pomocy funkcji: {{Code|{{sr|#p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony|p=StronicowyParser/Tekst}}}}, według:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=nil;
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
return nil;
end,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Uruchamiamy funkcję: {{Code|__FUNKCJA_ZBIERANIA_DANYCH}} {{LinkPatrz|__FUNKCJA_ZBIERANIA_DANYCH}}, jeżeli istnieje.
Dalej wywołujemy funkcję: {{Code|{{sr|#p.IterTekst|p=StronicowyParser/Rozdziały}}}}, w celu znalezienia tekstu: {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}}, i iteratora: {{Code|iterator}} {{Patrz|iterator}}, po napisach wprowadzenia tekstu rozdziałów i ich zawartości rozdziałów i na podstawie:
<syntaxhighlight lang="lua">
local iterator,tekst_rozwiniety_calego_artykulu=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,true,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,
__FUNKCJA, ---- funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adresu szablonu, określa i zawraca jego zawartość;
__FUNKCJA2, ---- funkcja operująca na przygotowanej zawartości napisu wprowadzenia tekstu i tekście napisu wprowadzenia tekstu (rozdziału);
__FUNKCJA_ANALIZA_SPISU ---- funkcja do analizy i modyfikacji tekstu (może zwracać wartość: nil) przed samym kodowaniem, jeżeli tekst jest w ogóle jest taki, a jeśli nie, ta funkcja wtedy nie jest uruchamiana, funkcja ta bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: IterTekst, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: SpisTreści, co jest uwidocznione w module: Moduł:StronicowyParser/SpisTreści;
);
</syntaxhighlight>
Opis parametrów zwracanych:
{{OpisParametrów
| 1 = {{Code|iterator}} {{Patrz|iterator-IterTekst}} | _1 = Iterator po rozdziałach i jego zawartościach.
| 2 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu-IterTekst}} | _2 = Tekst przetworzony rozdziału.
}}
Odczytujemy tabelę: {{LinkPatrz|p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu}} i dalej: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}, o definicji:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={
["spis treści"]=true,
["spis tresci"]=true,
["spis rzeczy"]=true,
};
</syntaxhighlight>
Robimy kopię tych tabel i przyłączamy do metatabeli: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, przy pomocy funkcji: {{LzLua|setmetatable}}, aby nie odrózniać tych rozdziałów ze względu na wielkość liter i polskie znaki.
Inicjiujemy zmienną: {{Code|numer_rozdzialu_w_ksiazce}} {{LinkPatrz|numer_rozdzialu_w_ksiazce}}, wartością: {{Code|1}}, aby zbierać po kolei artykuły ze poszczególnego pojedynczego spisu treści.
Ustawiamy maksymalny rozmiar rozdziału zerowego na {{Code|50}}, w zmiennej: {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{Patrz|maksymalny_rozmiar_rozdzialu_zerowego}}, według:
<syntaxhighlight lang="lua">
local maksymalny_rozmiar_rozdzialu_zerowego=50;
</syntaxhighlight>
===== {{Śródtytuł|AnalizaRozdzialu}}{{Code|AnalizaRozdzialu}} =====
Jest to funkcja do zbierania danych z pojedynczgo rozdziału o pewnej linii, inicjowana z jego parametrami, także tekstem rozdziału.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function AnalizaRozdzialu(rozdzial,linia_rozdzialu,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|rozdzial}} {{Patrz|rozdzial}} | _1 = Jest to tekst rozdziału.
| 2 = {{Code|linia_rozdzialu}} {{Patrz|linia_rozdzialu}} | _2 = Jest to linia z rozdziałem.
| 3 = {{Code|text}} {{Patrz|text}} | _3 = Jest to tekst rozdziału o pewnym napisie wprowadzenia tekstu.
| 4 = {{Code|poziom_rozdzialu}} {{Patrz|poziom_rozdzialu}} | _4 = Jest to poziom danego rozdziału.
| 5 = {{Code|poczatek_rozdzialu}} {{Patrz|poczatek_rozdzialu}} | _5 = Początek pozycji listy rozdziałów mechanizmu {{Strong|MediaWiki}}.
| 6 = {{Code|numeracja}} {{Patrz|numeracja}} | _6 = Numeracja rozdziału.
| 7 = {{Code|czy_rozdzial_centrowany}} {{Patrz|czy_rozdzial_centrowany}} | _7 = Czy dany rozdział jest centrowany.
}}
====== Tabela artykułów rozdziałów i w nich artykułów oraz jego poszczególnych ======
Tworzymy tabelę: {{Code|tabela_artykulow}} {{LinkPatrz|tabela_artykulow}}, jeżeli nie istnieje, z pustą tablicą, a później dla elementu: {{Code|numer_rozdzialu_w_ksiazce}} {{LinkPatrz|numer_rozdzialu_w_ksiazce}}, jeżeli też go nie ma, to też pustą tablicą. Dalej liczymy napis wprowadzenia tekstu rozdziału dodatniego funkcją: {{LinkŚródtytuł|p.AnalizaNapisuWprowadzeniaTekstu}} i uwzględniamy je w tabeli rozdziałów dla danego rozdziału pod wartością: {{Code|tabela_rozdzial_artykulow[1]}}, w sposób:
<syntaxhighlight lang="lua">
tabela_rozdzial_artykulow[1]={rozdzial_na_tekst,{poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany,},rozdzial,};
</syntaxhighlight>
Dalej wprowadzamy zmienną: {{Code|czy_spis_rzeczy_napis_wprowadzenia_tekstu}} {{Patrz|czy_spis_rzeczy_napis_wprowadzenia_tekstu}}, mówiącą teraz rozpatrujemy rozdziały i artykuły w ramach spisu treści o nagłówkach typu: {{Code|Spis treści}}, czy: {{Code|SPIS RZECZY}}. Jeżeli wyszliszmy poza to, to ta zmienna wtedy przyjmuje wartość fałszywą, a definicja inicjacji tej zmiennej jest:
<syntaxhighlight lang="lua">
local czy_spis_rzeczy_napis_wprowadzenia_tekstu=(poziom_rozdzialu)and(not czy_jest_spis_tresci)and(not dalej_nie_rozwazaj_spis_tresci)and(jakie_spisy_tresci[spreparowany_uzyskany_tekst_rozdzialu]);
</syntaxhighlight>
Gdzie:
{{OpisParametrów
| 1 = {{Code|poziom_rozdzialu}} | _1 = Jak w: {{LinkPatrz|poziom_rozdzialu}}.
| 2 = {{Code|czy_jest_spis_tresci}} {{Patrz|czy_jest_spis_tresci}} | _2 = Czy jesteśmy w spisie treści.
| 3 = {{Code|dalej_nie_rozwazaj_spis_tresci}} {{Patrz|dalej_nie_rozwazaj_spis_tresci}} | _3 = Zmienna mówiąca, że teraz jesteśmy poza spisem treści.
}}
====== Kiedy uwzględniamy artykuły rozdziału ======
Jeżeli jesteśmy w spisie, to zawsze są uwzględniane artykuły rozdziału, bo jest ustawiona zmienna: {{Code|wliczaj_artykuly_tego_rozdzialu}} {{LinkPatrz|wliczaj_artykuly_tego_rozdzialu}}, na {{Code|true}}, a poza na {{Code|nil}}.
Funkcja jest przyszykowana jest dla jednego spisu treści, o ściśle określonym specjalnym napisie wprowadzenia tekstu, w danym spisie na stronie.
====== Iterator linii artykułu spis treści ======
Uruchamiamy iterator używając funkcji lokalnej: {{LinkŚródtytuł|iteratorTekstuNaglowka}}, według wywołania:
<syntaxhighlight lang="lua">
local iterator=iteratorTekstuNaglowka();
</syntaxhighlight>
Ustawiamy zmienną: {{Code|wliczaj_artykuly_tego_rozdzialu}} {{LinkPatrz|wliczaj_artykuly_tego_rozdzialu}}, aby wliczał lub nie, pewne artykuły rozdziału według:
<syntaxhighlight lang="lua">
local wliczaj_artykuly_tego_rozdzialu=((wliczaj_artykuly_tego_rozdzialu)or(not jakie_nie_rozdzialy[rozdzial]));
</syntaxhighlight>
Iterujemy otrzymanym ostatnio iteratorem, uzyskując kolejno zmienne: {{Code|przedrostek_listy}} {{LinkPatrz|przedrostek_listy}}, {{Code|tekstowy_przedrostek}} {{LinkPatrz|tekstowy_przedrostek}}, {{Code|linia}} {{LinkPatrz|linia}}, i {{Code|w_rozdziale}} {{LinkPatrz|w_rozdziale}}.
; Kiedy rozdziałów zerowych nie liczymy jako je{{dk}}
Dla rozdziałów, które nie sa poziomami z listą, sprawdzamy, czy to jest rozdział zerowy przy pomocy funkcji: {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|p=StronicowyParser/Rozdziały}}}}, i sprawdzamy, czy on przekracza rozmiar: {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}, jeżeli jest tym rozdziałem i nie przekracza pewnego rozmiaru, to to jest rozdział traktowany jako zerowy niepomijany rozdział zerowy, wtedy ustawiamy zmienną: {{Code|nie_pomijaj_tego_rozdzialu}} {{Patrz|nie_pomijaj_tego_rozdzialu}}, na {{Code|true}}.
; A jeśli to są rozdziały z listy zaczynające się od dwukropka w linii{{dk}}
Gdy taki rozdział nie pretenduje do zerowych, to sprawdzamy funkcją: {{Code|{{sr|#p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu|p=StronicowyParser/Rozdziały}}}}, czy ten rozdział pominąć, a jeżeli ona przyjmuje wartość odpowiadającej fałszywej, czyli {{Code|false}}, wtedy ustawiamy zmienną: {{Code|nie_pomijaj_tego_rozdzialunie_pomijaj_tego_rozdzialu}} {{LinkPatrz|nie_pomijaj_tego_rozdzialu}}, na taką samą wartość jak poprzednio.
; Inne rozdziały{{dk}}
Dla rozdziałów innych ta wartość przyjmuje postać {{Code|false}}.
; Rozdziały jednak nie pomijane{{dk}}
Dla rozdziałów, które nie są pomijane, wtedy zmienna: {{Code|nie_pomijaj_tego_rozdzialu}} {{LinkPatrz|nie_pomijaj_tego_rozdzialu}}, przyjmuje wartość {{Code|true}}, w takim przypadku wchodzimy do funkcji: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstuZgodnieZJegoSzablonowymiElementami|p=Szablonowe}}}}, wtedy dla linków szablonowych sprawdzamy, czy to są linki określone tablicami: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy}}, {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}} lub ewentualnie funkcją: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}.
Innym sposobem sprawdzania, czy to jest szablon linkowy jest tablica: {{Code|{{sr|#p.szablony_kompletowania_stron_woluminu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_kompletowania_stron_woluminu}}, lub {{Code|{{sr|#p.szablony_licencji|p=StroncowyParser/obiekty}}}} {{LinkPatrz|p.szablony_licencji}}.
Jeżeli to jest szablon linków, wtedy jest zwracana wartość: {{Code|return true,obiekt,kod}}, w przeciwnym wypadku: {{Code|return false,obiekt,kod}}.
Innym sposobem liczenia, czy to jest link, to wtedy może być to link normalny: {{Code|LINKW}}, który można sprawdzić funkcją: {{Code|{{sr|#p["CzyLinkWewnętrzny"]|p=Specjalne}}}}, wtedy jest zwracane {{Code|return true,obiekt,kod}}.
Link też może być zewnętrzny, wtedy to jest: {{Code|LINKZ}}, wtedy funkcja zwraca wartość: {{Code|return true,obiekt,kod}}.
; Kiedy analizujemy artykuły rozdziału{{dk}}
Następnie dla linii: {{Code|linia_rozwazana}} {{LinkPatrz|linia_rozwazana}}, co na podstawie tego liczymy, czy daną linię nie uwzględnić, w obliczeniach według schematu:
<syntaxhighlight lang="lua">
local czy_linia_uwzgledniana=mw.ustring.match(linia_rozwazana,"^%s*%-%-+(.*)%-%-+%s*$");
local czy_linia=((not czy_linia_uwzgledniana)and(mw.ustring.match(linia_rozwazana,"^%s*[%-%+%=%~]+.*$")
or ((#przedrostek_listy==0)and((mw.ustring.match(linia_rozwazana,"!"))and(mw.ustring.match(linia_rozwazana,"[^!]%s*$"))))
or mw.ustring.match(linia_rozwazana,"^%s*<")) or nil);
</syntaxhighlight>
Co następnie jest ustawiana {{Code|nowa_linia}} {{LinkPatrz|nowa_linia}} na wartość {{Code|false}}.
; Warunek analizowania artykułów rozdziałów{{dk}}
W obliczeniach raz uwzględniamy funkcję: {{LinkŚródtytuł|AnalizaLiniiObiekty}}, w ostatniej omawianej pętli, schematycznie:
<syntaxhighlight lang="lua">
if(not czy_linia)then AnalizaLiniiObiekty(linia_rozwazana);end;
</syntaxhighlight>
===== Dalsza część funkcji {{nobold|{{LinkPatrz|opis funkcji-ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}}} =====
Bierzemy zakodowany tekst: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu-IterTekst}}, i po nim iterator: {{Code|iterator}} {{LinkPatrz|iterator-IterTekst}}, wtedy iterujemy po parametrach:
<syntaxhighlight lang="lua">
local parsuj_rozdzialami=nil; ---- ta zmienna służy na wypadek, gdy by nie była żadnych rozwazanych rozdziałów;
for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do
---- za każdym razem jest uruchamiana funkcja: AnalizaRozdzialu, przy rozważanym rozdziale;
AnalizaRozdzialu(rozdzial_tab[1],rozdzial_tab[2],text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany);
---- oznacz zmienną: parsuj_rozdzialami, wartością; true, a póżniej jąnie inicjuj;
if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end
end;
</syntaxhighlight>
Parametry zwracane przez iterator: {{Code|iterator}} {{LinkPatrz|iterator-IterTekst}}:
{{OpisParametrów
| 1 = {{Code|rozdzial_tab}} {{Code|{{=}}}} {{Code|<nowiki>{ [1] = rozdzial, [2] = linia_rozdzialu, }</nowiki>}} | _1 = tabela składająca się z dwóch elementów:
| 2 = Pod elementy tabeli: | nagłówek2 = tak
| 3 = {{Code|rozdzial}} | _3 = Jak w: {{LinkPatrz|rozdzial}}.
| 4 = {{Code|linia_rozdzialu}} | _4 = Jak w: {{LinkPatrz|linia_rozdzialu}}.
| 5 = Inne parametry: | nagłówek5 = tak
| 6 = {{Code|text}} | _6 = Jak w: {{LinkPatrz|text}}.
| 7 = {{Code|poziom_rozdzialu}} | _7 =Jak w: {{LinkPatrz|poziom_rozdzialu}}.
| 8 = {{Code|poczatek_rozdzialu}} | _8 = Jak w: {{LinkPatrz|poczatek_rozdzialu}}.
| 9 = {{Code|numeracja}} | _9 = Jak w: {{LinkPatrz|numeracja}}.
| 10 = {{Code|czy_rozdzial_centrowany}} | _10 = Jak w: {{LinkPatrz|czy_rozdzial_centrowany}}.
}}
Gdy nie napotkano żadnego rozważanego rozdziału, wtedy: {{Code|parsuj_rozdzialami}}, przyjmuje wartość {{Code|nil}}, w takim razie uruchamiana jest funkcja:
<syntaxhighlight lang="lua">
if(not parsuj_rozdzialami)then
AnalizaRozdzialu("Spis treści",nil,tekst_rozwiniety_calego_artykulu,nil,nil,nil,nil);
end;
</syntaxhighlight>
Funkcja zwraca parametry inaczej, gdy artykuł, do którego należy książka jest korzystany, a inaczej, jeśli nie. W takim razie możemy zwracać na dwa sposoby:
<syntaxhighlight lang="lua">
if(czy_artykul_korzystany)then
return tabela_artykulow,tabela_licencji_spisu_tresci,przekierowanie_spisu_tresci;
else
return tabela_artykulow,nil,przekierowanie_spisu_tresci;
end;
</syntaxhighlight>
Przy artykułach korzystanych, co jest określone zmienną: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, tabelę: {{Code|tabela_licencji_spisu_tresci}} {{LinkPatrz|tabela_licencji_spisu_tresci}}, przy jego spisach treści w książkach, do której należy ten artykuł, zwracana jest jako wartość przeważnie jako nierówna {{Code|nil}}, a dla artykułów z innych książkach, ta wartość już jest taka, tzn. przyjmuje wartość {{Code|nil}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
0dhsja8odcf1aqb13pithdsz8ae9buc
558343
558339
2026-10-02T19:02:57Z
Persino
2851
/* Opis funkcji: {{nobold|{{Patrz|opis funkcji-ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}}} */
558343
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SpisTreści}}|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 lokalne ==
=== {{Śródtytuł|Ile}}{{Code|Ile}} ===
Funkcja liczy liczbę elementów we wszystkich podtabelach tabeli {{Code|tabela_rozdzial_artykulow2}} {{Patrz|tabela_rozdzial_artykulow2}}, licząc od drugiej tabeli, po pierwszej tabeli mieści się podtabela z informacjami o rozdziale, w której znajdują się artykuły określone dalszymi podtabelami.
Tymi podtabelami są od {{Code|2}} do {{Code|7}}, czyli {{Code|6}} tabelek, w których są artykuły, które zaliczamy do kategorii wliczane, tzn. one nie znajdują się w takich rozdziałach przetłumaczonych na małą literę, ale przedtem na nią była działana funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, usuwając z nich odstępy na końcach, w tym dolne myślniki, a wewnątrz zamieniając kolejne dolne myślniki i spacje na jedną spacją.
Metafunkcja, w metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, w: {{Code|{{ld2|Parametry}}}}, aby porównać to z tablicą {{Code|{{sr|#p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu}}, by zaliczyć je do tego typu:
<syntaxhighlight lang="lua">
p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu={
["licencja"]=true,
["inne"]=true,
["bibliografia"]=true,
["zobacz też"]=true,
["linki zewnętrzne"]=true,
};
</syntaxhighlight>
Twew rozdziały należą do kategorii rozdziałów, w których artykuły są pomijane przez: '''{{ld|StronicowyParser|Stronicowy parser}}''', ale jeżeli one należą do rozdziału spisu treści lub rzeczy, to tam jednak nie są takie, inaczej jest poza.
A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}.
A ta powyższa tabela mieści się: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a jego opis w: {{Code|{{sr|#p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu|p=StronicowyParser/obiekty}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow2)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|numer_rodzaju_artykulu}} | _1 = Numer podtabeli elementtu, do którego wsadzamy element.
| 2 = {{Code|tabela_rozdzial_artykulow2}} | _2 = Tabela wraz podtabelami, od {{Code|1}} do {{Code|13}}, ale liczenie jest od {{Code|2}}.
}}
=== {{Śródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}{{Code|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}} ===
==== Opis pobieżny funkcji ====
Funkcja do wstawiania elementów z ogólnej tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}, za pomocą funkcji wstawianej jako parametr: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{Patrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, do odpowiedniej pozycji artykularnej od: {{Code|2}} do {{Code|13}}, a pozycja {{Code|1}}, to pozycja rozdziałowa, ona jest określana przez zmienną: {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{Patrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, a pozycja, którą wsadzamy to: {{Code|tab_stare}} {{Patrz|tab_stare}}.
Funkcja zwraca pozycje:
<syntaxhighlight lang="lua">
return numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych;
</syntaxhighlight>
Opis tych parametrów funkcji:
{{OpisParametrów
| 1 = {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} | _1 = Jest to wartość zwrócona przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}}, w odróżnieniu od: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, jest mniejszy o jeden, czyli wtedy to była a poziomie przypisywania wartość {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}},
| 2 = {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} | _2 = Pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}.
| 3 = {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} | _3 = Tablica do sprawdzania, czy artykuł z nagłówkiem, ma powtórzenie tego bez nagłówka, czyli dla tego bez tego jest inna numeracja niż z nagłówkiem, a gdy niema tego bez, to wtedy dzięki tej funkcji numeracja tak się zachowuje, jak tam by był ten element, co prawda jest tam dodawany, ale jako z informacją taką, że bz numeru ustalanym przez funkcję: {{LinkŚródtytuł|Ile}}, A przy okazji, aby tego elementu nie dodawać ponownie, to w nim jest ustalana druga zmienna na {{Code|1}}, a wcześniej była na {{Code|0}}, i dlatego ona była wtedy dodawana, a później już tak nie jest.
}}
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY,tabela_rozdzial_artykulow2,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow--[[]])...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{Patrz|self}} | _1 = Zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}}.
| 2 = {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} | _2 = Opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow2,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare);
</syntaxhighlight>
Funkcja jest wywoływana w:
<syntaxhighlight lang="lua">
numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych=WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,WsadzanieParametryDoTablicy(linia,czy_linia_uwzgledniana),tabela_rozdzial_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow);
</syntaxhighlight>
Gdzie funkcja: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, to jest: {{LinkŚródtytuł|WsadzanieParametryDoTablicy}}.
| 3 = {{Code|tabela_rozdzial_artykulow2}} | _3 = Ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow2}}.
| 4 = {{Code|tablica_artykulow_zebranych}} | _4 = Diała jak w: {{LinkPatrz|tablica_artykulow_zebranych}}.
| 5 = {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} | _5 = Jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}}.
| 6 = {{Code|szablon}} {{Patrz|szablon}} | _6 = Jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu.
| 7 = {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - | _7 = Kolejno to jest: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''' i '''nazwa książki'''.
| 8 = {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} | _8 = Jest to nazwa artykułu danego spisu treści.
| 9 = {{Code|pelna_nazwa_spisu_tresci}} {{Patrz|pelna_nazwa_spisu_tresci}} | _9 = Uchwyt do bazy kodowania tekstu strony spisu treści.
| 10 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} | _10 = Nazwa strony szablonowa, jak są wywoływane w postaci szablonowej, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}}.
| 11 = {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} | _11 = Uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 12 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _12 = Tablica bazy zapisana w postaci osobnej tablicy, a nie jej w wewnętrznej bazie, nie jak to było w postaci zmiennej {{LinkPatrz|nazwa_modulu}}, używana zamiast: {{LinkPatrz|nazwa_modulu}}.
| 13 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _13 = Tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}.
| 14 = {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} | _14 = Obiekt i kod, czyli: zmienne charakteryzujące zmienną wnętrza: {{Code|szablon}} {{LinkPatrz|szablon}}.
| 15 = {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} | _15 = Tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy.
| 16 = {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} | _16 = Tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię.
| 17 = {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} | _17 = Numeracja rozdziału, z jakim rozpoczyna się rozdział.
| 18 = {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} | _18 = Gdy link znajduje się w rozdziale dodatnim.
| 19 = {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} | _19 = Cała linia z artykułem lub artykułami, tą linią równie dobrze może być rozdział, tu chodzi o rozdział dodatni.
}}
==== Opis pobieżny funkcji {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} ====
Przedstawiamy tutaj funkcję: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, która jest opisana w punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Definicja funkcji w nagłówku:
<syntaxhighlight lang="lua">
__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow2,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare);
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tabela_rozdzial_artykulow2}} | _1 = Jak w: {{LinkPatrz|tabela_rozdzial_artykulow2}},
| 2 = {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} | _2 = Jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}},
| 3 = {{Code|tab_stare}} | _3 = Jak w: {{LinkPatrz|tab_stare}}.
}}
Ta funkcja została opisana już wcześniej.
==== Szczegółowy opis funkcji głównej ====
Uruchamiamy funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, która jest zdefiniowana w module: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}}. Wywołujemy tę funkcję:
<syntaxhighlight lang="lua">
local tab_pozycja_elementow_w_spisie_rzeczy,numer_rodzaju_artykulu,id,parametry_szablonu,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nil,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
</syntaxhighlight>
Pierwszy elementem: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest to zmienna tablicowa, która opisuje parametry artykularno-linkowe parametry, drugi: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, do której kategorii należy dany artykuł w linku, a trzeci parametr, to: {{Code|id}} {{Patrz|id}}, to zbierane są parametry linkowe z szablonu {{s|SpisTreści}}, czwarty to: {{Code|parametry_szablonu}} {{Patrz|parametry_szablonu}}, w przypadku szablonów inteligentnych linków, to są parametry wywołań tych szablonów, ostatni parametr to: {{Code|kom}} {{Patrz|kom}}, przedstawia on, jeśli {{Code|false}}, to artykuł zakwalifikowany został poprawnie do rozważań, a {{Code|true}} już nie.
To {{LinkPatrz|parametry szablonu}}, to jest tablica z trzech elementów, tzn.:
<syntaxhighlight lang="lua">
local parametry szablonu={tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,};
</syntaxhighlight>
Elementy tablicy:
{{OpisParametrów
| 1 = {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} | _1 = Tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych.
| 2 = {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} | _2 = To jest nazwa uzyskanego szablonu linków inteligentnych lub nie.
| 3 = {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} | _3 = Tabela modyfikatorów rozkładanego szablonu.
}}
Jeśli parametr: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, istnieje, to tworzona jest z niego taka sama wersja lub przy nieistnnieniu parametru {{LinkPatrz|wliczaj_artykuly_tego_rozdzialu}}, do niego jest dodawana jest liczba {{Code|6}}. W ten sposób możemy zbierać artykuły książki i inne,ktore należą do pewnych rozdziałów i które nie należą.
===== {{Śródtytuł|ParametrPierwszy}}{{Code|ParametrPierwszy}} =====
Funkcja zbierające dane z {{Code|tab_artykul}} {{Patrz|tab_artykul}}, którego to jest czteroelementowa tablica, dotycząca danego artykułu. Drugim parametrem: {{Code|czy_niedozwolone}} {{Patrz|czy_niedozwolone}}, jest zmienna logiczna mówiąca, czy wskazać w nazwie artykułu, czy są dozwolone znaki, jest to sprawdzenie według wyrażenia regularnego: {{Code|<nowiki>[|<>{}%[%]]</nowiki>}} {{Patrz|wzor_znaki_niedozwolone}} na podstawie funkcji {{LzLua|mw.ustring.match}}, czyli: {{Code|znaki_niedozwolone}} {{Patrz|znaki_niedozwolone}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
ParametrPierwszy(tab_artykul,czy_niedozwolone)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tab_artykul}} | _1 = Jak w: {{LinkPatrz|tab_artykul}}.
| 2 = {{Code|czy_niedozwolone}} | _2 = Jak w: {{LinkPatrz|czy_niedozwolone}}.
}}
Gdzie: {{Code|tab_artykul}} {{LinkPatrz|tab_artykul}}, który jest pierwszym parametrem przyjmowanym przez funkcję, jest zdefiniowany jako czteroelementowa tablica, którą przypisujemy do czterem osobnych parametrów:
<syntaxhighlight lang="lua">
local artykul=tab_artykul[1];
local parametry=tab_artykul[2];
local naglowek=tab_artykul[3];
local tablica_przekierowania=tab_artykul[4];
</syntaxhighlight>
Jeżeli, któreś z parametrów z: {{LinkPatrz|tab_artykul}}, tzn. element jego {{Code|2}}-gi i {{Code|3}}-ci, istnieje, to układana jest trzyelementowa tablica z elementów od {{Code|1}} do {{Code|3}}, z dodatkowym elementem: {{Code|<nowiki>["LINK"] = true</nowiki>}}, a element czwarty to jest: {{Code|tablica_przekierowania}} {{Patrz|tablica_przekierowania}}, a jeżeli te dwa elementy, nie licząc czwartego, wcale nie istnieją, wtedy jest tworzony łańcuch znakowy z tego pierwszego elementu. Tak tworzymy, nową wersję tablicy: {{Code|tab_artykul}} {{Patrz|tab_artykul-nowa wersja}}, lub łańcuch znakowy, w postaci:
<syntaxhighlight lang="lua">
tab_artykul=((artykul)and(parametry or naglowek))and{[1]=artykul,[2]=parametry,[3]=naglowek,["LINK"]=true,} or artykul;
</syntaxhighlight>
Funkcja zwraca trzy parametry, tzn. parametry: {{LinkPatrz|tab_artykul-nowa wersja}}, {{LinkPatrz|znaki_niedozwolone}} i tablicę przekierowania: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}:
<syntaxhighlight lang="lua">
return tab_artykul,znaki_niedozwolone,tablica_przekierowania;
</syntaxhighlight>
===== Rozwijanie nazwy linku artykułu =====
Do rozwijania nazwy linku służy funkcja: {{Code|{{sr|#p.DekodowanieTekstuNazwLinku|p=StronicowyParser/Pomocne}}}} {{Patrz|p.DekodowanieTekstuNazwLinku}}, pod względem szablonowym i nie tylko.
Funkcja rozwija tą nazwę tym: {{LzLua|frame:preprocess}}, jedynie nie rozwija szablonów stronicowego parsera, podane podkategoriach w kategorii: {{Code|{{lk2|Szablony stronicowe}}}}, za pomocą odpowiednich metod, bo to by wywołało nieskończoną pętle, i dlatego takie szablony są zamieniane tylko na wywołania symboliczne.
==== Dalszy opis funkcji nadrzędnej przy istnieniu parametrów linkowych normalnych, czy szablonowych (linków inteligentnych) ====
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|{{=}}}} {{Code|1}} =====
Tworzony jest numerek: {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{Patrz|numer_rodzaju_artykulu_w_podreczniku}}, który w stosunku do: {{LinkPatrz|numer_rodzaju_artykulu}}, jest większy o jeden, a schemat tej operacji:
<syntaxhighlight lang="lua">
local numer_rodzaju_artykulu_w_podreczniku=numer_rodzaju_artykulu+1;
</syntaxhighlight>
====== Tworzenie tablicy: {{nobold|{{Code|tablica_artykulow_zebranych}}}} ======
Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną wstępnie w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}.
; Tablica{{dk}} {{nobold|{{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}}}}, nie jest tablicą{{dk}}
Gdy element pierwszy: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, nie jest tablicą, wtedy jedynie liczymy, czy ona ma znaki niedozwolone: {{Code|wzor_znaki_niedozwolone}} {{LinkPatrz|wzor_znaki_niedozwolone}}, a póżniej wiedząc ten element, który jest aktualną nazwą artykułu kiążki, tworzymy tabelę {{Patrz|tablica_artykulow_zebranych-imicjacja}}:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,};
</syntaxhighlight>
; Gdy element{{dk}} {{nobold|{{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}}}}, jest łańcuchem znaków{{dk}}
Wpierw liczone są parametry z wywołania, z opcją, czy ma liczyć, czy nazwa artykułu ma znaki niedozwolone, z funkcji: {{LinkŚródtytuł|ParametrPierwszy}}:
<syntaxhighlight lang="lua">
tab_pozycja_elementow_w_spisie_rzeczy[1],znaki_niedozwolone,tablica_przekierowania=ParametrPierwszy(tab_pozycja_elementow_w_spisie_rzeczy[1],true);
</syntaxhighlight>
; Inna książka - atrybut, tzn. czy artykuł wychodzi poza daną książkę, lub jego przekierowanie w niej kieruje na stronę poza nią{{dk}}
Dalej sprawdzane jest, czy książka przyjmuje atrybut, tzn.: '''czy inna książka''', wtedy liczymy to z kodu z tablicy przekierowania: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, jeżeli jej wartość istnieje, tzn.: {{Code|czy_inna_ksiazka}} {{Patrz|czy_inna_ksiazka}}:
<syntaxhighlight lang="lua">
local czy_inna_ksiazka=tablica_przekierowania and tablica_przekierowania[1] and tablica_przekierowania[1][5] or nil;
</syntaxhighlight>
; Tablica przekierowania artykułu względem bieżącej książki{{dk}}
Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, który przedstawia, czy to jest artykuł bieżącej książki, którego przekierowanie kieruje, wtedy ten parametr ma wartość {{Code|true}}, a gdy adres przekierowania wskazuje na inną książkę, wtedy {{Code|false}}. Jeśli ten parametr ma wartość fałszywą, wtedy jest sprawdzane, czy jest tablicą w: {{Code|czy_tablica}} {{Patrz|czy_tablica}}, według:
<syntaxhighlight lang="lua">
czy_tablica=parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1]);
</syntaxhighlight>
Lub w przeciwnym wypadku liczymy parametry artykularne z tablicy przekierowania: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek przekierowania, w tej tablicy, istnieje, wtedy parametr: {{Code|czy_tablica}} {{LinkPatrz|czy_tablica}}, przyjmuje wartość {{Code|true}}, w przeciwnym wypadku wartość fałszywą.
Gdy ten element nie jest tablicą, to tworzona jest nazwa pełna artykułu: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}} i umieszczana w tablicy: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z podobną tablicą początkową jak w poprzednim przypadku jego tworzenia, czyli jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}.
; Tablica zebranych artykułów i porównywanie artykułu z nagłówkiem, czy istnieje wcześniejszy artykuł bez niego{{dk}}
Gdy element jest jednak tablicą, też jest liczona pełna nazwa artykułu (gdy nazwa artykułu przekierowania istnieje, wtedy ona jest liczona z: {{Code|tablica_przekierowania[2]}}, w przeciwnym wypadku, jeśli element: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}}, jest tablicą, wtedy liczymy ją z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1][1]}}, w innym wypadku z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}}), a z niej liczymy tablicę: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}, w przypadku pierwszego artykułu nienagłówkowego.
A w przypadku pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie, artykuł poprzedni nie istnieje, a więc tego tam nie ma tam w takim przypadku.
Gdy funkcja napotkała artykuł o takim samym stronie, co poprzednio, to do wartości początkowej, bez definiowania jeszcze raz tej samej tablicy, jest ustawiane odpowiednio:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych[3]=true;
</syntaxhighlight>
Co informuje, że artykuł jest ten sam, tylko inny nagłówek niż poprzedni, a poprzedni pierwszy jest bez niego.
====== Rozwijanie nazwy linku ======
Kompletowany jest drugi element tablicy: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkPatrz|p.DekodowanieTekstuNazwLinku}}. Dalej z tej nazwy są usuwane znaki specjalne według funkcji: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, z modułu: {{Code|{{ld2|Specjalne}}}}. Następnie działamy funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, które końcowe spacje usuwa, a wewnętrz powtarzające zamienia kolejne na jedną spację.
====== Dodawanie do tablicy problemów, jeśli nastąpił problem ze znakami niedozwolonymi ======
A między czasie, gdy mamy niedozwolone znaki: {{Code|znaki_niedozwolone}} {{LinkPatrz|znaki_niedozwolone}}, za pomocą funkcji pytającej sprawdzamy, czy element inny zgłoszeniowy został dodany do tablicy problemów: {{Code|{{sr|#p.CzyJestTakiProblemowyElement|p=StronicowyParser/Problemy}}}}, aż w końcu dodajemy ten problem, jeśli go nie ma przy pomocy funkcji: {{Code|{{sr|#p.UstawTakiProblemowyElement|p=StronicowyParser/Problemy}}}}.
====== {{Śródtytuł|inicjacja_i_kompletowanie_zmiennych}}Ustalanie nazwy jednostki, kompletowanie linii artykułów i inicjowanie pozycji, w tabeli zebranych elementów, w tabeli zebranych elementów ======
Ustalamy nazwę jednostki z funkcji: {{Code|{{sr|#p.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem|p=StronicowyParser/Potrzebne}}}}, i inicjujemy tą wartością, czyli: {{Code|nazwa jednostki}} {{Patrz|nazwa jednostki}}, wartość starą: {{Code|stara_nazwa_jednostki}} {{Patrz|stara_nazwa_jednostki}}, według:
<syntaxhighlight lang="lua">
---- Piszanie pełnej nazwy jednostki bez parametrów i nagłówka;
local nazwa_jednostki=stronicowyparser_potrzebne_modul.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(tab_pozycja_elementow_w_spisie_rzeczy[1],false);
---- Inicjowanie starej wartości tą policzoną;
local stara_nazwa_jednostki=nazwa_jednostki;
</syntaxhighlight>
Dalej {{Śródtekst|uchwyt=tabela_rozdzial_artykulow2|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}}}, według:
<syntaxhighlight lang="lua">
if(not tabela_rozdzial_artykulow2[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow2[numer_rodzaju_artykulu_w_podreczniku]={};end;
</syntaxhighlight>
Co {{Śródtekst|uchwyt=linia_artykokow|tekst=dalej linię artykułów {{Code|linia_artykokow}} {{LinkPatrz|linia_artykokow}}, kompletujemy, funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, z modułu: {{Code|{{ld2|Szablonowe}}}}, znając tablicę: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}}}, według:
<syntaxhighlight lang="lua">
linia_artykokow=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_artykokow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
</syntaxhighlight>
====== Uwzględnianie niepodanego elementu nienagłówkowego w tablicy zebranych parametrów ======
Gdy tablica przekierowania: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, istnieje, wtedy sprawdzamy, czy zmienna logiczna: {{Code|czy_tablica}} {{LinkPatrz|czy_tablica}}, jest prawdą i czy: {{Code|stara_nazwa_jednostki}} {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej: {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie artykułu przekierowania.
Inicjujemy nową zmienną: {{Code|przekierowanie}} {{LinkPatrz|przekierowanie}}, z artykułu, parametrów i nagłówka, ale wpierw sprawdzamy, czy dwa ostatnie istnieją, według:
<syntaxhighlight lang="lua">
przekierowanie=przekierowanie and ((tablica_przekierowania[3] or tablica_przekierowania[4]) and {przekierowanie, tablica_przekierowania[3], tablica_przekierowania[4],["LINK"]=true,}or przekierowanie) or nil;
</syntaxhighlight>
Tworzony jest nowy element: {{Code|nazwa jednostki}} {{Patrz|nazwajednostki-nowy}}, z: {{LinkPatrz|nazwa jednostki}}, parametrów i nagłówka, według rysu:
<syntaxhighlight lang="lua">
nazwa_jednostki={nazwa_jednostki, tab_pozycja_elementow_w_spisie_rzeczy[1][2], tab_pozycja_elementow_w_spisie_rzeczy[1][3],["LINK"]=true,};
</syntaxhighlight>
Jeżeli parametr drugi: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}.
Wsadzamy element: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, do zbioru: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, przy pomocy funkcji: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Następnie jej drugiemu elementowi: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, do tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}, na pozycji: {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, według funkcji: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej.
Jeżeli tablica przekierowania: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, jednak nie istnieje, wtedy tak samo sprawdzamy, co poprzednio potem, ale po spełnieniu tych warunków robimy inną tablicą: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, i tę tablicę robimy podobnie, i inicjujemy te same elementy też podobnie.
====== Uwzględnianie pozycji podanej w tablicy zebranych elementów ======
Tworzymy zmienną: {{Code|ile_dodac_do_poziomu_artykulu}} {{Patrz|ile_dodac_do_poziomu_artykulu}}, z drugiego elementu tablicy: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, następnię tworzymy inną zmienną: {{Code|ile_dodac_do_poziomu_artykulu_lub_nil}} {{Patrz|ile_dodac_do_poziomu_artykulu_lub_nil}}, co uwidaczniamy wzorem:
<syntaxhighlight lang="lua">
local ile_dodac_do_poziomu_artykulu_lub_nil=((ile_dodac_do_poziomu_artykulu)and(ile_dodac_do_poziomu_artykulu>0))and ile_dodac_do_poziomu_artykulu or nil;
</syntaxhighlight>
Tą zmienną wykorzystamy do sformułowania: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}.
{{Śródtekst|tekst=Tworzymy zmienną: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}, na pozycji: {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, przy pomocy funkcji: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.|uchwyt=__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|>{{=}}}} {{Code|2}} =====
Będziemy tutaj operowali, gdy parametr drugi zwracany z funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, wskazuje na nie artykuł książki, zatem ten rozdział jest właśnie dla tego przypadku.
====== Odkodowanie i przygotowanie zmiennych artykułu linku, jej nazwy, także kodu języka i projektu ======
* Gdy pierwszy element tablicy: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}.
* Dla drugiego takiego elementu z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, co jest nazwą linku, wtedy gdy nazwa linku normalnego, czy szablonowego, jest zakodowana, to ją odkodujemy, którego każdy jego element kod odkodujemy według funkcji: {{LinkPatrz|p.DekodowanieTekstuNazwLinku}}, następnie z niej usuwamy znaki specjalne według: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, następnie usuwamy końcowe spacje i wewnątrz kolejne spacje zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
* Dla trzeciego i czwartego takiego elementu z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, te elementy odkodujemy, następnie z nich usuwamy końcowe spacje, a wewnątrz kolejne spacje zastępujemy jedną, według tej samej funkcji, co powyżej.
====== Przygotowanie zmiennych, inicjowanie tablicy: {{Code|tab_stare}}, i wsadzanie jej do tablicy ogólnej: {{Code|tabela_rozdzial_artykulow2}} ======
Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow2}}, także co {{PobierzŚródtekst|linia_artykokow}}, co wszystko robimy podobnie jak w rozdziale: {{LinkŚródtytuł|inicjacja_i_kompletowanie_zmiennych}}.
{{PobierzŚródtekst|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
==== Definicja tablicy: {{Code|tab_stare}}, inicjowanie jej elementów w różnych przypadkach ====
Przedstawiamy tutaj ogólną definicję zmiennej: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. Ta wersja jest jedynie sformułowana dla artykułów w rozdziale, a nie dla rozdziałów, bo w tablicy, do której jest ona wsadzana przyjmuje ona możliwy numerek od "2" do "13", a nie również "1". Jej wersja ogólna:
<syntaxhighlight lang="lua">
local tab_stare=
{
---- Początek elementów alternatywnych
{
---- Początek wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[1], -- artykuł bez pełnej nazwy ksiązki, bez parametrów i nagłówka, bo ich nie posiadałna samym początku;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- artykuł bez pełnej nazwy książki, bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[2], -- nazwa linku artykułu normalnego, czy szablonowego;
---- Początek elementów alternatywnych dla przekierowania
---- Poczatek parametrów przekierowania
{
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
tablica_przekierowania[3], -- parametry przekierowania artykułu;
tablica_przekierowania[4], -- nagłówek przekierowania artykułu;
["LINK"]=true, -- zmienna świadcząca, że nazwa przekierowania artykułu jest z parametrami i nagłówkiem;
},
---- lub
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
---- Koniec parametrów przekierowania
tablica_przekierowania[1], -- tablica o definicji: {
nazwa_przestrzeni_strony_przekierowania, -- nazwa przestrzzeni nazw przekierowania artykułu;
nazwa_przestrzeni_ksiazki_strony_przekierowania, -- nazwa przestrzeni książki przekierowania artykułu;
nazwa_ksiazki_strony_przekierowania, -- nazwa książki orzekierowania artykułu;
true/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce;
true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie;
czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach;
};
---- lub
nil, -- dotycząca przekierowania artykułu, a tutaj strona nie ma przekierowania, więc: nil;
nil, -- dotycząca tablicy książki, na którą wskazuje przekierowanie, a tutaj nie ma tablicy, więc: nil;
---- Koniec elementów alternatywnych dla przekierowania
tab_pozycja_elementow_w_spisie_rzeczy[3], -- kod języka;
tab_pozycja_elementow_w_spisie_rzeczy[4], -- kod projektu;
tab_pozycja_elementow_w_spisie_rzeczy[5], -- adres artykułu bez przetworzenia w linku normalnym,czy szablonowym;
ile_dodac_do_poziomu_artykulu_lub_nil, -- parametr mający tylko wartości: 1, gdy do aktualnego poziomu musi być dodane jeden - ta wartość, tylko dotyczy artykułów należących do tej samej książki, lub: nil, gdy nic, czyli w pozostałych przypadkach;
tab_pozycja_elementow_w_spisie_rzeczy[6], -- "url", pozycja świadcząca, że to jest link zewnętrzny, a nil, gdy to jest normalny link;
},
---- lub
tab_pozycja_elementow_w_spisie_rzeczy[1], -- nazwa artykułu linku, która nie posiada, ani parametrów w sobie, a po nim nagłówka, lub bezpośrednio po nazwie;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- nazwa artykułu bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec elementów alternatywnych
{
#przedrostek_listy, -- poziom listy, w którym jest artykuł, dla artykułów w linii z listą, w innym wypadku dla artykułu znajdującego się w rozdziale dodatnim, czy ujemnym jest zero;
przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])", przeciwnie dla artykułów w rozdziale dodatnim ma wartość pustą;
tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu, gdy nie ma takiej numeracji, bo nie da się jej wydzielić, to ma wartość pustą;
w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym, wtedy "true", w przeciwnym wypadku: "false";
},
linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare";
true/false, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: false;
true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika, przeciwnie: false;
---- Początek elementów alternaatywnych
Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow2), -- który numer artykułu, w momencie wsadzenia do tabeli zbierania rozdziałów i w nich artykułów, nawet w rozdziale;
---- lub
nil, -- nil, wtedy gdy link jest tak sobie dodany, który nie należy do żadnego spisu, a po nim elementy jego z nagłówkiem natomiast należą;
---- Koniec elementów alternatywnych
};
</syntaxhighlight>
W powyższym: {{Tag|syntaxhighlight|parametry=lang="lua"}}, dla elementu: {{Code|<nowiki>---- lub</nowiki>}}, jest powiedziane, że są dostępne alternatywy, które są zawarte w tablicy, że wybieramy te, aby nie spowodować czysto podwójnej tablicy, aby każda tablica zawierały inne elementy, jak wiele, a nie jedną tablicę, jak i łańcuchy znaków, wartość nil, powoduje, że czy ma być taka tablica, ale nie podwójna, co to znaczy podowójna, tzn. tablica w sobie zawiera inną jedyną tablicę, a tak nie może być, a jak zawiera jedną tablicę, to musi posiadać inne nienilowe elementy.
== Funkcje tablicy transportu ==
=== {{Śródtytuł|p.AnalizaNapisuWprowadzeniaTekstu}}{{Code|p.AnalizaNapisuWprowadzeniaTekstu}} ===
Funkcja przyjmuje jako parametr nieskompletowaną i nieprzetworzony tekst napisu wprowadzenia tekstu. On kompletujei przekształca go w odpowiedni sposób,aby otrzymać czysty tekst tytułu rozdziału.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AnalizaNapisuWprowadzeniaTekstu(rozdzial,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|rozdzial}} | _1 = Ten tekst tytułu rozdziału, o którym mówimy.
| 2 = {{Code|pelna_nazwa_spisu_tresci}} | _2 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci}}
| 3 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _3 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _5 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
==== Obiekty typu {{nobold|{{Code|SZABLON}}}} ====
Funkcja korzysta z funkcji: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, funkcja ma zdefiniowaną pierwszą jej funkcję, która dla: {{Code|obiekt {{=}} "SZABLON"}}, używamy pierwsze dwie tabelę, te tabele:
Pierwsza {{Patrz|szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu}}, która służy do zamieniania szablonów na ich parametry, tutaj pierwsza, to jest tablica: {{Code|{{sr|#p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu}}:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu={
["MDL:RozszerzonyLink"]=1,
["Kompletność"]="",
["Kompletność krótka"]="",
["Kompletność junior"]="",
["Książka"]="",
};
</syntaxhighlight>
Druga: {{Code|{{sr|#p.szablony_dozwolone_w_nazwach_linkowych|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_dozwolone_w_nazwach_linkowych}}, też służy do tego samego.
Funkcja wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja {{Patrz|p.szablony_dozwolone_w_nazwach_linkowych}}:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_w_nazwach_linkowych={
["Korekta"] =2,
};
</syntaxhighlight>
===== Funkcje zawartości i dodatków, dla szablonów =====
One służą do zamieniania wywołań szablonowych na odpowiednie ich zawartości parametrów określone przez numery parametrów tych elementów w tch tabelach. Jeżeli przy którym wywolaniu przy wykorzystaniu kolejnych tych tabel przy użyciu funkcji: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, nastąpiło zamienienie, to funkcja pierwsza w: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, zakańcza się z tą wartością. A jeżeli nie to uruchamia się funkcj dodatków: {{Code|{{sr|#p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu|p=StronicowyParser/Rozdziały}}}}, a jeśli nastąpiło zastąpienie, to funkcja kompletowania się kończy z tą wartością.
===== Szablonowe linki =====
Dalej jeżeli tak się nie stało, to uruchamia się funkcja parametrów, w którym wywołanie szablonowe jest rozkładane na nazwę szablonu, modyfikatory i parametry. Dalej jest spradzanie , czy jest to link inteligentny według funkcji: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}, a gdy jest, to funkcja kończy swoje działania z nazwą tego linku lub jego adreesem wewnętrznym, a jeśli on nie jest tym, to sprawdza, czy są inne szablonowe linki, które podejrzewa się poprzez wywołanie funkcji: {{Code|{{sr|#p.NazwaInnegoSzablonowegoLinkowegoObiektu|p=StronicowyParser/Potrzebne}}}}, a jeżeli jest tym linkiem, to funkcja składania zwraca też jak poprzednio nazwę linku lub jego adres wewnętrzny, ewentualnie z dodatkiem. A gdy nie, to w innym przypadku sprawwdzane, czy to jest inny link wewnętrzny generowane przez szablony, która spradza funkcja tutaj: {{Code|{{sr|#p.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy|p=StronicowyParser/Potrzebne}}}}, a jeżeli szablon jest tym linkiem, to kunkcja składania zwraca jego nazwę linkową.
===== Szablony rozwijane przez {{lpg|JavaScript}} =====
A następnym krokiem jest sprawdzanie, czy nazwa szablonu jest jednych z elementów z tablicy: {{LinkPatrz|p.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu}}, która ma ten element, te szablony wymienione w tej tablicy są po to, aby służyły do rozwijania przez JavaScript, są to elementy wikikodu, które są pracochłonne ze względu na ich skomplikowany kod, czy wikikod, nawet {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, i dlatego ich się nie rozwija przez stronicowy parser: {{Code|{{ld2|StronicowyParser}}}}, te nazwy szablonów są określone tablicą: {{Code|{{sr|#p.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu}}:
<syntaxhighlight lang="lua">
p.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu={
["Cytuj"]=true,
["Cytuj stronę"]=true,
["Cytuj pismo"]=true,
["Cytuj odcinek"]=true,
["Cytuj książkę"]=true,
["Cytuj grę komputerową"]=true,
};
</syntaxhighlight>
I funkcja wtedy zwraca skompletowany szablon bez rozwijania jego, pod warunkiem, jeżeli jest tym szablonem o tej nazwę szablonu wywołującego.
===== Co jest zwracane w przypadku szablonów =====
Te powyżej elementy dla funkcji parametrów, w niej wartości są zwracane do niej, a jeżeli ona przyjmuje wartość nienilową, to do funkcji składania zwracana jest jego wartość, a przeciwnie jest zwracane pierwszy parametr szablonu do niej.
==== Obiekty typu: {{nobold|{{Code|NOWIKI}}}}, {{nobold|{{Code|PRE}}}} i {{nobold|{{Code|ŹRÓDŁO}}}} ====
A gdy dla elementów, jeśli nazwa obiektu jest: {{Code|obiekt {{=}} "NOWIKI"}}, {{Code|obiekt {{=}} "PRE"}}, lub: {{Code|obiekt {{=}} "ŹRÓDŁO"}}, znacznik jest rozkładany na czynniki pierwsze, a jeżeli nnie ma zawartości, to przez funkcję skłądania jest zwracana wartość pusta, a jeśli nie, to pewne znaki specjalne tagu {{Tag|nowiki}}, które mają w nim być zamienione na tekst, są zamieniane na kody '''HTML''', co po zamienieniu ta ona jest zwracana.
==== Obiekty typu: {{nobold|{{Code|MATH}}}}, {{nobold|{{Code|GALERIA}}}}, {{nobold|{{Code|MAPAOBRAZU}}}}, i {{nobold|{{Code|INNEPRE}}}} ====
A jeżeli wartość: {{Code|obiekt}}, jest nie równa: {{Code|MATH}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} lub {{Code|INNEPRE}}, wtedy z zawartości zmiennej: {{Code|szablon}}, są wykorzystanne funkcje z modułu: {{Code|{{ld2|Specjalne}}}}, które w tej podanej zmiennej są usuwane z komentarze z: {{Code|{{sr|#p["UsuńKomentarze"]|p=Specjalne}}}}, zamieniane są linki zewnętrzne i wewnętrzne na ich nazwy lub adresy według: {{Code|{{sr|#p["ZamieńLinkiZewnętrzneNaTekst"]|p=Specjalne}}}} i {{Code|{{sr|#p["ZamieńLinkiWewnętrzneNaTekst"]|p=Specjalne}}}}. Są usuwane rozwinięte znaczniki szablonów stylów używając do tego celu: {{Code|{{sr|#p["UsuńSzablonyStylów"]|p=Specjalne}}}}. Są też usuwane znaczniki na podstawie: {{Code|{{sr|#p["UsuńZnaczniki"]|p=Specjalne}}}}. Z tekstu szablonu są usuwane normalne kategorie nieszablonowe: {{Code|{{sr|#p"UsuńKategorie"]|p=Specjalne}}}}. Są też usuwane z zawartości wywołania plików i interwiki z: {{Code|{{sr|#p["UsuńWywołaniaPlików"]|p=Specjalne}}}} i {{Code|{{sr|#p["UsuńInterwiki"]|p=Specjalne}}}}. Dalej z tego obiektu są usuwane znaki specjalne z: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}.
A gdy mamy do czynienia z innymi znacznikami, to są zwracane jest zamiast niego wartość pusta do funkcji kompletowania.
Dane z funkcji kompletowane są zwracane, które z niej są usuwane znaki specjalne z całości tekstu rozdziału: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, i znaki białe z końców tekstu i powtarzarzające się te znaki kolejne z wewnętrz są zamieniane na jedną spację, to się dzieje według funkcji: {{Code|{{sr|#p["UsuńZbędneBiałeZnaki"]|p=Specjalne}}}}.
Cały taki wynik operacji robione w funkcji w nagłówku są zwracane do niej, to jest, co uzyskujemy nazwa rozdziału w postaci przetworzonej.
=== {{Śródtytuł|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}{{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} ===
Opisane tutaj są podfunkcje, z których korzysta ta funkcja, co one robią, do czego są wykorzystane.
==== Opis funkcji: {{nobold|{{Patrz|opis funkcji-ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}}} ====
Funkcja służy do zbierania nagłówków i z niej danych,tzn. linków normalnych i inteligentnych, a także są zbierane nagłówki z listy bez artykułów i do nich elementy podlisty z artykułami w postaci wywołań linkowych w niej. Tworzona jest specjalnie dla niegp tablica: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, która w odpowiedni po przekształaceniach wsadzana jest do tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} | _1 = Jak w: {{LinkPatrz|self}}.
| 2 = {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} | _2 = Kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}.
| 3 = {{Code|nazwa_spisu_tresci}} | _3 = Jak w: {{LinkPatrz|nazwa_spisu_tresci}}.
| 4 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _4 = Czy dany spis treści dla książki dla jej artykułu korzystanego, dla innej książki, wtedy to artykuł niekorzystany.
| 5 = {{Code|adres_ksiazki_glownego_spisu_tresci}} {{Patrz|adres_ksiazki_glownego_spisu_tresci}} | _5 = Jest to wewnętrzny adres książki głównego spisu treści,jest to taki adresm na który wskazuje przekierowanie innej książki.
| 6 = {{Code|__FUNKCJA_ZBIERANIA_DANYCH}} {{Patrz|__FUNKCJA_ZBIERANIA_DANYCH}} | _6 =
{{Śródtekst|uchwyt=__FUNKCJA_ZBIERANIA_DANYCH|tekst=
Jest to funkcja, która zbiera informacje o aktualnym artykule, która jest spisem treści, w postaci nieprzetworzonej przez funkcje z modułu: {{Code|{{ld2|StronicowyParser/Rozdziały}}}}, opisanego w: {{Code|{{sr|Rozdziały|StronicowyParser - Rozdziały|p=StronicowyParser}}}}, ta funkcja kopiuje, np. tabele danych bazy modułu: {{Code|{{m|Szablonowe}}}}, tzn: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, i tabelę rozkładu elementów w niej na czynniki pierwsze, tzn.: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, co jest napisane w module: {{Code|{{ld2|StronicowyParser/ZbieranieDanychStron}}}}, a w dokumentacji: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
kod_sukcesu_lub_bledu=__FUNKCJA_ZBIERANIA_DANYCH(nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona);
</syntaxhighlight>
}}
}}
==== Funkcje lokalne ====
Funkcja ma w sobie też definicję funkcji lokalnych zdefiniowanej w tej funkcji tutaj opisywanej.
===== {{Śródtytuł|FunkcjaIteratoraTekstuZakodowego}}{{Code|FunkcjaIteratoraTekstuZakodowego}} =====
Funkcja służy do pomijania tego, co nie jest linkiem wewnętrznym, czy zewnętrznym, czyli oznaczone kodami: {{Code|LINKW}} lub {{Code|LINKZ}}, czy nawet szablonem linkuinteligentnego, czy innego służacego do generowania spisu treści, do tego celu również używa funkcji: {{LinkŚródtytuł|CzySzablonLinkLubLicencja}}, oraz tego co nie jest w liście okreslonym wzorem {{Code|<nowiki>\n([#:*;]+)</nowiki>}} z mozliwym na początku tekstem, ale nie z kodami, w danej pozycji listy, lub co ewentualnie nie może być w możliwej liście, tzn.: {{Code|<nowiki>\n([#:*;]*)</nowiki>}}, ale wtedy musi tam być z tekstem, ale nie z kodami, na początku danej pozycji listy, nawet jeśli to nie jest lista, to też tak samo.
Jeżeli funkcja nie ma kodów linków wewnętrznych, czy to normalnych, czy szablonowych, to się zakańcza z wartością domyślną {{Code|nil}}, w przeciwnym wypadku do sprawdzenia używa do tego funkcji: {{LinkŚródtytuł|PomijajLinkiOrazLicencje}}, do sprawdzania, czy to jest link lub licencji, a jeżeli ta funkcja zwraca wartość {{Code|true}}, to cała funkcja zwraca {{Code|nil}}. Jeżeli oba te sposoby nie dały rezultatu {{Code|true}}, to wtedy funkcja zwraca wartość pustą, czyli okreslonym ciągiem znakowym o szwerokości zerowej.
Funkcja ma w sobie dwie definicje funkcji: {{LinkŚródtytuł|PomijajLinkiOrazLicencje}} i {{LinkŚródtytuł|CzySzablonLinkLubLicencja}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local FunkcjaIteratoraTekstuZakodowego=function(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}.
| 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}.
| 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod}}.
}}
====== {{Śródtytuł|PomijajLinkiOrazLicencje}}{{Code|PomijajLinkiOrazLicencje}} ======
Funkcja służy do sprawdzania, czy są odpowiednie szablony w kodzie.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function PomijajLinkiOrazLicencje(szablon)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}.
}}
Funkcja sprawdza, czy to są szablony spisu treści określone tablicą o kluczach, którymi są nazwy szablonów, z wartościami {{Code|true}}, czyli: {{Code|{{sr|#p.szablony_licencji|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_licencji}}:
<syntaxhighlight lang="lua">
p.szablony_licencji={
["Licencja"]=true,
};
</syntaxhighlight>
Tzn., czy to są szablony ozdobne woluminu, którego tablica: {{Code|{{sr|#p.szablony_ozdobne_stron_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_ozdobne_stron_woluminu}}, jest podobnie zbudowana, co poprzednia:
<syntaxhighlight lang="lua">
p.szablony_ozdobne_stron_woluminu={
["MDL:RozszerzonyLink"]=true,
};
</syntaxhighlight>
A jeżeli to są te szablony, to funkcja zwraca wartość {{Code|true}}.
Jeżeli jednak to nie są te szablony, należy użyć tablic, tak samo zbudowanej jak poprzednie, czyli: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.linki_szablony_elementy_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.linki_szablony_elementy_spisu_rzeczy={
["SpisTreści"]=true,
["Sekcja referencyjna"]=true,
["Sr"]=true,
["Link wewnętrzny"]=true,
["Ly"]=true,
["LinkOgólne"]=true,
["Lo"]=true,
};
</syntaxhighlight>
lub innej, inaczej zbudowanej niż poprzednie, ale ważne, że ma wartość niefałszywą, czyli taką tablicą: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}, jest:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
Jak są te nazwy szablonów określone ich kluczami tych tablic, to funkcja zwraca wartość {{Code|true}}. A jeżeli jednak nie to funkcją: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}, jest sprawdzane,czy to jest link inteligentny, nawet przekierowanie, jeżeli link taki jest, to funkcja zwraca wartość w tym wypadku {{Code|true}}. W przeciwnym wypadku, jak nie zwrócił tej wartości,bo taka nie jest nazwa szablonu, to funkcja nic nie zwraca.
====== {{Śródtytuł|CzySzablonLinkLubLicencja}}{{Code|CzySzablonLinkLubLicencja}} ======
Funkcja sprawdzająca za pomocą: {{LinkŚródtytuł|PomijajLinkiOrazLicencje}}, na podstawie parsowania tekstu szablonu funkcją: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, z parsowanym przechwytywanym typem obiektu: {{Code|obiekt}} {{LinkPatrz|obiekt}}, równym {{Code|SZABLON}}. A jeżeli funkcja ta wspomniana w tekście zwróci {{Code|true}}, to funkcja taki obiekt policzy.
Jeżeli liczba policzonych obiektów i znalezionych w wyniku parsowania jest większa od zera, to funkcja w nagłówku zwróci wartość {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local CzySzablonLinkLubLicencja=function(szablon)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}.
}}
===== {{Śródtytuł|iteratorTekstuNaglowka}}{{Code|iteratorTekstuNaglowka}} =====
Jest to funkcja iteratora, którego funkcja zwracana (iterator) zwraca parametry, dla rozdziałów dodatnich i pozycji list.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function iteratorTekstuNaglowka()
... ---- Kod przed zwróceniem iteratora;
return function()
... ---- Ciało funkcji iteratora;
end;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = Brak parametrów. | komórka1 = tak
}}
Iterator (funkcja zwracana przez funkcję w nagłówku) zwraca parametry w wyniku kolejnych wywołań:
<syntaxhighlight lang="lua">
return przedrostek_listy,tekstowy_przedrostek,wyzyskane_wywolanie_szablonu_spis_tresci,true/false;
</syntaxhighlight>
Parametry zwracane przez iterator:
{{OpisParametrów
| 1 = {{Code|przedrostek_listy}} | _1 = Przedrostek pozycji listy, dla rozdziałów dodatnich jest wartością pustą.
| 2 = {{Code|tekstowy_przedrostek}} | _2 = Numeracja pozycji w liście lub w nagłówku dodatnim.
| 3 = {{Code|wyzyskane_wywolanie_szablonu_spis_tresci}} | _3 = Jest to rozdział bez numeracji i przedrostka pozycji listy.
| 4 = {{Code|true/false}} | _4 = Wartość {{Code|true}} świadczy o rozdziale dodatnim, a w przypadku innym funkcja zwraca zawsze wartość tą {{Code|false}} jako ostatni element zwracany.
}}
Funkcja jest przykowana na rozdziałów dodatnich i pozycji list oraz innych linii, dla tego pierwszego funkcja zwraca:
<syntaxhighlight lang="lua">
return "","",wartosc,true;
</syntaxhighlight>
Gdzie {{Code|wartość}} jest to zawartość napisu wprowadzenia tekstu (rozdziału dodatniego).
W przypadku list oraz innych niż rozdziały dodatnie samo wyrażenie regularne {{lpg|Lua}} w {{lpr|Lua|Scribunto}} jest okreslone przez wyrażenie:
<syntaxhighlight lang="lua">
local re="([#:*;]*)[^%S\n]*([%d%.]*[^%S\n]*[^\n]+)";
</syntaxhighlight>
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu|p=StronicowyParser/Rozdziały}}}}, aby zamienić zawartość pozycji listy na rozdział bez numeracji i numerację, i dlatego ta funkcja zwraca te dwie wartości. Gdy funkcja jak nie znajdzie więcej linii (wyszukań), to zwraca wartość {{Code|nil}} mówiąca o zakończeniu iteracji iteratora, tzn. dane dla iteratora się zakończyły.
===== {{Śródtytuł|LiniaArtykulow}}{{Code|LiniaArtykulow}} =====
Funkcja dla szablonów kompletowania określonym tabelką: {{Code|{{sr|#p.szablony_kompletowania_stron_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_kompletowania_stron_woluminu}}, o definicji:
<syntaxhighlight lang="lua">
p.szablony_kompletowania_stron_woluminu={
["Kompletność"]=true,
["Kompletność krótka"]=true,
["Kompletność junior"]=true,
["Książka"]=true,
};
</syntaxhighlight>
Rozdziela linię na wiele obsługiwanych podlinii.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function LiniaArtykulow(linia)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|linia}} {{Patrz|linia}} | _1 = Pojedyncza przetworzona linia.
}}
====== {{Śródtytuł|SzablonAnalizujKompletnosc}}{{Code|SzablonAnalizujKompletnosc}} ======
Funkcja sprawdza, czy dane wywołania szablonu, ma swoją nazwę szablonu, która jest nazwą szablonu kompletowania.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function SzablonAnalizujKompletnosc(szablon)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}.
}}
====== Dalszy opis funkcji ======
Możliwe są dwie opcje, szablon kompletowania jest pierwszy, a drugi drugi, lub odwrotnie. Funkcja obsługuje te oba przypadki. Ona stawia przecinkiem dla obu wersji ustawień, jeśli potraktować układem link i szablon kompletowania, to wstawiany jest on pomiędzy tymi układami, aby rozdzielić linię, a w liście bez jego znaków pozycji, na elementy przy pomocy funkcji: {{LzLua|mw.text.split}}, z opcją jako drugi parametr, aby uwzględniał wyrażenia regularne {{Code|false}}. W tych rozdzielonych linią tą funkcją dzielącą ciąg znakowy na tabelę, kody '''HTML''' przecinka są zamieniane na zwykły przecinek.
Funkcja zwraca tabelę podzielonej linii na mniejsze podlinie, który można iterować funkcją: {{Code|pairs}} lub {{Code|ipairs}}.
===== {{Śródtytuł|WsadzanieParametryDoTablicy}}{{Code|WsadzanieParametryDoTablicy}} =====
Funkcja z parametrami, która uruchamia inną funkcję uruchamianą w: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}, która wstawia tabelę {{LinkPatrz|tab_stare}}, do ogólnej tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}, ewentualnie do {{Code|tabela_rozdzial_artykulow}} {{Patrz|tabela_rozdzial_artykulow}} na pozycję {{Code|numer_podtablicy_w_tablicy}} {{Patrz|numer_podtablicy_w_tablicy}}, a dokładniej na pozycję {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}} w funkcji {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function WsadzanieParametryDoTablicy(linia,czy_linia_uwzgledniana)
return function(tabela_rozdzial_artykulow2,numer_podtablicy_w_tablicy,tab_stare)
... ---- ciało funkcji.
end;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|linia}} | _1 = Jak w: {{LinkPatrz|linia}}.
| 2 = {{Code|czy_linia_uwzgledniana}} {{Patrz|czy_linia_uwzgledniana}} | _2 = Czy linię ma uwzględnić w powiększaniu poziomu o jeden dla artykułu.
}}
Parametry zwracanej funkcji przez tę w nagłówku:
{{OpisParametrów
| 1 = {{Code|tabela_rozdzial_artykulow2}} | _1 = Jak w: {{LinkPatrz|tabela_rozdzial_artykulow2}}.
| 2 = {{Code|numer_podtablicy_w_tablicy}} | _2 = Jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}.
| 3 = {{Code|tab_stare}} | _3 = Jak w: {{LinkPatrz|tab_stare}}.
}}
====== {{Śródtytuł|CzyZaliczac}}{{Code|CzyZaliczac}} ======
Funkcja sprawdza, czy z początkiem linii pozycji listy, bez przedrostka listy, jest z możliwym cudzysłowem, po którym następują liczby, litery, lub myślniki dolne, w takim pzypadku linia nie może składać się z nich, po ktorym występują znaki interpunkcyjne. Jeśli to sprawdzenie było pozytywne funkcja zwraca wartość logiczną odpwowiadającą {{Code|true}}, w przeciwnym wypadku jak {{Code|false}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function CzyZaliczac()...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = Brak parametrów funkcji. | komórka1 = tak
}}
Funkcja zwraca informację, czy daną linię traktować jako rozdział, chodzi tu o pozycje list, a w przypadku rozdziałów dodatnich wiadomo, że one są właśnie, że rozdziałami.
====== Dalszy opis funkcji ======
Funkcja sprawdza w funkcji zwracanej, czy rozważany rozdział jest centrowany danego artykułu, który siedzi pod rozdziałem lub w samym rozdziale, sprawdza, czy artykuł jest w rozdziale, sprawdza czy linia jest uwzględniana: {{Code|czy_linia_uwzgledniana}} {{LinkPatrz|czy_linia_uwzgledniana}}. Funkcja sprawdza, czy sekcja czy w: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, czy istnieje element: {{Code|tab_stare[2]}} {{Patrz|tab_stare[2]}}, i dalszy: {{Code|tab_stare[2][1]}} {{Patrz|tab_stare[2][1]}} - ten element jest to w: {{Code|tab_stare}}, taki: {{Code|#przedrostek_listy}} {{Patrz|#przedrostek_listy}}, a jeżeli to sprawdzenie przeszło pozytywnie, który dla tego jest poziomem listy, lub zerowego rozdziału lub rozdziału dodatniego.
Dla każdej linii zmienna: {{Code|nowa_linia}} {{Patrz|nowa_linia}}, przyjmuje wartość {{Code|false}}, wtedy dla przypadku przeciwnego, tzn. gdy mamy rozdział i uwzględniamy artykuły w jednej linii, którym jest rozdział będacy pozycją listy, w zmiennej: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, jest ustawiany element: {{Code|tab_stare[2][4]}} {{Patrz|tab_stare[2][4]}}, czyli zmienna: {{Code|w_rozdziale}} {{LinkPatrz|w_rozdziale}}, zaczyna przyjmować wartość {{Code|true}}. Wsadzany jest wtedy do tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}, na pozycję: {{Code|numer_podtablicy_w_tablicy}} {{LinkPatrz|numer_podtablicy_w_tablicy}}, czyli to jest też: {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, element {{Code|tab_stare}} {{LinkPatrz|tab_stare}}.
Gdy: {{Code|nowa_linia}} {{LinkPatrz|nowa_linia}}, gdy jednak przyjmuje wartość {{Code|false}}, wtedy jeśli poziom rozdzialu istnieje i przedrostek listy {{LinkPatrz|#przedrostek_listy}} jest większy od zera, i istnieje wiele artykułów w pozycji liście, wtedy: {{Code|ile>0}}, lub funkcja: {{LinkŚródtytuł|CzyZaliczac}}, przyjmuje wartość odpowiadające prawdziwej, w taki przypadku zmiennej: {{Code|nowa_linia}} {{LinkPatrz|nowa_linia}}, przydzielamy wartość {{Code|true}}, by dalsze artykuły można było wsadzić, do tablicy z nowym rozdziałem. Powiększamy numer rozdziału o jeden, tzn.: {{Code|numer_rozdzialu_w_ksiazce}} {{Patrz|numer_rozdzialu_w_ksiazce}}, wtedy w zmiennej: {{Code|tabela_artykulow}} {{Patrz|tabela_artykulow}}, tabeli rozdziałów i w nich artykułów dla tej pozycji przydzielamy wartość równą tablicy pustej. Liczymy rozdział dla tego rozdział z artykułami, z funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}, liczymy napis rozdziału, wtedy do pierwszej pozycji tablicy utworzonej w: {{Code|tabela_artykulow}} {{LinkPatrz|tabela_artykulow}}, dla miejsca: {{Code|numer_rozdzialu_w_ksiazce}} {{LinkPatrz|numer_rozdzialu_w_ksiazce}}, czyli: {{Code|tabela_rozdzial_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}, piszemy:
<syntaxhighlight lang="lua">
tabela_rozdzial_artykulow[1]={rozdzial_na_tekst,{-#przedrostek_listy,przedrostek_listy,tekstowy_przedrostek,false,},linia,};
</syntaxhighlight>
Gdzie: {{Code|rozdzial_na_tekst}} {{Patrz|rozdzial_na_tekst}}, to policzony rozdział, {{Code|-#przedrostek_listy}} {{Patrz|-#przedrostek_listy}} to poziom rozdziału ujemnego, i dlatego minus. A: {{Code|przedrostek_listy}}, to znaki poczatkowe z listy: {{Code|wzor_do_linii_z_lista}} {{LinkPatrz|wzor_do_linii_z_lista}}, a: {{Code|tekstowy_przedrostek}}, to numeracja tego rozdziału. Wartość {{Code|false}} to jest ze ten rozdział nie jest centrowany, a: {{Code|linia}} {{LinkPatrz|linia}}, to wyzyskana linia bez początku pozycji listy. Ustawiamy: {{Code|tab_stare[2][4]}} {{LinkPatrz|tab_stare[2][4]}}, na wartość {{Code|true}} i element: {{Code|tab_stare[6]}} {{Patrz|tab_stare[6]}}, ustawiamy na zero. Tworzymy tablicę pustą na pozycję: {{LinkPatrz|numer_podtablicy_w_tablicy}}, tablicy: {{Code|tabela_rozdzial_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}, i do tej tablicy dodajemy: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, za pomocą funkcji: {{LzLua|table.insert}}.
A jeżeli nie jest tworzony nowy rozdział z listy w tabeli: {{Code|tabela_artykulow}} {{LinkPatrz|tabela_artykulow}}, to na pozycję: {{Code|numer_podtablicy_w_tablicy}} {{LinkPatrz|numer_podtablicy_w_tablicy}}, jest dodawany element: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, również tak jest robione, gdy artykuły znajdują się w rozdziale dodatnim, tzn. równaniowej lub centrowanej, tzn. wtedy: {{Code|w_rozdziale}} {{LinkPatrz|w_rozdziale}}, przyjmuje wartość {{Code|true}}.
===== {{Śródtytuł|AnalizaLiniiObiekty}}{{Code|AnalizaLiniiObiekty}} =====
Za pomocą funkcji: {{LinkŚródtytuł|LiniaArtykulow}}, linia: {{Code|linia_rozwazana}} {{Patrz|linia_rozwazana}}, jest rozdzielana na wiele linii. To wiele linii w postaci tabeli, są iterowane od: {{Code|k {{=}} 1}}, do: {{Code|k {{=}} #tab_linia}}, gdzie: {{Code|#tab_linia}} {{Patrz|#tab_linia}}, jest to długość linii, tzn. liczba elementów numerowanych tablicy, tzn. od 1 do zwyż aż do apotkania najbliższej przerwy lub końca. Wtedy dla pojedyńczej literacji mamy: {{Code|tab_linia[k]}} {{Patrz|tab_linia[k]}}.
Iterujemy po kodach dla linii: {{Code|tab_linia[k]}} {{LinkPatrz|tab_linia[k]}}, przy pomocy funkcji: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} {{Patrz|p.IteratorSzablonowyZakodowanegoTekstu}}, iteratorem: {{Code|iterator2}} {{Patrz|iterator2}}.
Inicjujemy zmienną: {{Code|tab_nieobslugiwane {{=}} nil}}, następnie iterujemy: {{LinkPatrz|iterator2}}, uzyskując w każdej iteracji: {{Code|szablon}} {{LinkPatrz|szablon}}, {{Code|obiekt}} {{LinkPatrz|obiekt}}, i {{Code|kod}} {{LinkPatrz|kod}}.
Gdy mamy do czynienia: {{Code|SZABLON}}, lub: {{Code|LINKW}}, albo: {{Code|LINKZ}}, wtedy dla elementów tego pierwszego bierzemy tablicę: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}, dla elementu: {{Code|nazwa_szablonu}} {{LinkPatrz|nazwa_szablonu}}.
Jeżeli ten element: {{Code|tabela_spisu}}, istnieje, element pierwszy: {{Code|tabela_spisu[1]}}, jest równy wartości {{Code|true}}, wtedy mamy do czynienia z szablonem {{s|SpisPozycja}}. Jej element: {{Code|tabela_spisu["numer_link"]}}, istnieje i jest równy: {{Code|tyt}} {{Patrz|tyt}}. Iterujemy po kluczach i jego wartościach tego szablonu i sprawdzamy, który element jest równy właśnie tej wartości, a jeżeli jest taki, to dla elementów nie równych niemu, a właściwie w jego wartości iterujemy po kodach funkcją: {{LinkPatrz|p.IteratorSzablonowyZakodowanegoTekstu}}, dla tej wartości, w ten sposób zbieramy tablicę wielowymiarową najpierw po: {{Code|obiekt}} {{LinkPatrz|obiekt}}, póżniej po: {{Code|kod}}, {{LinkPatrz|kod}}, którą nazwiemy: {{Code|tab_nieobslugiwane}} {{Patrz|tab_nieobslugiwane}}, którego każda jej wartość jest równa {{Code|true}}. Ta tablica mówi dla jakich elementów ma nie zbierać w tablicy elementów w głównej tablicy rozdziałów i jego artykułach.
Dla elementu {{Code|tyt}} {{LinkPatrz|tyt}} tablicy parametrów przedrostek listy {{Code|przedrostek_listy}} ustawiamy na pusty, i liczmy numerację {{Code|tekstowy_przedrostek}} i zmienną {{Code|szablon}} {{LinkPatrz|szablon}} i ustawiamy zmienną {{Code|przerwij}} {{Patrz|przerwij}} na {{Code|true}}, aby dla tego szablonu nie zbierać elementów w tablicy rozdziałów i jego artykułów.
W przypadku przeciwnym dla: {{Code|tabela_spisu}}, gdy ma wartość {{Code|false}}, wtedy mamy do czynienia z funkcją: {{s|SpisZw}}. Dla niej liczymy: {{Code|przedrostek_listy}}, którą ustawiamy na pustą wartość. A: {{Code|tekstowy_przedrostek}}, liczmy uzyskując parametr o kluczu: {{Code|tabela_spisu["numer"]}}, którym jest parametr o numerze: {{Code|1}}, i {{Code|szablon}} {{LinkPatrz|szablon}}, który liczmy z parametrów szablonu o kluczu {{Code|tabela_spisu["link"]}}, którym jest numer {{Code|2}}. Ustawiamy tutaj zmienną: {{Code|}} {{LinkPatrz|przerwij}}, na wartosć {{Code|true}}.
====== {{Śródtytuł|CzyObslugiwane}}{{Code|CzyObslugiwane}} ======
Funkcja sprawdzająca, które elementy są obsługiwane, jeśli istnieje tablica: {{Code|tab_nieobslugiwane}} {{LinkPatrz|tab_nieobslugiwane}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local CzyObslugiwane=function()...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = Brak parametrów. | komórka1 = tak
}}
====== Dalszy opis funkcji ======
; Uwzględnianie tablicy, reprezentujące artykuł w rozdziale, wstawiany do tablicy danego rozdziału{{dk}}
Sprawdzany jest warunek:
<syntaxhighlight lang="lua">
if((--[[wliczaj_artykuly_tego_rozdzialu]] true)and(not przerwij)and((not tab_nieobslugiwane)or(CzyObslugiwane())))then
</syntaxhighlight>
Jeżeli jest on spełniony, wtedy wywołujemy funkcję: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}, później dla:
<syntaxhighlight lang="lua">
if((not czy_obslugiwane)and(not numer_rodzaju_artykulu_poprz))then
</syntaxhighlight>
Sprawdzamy, czy jest zebrana licencja z autorem według zmiennej: {{Code|licencja_z_autorem}} {{Patrz|licencja_z_autorem}}, i sprawdzamy, czy: {{Code|szablon}} {{LinkPatrz|szablon}}, jest wnetrzem szablonu, jeżeli tak, to ona przyjmuje wartość odpowiadająca prawdziwej, przeciwnie ma fałszywą.
Jeżeli ten pierwszy warunek jest niespełniony, to tylko liczymy to samo coostatnio.
; Szablony licencji, i jego parametry, uwzględnianie jego tylko raz ca całą książkę, mieszcząca się w artykule głównej książki{{dk}}
Następnie dla warunku, który musi być spełniony:
<syntaxhighlight lang="lua">
if((not numer_rodzaju_artykulu_poprz)and(not przerwij)and(link_szablon)and((not tab_pozycja_elementow_w_spisie_rzeczy)or(not tab_pozycja_elementow_w_spisie_rzeczy[1]))and(czy_artykul_korzystany)and(licencja_z_autorem))then
</syntaxhighlight>
Sprawdzamy szablony licencji, takich jak: {{s|Licencja}}, według tablicy: {{Code|{{sr|#p.szablony_licencji|p=StronicowyParser/obiekty}}}}.
Dla parametrów szablonu, liczymy jego parametry o kluczach, tzn.: {{Code|Autor}} {{Patrz|Autor}}, {{Code|Ukończone szkoły}} {{Patrz|Ukończone szkoły}}, {{Code|Email}} {{Patrz|Email}}, {{Code|Dotyczy}} {{Patrz|DotyczyDotyczy}}, {{Code|Licencjonowanie}} {{Patrz|Licencjonowanie}}, {{Code|Umowa prawna}} {{Patrz|Umowa prawna}} i {{Code|Konsekwencje}} {{Patrz|Konsekwencje}}, którego wartości przydzielamy do odpowiednich zmiennych. Każdą z tych zmiennych kompletujemy funkcją: {{Code|{{sr|#p.DekodowanieTekstuDekodowanieTekstu|p=StronicowyParser/Potrzebne}}}}, poprzez zwracaną przez nią funkcję, w której jest wykorzystywana funkcją: {{LzLua|frame:preprocess}}, do rozwijania. A dla elementu istniejącego: {{Code|Autor}}, piszemy zmienną: {{Code|licencja_z_autorem}} {{LinkPatrz|licencja_z_autorem}}, któremu przydzielamy wartość {{Code|false}}, co spowoduje, że nie będziemy analizowali jeszcze raz innego szablonu licencji.
Te zmienne tego szablonu zbieramy natomiast w tablicy: {{Code|tabela_licencji_spisu_tresci}} {{Patrz|tabela_licencji_spisu_tresci}}, dane dotyczące licencji, więc:
<syntaxhighlight lang="lua">
tabela_licencji_spisu_tresci={autor, szkoly, email, dotyczy, licencjonowanie, umowa_prawna, konsekwencje};
</syntaxhighlight>
Co później przerywamy pętle po: {{Code|iterator2}} {{LinkPatrz|iterator2}}, instrukcją: {{Code|break}}.
==== Dalszy opis funkcji {{nobold|{{LinkPatrz|opis funkcji-ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}}} ====
Ściągamy tekst, tabelę bazy i tabelę parametrów strony o nazwie: {{Code|nazwa_modulu}}, przy pomocy funkcji: {{Code|{{sr|#p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony|p=StronicowyParser/Tekst}}}}, według:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=nil;
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
return nil;
end,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Uruchamiamy funkcję: {{Code|__FUNKCJA_ZBIERANIA_DANYCH}} {{LinkPatrz|__FUNKCJA_ZBIERANIA_DANYCH}}, jeżeli istnieje.
Dalej wywołujemy funkcję: {{Code|{{sr|#p.IterTekst|p=StronicowyParser/Rozdziały}}}}, w celu znalezienia tekstu: {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}}, i iteratora: {{Code|iterator}} {{Patrz|iterator}}, po napisach wprowadzenia tekstu rozdziałów i ich zawartości rozdziałów i na podstawie:
<syntaxhighlight lang="lua">
local iterator,tekst_rozwiniety_calego_artykulu=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,true,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,
__FUNKCJA, ---- funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adresu szablonu, określa i zawraca jego zawartość;
__FUNKCJA2, ---- funkcja operująca na przygotowanej zawartości napisu wprowadzenia tekstu i tekście napisu wprowadzenia tekstu (rozdziału);
__FUNKCJA_ANALIZA_SPISU ---- funkcja do analizy i modyfikacji tekstu (może zwracać wartość: nil) przed samym kodowaniem, jeżeli tekst jest w ogóle jest taki, a jeśli nie, ta funkcja wtedy nie jest uruchamiana, funkcja ta bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: IterTekst, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: SpisTreści, co jest uwidocznione w module: Moduł:StronicowyParser/SpisTreści;
);
</syntaxhighlight>
Opis parametrów zwracanych:
{{OpisParametrów
| 1 = {{Code|iterator}} {{Patrz|iterator-IterTekst}} | _1 = Iterator po rozdziałach i jego zawartościach.
| 2 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu-IterTekst}} | _2 = Tekst przetworzony rozdziału.
}}
Odczytujemy tabelę: {{LinkPatrz|p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu}} i dalej: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}, o definicji:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={
["spis treści"]=true,
["spis tresci"]=true,
["spis rzeczy"]=true,
};
</syntaxhighlight>
Robimy kopię tych tabel i przyłączamy do metatabeli: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, przy pomocy funkcji: {{LzLua|setmetatable}}, aby nie odrózniać tych rozdziałów ze względu na wielkość liter i polskie znaki.
Inicjiujemy zmienną: {{Code|numer_rozdzialu_w_ksiazce}} {{LinkPatrz|numer_rozdzialu_w_ksiazce}}, wartością: {{Code|1}}, aby zbierać po kolei artykuły ze poszczególnego pojedynczego spisu treści.
Ustawiamy maksymalny rozmiar rozdziału zerowego na {{Code|50}}, w zmiennej: {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{Patrz|maksymalny_rozmiar_rozdzialu_zerowego}}, według:
<syntaxhighlight lang="lua">
local maksymalny_rozmiar_rozdzialu_zerowego=50;
</syntaxhighlight>
===== {{Śródtytuł|AnalizaRozdzialu}}{{Code|AnalizaRozdzialu}} =====
Jest to funkcja do zbierania danych z pojedynczgo rozdziału o pewnej linii, inicjowana z jego parametrami, także tekstem rozdziału.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function AnalizaRozdzialu(rozdzial,linia_rozdzialu,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|rozdzial}} {{Patrz|rozdzial}} | _1 = Jest to tekst rozdziału.
| 2 = {{Code|linia_rozdzialu}} {{Patrz|linia_rozdzialu}} | _2 = Jest to linia z rozdziałem.
| 3 = {{Code|text}} {{Patrz|text}} | _3 = Jest to tekst rozdziału o pewnym napisie wprowadzenia tekstu.
| 4 = {{Code|poziom_rozdzialu}} {{Patrz|poziom_rozdzialu}} | _4 = Jest to poziom danego rozdziału.
| 5 = {{Code|poczatek_rozdzialu}} {{Patrz|poczatek_rozdzialu}} | _5 = Początek pozycji listy rozdziałów mechanizmu {{Strong|MediaWiki}}.
| 6 = {{Code|numeracja}} {{Patrz|numeracja}} | _6 = Numeracja rozdziału.
| 7 = {{Code|czy_rozdzial_centrowany}} {{Patrz|czy_rozdzial_centrowany}} | _7 = Czy dany rozdział jest centrowany.
}}
====== Tabela artykułów rozdziałów i w nich artykułów oraz jego poszczególnych ======
Tworzymy tabelę: {{Code|tabela_artykulow}} {{LinkPatrz|tabela_artykulow}}, jeżeli nie istnieje, z pustą tablicą, a później dla elementu: {{Code|numer_rozdzialu_w_ksiazce}} {{LinkPatrz|numer_rozdzialu_w_ksiazce}}, jeżeli też go nie ma, to też pustą tablicą. Dalej liczymy napis wprowadzenia tekstu rozdziału dodatniego funkcją: {{LinkŚródtytuł|p.AnalizaNapisuWprowadzeniaTekstu}} i uwzględniamy je w tabeli rozdziałów dla danego rozdziału pod wartością: {{Code|tabela_rozdzial_artykulow[1]}}, w sposób:
<syntaxhighlight lang="lua">
tabela_rozdzial_artykulow[1]={rozdzial_na_tekst,{poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany,},rozdzial,};
</syntaxhighlight>
Dalej wprowadzamy zmienną: {{Code|czy_spis_rzeczy_napis_wprowadzenia_tekstu}} {{Patrz|czy_spis_rzeczy_napis_wprowadzenia_tekstu}}, mówiącą teraz rozpatrujemy rozdziały i artykuły w ramach spisu treści o nagłówkach typu: {{Code|Spis treści}}, czy: {{Code|SPIS RZECZY}}. Jeżeli wyszliszmy poza to, to ta zmienna wtedy przyjmuje wartość fałszywą, a definicja inicjacji tej zmiennej jest:
<syntaxhighlight lang="lua">
local czy_spis_rzeczy_napis_wprowadzenia_tekstu=(poziom_rozdzialu)and(not czy_jest_spis_tresci)and(not dalej_nie_rozwazaj_spis_tresci)and(jakie_spisy_tresci[spreparowany_uzyskany_tekst_rozdzialu]);
</syntaxhighlight>
Gdzie:
{{OpisParametrów
| 1 = {{Code|poziom_rozdzialu}} | _1 = Jak w: {{LinkPatrz|poziom_rozdzialu}}.
| 2 = {{Code|czy_jest_spis_tresci}} {{Patrz|czy_jest_spis_tresci}} | _2 = Czy jesteśmy w spisie treści.
| 3 = {{Code|dalej_nie_rozwazaj_spis_tresci}} {{Patrz|dalej_nie_rozwazaj_spis_tresci}} | _3 = Zmienna mówiąca, że teraz jesteśmy poza spisem treści.
}}
====== Kiedy uwzględniamy artykuły rozdziału ======
Jeżeli jesteśmy w spisie, to zawsze są uwzględniane artykuły rozdziału, bo jest ustawiona zmienna: {{Code|wliczaj_artykuly_tego_rozdzialu}} {{LinkPatrz|wliczaj_artykuly_tego_rozdzialu}}, na {{Code|true}}, a poza na {{Code|nil}}.
Funkcja jest przyszykowana jest dla jednego spisu treści, o ściśle określonym specjalnym napisie wprowadzenia tekstu, w danym spisie na stronie.
====== Iterator linii artykułu spis treści ======
Uruchamiamy iterator używając funkcji lokalnej: {{LinkŚródtytuł|iteratorTekstuNaglowka}}, według wywołania:
<syntaxhighlight lang="lua">
local iterator=iteratorTekstuNaglowka();
</syntaxhighlight>
Ustawiamy zmienną: {{Code|wliczaj_artykuly_tego_rozdzialu}} {{LinkPatrz|wliczaj_artykuly_tego_rozdzialu}}, aby wliczał lub nie, pewne artykuły rozdziału według:
<syntaxhighlight lang="lua">
local wliczaj_artykuly_tego_rozdzialu=((wliczaj_artykuly_tego_rozdzialu)or(not jakie_nie_rozdzialy[rozdzial]));
</syntaxhighlight>
Iterujemy otrzymanym ostatnio iteratorem, uzyskując kolejno zmienne: {{Code|przedrostek_listy}} {{LinkPatrz|przedrostek_listy}}, {{Code|tekstowy_przedrostek}} {{LinkPatrz|tekstowy_przedrostek}}, {{Code|linia}} {{LinkPatrz|linia}}, i {{Code|w_rozdziale}} {{LinkPatrz|w_rozdziale}}.
; Kiedy rozdziałów zerowych nie liczymy jako je{{dk}}
Dla rozdziałów, które nie sa poziomami z listą, sprawdzamy, czy to jest rozdział zerowy przy pomocy funkcji: {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|p=StronicowyParser/Rozdziały}}}}, i sprawdzamy, czy on przekracza rozmiar: {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}, jeżeli jest tym rozdziałem i nie przekracza pewnego rozmiaru, to to jest rozdział traktowany jako zerowy niepomijany rozdział zerowy, wtedy ustawiamy zmienną: {{Code|nie_pomijaj_tego_rozdzialu}} {{Patrz|nie_pomijaj_tego_rozdzialu}}, na {{Code|true}}.
; A jeśli to są rozdziały z listy zaczynające się od dwukropka w linii{{dk}}
Gdy taki rozdział nie pretenduje do zerowych, to sprawdzamy funkcją: {{Code|{{sr|#p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu|p=StronicowyParser/Rozdziały}}}}, czy ten rozdział pominąć, a jeżeli ona przyjmuje wartość odpowiadającej fałszywej, czyli {{Code|false}}, wtedy ustawiamy zmienną: {{Code|nie_pomijaj_tego_rozdzialunie_pomijaj_tego_rozdzialu}} {{LinkPatrz|nie_pomijaj_tego_rozdzialu}}, na taką samą wartość jak poprzednio.
; Inne rozdziały{{dk}}
Dla rozdziałów innych ta wartość przyjmuje postać {{Code|false}}.
; Rozdziały jednak nie pomijane{{dk}}
Dla rozdziałów, które nie są pomijane, wtedy zmienna: {{Code|nie_pomijaj_tego_rozdzialu}} {{LinkPatrz|nie_pomijaj_tego_rozdzialu}}, przyjmuje wartość {{Code|true}}, w takim przypadku wchodzimy do funkcji: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstuZgodnieZJegoSzablonowymiElementami|p=Szablonowe}}}}, wtedy dla linków szablonowych sprawdzamy, czy to są linki określone tablicami: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy}}, {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}} lub ewentualnie funkcją: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}.
Innym sposobem sprawdzania, czy to jest szablon linkowy jest tablica: {{Code|{{sr|#p.szablony_kompletowania_stron_woluminu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_kompletowania_stron_woluminu}}, lub {{Code|{{sr|#p.szablony_licencji|p=StroncowyParser/obiekty}}}} {{LinkPatrz|p.szablony_licencji}}.
Jeżeli to jest szablon linków, wtedy jest zwracana wartość: {{Code|return true,obiekt,kod}}, w przeciwnym wypadku: {{Code|return false,obiekt,kod}}.
Innym sposobem liczenia, czy to jest link, to wtedy może być to link normalny: {{Code|LINKW}}, który można sprawdzić funkcją: {{Code|{{sr|#p["CzyLinkWewnętrzny"]|p=Specjalne}}}}, wtedy jest zwracane {{Code|return true,obiekt,kod}}.
Link też może być zewnętrzny, wtedy to jest: {{Code|LINKZ}}, wtedy funkcja zwraca wartość: {{Code|return true,obiekt,kod}}.
; Kiedy analizujemy artykuły rozdziału{{dk}}
Następnie dla linii: {{Code|linia_rozwazana}} {{LinkPatrz|linia_rozwazana}}, co na podstawie tego liczymy, czy daną linię nie uwzględnić, w obliczeniach według schematu:
<syntaxhighlight lang="lua">
local czy_linia_uwzgledniana=mw.ustring.match(linia_rozwazana,"^%s*%-%-+(.*)%-%-+%s*$");
local czy_linia=((not czy_linia_uwzgledniana)and(mw.ustring.match(linia_rozwazana,"^%s*[%-%+%=%~]+.*$")
or ((#przedrostek_listy==0)and((mw.ustring.match(linia_rozwazana,"!"))and(mw.ustring.match(linia_rozwazana,"[^!]%s*$"))))
or mw.ustring.match(linia_rozwazana,"^%s*<")) or nil);
</syntaxhighlight>
Co następnie jest ustawiana {{Code|nowa_linia}} {{LinkPatrz|nowa_linia}} na wartość {{Code|false}}.
; Warunek analizowania artykułów rozdziałów{{dk}}
W obliczeniach raz uwzględniamy funkcję: {{LinkŚródtytuł|AnalizaLiniiObiekty}}, w ostatniej omawianej pętli, schematycznie:
<syntaxhighlight lang="lua">
if(not czy_linia)then AnalizaLiniiObiekty(linia_rozwazana);end;
</syntaxhighlight>
===== Dalsza część funkcji {{nobold|{{LinkPatrz|opis funkcji-ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}}} =====
Bierzemy zakodowany tekst: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu-IterTekst}}, i po nim iterator: {{Code|iterator}} {{LinkPatrz|iterator-IterTekst}}, wtedy iterujemy po parametrach:
<syntaxhighlight lang="lua">
local parsuj_rozdzialami=nil; ---- ta zmienna służy na wypadek, gdy by nie była żadnych rozwazanych rozdziałów;
for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do
---- za każdym razem jest uruchamiana funkcja: AnalizaRozdzialu, przy rozważanym rozdziale;
AnalizaRozdzialu(rozdzial_tab[1],rozdzial_tab[2],text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany);
---- oznacz zmienną: parsuj_rozdzialami, wartością; true, a póżniej jąnie inicjuj;
if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end
end;
</syntaxhighlight>
Parametry zwracane przez iterator: {{Code|iterator}} {{LinkPatrz|iterator-IterTekst}}:
{{OpisParametrów
| 1 = {{Code|rozdzial_tab}} {{Code|{{=}}}} {{Code|<nowiki>{ [1] = rozdzial, [2] = linia_rozdzialu, }</nowiki>}} | _1 = tabela składająca się z dwóch elementów:
| 2 = Pod elementy tabeli: | nagłówek2 = tak
| 3 = {{Code|rozdzial}} | _3 = Jak w: {{LinkPatrz|rozdzial}}.
| 4 = {{Code|linia_rozdzialu}} | _4 = Jak w: {{LinkPatrz|linia_rozdzialu}}.
| 5 = Inne parametry: | nagłówek5 = tak
| 6 = {{Code|text}} | _6 = Jak w: {{LinkPatrz|text}}.
| 7 = {{Code|poziom_rozdzialu}} | _7 =Jak w: {{LinkPatrz|poziom_rozdzialu}}.
| 8 = {{Code|poczatek_rozdzialu}} | _8 = Jak w: {{LinkPatrz|poczatek_rozdzialu}}.
| 9 = {{Code|numeracja}} | _9 = Jak w: {{LinkPatrz|numeracja}}.
| 10 = {{Code|czy_rozdzial_centrowany}} | _10 = Jak w: {{LinkPatrz|czy_rozdzial_centrowany}}.
}}
Gdy nie napotkano żadnego rozważanego rozdziału, wtedy: {{Code|parsuj_rozdzialami}}, przyjmuje wartość {{Code|nil}}, w takim razie uruchamiana jest funkcja:
<syntaxhighlight lang="lua">
if(not parsuj_rozdzialami)then
AnalizaRozdzialu("Spis treści",nil,tekst_rozwiniety_calego_artykulu,nil,nil,nil,nil);
end;
</syntaxhighlight>
Funkcja zwraca parametry inaczej, gdy artykuł, do którego należy książka jest korzystany, a inaczej, jeśli nie. W takim razie możemy zwracać na dwa sposoby:
<syntaxhighlight lang="lua">
if(czy_artykul_korzystany)then
return tabela_artykulow,tabela_licencji_spisu_tresci,przekierowanie_spisu_tresci;
else
return tabela_artykulow,nil,przekierowanie_spisu_tresci;
end;
</syntaxhighlight>
Przy artykułach korzystanych, co jest określone zmienną: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, tabelę: {{Code|tabela_licencji_spisu_tresci}} {{LinkPatrz|tabela_licencji_spisu_tresci}}, przy jego spisach treści w książkach, do której należy ten artykuł, zwracana jest jako wartość przeważnie jako nierówna {{Code|nil}}, a dla artykułów z innych książkach, ta wartość już jest taka, tzn. przyjmuje wartość {{Code|nil}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
dh9na408w58oyrjtvpgpi0ytxb5cq8z
558347
558343
2026-10-02T19:15:37Z
Persino
2851
/* Opis funkcji: {{nobold|{{Patrz|opis funkcji-ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}}} */
558347
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SpisTreści}}|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 lokalne ==
=== {{Śródtytuł|Ile}}{{Code|Ile}} ===
Funkcja liczy liczbę elementów we wszystkich podtabelach tabeli {{Code|tabela_rozdzial_artykulow2}} {{Patrz|tabela_rozdzial_artykulow2}}, licząc od drugiej tabeli, po pierwszej tabeli mieści się podtabela z informacjami o rozdziale, w której znajdują się artykuły określone dalszymi podtabelami.
Tymi podtabelami są od {{Code|2}} do {{Code|7}}, czyli {{Code|6}} tabelek, w których są artykuły, które zaliczamy do kategorii wliczane, tzn. one nie znajdują się w takich rozdziałach przetłumaczonych na małą literę, ale przedtem na nią była działana funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, usuwając z nich odstępy na końcach, w tym dolne myślniki, a wewnątrz zamieniając kolejne dolne myślniki i spacje na jedną spacją.
Metafunkcja, w metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, w: {{Code|{{ld2|Parametry}}}}, aby porównać to z tablicą {{Code|{{sr|#p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu}}, by zaliczyć je do tego typu:
<syntaxhighlight lang="lua">
p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu={
["licencja"]=true,
["inne"]=true,
["bibliografia"]=true,
["zobacz też"]=true,
["linki zewnętrzne"]=true,
};
</syntaxhighlight>
Twew rozdziały należą do kategorii rozdziałów, w których artykuły są pomijane przez: '''{{ld|StronicowyParser|Stronicowy parser}}''', ale jeżeli one należą do rozdziału spisu treści lub rzeczy, to tam jednak nie są takie, inaczej jest poza.
A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}.
A ta powyższa tabela mieści się: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a jego opis w: {{Code|{{sr|#p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu|p=StronicowyParser/obiekty}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow2)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|numer_rodzaju_artykulu}} | _1 = Numer podtabeli elementtu, do którego wsadzamy element.
| 2 = {{Code|tabela_rozdzial_artykulow2}} | _2 = Tabela wraz podtabelami, od {{Code|1}} do {{Code|13}}, ale liczenie jest od {{Code|2}}.
}}
=== {{Śródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}{{Code|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}} ===
==== Opis pobieżny funkcji ====
Funkcja do wstawiania elementów z ogólnej tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}, za pomocą funkcji wstawianej jako parametr: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{Patrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, do odpowiedniej pozycji artykularnej od: {{Code|2}} do {{Code|13}}, a pozycja {{Code|1}}, to pozycja rozdziałowa, ona jest określana przez zmienną: {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{Patrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, a pozycja, którą wsadzamy to: {{Code|tab_stare}} {{Patrz|tab_stare}}.
Funkcja zwraca pozycje:
<syntaxhighlight lang="lua">
return numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych;
</syntaxhighlight>
Opis tych parametrów funkcji:
{{OpisParametrów
| 1 = {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} | _1 = Jest to wartość zwrócona przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}}, w odróżnieniu od: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, jest mniejszy o jeden, czyli wtedy to była a poziomie przypisywania wartość {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}},
| 2 = {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} | _2 = Pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}.
| 3 = {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} | _3 = Tablica do sprawdzania, czy artykuł z nagłówkiem, ma powtórzenie tego bez nagłówka, czyli dla tego bez tego jest inna numeracja niż z nagłówkiem, a gdy niema tego bez, to wtedy dzięki tej funkcji numeracja tak się zachowuje, jak tam by był ten element, co prawda jest tam dodawany, ale jako z informacją taką, że bz numeru ustalanym przez funkcję: {{LinkŚródtytuł|Ile}}, A przy okazji, aby tego elementu nie dodawać ponownie, to w nim jest ustalana druga zmienna na {{Code|1}}, a wcześniej była na {{Code|0}}, i dlatego ona była wtedy dodawana, a później już tak nie jest.
}}
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY,tabela_rozdzial_artykulow2,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow--[[]])...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{Patrz|self}} | _1 = Zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}}.
| 2 = {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} | _2 = Opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow2,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare);
</syntaxhighlight>
Funkcja jest wywoływana w:
<syntaxhighlight lang="lua">
numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych=WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,WsadzanieParametryDoTablicy(linia,czy_linia_uwzgledniana),tabela_rozdzial_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow);
</syntaxhighlight>
Gdzie funkcja: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, to jest: {{LinkŚródtytuł|WsadzanieParametryDoTablicy}}.
| 3 = {{Code|tabela_rozdzial_artykulow2}} | _3 = Ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow2}}.
| 4 = {{Code|tablica_artykulow_zebranych}} | _4 = Diała jak w: {{LinkPatrz|tablica_artykulow_zebranych}}.
| 5 = {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} | _5 = Jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}}.
| 6 = {{Code|szablon}} {{Patrz|szablon}} | _6 = Jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu.
| 7 = {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - | _7 = Kolejno to jest: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''' i '''nazwa książki'''.
| 8 = {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} | _8 = Jest to nazwa artykułu danego spisu treści.
| 9 = {{Code|pelna_nazwa_spisu_tresci}} {{Patrz|pelna_nazwa_spisu_tresci}} | _9 = Uchwyt do bazy kodowania tekstu strony spisu treści.
| 10 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} | _10 = Nazwa strony szablonowa, jak są wywoływane w postaci szablonowej, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}}.
| 11 = {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} | _11 = Uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 12 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _12 = Tablica bazy zapisana w postaci osobnej tablicy, a nie jej w wewnętrznej bazie, nie jak to było w postaci zmiennej {{LinkPatrz|nazwa_modulu}}, używana zamiast: {{LinkPatrz|nazwa_modulu}}.
| 13 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _13 = Tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}.
| 14 = {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} | _14 = Obiekt i kod, czyli: zmienne charakteryzujące zmienną wnętrza: {{Code|szablon}} {{LinkPatrz|szablon}}.
| 15 = {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} | _15 = Tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy.
| 16 = {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} | _16 = Tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię.
| 17 = {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} | _17 = Numeracja rozdziału, z jakim rozpoczyna się rozdział.
| 18 = {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} | _18 = Gdy link znajduje się w rozdziale dodatnim.
| 19 = {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} | _19 = Cała linia z artykułem lub artykułami, tą linią równie dobrze może być rozdział, tu chodzi o rozdział dodatni.
}}
==== Opis pobieżny funkcji {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} ====
Przedstawiamy tutaj funkcję: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, która jest opisana w punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Definicja funkcji w nagłówku:
<syntaxhighlight lang="lua">
__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow2,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare);
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tabela_rozdzial_artykulow2}} | _1 = Jak w: {{LinkPatrz|tabela_rozdzial_artykulow2}},
| 2 = {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} | _2 = Jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}},
| 3 = {{Code|tab_stare}} | _3 = Jak w: {{LinkPatrz|tab_stare}}.
}}
Ta funkcja została opisana już wcześniej.
==== Szczegółowy opis funkcji głównej ====
Uruchamiamy funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, która jest zdefiniowana w module: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}}. Wywołujemy tę funkcję:
<syntaxhighlight lang="lua">
local tab_pozycja_elementow_w_spisie_rzeczy,numer_rodzaju_artykulu,id,parametry_szablonu,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nil,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
</syntaxhighlight>
Pierwszy elementem: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest to zmienna tablicowa, która opisuje parametry artykularno-linkowe parametry, drugi: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, do której kategorii należy dany artykuł w linku, a trzeci parametr, to: {{Code|id}} {{Patrz|id}}, to zbierane są parametry linkowe z szablonu {{s|SpisTreści}}, czwarty to: {{Code|parametry_szablonu}} {{Patrz|parametry_szablonu}}, w przypadku szablonów inteligentnych linków, to są parametry wywołań tych szablonów, ostatni parametr to: {{Code|kom}} {{Patrz|kom}}, przedstawia on, jeśli {{Code|false}}, to artykuł zakwalifikowany został poprawnie do rozważań, a {{Code|true}} już nie.
To {{LinkPatrz|parametry szablonu}}, to jest tablica z trzech elementów, tzn.:
<syntaxhighlight lang="lua">
local parametry szablonu={tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,};
</syntaxhighlight>
Elementy tablicy:
{{OpisParametrów
| 1 = {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} | _1 = Tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych.
| 2 = {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} | _2 = To jest nazwa uzyskanego szablonu linków inteligentnych lub nie.
| 3 = {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} | _3 = Tabela modyfikatorów rozkładanego szablonu.
}}
Jeśli parametr: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, istnieje, to tworzona jest z niego taka sama wersja lub przy nieistnnieniu parametru {{LinkPatrz|wliczaj_artykuly_tego_rozdzialu}}, do niego jest dodawana jest liczba {{Code|6}}. W ten sposób możemy zbierać artykuły książki i inne,ktore należą do pewnych rozdziałów i które nie należą.
===== {{Śródtytuł|ParametrPierwszy}}{{Code|ParametrPierwszy}} =====
Funkcja zbierające dane z {{Code|tab_artykul}} {{Patrz|tab_artykul}}, którego to jest czteroelementowa tablica, dotycząca danego artykułu. Drugim parametrem: {{Code|czy_niedozwolone}} {{Patrz|czy_niedozwolone}}, jest zmienna logiczna mówiąca, czy wskazać w nazwie artykułu, czy są dozwolone znaki, jest to sprawdzenie według wyrażenia regularnego: {{Code|<nowiki>[|<>{}%[%]]</nowiki>}} {{Patrz|wzor_znaki_niedozwolone}} na podstawie funkcji {{LzLua|mw.ustring.match}}, czyli: {{Code|znaki_niedozwolone}} {{Patrz|znaki_niedozwolone}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
ParametrPierwszy(tab_artykul,czy_niedozwolone)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tab_artykul}} | _1 = Jak w: {{LinkPatrz|tab_artykul}}.
| 2 = {{Code|czy_niedozwolone}} | _2 = Jak w: {{LinkPatrz|czy_niedozwolone}}.
}}
Gdzie: {{Code|tab_artykul}} {{LinkPatrz|tab_artykul}}, który jest pierwszym parametrem przyjmowanym przez funkcję, jest zdefiniowany jako czteroelementowa tablica, którą przypisujemy do czterem osobnych parametrów:
<syntaxhighlight lang="lua">
local artykul=tab_artykul[1];
local parametry=tab_artykul[2];
local naglowek=tab_artykul[3];
local tablica_przekierowania=tab_artykul[4];
</syntaxhighlight>
Jeżeli, któreś z parametrów z: {{LinkPatrz|tab_artykul}}, tzn. element jego {{Code|2}}-gi i {{Code|3}}-ci, istnieje, to układana jest trzyelementowa tablica z elementów od {{Code|1}} do {{Code|3}}, z dodatkowym elementem: {{Code|<nowiki>["LINK"] = true</nowiki>}}, a element czwarty to jest: {{Code|tablica_przekierowania}} {{Patrz|tablica_przekierowania}}, a jeżeli te dwa elementy, nie licząc czwartego, wcale nie istnieją, wtedy jest tworzony łańcuch znakowy z tego pierwszego elementu. Tak tworzymy, nową wersję tablicy: {{Code|tab_artykul}} {{Patrz|tab_artykul-nowa wersja}}, lub łańcuch znakowy, w postaci:
<syntaxhighlight lang="lua">
tab_artykul=((artykul)and(parametry or naglowek))and{[1]=artykul,[2]=parametry,[3]=naglowek,["LINK"]=true,} or artykul;
</syntaxhighlight>
Funkcja zwraca trzy parametry, tzn. parametry: {{LinkPatrz|tab_artykul-nowa wersja}}, {{LinkPatrz|znaki_niedozwolone}} i tablicę przekierowania: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}:
<syntaxhighlight lang="lua">
return tab_artykul,znaki_niedozwolone,tablica_przekierowania;
</syntaxhighlight>
===== Rozwijanie nazwy linku artykułu =====
Do rozwijania nazwy linku służy funkcja: {{Code|{{sr|#p.DekodowanieTekstuNazwLinku|p=StronicowyParser/Pomocne}}}} {{Patrz|p.DekodowanieTekstuNazwLinku}}, pod względem szablonowym i nie tylko.
Funkcja rozwija tą nazwę tym: {{LzLua|frame:preprocess}}, jedynie nie rozwija szablonów stronicowego parsera, podane podkategoriach w kategorii: {{Code|{{lk2|Szablony stronicowe}}}}, za pomocą odpowiednich metod, bo to by wywołało nieskończoną pętle, i dlatego takie szablony są zamieniane tylko na wywołania symboliczne.
==== Dalszy opis funkcji nadrzędnej przy istnieniu parametrów linkowych normalnych, czy szablonowych (linków inteligentnych) ====
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|{{=}}}} {{Code|1}} =====
Tworzony jest numerek: {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{Patrz|numer_rodzaju_artykulu_w_podreczniku}}, który w stosunku do: {{LinkPatrz|numer_rodzaju_artykulu}}, jest większy o jeden, a schemat tej operacji:
<syntaxhighlight lang="lua">
local numer_rodzaju_artykulu_w_podreczniku=numer_rodzaju_artykulu+1;
</syntaxhighlight>
====== Tworzenie tablicy: {{nobold|{{Code|tablica_artykulow_zebranych}}}} ======
Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną wstępnie w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}.
; Tablica{{dk}} {{nobold|{{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}}}}, nie jest tablicą{{dk}}
Gdy element pierwszy: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, nie jest tablicą, wtedy jedynie liczymy, czy ona ma znaki niedozwolone: {{Code|wzor_znaki_niedozwolone}} {{LinkPatrz|wzor_znaki_niedozwolone}}, a póżniej wiedząc ten element, który jest aktualną nazwą artykułu kiążki, tworzymy tabelę {{Patrz|tablica_artykulow_zebranych-imicjacja}}:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,};
</syntaxhighlight>
; Gdy element{{dk}} {{nobold|{{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}}}}, jest łańcuchem znaków{{dk}}
Wpierw liczone są parametry z wywołania, z opcją, czy ma liczyć, czy nazwa artykułu ma znaki niedozwolone, z funkcji: {{LinkŚródtytuł|ParametrPierwszy}}:
<syntaxhighlight lang="lua">
tab_pozycja_elementow_w_spisie_rzeczy[1],znaki_niedozwolone,tablica_przekierowania=ParametrPierwszy(tab_pozycja_elementow_w_spisie_rzeczy[1],true);
</syntaxhighlight>
; Inna książka - atrybut, tzn. czy artykuł wychodzi poza daną książkę, lub jego przekierowanie w niej kieruje na stronę poza nią{{dk}}
Dalej sprawdzane jest, czy książka przyjmuje atrybut, tzn.: '''czy inna książka''', wtedy liczymy to z kodu z tablicy przekierowania: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, jeżeli jej wartość istnieje, tzn.: {{Code|czy_inna_ksiazka}} {{Patrz|czy_inna_ksiazka}}:
<syntaxhighlight lang="lua">
local czy_inna_ksiazka=tablica_przekierowania and tablica_przekierowania[1] and tablica_przekierowania[1][5] or nil;
</syntaxhighlight>
; Tablica przekierowania artykułu względem bieżącej książki{{dk}}
Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, który przedstawia, czy to jest artykuł bieżącej książki, którego przekierowanie kieruje, wtedy ten parametr ma wartość {{Code|true}}, a gdy adres przekierowania wskazuje na inną książkę, wtedy {{Code|false}}. Jeśli ten parametr ma wartość fałszywą, wtedy jest sprawdzane, czy jest tablicą w: {{Code|czy_tablica}} {{Patrz|czy_tablica}}, według:
<syntaxhighlight lang="lua">
czy_tablica=parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1]);
</syntaxhighlight>
Lub w przeciwnym wypadku liczymy parametry artykularne z tablicy przekierowania: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek przekierowania, w tej tablicy, istnieje, wtedy parametr: {{Code|czy_tablica}} {{LinkPatrz|czy_tablica}}, przyjmuje wartość {{Code|true}}, w przeciwnym wypadku wartość fałszywą.
Gdy ten element nie jest tablicą, to tworzona jest nazwa pełna artykułu: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}} i umieszczana w tablicy: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z podobną tablicą początkową jak w poprzednim przypadku jego tworzenia, czyli jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}.
; Tablica zebranych artykułów i porównywanie artykułu z nagłówkiem, czy istnieje wcześniejszy artykuł bez niego{{dk}}
Gdy element jest jednak tablicą, też jest liczona pełna nazwa artykułu (gdy nazwa artykułu przekierowania istnieje, wtedy ona jest liczona z: {{Code|tablica_przekierowania[2]}}, w przeciwnym wypadku, jeśli element: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}}, jest tablicą, wtedy liczymy ją z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1][1]}}, w innym wypadku z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}}), a z niej liczymy tablicę: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}, w przypadku pierwszego artykułu nienagłówkowego.
A w przypadku pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie, artykuł poprzedni nie istnieje, a więc tego tam nie ma tam w takim przypadku.
Gdy funkcja napotkała artykuł o takim samym stronie, co poprzednio, to do wartości początkowej, bez definiowania jeszcze raz tej samej tablicy, jest ustawiane odpowiednio:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych[3]=true;
</syntaxhighlight>
Co informuje, że artykuł jest ten sam, tylko inny nagłówek niż poprzedni, a poprzedni pierwszy jest bez niego.
====== Rozwijanie nazwy linku ======
Kompletowany jest drugi element tablicy: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkPatrz|p.DekodowanieTekstuNazwLinku}}. Dalej z tej nazwy są usuwane znaki specjalne według funkcji: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, z modułu: {{Code|{{ld2|Specjalne}}}}. Następnie działamy funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, które końcowe spacje usuwa, a wewnętrz powtarzające zamienia kolejne na jedną spację.
====== Dodawanie do tablicy problemów, jeśli nastąpił problem ze znakami niedozwolonymi ======
A między czasie, gdy mamy niedozwolone znaki: {{Code|znaki_niedozwolone}} {{LinkPatrz|znaki_niedozwolone}}, za pomocą funkcji pytającej sprawdzamy, czy element inny zgłoszeniowy został dodany do tablicy problemów: {{Code|{{sr|#p.CzyJestTakiProblemowyElement|p=StronicowyParser/Problemy}}}}, aż w końcu dodajemy ten problem, jeśli go nie ma przy pomocy funkcji: {{Code|{{sr|#p.UstawTakiProblemowyElement|p=StronicowyParser/Problemy}}}}.
====== {{Śródtytuł|inicjacja_i_kompletowanie_zmiennych}}Ustalanie nazwy jednostki, kompletowanie linii artykułów i inicjowanie pozycji, w tabeli zebranych elementów, w tabeli zebranych elementów ======
Ustalamy nazwę jednostki z funkcji: {{Code|{{sr|#p.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem|p=StronicowyParser/Potrzebne}}}}, i inicjujemy tą wartością, czyli: {{Code|nazwa jednostki}} {{Patrz|nazwa jednostki}}, wartość starą: {{Code|stara_nazwa_jednostki}} {{Patrz|stara_nazwa_jednostki}}, według:
<syntaxhighlight lang="lua">
---- Piszanie pełnej nazwy jednostki bez parametrów i nagłówka;
local nazwa_jednostki=stronicowyparser_potrzebne_modul.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(tab_pozycja_elementow_w_spisie_rzeczy[1],false);
---- Inicjowanie starej wartości tą policzoną;
local stara_nazwa_jednostki=nazwa_jednostki;
</syntaxhighlight>
Dalej {{Śródtekst|uchwyt=tabela_rozdzial_artykulow2|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}}}, według:
<syntaxhighlight lang="lua">
if(not tabela_rozdzial_artykulow2[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow2[numer_rodzaju_artykulu_w_podreczniku]={};end;
</syntaxhighlight>
Co {{Śródtekst|uchwyt=linia_artykokow|tekst=dalej linię artykułów {{Code|linia_artykokow}} {{LinkPatrz|linia_artykokow}}, kompletujemy, funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, z modułu: {{Code|{{ld2|Szablonowe}}}}, znając tablicę: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}}}, według:
<syntaxhighlight lang="lua">
linia_artykokow=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_artykokow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
</syntaxhighlight>
====== Uwzględnianie niepodanego elementu nienagłówkowego w tablicy zebranych parametrów ======
Gdy tablica przekierowania: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, istnieje, wtedy sprawdzamy, czy zmienna logiczna: {{Code|czy_tablica}} {{LinkPatrz|czy_tablica}}, jest prawdą i czy: {{Code|stara_nazwa_jednostki}} {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej: {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie artykułu przekierowania.
Inicjujemy nową zmienną: {{Code|przekierowanie}} {{LinkPatrz|przekierowanie}}, z artykułu, parametrów i nagłówka, ale wpierw sprawdzamy, czy dwa ostatnie istnieją, według:
<syntaxhighlight lang="lua">
przekierowanie=przekierowanie and ((tablica_przekierowania[3] or tablica_przekierowania[4]) and {przekierowanie, tablica_przekierowania[3], tablica_przekierowania[4],["LINK"]=true,}or przekierowanie) or nil;
</syntaxhighlight>
Tworzony jest nowy element: {{Code|nazwa jednostki}} {{Patrz|nazwajednostki-nowy}}, z: {{LinkPatrz|nazwa jednostki}}, parametrów i nagłówka, według rysu:
<syntaxhighlight lang="lua">
nazwa_jednostki={nazwa_jednostki, tab_pozycja_elementow_w_spisie_rzeczy[1][2], tab_pozycja_elementow_w_spisie_rzeczy[1][3],["LINK"]=true,};
</syntaxhighlight>
Jeżeli parametr drugi: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}.
Wsadzamy element: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, do zbioru: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, przy pomocy funkcji: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Następnie jej drugiemu elementowi: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, do tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}, na pozycji: {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, według funkcji: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej.
Jeżeli tablica przekierowania: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, jednak nie istnieje, wtedy tak samo sprawdzamy, co poprzednio potem, ale po spełnieniu tych warunków robimy inną tablicą: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, i tę tablicę robimy podobnie, i inicjujemy te same elementy też podobnie.
====== Uwzględnianie pozycji podanej w tablicy zebranych elementów ======
Tworzymy zmienną: {{Code|ile_dodac_do_poziomu_artykulu}} {{Patrz|ile_dodac_do_poziomu_artykulu}}, z drugiego elementu tablicy: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, następnię tworzymy inną zmienną: {{Code|ile_dodac_do_poziomu_artykulu_lub_nil}} {{Patrz|ile_dodac_do_poziomu_artykulu_lub_nil}}, co uwidaczniamy wzorem:
<syntaxhighlight lang="lua">
local ile_dodac_do_poziomu_artykulu_lub_nil=((ile_dodac_do_poziomu_artykulu)and(ile_dodac_do_poziomu_artykulu>0))and ile_dodac_do_poziomu_artykulu or nil;
</syntaxhighlight>
Tą zmienną wykorzystamy do sformułowania: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}.
{{Śródtekst|tekst=Tworzymy zmienną: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}, na pozycji: {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, przy pomocy funkcji: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.|uchwyt=__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|>{{=}}}} {{Code|2}} =====
Będziemy tutaj operowali, gdy parametr drugi zwracany z funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, wskazuje na nie artykuł książki, zatem ten rozdział jest właśnie dla tego przypadku.
====== Odkodowanie i przygotowanie zmiennych artykułu linku, jej nazwy, także kodu języka i projektu ======
* Gdy pierwszy element tablicy: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}.
* Dla drugiego takiego elementu z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, co jest nazwą linku, wtedy gdy nazwa linku normalnego, czy szablonowego, jest zakodowana, to ją odkodujemy, którego każdy jego element kod odkodujemy według funkcji: {{LinkPatrz|p.DekodowanieTekstuNazwLinku}}, następnie z niej usuwamy znaki specjalne według: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, następnie usuwamy końcowe spacje i wewnątrz kolejne spacje zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
* Dla trzeciego i czwartego takiego elementu z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, te elementy odkodujemy, następnie z nich usuwamy końcowe spacje, a wewnątrz kolejne spacje zastępujemy jedną, według tej samej funkcji, co powyżej.
====== Przygotowanie zmiennych, inicjowanie tablicy: {{Code|tab_stare}}, i wsadzanie jej do tablicy ogólnej: {{Code|tabela_rozdzial_artykulow2}} ======
Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow2}}, także co {{PobierzŚródtekst|linia_artykokow}}, co wszystko robimy podobnie jak w rozdziale: {{LinkŚródtytuł|inicjacja_i_kompletowanie_zmiennych}}.
{{PobierzŚródtekst|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
==== Definicja tablicy: {{Code|tab_stare}}, inicjowanie jej elementów w różnych przypadkach ====
Przedstawiamy tutaj ogólną definicję zmiennej: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. Ta wersja jest jedynie sformułowana dla artykułów w rozdziale, a nie dla rozdziałów, bo w tablicy, do której jest ona wsadzana przyjmuje ona możliwy numerek od "2" do "13", a nie również "1". Jej wersja ogólna:
<syntaxhighlight lang="lua">
local tab_stare=
{
---- Początek elementów alternatywnych
{
---- Początek wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[1], -- artykuł bez pełnej nazwy ksiązki, bez parametrów i nagłówka, bo ich nie posiadałna samym początku;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- artykuł bez pełnej nazwy książki, bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[2], -- nazwa linku artykułu normalnego, czy szablonowego;
---- Początek elementów alternatywnych dla przekierowania
---- Poczatek parametrów przekierowania
{
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
tablica_przekierowania[3], -- parametry przekierowania artykułu;
tablica_przekierowania[4], -- nagłówek przekierowania artykułu;
["LINK"]=true, -- zmienna świadcząca, że nazwa przekierowania artykułu jest z parametrami i nagłówkiem;
},
---- lub
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
---- Koniec parametrów przekierowania
tablica_przekierowania[1], -- tablica o definicji: {
nazwa_przestrzeni_strony_przekierowania, -- nazwa przestrzzeni nazw przekierowania artykułu;
nazwa_przestrzeni_ksiazki_strony_przekierowania, -- nazwa przestrzeni książki przekierowania artykułu;
nazwa_ksiazki_strony_przekierowania, -- nazwa książki orzekierowania artykułu;
true/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce;
true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie;
czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach;
};
---- lub
nil, -- dotycząca przekierowania artykułu, a tutaj strona nie ma przekierowania, więc: nil;
nil, -- dotycząca tablicy książki, na którą wskazuje przekierowanie, a tutaj nie ma tablicy, więc: nil;
---- Koniec elementów alternatywnych dla przekierowania
tab_pozycja_elementow_w_spisie_rzeczy[3], -- kod języka;
tab_pozycja_elementow_w_spisie_rzeczy[4], -- kod projektu;
tab_pozycja_elementow_w_spisie_rzeczy[5], -- adres artykułu bez przetworzenia w linku normalnym,czy szablonowym;
ile_dodac_do_poziomu_artykulu_lub_nil, -- parametr mający tylko wartości: 1, gdy do aktualnego poziomu musi być dodane jeden - ta wartość, tylko dotyczy artykułów należących do tej samej książki, lub: nil, gdy nic, czyli w pozostałych przypadkach;
tab_pozycja_elementow_w_spisie_rzeczy[6], -- "url", pozycja świadcząca, że to jest link zewnętrzny, a nil, gdy to jest normalny link;
},
---- lub
tab_pozycja_elementow_w_spisie_rzeczy[1], -- nazwa artykułu linku, która nie posiada, ani parametrów w sobie, a po nim nagłówka, lub bezpośrednio po nazwie;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- nazwa artykułu bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec elementów alternatywnych
{
#przedrostek_listy, -- poziom listy, w którym jest artykuł, dla artykułów w linii z listą, w innym wypadku dla artykułu znajdującego się w rozdziale dodatnim, czy ujemnym jest zero;
przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])", przeciwnie dla artykułów w rozdziale dodatnim ma wartość pustą;
tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu, gdy nie ma takiej numeracji, bo nie da się jej wydzielić, to ma wartość pustą;
w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym, wtedy "true", w przeciwnym wypadku: "false";
},
linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare";
true/false, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: false;
true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika, przeciwnie: false;
---- Początek elementów alternaatywnych
Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow2), -- który numer artykułu, w momencie wsadzenia do tabeli zbierania rozdziałów i w nich artykułów, nawet w rozdziale;
---- lub
nil, -- nil, wtedy gdy link jest tak sobie dodany, który nie należy do żadnego spisu, a po nim elementy jego z nagłówkiem natomiast należą;
---- Koniec elementów alternatywnych
};
</syntaxhighlight>
W powyższym: {{Tag|syntaxhighlight|parametry=lang="lua"}}, dla elementu: {{Code|<nowiki>---- lub</nowiki>}}, jest powiedziane, że są dostępne alternatywy, które są zawarte w tablicy, że wybieramy te, aby nie spowodować czysto podwójnej tablicy, aby każda tablica zawierały inne elementy, jak wiele, a nie jedną tablicę, jak i łańcuchy znaków, wartość nil, powoduje, że czy ma być taka tablica, ale nie podwójna, co to znaczy podowójna, tzn. tablica w sobie zawiera inną jedyną tablicę, a tak nie może być, a jak zawiera jedną tablicę, to musi posiadać inne nienilowe elementy.
== Funkcje tablicy transportu ==
=== {{Śródtytuł|p.AnalizaNapisuWprowadzeniaTekstu}}{{Code|p.AnalizaNapisuWprowadzeniaTekstu}} ===
Funkcja przyjmuje jako parametr nieskompletowaną i nieprzetworzony tekst napisu wprowadzenia tekstu. On kompletujei przekształca go w odpowiedni sposób,aby otrzymać czysty tekst tytułu rozdziału.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AnalizaNapisuWprowadzeniaTekstu(rozdzial,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|rozdzial}} | _1 = Ten tekst tytułu rozdziału, o którym mówimy.
| 2 = {{Code|pelna_nazwa_spisu_tresci}} | _2 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci}}
| 3 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _3 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _5 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
==== Obiekty typu {{nobold|{{Code|SZABLON}}}} ====
Funkcja korzysta z funkcji: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, funkcja ma zdefiniowaną pierwszą jej funkcję, która dla: {{Code|obiekt {{=}} "SZABLON"}}, używamy pierwsze dwie tabelę, te tabele:
Pierwsza {{Patrz|szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu}}, która służy do zamieniania szablonów na ich parametry, tutaj pierwsza, to jest tablica: {{Code|{{sr|#p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu}}:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu={
["MDL:RozszerzonyLink"]=1,
["Kompletność"]="",
["Kompletność krótka"]="",
["Kompletność junior"]="",
["Książka"]="",
};
</syntaxhighlight>
Druga: {{Code|{{sr|#p.szablony_dozwolone_w_nazwach_linkowych|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_dozwolone_w_nazwach_linkowych}}, też służy do tego samego.
Funkcja wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja {{Patrz|p.szablony_dozwolone_w_nazwach_linkowych}}:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_w_nazwach_linkowych={
["Korekta"] =2,
};
</syntaxhighlight>
===== Funkcje zawartości i dodatków, dla szablonów =====
One służą do zamieniania wywołań szablonowych na odpowiednie ich zawartości parametrów określone przez numery parametrów tych elementów w tch tabelach. Jeżeli przy którym wywolaniu przy wykorzystaniu kolejnych tych tabel przy użyciu funkcji: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, nastąpiło zamienienie, to funkcja pierwsza w: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, zakańcza się z tą wartością. A jeżeli nie to uruchamia się funkcj dodatków: {{Code|{{sr|#p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu|p=StronicowyParser/Rozdziały}}}}, a jeśli nastąpiło zastąpienie, to funkcja kompletowania się kończy z tą wartością.
===== Szablonowe linki =====
Dalej jeżeli tak się nie stało, to uruchamia się funkcja parametrów, w którym wywołanie szablonowe jest rozkładane na nazwę szablonu, modyfikatory i parametry. Dalej jest spradzanie , czy jest to link inteligentny według funkcji: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}, a gdy jest, to funkcja kończy swoje działania z nazwą tego linku lub jego adreesem wewnętrznym, a jeśli on nie jest tym, to sprawdza, czy są inne szablonowe linki, które podejrzewa się poprzez wywołanie funkcji: {{Code|{{sr|#p.NazwaInnegoSzablonowegoLinkowegoObiektu|p=StronicowyParser/Potrzebne}}}}, a jeżeli jest tym linkiem, to funkcja składania zwraca też jak poprzednio nazwę linku lub jego adres wewnętrzny, ewentualnie z dodatkiem. A gdy nie, to w innym przypadku sprawwdzane, czy to jest inny link wewnętrzny generowane przez szablony, która spradza funkcja tutaj: {{Code|{{sr|#p.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy|p=StronicowyParser/Potrzebne}}}}, a jeżeli szablon jest tym linkiem, to kunkcja składania zwraca jego nazwę linkową.
===== Szablony rozwijane przez {{lpg|JavaScript}} =====
A następnym krokiem jest sprawdzanie, czy nazwa szablonu jest jednych z elementów z tablicy: {{LinkPatrz|p.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu}}, która ma ten element, te szablony wymienione w tej tablicy są po to, aby służyły do rozwijania przez JavaScript, są to elementy wikikodu, które są pracochłonne ze względu na ich skomplikowany kod, czy wikikod, nawet {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, i dlatego ich się nie rozwija przez stronicowy parser: {{Code|{{ld2|StronicowyParser}}}}, te nazwy szablonów są określone tablicą: {{Code|{{sr|#p.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu}}:
<syntaxhighlight lang="lua">
p.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu={
["Cytuj"]=true,
["Cytuj stronę"]=true,
["Cytuj pismo"]=true,
["Cytuj odcinek"]=true,
["Cytuj książkę"]=true,
["Cytuj grę komputerową"]=true,
};
</syntaxhighlight>
I funkcja wtedy zwraca skompletowany szablon bez rozwijania jego, pod warunkiem, jeżeli jest tym szablonem o tej nazwę szablonu wywołującego.
===== Co jest zwracane w przypadku szablonów =====
Te powyżej elementy dla funkcji parametrów, w niej wartości są zwracane do niej, a jeżeli ona przyjmuje wartość nienilową, to do funkcji składania zwracana jest jego wartość, a przeciwnie jest zwracane pierwszy parametr szablonu do niej.
==== Obiekty typu: {{nobold|{{Code|NOWIKI}}}}, {{nobold|{{Code|PRE}}}} i {{nobold|{{Code|ŹRÓDŁO}}}} ====
A gdy dla elementów, jeśli nazwa obiektu jest: {{Code|obiekt {{=}} "NOWIKI"}}, {{Code|obiekt {{=}} "PRE"}}, lub: {{Code|obiekt {{=}} "ŹRÓDŁO"}}, znacznik jest rozkładany na czynniki pierwsze, a jeżeli nnie ma zawartości, to przez funkcję skłądania jest zwracana wartość pusta, a jeśli nie, to pewne znaki specjalne tagu {{Tag|nowiki}}, które mają w nim być zamienione na tekst, są zamieniane na kody '''HTML''', co po zamienieniu ta ona jest zwracana.
==== Obiekty typu: {{nobold|{{Code|MATH}}}}, {{nobold|{{Code|GALERIA}}}}, {{nobold|{{Code|MAPAOBRAZU}}}}, i {{nobold|{{Code|INNEPRE}}}} ====
A jeżeli wartość: {{Code|obiekt}}, jest nie równa: {{Code|MATH}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} lub {{Code|INNEPRE}}, wtedy z zawartości zmiennej: {{Code|szablon}}, są wykorzystanne funkcje z modułu: {{Code|{{ld2|Specjalne}}}}, które w tej podanej zmiennej są usuwane z komentarze z: {{Code|{{sr|#p["UsuńKomentarze"]|p=Specjalne}}}}, zamieniane są linki zewnętrzne i wewnętrzne na ich nazwy lub adresy według: {{Code|{{sr|#p["ZamieńLinkiZewnętrzneNaTekst"]|p=Specjalne}}}} i {{Code|{{sr|#p["ZamieńLinkiWewnętrzneNaTekst"]|p=Specjalne}}}}. Są usuwane rozwinięte znaczniki szablonów stylów używając do tego celu: {{Code|{{sr|#p["UsuńSzablonyStylów"]|p=Specjalne}}}}. Są też usuwane znaczniki na podstawie: {{Code|{{sr|#p["UsuńZnaczniki"]|p=Specjalne}}}}. Z tekstu szablonu są usuwane normalne kategorie nieszablonowe: {{Code|{{sr|#p"UsuńKategorie"]|p=Specjalne}}}}. Są też usuwane z zawartości wywołania plików i interwiki z: {{Code|{{sr|#p["UsuńWywołaniaPlików"]|p=Specjalne}}}} i {{Code|{{sr|#p["UsuńInterwiki"]|p=Specjalne}}}}. Dalej z tego obiektu są usuwane znaki specjalne z: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}.
A gdy mamy do czynienia z innymi znacznikami, to są zwracane jest zamiast niego wartość pusta do funkcji kompletowania.
Dane z funkcji kompletowane są zwracane, które z niej są usuwane znaki specjalne z całości tekstu rozdziału: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, i znaki białe z końców tekstu i powtarzarzające się te znaki kolejne z wewnętrz są zamieniane na jedną spację, to się dzieje według funkcji: {{Code|{{sr|#p["UsuńZbędneBiałeZnaki"]|p=Specjalne}}}}.
Cały taki wynik operacji robione w funkcji w nagłówku są zwracane do niej, to jest, co uzyskujemy nazwa rozdziału w postaci przetworzonej.
=== {{Śródtytuł|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}{{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} ===
Opisane tutaj są podfunkcje, z których korzysta ta funkcja, co one robią, do czego są wykorzystane.
==== Opis funkcji: {{nobold|{{Patrz|opis funkcji-ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}}} ====
Funkcja służy do zbierania nagłówków i z niej danych, tzn. linków normalnych i inteligentnych, a także są zbierane nagłówki z listy bez artykułów i do nich elementy podlisty z artykułami w postaci wywołań linkowych w niej. Tworzona jest specjalnie dla niegp tablica: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, która w odpowiedni po przekształaceniach wsadzana jest do tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} | _1 = Jak w: {{LinkPatrz|self}}.
| 2 = {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} | _2 = Kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}.
| 3 = {{Code|nazwa_spisu_tresci}} | _3 = Jak w: {{LinkPatrz|nazwa_spisu_tresci}}.
| 4 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _4 = Czy dany spis treści dla książki dla jej artykułu korzystanego, dla innej książki, wtedy to artykuł niekorzystany.
| 5 = {{Code|adres_ksiazki_glownego_spisu_tresci}} {{Patrz|adres_ksiazki_glownego_spisu_tresci}} | _5 = Jest to wewnętrzny adres książki głównego spisu treści,jest to taki adresm na który wskazuje przekierowanie innej książki.
| 6 = {{Code|__FUNKCJA_ZBIERANIA_DANYCH}} {{Patrz|__FUNKCJA_ZBIERANIA_DANYCH}} | _6 =
{{Śródtekst|uchwyt=__FUNKCJA_ZBIERANIA_DANYCH|tekst=
Jest to funkcja, która zbiera informacje o aktualnym artykule, która jest spisem treści, w postaci nieprzetworzonej przez funkcje z modułu: {{Code|{{ld2|StronicowyParser/Rozdziały}}}}, opisanego w: {{Code|{{sr|Rozdziały|StronicowyParser - Rozdziały|p=StronicowyParser}}}}, ta funkcja kopiuje, np. tabele danych bazy modułu: {{Code|{{m|Szablonowe}}}}, tzn: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, i tabelę rozkładu elementów w niej na czynniki pierwsze, tzn.: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, co jest napisane w module: {{Code|{{ld2|StronicowyParser/ZbieranieDanychStron}}}}, a w dokumentacji: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
__FUNKCJA_ZBIERANIA_DANYCH(nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona);
</syntaxhighlight>
Funkcja nie zwraca niczego, jest funkcją, zwykłą bezwartościową procedurą, niezwracającą niczego.
}}
}}
==== Funkcje lokalne ====
Funkcja ma w sobie też definicję funkcji lokalnych zdefiniowanej w tej funkcji tutaj opisywanej.
===== {{Śródtytuł|FunkcjaIteratoraTekstuZakodowego}}{{Code|FunkcjaIteratoraTekstuZakodowego}} =====
Funkcja służy do pomijania tego, co nie jest linkiem wewnętrznym, czy zewnętrznym, czyli oznaczone kodami: {{Code|LINKW}} lub {{Code|LINKZ}}, czy nawet szablonem linkuinteligentnego, czy innego służacego do generowania spisu treści, do tego celu również używa funkcji: {{LinkŚródtytuł|CzySzablonLinkLubLicencja}}, oraz tego co nie jest w liście okreslonym wzorem {{Code|<nowiki>\n([#:*;]+)</nowiki>}} z mozliwym na początku tekstem, ale nie z kodami, w danej pozycji listy, lub co ewentualnie nie może być w możliwej liście, tzn.: {{Code|<nowiki>\n([#:*;]*)</nowiki>}}, ale wtedy musi tam być z tekstem, ale nie z kodami, na początku danej pozycji listy, nawet jeśli to nie jest lista, to też tak samo.
Jeżeli funkcja nie ma kodów linków wewnętrznych, czy to normalnych, czy szablonowych, to się zakańcza z wartością domyślną {{Code|nil}}, w przeciwnym wypadku do sprawdzenia używa do tego funkcji: {{LinkŚródtytuł|PomijajLinkiOrazLicencje}}, do sprawdzania, czy to jest link lub licencji, a jeżeli ta funkcja zwraca wartość {{Code|true}}, to cała funkcja zwraca {{Code|nil}}. Jeżeli oba te sposoby nie dały rezultatu {{Code|true}}, to wtedy funkcja zwraca wartość pustą, czyli okreslonym ciągiem znakowym o szwerokości zerowej.
Funkcja ma w sobie dwie definicje funkcji: {{LinkŚródtytuł|PomijajLinkiOrazLicencje}} i {{LinkŚródtytuł|CzySzablonLinkLubLicencja}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local FunkcjaIteratoraTekstuZakodowego=function(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}.
| 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}.
| 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod}}.
}}
====== {{Śródtytuł|PomijajLinkiOrazLicencje}}{{Code|PomijajLinkiOrazLicencje}} ======
Funkcja służy do sprawdzania, czy są odpowiednie szablony w kodzie.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function PomijajLinkiOrazLicencje(szablon)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}.
}}
Funkcja sprawdza, czy to są szablony spisu treści określone tablicą o kluczach, którymi są nazwy szablonów, z wartościami {{Code|true}}, czyli: {{Code|{{sr|#p.szablony_licencji|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_licencji}}:
<syntaxhighlight lang="lua">
p.szablony_licencji={
["Licencja"]=true,
};
</syntaxhighlight>
Tzn., czy to są szablony ozdobne woluminu, którego tablica: {{Code|{{sr|#p.szablony_ozdobne_stron_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_ozdobne_stron_woluminu}}, jest podobnie zbudowana, co poprzednia:
<syntaxhighlight lang="lua">
p.szablony_ozdobne_stron_woluminu={
["MDL:RozszerzonyLink"]=true,
};
</syntaxhighlight>
A jeżeli to są te szablony, to funkcja zwraca wartość {{Code|true}}.
Jeżeli jednak to nie są te szablony, należy użyć tablic, tak samo zbudowanej jak poprzednie, czyli: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.linki_szablony_elementy_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.linki_szablony_elementy_spisu_rzeczy={
["SpisTreści"]=true,
["Sekcja referencyjna"]=true,
["Sr"]=true,
["Link wewnętrzny"]=true,
["Ly"]=true,
["LinkOgólne"]=true,
["Lo"]=true,
};
</syntaxhighlight>
lub innej, inaczej zbudowanej niż poprzednie, ale ważne, że ma wartość niefałszywą, czyli taką tablicą: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}, jest:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
Jak są te nazwy szablonów określone ich kluczami tych tablic, to funkcja zwraca wartość {{Code|true}}. A jeżeli jednak nie to funkcją: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}, jest sprawdzane,czy to jest link inteligentny, nawet przekierowanie, jeżeli link taki jest, to funkcja zwraca wartość w tym wypadku {{Code|true}}. W przeciwnym wypadku, jak nie zwrócił tej wartości,bo taka nie jest nazwa szablonu, to funkcja nic nie zwraca.
====== {{Śródtytuł|CzySzablonLinkLubLicencja}}{{Code|CzySzablonLinkLubLicencja}} ======
Funkcja sprawdzająca za pomocą: {{LinkŚródtytuł|PomijajLinkiOrazLicencje}}, na podstawie parsowania tekstu szablonu funkcją: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, z parsowanym przechwytywanym typem obiektu: {{Code|obiekt}} {{LinkPatrz|obiekt}}, równym {{Code|SZABLON}}. A jeżeli funkcja ta wspomniana w tekście zwróci {{Code|true}}, to funkcja taki obiekt policzy.
Jeżeli liczba policzonych obiektów i znalezionych w wyniku parsowania jest większa od zera, to funkcja w nagłówku zwróci wartość {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local CzySzablonLinkLubLicencja=function(szablon)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}.
}}
===== {{Śródtytuł|iteratorTekstuNaglowka}}{{Code|iteratorTekstuNaglowka}} =====
Jest to funkcja iteratora, którego funkcja zwracana (iterator) zwraca parametry, dla rozdziałów dodatnich i pozycji list.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function iteratorTekstuNaglowka()
... ---- Kod przed zwróceniem iteratora;
return function()
... ---- Ciało funkcji iteratora;
end;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = Brak parametrów. | komórka1 = tak
}}
Iterator (funkcja zwracana przez funkcję w nagłówku) zwraca parametry w wyniku kolejnych wywołań:
<syntaxhighlight lang="lua">
return przedrostek_listy,tekstowy_przedrostek,wyzyskane_wywolanie_szablonu_spis_tresci,true/false;
</syntaxhighlight>
Parametry zwracane przez iterator:
{{OpisParametrów
| 1 = {{Code|przedrostek_listy}} | _1 = Przedrostek pozycji listy, dla rozdziałów dodatnich jest wartością pustą.
| 2 = {{Code|tekstowy_przedrostek}} | _2 = Numeracja pozycji w liście lub w nagłówku dodatnim.
| 3 = {{Code|wyzyskane_wywolanie_szablonu_spis_tresci}} | _3 = Jest to rozdział bez numeracji i przedrostka pozycji listy.
| 4 = {{Code|true/false}} | _4 = Wartość {{Code|true}} świadczy o rozdziale dodatnim, a w przypadku innym funkcja zwraca zawsze wartość tą {{Code|false}} jako ostatni element zwracany.
}}
Funkcja jest przykowana na rozdziałów dodatnich i pozycji list oraz innych linii, dla tego pierwszego funkcja zwraca:
<syntaxhighlight lang="lua">
return "","",wartosc,true;
</syntaxhighlight>
Gdzie {{Code|wartość}} jest to zawartość napisu wprowadzenia tekstu (rozdziału dodatniego).
W przypadku list oraz innych niż rozdziały dodatnie samo wyrażenie regularne {{lpg|Lua}} w {{lpr|Lua|Scribunto}} jest okreslone przez wyrażenie:
<syntaxhighlight lang="lua">
local re="([#:*;]*)[^%S\n]*([%d%.]*[^%S\n]*[^\n]+)";
</syntaxhighlight>
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu|p=StronicowyParser/Rozdziały}}}}, aby zamienić zawartość pozycji listy na rozdział bez numeracji i numerację, i dlatego ta funkcja zwraca te dwie wartości. Gdy funkcja jak nie znajdzie więcej linii (wyszukań), to zwraca wartość {{Code|nil}} mówiąca o zakończeniu iteracji iteratora, tzn. dane dla iteratora się zakończyły.
===== {{Śródtytuł|LiniaArtykulow}}{{Code|LiniaArtykulow}} =====
Funkcja dla szablonów kompletowania określonym tabelką: {{Code|{{sr|#p.szablony_kompletowania_stron_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_kompletowania_stron_woluminu}}, o definicji:
<syntaxhighlight lang="lua">
p.szablony_kompletowania_stron_woluminu={
["Kompletność"]=true,
["Kompletność krótka"]=true,
["Kompletność junior"]=true,
["Książka"]=true,
};
</syntaxhighlight>
Rozdziela linię na wiele obsługiwanych podlinii.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function LiniaArtykulow(linia)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|linia}} {{Patrz|linia}} | _1 = Pojedyncza przetworzona linia.
}}
====== {{Śródtytuł|SzablonAnalizujKompletnosc}}{{Code|SzablonAnalizujKompletnosc}} ======
Funkcja sprawdza, czy dane wywołania szablonu, ma swoją nazwę szablonu, która jest nazwą szablonu kompletowania.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function SzablonAnalizujKompletnosc(szablon)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}.
}}
====== Dalszy opis funkcji ======
Możliwe są dwie opcje, szablon kompletowania jest pierwszy, a drugi drugi, lub odwrotnie. Funkcja obsługuje te oba przypadki. Ona stawia przecinkiem dla obu wersji ustawień, jeśli potraktować układem link i szablon kompletowania, to wstawiany jest on pomiędzy tymi układami, aby rozdzielić linię, a w liście bez jego znaków pozycji, na elementy przy pomocy funkcji: {{LzLua|mw.text.split}}, z opcją jako drugi parametr, aby uwzględniał wyrażenia regularne {{Code|false}}. W tych rozdzielonych linią tą funkcją dzielącą ciąg znakowy na tabelę, kody '''HTML''' przecinka są zamieniane na zwykły przecinek.
Funkcja zwraca tabelę podzielonej linii na mniejsze podlinie, który można iterować funkcją: {{Code|pairs}} lub {{Code|ipairs}}.
===== {{Śródtytuł|WsadzanieParametryDoTablicy}}{{Code|WsadzanieParametryDoTablicy}} =====
Funkcja z parametrami, która uruchamia inną funkcję uruchamianą w: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}, która wstawia tabelę {{LinkPatrz|tab_stare}}, do ogólnej tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}, ewentualnie do {{Code|tabela_rozdzial_artykulow}} {{Patrz|tabela_rozdzial_artykulow}} na pozycję {{Code|numer_podtablicy_w_tablicy}} {{Patrz|numer_podtablicy_w_tablicy}}, a dokładniej na pozycję {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}} w funkcji {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function WsadzanieParametryDoTablicy(linia,czy_linia_uwzgledniana)
return function(tabela_rozdzial_artykulow2,numer_podtablicy_w_tablicy,tab_stare)
... ---- ciało funkcji.
end;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|linia}} | _1 = Jak w: {{LinkPatrz|linia}}.
| 2 = {{Code|czy_linia_uwzgledniana}} {{Patrz|czy_linia_uwzgledniana}} | _2 = Czy linię ma uwzględnić w powiększaniu poziomu o jeden dla artykułu.
}}
Parametry zwracanej funkcji przez tę w nagłówku:
{{OpisParametrów
| 1 = {{Code|tabela_rozdzial_artykulow2}} | _1 = Jak w: {{LinkPatrz|tabela_rozdzial_artykulow2}}.
| 2 = {{Code|numer_podtablicy_w_tablicy}} | _2 = Jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}.
| 3 = {{Code|tab_stare}} | _3 = Jak w: {{LinkPatrz|tab_stare}}.
}}
====== {{Śródtytuł|CzyZaliczac}}{{Code|CzyZaliczac}} ======
Funkcja sprawdza, czy z początkiem linii pozycji listy, bez przedrostka listy, jest z możliwym cudzysłowem, po którym następują liczby, litery, lub myślniki dolne, w takim pzypadku linia nie może składać się z nich, po ktorym występują znaki interpunkcyjne. Jeśli to sprawdzenie było pozytywne funkcja zwraca wartość logiczną odpwowiadającą {{Code|true}}, w przeciwnym wypadku jak {{Code|false}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function CzyZaliczac()...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = Brak parametrów funkcji. | komórka1 = tak
}}
Funkcja zwraca informację, czy daną linię traktować jako rozdział, chodzi tu o pozycje list, a w przypadku rozdziałów dodatnich wiadomo, że one są właśnie, że rozdziałami.
====== Dalszy opis funkcji ======
Funkcja sprawdza w funkcji zwracanej, czy rozważany rozdział jest centrowany danego artykułu, który siedzi pod rozdziałem lub w samym rozdziale, sprawdza, czy artykuł jest w rozdziale, sprawdza czy linia jest uwzględniana: {{Code|czy_linia_uwzgledniana}} {{LinkPatrz|czy_linia_uwzgledniana}}. Funkcja sprawdza, czy sekcja czy w: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, czy istnieje element: {{Code|tab_stare[2]}} {{Patrz|tab_stare[2]}}, i dalszy: {{Code|tab_stare[2][1]}} {{Patrz|tab_stare[2][1]}} - ten element jest to w: {{Code|tab_stare}}, taki: {{Code|#przedrostek_listy}} {{Patrz|#przedrostek_listy}}, a jeżeli to sprawdzenie przeszło pozytywnie, który dla tego jest poziomem listy, lub zerowego rozdziału lub rozdziału dodatniego.
Dla każdej linii zmienna: {{Code|nowa_linia}} {{Patrz|nowa_linia}}, przyjmuje wartość {{Code|false}}, wtedy dla przypadku przeciwnego, tzn. gdy mamy rozdział i uwzględniamy artykuły w jednej linii, którym jest rozdział będacy pozycją listy, w zmiennej: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, jest ustawiany element: {{Code|tab_stare[2][4]}} {{Patrz|tab_stare[2][4]}}, czyli zmienna: {{Code|w_rozdziale}} {{LinkPatrz|w_rozdziale}}, zaczyna przyjmować wartość {{Code|true}}. Wsadzany jest wtedy do tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}, na pozycję: {{Code|numer_podtablicy_w_tablicy}} {{LinkPatrz|numer_podtablicy_w_tablicy}}, czyli to jest też: {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, element {{Code|tab_stare}} {{LinkPatrz|tab_stare}}.
Gdy: {{Code|nowa_linia}} {{LinkPatrz|nowa_linia}}, gdy jednak przyjmuje wartość {{Code|false}}, wtedy jeśli poziom rozdzialu istnieje i przedrostek listy {{LinkPatrz|#przedrostek_listy}} jest większy od zera, i istnieje wiele artykułów w pozycji liście, wtedy: {{Code|ile>0}}, lub funkcja: {{LinkŚródtytuł|CzyZaliczac}}, przyjmuje wartość odpowiadające prawdziwej, w taki przypadku zmiennej: {{Code|nowa_linia}} {{LinkPatrz|nowa_linia}}, przydzielamy wartość {{Code|true}}, by dalsze artykuły można było wsadzić, do tablicy z nowym rozdziałem. Powiększamy numer rozdziału o jeden, tzn.: {{Code|numer_rozdzialu_w_ksiazce}} {{Patrz|numer_rozdzialu_w_ksiazce}}, wtedy w zmiennej: {{Code|tabela_artykulow}} {{Patrz|tabela_artykulow}}, tabeli rozdziałów i w nich artykułów dla tej pozycji przydzielamy wartość równą tablicy pustej. Liczymy rozdział dla tego rozdział z artykułami, z funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}, liczymy napis rozdziału, wtedy do pierwszej pozycji tablicy utworzonej w: {{Code|tabela_artykulow}} {{LinkPatrz|tabela_artykulow}}, dla miejsca: {{Code|numer_rozdzialu_w_ksiazce}} {{LinkPatrz|numer_rozdzialu_w_ksiazce}}, czyli: {{Code|tabela_rozdzial_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}, piszemy:
<syntaxhighlight lang="lua">
tabela_rozdzial_artykulow[1]={rozdzial_na_tekst,{-#przedrostek_listy,przedrostek_listy,tekstowy_przedrostek,false,},linia,};
</syntaxhighlight>
Gdzie: {{Code|rozdzial_na_tekst}} {{Patrz|rozdzial_na_tekst}}, to policzony rozdział, {{Code|-#przedrostek_listy}} {{Patrz|-#przedrostek_listy}} to poziom rozdziału ujemnego, i dlatego minus. A: {{Code|przedrostek_listy}}, to znaki poczatkowe z listy: {{Code|wzor_do_linii_z_lista}} {{LinkPatrz|wzor_do_linii_z_lista}}, a: {{Code|tekstowy_przedrostek}}, to numeracja tego rozdziału. Wartość {{Code|false}} to jest ze ten rozdział nie jest centrowany, a: {{Code|linia}} {{LinkPatrz|linia}}, to wyzyskana linia bez początku pozycji listy. Ustawiamy: {{Code|tab_stare[2][4]}} {{LinkPatrz|tab_stare[2][4]}}, na wartość {{Code|true}} i element: {{Code|tab_stare[6]}} {{Patrz|tab_stare[6]}}, ustawiamy na zero. Tworzymy tablicę pustą na pozycję: {{LinkPatrz|numer_podtablicy_w_tablicy}}, tablicy: {{Code|tabela_rozdzial_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}, i do tej tablicy dodajemy: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, za pomocą funkcji: {{LzLua|table.insert}}.
A jeżeli nie jest tworzony nowy rozdział z listy w tabeli: {{Code|tabela_artykulow}} {{LinkPatrz|tabela_artykulow}}, to na pozycję: {{Code|numer_podtablicy_w_tablicy}} {{LinkPatrz|numer_podtablicy_w_tablicy}}, jest dodawany element: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, również tak jest robione, gdy artykuły znajdują się w rozdziale dodatnim, tzn. równaniowej lub centrowanej, tzn. wtedy: {{Code|w_rozdziale}} {{LinkPatrz|w_rozdziale}}, przyjmuje wartość {{Code|true}}.
===== {{Śródtytuł|AnalizaLiniiObiekty}}{{Code|AnalizaLiniiObiekty}} =====
Za pomocą funkcji: {{LinkŚródtytuł|LiniaArtykulow}}, linia: {{Code|linia_rozwazana}} {{Patrz|linia_rozwazana}}, jest rozdzielana na wiele linii. To wiele linii w postaci tabeli, są iterowane od: {{Code|k {{=}} 1}}, do: {{Code|k {{=}} #tab_linia}}, gdzie: {{Code|#tab_linia}} {{Patrz|#tab_linia}}, jest to długość linii, tzn. liczba elementów numerowanych tablicy, tzn. od 1 do zwyż aż do apotkania najbliższej przerwy lub końca. Wtedy dla pojedyńczej literacji mamy: {{Code|tab_linia[k]}} {{Patrz|tab_linia[k]}}.
Iterujemy po kodach dla linii: {{Code|tab_linia[k]}} {{LinkPatrz|tab_linia[k]}}, przy pomocy funkcji: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} {{Patrz|p.IteratorSzablonowyZakodowanegoTekstu}}, iteratorem: {{Code|iterator2}} {{Patrz|iterator2}}.
Inicjujemy zmienną: {{Code|tab_nieobslugiwane {{=}} nil}}, następnie iterujemy: {{LinkPatrz|iterator2}}, uzyskując w każdej iteracji: {{Code|szablon}} {{LinkPatrz|szablon}}, {{Code|obiekt}} {{LinkPatrz|obiekt}}, i {{Code|kod}} {{LinkPatrz|kod}}.
Gdy mamy do czynienia: {{Code|SZABLON}}, lub: {{Code|LINKW}}, albo: {{Code|LINKZ}}, wtedy dla elementów tego pierwszego bierzemy tablicę: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}, dla elementu: {{Code|nazwa_szablonu}} {{LinkPatrz|nazwa_szablonu}}.
Jeżeli ten element: {{Code|tabela_spisu}}, istnieje, element pierwszy: {{Code|tabela_spisu[1]}}, jest równy wartości {{Code|true}}, wtedy mamy do czynienia z szablonem {{s|SpisPozycja}}. Jej element: {{Code|tabela_spisu["numer_link"]}}, istnieje i jest równy: {{Code|tyt}} {{Patrz|tyt}}. Iterujemy po kluczach i jego wartościach tego szablonu i sprawdzamy, który element jest równy właśnie tej wartości, a jeżeli jest taki, to dla elementów nie równych niemu, a właściwie w jego wartości iterujemy po kodach funkcją: {{LinkPatrz|p.IteratorSzablonowyZakodowanegoTekstu}}, dla tej wartości, w ten sposób zbieramy tablicę wielowymiarową najpierw po: {{Code|obiekt}} {{LinkPatrz|obiekt}}, póżniej po: {{Code|kod}}, {{LinkPatrz|kod}}, którą nazwiemy: {{Code|tab_nieobslugiwane}} {{Patrz|tab_nieobslugiwane}}, którego każda jej wartość jest równa {{Code|true}}. Ta tablica mówi dla jakich elementów ma nie zbierać w tablicy elementów w głównej tablicy rozdziałów i jego artykułach.
Dla elementu {{Code|tyt}} {{LinkPatrz|tyt}} tablicy parametrów przedrostek listy {{Code|przedrostek_listy}} ustawiamy na pusty, i liczmy numerację {{Code|tekstowy_przedrostek}} i zmienną {{Code|szablon}} {{LinkPatrz|szablon}} i ustawiamy zmienną {{Code|przerwij}} {{Patrz|przerwij}} na {{Code|true}}, aby dla tego szablonu nie zbierać elementów w tablicy rozdziałów i jego artykułów.
W przypadku przeciwnym dla: {{Code|tabela_spisu}}, gdy ma wartość {{Code|false}}, wtedy mamy do czynienia z funkcją: {{s|SpisZw}}. Dla niej liczymy: {{Code|przedrostek_listy}}, którą ustawiamy na pustą wartość. A: {{Code|tekstowy_przedrostek}}, liczmy uzyskując parametr o kluczu: {{Code|tabela_spisu["numer"]}}, którym jest parametr o numerze: {{Code|1}}, i {{Code|szablon}} {{LinkPatrz|szablon}}, który liczmy z parametrów szablonu o kluczu {{Code|tabela_spisu["link"]}}, którym jest numer {{Code|2}}. Ustawiamy tutaj zmienną: {{Code|}} {{LinkPatrz|przerwij}}, na wartosć {{Code|true}}.
====== {{Śródtytuł|CzyObslugiwane}}{{Code|CzyObslugiwane}} ======
Funkcja sprawdzająca, które elementy są obsługiwane, jeśli istnieje tablica: {{Code|tab_nieobslugiwane}} {{LinkPatrz|tab_nieobslugiwane}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local CzyObslugiwane=function()...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = Brak parametrów. | komórka1 = tak
}}
====== Dalszy opis funkcji ======
; Uwzględnianie tablicy, reprezentujące artykuł w rozdziale, wstawiany do tablicy danego rozdziału{{dk}}
Sprawdzany jest warunek:
<syntaxhighlight lang="lua">
if((--[[wliczaj_artykuly_tego_rozdzialu]] true)and(not przerwij)and((not tab_nieobslugiwane)or(CzyObslugiwane())))then
</syntaxhighlight>
Jeżeli jest on spełniony, wtedy wywołujemy funkcję: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}, później dla:
<syntaxhighlight lang="lua">
if((not czy_obslugiwane)and(not numer_rodzaju_artykulu_poprz))then
</syntaxhighlight>
Sprawdzamy, czy jest zebrana licencja z autorem według zmiennej: {{Code|licencja_z_autorem}} {{Patrz|licencja_z_autorem}}, i sprawdzamy, czy: {{Code|szablon}} {{LinkPatrz|szablon}}, jest wnetrzem szablonu, jeżeli tak, to ona przyjmuje wartość odpowiadająca prawdziwej, przeciwnie ma fałszywą.
Jeżeli ten pierwszy warunek jest niespełniony, to tylko liczymy to samo coostatnio.
; Szablony licencji, i jego parametry, uwzględnianie jego tylko raz ca całą książkę, mieszcząca się w artykule głównej książki{{dk}}
Następnie dla warunku, który musi być spełniony:
<syntaxhighlight lang="lua">
if((not numer_rodzaju_artykulu_poprz)and(not przerwij)and(link_szablon)and((not tab_pozycja_elementow_w_spisie_rzeczy)or(not tab_pozycja_elementow_w_spisie_rzeczy[1]))and(czy_artykul_korzystany)and(licencja_z_autorem))then
</syntaxhighlight>
Sprawdzamy szablony licencji, takich jak: {{s|Licencja}}, według tablicy: {{Code|{{sr|#p.szablony_licencji|p=StronicowyParser/obiekty}}}}.
Dla parametrów szablonu, liczymy jego parametry o kluczach, tzn.: {{Code|Autor}} {{Patrz|Autor}}, {{Code|Ukończone szkoły}} {{Patrz|Ukończone szkoły}}, {{Code|Email}} {{Patrz|Email}}, {{Code|Dotyczy}} {{Patrz|DotyczyDotyczy}}, {{Code|Licencjonowanie}} {{Patrz|Licencjonowanie}}, {{Code|Umowa prawna}} {{Patrz|Umowa prawna}} i {{Code|Konsekwencje}} {{Patrz|Konsekwencje}}, którego wartości przydzielamy do odpowiednich zmiennych. Każdą z tych zmiennych kompletujemy funkcją: {{Code|{{sr|#p.DekodowanieTekstuDekodowanieTekstu|p=StronicowyParser/Potrzebne}}}}, poprzez zwracaną przez nią funkcję, w której jest wykorzystywana funkcją: {{LzLua|frame:preprocess}}, do rozwijania. A dla elementu istniejącego: {{Code|Autor}}, piszemy zmienną: {{Code|licencja_z_autorem}} {{LinkPatrz|licencja_z_autorem}}, któremu przydzielamy wartość {{Code|false}}, co spowoduje, że nie będziemy analizowali jeszcze raz innego szablonu licencji.
Te zmienne tego szablonu zbieramy natomiast w tablicy: {{Code|tabela_licencji_spisu_tresci}} {{Patrz|tabela_licencji_spisu_tresci}}, dane dotyczące licencji, więc:
<syntaxhighlight lang="lua">
tabela_licencji_spisu_tresci={autor, szkoly, email, dotyczy, licencjonowanie, umowa_prawna, konsekwencje};
</syntaxhighlight>
Co później przerywamy pętle po: {{Code|iterator2}} {{LinkPatrz|iterator2}}, instrukcją: {{Code|break}}.
==== Dalszy opis funkcji {{nobold|{{LinkPatrz|opis funkcji-ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}}} ====
Ściągamy tekst, tabelę bazy i tabelę parametrów strony o nazwie: {{Code|nazwa_modulu}}, przy pomocy funkcji: {{Code|{{sr|#p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony|p=StronicowyParser/Tekst}}}}, według:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=nil;
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
return nil;
end,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Uruchamiamy funkcję: {{Code|__FUNKCJA_ZBIERANIA_DANYCH}} {{LinkPatrz|__FUNKCJA_ZBIERANIA_DANYCH}}, jeżeli istnieje.
Dalej wywołujemy funkcję: {{Code|{{sr|#p.IterTekst|p=StronicowyParser/Rozdziały}}}}, w celu znalezienia tekstu: {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}}, i iteratora: {{Code|iterator}} {{Patrz|iterator}}, po napisach wprowadzenia tekstu rozdziałów i ich zawartości rozdziałów i na podstawie:
<syntaxhighlight lang="lua">
local iterator,tekst_rozwiniety_calego_artykulu=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,true,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,
__FUNKCJA, ---- funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adresu szablonu, określa i zawraca jego zawartość;
__FUNKCJA2, ---- funkcja operująca na przygotowanej zawartości napisu wprowadzenia tekstu i tekście napisu wprowadzenia tekstu (rozdziału);
__FUNKCJA_ANALIZA_SPISU ---- funkcja do analizy i modyfikacji tekstu (może zwracać wartość: nil) przed samym kodowaniem, jeżeli tekst jest w ogóle jest taki, a jeśli nie, ta funkcja wtedy nie jest uruchamiana, funkcja ta bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: IterTekst, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: SpisTreści, co jest uwidocznione w module: Moduł:StronicowyParser/SpisTreści;
);
</syntaxhighlight>
Opis parametrów zwracanych:
{{OpisParametrów
| 1 = {{Code|iterator}} {{Patrz|iterator-IterTekst}} | _1 = Iterator po rozdziałach i jego zawartościach.
| 2 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu-IterTekst}} | _2 = Tekst przetworzony rozdziału.
}}
Odczytujemy tabelę: {{LinkPatrz|p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu}} i dalej: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}, o definicji:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={
["spis treści"]=true,
["spis tresci"]=true,
["spis rzeczy"]=true,
};
</syntaxhighlight>
Robimy kopię tych tabel i przyłączamy do metatabeli: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, przy pomocy funkcji: {{LzLua|setmetatable}}, aby nie odrózniać tych rozdziałów ze względu na wielkość liter i polskie znaki.
Inicjiujemy zmienną: {{Code|numer_rozdzialu_w_ksiazce}} {{LinkPatrz|numer_rozdzialu_w_ksiazce}}, wartością: {{Code|1}}, aby zbierać po kolei artykuły ze poszczególnego pojedynczego spisu treści.
Ustawiamy maksymalny rozmiar rozdziału zerowego na {{Code|50}}, w zmiennej: {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{Patrz|maksymalny_rozmiar_rozdzialu_zerowego}}, według:
<syntaxhighlight lang="lua">
local maksymalny_rozmiar_rozdzialu_zerowego=50;
</syntaxhighlight>
===== {{Śródtytuł|AnalizaRozdzialu}}{{Code|AnalizaRozdzialu}} =====
Jest to funkcja do zbierania danych z pojedynczgo rozdziału o pewnej linii, inicjowana z jego parametrami, także tekstem rozdziału.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function AnalizaRozdzialu(rozdzial,linia_rozdzialu,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|rozdzial}} {{Patrz|rozdzial}} | _1 = Jest to tekst rozdziału.
| 2 = {{Code|linia_rozdzialu}} {{Patrz|linia_rozdzialu}} | _2 = Jest to linia z rozdziałem.
| 3 = {{Code|text}} {{Patrz|text}} | _3 = Jest to tekst rozdziału o pewnym napisie wprowadzenia tekstu.
| 4 = {{Code|poziom_rozdzialu}} {{Patrz|poziom_rozdzialu}} | _4 = Jest to poziom danego rozdziału.
| 5 = {{Code|poczatek_rozdzialu}} {{Patrz|poczatek_rozdzialu}} | _5 = Początek pozycji listy rozdziałów mechanizmu {{Strong|MediaWiki}}.
| 6 = {{Code|numeracja}} {{Patrz|numeracja}} | _6 = Numeracja rozdziału.
| 7 = {{Code|czy_rozdzial_centrowany}} {{Patrz|czy_rozdzial_centrowany}} | _7 = Czy dany rozdział jest centrowany.
}}
====== Tabela artykułów rozdziałów i w nich artykułów oraz jego poszczególnych ======
Tworzymy tabelę: {{Code|tabela_artykulow}} {{LinkPatrz|tabela_artykulow}}, jeżeli nie istnieje, z pustą tablicą, a później dla elementu: {{Code|numer_rozdzialu_w_ksiazce}} {{LinkPatrz|numer_rozdzialu_w_ksiazce}}, jeżeli też go nie ma, to też pustą tablicą. Dalej liczymy napis wprowadzenia tekstu rozdziału dodatniego funkcją: {{LinkŚródtytuł|p.AnalizaNapisuWprowadzeniaTekstu}} i uwzględniamy je w tabeli rozdziałów dla danego rozdziału pod wartością: {{Code|tabela_rozdzial_artykulow[1]}}, w sposób:
<syntaxhighlight lang="lua">
tabela_rozdzial_artykulow[1]={rozdzial_na_tekst,{poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany,},rozdzial,};
</syntaxhighlight>
Dalej wprowadzamy zmienną: {{Code|czy_spis_rzeczy_napis_wprowadzenia_tekstu}} {{Patrz|czy_spis_rzeczy_napis_wprowadzenia_tekstu}}, mówiącą teraz rozpatrujemy rozdziały i artykuły w ramach spisu treści o nagłówkach typu: {{Code|Spis treści}}, czy: {{Code|SPIS RZECZY}}. Jeżeli wyszliszmy poza to, to ta zmienna wtedy przyjmuje wartość fałszywą, a definicja inicjacji tej zmiennej jest:
<syntaxhighlight lang="lua">
local czy_spis_rzeczy_napis_wprowadzenia_tekstu=(poziom_rozdzialu)and(not czy_jest_spis_tresci)and(not dalej_nie_rozwazaj_spis_tresci)and(jakie_spisy_tresci[spreparowany_uzyskany_tekst_rozdzialu]);
</syntaxhighlight>
Gdzie:
{{OpisParametrów
| 1 = {{Code|poziom_rozdzialu}} | _1 = Jak w: {{LinkPatrz|poziom_rozdzialu}}.
| 2 = {{Code|czy_jest_spis_tresci}} {{Patrz|czy_jest_spis_tresci}} | _2 = Czy jesteśmy w spisie treści.
| 3 = {{Code|dalej_nie_rozwazaj_spis_tresci}} {{Patrz|dalej_nie_rozwazaj_spis_tresci}} | _3 = Zmienna mówiąca, że teraz jesteśmy poza spisem treści.
}}
====== Kiedy uwzględniamy artykuły rozdziału ======
Jeżeli jesteśmy w spisie, to zawsze są uwzględniane artykuły rozdziału, bo jest ustawiona zmienna: {{Code|wliczaj_artykuly_tego_rozdzialu}} {{LinkPatrz|wliczaj_artykuly_tego_rozdzialu}}, na {{Code|true}}, a poza na {{Code|nil}}.
Funkcja jest przyszykowana jest dla jednego spisu treści, o ściśle określonym specjalnym napisie wprowadzenia tekstu, w danym spisie na stronie.
====== Iterator linii artykułu spis treści ======
Uruchamiamy iterator używając funkcji lokalnej: {{LinkŚródtytuł|iteratorTekstuNaglowka}}, według wywołania:
<syntaxhighlight lang="lua">
local iterator=iteratorTekstuNaglowka();
</syntaxhighlight>
Ustawiamy zmienną: {{Code|wliczaj_artykuly_tego_rozdzialu}} {{LinkPatrz|wliczaj_artykuly_tego_rozdzialu}}, aby wliczał lub nie, pewne artykuły rozdziału według:
<syntaxhighlight lang="lua">
local wliczaj_artykuly_tego_rozdzialu=((wliczaj_artykuly_tego_rozdzialu)or(not jakie_nie_rozdzialy[rozdzial]));
</syntaxhighlight>
Iterujemy otrzymanym ostatnio iteratorem, uzyskując kolejno zmienne: {{Code|przedrostek_listy}} {{LinkPatrz|przedrostek_listy}}, {{Code|tekstowy_przedrostek}} {{LinkPatrz|tekstowy_przedrostek}}, {{Code|linia}} {{LinkPatrz|linia}}, i {{Code|w_rozdziale}} {{LinkPatrz|w_rozdziale}}.
; Kiedy rozdziałów zerowych nie liczymy jako je{{dk}}
Dla rozdziałów, które nie sa poziomami z listą, sprawdzamy, czy to jest rozdział zerowy przy pomocy funkcji: {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|p=StronicowyParser/Rozdziały}}}}, i sprawdzamy, czy on przekracza rozmiar: {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}, jeżeli jest tym rozdziałem i nie przekracza pewnego rozmiaru, to to jest rozdział traktowany jako zerowy niepomijany rozdział zerowy, wtedy ustawiamy zmienną: {{Code|nie_pomijaj_tego_rozdzialu}} {{Patrz|nie_pomijaj_tego_rozdzialu}}, na {{Code|true}}.
; A jeśli to są rozdziały z listy zaczynające się od dwukropka w linii{{dk}}
Gdy taki rozdział nie pretenduje do zerowych, to sprawdzamy funkcją: {{Code|{{sr|#p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu|p=StronicowyParser/Rozdziały}}}}, czy ten rozdział pominąć, a jeżeli ona przyjmuje wartość odpowiadającej fałszywej, czyli {{Code|false}}, wtedy ustawiamy zmienną: {{Code|nie_pomijaj_tego_rozdzialunie_pomijaj_tego_rozdzialu}} {{LinkPatrz|nie_pomijaj_tego_rozdzialu}}, na taką samą wartość jak poprzednio.
; Inne rozdziały{{dk}}
Dla rozdziałów innych ta wartość przyjmuje postać {{Code|false}}.
; Rozdziały jednak nie pomijane{{dk}}
Dla rozdziałów, które nie są pomijane, wtedy zmienna: {{Code|nie_pomijaj_tego_rozdzialu}} {{LinkPatrz|nie_pomijaj_tego_rozdzialu}}, przyjmuje wartość {{Code|true}}, w takim przypadku wchodzimy do funkcji: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstuZgodnieZJegoSzablonowymiElementami|p=Szablonowe}}}}, wtedy dla linków szablonowych sprawdzamy, czy to są linki określone tablicami: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy}}, {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}} lub ewentualnie funkcją: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}.
Innym sposobem sprawdzania, czy to jest szablon linkowy jest tablica: {{Code|{{sr|#p.szablony_kompletowania_stron_woluminu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_kompletowania_stron_woluminu}}, lub {{Code|{{sr|#p.szablony_licencji|p=StroncowyParser/obiekty}}}} {{LinkPatrz|p.szablony_licencji}}.
Jeżeli to jest szablon linków, wtedy jest zwracana wartość: {{Code|return true,obiekt,kod}}, w przeciwnym wypadku: {{Code|return false,obiekt,kod}}.
Innym sposobem liczenia, czy to jest link, to wtedy może być to link normalny: {{Code|LINKW}}, który można sprawdzić funkcją: {{Code|{{sr|#p["CzyLinkWewnętrzny"]|p=Specjalne}}}}, wtedy jest zwracane {{Code|return true,obiekt,kod}}.
Link też może być zewnętrzny, wtedy to jest: {{Code|LINKZ}}, wtedy funkcja zwraca wartość: {{Code|return true,obiekt,kod}}.
; Kiedy analizujemy artykuły rozdziału{{dk}}
Następnie dla linii: {{Code|linia_rozwazana}} {{LinkPatrz|linia_rozwazana}}, co na podstawie tego liczymy, czy daną linię nie uwzględnić, w obliczeniach według schematu:
<syntaxhighlight lang="lua">
local czy_linia_uwzgledniana=mw.ustring.match(linia_rozwazana,"^%s*%-%-+(.*)%-%-+%s*$");
local czy_linia=((not czy_linia_uwzgledniana)and(mw.ustring.match(linia_rozwazana,"^%s*[%-%+%=%~]+.*$")
or ((#przedrostek_listy==0)and((mw.ustring.match(linia_rozwazana,"!"))and(mw.ustring.match(linia_rozwazana,"[^!]%s*$"))))
or mw.ustring.match(linia_rozwazana,"^%s*<")) or nil);
</syntaxhighlight>
Co następnie jest ustawiana {{Code|nowa_linia}} {{LinkPatrz|nowa_linia}} na wartość {{Code|false}}.
; Warunek analizowania artykułów rozdziałów{{dk}}
W obliczeniach raz uwzględniamy funkcję: {{LinkŚródtytuł|AnalizaLiniiObiekty}}, w ostatniej omawianej pętli, schematycznie:
<syntaxhighlight lang="lua">
if(not czy_linia)then AnalizaLiniiObiekty(linia_rozwazana);end;
</syntaxhighlight>
===== Dalsza część funkcji {{nobold|{{LinkPatrz|opis funkcji-ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}}} =====
Bierzemy zakodowany tekst: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu-IterTekst}}, i po nim iterator: {{Code|iterator}} {{LinkPatrz|iterator-IterTekst}}, wtedy iterujemy po parametrach:
<syntaxhighlight lang="lua">
local parsuj_rozdzialami=nil; ---- ta zmienna służy na wypadek, gdy by nie była żadnych rozwazanych rozdziałów;
for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do
---- za każdym razem jest uruchamiana funkcja: AnalizaRozdzialu, przy rozważanym rozdziale;
AnalizaRozdzialu(rozdzial_tab[1],rozdzial_tab[2],text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany);
---- oznacz zmienną: parsuj_rozdzialami, wartością; true, a póżniej jąnie inicjuj;
if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end
end;
</syntaxhighlight>
Parametry zwracane przez iterator: {{Code|iterator}} {{LinkPatrz|iterator-IterTekst}}:
{{OpisParametrów
| 1 = {{Code|rozdzial_tab}} {{Code|{{=}}}} {{Code|<nowiki>{ [1] = rozdzial, [2] = linia_rozdzialu, }</nowiki>}} | _1 = tabela składająca się z dwóch elementów:
| 2 = Pod elementy tabeli: | nagłówek2 = tak
| 3 = {{Code|rozdzial}} | _3 = Jak w: {{LinkPatrz|rozdzial}}.
| 4 = {{Code|linia_rozdzialu}} | _4 = Jak w: {{LinkPatrz|linia_rozdzialu}}.
| 5 = Inne parametry: | nagłówek5 = tak
| 6 = {{Code|text}} | _6 = Jak w: {{LinkPatrz|text}}.
| 7 = {{Code|poziom_rozdzialu}} | _7 =Jak w: {{LinkPatrz|poziom_rozdzialu}}.
| 8 = {{Code|poczatek_rozdzialu}} | _8 = Jak w: {{LinkPatrz|poczatek_rozdzialu}}.
| 9 = {{Code|numeracja}} | _9 = Jak w: {{LinkPatrz|numeracja}}.
| 10 = {{Code|czy_rozdzial_centrowany}} | _10 = Jak w: {{LinkPatrz|czy_rozdzial_centrowany}}.
}}
Gdy nie napotkano żadnego rozważanego rozdziału, wtedy: {{Code|parsuj_rozdzialami}}, przyjmuje wartość {{Code|nil}}, w takim razie uruchamiana jest funkcja:
<syntaxhighlight lang="lua">
if(not parsuj_rozdzialami)then
AnalizaRozdzialu("Spis treści",nil,tekst_rozwiniety_calego_artykulu,nil,nil,nil,nil);
end;
</syntaxhighlight>
Funkcja zwraca parametry inaczej, gdy artykuł, do którego należy książka jest korzystany, a inaczej, jeśli nie. W takim razie możemy zwracać na dwa sposoby:
<syntaxhighlight lang="lua">
if(czy_artykul_korzystany)then
return tabela_artykulow,tabela_licencji_spisu_tresci,przekierowanie_spisu_tresci;
else
return tabela_artykulow,nil,przekierowanie_spisu_tresci;
end;
</syntaxhighlight>
Przy artykułach korzystanych, co jest określone zmienną: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, tabelę: {{Code|tabela_licencji_spisu_tresci}} {{LinkPatrz|tabela_licencji_spisu_tresci}}, przy jego spisach treści w książkach, do której należy ten artykuł, zwracana jest jako wartość przeważnie jako nierówna {{Code|nil}}, a dla artykułów z innych książkach, ta wartość już jest taka, tzn. przyjmuje wartość {{Code|nil}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
5c2g4thrdf4c8brg33mz0ljrd0l7acj
558349
558347
2026-10-02T19:20:27Z
Persino
2851
/* Opis funkcji: {{nobold|{{Patrz|opis funkcji-ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}}} */
558349
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SpisTreści}}|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 lokalne ==
=== {{Śródtytuł|Ile}}{{Code|Ile}} ===
Funkcja liczy liczbę elementów we wszystkich podtabelach tabeli {{Code|tabela_rozdzial_artykulow2}} {{Patrz|tabela_rozdzial_artykulow2}}, licząc od drugiej tabeli, po pierwszej tabeli mieści się podtabela z informacjami o rozdziale, w której znajdują się artykuły określone dalszymi podtabelami.
Tymi podtabelami są od {{Code|2}} do {{Code|7}}, czyli {{Code|6}} tabelek, w których są artykuły, które zaliczamy do kategorii wliczane, tzn. one nie znajdują się w takich rozdziałach przetłumaczonych na małą literę, ale przedtem na nią była działana funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, usuwając z nich odstępy na końcach, w tym dolne myślniki, a wewnątrz zamieniając kolejne dolne myślniki i spacje na jedną spacją.
Metafunkcja, w metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, w: {{Code|{{ld2|Parametry}}}}, aby porównać to z tablicą {{Code|{{sr|#p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu}}, by zaliczyć je do tego typu:
<syntaxhighlight lang="lua">
p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu={
["licencja"]=true,
["inne"]=true,
["bibliografia"]=true,
["zobacz też"]=true,
["linki zewnętrzne"]=true,
};
</syntaxhighlight>
Twew rozdziały należą do kategorii rozdziałów, w których artykuły są pomijane przez: '''{{ld|StronicowyParser|Stronicowy parser}}''', ale jeżeli one należą do rozdziału spisu treści lub rzeczy, to tam jednak nie są takie, inaczej jest poza.
A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}.
A ta powyższa tabela mieści się: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a jego opis w: {{Code|{{sr|#p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu|p=StronicowyParser/obiekty}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow2)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|numer_rodzaju_artykulu}} | _1 = Numer podtabeli elementtu, do którego wsadzamy element.
| 2 = {{Code|tabela_rozdzial_artykulow2}} | _2 = Tabela wraz podtabelami, od {{Code|1}} do {{Code|13}}, ale liczenie jest od {{Code|2}}.
}}
=== {{Śródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}{{Code|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}} ===
==== Opis pobieżny funkcji ====
Funkcja do wstawiania elementów z ogólnej tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}, za pomocą funkcji wstawianej jako parametr: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{Patrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, do odpowiedniej pozycji artykularnej od: {{Code|2}} do {{Code|13}}, a pozycja {{Code|1}}, to pozycja rozdziałowa, ona jest określana przez zmienną: {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{Patrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, a pozycja, którą wsadzamy to: {{Code|tab_stare}} {{Patrz|tab_stare}}.
Funkcja zwraca pozycje:
<syntaxhighlight lang="lua">
return numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych;
</syntaxhighlight>
Opis tych parametrów funkcji:
{{OpisParametrów
| 1 = {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} | _1 = Jest to wartość zwrócona przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}}, w odróżnieniu od: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, jest mniejszy o jeden, czyli wtedy to była a poziomie przypisywania wartość {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}},
| 2 = {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} | _2 = Pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}.
| 3 = {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} | _3 = Tablica do sprawdzania, czy artykuł z nagłówkiem, ma powtórzenie tego bez nagłówka, czyli dla tego bez tego jest inna numeracja niż z nagłówkiem, a gdy niema tego bez, to wtedy dzięki tej funkcji numeracja tak się zachowuje, jak tam by był ten element, co prawda jest tam dodawany, ale jako z informacją taką, że bz numeru ustalanym przez funkcję: {{LinkŚródtytuł|Ile}}, A przy okazji, aby tego elementu nie dodawać ponownie, to w nim jest ustalana druga zmienna na {{Code|1}}, a wcześniej była na {{Code|0}}, i dlatego ona była wtedy dodawana, a później już tak nie jest.
}}
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY,tabela_rozdzial_artykulow2,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow--[[]])...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{Patrz|self}} | _1 = Zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}}.
| 2 = {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} | _2 = Opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow2,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare);
</syntaxhighlight>
Funkcja jest wywoływana w:
<syntaxhighlight lang="lua">
numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych=WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,WsadzanieParametryDoTablicy(linia,czy_linia_uwzgledniana),tabela_rozdzial_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow);
</syntaxhighlight>
Gdzie funkcja: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, to jest: {{LinkŚródtytuł|WsadzanieParametryDoTablicy}}.
| 3 = {{Code|tabela_rozdzial_artykulow2}} | _3 = Ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow2}}.
| 4 = {{Code|tablica_artykulow_zebranych}} | _4 = Diała jak w: {{LinkPatrz|tablica_artykulow_zebranych}}.
| 5 = {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} | _5 = Jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}}.
| 6 = {{Code|szablon}} {{Patrz|szablon}} | _6 = Jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu.
| 7 = {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - | _7 = Kolejno to jest: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''' i '''nazwa książki'''.
| 8 = {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} | _8 = Jest to nazwa artykułu danego spisu treści.
| 9 = {{Code|pelna_nazwa_spisu_tresci}} {{Patrz|pelna_nazwa_spisu_tresci}} | _9 = Uchwyt do bazy kodowania tekstu strony spisu treści.
| 10 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} | _10 = Nazwa strony szablonowa, jak są wywoływane w postaci szablonowej, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}}.
| 11 = {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} | _11 = Uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 12 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _12 = Tablica bazy zapisana w postaci osobnej tablicy, a nie jej w wewnętrznej bazie, nie jak to było w postaci zmiennej {{LinkPatrz|nazwa_modulu}}, używana zamiast: {{LinkPatrz|nazwa_modulu}}.
| 13 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _13 = Tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}.
| 14 = {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} | _14 = Obiekt i kod, czyli: zmienne charakteryzujące zmienną wnętrza: {{Code|szablon}} {{LinkPatrz|szablon}}.
| 15 = {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} | _15 = Tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy.
| 16 = {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} | _16 = Tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię.
| 17 = {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} | _17 = Numeracja rozdziału, z jakim rozpoczyna się rozdział.
| 18 = {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} | _18 = Gdy link znajduje się w rozdziale dodatnim.
| 19 = {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} | _19 = Cała linia z artykułem lub artykułami, tą linią równie dobrze może być rozdział, tu chodzi o rozdział dodatni.
}}
==== Opis pobieżny funkcji {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} ====
Przedstawiamy tutaj funkcję: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, która jest opisana w punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Definicja funkcji w nagłówku:
<syntaxhighlight lang="lua">
__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow2,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare);
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tabela_rozdzial_artykulow2}} | _1 = Jak w: {{LinkPatrz|tabela_rozdzial_artykulow2}},
| 2 = {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} | _2 = Jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}},
| 3 = {{Code|tab_stare}} | _3 = Jak w: {{LinkPatrz|tab_stare}}.
}}
Ta funkcja została opisana już wcześniej.
==== Szczegółowy opis funkcji głównej ====
Uruchamiamy funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, która jest zdefiniowana w module: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}}. Wywołujemy tę funkcję:
<syntaxhighlight lang="lua">
local tab_pozycja_elementow_w_spisie_rzeczy,numer_rodzaju_artykulu,id,parametry_szablonu,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nil,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
</syntaxhighlight>
Pierwszy elementem: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest to zmienna tablicowa, która opisuje parametry artykularno-linkowe parametry, drugi: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, do której kategorii należy dany artykuł w linku, a trzeci parametr, to: {{Code|id}} {{Patrz|id}}, to zbierane są parametry linkowe z szablonu {{s|SpisTreści}}, czwarty to: {{Code|parametry_szablonu}} {{Patrz|parametry_szablonu}}, w przypadku szablonów inteligentnych linków, to są parametry wywołań tych szablonów, ostatni parametr to: {{Code|kom}} {{Patrz|kom}}, przedstawia on, jeśli {{Code|false}}, to artykuł zakwalifikowany został poprawnie do rozważań, a {{Code|true}} już nie.
To {{LinkPatrz|parametry szablonu}}, to jest tablica z trzech elementów, tzn.:
<syntaxhighlight lang="lua">
local parametry szablonu={tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,};
</syntaxhighlight>
Elementy tablicy:
{{OpisParametrów
| 1 = {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} | _1 = Tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych.
| 2 = {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} | _2 = To jest nazwa uzyskanego szablonu linków inteligentnych lub nie.
| 3 = {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} | _3 = Tabela modyfikatorów rozkładanego szablonu.
}}
Jeśli parametr: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, istnieje, to tworzona jest z niego taka sama wersja lub przy nieistnnieniu parametru {{LinkPatrz|wliczaj_artykuly_tego_rozdzialu}}, do niego jest dodawana jest liczba {{Code|6}}. W ten sposób możemy zbierać artykuły książki i inne,ktore należą do pewnych rozdziałów i które nie należą.
===== {{Śródtytuł|ParametrPierwszy}}{{Code|ParametrPierwszy}} =====
Funkcja zbierające dane z {{Code|tab_artykul}} {{Patrz|tab_artykul}}, którego to jest czteroelementowa tablica, dotycząca danego artykułu. Drugim parametrem: {{Code|czy_niedozwolone}} {{Patrz|czy_niedozwolone}}, jest zmienna logiczna mówiąca, czy wskazać w nazwie artykułu, czy są dozwolone znaki, jest to sprawdzenie według wyrażenia regularnego: {{Code|<nowiki>[|<>{}%[%]]</nowiki>}} {{Patrz|wzor_znaki_niedozwolone}} na podstawie funkcji {{LzLua|mw.ustring.match}}, czyli: {{Code|znaki_niedozwolone}} {{Patrz|znaki_niedozwolone}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
ParametrPierwszy(tab_artykul,czy_niedozwolone)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tab_artykul}} | _1 = Jak w: {{LinkPatrz|tab_artykul}}.
| 2 = {{Code|czy_niedozwolone}} | _2 = Jak w: {{LinkPatrz|czy_niedozwolone}}.
}}
Gdzie: {{Code|tab_artykul}} {{LinkPatrz|tab_artykul}}, który jest pierwszym parametrem przyjmowanym przez funkcję, jest zdefiniowany jako czteroelementowa tablica, którą przypisujemy do czterem osobnych parametrów:
<syntaxhighlight lang="lua">
local artykul=tab_artykul[1];
local parametry=tab_artykul[2];
local naglowek=tab_artykul[3];
local tablica_przekierowania=tab_artykul[4];
</syntaxhighlight>
Jeżeli, któreś z parametrów z: {{LinkPatrz|tab_artykul}}, tzn. element jego {{Code|2}}-gi i {{Code|3}}-ci, istnieje, to układana jest trzyelementowa tablica z elementów od {{Code|1}} do {{Code|3}}, z dodatkowym elementem: {{Code|<nowiki>["LINK"] = true</nowiki>}}, a element czwarty to jest: {{Code|tablica_przekierowania}} {{Patrz|tablica_przekierowania}}, a jeżeli te dwa elementy, nie licząc czwartego, wcale nie istnieją, wtedy jest tworzony łańcuch znakowy z tego pierwszego elementu. Tak tworzymy, nową wersję tablicy: {{Code|tab_artykul}} {{Patrz|tab_artykul-nowa wersja}}, lub łańcuch znakowy, w postaci:
<syntaxhighlight lang="lua">
tab_artykul=((artykul)and(parametry or naglowek))and{[1]=artykul,[2]=parametry,[3]=naglowek,["LINK"]=true,} or artykul;
</syntaxhighlight>
Funkcja zwraca trzy parametry, tzn. parametry: {{LinkPatrz|tab_artykul-nowa wersja}}, {{LinkPatrz|znaki_niedozwolone}} i tablicę przekierowania: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}:
<syntaxhighlight lang="lua">
return tab_artykul,znaki_niedozwolone,tablica_przekierowania;
</syntaxhighlight>
===== Rozwijanie nazwy linku artykułu =====
Do rozwijania nazwy linku służy funkcja: {{Code|{{sr|#p.DekodowanieTekstuNazwLinku|p=StronicowyParser/Pomocne}}}} {{Patrz|p.DekodowanieTekstuNazwLinku}}, pod względem szablonowym i nie tylko.
Funkcja rozwija tą nazwę tym: {{LzLua|frame:preprocess}}, jedynie nie rozwija szablonów stronicowego parsera, podane podkategoriach w kategorii: {{Code|{{lk2|Szablony stronicowe}}}}, za pomocą odpowiednich metod, bo to by wywołało nieskończoną pętle, i dlatego takie szablony są zamieniane tylko na wywołania symboliczne.
==== Dalszy opis funkcji nadrzędnej przy istnieniu parametrów linkowych normalnych, czy szablonowych (linków inteligentnych) ====
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|{{=}}}} {{Code|1}} =====
Tworzony jest numerek: {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{Patrz|numer_rodzaju_artykulu_w_podreczniku}}, który w stosunku do: {{LinkPatrz|numer_rodzaju_artykulu}}, jest większy o jeden, a schemat tej operacji:
<syntaxhighlight lang="lua">
local numer_rodzaju_artykulu_w_podreczniku=numer_rodzaju_artykulu+1;
</syntaxhighlight>
====== Tworzenie tablicy: {{nobold|{{Code|tablica_artykulow_zebranych}}}} ======
Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną wstępnie w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}.
; Tablica{{dk}} {{nobold|{{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}}}}, nie jest tablicą{{dk}}
Gdy element pierwszy: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, nie jest tablicą, wtedy jedynie liczymy, czy ona ma znaki niedozwolone: {{Code|wzor_znaki_niedozwolone}} {{LinkPatrz|wzor_znaki_niedozwolone}}, a póżniej wiedząc ten element, który jest aktualną nazwą artykułu kiążki, tworzymy tabelę {{Patrz|tablica_artykulow_zebranych-imicjacja}}:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,};
</syntaxhighlight>
; Gdy element{{dk}} {{nobold|{{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}}}}, jest łańcuchem znaków{{dk}}
Wpierw liczone są parametry z wywołania, z opcją, czy ma liczyć, czy nazwa artykułu ma znaki niedozwolone, z funkcji: {{LinkŚródtytuł|ParametrPierwszy}}:
<syntaxhighlight lang="lua">
tab_pozycja_elementow_w_spisie_rzeczy[1],znaki_niedozwolone,tablica_przekierowania=ParametrPierwszy(tab_pozycja_elementow_w_spisie_rzeczy[1],true);
</syntaxhighlight>
; Inna książka - atrybut, tzn. czy artykuł wychodzi poza daną książkę, lub jego przekierowanie w niej kieruje na stronę poza nią{{dk}}
Dalej sprawdzane jest, czy książka przyjmuje atrybut, tzn.: '''czy inna książka''', wtedy liczymy to z kodu z tablicy przekierowania: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, jeżeli jej wartość istnieje, tzn.: {{Code|czy_inna_ksiazka}} {{Patrz|czy_inna_ksiazka}}:
<syntaxhighlight lang="lua">
local czy_inna_ksiazka=tablica_przekierowania and tablica_przekierowania[1] and tablica_przekierowania[1][5] or nil;
</syntaxhighlight>
; Tablica przekierowania artykułu względem bieżącej książki{{dk}}
Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, który przedstawia, czy to jest artykuł bieżącej książki, którego przekierowanie kieruje, wtedy ten parametr ma wartość {{Code|true}}, a gdy adres przekierowania wskazuje na inną książkę, wtedy {{Code|false}}. Jeśli ten parametr ma wartość fałszywą, wtedy jest sprawdzane, czy jest tablicą w: {{Code|czy_tablica}} {{Patrz|czy_tablica}}, według:
<syntaxhighlight lang="lua">
czy_tablica=parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1]);
</syntaxhighlight>
Lub w przeciwnym wypadku liczymy parametry artykularne z tablicy przekierowania: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek przekierowania, w tej tablicy, istnieje, wtedy parametr: {{Code|czy_tablica}} {{LinkPatrz|czy_tablica}}, przyjmuje wartość {{Code|true}}, w przeciwnym wypadku wartość fałszywą.
Gdy ten element nie jest tablicą, to tworzona jest nazwa pełna artykułu: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}} i umieszczana w tablicy: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z podobną tablicą początkową jak w poprzednim przypadku jego tworzenia, czyli jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}.
; Tablica zebranych artykułów i porównywanie artykułu z nagłówkiem, czy istnieje wcześniejszy artykuł bez niego{{dk}}
Gdy element jest jednak tablicą, też jest liczona pełna nazwa artykułu (gdy nazwa artykułu przekierowania istnieje, wtedy ona jest liczona z: {{Code|tablica_przekierowania[2]}}, w przeciwnym wypadku, jeśli element: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}}, jest tablicą, wtedy liczymy ją z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1][1]}}, w innym wypadku z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}}), a z niej liczymy tablicę: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}, w przypadku pierwszego artykułu nienagłówkowego.
A w przypadku pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie, artykuł poprzedni nie istnieje, a więc tego tam nie ma tam w takim przypadku.
Gdy funkcja napotkała artykuł o takim samym stronie, co poprzednio, to do wartości początkowej, bez definiowania jeszcze raz tej samej tablicy, jest ustawiane odpowiednio:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych[3]=true;
</syntaxhighlight>
Co informuje, że artykuł jest ten sam, tylko inny nagłówek niż poprzedni, a poprzedni pierwszy jest bez niego.
====== Rozwijanie nazwy linku ======
Kompletowany jest drugi element tablicy: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkPatrz|p.DekodowanieTekstuNazwLinku}}. Dalej z tej nazwy są usuwane znaki specjalne według funkcji: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, z modułu: {{Code|{{ld2|Specjalne}}}}. Następnie działamy funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, które końcowe spacje usuwa, a wewnętrz powtarzające zamienia kolejne na jedną spację.
====== Dodawanie do tablicy problemów, jeśli nastąpił problem ze znakami niedozwolonymi ======
A między czasie, gdy mamy niedozwolone znaki: {{Code|znaki_niedozwolone}} {{LinkPatrz|znaki_niedozwolone}}, za pomocą funkcji pytającej sprawdzamy, czy element inny zgłoszeniowy został dodany do tablicy problemów: {{Code|{{sr|#p.CzyJestTakiProblemowyElement|p=StronicowyParser/Problemy}}}}, aż w końcu dodajemy ten problem, jeśli go nie ma przy pomocy funkcji: {{Code|{{sr|#p.UstawTakiProblemowyElement|p=StronicowyParser/Problemy}}}}.
====== {{Śródtytuł|inicjacja_i_kompletowanie_zmiennych}}Ustalanie nazwy jednostki, kompletowanie linii artykułów i inicjowanie pozycji, w tabeli zebranych elementów, w tabeli zebranych elementów ======
Ustalamy nazwę jednostki z funkcji: {{Code|{{sr|#p.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem|p=StronicowyParser/Potrzebne}}}}, i inicjujemy tą wartością, czyli: {{Code|nazwa jednostki}} {{Patrz|nazwa jednostki}}, wartość starą: {{Code|stara_nazwa_jednostki}} {{Patrz|stara_nazwa_jednostki}}, według:
<syntaxhighlight lang="lua">
---- Piszanie pełnej nazwy jednostki bez parametrów i nagłówka;
local nazwa_jednostki=stronicowyparser_potrzebne_modul.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(tab_pozycja_elementow_w_spisie_rzeczy[1],false);
---- Inicjowanie starej wartości tą policzoną;
local stara_nazwa_jednostki=nazwa_jednostki;
</syntaxhighlight>
Dalej {{Śródtekst|uchwyt=tabela_rozdzial_artykulow2|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}}}, według:
<syntaxhighlight lang="lua">
if(not tabela_rozdzial_artykulow2[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow2[numer_rodzaju_artykulu_w_podreczniku]={};end;
</syntaxhighlight>
Co {{Śródtekst|uchwyt=linia_artykokow|tekst=dalej linię artykułów {{Code|linia_artykokow}} {{LinkPatrz|linia_artykokow}}, kompletujemy, funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, z modułu: {{Code|{{ld2|Szablonowe}}}}, znając tablicę: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}}}, według:
<syntaxhighlight lang="lua">
linia_artykokow=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_artykokow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
</syntaxhighlight>
====== Uwzględnianie niepodanego elementu nienagłówkowego w tablicy zebranych parametrów ======
Gdy tablica przekierowania: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, istnieje, wtedy sprawdzamy, czy zmienna logiczna: {{Code|czy_tablica}} {{LinkPatrz|czy_tablica}}, jest prawdą i czy: {{Code|stara_nazwa_jednostki}} {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej: {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie artykułu przekierowania.
Inicjujemy nową zmienną: {{Code|przekierowanie}} {{LinkPatrz|przekierowanie}}, z artykułu, parametrów i nagłówka, ale wpierw sprawdzamy, czy dwa ostatnie istnieją, według:
<syntaxhighlight lang="lua">
przekierowanie=przekierowanie and ((tablica_przekierowania[3] or tablica_przekierowania[4]) and {przekierowanie, tablica_przekierowania[3], tablica_przekierowania[4],["LINK"]=true,}or przekierowanie) or nil;
</syntaxhighlight>
Tworzony jest nowy element: {{Code|nazwa jednostki}} {{Patrz|nazwajednostki-nowy}}, z: {{LinkPatrz|nazwa jednostki}}, parametrów i nagłówka, według rysu:
<syntaxhighlight lang="lua">
nazwa_jednostki={nazwa_jednostki, tab_pozycja_elementow_w_spisie_rzeczy[1][2], tab_pozycja_elementow_w_spisie_rzeczy[1][3],["LINK"]=true,};
</syntaxhighlight>
Jeżeli parametr drugi: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}.
Wsadzamy element: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, do zbioru: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, przy pomocy funkcji: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Następnie jej drugiemu elementowi: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, do tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}, na pozycji: {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, według funkcji: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej.
Jeżeli tablica przekierowania: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, jednak nie istnieje, wtedy tak samo sprawdzamy, co poprzednio potem, ale po spełnieniu tych warunków robimy inną tablicą: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, i tę tablicę robimy podobnie, i inicjujemy te same elementy też podobnie.
====== Uwzględnianie pozycji podanej w tablicy zebranych elementów ======
Tworzymy zmienną: {{Code|ile_dodac_do_poziomu_artykulu}} {{Patrz|ile_dodac_do_poziomu_artykulu}}, z drugiego elementu tablicy: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, następnię tworzymy inną zmienną: {{Code|ile_dodac_do_poziomu_artykulu_lub_nil}} {{Patrz|ile_dodac_do_poziomu_artykulu_lub_nil}}, co uwidaczniamy wzorem:
<syntaxhighlight lang="lua">
local ile_dodac_do_poziomu_artykulu_lub_nil=((ile_dodac_do_poziomu_artykulu)and(ile_dodac_do_poziomu_artykulu>0))and ile_dodac_do_poziomu_artykulu or nil;
</syntaxhighlight>
Tą zmienną wykorzystamy do sformułowania: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}.
{{Śródtekst|tekst=Tworzymy zmienną: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}, na pozycji: {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, przy pomocy funkcji: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.|uchwyt=__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|>{{=}}}} {{Code|2}} =====
Będziemy tutaj operowali, gdy parametr drugi zwracany z funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, wskazuje na nie artykuł książki, zatem ten rozdział jest właśnie dla tego przypadku.
====== Odkodowanie i przygotowanie zmiennych artykułu linku, jej nazwy, także kodu języka i projektu ======
* Gdy pierwszy element tablicy: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}.
* Dla drugiego takiego elementu z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, co jest nazwą linku, wtedy gdy nazwa linku normalnego, czy szablonowego, jest zakodowana, to ją odkodujemy, którego każdy jego element kod odkodujemy według funkcji: {{LinkPatrz|p.DekodowanieTekstuNazwLinku}}, następnie z niej usuwamy znaki specjalne według: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, następnie usuwamy końcowe spacje i wewnątrz kolejne spacje zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
* Dla trzeciego i czwartego takiego elementu z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, te elementy odkodujemy, następnie z nich usuwamy końcowe spacje, a wewnątrz kolejne spacje zastępujemy jedną, według tej samej funkcji, co powyżej.
====== Przygotowanie zmiennych, inicjowanie tablicy: {{Code|tab_stare}}, i wsadzanie jej do tablicy ogólnej: {{Code|tabela_rozdzial_artykulow2}} ======
Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow2}}, także co {{PobierzŚródtekst|linia_artykokow}}, co wszystko robimy podobnie jak w rozdziale: {{LinkŚródtytuł|inicjacja_i_kompletowanie_zmiennych}}.
{{PobierzŚródtekst|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
==== Definicja tablicy: {{Code|tab_stare}}, inicjowanie jej elementów w różnych przypadkach ====
Przedstawiamy tutaj ogólną definicję zmiennej: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. Ta wersja jest jedynie sformułowana dla artykułów w rozdziale, a nie dla rozdziałów, bo w tablicy, do której jest ona wsadzana przyjmuje ona możliwy numerek od "2" do "13", a nie również "1". Jej wersja ogólna:
<syntaxhighlight lang="lua">
local tab_stare=
{
---- Początek elementów alternatywnych
{
---- Początek wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[1], -- artykuł bez pełnej nazwy ksiązki, bez parametrów i nagłówka, bo ich nie posiadałna samym początku;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- artykuł bez pełnej nazwy książki, bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[2], -- nazwa linku artykułu normalnego, czy szablonowego;
---- Początek elementów alternatywnych dla przekierowania
---- Poczatek parametrów przekierowania
{
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
tablica_przekierowania[3], -- parametry przekierowania artykułu;
tablica_przekierowania[4], -- nagłówek przekierowania artykułu;
["LINK"]=true, -- zmienna świadcząca, że nazwa przekierowania artykułu jest z parametrami i nagłówkiem;
},
---- lub
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
---- Koniec parametrów przekierowania
tablica_przekierowania[1], -- tablica o definicji: {
nazwa_przestrzeni_strony_przekierowania, -- nazwa przestrzzeni nazw przekierowania artykułu;
nazwa_przestrzeni_ksiazki_strony_przekierowania, -- nazwa przestrzeni książki przekierowania artykułu;
nazwa_ksiazki_strony_przekierowania, -- nazwa książki orzekierowania artykułu;
true/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce;
true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie;
czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach;
};
---- lub
nil, -- dotycząca przekierowania artykułu, a tutaj strona nie ma przekierowania, więc: nil;
nil, -- dotycząca tablicy książki, na którą wskazuje przekierowanie, a tutaj nie ma tablicy, więc: nil;
---- Koniec elementów alternatywnych dla przekierowania
tab_pozycja_elementow_w_spisie_rzeczy[3], -- kod języka;
tab_pozycja_elementow_w_spisie_rzeczy[4], -- kod projektu;
tab_pozycja_elementow_w_spisie_rzeczy[5], -- adres artykułu bez przetworzenia w linku normalnym,czy szablonowym;
ile_dodac_do_poziomu_artykulu_lub_nil, -- parametr mający tylko wartości: 1, gdy do aktualnego poziomu musi być dodane jeden - ta wartość, tylko dotyczy artykułów należących do tej samej książki, lub: nil, gdy nic, czyli w pozostałych przypadkach;
tab_pozycja_elementow_w_spisie_rzeczy[6], -- "url", pozycja świadcząca, że to jest link zewnętrzny, a nil, gdy to jest normalny link;
},
---- lub
tab_pozycja_elementow_w_spisie_rzeczy[1], -- nazwa artykułu linku, która nie posiada, ani parametrów w sobie, a po nim nagłówka, lub bezpośrednio po nazwie;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- nazwa artykułu bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec elementów alternatywnych
{
#przedrostek_listy, -- poziom listy, w którym jest artykuł, dla artykułów w linii z listą, w innym wypadku dla artykułu znajdującego się w rozdziale dodatnim, czy ujemnym jest zero;
przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])", przeciwnie dla artykułów w rozdziale dodatnim ma wartość pustą;
tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu, gdy nie ma takiej numeracji, bo nie da się jej wydzielić, to ma wartość pustą;
w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym, wtedy "true", w przeciwnym wypadku: "false";
},
linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare";
true/false, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: false;
true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika, przeciwnie: false;
---- Początek elementów alternaatywnych
Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow2), -- który numer artykułu, w momencie wsadzenia do tabeli zbierania rozdziałów i w nich artykułów, nawet w rozdziale;
---- lub
nil, -- nil, wtedy gdy link jest tak sobie dodany, który nie należy do żadnego spisu, a po nim elementy jego z nagłówkiem natomiast należą;
---- Koniec elementów alternatywnych
};
</syntaxhighlight>
W powyższym: {{Tag|syntaxhighlight|parametry=lang="lua"}}, dla elementu: {{Code|<nowiki>---- lub</nowiki>}}, jest powiedziane, że są dostępne alternatywy, które są zawarte w tablicy, że wybieramy te, aby nie spowodować czysto podwójnej tablicy, aby każda tablica zawierały inne elementy, jak wiele, a nie jedną tablicę, jak i łańcuchy znaków, wartość nil, powoduje, że czy ma być taka tablica, ale nie podwójna, co to znaczy podowójna, tzn. tablica w sobie zawiera inną jedyną tablicę, a tak nie może być, a jak zawiera jedną tablicę, to musi posiadać inne nienilowe elementy.
== Funkcje tablicy transportu ==
=== {{Śródtytuł|p.AnalizaNapisuWprowadzeniaTekstu}}{{Code|p.AnalizaNapisuWprowadzeniaTekstu}} ===
Funkcja przyjmuje jako parametr nieskompletowaną i nieprzetworzony tekst napisu wprowadzenia tekstu. On kompletujei przekształca go w odpowiedni sposób,aby otrzymać czysty tekst tytułu rozdziału.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AnalizaNapisuWprowadzeniaTekstu(rozdzial,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|rozdzial}} | _1 = Ten tekst tytułu rozdziału, o którym mówimy.
| 2 = {{Code|pelna_nazwa_spisu_tresci}} | _2 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci}}
| 3 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _3 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _5 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
==== Obiekty typu {{nobold|{{Code|SZABLON}}}} ====
Funkcja korzysta z funkcji: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, funkcja ma zdefiniowaną pierwszą jej funkcję, która dla: {{Code|obiekt {{=}} "SZABLON"}}, używamy pierwsze dwie tabelę, te tabele:
Pierwsza {{Patrz|szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu}}, która służy do zamieniania szablonów na ich parametry, tutaj pierwsza, to jest tablica: {{Code|{{sr|#p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu}}:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu={
["MDL:RozszerzonyLink"]=1,
["Kompletność"]="",
["Kompletność krótka"]="",
["Kompletność junior"]="",
["Książka"]="",
};
</syntaxhighlight>
Druga: {{Code|{{sr|#p.szablony_dozwolone_w_nazwach_linkowych|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_dozwolone_w_nazwach_linkowych}}, też służy do tego samego.
Funkcja wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja {{Patrz|p.szablony_dozwolone_w_nazwach_linkowych}}:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_w_nazwach_linkowych={
["Korekta"] =2,
};
</syntaxhighlight>
===== Funkcje zawartości i dodatków, dla szablonów =====
One służą do zamieniania wywołań szablonowych na odpowiednie ich zawartości parametrów określone przez numery parametrów tych elementów w tch tabelach. Jeżeli przy którym wywolaniu przy wykorzystaniu kolejnych tych tabel przy użyciu funkcji: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, nastąpiło zamienienie, to funkcja pierwsza w: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, zakańcza się z tą wartością. A jeżeli nie to uruchamia się funkcj dodatków: {{Code|{{sr|#p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu|p=StronicowyParser/Rozdziały}}}}, a jeśli nastąpiło zastąpienie, to funkcja kompletowania się kończy z tą wartością.
===== Szablonowe linki =====
Dalej jeżeli tak się nie stało, to uruchamia się funkcja parametrów, w którym wywołanie szablonowe jest rozkładane na nazwę szablonu, modyfikatory i parametry. Dalej jest spradzanie , czy jest to link inteligentny według funkcji: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}, a gdy jest, to funkcja kończy swoje działania z nazwą tego linku lub jego adreesem wewnętrznym, a jeśli on nie jest tym, to sprawdza, czy są inne szablonowe linki, które podejrzewa się poprzez wywołanie funkcji: {{Code|{{sr|#p.NazwaInnegoSzablonowegoLinkowegoObiektu|p=StronicowyParser/Potrzebne}}}}, a jeżeli jest tym linkiem, to funkcja składania zwraca też jak poprzednio nazwę linku lub jego adres wewnętrzny, ewentualnie z dodatkiem. A gdy nie, to w innym przypadku sprawwdzane, czy to jest inny link wewnętrzny generowane przez szablony, która spradza funkcja tutaj: {{Code|{{sr|#p.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy|p=StronicowyParser/Potrzebne}}}}, a jeżeli szablon jest tym linkiem, to kunkcja składania zwraca jego nazwę linkową.
===== Szablony rozwijane przez {{lpg|JavaScript}} =====
A następnym krokiem jest sprawdzanie, czy nazwa szablonu jest jednych z elementów z tablicy: {{LinkPatrz|p.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu}}, która ma ten element, te szablony wymienione w tej tablicy są po to, aby służyły do rozwijania przez JavaScript, są to elementy wikikodu, które są pracochłonne ze względu na ich skomplikowany kod, czy wikikod, nawet {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, i dlatego ich się nie rozwija przez stronicowy parser: {{Code|{{ld2|StronicowyParser}}}}, te nazwy szablonów są określone tablicą: {{Code|{{sr|#p.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu}}:
<syntaxhighlight lang="lua">
p.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu={
["Cytuj"]=true,
["Cytuj stronę"]=true,
["Cytuj pismo"]=true,
["Cytuj odcinek"]=true,
["Cytuj książkę"]=true,
["Cytuj grę komputerową"]=true,
};
</syntaxhighlight>
I funkcja wtedy zwraca skompletowany szablon bez rozwijania jego, pod warunkiem, jeżeli jest tym szablonem o tej nazwę szablonu wywołującego.
===== Co jest zwracane w przypadku szablonów =====
Te powyżej elementy dla funkcji parametrów, w niej wartości są zwracane do niej, a jeżeli ona przyjmuje wartość nienilową, to do funkcji składania zwracana jest jego wartość, a przeciwnie jest zwracane pierwszy parametr szablonu do niej.
==== Obiekty typu: {{nobold|{{Code|NOWIKI}}}}, {{nobold|{{Code|PRE}}}} i {{nobold|{{Code|ŹRÓDŁO}}}} ====
A gdy dla elementów, jeśli nazwa obiektu jest: {{Code|obiekt {{=}} "NOWIKI"}}, {{Code|obiekt {{=}} "PRE"}}, lub: {{Code|obiekt {{=}} "ŹRÓDŁO"}}, znacznik jest rozkładany na czynniki pierwsze, a jeżeli nnie ma zawartości, to przez funkcję skłądania jest zwracana wartość pusta, a jeśli nie, to pewne znaki specjalne tagu {{Tag|nowiki}}, które mają w nim być zamienione na tekst, są zamieniane na kody '''HTML''', co po zamienieniu ta ona jest zwracana.
==== Obiekty typu: {{nobold|{{Code|MATH}}}}, {{nobold|{{Code|GALERIA}}}}, {{nobold|{{Code|MAPAOBRAZU}}}}, i {{nobold|{{Code|INNEPRE}}}} ====
A jeżeli wartość: {{Code|obiekt}}, jest nie równa: {{Code|MATH}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} lub {{Code|INNEPRE}}, wtedy z zawartości zmiennej: {{Code|szablon}}, są wykorzystanne funkcje z modułu: {{Code|{{ld2|Specjalne}}}}, które w tej podanej zmiennej są usuwane z komentarze z: {{Code|{{sr|#p["UsuńKomentarze"]|p=Specjalne}}}}, zamieniane są linki zewnętrzne i wewnętrzne na ich nazwy lub adresy według: {{Code|{{sr|#p["ZamieńLinkiZewnętrzneNaTekst"]|p=Specjalne}}}} i {{Code|{{sr|#p["ZamieńLinkiWewnętrzneNaTekst"]|p=Specjalne}}}}. Są usuwane rozwinięte znaczniki szablonów stylów używając do tego celu: {{Code|{{sr|#p["UsuńSzablonyStylów"]|p=Specjalne}}}}. Są też usuwane znaczniki na podstawie: {{Code|{{sr|#p["UsuńZnaczniki"]|p=Specjalne}}}}. Z tekstu szablonu są usuwane normalne kategorie nieszablonowe: {{Code|{{sr|#p"UsuńKategorie"]|p=Specjalne}}}}. Są też usuwane z zawartości wywołania plików i interwiki z: {{Code|{{sr|#p["UsuńWywołaniaPlików"]|p=Specjalne}}}} i {{Code|{{sr|#p["UsuńInterwiki"]|p=Specjalne}}}}. Dalej z tego obiektu są usuwane znaki specjalne z: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}.
A gdy mamy do czynienia z innymi znacznikami, to są zwracane jest zamiast niego wartość pusta do funkcji kompletowania.
Dane z funkcji kompletowane są zwracane, które z niej są usuwane znaki specjalne z całości tekstu rozdziału: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, i znaki białe z końców tekstu i powtarzarzające się te znaki kolejne z wewnętrz są zamieniane na jedną spację, to się dzieje według funkcji: {{Code|{{sr|#p["UsuńZbędneBiałeZnaki"]|p=Specjalne}}}}.
Cały taki wynik operacji robione w funkcji w nagłówku są zwracane do niej, to jest, co uzyskujemy nazwa rozdziału w postaci przetworzonej.
=== {{Śródtytuł|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}{{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} ===
Opisane tutaj są podfunkcje, z których korzysta ta funkcja, co one robią, do czego są wykorzystane.
==== Opis funkcji: {{nobold|{{Patrz|opis funkcji-ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}}} ====
Funkcja służy do zbierania nagłówków i z niej danych, tzn. linków normalnych i inteligentnych, a także są zbierane nagłówki z listy bez artykułów i do nich elementy podlisty z artykułami w postaci wywołań linkowych w niej. Tworzona jest specjalnie dla niegp tablica: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, która w odpowiedni po przekształaceniach wsadzana jest do tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} | _1 = Jak w: {{LinkPatrz|self}}.
| 2 = {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} | _2 = Kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}.
| 3 = {{Code|nazwa_spisu_tresci}} | _3 = Jak w: {{LinkPatrz|nazwa_spisu_tresci}}.
| 4 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _4 = Czy dany spis treści dla książki dla jej artykułu korzystanego, dla innej książki, wtedy to artykuł niekorzystany.
| 5 = {{Code|adres_ksiazki_glownego_spisu_tresci}} {{Patrz|adres_ksiazki_glownego_spisu_tresci}} | _5 = Jest to wewnętrzny adres książki głównego spisu treści,jest to taki adresm na który wskazuje przekierowanie innej książki.
| 6 = {{Code|__FUNKCJA_ZBIERANIA_DANYCH}} {{Patrz|__FUNKCJA_ZBIERANIA_DANYCH}} | _6 =
{{Śródtekst|bez preprocess=tak|uchwyt=__FUNKCJA_ZBIERANIA_DANYCH|tekst=
Jest to funkcja, która zbiera informacje o aktualnym artykule, która jest spisem treści, w postaci nieprzetworzonej przez funkcje z modułu: {{Code|{{ld2|StronicowyParser/Rozdziały}}}}, opisanego w: {{Code|{{sr|Rozdziały|StronicowyParser - Rozdziały|p=StronicowyParser}}}}, ta funkcja kopiuje, np. tabele danych bazy modułu: {{Code|{{m|Szablonowe}}}}, tzn: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, i tabelę rozkładu elementów w niej na czynniki pierwsze, tzn.: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, co jest napisane w module: {{Code|{{ld2|StronicowyParser/ZbieranieDanychStron}}}}, a w dokumentacji: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
__FUNKCJA_ZBIERANIA_DANYCH(nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona);
</syntaxhighlight>
Funkcja nie zwraca niczego, jest funkcją, zwykłą bezwartościową procedurą, niezwracającą niczego.
}}
}}
==== Funkcje lokalne ====
Funkcja ma w sobie też definicję funkcji lokalnych zdefiniowanej w tej funkcji tutaj opisywanej.
===== {{Śródtytuł|FunkcjaIteratoraTekstuZakodowego}}{{Code|FunkcjaIteratoraTekstuZakodowego}} =====
Funkcja służy do pomijania tego, co nie jest linkiem wewnętrznym, czy zewnętrznym, czyli oznaczone kodami: {{Code|LINKW}} lub {{Code|LINKZ}}, czy nawet szablonem linkuinteligentnego, czy innego służacego do generowania spisu treści, do tego celu również używa funkcji: {{LinkŚródtytuł|CzySzablonLinkLubLicencja}}, oraz tego co nie jest w liście okreslonym wzorem {{Code|<nowiki>\n([#:*;]+)</nowiki>}} z mozliwym na początku tekstem, ale nie z kodami, w danej pozycji listy, lub co ewentualnie nie może być w możliwej liście, tzn.: {{Code|<nowiki>\n([#:*;]*)</nowiki>}}, ale wtedy musi tam być z tekstem, ale nie z kodami, na początku danej pozycji listy, nawet jeśli to nie jest lista, to też tak samo.
Jeżeli funkcja nie ma kodów linków wewnętrznych, czy to normalnych, czy szablonowych, to się zakańcza z wartością domyślną {{Code|nil}}, w przeciwnym wypadku do sprawdzenia używa do tego funkcji: {{LinkŚródtytuł|PomijajLinkiOrazLicencje}}, do sprawdzania, czy to jest link lub licencji, a jeżeli ta funkcja zwraca wartość {{Code|true}}, to cała funkcja zwraca {{Code|nil}}. Jeżeli oba te sposoby nie dały rezultatu {{Code|true}}, to wtedy funkcja zwraca wartość pustą, czyli okreslonym ciągiem znakowym o szwerokości zerowej.
Funkcja ma w sobie dwie definicje funkcji: {{LinkŚródtytuł|PomijajLinkiOrazLicencje}} i {{LinkŚródtytuł|CzySzablonLinkLubLicencja}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local FunkcjaIteratoraTekstuZakodowego=function(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}.
| 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}.
| 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod}}.
}}
====== {{Śródtytuł|PomijajLinkiOrazLicencje}}{{Code|PomijajLinkiOrazLicencje}} ======
Funkcja służy do sprawdzania, czy są odpowiednie szablony w kodzie.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function PomijajLinkiOrazLicencje(szablon)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}.
}}
Funkcja sprawdza, czy to są szablony spisu treści określone tablicą o kluczach, którymi są nazwy szablonów, z wartościami {{Code|true}}, czyli: {{Code|{{sr|#p.szablony_licencji|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_licencji}}:
<syntaxhighlight lang="lua">
p.szablony_licencji={
["Licencja"]=true,
};
</syntaxhighlight>
Tzn., czy to są szablony ozdobne woluminu, którego tablica: {{Code|{{sr|#p.szablony_ozdobne_stron_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_ozdobne_stron_woluminu}}, jest podobnie zbudowana, co poprzednia:
<syntaxhighlight lang="lua">
p.szablony_ozdobne_stron_woluminu={
["MDL:RozszerzonyLink"]=true,
};
</syntaxhighlight>
A jeżeli to są te szablony, to funkcja zwraca wartość {{Code|true}}.
Jeżeli jednak to nie są te szablony, należy użyć tablic, tak samo zbudowanej jak poprzednie, czyli: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.linki_szablony_elementy_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.linki_szablony_elementy_spisu_rzeczy={
["SpisTreści"]=true,
["Sekcja referencyjna"]=true,
["Sr"]=true,
["Link wewnętrzny"]=true,
["Ly"]=true,
["LinkOgólne"]=true,
["Lo"]=true,
};
</syntaxhighlight>
lub innej, inaczej zbudowanej niż poprzednie, ale ważne, że ma wartość niefałszywą, czyli taką tablicą: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}, jest:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
Jak są te nazwy szablonów określone ich kluczami tych tablic, to funkcja zwraca wartość {{Code|true}}. A jeżeli jednak nie to funkcją: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}, jest sprawdzane,czy to jest link inteligentny, nawet przekierowanie, jeżeli link taki jest, to funkcja zwraca wartość w tym wypadku {{Code|true}}. W przeciwnym wypadku, jak nie zwrócił tej wartości,bo taka nie jest nazwa szablonu, to funkcja nic nie zwraca.
====== {{Śródtytuł|CzySzablonLinkLubLicencja}}{{Code|CzySzablonLinkLubLicencja}} ======
Funkcja sprawdzająca za pomocą: {{LinkŚródtytuł|PomijajLinkiOrazLicencje}}, na podstawie parsowania tekstu szablonu funkcją: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, z parsowanym przechwytywanym typem obiektu: {{Code|obiekt}} {{LinkPatrz|obiekt}}, równym {{Code|SZABLON}}. A jeżeli funkcja ta wspomniana w tekście zwróci {{Code|true}}, to funkcja taki obiekt policzy.
Jeżeli liczba policzonych obiektów i znalezionych w wyniku parsowania jest większa od zera, to funkcja w nagłówku zwróci wartość {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local CzySzablonLinkLubLicencja=function(szablon)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}.
}}
===== {{Śródtytuł|iteratorTekstuNaglowka}}{{Code|iteratorTekstuNaglowka}} =====
Jest to funkcja iteratora, którego funkcja zwracana (iterator) zwraca parametry, dla rozdziałów dodatnich i pozycji list.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function iteratorTekstuNaglowka()
... ---- Kod przed zwróceniem iteratora;
return function()
... ---- Ciało funkcji iteratora;
end;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = Brak parametrów. | komórka1 = tak
}}
Iterator (funkcja zwracana przez funkcję w nagłówku) zwraca parametry w wyniku kolejnych wywołań:
<syntaxhighlight lang="lua">
return przedrostek_listy,tekstowy_przedrostek,wyzyskane_wywolanie_szablonu_spis_tresci,true/false;
</syntaxhighlight>
Parametry zwracane przez iterator:
{{OpisParametrów
| 1 = {{Code|przedrostek_listy}} | _1 = Przedrostek pozycji listy, dla rozdziałów dodatnich jest wartością pustą.
| 2 = {{Code|tekstowy_przedrostek}} | _2 = Numeracja pozycji w liście lub w nagłówku dodatnim.
| 3 = {{Code|wyzyskane_wywolanie_szablonu_spis_tresci}} | _3 = Jest to rozdział bez numeracji i przedrostka pozycji listy.
| 4 = {{Code|true/false}} | _4 = Wartość {{Code|true}} świadczy o rozdziale dodatnim, a w przypadku innym funkcja zwraca zawsze wartość tą {{Code|false}} jako ostatni element zwracany.
}}
Funkcja jest przykowana na rozdziałów dodatnich i pozycji list oraz innych linii, dla tego pierwszego funkcja zwraca:
<syntaxhighlight lang="lua">
return "","",wartosc,true;
</syntaxhighlight>
Gdzie {{Code|wartość}} jest to zawartość napisu wprowadzenia tekstu (rozdziału dodatniego).
W przypadku list oraz innych niż rozdziały dodatnie samo wyrażenie regularne {{lpg|Lua}} w {{lpr|Lua|Scribunto}} jest okreslone przez wyrażenie:
<syntaxhighlight lang="lua">
local re="([#:*;]*)[^%S\n]*([%d%.]*[^%S\n]*[^\n]+)";
</syntaxhighlight>
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu|p=StronicowyParser/Rozdziały}}}}, aby zamienić zawartość pozycji listy na rozdział bez numeracji i numerację, i dlatego ta funkcja zwraca te dwie wartości. Gdy funkcja jak nie znajdzie więcej linii (wyszukań), to zwraca wartość {{Code|nil}} mówiąca o zakończeniu iteracji iteratora, tzn. dane dla iteratora się zakończyły.
===== {{Śródtytuł|LiniaArtykulow}}{{Code|LiniaArtykulow}} =====
Funkcja dla szablonów kompletowania określonym tabelką: {{Code|{{sr|#p.szablony_kompletowania_stron_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_kompletowania_stron_woluminu}}, o definicji:
<syntaxhighlight lang="lua">
p.szablony_kompletowania_stron_woluminu={
["Kompletność"]=true,
["Kompletność krótka"]=true,
["Kompletność junior"]=true,
["Książka"]=true,
};
</syntaxhighlight>
Rozdziela linię na wiele obsługiwanych podlinii.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function LiniaArtykulow(linia)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|linia}} {{Patrz|linia}} | _1 = Pojedyncza przetworzona linia.
}}
====== {{Śródtytuł|SzablonAnalizujKompletnosc}}{{Code|SzablonAnalizujKompletnosc}} ======
Funkcja sprawdza, czy dane wywołania szablonu, ma swoją nazwę szablonu, która jest nazwą szablonu kompletowania.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function SzablonAnalizujKompletnosc(szablon)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}.
}}
====== Dalszy opis funkcji ======
Możliwe są dwie opcje, szablon kompletowania jest pierwszy, a drugi drugi, lub odwrotnie. Funkcja obsługuje te oba przypadki. Ona stawia przecinkiem dla obu wersji ustawień, jeśli potraktować układem link i szablon kompletowania, to wstawiany jest on pomiędzy tymi układami, aby rozdzielić linię, a w liście bez jego znaków pozycji, na elementy przy pomocy funkcji: {{LzLua|mw.text.split}}, z opcją jako drugi parametr, aby uwzględniał wyrażenia regularne {{Code|false}}. W tych rozdzielonych linią tą funkcją dzielącą ciąg znakowy na tabelę, kody '''HTML''' przecinka są zamieniane na zwykły przecinek.
Funkcja zwraca tabelę podzielonej linii na mniejsze podlinie, który można iterować funkcją: {{Code|pairs}} lub {{Code|ipairs}}.
===== {{Śródtytuł|WsadzanieParametryDoTablicy}}{{Code|WsadzanieParametryDoTablicy}} =====
Funkcja z parametrami, która uruchamia inną funkcję uruchamianą w: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}, która wstawia tabelę {{LinkPatrz|tab_stare}}, do ogólnej tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}, ewentualnie do {{Code|tabela_rozdzial_artykulow}} {{Patrz|tabela_rozdzial_artykulow}} na pozycję {{Code|numer_podtablicy_w_tablicy}} {{Patrz|numer_podtablicy_w_tablicy}}, a dokładniej na pozycję {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}} w funkcji {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function WsadzanieParametryDoTablicy(linia,czy_linia_uwzgledniana)
return function(tabela_rozdzial_artykulow2,numer_podtablicy_w_tablicy,tab_stare)
... ---- ciało funkcji.
end;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|linia}} | _1 = Jak w: {{LinkPatrz|linia}}.
| 2 = {{Code|czy_linia_uwzgledniana}} {{Patrz|czy_linia_uwzgledniana}} | _2 = Czy linię ma uwzględnić w powiększaniu poziomu o jeden dla artykułu.
}}
Parametry zwracanej funkcji przez tę w nagłówku:
{{OpisParametrów
| 1 = {{Code|tabela_rozdzial_artykulow2}} | _1 = Jak w: {{LinkPatrz|tabela_rozdzial_artykulow2}}.
| 2 = {{Code|numer_podtablicy_w_tablicy}} | _2 = Jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}.
| 3 = {{Code|tab_stare}} | _3 = Jak w: {{LinkPatrz|tab_stare}}.
}}
====== {{Śródtytuł|CzyZaliczac}}{{Code|CzyZaliczac}} ======
Funkcja sprawdza, czy z początkiem linii pozycji listy, bez przedrostka listy, jest z możliwym cudzysłowem, po którym następują liczby, litery, lub myślniki dolne, w takim pzypadku linia nie może składać się z nich, po ktorym występują znaki interpunkcyjne. Jeśli to sprawdzenie było pozytywne funkcja zwraca wartość logiczną odpwowiadającą {{Code|true}}, w przeciwnym wypadku jak {{Code|false}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function CzyZaliczac()...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = Brak parametrów funkcji. | komórka1 = tak
}}
Funkcja zwraca informację, czy daną linię traktować jako rozdział, chodzi tu o pozycje list, a w przypadku rozdziałów dodatnich wiadomo, że one są właśnie, że rozdziałami.
====== Dalszy opis funkcji ======
Funkcja sprawdza w funkcji zwracanej, czy rozważany rozdział jest centrowany danego artykułu, który siedzi pod rozdziałem lub w samym rozdziale, sprawdza, czy artykuł jest w rozdziale, sprawdza czy linia jest uwzględniana: {{Code|czy_linia_uwzgledniana}} {{LinkPatrz|czy_linia_uwzgledniana}}. Funkcja sprawdza, czy sekcja czy w: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, czy istnieje element: {{Code|tab_stare[2]}} {{Patrz|tab_stare[2]}}, i dalszy: {{Code|tab_stare[2][1]}} {{Patrz|tab_stare[2][1]}} - ten element jest to w: {{Code|tab_stare}}, taki: {{Code|#przedrostek_listy}} {{Patrz|#przedrostek_listy}}, a jeżeli to sprawdzenie przeszło pozytywnie, który dla tego jest poziomem listy, lub zerowego rozdziału lub rozdziału dodatniego.
Dla każdej linii zmienna: {{Code|nowa_linia}} {{Patrz|nowa_linia}}, przyjmuje wartość {{Code|false}}, wtedy dla przypadku przeciwnego, tzn. gdy mamy rozdział i uwzględniamy artykuły w jednej linii, którym jest rozdział będacy pozycją listy, w zmiennej: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, jest ustawiany element: {{Code|tab_stare[2][4]}} {{Patrz|tab_stare[2][4]}}, czyli zmienna: {{Code|w_rozdziale}} {{LinkPatrz|w_rozdziale}}, zaczyna przyjmować wartość {{Code|true}}. Wsadzany jest wtedy do tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}, na pozycję: {{Code|numer_podtablicy_w_tablicy}} {{LinkPatrz|numer_podtablicy_w_tablicy}}, czyli to jest też: {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, element {{Code|tab_stare}} {{LinkPatrz|tab_stare}}.
Gdy: {{Code|nowa_linia}} {{LinkPatrz|nowa_linia}}, gdy jednak przyjmuje wartość {{Code|false}}, wtedy jeśli poziom rozdzialu istnieje i przedrostek listy {{LinkPatrz|#przedrostek_listy}} jest większy od zera, i istnieje wiele artykułów w pozycji liście, wtedy: {{Code|ile>0}}, lub funkcja: {{LinkŚródtytuł|CzyZaliczac}}, przyjmuje wartość odpowiadające prawdziwej, w taki przypadku zmiennej: {{Code|nowa_linia}} {{LinkPatrz|nowa_linia}}, przydzielamy wartość {{Code|true}}, by dalsze artykuły można było wsadzić, do tablicy z nowym rozdziałem. Powiększamy numer rozdziału o jeden, tzn.: {{Code|numer_rozdzialu_w_ksiazce}} {{Patrz|numer_rozdzialu_w_ksiazce}}, wtedy w zmiennej: {{Code|tabela_artykulow}} {{Patrz|tabela_artykulow}}, tabeli rozdziałów i w nich artykułów dla tej pozycji przydzielamy wartość równą tablicy pustej. Liczymy rozdział dla tego rozdział z artykułami, z funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}, liczymy napis rozdziału, wtedy do pierwszej pozycji tablicy utworzonej w: {{Code|tabela_artykulow}} {{LinkPatrz|tabela_artykulow}}, dla miejsca: {{Code|numer_rozdzialu_w_ksiazce}} {{LinkPatrz|numer_rozdzialu_w_ksiazce}}, czyli: {{Code|tabela_rozdzial_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}, piszemy:
<syntaxhighlight lang="lua">
tabela_rozdzial_artykulow[1]={rozdzial_na_tekst,{-#przedrostek_listy,przedrostek_listy,tekstowy_przedrostek,false,},linia,};
</syntaxhighlight>
Gdzie: {{Code|rozdzial_na_tekst}} {{Patrz|rozdzial_na_tekst}}, to policzony rozdział, {{Code|-#przedrostek_listy}} {{Patrz|-#przedrostek_listy}} to poziom rozdziału ujemnego, i dlatego minus. A: {{Code|przedrostek_listy}}, to znaki poczatkowe z listy: {{Code|wzor_do_linii_z_lista}} {{LinkPatrz|wzor_do_linii_z_lista}}, a: {{Code|tekstowy_przedrostek}}, to numeracja tego rozdziału. Wartość {{Code|false}} to jest ze ten rozdział nie jest centrowany, a: {{Code|linia}} {{LinkPatrz|linia}}, to wyzyskana linia bez początku pozycji listy. Ustawiamy: {{Code|tab_stare[2][4]}} {{LinkPatrz|tab_stare[2][4]}}, na wartość {{Code|true}} i element: {{Code|tab_stare[6]}} {{Patrz|tab_stare[6]}}, ustawiamy na zero. Tworzymy tablicę pustą na pozycję: {{LinkPatrz|numer_podtablicy_w_tablicy}}, tablicy: {{Code|tabela_rozdzial_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}, i do tej tablicy dodajemy: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, za pomocą funkcji: {{LzLua|table.insert}}.
A jeżeli nie jest tworzony nowy rozdział z listy w tabeli: {{Code|tabela_artykulow}} {{LinkPatrz|tabela_artykulow}}, to na pozycję: {{Code|numer_podtablicy_w_tablicy}} {{LinkPatrz|numer_podtablicy_w_tablicy}}, jest dodawany element: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, również tak jest robione, gdy artykuły znajdują się w rozdziale dodatnim, tzn. równaniowej lub centrowanej, tzn. wtedy: {{Code|w_rozdziale}} {{LinkPatrz|w_rozdziale}}, przyjmuje wartość {{Code|true}}.
===== {{Śródtytuł|AnalizaLiniiObiekty}}{{Code|AnalizaLiniiObiekty}} =====
Za pomocą funkcji: {{LinkŚródtytuł|LiniaArtykulow}}, linia: {{Code|linia_rozwazana}} {{Patrz|linia_rozwazana}}, jest rozdzielana na wiele linii. To wiele linii w postaci tabeli, są iterowane od: {{Code|k {{=}} 1}}, do: {{Code|k {{=}} #tab_linia}}, gdzie: {{Code|#tab_linia}} {{Patrz|#tab_linia}}, jest to długość linii, tzn. liczba elementów numerowanych tablicy, tzn. od 1 do zwyż aż do apotkania najbliższej przerwy lub końca. Wtedy dla pojedyńczej literacji mamy: {{Code|tab_linia[k]}} {{Patrz|tab_linia[k]}}.
Iterujemy po kodach dla linii: {{Code|tab_linia[k]}} {{LinkPatrz|tab_linia[k]}}, przy pomocy funkcji: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} {{Patrz|p.IteratorSzablonowyZakodowanegoTekstu}}, iteratorem: {{Code|iterator2}} {{Patrz|iterator2}}.
Inicjujemy zmienną: {{Code|tab_nieobslugiwane {{=}} nil}}, następnie iterujemy: {{LinkPatrz|iterator2}}, uzyskując w każdej iteracji: {{Code|szablon}} {{LinkPatrz|szablon}}, {{Code|obiekt}} {{LinkPatrz|obiekt}}, i {{Code|kod}} {{LinkPatrz|kod}}.
Gdy mamy do czynienia: {{Code|SZABLON}}, lub: {{Code|LINKW}}, albo: {{Code|LINKZ}}, wtedy dla elementów tego pierwszego bierzemy tablicę: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}, dla elementu: {{Code|nazwa_szablonu}} {{LinkPatrz|nazwa_szablonu}}.
Jeżeli ten element: {{Code|tabela_spisu}}, istnieje, element pierwszy: {{Code|tabela_spisu[1]}}, jest równy wartości {{Code|true}}, wtedy mamy do czynienia z szablonem {{s|SpisPozycja}}. Jej element: {{Code|tabela_spisu["numer_link"]}}, istnieje i jest równy: {{Code|tyt}} {{Patrz|tyt}}. Iterujemy po kluczach i jego wartościach tego szablonu i sprawdzamy, który element jest równy właśnie tej wartości, a jeżeli jest taki, to dla elementów nie równych niemu, a właściwie w jego wartości iterujemy po kodach funkcją: {{LinkPatrz|p.IteratorSzablonowyZakodowanegoTekstu}}, dla tej wartości, w ten sposób zbieramy tablicę wielowymiarową najpierw po: {{Code|obiekt}} {{LinkPatrz|obiekt}}, póżniej po: {{Code|kod}}, {{LinkPatrz|kod}}, którą nazwiemy: {{Code|tab_nieobslugiwane}} {{Patrz|tab_nieobslugiwane}}, którego każda jej wartość jest równa {{Code|true}}. Ta tablica mówi dla jakich elementów ma nie zbierać w tablicy elementów w głównej tablicy rozdziałów i jego artykułach.
Dla elementu {{Code|tyt}} {{LinkPatrz|tyt}} tablicy parametrów przedrostek listy {{Code|przedrostek_listy}} ustawiamy na pusty, i liczmy numerację {{Code|tekstowy_przedrostek}} i zmienną {{Code|szablon}} {{LinkPatrz|szablon}} i ustawiamy zmienną {{Code|przerwij}} {{Patrz|przerwij}} na {{Code|true}}, aby dla tego szablonu nie zbierać elementów w tablicy rozdziałów i jego artykułów.
W przypadku przeciwnym dla: {{Code|tabela_spisu}}, gdy ma wartość {{Code|false}}, wtedy mamy do czynienia z funkcją: {{s|SpisZw}}. Dla niej liczymy: {{Code|przedrostek_listy}}, którą ustawiamy na pustą wartość. A: {{Code|tekstowy_przedrostek}}, liczmy uzyskując parametr o kluczu: {{Code|tabela_spisu["numer"]}}, którym jest parametr o numerze: {{Code|1}}, i {{Code|szablon}} {{LinkPatrz|szablon}}, który liczmy z parametrów szablonu o kluczu {{Code|tabela_spisu["link"]}}, którym jest numer {{Code|2}}. Ustawiamy tutaj zmienną: {{Code|}} {{LinkPatrz|przerwij}}, na wartosć {{Code|true}}.
====== {{Śródtytuł|CzyObslugiwane}}{{Code|CzyObslugiwane}} ======
Funkcja sprawdzająca, które elementy są obsługiwane, jeśli istnieje tablica: {{Code|tab_nieobslugiwane}} {{LinkPatrz|tab_nieobslugiwane}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local CzyObslugiwane=function()...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = Brak parametrów. | komórka1 = tak
}}
====== Dalszy opis funkcji ======
; Uwzględnianie tablicy, reprezentujące artykuł w rozdziale, wstawiany do tablicy danego rozdziału{{dk}}
Sprawdzany jest warunek:
<syntaxhighlight lang="lua">
if((--[[wliczaj_artykuly_tego_rozdzialu]] true)and(not przerwij)and((not tab_nieobslugiwane)or(CzyObslugiwane())))then
</syntaxhighlight>
Jeżeli jest on spełniony, wtedy wywołujemy funkcję: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}, później dla:
<syntaxhighlight lang="lua">
if((not czy_obslugiwane)and(not numer_rodzaju_artykulu_poprz))then
</syntaxhighlight>
Sprawdzamy, czy jest zebrana licencja z autorem według zmiennej: {{Code|licencja_z_autorem}} {{Patrz|licencja_z_autorem}}, i sprawdzamy, czy: {{Code|szablon}} {{LinkPatrz|szablon}}, jest wnetrzem szablonu, jeżeli tak, to ona przyjmuje wartość odpowiadająca prawdziwej, przeciwnie ma fałszywą.
Jeżeli ten pierwszy warunek jest niespełniony, to tylko liczymy to samo coostatnio.
; Szablony licencji, i jego parametry, uwzględnianie jego tylko raz ca całą książkę, mieszcząca się w artykule głównej książki{{dk}}
Następnie dla warunku, który musi być spełniony:
<syntaxhighlight lang="lua">
if((not numer_rodzaju_artykulu_poprz)and(not przerwij)and(link_szablon)and((not tab_pozycja_elementow_w_spisie_rzeczy)or(not tab_pozycja_elementow_w_spisie_rzeczy[1]))and(czy_artykul_korzystany)and(licencja_z_autorem))then
</syntaxhighlight>
Sprawdzamy szablony licencji, takich jak: {{s|Licencja}}, według tablicy: {{Code|{{sr|#p.szablony_licencji|p=StronicowyParser/obiekty}}}}.
Dla parametrów szablonu, liczymy jego parametry o kluczach, tzn.: {{Code|Autor}} {{Patrz|Autor}}, {{Code|Ukończone szkoły}} {{Patrz|Ukończone szkoły}}, {{Code|Email}} {{Patrz|Email}}, {{Code|Dotyczy}} {{Patrz|DotyczyDotyczy}}, {{Code|Licencjonowanie}} {{Patrz|Licencjonowanie}}, {{Code|Umowa prawna}} {{Patrz|Umowa prawna}} i {{Code|Konsekwencje}} {{Patrz|Konsekwencje}}, którego wartości przydzielamy do odpowiednich zmiennych. Każdą z tych zmiennych kompletujemy funkcją: {{Code|{{sr|#p.DekodowanieTekstuDekodowanieTekstu|p=StronicowyParser/Potrzebne}}}}, poprzez zwracaną przez nią funkcję, w której jest wykorzystywana funkcją: {{LzLua|frame:preprocess}}, do rozwijania. A dla elementu istniejącego: {{Code|Autor}}, piszemy zmienną: {{Code|licencja_z_autorem}} {{LinkPatrz|licencja_z_autorem}}, któremu przydzielamy wartość {{Code|false}}, co spowoduje, że nie będziemy analizowali jeszcze raz innego szablonu licencji.
Te zmienne tego szablonu zbieramy natomiast w tablicy: {{Code|tabela_licencji_spisu_tresci}} {{Patrz|tabela_licencji_spisu_tresci}}, dane dotyczące licencji, więc:
<syntaxhighlight lang="lua">
tabela_licencji_spisu_tresci={autor, szkoly, email, dotyczy, licencjonowanie, umowa_prawna, konsekwencje};
</syntaxhighlight>
Co później przerywamy pętle po: {{Code|iterator2}} {{LinkPatrz|iterator2}}, instrukcją: {{Code|break}}.
==== Dalszy opis funkcji {{nobold|{{LinkPatrz|opis funkcji-ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}}} ====
Ściągamy tekst, tabelę bazy i tabelę parametrów strony o nazwie: {{Code|nazwa_modulu}}, przy pomocy funkcji: {{Code|{{sr|#p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony|p=StronicowyParser/Tekst}}}}, według:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=nil;
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
return nil;
end,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Uruchamiamy funkcję: {{Code|__FUNKCJA_ZBIERANIA_DANYCH}} {{LinkPatrz|__FUNKCJA_ZBIERANIA_DANYCH}}, jeżeli istnieje.
Dalej wywołujemy funkcję: {{Code|{{sr|#p.IterTekst|p=StronicowyParser/Rozdziały}}}}, w celu znalezienia tekstu: {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}}, i iteratora: {{Code|iterator}} {{Patrz|iterator}}, po napisach wprowadzenia tekstu rozdziałów i ich zawartości rozdziałów i na podstawie:
<syntaxhighlight lang="lua">
local iterator,tekst_rozwiniety_calego_artykulu=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,true,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,
__FUNKCJA, ---- funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adresu szablonu, określa i zawraca jego zawartość;
__FUNKCJA2, ---- funkcja operująca na przygotowanej zawartości napisu wprowadzenia tekstu i tekście napisu wprowadzenia tekstu (rozdziału);
__FUNKCJA_ANALIZA_SPISU ---- funkcja do analizy i modyfikacji tekstu (może zwracać wartość: nil) przed samym kodowaniem, jeżeli tekst jest w ogóle jest taki, a jeśli nie, ta funkcja wtedy nie jest uruchamiana, funkcja ta bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: IterTekst, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: SpisTreści, co jest uwidocznione w module: Moduł:StronicowyParser/SpisTreści;
);
</syntaxhighlight>
Opis parametrów zwracanych:
{{OpisParametrów
| 1 = {{Code|iterator}} {{Patrz|iterator-IterTekst}} | _1 = Iterator po rozdziałach i jego zawartościach.
| 2 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu-IterTekst}} | _2 = Tekst przetworzony rozdziału.
}}
Odczytujemy tabelę: {{LinkPatrz|p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu}} i dalej: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}, o definicji:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={
["spis treści"]=true,
["spis tresci"]=true,
["spis rzeczy"]=true,
};
</syntaxhighlight>
Robimy kopię tych tabel i przyłączamy do metatabeli: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, przy pomocy funkcji: {{LzLua|setmetatable}}, aby nie odrózniać tych rozdziałów ze względu na wielkość liter i polskie znaki.
Inicjiujemy zmienną: {{Code|numer_rozdzialu_w_ksiazce}} {{LinkPatrz|numer_rozdzialu_w_ksiazce}}, wartością: {{Code|1}}, aby zbierać po kolei artykuły ze poszczególnego pojedynczego spisu treści.
Ustawiamy maksymalny rozmiar rozdziału zerowego na {{Code|50}}, w zmiennej: {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{Patrz|maksymalny_rozmiar_rozdzialu_zerowego}}, według:
<syntaxhighlight lang="lua">
local maksymalny_rozmiar_rozdzialu_zerowego=50;
</syntaxhighlight>
===== {{Śródtytuł|AnalizaRozdzialu}}{{Code|AnalizaRozdzialu}} =====
Jest to funkcja do zbierania danych z pojedynczgo rozdziału o pewnej linii, inicjowana z jego parametrami, także tekstem rozdziału.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function AnalizaRozdzialu(rozdzial,linia_rozdzialu,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|rozdzial}} {{Patrz|rozdzial}} | _1 = Jest to tekst rozdziału.
| 2 = {{Code|linia_rozdzialu}} {{Patrz|linia_rozdzialu}} | _2 = Jest to linia z rozdziałem.
| 3 = {{Code|text}} {{Patrz|text}} | _3 = Jest to tekst rozdziału o pewnym napisie wprowadzenia tekstu.
| 4 = {{Code|poziom_rozdzialu}} {{Patrz|poziom_rozdzialu}} | _4 = Jest to poziom danego rozdziału.
| 5 = {{Code|poczatek_rozdzialu}} {{Patrz|poczatek_rozdzialu}} | _5 = Początek pozycji listy rozdziałów mechanizmu {{Strong|MediaWiki}}.
| 6 = {{Code|numeracja}} {{Patrz|numeracja}} | _6 = Numeracja rozdziału.
| 7 = {{Code|czy_rozdzial_centrowany}} {{Patrz|czy_rozdzial_centrowany}} | _7 = Czy dany rozdział jest centrowany.
}}
====== Tabela artykułów rozdziałów i w nich artykułów oraz jego poszczególnych ======
Tworzymy tabelę: {{Code|tabela_artykulow}} {{LinkPatrz|tabela_artykulow}}, jeżeli nie istnieje, z pustą tablicą, a później dla elementu: {{Code|numer_rozdzialu_w_ksiazce}} {{LinkPatrz|numer_rozdzialu_w_ksiazce}}, jeżeli też go nie ma, to też pustą tablicą. Dalej liczymy napis wprowadzenia tekstu rozdziału dodatniego funkcją: {{LinkŚródtytuł|p.AnalizaNapisuWprowadzeniaTekstu}} i uwzględniamy je w tabeli rozdziałów dla danego rozdziału pod wartością: {{Code|tabela_rozdzial_artykulow[1]}}, w sposób:
<syntaxhighlight lang="lua">
tabela_rozdzial_artykulow[1]={rozdzial_na_tekst,{poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany,},rozdzial,};
</syntaxhighlight>
Dalej wprowadzamy zmienną: {{Code|czy_spis_rzeczy_napis_wprowadzenia_tekstu}} {{Patrz|czy_spis_rzeczy_napis_wprowadzenia_tekstu}}, mówiącą teraz rozpatrujemy rozdziały i artykuły w ramach spisu treści o nagłówkach typu: {{Code|Spis treści}}, czy: {{Code|SPIS RZECZY}}. Jeżeli wyszliszmy poza to, to ta zmienna wtedy przyjmuje wartość fałszywą, a definicja inicjacji tej zmiennej jest:
<syntaxhighlight lang="lua">
local czy_spis_rzeczy_napis_wprowadzenia_tekstu=(poziom_rozdzialu)and(not czy_jest_spis_tresci)and(not dalej_nie_rozwazaj_spis_tresci)and(jakie_spisy_tresci[spreparowany_uzyskany_tekst_rozdzialu]);
</syntaxhighlight>
Gdzie:
{{OpisParametrów
| 1 = {{Code|poziom_rozdzialu}} | _1 = Jak w: {{LinkPatrz|poziom_rozdzialu}}.
| 2 = {{Code|czy_jest_spis_tresci}} {{Patrz|czy_jest_spis_tresci}} | _2 = Czy jesteśmy w spisie treści.
| 3 = {{Code|dalej_nie_rozwazaj_spis_tresci}} {{Patrz|dalej_nie_rozwazaj_spis_tresci}} | _3 = Zmienna mówiąca, że teraz jesteśmy poza spisem treści.
}}
====== Kiedy uwzględniamy artykuły rozdziału ======
Jeżeli jesteśmy w spisie, to zawsze są uwzględniane artykuły rozdziału, bo jest ustawiona zmienna: {{Code|wliczaj_artykuly_tego_rozdzialu}} {{LinkPatrz|wliczaj_artykuly_tego_rozdzialu}}, na {{Code|true}}, a poza na {{Code|nil}}.
Funkcja jest przyszykowana jest dla jednego spisu treści, o ściśle określonym specjalnym napisie wprowadzenia tekstu, w danym spisie na stronie.
====== Iterator linii artykułu spis treści ======
Uruchamiamy iterator używając funkcji lokalnej: {{LinkŚródtytuł|iteratorTekstuNaglowka}}, według wywołania:
<syntaxhighlight lang="lua">
local iterator=iteratorTekstuNaglowka();
</syntaxhighlight>
Ustawiamy zmienną: {{Code|wliczaj_artykuly_tego_rozdzialu}} {{LinkPatrz|wliczaj_artykuly_tego_rozdzialu}}, aby wliczał lub nie, pewne artykuły rozdziału według:
<syntaxhighlight lang="lua">
local wliczaj_artykuly_tego_rozdzialu=((wliczaj_artykuly_tego_rozdzialu)or(not jakie_nie_rozdzialy[rozdzial]));
</syntaxhighlight>
Iterujemy otrzymanym ostatnio iteratorem, uzyskując kolejno zmienne: {{Code|przedrostek_listy}} {{LinkPatrz|przedrostek_listy}}, {{Code|tekstowy_przedrostek}} {{LinkPatrz|tekstowy_przedrostek}}, {{Code|linia}} {{LinkPatrz|linia}}, i {{Code|w_rozdziale}} {{LinkPatrz|w_rozdziale}}.
; Kiedy rozdziałów zerowych nie liczymy jako je{{dk}}
Dla rozdziałów, które nie sa poziomami z listą, sprawdzamy, czy to jest rozdział zerowy przy pomocy funkcji: {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|p=StronicowyParser/Rozdziały}}}}, i sprawdzamy, czy on przekracza rozmiar: {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}, jeżeli jest tym rozdziałem i nie przekracza pewnego rozmiaru, to to jest rozdział traktowany jako zerowy niepomijany rozdział zerowy, wtedy ustawiamy zmienną: {{Code|nie_pomijaj_tego_rozdzialu}} {{Patrz|nie_pomijaj_tego_rozdzialu}}, na {{Code|true}}.
; A jeśli to są rozdziały z listy zaczynające się od dwukropka w linii{{dk}}
Gdy taki rozdział nie pretenduje do zerowych, to sprawdzamy funkcją: {{Code|{{sr|#p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu|p=StronicowyParser/Rozdziały}}}}, czy ten rozdział pominąć, a jeżeli ona przyjmuje wartość odpowiadającej fałszywej, czyli {{Code|false}}, wtedy ustawiamy zmienną: {{Code|nie_pomijaj_tego_rozdzialunie_pomijaj_tego_rozdzialu}} {{LinkPatrz|nie_pomijaj_tego_rozdzialu}}, na taką samą wartość jak poprzednio.
; Inne rozdziały{{dk}}
Dla rozdziałów innych ta wartość przyjmuje postać {{Code|false}}.
; Rozdziały jednak nie pomijane{{dk}}
Dla rozdziałów, które nie są pomijane, wtedy zmienna: {{Code|nie_pomijaj_tego_rozdzialu}} {{LinkPatrz|nie_pomijaj_tego_rozdzialu}}, przyjmuje wartość {{Code|true}}, w takim przypadku wchodzimy do funkcji: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstuZgodnieZJegoSzablonowymiElementami|p=Szablonowe}}}}, wtedy dla linków szablonowych sprawdzamy, czy to są linki określone tablicami: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy}}, {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}} lub ewentualnie funkcją: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}.
Innym sposobem sprawdzania, czy to jest szablon linkowy jest tablica: {{Code|{{sr|#p.szablony_kompletowania_stron_woluminu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_kompletowania_stron_woluminu}}, lub {{Code|{{sr|#p.szablony_licencji|p=StroncowyParser/obiekty}}}} {{LinkPatrz|p.szablony_licencji}}.
Jeżeli to jest szablon linków, wtedy jest zwracana wartość: {{Code|return true,obiekt,kod}}, w przeciwnym wypadku: {{Code|return false,obiekt,kod}}.
Innym sposobem liczenia, czy to jest link, to wtedy może być to link normalny: {{Code|LINKW}}, który można sprawdzić funkcją: {{Code|{{sr|#p["CzyLinkWewnętrzny"]|p=Specjalne}}}}, wtedy jest zwracane {{Code|return true,obiekt,kod}}.
Link też może być zewnętrzny, wtedy to jest: {{Code|LINKZ}}, wtedy funkcja zwraca wartość: {{Code|return true,obiekt,kod}}.
; Kiedy analizujemy artykuły rozdziału{{dk}}
Następnie dla linii: {{Code|linia_rozwazana}} {{LinkPatrz|linia_rozwazana}}, co na podstawie tego liczymy, czy daną linię nie uwzględnić, w obliczeniach według schematu:
<syntaxhighlight lang="lua">
local czy_linia_uwzgledniana=mw.ustring.match(linia_rozwazana,"^%s*%-%-+(.*)%-%-+%s*$");
local czy_linia=((not czy_linia_uwzgledniana)and(mw.ustring.match(linia_rozwazana,"^%s*[%-%+%=%~]+.*$")
or ((#przedrostek_listy==0)and((mw.ustring.match(linia_rozwazana,"!"))and(mw.ustring.match(linia_rozwazana,"[^!]%s*$"))))
or mw.ustring.match(linia_rozwazana,"^%s*<")) or nil);
</syntaxhighlight>
Co następnie jest ustawiana {{Code|nowa_linia}} {{LinkPatrz|nowa_linia}} na wartość {{Code|false}}.
; Warunek analizowania artykułów rozdziałów{{dk}}
W obliczeniach raz uwzględniamy funkcję: {{LinkŚródtytuł|AnalizaLiniiObiekty}}, w ostatniej omawianej pętli, schematycznie:
<syntaxhighlight lang="lua">
if(not czy_linia)then AnalizaLiniiObiekty(linia_rozwazana);end;
</syntaxhighlight>
===== Dalsza część funkcji {{nobold|{{LinkPatrz|opis funkcji-ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}}} =====
Bierzemy zakodowany tekst: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu-IterTekst}}, i po nim iterator: {{Code|iterator}} {{LinkPatrz|iterator-IterTekst}}, wtedy iterujemy po parametrach:
<syntaxhighlight lang="lua">
local parsuj_rozdzialami=nil; ---- ta zmienna służy na wypadek, gdy by nie była żadnych rozwazanych rozdziałów;
for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do
---- za każdym razem jest uruchamiana funkcja: AnalizaRozdzialu, przy rozważanym rozdziale;
AnalizaRozdzialu(rozdzial_tab[1],rozdzial_tab[2],text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany);
---- oznacz zmienną: parsuj_rozdzialami, wartością; true, a póżniej jąnie inicjuj;
if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end
end;
</syntaxhighlight>
Parametry zwracane przez iterator: {{Code|iterator}} {{LinkPatrz|iterator-IterTekst}}:
{{OpisParametrów
| 1 = {{Code|rozdzial_tab}} {{Code|{{=}}}} {{Code|<nowiki>{ [1] = rozdzial, [2] = linia_rozdzialu, }</nowiki>}} | _1 = tabela składająca się z dwóch elementów:
| 2 = Pod elementy tabeli: | nagłówek2 = tak
| 3 = {{Code|rozdzial}} | _3 = Jak w: {{LinkPatrz|rozdzial}}.
| 4 = {{Code|linia_rozdzialu}} | _4 = Jak w: {{LinkPatrz|linia_rozdzialu}}.
| 5 = Inne parametry: | nagłówek5 = tak
| 6 = {{Code|text}} | _6 = Jak w: {{LinkPatrz|text}}.
| 7 = {{Code|poziom_rozdzialu}} | _7 =Jak w: {{LinkPatrz|poziom_rozdzialu}}.
| 8 = {{Code|poczatek_rozdzialu}} | _8 = Jak w: {{LinkPatrz|poczatek_rozdzialu}}.
| 9 = {{Code|numeracja}} | _9 = Jak w: {{LinkPatrz|numeracja}}.
| 10 = {{Code|czy_rozdzial_centrowany}} | _10 = Jak w: {{LinkPatrz|czy_rozdzial_centrowany}}.
}}
Gdy nie napotkano żadnego rozważanego rozdziału, wtedy: {{Code|parsuj_rozdzialami}}, przyjmuje wartość {{Code|nil}}, w takim razie uruchamiana jest funkcja:
<syntaxhighlight lang="lua">
if(not parsuj_rozdzialami)then
AnalizaRozdzialu("Spis treści",nil,tekst_rozwiniety_calego_artykulu,nil,nil,nil,nil);
end;
</syntaxhighlight>
Funkcja zwraca parametry inaczej, gdy artykuł, do którego należy książka jest korzystany, a inaczej, jeśli nie. W takim razie możemy zwracać na dwa sposoby:
<syntaxhighlight lang="lua">
if(czy_artykul_korzystany)then
return tabela_artykulow,tabela_licencji_spisu_tresci,przekierowanie_spisu_tresci;
else
return tabela_artykulow,nil,przekierowanie_spisu_tresci;
end;
</syntaxhighlight>
Przy artykułach korzystanych, co jest określone zmienną: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, tabelę: {{Code|tabela_licencji_spisu_tresci}} {{LinkPatrz|tabela_licencji_spisu_tresci}}, przy jego spisach treści w książkach, do której należy ten artykuł, zwracana jest jako wartość przeważnie jako nierówna {{Code|nil}}, a dla artykułów z innych książkach, ta wartość już jest taka, tzn. przyjmuje wartość {{Code|nil}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
360sxs8qxmc3fr46cq80ur083cbxm21
558350
558349
2026-10-02T19:26:18Z
Persino
2851
558350
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SpisTreści}}|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 lokalne ==
=== {{Śródtytuł|Ile}}{{Code|Ile}} ===
Funkcja liczy liczbę elementów we wszystkich podtabelach tabeli {{Code|tabela_rozdzial_artykulow2}} {{Patrz|tabela_rozdzial_artykulow2}}, licząc od drugiej tabeli, po pierwszej tabeli mieści się podtabela z informacjami o rozdziale, w której znajdują się artykuły określone dalszymi podtabelami.
Tymi podtabelami są od {{Code|2}} do {{Code|7}}, czyli {{Code|6}} tabelek, w których są artykuły, które zaliczamy do kategorii wliczane, tzn. one nie znajdują się w takich rozdziałach przetłumaczonych na małą literę, ale przedtem na nią była działana funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, usuwając z nich odstępy na końcach, w tym dolne myślniki, a wewnątrz zamieniając kolejne dolne myślniki i spacje na jedną spacją.
Metafunkcja, w metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, w: {{Code|{{ld2|Parametry}}}}, aby porównać to z tablicą {{Code|{{sr|#p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu}}, by zaliczyć je do tego typu:
<syntaxhighlight lang="lua">
p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu={
["licencja"]=true,
["inne"]=true,
["bibliografia"]=true,
["zobacz też"]=true,
["linki zewnętrzne"]=true,
};
</syntaxhighlight>
Twew rozdziały należą do kategorii rozdziałów, w których artykuły są pomijane przez: '''{{ld|StronicowyParser|Stronicowy parser}}''', ale jeżeli one należą do rozdziału spisu treści lub rzeczy, to tam jednak nie są takie, inaczej jest poza.
A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}.
A ta powyższa tabela mieści się: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a jego opis w: {{Code|{{sr|#p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu|p=StronicowyParser/obiekty}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow2)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|numer_rodzaju_artykulu}} | _1 = Numer podtabeli elementtu, do którego wsadzamy element.
| 2 = {{Code|tabela_rozdzial_artykulow2}} | _2 = Tabela wraz podtabelami, od {{Code|1}} do {{Code|13}}, ale liczenie jest od {{Code|2}}.
}}
=== {{Śródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}{{Code|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}} ===
==== Opis pobieżny funkcji ====
Funkcja do wstawiania elementów z ogólnej tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}, za pomocą funkcji wstawianej jako parametr: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{Patrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, do odpowiedniej pozycji artykularnej od: {{Code|2}} do {{Code|13}}, a pozycja {{Code|1}}, to pozycja rozdziałowa, ona jest określana przez zmienną: {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{Patrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, a pozycja, którą wsadzamy to: {{Code|tab_stare}} {{Patrz|tab_stare}}.
Funkcja zwraca pozycje:
<syntaxhighlight lang="lua">
return numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych;
</syntaxhighlight>
Opis tych parametrów funkcji:
{{OpisParametrów
| 1 = {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} | _1 = Jest to wartość zwrócona przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}}, w odróżnieniu od: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, jest mniejszy o jeden, czyli wtedy to była a poziomie przypisywania wartość {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}},
| 2 = {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} | _2 = Pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}.
| 3 = {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} | _3 = Tablica do sprawdzania, czy artykuł z nagłówkiem, ma powtórzenie tego bez nagłówka, czyli dla tego bez tego jest inna numeracja niż z nagłówkiem, a gdy niema tego bez, to wtedy dzięki tej funkcji numeracja tak się zachowuje, jak tam by był ten element, co prawda jest tam dodawany, ale jako z informacją taką, że bz numeru ustalanym przez funkcję: {{LinkŚródtytuł|Ile}}, A przy okazji, aby tego elementu nie dodawać ponownie, to w nim jest ustalana druga zmienna na {{Code|1}}, a wcześniej była na {{Code|0}}, i dlatego ona była wtedy dodawana, a później już tak nie jest.
}}
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY,tabela_rozdzial_artykulow2,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow--[[]])...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{Patrz|self}} | _1 = Zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}}.
| 2 = {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} | _2 = Opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow2,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare);
</syntaxhighlight>
Funkcja jest wywoływana w:
<syntaxhighlight lang="lua">
numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych=WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,WsadzanieParametryDoTablicy(linia,czy_linia_uwzgledniana),tabela_rozdzial_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow);
</syntaxhighlight>
Gdzie funkcja: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, to jest: {{LinkŚródtytuł|WsadzanieParametryDoTablicy}}.
| 3 = {{Code|tabela_rozdzial_artykulow2}} | _3 = Ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow2}}.
| 4 = {{Code|tablica_artykulow_zebranych}} | _4 = Diała jak w: {{LinkPatrz|tablica_artykulow_zebranych}}.
| 5 = {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} | _5 = Jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}}.
| 6 = {{Code|szablon}} {{Patrz|szablon}} | _6 = Jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu.
| 7 = {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - | _7 = Kolejno to jest: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''' i '''nazwa książki'''.
| 8 = {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} | _8 = Jest to nazwa artykułu danego spisu treści.
| 9 = {{Code|pelna_nazwa_spisu_tresci}} {{Patrz|pelna_nazwa_spisu_tresci}} | _9 = Uchwyt do bazy kodowania tekstu strony spisu treści.
| 10 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} | _10 = Nazwa strony szablonowa, jak są wywoływane w postaci szablonowej, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}}.
| 11 = {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} | _11 = Uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 12 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _12 = Tablica bazy zapisana w postaci osobnej tablicy, a nie jej w wewnętrznej bazie, nie jak to było w postaci zmiennej {{LinkPatrz|nazwa_modulu}}, używana zamiast: {{LinkPatrz|nazwa_modulu}}.
| 13 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _13 = Tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}.
| 14 = {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} | _14 = Obiekt i kod, czyli: zmienne charakteryzujące zmienną wnętrza: {{Code|szablon}} {{LinkPatrz|szablon}}.
| 15 = {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} | _15 = Tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy.
| 16 = {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} | _16 = Tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię.
| 17 = {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} | _17 = Numeracja rozdziału, z jakim rozpoczyna się rozdział.
| 18 = {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} | _18 = Gdy link znajduje się w rozdziale dodatnim.
| 19 = {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} | _19 = Cała linia z artykułem lub artykułami, tą linią równie dobrze może być rozdział, tu chodzi o rozdział dodatni.
}}
==== Opis pobieżny funkcji {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} ====
Przedstawiamy tutaj funkcję: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, która jest opisana w punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Definicja funkcji w nagłówku:
<syntaxhighlight lang="lua">
__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow2,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare);
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tabela_rozdzial_artykulow2}} | _1 = Jak w: {{LinkPatrz|tabela_rozdzial_artykulow2}},
| 2 = {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} | _2 = Jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}},
| 3 = {{Code|tab_stare}} | _3 = Jak w: {{LinkPatrz|tab_stare}}.
}}
Ta funkcja została opisana już wcześniej.
==== Szczegółowy opis funkcji głównej ====
Uruchamiamy funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, która jest zdefiniowana w module: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}}. Wywołujemy tę funkcję:
<syntaxhighlight lang="lua">
local tab_pozycja_elementow_w_spisie_rzeczy,numer_rodzaju_artykulu,id,parametry_szablonu,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nil,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
</syntaxhighlight>
Pierwszy elementem: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest to zmienna tablicowa, która opisuje parametry artykularno-linkowe parametry, drugi: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, do której kategorii należy dany artykuł w linku, a trzeci parametr, to: {{Code|id}} {{Patrz|id}}, to zbierane są parametry linkowe z szablonu {{s|SpisTreści}}, czwarty to: {{Code|parametry_szablonu}} {{Patrz|parametry_szablonu}}, w przypadku szablonów inteligentnych linków, to są parametry wywołań tych szablonów, ostatni parametr to: {{Code|kom}} {{Patrz|kom}}, przedstawia on, jeśli {{Code|false}}, to artykuł zakwalifikowany został poprawnie do rozważań, a {{Code|true}} już nie.
To {{LinkPatrz|parametry szablonu}}, to jest tablica z trzech elementów, tzn.:
<syntaxhighlight lang="lua">
local parametry szablonu={tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,};
</syntaxhighlight>
Elementy tablicy:
{{OpisParametrów
| 1 = {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} | _1 = Tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych.
| 2 = {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} | _2 = To jest nazwa uzyskanego szablonu linków inteligentnych lub nie.
| 3 = {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} | _3 = Tabela modyfikatorów rozkładanego szablonu.
}}
Jeśli parametr: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, istnieje, to tworzona jest z niego taka sama wersja lub przy nieistnnieniu parametru {{LinkPatrz|wliczaj_artykuly_tego_rozdzialu}}, do niego jest dodawana jest liczba {{Code|6}}. W ten sposób możemy zbierać artykuły książki i inne,ktore należą do pewnych rozdziałów i które nie należą.
===== {{Śródtytuł|ParametrPierwszy}}{{Code|ParametrPierwszy}} =====
Funkcja zbierające dane z {{Code|tab_artykul}} {{Patrz|tab_artykul}}, którego to jest czteroelementowa tablica, dotycząca danego artykułu. Drugim parametrem: {{Code|czy_niedozwolone}} {{Patrz|czy_niedozwolone}}, jest zmienna logiczna mówiąca, czy wskazać w nazwie artykułu, czy są dozwolone znaki, jest to sprawdzenie według wyrażenia regularnego: {{Code|<nowiki>[|<>{}%[%]]</nowiki>}} {{Patrz|wzor_znaki_niedozwolone}} na podstawie funkcji {{LzLua|mw.ustring.match}}, czyli: {{Code|znaki_niedozwolone}} {{Patrz|znaki_niedozwolone}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
ParametrPierwszy(tab_artykul,czy_niedozwolone)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tab_artykul}} | _1 = Jak w: {{LinkPatrz|tab_artykul}}.
| 2 = {{Code|czy_niedozwolone}} | _2 = Jak w: {{LinkPatrz|czy_niedozwolone}}.
}}
Gdzie: {{Code|tab_artykul}} {{LinkPatrz|tab_artykul}}, który jest pierwszym parametrem przyjmowanym przez funkcję, jest zdefiniowany jako czteroelementowa tablica, którą przypisujemy do czterem osobnych parametrów:
<syntaxhighlight lang="lua">
local artykul=tab_artykul[1];
local parametry=tab_artykul[2];
local naglowek=tab_artykul[3];
local tablica_przekierowania=tab_artykul[4];
</syntaxhighlight>
Jeżeli, któreś z parametrów z: {{LinkPatrz|tab_artykul}}, tzn. element jego {{Code|2}}-gi i {{Code|3}}-ci, istnieje, to układana jest trzyelementowa tablica z elementów od {{Code|1}} do {{Code|3}}, z dodatkowym elementem: {{Code|<nowiki>["LINK"] = true</nowiki>}}, a element czwarty to jest: {{Code|tablica_przekierowania}} {{Patrz|tablica_przekierowania}}, a jeżeli te dwa elementy, nie licząc czwartego, wcale nie istnieją, wtedy jest tworzony łańcuch znakowy z tego pierwszego elementu. Tak tworzymy, nową wersję tablicy: {{Code|tab_artykul}} {{Patrz|tab_artykul-nowa wersja}}, lub łańcuch znakowy, w postaci:
<syntaxhighlight lang="lua">
tab_artykul=((artykul)and(parametry or naglowek))and{[1]=artykul,[2]=parametry,[3]=naglowek,["LINK"]=true,} or artykul;
</syntaxhighlight>
Funkcja zwraca trzy parametry, tzn. parametry: {{LinkPatrz|tab_artykul-nowa wersja}}, {{LinkPatrz|znaki_niedozwolone}} i tablicę przekierowania: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}:
<syntaxhighlight lang="lua">
return tab_artykul,znaki_niedozwolone,tablica_przekierowania;
</syntaxhighlight>
===== Rozwijanie nazwy linku artykułu =====
Do rozwijania nazwy linku służy funkcja: {{Code|{{sr|#p.DekodowanieTekstuNazwLinku|p=StronicowyParser/Pomocne}}}} {{Patrz|p.DekodowanieTekstuNazwLinku}}, pod względem szablonowym i nie tylko.
Funkcja rozwija tą nazwę tym: {{LzLua|frame:preprocess}}, jedynie nie rozwija szablonów stronicowego parsera, podane podkategoriach w kategorii: {{Code|{{lk2|Szablony stronicowe}}}}, za pomocą odpowiednich metod, bo to by wywołało nieskończoną pętle, i dlatego takie szablony są zamieniane tylko na wywołania symboliczne.
==== Dalszy opis funkcji nadrzędnej przy istnieniu parametrów linkowych normalnych, czy szablonowych (linków inteligentnych) ====
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|{{=}}}} {{Code|1}} =====
Tworzony jest numerek: {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{Patrz|numer_rodzaju_artykulu_w_podreczniku}}, który w stosunku do: {{LinkPatrz|numer_rodzaju_artykulu}}, jest większy o jeden, a schemat tej operacji:
<syntaxhighlight lang="lua">
local numer_rodzaju_artykulu_w_podreczniku=numer_rodzaju_artykulu+1;
</syntaxhighlight>
====== Tworzenie tablicy: {{nobold|{{Code|tablica_artykulow_zebranych}}}} ======
Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną wstępnie w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}.
; Tablica{{dk}} {{nobold|{{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}}}}, nie jest tablicą{{dk}}
Gdy element pierwszy: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, nie jest tablicą, wtedy jedynie liczymy, czy ona ma znaki niedozwolone: {{Code|wzor_znaki_niedozwolone}} {{LinkPatrz|wzor_znaki_niedozwolone}}, a póżniej wiedząc ten element, który jest aktualną nazwą artykułu kiążki, tworzymy tabelę {{Patrz|tablica_artykulow_zebranych-imicjacja}}:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,};
</syntaxhighlight>
; Gdy element{{dk}} {{nobold|{{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}}}}, jest łańcuchem znaków{{dk}}
Wpierw liczone są parametry z wywołania, z opcją, czy ma liczyć, czy nazwa artykułu ma znaki niedozwolone, z funkcji: {{LinkŚródtytuł|ParametrPierwszy}}:
<syntaxhighlight lang="lua">
tab_pozycja_elementow_w_spisie_rzeczy[1],znaki_niedozwolone,tablica_przekierowania=ParametrPierwszy(tab_pozycja_elementow_w_spisie_rzeczy[1],true);
</syntaxhighlight>
; Inna książka - atrybut, tzn. czy artykuł wychodzi poza daną książkę, lub jego przekierowanie w niej kieruje na stronę poza nią{{dk}}
Dalej sprawdzane jest, czy książka przyjmuje atrybut, tzn.: '''czy inna książka''', wtedy liczymy to z kodu z tablicy przekierowania: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, jeżeli jej wartość istnieje, tzn.: {{Code|czy_inna_ksiazka}} {{Patrz|czy_inna_ksiazka}}:
<syntaxhighlight lang="lua">
local czy_inna_ksiazka=tablica_przekierowania and tablica_przekierowania[1] and tablica_przekierowania[1][5] or nil;
</syntaxhighlight>
; Tablica przekierowania artykułu względem bieżącej książki{{dk}}
Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, który przedstawia, czy to jest artykuł bieżącej książki, którego przekierowanie kieruje, wtedy ten parametr ma wartość {{Code|true}}, a gdy adres przekierowania wskazuje na inną książkę, wtedy {{Code|false}}. Jeśli ten parametr ma wartość fałszywą, wtedy jest sprawdzane, czy jest tablicą w: {{Code|czy_tablica}} {{Patrz|czy_tablica}}, według:
<syntaxhighlight lang="lua">
czy_tablica=parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1]);
</syntaxhighlight>
Lub w przeciwnym wypadku liczymy parametry artykularne z tablicy przekierowania: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek przekierowania, w tej tablicy, istnieje, wtedy parametr: {{Code|czy_tablica}} {{LinkPatrz|czy_tablica}}, przyjmuje wartość {{Code|true}}, w przeciwnym wypadku wartość fałszywą.
Gdy ten element nie jest tablicą, to tworzona jest nazwa pełna artykułu: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}} i umieszczana w tablicy: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z podobną tablicą początkową jak w poprzednim przypadku jego tworzenia, czyli jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}.
; Tablica zebranych artykułów i porównywanie artykułu z nagłówkiem, czy istnieje wcześniejszy artykuł bez niego{{dk}}
Gdy element jest jednak tablicą, też jest liczona pełna nazwa artykułu (gdy nazwa artykułu przekierowania istnieje, wtedy ona jest liczona z: {{Code|tablica_przekierowania[2]}}, w przeciwnym wypadku, jeśli element: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}}, jest tablicą, wtedy liczymy ją z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1][1]}}, w innym wypadku z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}}), a z niej liczymy tablicę: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}, w przypadku pierwszego artykułu nienagłówkowego.
A w przypadku pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie, artykuł poprzedni nie istnieje, a więc tego tam nie ma tam w takim przypadku.
Gdy funkcja napotkała artykuł o takim samym stronie, co poprzednio, to do wartości początkowej, bez definiowania jeszcze raz tej samej tablicy, jest ustawiane odpowiednio:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych[3]=true;
</syntaxhighlight>
Co informuje, że artykuł jest ten sam, tylko inny nagłówek niż poprzedni, a poprzedni pierwszy jest bez niego.
====== Rozwijanie nazwy linku ======
Kompletowany jest drugi element tablicy: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkPatrz|p.DekodowanieTekstuNazwLinku}}. Dalej z tej nazwy są usuwane znaki specjalne według funkcji: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, z modułu: {{Code|{{ld2|Specjalne}}}}. Następnie działamy funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, które końcowe spacje usuwa, a wewnętrz powtarzające zamienia kolejne na jedną spację.
====== Dodawanie do tablicy problemów, jeśli nastąpił problem ze znakami niedozwolonymi ======
A między czasie, gdy mamy niedozwolone znaki: {{Code|znaki_niedozwolone}} {{LinkPatrz|znaki_niedozwolone}}, za pomocą funkcji pytającej sprawdzamy, czy element inny zgłoszeniowy został dodany do tablicy problemów: {{Code|{{sr|#p.CzyJestTakiProblemowyElement|p=StronicowyParser/Problemy}}}}, aż w końcu dodajemy ten problem, jeśli go nie ma przy pomocy funkcji: {{Code|{{sr|#p.UstawTakiProblemowyElement|p=StronicowyParser/Problemy}}}}.
====== {{Śródtytuł|inicjacja_i_kompletowanie_zmiennych}}Ustalanie nazwy jednostki, kompletowanie linii artykułów i inicjowanie pozycji, w tabeli zebranych elementów, w tabeli zebranych elementów ======
Ustalamy nazwę jednostki z funkcji: {{Code|{{sr|#p.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem|p=StronicowyParser/Potrzebne}}}}, i inicjujemy tą wartością, czyli: {{Code|nazwa jednostki}} {{Patrz|nazwa jednostki}}, wartość starą: {{Code|stara_nazwa_jednostki}} {{Patrz|stara_nazwa_jednostki}}, według:
<syntaxhighlight lang="lua">
---- Piszanie pełnej nazwy jednostki bez parametrów i nagłówka;
local nazwa_jednostki=stronicowyparser_potrzebne_modul.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(tab_pozycja_elementow_w_spisie_rzeczy[1],false);
---- Inicjowanie starej wartości tą policzoną;
local stara_nazwa_jednostki=nazwa_jednostki;
</syntaxhighlight>
Dalej {{Śródtekst|uchwyt=tabela_rozdzial_artykulow2|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}}}, według:
<syntaxhighlight lang="lua">
if(not tabela_rozdzial_artykulow2[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow2[numer_rodzaju_artykulu_w_podreczniku]={};end;
</syntaxhighlight>
Co {{Śródtekst|uchwyt=linia_artykokow|tekst=dalej linię artykułów {{Code|linia_artykokow}} {{LinkPatrz|linia_artykokow}}, kompletujemy, funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, z modułu: {{Code|{{ld2|Szablonowe}}}}, znając tablicę: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}}}, według:
<syntaxhighlight lang="lua">
linia_artykokow=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_artykokow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
</syntaxhighlight>
====== Uwzględnianie niepodanego elementu nienagłówkowego w tablicy zebranych parametrów ======
Gdy tablica przekierowania: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, istnieje, wtedy sprawdzamy, czy zmienna logiczna: {{Code|czy_tablica}} {{LinkPatrz|czy_tablica}}, jest prawdą i czy: {{Code|stara_nazwa_jednostki}} {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej: {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie artykułu przekierowania.
Inicjujemy nową zmienną: {{Code|przekierowanie}} {{LinkPatrz|przekierowanie}}, z artykułu, parametrów i nagłówka, ale wpierw sprawdzamy, czy dwa ostatnie istnieją, według:
<syntaxhighlight lang="lua">
przekierowanie=przekierowanie and ((tablica_przekierowania[3] or tablica_przekierowania[4]) and {przekierowanie, tablica_przekierowania[3], tablica_przekierowania[4],["LINK"]=true,}or przekierowanie) or nil;
</syntaxhighlight>
Tworzony jest nowy element: {{Code|nazwa jednostki}} {{Patrz|nazwajednostki-nowy}}, z: {{LinkPatrz|nazwa jednostki}}, parametrów i nagłówka, według rysu:
<syntaxhighlight lang="lua">
nazwa_jednostki={nazwa_jednostki, tab_pozycja_elementow_w_spisie_rzeczy[1][2], tab_pozycja_elementow_w_spisie_rzeczy[1][3],["LINK"]=true,};
</syntaxhighlight>
Jeżeli parametr drugi: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}.
Wsadzamy element: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, do zbioru: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, przy pomocy funkcji: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Następnie jej drugiemu elementowi: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, do tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}, na pozycji: {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, według funkcji: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej.
Jeżeli tablica przekierowania: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, jednak nie istnieje, wtedy tak samo sprawdzamy, co poprzednio potem, ale po spełnieniu tych warunków robimy inną tablicą: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, i tę tablicę robimy podobnie, i inicjujemy te same elementy też podobnie.
====== Uwzględnianie pozycji podanej w tablicy zebranych elementów ======
Tworzymy zmienną: {{Code|ile_dodac_do_poziomu_artykulu}} {{Patrz|ile_dodac_do_poziomu_artykulu}}, z drugiego elementu tablicy: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, następnię tworzymy inną zmienną: {{Code|ile_dodac_do_poziomu_artykulu_lub_nil}} {{Patrz|ile_dodac_do_poziomu_artykulu_lub_nil}}, co uwidaczniamy wzorem:
<syntaxhighlight lang="lua">
local ile_dodac_do_poziomu_artykulu_lub_nil=((ile_dodac_do_poziomu_artykulu)and(ile_dodac_do_poziomu_artykulu>0))and ile_dodac_do_poziomu_artykulu or nil;
</syntaxhighlight>
Tą zmienną wykorzystamy do sformułowania: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}.
{{Śródtekst|tekst=Tworzymy zmienną: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}, na pozycji: {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, przy pomocy funkcji: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.|uchwyt=__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|>{{=}}}} {{Code|2}} =====
Będziemy tutaj operowali, gdy parametr drugi zwracany z funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, wskazuje na nie artykuł książki, zatem ten rozdział jest właśnie dla tego przypadku.
====== Odkodowanie i przygotowanie zmiennych artykułu linku, jej nazwy, także kodu języka i projektu ======
* Gdy pierwszy element tablicy: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}.
* Dla drugiego takiego elementu z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, co jest nazwą linku, wtedy gdy nazwa linku normalnego, czy szablonowego, jest zakodowana, to ją odkodujemy, którego każdy jego element kod odkodujemy według funkcji: {{LinkPatrz|p.DekodowanieTekstuNazwLinku}}, następnie z niej usuwamy znaki specjalne według: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, następnie usuwamy końcowe spacje i wewnątrz kolejne spacje zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
* Dla trzeciego i czwartego takiego elementu z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, te elementy odkodujemy, następnie z nich usuwamy końcowe spacje, a wewnątrz kolejne spacje zastępujemy jedną, według tej samej funkcji, co powyżej.
====== Przygotowanie zmiennych, inicjowanie tablicy: {{Code|tab_stare}}, i wsadzanie jej do tablicy ogólnej: {{Code|tabela_rozdzial_artykulow2}} ======
Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow2}}, także co {{PobierzŚródtekst|linia_artykokow}}, co wszystko robimy podobnie jak w rozdziale: {{LinkŚródtytuł|inicjacja_i_kompletowanie_zmiennych}}.
{{PobierzŚródtekst|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
==== Definicja tablicy: {{Code|tab_stare}}, inicjowanie jej elementów w różnych przypadkach ====
Przedstawiamy tutaj ogólną definicję zmiennej: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. Ta wersja jest jedynie sformułowana dla artykułów w rozdziale, a nie dla rozdziałów, bo w tablicy, do której jest ona wsadzana przyjmuje ona możliwy numerek od "2" do "13", a nie również "1". Jej wersja ogólna:
<syntaxhighlight lang="lua">
local tab_stare=
{
---- Początek elementów alternatywnych
{
---- Początek wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[1], -- artykuł bez pełnej nazwy ksiązki, bez parametrów i nagłówka, bo ich nie posiadałna samym początku;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- artykuł bez pełnej nazwy książki, bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[2], -- nazwa linku artykułu normalnego, czy szablonowego;
---- Początek elementów alternatywnych dla przekierowania
---- Poczatek parametrów przekierowania
{
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
tablica_przekierowania[3], -- parametry przekierowania artykułu;
tablica_przekierowania[4], -- nagłówek przekierowania artykułu;
["LINK"]=true, -- zmienna świadcząca, że nazwa przekierowania artykułu jest z parametrami i nagłówkiem;
},
---- lub
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
---- Koniec parametrów przekierowania
tablica_przekierowania[1], -- tablica o definicji: {
nazwa_przestrzeni_strony_przekierowania, -- nazwa przestrzzeni nazw przekierowania artykułu;
nazwa_przestrzeni_ksiazki_strony_przekierowania, -- nazwa przestrzeni książki przekierowania artykułu;
nazwa_ksiazki_strony_przekierowania, -- nazwa książki orzekierowania artykułu;
true/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce;
true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie;
czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach;
};
---- lub
nil, -- dotycząca przekierowania artykułu, a tutaj strona nie ma przekierowania, więc: nil;
nil, -- dotycząca tablicy książki, na którą wskazuje przekierowanie, a tutaj nie ma tablicy, więc: nil;
---- Koniec elementów alternatywnych dla przekierowania
tab_pozycja_elementow_w_spisie_rzeczy[3], -- kod języka;
tab_pozycja_elementow_w_spisie_rzeczy[4], -- kod projektu;
tab_pozycja_elementow_w_spisie_rzeczy[5], -- adres artykułu bez przetworzenia w linku normalnym,czy szablonowym;
ile_dodac_do_poziomu_artykulu_lub_nil, -- parametr mający tylko wartości: 1, gdy do aktualnego poziomu musi być dodane jeden - ta wartość, tylko dotyczy artykułów należących do tej samej książki, lub: nil, gdy nic, czyli w pozostałych przypadkach;
tab_pozycja_elementow_w_spisie_rzeczy[6], -- "url", pozycja świadcząca, że to jest link zewnętrzny, a nil, gdy to jest normalny link;
},
---- lub
tab_pozycja_elementow_w_spisie_rzeczy[1], -- nazwa artykułu linku, która nie posiada, ani parametrów w sobie, a po nim nagłówka, lub bezpośrednio po nazwie;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- nazwa artykułu bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec elementów alternatywnych
{
#przedrostek_listy, -- poziom listy, w którym jest artykuł, dla artykułów w linii z listą, w innym wypadku dla artykułu znajdującego się w rozdziale dodatnim, czy ujemnym jest zero;
przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])", przeciwnie dla artykułów w rozdziale dodatnim ma wartość pustą;
tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu, gdy nie ma takiej numeracji, bo nie da się jej wydzielić, to ma wartość pustą;
w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym, wtedy "true", w przeciwnym wypadku: "false";
},
linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare";
true/false, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: false;
true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika, przeciwnie: false;
---- Początek elementów alternaatywnych
Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow2), -- który numer artykułu, w momencie wsadzenia do tabeli zbierania rozdziałów i w nich artykułów, nawet w rozdziale;
---- lub
nil, -- nil, wtedy gdy link jest tak sobie dodany, który nie należy do żadnego spisu, a po nim elementy jego z nagłówkiem natomiast należą;
---- Koniec elementów alternatywnych
};
</syntaxhighlight>
W powyższym: {{Tag|syntaxhighlight|parametry=lang="lua"}}, dla elementu: {{Code|<nowiki>---- lub</nowiki>}}, jest powiedziane, że są dostępne alternatywy, które są zawarte w tablicy, że wybieramy te, aby nie spowodować czysto podwójnej tablicy, aby każda tablica zawierały inne elementy, jak wiele, a nie jedną tablicę, jak i łańcuchy znaków, wartość nil, powoduje, że czy ma być taka tablica, ale nie podwójna, co to znaczy podowójna, tzn. tablica w sobie zawiera inną jedyną tablicę, a tak nie może być, a jak zawiera jedną tablicę, to musi posiadać inne nienilowe elementy.
== Funkcje tablicy transportu ==
=== {{Śródtytuł|p.AnalizaNapisuWprowadzeniaTekstu}}{{Code|p.AnalizaNapisuWprowadzeniaTekstu}} ===
Funkcja przyjmuje jako parametr nieskompletowaną i nieprzetworzony tekst napisu wprowadzenia tekstu. On kompletujei przekształca go w odpowiedni sposób,aby otrzymać czysty tekst tytułu rozdziału.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AnalizaNapisuWprowadzeniaTekstu(rozdzial,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|rozdzial}} | _1 = Ten tekst tytułu rozdziału, o którym mówimy.
| 2 = {{Code|pelna_nazwa_spisu_tresci}} | _2 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci}}
| 3 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _3 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _5 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
==== Obiekty typu {{nobold|{{Code|SZABLON}}}} ====
Funkcja korzysta z funkcji: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, funkcja ma zdefiniowaną pierwszą jej funkcję, która dla: {{Code|obiekt {{=}} "SZABLON"}}, używamy pierwsze dwie tabelę, te tabele:
Pierwsza {{Patrz|szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu}}, która służy do zamieniania szablonów na ich parametry, tutaj pierwsza, to jest tablica: {{Code|{{sr|#p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu}}:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu={
["MDL:RozszerzonyLink"]=1,
["Kompletność"]="",
["Kompletność krótka"]="",
["Kompletność junior"]="",
["Książka"]="",
};
</syntaxhighlight>
Druga: {{Code|{{sr|#p.szablony_dozwolone_w_nazwach_linkowych|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_dozwolone_w_nazwach_linkowych}}, też służy do tego samego.
Funkcja wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja {{Patrz|p.szablony_dozwolone_w_nazwach_linkowych}}:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_w_nazwach_linkowych={
["Korekta"] =2,
};
</syntaxhighlight>
===== Funkcje zawartości i dodatków, dla szablonów =====
One służą do zamieniania wywołań szablonowych na odpowiednie ich zawartości parametrów określone przez numery parametrów tych elementów w tch tabelach. Jeżeli przy którym wywolaniu przy wykorzystaniu kolejnych tych tabel przy użyciu funkcji: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, nastąpiło zamienienie, to funkcja pierwsza w: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, zakańcza się z tą wartością. A jeżeli nie to uruchamia się funkcj dodatków: {{Code|{{sr|#p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu|p=StronicowyParser/Rozdziały}}}}, a jeśli nastąpiło zastąpienie, to funkcja kompletowania się kończy z tą wartością.
===== Szablonowe linki =====
Dalej jeżeli tak się nie stało, to uruchamia się funkcja parametrów, w którym wywołanie szablonowe jest rozkładane na nazwę szablonu, modyfikatory i parametry. Dalej jest spradzanie , czy jest to link inteligentny według funkcji: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}, a gdy jest, to funkcja kończy swoje działania z nazwą tego linku lub jego adreesem wewnętrznym, a jeśli on nie jest tym, to sprawdza, czy są inne szablonowe linki, które podejrzewa się poprzez wywołanie funkcji: {{Code|{{sr|#p.NazwaInnegoSzablonowegoLinkowegoObiektu|p=StronicowyParser/Potrzebne}}}}, a jeżeli jest tym linkiem, to funkcja składania zwraca też jak poprzednio nazwę linku lub jego adres wewnętrzny, ewentualnie z dodatkiem. A gdy nie, to w innym przypadku sprawwdzane, czy to jest inny link wewnętrzny generowane przez szablony, która spradza funkcja tutaj: {{Code|{{sr|#p.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy|p=StronicowyParser/Potrzebne}}}}, a jeżeli szablon jest tym linkiem, to kunkcja składania zwraca jego nazwę linkową.
===== Szablony rozwijane przez {{lpg|JavaScript}} =====
A następnym krokiem jest sprawdzanie, czy nazwa szablonu jest jednych z elementów z tablicy: {{LinkPatrz|p.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu}}, która ma ten element, te szablony wymienione w tej tablicy są po to, aby służyły do rozwijania przez JavaScript, są to elementy wikikodu, które są pracochłonne ze względu na ich skomplikowany kod, czy wikikod, nawet {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, i dlatego ich się nie rozwija przez stronicowy parser: {{Code|{{ld2|StronicowyParser}}}}, te nazwy szablonów są określone tablicą: {{Code|{{sr|#p.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu}}:
<syntaxhighlight lang="lua">
p.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu={
["Cytuj"]=true,
["Cytuj stronę"]=true,
["Cytuj pismo"]=true,
["Cytuj odcinek"]=true,
["Cytuj książkę"]=true,
["Cytuj grę komputerową"]=true,
};
</syntaxhighlight>
I funkcja wtedy zwraca skompletowany szablon bez rozwijania jego, pod warunkiem, jeżeli jest tym szablonem o tej nazwę szablonu wywołującego.
===== Co jest zwracane w przypadku szablonów =====
Te powyżej elementy dla funkcji parametrów, w niej wartości są zwracane do niej, a jeżeli ona przyjmuje wartość nienilową, to do funkcji składania zwracana jest jego wartość, a przeciwnie jest zwracane pierwszy parametr szablonu do niej.
==== Obiekty typu: {{nobold|{{Code|NOWIKI}}}}, {{nobold|{{Code|PRE}}}} i {{nobold|{{Code|ŹRÓDŁO}}}} ====
A gdy dla elementów, jeśli nazwa obiektu jest: {{Code|obiekt {{=}} "NOWIKI"}}, {{Code|obiekt {{=}} "PRE"}}, lub: {{Code|obiekt {{=}} "ŹRÓDŁO"}}, znacznik jest rozkładany na czynniki pierwsze, a jeżeli nnie ma zawartości, to przez funkcję skłądania jest zwracana wartość pusta, a jeśli nie, to pewne znaki specjalne tagu {{Tag|nowiki}}, które mają w nim być zamienione na tekst, są zamieniane na kody '''HTML''', co po zamienieniu ta ona jest zwracana.
==== Obiekty typu: {{nobold|{{Code|MATH}}}}, {{nobold|{{Code|GALERIA}}}}, {{nobold|{{Code|MAPAOBRAZU}}}}, i {{nobold|{{Code|INNEPRE}}}} ====
A jeżeli wartość: {{Code|obiekt}}, jest nie równa: {{Code|MATH}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} lub {{Code|INNEPRE}}, wtedy z zawartości zmiennej: {{Code|szablon}}, są wykorzystanne funkcje z modułu: {{Code|{{ld2|Specjalne}}}}, które w tej podanej zmiennej są usuwane z komentarze z: {{Code|{{sr|#p["UsuńKomentarze"]|p=Specjalne}}}}, zamieniane są linki zewnętrzne i wewnętrzne na ich nazwy lub adresy według: {{Code|{{sr|#p["ZamieńLinkiZewnętrzneNaTekst"]|p=Specjalne}}}} i {{Code|{{sr|#p["ZamieńLinkiWewnętrzneNaTekst"]|p=Specjalne}}}}. Są usuwane rozwinięte znaczniki szablonów stylów używając do tego celu: {{Code|{{sr|#p["UsuńSzablonyStylów"]|p=Specjalne}}}}. Są też usuwane znaczniki na podstawie: {{Code|{{sr|#p["UsuńZnaczniki"]|p=Specjalne}}}}. Z tekstu szablonu są usuwane normalne kategorie nieszablonowe: {{Code|{{sr|#p"UsuńKategorie"]|p=Specjalne}}}}. Są też usuwane z zawartości wywołania plików i interwiki z: {{Code|{{sr|#p["UsuńWywołaniaPlików"]|p=Specjalne}}}} i {{Code|{{sr|#p["UsuńInterwiki"]|p=Specjalne}}}}. Dalej z tego obiektu są usuwane znaki specjalne z: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}.
A gdy mamy do czynienia z innymi znacznikami, to są zwracane jest zamiast niego wartość pusta do funkcji kompletowania.
Dane z funkcji kompletowane są zwracane, które z niej są usuwane znaki specjalne z całości tekstu rozdziału: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, i znaki białe z końców tekstu i powtarzarzające się te znaki kolejne z wewnętrz są zamieniane na jedną spację, to się dzieje według funkcji: {{Code|{{sr|#p["UsuńZbędneBiałeZnaki"]|p=Specjalne}}}}.
Cały taki wynik operacji robione w funkcji w nagłówku są zwracane do niej, to jest, co uzyskujemy nazwa rozdziału w postaci przetworzonej.
=== {{Śródtytuł|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}{{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} ===
Opisane tutaj są podfunkcje, z których korzysta ta funkcja, co one robią, do czego są wykorzystane.
==== Opis funkcji: {{nobold|{{Patrz|opis funkcji-ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}}} ====
Funkcja służy do zbierania nagłówków i z niej danych, tzn. linków normalnych i inteligentnych, a także są zbierane nagłówki z listy bez artykułów i do nich elementy podlisty z artykułami w postaci wywołań linkowych w niej. Tworzona jest specjalnie dla niegp tablica: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, która w odpowiedni po przekształaceniach wsadzana jest do tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} | _1 = Jak w: {{LinkPatrz|self}}.
| 2 = {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} | _2 = Kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}.
| 3 = {{Code|nazwa_spisu_tresci}} | _3 = Jak w: {{LinkPatrz|nazwa_spisu_tresci}}.
| 4 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _4 = Czy dany spis treści dla książki dla jej artykułu korzystanego, dla innej książki, wtedy to artykuł niekorzystany.
| 5 = {{Code|adres_ksiazki_glownego_spisu_tresci}} {{Patrz|adres_ksiazki_glownego_spisu_tresci}} | _5 = Jest to wewnętrzny adres książki głównego spisu treści,jest to taki adresm na który wskazuje przekierowanie innej książki.
| 6 = {{Code|__FUNKCJA_ZBIERANIA_DANYCH}} {{Patrz|__FUNKCJA_ZBIERANIA_DANYCH}} | _6 =
{{Śródtekst|bez preprocess=tak|uchwyt=__FUNKCJA_ZBIERANIA_DANYCH|tekst=
Jest to funkcja, która zbiera informacje o aktualnym artykule, która jest spisem treści, w postaci nieprzetworzonej przez funkcje z modułu: {{Code|{{ld2|StronicowyParser/Rozdziały}}}}, opisanego w: {{Code|{{sr|Rozdziały|StronicowyParser - Rozdziały|p=StronicowyParser}}}}, ta funkcja kopiuje, np. tabele danych bazy modułu: {{Code|{{m|Szablonowe}}}}, tzn: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, i tabelę rozkładu elementów w niej na czynniki pierwsze, tzn.: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, co jest napisane w module: {{Code|{{ld2|StronicowyParser/ZbieranieDanychStron}}}}, a w dokumentacji: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
__FUNKCJA_ZBIERANIA_DANYCH(nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona);
</syntaxhighlight>
Funkcja nie zwraca niczego, jest funkcją, zwykłą bezwartościową procedurą, niezwracającą niczego.
}}
}}
==== Funkcje lokalne ====
Funkcja ma w sobie też definicję funkcji lokalnych zdefiniowanej w tej funkcji tutaj opisywanej.
===== {{Śródtytuł|FunkcjaIteratoraTekstuZakodowego}}{{Code|FunkcjaIteratoraTekstuZakodowego}} =====
Funkcja służy do pomijania tego, co nie jest linkiem wewnętrznym, czy zewnętrznym, czyli oznaczone kodami: {{Code|LINKW}} lub {{Code|LINKZ}}, czy nawet szablonem linkuinteligentnego, czy innego służacego do generowania spisu treści, do tego celu również używa funkcji: {{LinkŚródtytuł|CzySzablonLinkLubLicencja}}, oraz tego co nie jest w liście okreslonym wzorem {{Code|<nowiki>\n([#:*;]+)</nowiki>}} z mozliwym na początku tekstem, ale nie z kodami, w danej pozycji listy, lub co ewentualnie nie może być w możliwej liście, tzn.: {{Code|<nowiki>\n([#:*;]*)</nowiki>}}, ale wtedy musi tam być z tekstem, ale nie z kodami, na początku danej pozycji listy, nawet jeśli to nie jest lista, to też tak samo.
Jeżeli funkcja nie ma kodów linków wewnętrznych, czy to normalnych, czy szablonowych, to się zakańcza z wartością domyślną {{Code|nil}}, w przeciwnym wypadku do sprawdzenia używa do tego funkcji: {{LinkŚródtytuł|PomijajLinkiOrazLicencje}}, do sprawdzania, czy to jest link lub licencji, a jeżeli ta funkcja zwraca wartość {{Code|true}}, to cała funkcja zwraca {{Code|nil}}. Jeżeli oba te sposoby nie dały rezultatu {{Code|true}}, to wtedy funkcja zwraca wartość pustą, czyli okreslonym ciągiem znakowym o szwerokości zerowej.
Funkcja ma w sobie dwie definicje funkcji: {{LinkŚródtytuł|PomijajLinkiOrazLicencje}} i {{LinkŚródtytuł|CzySzablonLinkLubLicencja}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local FunkcjaIteratoraTekstuZakodowego=function(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}.
| 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}.
| 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod}}.
}}
====== {{Śródtytuł|PomijajLinkiOrazLicencje}}{{Code|PomijajLinkiOrazLicencje}} ======
Funkcja służy do sprawdzania, czy są odpowiednie szablony w kodzie.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function PomijajLinkiOrazLicencje(szablon)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}.
}}
Funkcja sprawdza, czy to są szablony spisu treści określone tablicą o kluczach, którymi są nazwy szablonów, z wartościami {{Code|true}}, czyli: {{Code|{{sr|#p.szablony_licencji|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_licencji}}:
<syntaxhighlight lang="lua">
p.szablony_licencji={
["Licencja"]=true,
};
</syntaxhighlight>
Tzn., czy to są szablony ozdobne woluminu, którego tablica: {{Code|{{sr|#p.szablony_ozdobne_stron_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_ozdobne_stron_woluminu}}, jest podobnie zbudowana, co poprzednia:
<syntaxhighlight lang="lua">
p.szablony_ozdobne_stron_woluminu={
["MDL:RozszerzonyLink"]=true,
};
</syntaxhighlight>
A jeżeli to są te szablony, to funkcja zwraca wartość {{Code|true}}.
Jeżeli jednak to nie są te szablony, należy użyć tablic, tak samo zbudowanej jak poprzednie, czyli: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.linki_szablony_elementy_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.linki_szablony_elementy_spisu_rzeczy={
["SpisTreści"]=true,
["Sekcja referencyjna"]=true,
["Sr"]=true,
["Link wewnętrzny"]=true,
["Ly"]=true,
["LinkOgólne"]=true,
["Lo"]=true,
};
</syntaxhighlight>
lub innej, inaczej zbudowanej niż poprzednie, ale ważne, że ma wartość niefałszywą, czyli taką tablicą: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}, jest:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
Jak są te nazwy szablonów określone ich kluczami tych tablic, to funkcja zwraca wartość {{Code|true}}. A jeżeli jednak nie to funkcją: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}, jest sprawdzane,czy to jest link inteligentny, nawet przekierowanie, jeżeli link taki jest, to funkcja zwraca wartość w tym wypadku {{Code|true}}. W przeciwnym wypadku, jak nie zwrócił tej wartości,bo taka nie jest nazwa szablonu, to funkcja nic nie zwraca.
====== {{Śródtytuł|CzySzablonLinkLubLicencja}}{{Code|CzySzablonLinkLubLicencja}} ======
Funkcja sprawdzająca za pomocą: {{LinkŚródtytuł|PomijajLinkiOrazLicencje}}, na podstawie parsowania tekstu szablonu funkcją: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, z parsowanym przechwytywanym typem obiektu: {{Code|obiekt}} {{LinkPatrz|obiekt}}, równym {{Code|SZABLON}}. A jeżeli funkcja ta wspomniana w tekście zwróci {{Code|true}}, to funkcja taki obiekt policzy.
Jeżeli liczba policzonych obiektów i znalezionych w wyniku parsowania jest większa od zera, to funkcja w nagłówku zwróci wartość {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local CzySzablonLinkLubLicencja=function(szablon)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}.
}}
===== {{Śródtytuł|iteratorTekstuNaglowka}}{{Code|iteratorTekstuNaglowka}} =====
Jest to funkcja iteratora, którego funkcja zwracana (iterator) zwraca parametry, dla rozdziałów dodatnich i pozycji list.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function iteratorTekstuNaglowka()
... ---- Kod przed zwróceniem iteratora;
return function()
... ---- Ciało funkcji iteratora;
end;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = Brak parametrów. | komórka1 = tak
}}
Iterator (funkcja zwracana przez funkcję w nagłówku) zwraca parametry w wyniku kolejnych wywołań:
<syntaxhighlight lang="lua">
return przedrostek_listy,tekstowy_przedrostek,wyzyskane_wywolanie_szablonu_spis_tresci,true/false;
</syntaxhighlight>
Parametry zwracane przez iterator:
{{OpisParametrów
| 1 = {{Code|przedrostek_listy}} | _1 = Przedrostek pozycji listy, dla rozdziałów dodatnich jest wartością pustą.
| 2 = {{Code|tekstowy_przedrostek}} | _2 = Numeracja pozycji w liście lub w nagłówku dodatnim.
| 3 = {{Code|wyzyskane_wywolanie_szablonu_spis_tresci}} | _3 = Jest to rozdział bez numeracji i przedrostka pozycji listy.
| 4 = {{Code|true/false}} | _4 = Wartość {{Code|true}} świadczy o rozdziale dodatnim, a w przypadku innym funkcja zwraca zawsze wartość tą {{Code|false}} jako ostatni element zwracany.
}}
Funkcja jest przykowana na rozdziałów dodatnich i pozycji list oraz innych linii, dla tego pierwszego funkcja zwraca:
<syntaxhighlight lang="lua">
return "","",wartosc,true;
</syntaxhighlight>
Gdzie {{Code|wartość}} jest to zawartość napisu wprowadzenia tekstu (rozdziału dodatniego).
W przypadku list oraz innych niż rozdziały dodatnie samo wyrażenie regularne {{lpg|Lua}} w {{lpr|Lua|Scribunto}} jest okreslone przez wyrażenie:
<syntaxhighlight lang="lua">
local re="([#:*;]*)[^%S\n]*([%d%.]*[^%S\n]*[^\n]+)";
</syntaxhighlight>
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu|p=StronicowyParser/Rozdziały}}}}, aby zamienić zawartość pozycji listy na rozdział bez numeracji i numerację, i dlatego ta funkcja zwraca te dwie wartości. Gdy funkcja jak nie znajdzie więcej linii (wyszukań), to zwraca wartość {{Code|nil}} mówiąca o zakończeniu iteracji iteratora, tzn. dane dla iteratora się zakończyły.
===== {{Śródtytuł|LiniaArtykulow}}{{Code|LiniaArtykulow}} =====
Funkcja dla szablonów kompletowania określonym tabelką: {{Code|{{sr|#p.szablony_kompletowania_stron_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_kompletowania_stron_woluminu}}, o definicji:
<syntaxhighlight lang="lua">
p.szablony_kompletowania_stron_woluminu={
["Kompletność"]=true,
["Kompletność krótka"]=true,
["Kompletność junior"]=true,
["Książka"]=true,
};
</syntaxhighlight>
Rozdziela linię na wiele obsługiwanych podlinii.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function LiniaArtykulow(linia)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|linia}} {{Patrz|linia}} | _1 = Pojedyncza przetworzona linia.
}}
====== {{Śródtytuł|SzablonAnalizujKompletnosc}}{{Code|SzablonAnalizujKompletnosc}} ======
Funkcja sprawdza, czy dane wywołania szablonu, ma swoją nazwę szablonu, która jest nazwą szablonu kompletowania.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function SzablonAnalizujKompletnosc(szablon)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}.
}}
====== Dalszy opis funkcji ======
Możliwe są dwie opcje, szablon kompletowania jest pierwszy, a drugi drugi, lub odwrotnie. Funkcja obsługuje te oba przypadki. Ona stawia przecinkiem dla obu wersji ustawień, jeśli potraktować układem link i szablon kompletowania, to wstawiany jest on pomiędzy tymi układami, aby rozdzielić linię, a w liście bez jego znaków pozycji, na elementy przy pomocy funkcji: {{LzLua|mw.text.split}}, z opcją jako drugi parametr, aby uwzględniał wyrażenia regularne {{Code|false}}. W tych rozdzielonych linią tą funkcją dzielącą ciąg znakowy na tabelę, kody '''HTML''' przecinka są zamieniane na zwykły przecinek.
Funkcja zwraca tabelę podzielonej linii na mniejsze podlinie, który można iterować funkcją: {{Code|pairs}} lub {{Code|ipairs}}.
===== {{Śródtytuł|WsadzanieParametryDoTablicy}}{{Code|WsadzanieParametryDoTablicy}} =====
Funkcja z parametrami, która uruchamia inną funkcję uruchamianą w: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}, która wstawia tabelę {{LinkPatrz|tab_stare}}, do ogólnej tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}, ewentualnie do {{Code|tabela_rozdzial_artykulow}} {{Patrz|tabela_rozdzial_artykulow}} na pozycję {{Code|numer_podtablicy_w_tablicy}} {{Patrz|numer_podtablicy_w_tablicy}}, a dokładniej na pozycję {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}} w funkcji {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function WsadzanieParametryDoTablicy(linia,czy_linia_uwzgledniana)
return function(tabela_rozdzial_artykulow2,numer_podtablicy_w_tablicy,tab_stare)
... ---- ciało funkcji.
end;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|linia}} | _1 = Jak w: {{LinkPatrz|linia}}.
| 2 = {{Code|czy_linia_uwzgledniana}} {{Patrz|czy_linia_uwzgledniana}} | _2 = Czy linię ma uwzględnić w powiększaniu poziomu o jeden dla artykułu.
}}
Parametry zwracanej funkcji przez tę w nagłówku:
{{OpisParametrów
| 1 = {{Code|tabela_rozdzial_artykulow2}} | _1 = Jak w: {{LinkPatrz|tabela_rozdzial_artykulow2}}.
| 2 = {{Code|numer_podtablicy_w_tablicy}} | _2 = Jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}.
| 3 = {{Code|tab_stare}} | _3 = Jak w: {{LinkPatrz|tab_stare}}.
}}
====== {{Śródtytuł|CzyZaliczac}}{{Code|CzyZaliczac}} ======
Funkcja sprawdza, czy z początkiem linii pozycji listy, bez przedrostka listy, jest z możliwym cudzysłowem, po którym następują liczby, litery, lub myślniki dolne, w takim pzypadku linia nie może składać się z nich, po ktorym występują znaki interpunkcyjne. Jeśli to sprawdzenie było pozytywne funkcja zwraca wartość logiczną odpwowiadającą {{Code|true}}, w przeciwnym wypadku jak {{Code|false}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function CzyZaliczac()...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = Brak parametrów funkcji. | komórka1 = tak
}}
Funkcja zwraca informację, czy daną linię traktować jako rozdział, chodzi tu o pozycje list, a w przypadku rozdziałów dodatnich wiadomo, że one są właśnie, że rozdziałami.
====== Dalszy opis funkcji ======
Funkcja sprawdza w funkcji zwracanej, czy rozważany rozdział jest centrowany danego artykułu, który siedzi pod rozdziałem lub w samym rozdziale, sprawdza, czy artykuł jest w rozdziale, sprawdza czy linia jest uwzględniana: {{Code|czy_linia_uwzgledniana}} {{LinkPatrz|czy_linia_uwzgledniana}}. Funkcja sprawdza, czy sekcja czy w: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, czy istnieje element: {{Code|tab_stare[2]}} {{Patrz|tab_stare[2]}}, i dalszy: {{Code|tab_stare[2][1]}} {{Patrz|tab_stare[2][1]}} - ten element jest to w: {{Code|tab_stare}}, taki: {{Code|#przedrostek_listy}} {{Patrz|#przedrostek_listy}}, a jeżeli to sprawdzenie przeszło pozytywnie, który dla tego jest poziomem listy, lub zerowego rozdziału lub rozdziału dodatniego.
Dla każdej linii zmienna: {{Code|nowa_linia}} {{Patrz|nowa_linia}}, przyjmuje wartość {{Code|false}}, wtedy dla przypadku przeciwnego, tzn. gdy mamy rozdział i uwzględniamy artykuły w jednej linii, którym jest rozdział będacy pozycją listy, w zmiennej: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, jest ustawiany element: {{Code|tab_stare[2][4]}} {{Patrz|tab_stare[2][4]}}, czyli zmienna: {{Code|w_rozdziale}} {{LinkPatrz|w_rozdziale}}, zaczyna przyjmować wartość {{Code|true}}. Wsadzany jest wtedy do tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}, na pozycję: {{Code|numer_podtablicy_w_tablicy}} {{LinkPatrz|numer_podtablicy_w_tablicy}}, czyli to jest też: {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, element {{Code|tab_stare}} {{LinkPatrz|tab_stare}}.
Gdy: {{Code|nowa_linia}} {{LinkPatrz|nowa_linia}}, gdy jednak przyjmuje wartość {{Code|false}}, wtedy jeśli poziom rozdzialu istnieje i przedrostek listy {{LinkPatrz|#przedrostek_listy}} jest większy od zera, i istnieje wiele artykułów w pozycji liście, wtedy: {{Code|ile>0}}, lub funkcja: {{LinkŚródtytuł|CzyZaliczac}}, przyjmuje wartość odpowiadające prawdziwej, w taki przypadku zmiennej: {{Code|nowa_linia}} {{LinkPatrz|nowa_linia}}, przydzielamy wartość {{Code|true}}, by dalsze artykuły można było wsadzić, do tablicy z nowym rozdziałem. Powiększamy numer rozdziału o jeden, tzn.: {{Code|numer_rozdzialu_w_ksiazce}} {{Patrz|numer_rozdzialu_w_ksiazce}}, wtedy w zmiennej: {{Code|tabela_artykulow}} {{Patrz|tabela_artykulow}}, tabeli rozdziałów i w nich artykułów dla tej pozycji przydzielamy wartość równą tablicy pustej. Liczymy rozdział dla tego rozdział z artykułami, z funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}, liczymy napis rozdziału, wtedy do pierwszej pozycji tablicy utworzonej w: {{Code|tabela_artykulow}} {{LinkPatrz|tabela_artykulow}}, dla miejsca: {{Code|numer_rozdzialu_w_ksiazce}} {{LinkPatrz|numer_rozdzialu_w_ksiazce}}, czyli: {{Code|tabela_rozdzial_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}, piszemy:
<syntaxhighlight lang="lua">
tabela_rozdzial_artykulow[1]={rozdzial_na_tekst,{-#przedrostek_listy,przedrostek_listy,tekstowy_przedrostek,false,},linia,};
</syntaxhighlight>
Gdzie: {{Code|rozdzial_na_tekst}} {{Patrz|rozdzial_na_tekst}}, to policzony rozdział, {{Code|-#przedrostek_listy}} {{Patrz|-#przedrostek_listy}} to poziom rozdziału ujemnego, i dlatego minus. A: {{Code|przedrostek_listy}}, to znaki poczatkowe z listy: {{Code|wzor_do_linii_z_lista}} {{LinkPatrz|wzor_do_linii_z_lista}}, a: {{Code|tekstowy_przedrostek}}, to numeracja tego rozdziału. Wartość {{Code|false}} to jest ze ten rozdział nie jest centrowany, a: {{Code|linia}} {{LinkPatrz|linia}}, to wyzyskana linia bez początku pozycji listy. Ustawiamy: {{Code|tab_stare[2][4]}} {{LinkPatrz|tab_stare[2][4]}}, na wartość {{Code|true}} i element: {{Code|tab_stare[6]}} {{Patrz|tab_stare[6]}}, ustawiamy na zero. Tworzymy tablicę pustą na pozycję: {{LinkPatrz|numer_podtablicy_w_tablicy}}, tablicy: {{Code|tabela_rozdzial_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}, i do tej tablicy dodajemy: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, za pomocą funkcji: {{LzLua|table.insert}}.
A jeżeli nie jest tworzony nowy rozdział z listy w tabeli: {{Code|tabela_artykulow}} {{LinkPatrz|tabela_artykulow}}, to na pozycję: {{Code|numer_podtablicy_w_tablicy}} {{LinkPatrz|numer_podtablicy_w_tablicy}}, jest dodawany element: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, również tak jest robione, gdy artykuły znajdują się w rozdziale dodatnim, tzn. równaniowej lub centrowanej, tzn. wtedy: {{Code|w_rozdziale}} {{LinkPatrz|w_rozdziale}}, przyjmuje wartość {{Code|true}}.
===== {{Śródtytuł|AnalizaLiniiObiekty}}{{Code|AnalizaLiniiObiekty}} =====
Za pomocą funkcji: {{LinkŚródtytuł|LiniaArtykulow}}, linia: {{Code|linia_rozwazana}} {{Patrz|linia_rozwazana}}, jest rozdzielana na wiele linii. To wiele linii w postaci tabeli, są iterowane od: {{Code|k {{=}} 1}}, do: {{Code|k {{=}} #tab_linia}}, gdzie: {{Code|#tab_linia}} {{Patrz|#tab_linia}}, jest to długość linii, tzn. liczba elementów numerowanych tablicy, tzn. od 1 do zwyż aż do apotkania najbliższej przerwy lub końca. Wtedy dla pojedyńczej literacji mamy: {{Code|tab_linia[k]}} {{Patrz|tab_linia[k]}}.
Iterujemy po kodach dla linii: {{Code|tab_linia[k]}} {{LinkPatrz|tab_linia[k]}}, przy pomocy funkcji: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} {{Patrz|p.IteratorSzablonowyZakodowanegoTekstu}}, iteratorem: {{Code|iterator2}} {{Patrz|iterator2}}.
Inicjujemy zmienną: {{Code|tab_nieobslugiwane {{=}} nil}}, następnie iterujemy: {{LinkPatrz|iterator2}}, uzyskując w każdej iteracji: {{Code|szablon}} {{LinkPatrz|szablon}}, {{Code|obiekt}} {{LinkPatrz|obiekt}}, i {{Code|kod}} {{LinkPatrz|kod}}.
Gdy mamy do czynienia: {{Code|SZABLON}}, lub: {{Code|LINKW}}, albo: {{Code|LINKZ}}, wtedy dla elementów tego pierwszego bierzemy tablicę: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}, dla elementu: {{Code|nazwa_szablonu}} {{LinkPatrz|nazwa_szablonu}}.
Jeżeli ten element: {{Code|tabela_spisu}}, istnieje, element pierwszy: {{Code|tabela_spisu[1]}}, jest równy wartości {{Code|true}}, wtedy mamy do czynienia z szablonem {{s|SpisPozycja}}. Jej element: {{Code|tabela_spisu["numer_link"]}}, istnieje i jest równy: {{Code|tyt}} {{Patrz|tyt}}. Iterujemy po kluczach i jego wartościach tego szablonu i sprawdzamy, który element jest równy właśnie tej wartości, a jeżeli jest taki, to dla elementów nie równych niemu, a właściwie w jego wartości iterujemy po kodach funkcją: {{LinkPatrz|p.IteratorSzablonowyZakodowanegoTekstu}}, dla tej wartości, w ten sposób zbieramy tablicę wielowymiarową najpierw po: {{Code|obiekt}} {{LinkPatrz|obiekt}}, póżniej po: {{Code|kod}}, {{LinkPatrz|kod}}, którą nazwiemy: {{Code|tab_nieobslugiwane}} {{Patrz|tab_nieobslugiwane}}, którego każda jej wartość jest równa {{Code|true}}. Ta tablica mówi dla jakich elementów ma nie zbierać w tablicy elementów w głównej tablicy rozdziałów i jego artykułach.
Dla elementu {{Code|tyt}} {{LinkPatrz|tyt}} tablicy parametrów przedrostek listy {{Code|przedrostek_listy}} ustawiamy na pusty, i liczmy numerację {{Code|tekstowy_przedrostek}} i zmienną {{Code|szablon}} {{LinkPatrz|szablon}} i ustawiamy zmienną {{Code|przerwij}} {{Patrz|przerwij}} na {{Code|true}}, aby dla tego szablonu nie zbierać elementów w tablicy rozdziałów i jego artykułów.
W przypadku przeciwnym dla: {{Code|tabela_spisu}}, gdy ma wartość {{Code|false}}, wtedy mamy do czynienia z funkcją: {{s|SpisZw}}. Dla niej liczymy: {{Code|przedrostek_listy}}, którą ustawiamy na pustą wartość. A: {{Code|tekstowy_przedrostek}}, liczmy uzyskując parametr o kluczu: {{Code|tabela_spisu["numer"]}}, którym jest parametr o numerze: {{Code|1}}, i {{Code|szablon}} {{LinkPatrz|szablon}}, który liczmy z parametrów szablonu o kluczu {{Code|tabela_spisu["link"]}}, którym jest numer {{Code|2}}. Ustawiamy tutaj zmienną: {{Code|}} {{LinkPatrz|przerwij}}, na wartosć {{Code|true}}.
====== {{Śródtytuł|CzyObslugiwane}}{{Code|CzyObslugiwane}} ======
Funkcja sprawdzająca, które elementy są obsługiwane, jeśli istnieje tablica: {{Code|tab_nieobslugiwane}} {{LinkPatrz|tab_nieobslugiwane}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local CzyObslugiwane=function()...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = Brak parametrów. | komórka1 = tak
}}
====== Dalszy opis funkcji ======
; Uwzględnianie tablicy, reprezentujące artykuł w rozdziale, wstawiany do tablicy danego rozdziału{{dk}}
Sprawdzany jest warunek:
<syntaxhighlight lang="lua">
if((--[[wliczaj_artykuly_tego_rozdzialu]] true)and(not przerwij)and((not tab_nieobslugiwane)or(CzyObslugiwane())))then
</syntaxhighlight>
Jeżeli jest on spełniony, wtedy wywołujemy funkcję: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}, później dla:
<syntaxhighlight lang="lua">
if((not czy_obslugiwane)and(not numer_rodzaju_artykulu_poprz))then
</syntaxhighlight>
Sprawdzamy, czy jest zebrana licencja z autorem według zmiennej: {{Code|licencja_z_autorem}} {{Patrz|licencja_z_autorem}}, i sprawdzamy, czy: {{Code|szablon}} {{LinkPatrz|szablon}}, jest wnetrzem szablonu, jeżeli tak, to ona przyjmuje wartość odpowiadająca prawdziwej, przeciwnie ma fałszywą.
Jeżeli ten pierwszy warunek jest niespełniony, to tylko liczymy to samo coostatnio.
; Szablony licencji, i jego parametry, uwzględnianie jego tylko raz ca całą książkę, mieszcząca się w artykule głównej książki{{dk}}
Następnie dla warunku, który musi być spełniony:
<syntaxhighlight lang="lua">
if((not numer_rodzaju_artykulu_poprz)and(not przerwij)and(link_szablon)and((not tab_pozycja_elementow_w_spisie_rzeczy)or(not tab_pozycja_elementow_w_spisie_rzeczy[1]))and(czy_artykul_korzystany)and(licencja_z_autorem))then
</syntaxhighlight>
Sprawdzamy szablony licencji, takich jak: {{s|Licencja}}, według tablicy: {{Code|{{sr|#p.szablony_licencji|p=StronicowyParser/obiekty}}}}.
Dla parametrów szablonu, liczymy jego parametry o kluczach, tzn.: {{Code|Autor}} {{Patrz|Autor}}, {{Code|Ukończone szkoły}} {{Patrz|Ukończone szkoły}}, {{Code|Email}} {{Patrz|Email}}, {{Code|Dotyczy}} {{Patrz|DotyczyDotyczy}}, {{Code|Licencjonowanie}} {{Patrz|Licencjonowanie}}, {{Code|Umowa prawna}} {{Patrz|Umowa prawna}} i {{Code|Konsekwencje}} {{Patrz|Konsekwencje}}, którego wartości przydzielamy do odpowiednich zmiennych. Każdą z tych zmiennych kompletujemy funkcją: {{Code|{{sr|#p.DekodowanieTekstuDekodowanieTekstu|p=StronicowyParser/Potrzebne}}}}, poprzez zwracaną przez nią funkcję, w której jest wykorzystywana funkcją: {{LzLua|frame:preprocess}}, do rozwijania. A dla elementu istniejącego: {{Code|Autor}}, piszemy zmienną: {{Code|licencja_z_autorem}} {{LinkPatrz|licencja_z_autorem}}, któremu przydzielamy wartość {{Code|false}}, co spowoduje, że nie będziemy analizowali jeszcze raz innego szablonu licencji.
Te zmienne tego szablonu zbieramy natomiast w tablicy: {{Code|tabela_licencji_spisu_tresci}} {{Patrz|tabela_licencji_spisu_tresci}}, dane dotyczące licencji, więc:
<syntaxhighlight lang="lua">
tabela_licencji_spisu_tresci={autor, szkoly, email, dotyczy, licencjonowanie, umowa_prawna, konsekwencje};
</syntaxhighlight>
Co później przerywamy pętle po: {{Code|iterator2}} {{LinkPatrz|iterator2}}, instrukcją: {{Code|break}}.
==== Dalszy opis funkcji {{nobold|{{LinkPatrz|opis funkcji-ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}}} ====
Ściągamy tekst, tabelę bazy i tabelę parametrów strony o nazwie: {{Code|nazwa_modulu}}, przy pomocy funkcji: {{Code|{{sr|#p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony|p=StronicowyParser/Tekst}}}}, według:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=nil;
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
return nil;
end,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Uruchamiamy funkcję: {{Code|__FUNKCJA_ZBIERANIA_DANYCH}} {{LinkPatrz|__FUNKCJA_ZBIERANIA_DANYCH}}, jeżeli istnieje.
Dalej wywołujemy funkcję: {{Code|{{sr|#p.IterTekst|p=StronicowyParser/Rozdziały}}}}, w celu znalezienia tekstu: {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}}, i iteratora: {{Code|iterator}} {{Patrz|iterator}}, po napisach wprowadzenia tekstu rozdziałów i ich zawartości rozdziałów i na podstawie:
<syntaxhighlight lang="lua">
local iterator,tekst_rozwiniety_calego_artykulu=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,true,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,
__FUNKCJA, ---- funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adresu szablonu, określa i zawraca jego zawartość;
__FUNKCJA2, ---- funkcja operująca na przygotowanej zawartości napisu wprowadzenia tekstu i tekście napisu wprowadzenia tekstu (rozdziału);
__FUNKCJA_ANALIZA_SPISU ---- funkcja do analizy i modyfikacji tekstu (może zwracać wartość: nil) przed samym kodowaniem, jeżeli tekst jest w ogóle jest taki, a jeśli nie, ta funkcja wtedy nie jest uruchamiana, funkcja ta bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: IterTekst, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: SpisTreści, co jest uwidocznione w module: Moduł:StronicowyParser/SpisTreści;
);
</syntaxhighlight>
Opis parametrów zwracanych:
{{OpisParametrów
| 1 = {{Code|iterator}} {{Patrz|iterator-IterTekst}} | _1 = Iterator po rozdziałach i jego zawartościach.
| 2 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu-IterTekst}} | _2 = Tekst przetworzony rozdziału.
}}
Odczytujemy tabelę: {{LinkPatrz|p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu}} i dalej: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}, o definicji:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={
["spis treści"]=true,
["spis tresci"]=true,
["spis rzeczy"]=true,
};
</syntaxhighlight>
Robimy kopię tych tabel i przyłączamy do metatabeli: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, przy pomocy funkcji: {{LzLua|setmetatable}}, aby nie odrózniać tych rozdziałów ze względu na wielkość liter i polskie znaki.
Inicjiujemy zmienną: {{Code|numer_rozdzialu_w_ksiazce}} {{LinkPatrz|numer_rozdzialu_w_ksiazce}}, wartością: {{Code|1}}, aby zbierać po kolei artykuły ze poszczególnego pojedynczego spisu treści.
Ustawiamy maksymalny rozmiar rozdziału zerowego na {{Code|50}}, w zmiennej: {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{Patrz|maksymalny_rozmiar_rozdzialu_zerowego}}, według:
<syntaxhighlight lang="lua">
local maksymalny_rozmiar_rozdzialu_zerowego=50;
</syntaxhighlight>
===== {{Śródtytuł|AnalizaRozdzialu}}{{Code|AnalizaRozdzialu}} =====
Jest to funkcja do zbierania danych z pojedynczgo rozdziału o pewnej linii, inicjowana z jego parametrami, także tekstem rozdziału.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function AnalizaRozdzialu(rozdzial,linia_rozdzialu,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|rozdzial}} {{Patrz|rozdzial}} | _1 = Jest to tekst rozdziału.
| 2 = {{Code|linia_rozdzialu}} {{Patrz|linia_rozdzialu}} | _2 = Jest to linia z rozdziałem.
| 3 = {{Code|text}} {{Patrz|text}} | _3 = Jest to tekst rozdziału o pewnym napisie wprowadzenia tekstu.
| 4 = {{Code|poziom_rozdzialu}} {{Patrz|poziom_rozdzialu}} | _4 = Jest to poziom danego rozdziału.
| 5 = {{Code|poczatek_rozdzialu}} {{Patrz|poczatek_rozdzialu}} | _5 = Początek pozycji listy rozdziałów mechanizmu {{NS|k=mw|l=tak|pk=d}}.
| 6 = {{Code|numeracja}} {{Patrz|numeracja}} | _6 = Numeracja rozdziału.
| 7 = {{Code|czy_rozdzial_centrowany}} {{Patrz|czy_rozdzial_centrowany}} | _7 = Czy dany rozdział jest centrowany.
}}
====== Tabela artykułów rozdziałów i w nich artykułów oraz jego poszczególnych ======
Tworzymy tabelę: {{Code|tabela_artykulow}} {{LinkPatrz|tabela_artykulow}}, jeżeli nie istnieje, z pustą tablicą, a później dla elementu: {{Code|numer_rozdzialu_w_ksiazce}} {{LinkPatrz|numer_rozdzialu_w_ksiazce}}, jeżeli też go nie ma, to też pustą tablicą. Dalej liczymy napis wprowadzenia tekstu rozdziału dodatniego funkcją: {{LinkŚródtytuł|p.AnalizaNapisuWprowadzeniaTekstu}} i uwzględniamy je w tabeli rozdziałów dla danego rozdziału pod wartością: {{Code|tabela_rozdzial_artykulow[1]}}, w sposób:
<syntaxhighlight lang="lua">
tabela_rozdzial_artykulow[1]={rozdzial_na_tekst,{poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany,},rozdzial,};
</syntaxhighlight>
Dalej wprowadzamy zmienną: {{Code|czy_spis_rzeczy_napis_wprowadzenia_tekstu}} {{Patrz|czy_spis_rzeczy_napis_wprowadzenia_tekstu}}, mówiącą teraz rozpatrujemy rozdziały i artykuły w ramach spisu treści o nagłówkach typu: {{Code|Spis treści}}, czy: {{Code|SPIS RZECZY}}. Jeżeli wyszliszmy poza to, to ta zmienna wtedy przyjmuje wartość fałszywą, a definicja inicjacji tej zmiennej jest:
<syntaxhighlight lang="lua">
local czy_spis_rzeczy_napis_wprowadzenia_tekstu=(poziom_rozdzialu)and(not czy_jest_spis_tresci)and(not dalej_nie_rozwazaj_spis_tresci)and(jakie_spisy_tresci[spreparowany_uzyskany_tekst_rozdzialu]);
</syntaxhighlight>
Gdzie:
{{OpisParametrów
| 1 = {{Code|poziom_rozdzialu}} | _1 = Jak w: {{LinkPatrz|poziom_rozdzialu}}.
| 2 = {{Code|czy_jest_spis_tresci}} {{Patrz|czy_jest_spis_tresci}} | _2 = Czy jesteśmy w spisie treści.
| 3 = {{Code|dalej_nie_rozwazaj_spis_tresci}} {{Patrz|dalej_nie_rozwazaj_spis_tresci}} | _3 = Zmienna mówiąca, że teraz jesteśmy poza spisem treści.
}}
====== Kiedy uwzględniamy artykuły rozdziału ======
Jeżeli jesteśmy w spisie, to zawsze są uwzględniane artykuły rozdziału, bo jest ustawiona zmienna: {{Code|wliczaj_artykuly_tego_rozdzialu}} {{LinkPatrz|wliczaj_artykuly_tego_rozdzialu}}, na {{Code|true}}, a poza na {{Code|nil}}.
Funkcja jest przyszykowana jest dla jednego spisu treści, o ściśle określonym specjalnym napisie wprowadzenia tekstu, w danym spisie na stronie.
====== Iterator linii artykułu spis treści ======
Uruchamiamy iterator używając funkcji lokalnej: {{LinkŚródtytuł|iteratorTekstuNaglowka}}, według wywołania:
<syntaxhighlight lang="lua">
local iterator=iteratorTekstuNaglowka();
</syntaxhighlight>
Ustawiamy zmienną: {{Code|wliczaj_artykuly_tego_rozdzialu}} {{LinkPatrz|wliczaj_artykuly_tego_rozdzialu}}, aby wliczał lub nie, pewne artykuły rozdziału według:
<syntaxhighlight lang="lua">
local wliczaj_artykuly_tego_rozdzialu=((wliczaj_artykuly_tego_rozdzialu)or(not jakie_nie_rozdzialy[rozdzial]));
</syntaxhighlight>
Iterujemy otrzymanym ostatnio iteratorem, uzyskując kolejno zmienne: {{Code|przedrostek_listy}} {{LinkPatrz|przedrostek_listy}}, {{Code|tekstowy_przedrostek}} {{LinkPatrz|tekstowy_przedrostek}}, {{Code|linia}} {{LinkPatrz|linia}}, i {{Code|w_rozdziale}} {{LinkPatrz|w_rozdziale}}.
; Kiedy rozdziałów zerowych nie liczymy jako je{{dk}}
Dla rozdziałów, które nie sa poziomami z listą, sprawdzamy, czy to jest rozdział zerowy przy pomocy funkcji: {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|p=StronicowyParser/Rozdziały}}}}, i sprawdzamy, czy on przekracza rozmiar: {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}, jeżeli jest tym rozdziałem i nie przekracza pewnego rozmiaru, to to jest rozdział traktowany jako zerowy niepomijany rozdział zerowy, wtedy ustawiamy zmienną: {{Code|nie_pomijaj_tego_rozdzialu}} {{Patrz|nie_pomijaj_tego_rozdzialu}}, na {{Code|true}}.
; A jeśli to są rozdziały z listy zaczynające się od dwukropka w linii{{dk}}
Gdy taki rozdział nie pretenduje do zerowych, to sprawdzamy funkcją: {{Code|{{sr|#p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu|p=StronicowyParser/Rozdziały}}}}, czy ten rozdział pominąć, a jeżeli ona przyjmuje wartość odpowiadającej fałszywej, czyli {{Code|false}}, wtedy ustawiamy zmienną: {{Code|nie_pomijaj_tego_rozdzialunie_pomijaj_tego_rozdzialu}} {{LinkPatrz|nie_pomijaj_tego_rozdzialu}}, na taką samą wartość jak poprzednio.
; Inne rozdziały{{dk}}
Dla rozdziałów innych ta wartość przyjmuje postać {{Code|false}}.
; Rozdziały jednak nie pomijane{{dk}}
Dla rozdziałów, które nie są pomijane, wtedy zmienna: {{Code|nie_pomijaj_tego_rozdzialu}} {{LinkPatrz|nie_pomijaj_tego_rozdzialu}}, przyjmuje wartość {{Code|true}}, w takim przypadku wchodzimy do funkcji: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstuZgodnieZJegoSzablonowymiElementami|p=Szablonowe}}}}, wtedy dla linków szablonowych sprawdzamy, czy to są linki określone tablicami: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy}}, {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}} lub ewentualnie funkcją: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}.
Innym sposobem sprawdzania, czy to jest szablon linkowy jest tablica: {{Code|{{sr|#p.szablony_kompletowania_stron_woluminu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_kompletowania_stron_woluminu}}, lub {{Code|{{sr|#p.szablony_licencji|p=StroncowyParser/obiekty}}}} {{LinkPatrz|p.szablony_licencji}}.
Jeżeli to jest szablon linków, wtedy jest zwracana wartość: {{Code|return true,obiekt,kod}}, w przeciwnym wypadku: {{Code|return false,obiekt,kod}}.
Innym sposobem liczenia, czy to jest link, to wtedy może być to link normalny: {{Code|LINKW}}, który można sprawdzić funkcją: {{Code|{{sr|#p["CzyLinkWewnętrzny"]|p=Specjalne}}}}, wtedy jest zwracane {{Code|return true,obiekt,kod}}.
Link też może być zewnętrzny, wtedy to jest: {{Code|LINKZ}}, wtedy funkcja zwraca wartość: {{Code|return true,obiekt,kod}}.
; Kiedy analizujemy artykuły rozdziału{{dk}}
Następnie dla linii: {{Code|linia_rozwazana}} {{LinkPatrz|linia_rozwazana}}, co na podstawie tego liczymy, czy daną linię nie uwzględnić, w obliczeniach według schematu:
<syntaxhighlight lang="lua">
local czy_linia_uwzgledniana=mw.ustring.match(linia_rozwazana,"^%s*%-%-+(.*)%-%-+%s*$");
local czy_linia=((not czy_linia_uwzgledniana)and(mw.ustring.match(linia_rozwazana,"^%s*[%-%+%=%~]+.*$")
or ((#przedrostek_listy==0)and((mw.ustring.match(linia_rozwazana,"!"))and(mw.ustring.match(linia_rozwazana,"[^!]%s*$"))))
or mw.ustring.match(linia_rozwazana,"^%s*<")) or nil);
</syntaxhighlight>
Co następnie jest ustawiana {{Code|nowa_linia}} {{LinkPatrz|nowa_linia}} na wartość {{Code|false}}.
; Warunek analizowania artykułów rozdziałów{{dk}}
W obliczeniach raz uwzględniamy funkcję: {{LinkŚródtytuł|AnalizaLiniiObiekty}}, w ostatniej omawianej pętli, schematycznie:
<syntaxhighlight lang="lua">
if(not czy_linia)then AnalizaLiniiObiekty(linia_rozwazana);end;
</syntaxhighlight>
===== Dalsza część funkcji {{nobold|{{LinkPatrz|opis funkcji-ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}}} =====
Bierzemy zakodowany tekst: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu-IterTekst}}, i po nim iterator: {{Code|iterator}} {{LinkPatrz|iterator-IterTekst}}, wtedy iterujemy po parametrach:
<syntaxhighlight lang="lua">
local parsuj_rozdzialami=nil; ---- ta zmienna służy na wypadek, gdy by nie była żadnych rozwazanych rozdziałów;
for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do
---- za każdym razem jest uruchamiana funkcja: AnalizaRozdzialu, przy rozważanym rozdziale;
AnalizaRozdzialu(rozdzial_tab[1],rozdzial_tab[2],text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany);
---- oznacz zmienną: parsuj_rozdzialami, wartością; true, a póżniej jąnie inicjuj;
if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end
end;
</syntaxhighlight>
Parametry zwracane przez iterator: {{Code|iterator}} {{LinkPatrz|iterator-IterTekst}}:
{{OpisParametrów
| 1 = {{Code|rozdzial_tab}} {{Code|{{=}}}} {{Code|<nowiki>{ [1] = rozdzial, [2] = linia_rozdzialu, }</nowiki>}} | _1 = tabela składająca się z dwóch elementów:
| 2 = Pod elementy tabeli: | nagłówek2 = tak
| 3 = {{Code|rozdzial}} | _3 = Jak w: {{LinkPatrz|rozdzial}}.
| 4 = {{Code|linia_rozdzialu}} | _4 = Jak w: {{LinkPatrz|linia_rozdzialu}}.
| 5 = Inne parametry: | nagłówek5 = tak
| 6 = {{Code|text}} | _6 = Jak w: {{LinkPatrz|text}}.
| 7 = {{Code|poziom_rozdzialu}} | _7 =Jak w: {{LinkPatrz|poziom_rozdzialu}}.
| 8 = {{Code|poczatek_rozdzialu}} | _8 = Jak w: {{LinkPatrz|poczatek_rozdzialu}}.
| 9 = {{Code|numeracja}} | _9 = Jak w: {{LinkPatrz|numeracja}}.
| 10 = {{Code|czy_rozdzial_centrowany}} | _10 = Jak w: {{LinkPatrz|czy_rozdzial_centrowany}}.
}}
Gdy nie napotkano żadnego rozważanego rozdziału, wtedy: {{Code|parsuj_rozdzialami}}, przyjmuje wartość {{Code|nil}}, w takim razie uruchamiana jest funkcja:
<syntaxhighlight lang="lua">
if(not parsuj_rozdzialami)then
AnalizaRozdzialu("Spis treści",nil,tekst_rozwiniety_calego_artykulu,nil,nil,nil,nil);
end;
</syntaxhighlight>
Funkcja zwraca parametry inaczej, gdy artykuł, do którego należy książka jest korzystany, a inaczej, jeśli nie. W takim razie możemy zwracać na dwa sposoby:
<syntaxhighlight lang="lua">
if(czy_artykul_korzystany)then
return tabela_artykulow,tabela_licencji_spisu_tresci,przekierowanie_spisu_tresci;
else
return tabela_artykulow,nil,przekierowanie_spisu_tresci;
end;
</syntaxhighlight>
Przy artykułach korzystanych, co jest określone zmienną: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, tabelę: {{Code|tabela_licencji_spisu_tresci}} {{LinkPatrz|tabela_licencji_spisu_tresci}}, przy jego spisach treści w książkach, do której należy ten artykuł, zwracana jest jako wartość przeważnie jako nierówna {{Code|nil}}, a dla artykułów z innych książkach, ta wartość już jest taka, tzn. przyjmuje wartość {{Code|nil}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
45x80q5qe2nak3x7sl8z24zrmi0bybm
558351
558350
2026-10-02T19:27:52Z
Persino
2851
/* {{Śródtytuł|AnalizaRozdzialu}}{{Code|AnalizaRozdzialu}} */
558351
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SpisTreści}}|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 lokalne ==
=== {{Śródtytuł|Ile}}{{Code|Ile}} ===
Funkcja liczy liczbę elementów we wszystkich podtabelach tabeli {{Code|tabela_rozdzial_artykulow2}} {{Patrz|tabela_rozdzial_artykulow2}}, licząc od drugiej tabeli, po pierwszej tabeli mieści się podtabela z informacjami o rozdziale, w której znajdują się artykuły określone dalszymi podtabelami.
Tymi podtabelami są od {{Code|2}} do {{Code|7}}, czyli {{Code|6}} tabelek, w których są artykuły, które zaliczamy do kategorii wliczane, tzn. one nie znajdują się w takich rozdziałach przetłumaczonych na małą literę, ale przedtem na nią była działana funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, usuwając z nich odstępy na końcach, w tym dolne myślniki, a wewnątrz zamieniając kolejne dolne myślniki i spacje na jedną spacją.
Metafunkcja, w metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, w: {{Code|{{ld2|Parametry}}}}, aby porównać to z tablicą {{Code|{{sr|#p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu}}, by zaliczyć je do tego typu:
<syntaxhighlight lang="lua">
p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu={
["licencja"]=true,
["inne"]=true,
["bibliografia"]=true,
["zobacz też"]=true,
["linki zewnętrzne"]=true,
};
</syntaxhighlight>
Twew rozdziały należą do kategorii rozdziałów, w których artykuły są pomijane przez: '''{{ld|StronicowyParser|Stronicowy parser}}''', ale jeżeli one należą do rozdziału spisu treści lub rzeczy, to tam jednak nie są takie, inaczej jest poza.
A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}.
A ta powyższa tabela mieści się: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a jego opis w: {{Code|{{sr|#p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu|p=StronicowyParser/obiekty}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow2)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|numer_rodzaju_artykulu}} | _1 = Numer podtabeli elementtu, do którego wsadzamy element.
| 2 = {{Code|tabela_rozdzial_artykulow2}} | _2 = Tabela wraz podtabelami, od {{Code|1}} do {{Code|13}}, ale liczenie jest od {{Code|2}}.
}}
=== {{Śródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}{{Code|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}} ===
==== Opis pobieżny funkcji ====
Funkcja do wstawiania elementów z ogólnej tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}, za pomocą funkcji wstawianej jako parametr: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{Patrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, do odpowiedniej pozycji artykularnej od: {{Code|2}} do {{Code|13}}, a pozycja {{Code|1}}, to pozycja rozdziałowa, ona jest określana przez zmienną: {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{Patrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, a pozycja, którą wsadzamy to: {{Code|tab_stare}} {{Patrz|tab_stare}}.
Funkcja zwraca pozycje:
<syntaxhighlight lang="lua">
return numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych;
</syntaxhighlight>
Opis tych parametrów funkcji:
{{OpisParametrów
| 1 = {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} | _1 = Jest to wartość zwrócona przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}}, w odróżnieniu od: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, jest mniejszy o jeden, czyli wtedy to była a poziomie przypisywania wartość {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}},
| 2 = {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} | _2 = Pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}.
| 3 = {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} | _3 = Tablica do sprawdzania, czy artykuł z nagłówkiem, ma powtórzenie tego bez nagłówka, czyli dla tego bez tego jest inna numeracja niż z nagłówkiem, a gdy niema tego bez, to wtedy dzięki tej funkcji numeracja tak się zachowuje, jak tam by był ten element, co prawda jest tam dodawany, ale jako z informacją taką, że bz numeru ustalanym przez funkcję: {{LinkŚródtytuł|Ile}}, A przy okazji, aby tego elementu nie dodawać ponownie, to w nim jest ustalana druga zmienna na {{Code|1}}, a wcześniej była na {{Code|0}}, i dlatego ona była wtedy dodawana, a później już tak nie jest.
}}
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY,tabela_rozdzial_artykulow2,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow--[[]])...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{Patrz|self}} | _1 = Zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}}.
| 2 = {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} | _2 = Opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow2,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare);
</syntaxhighlight>
Funkcja jest wywoływana w:
<syntaxhighlight lang="lua">
numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych=WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,WsadzanieParametryDoTablicy(linia,czy_linia_uwzgledniana),tabela_rozdzial_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow);
</syntaxhighlight>
Gdzie funkcja: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, to jest: {{LinkŚródtytuł|WsadzanieParametryDoTablicy}}.
| 3 = {{Code|tabela_rozdzial_artykulow2}} | _3 = Ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow2}}.
| 4 = {{Code|tablica_artykulow_zebranych}} | _4 = Diała jak w: {{LinkPatrz|tablica_artykulow_zebranych}}.
| 5 = {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} | _5 = Jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}}.
| 6 = {{Code|szablon}} {{Patrz|szablon}} | _6 = Jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu.
| 7 = {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - | _7 = Kolejno to jest: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''' i '''nazwa książki'''.
| 8 = {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} | _8 = Jest to nazwa artykułu danego spisu treści.
| 9 = {{Code|pelna_nazwa_spisu_tresci}} {{Patrz|pelna_nazwa_spisu_tresci}} | _9 = Uchwyt do bazy kodowania tekstu strony spisu treści.
| 10 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} | _10 = Nazwa strony szablonowa, jak są wywoływane w postaci szablonowej, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}}.
| 11 = {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} | _11 = Uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 12 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _12 = Tablica bazy zapisana w postaci osobnej tablicy, a nie jej w wewnętrznej bazie, nie jak to było w postaci zmiennej {{LinkPatrz|nazwa_modulu}}, używana zamiast: {{LinkPatrz|nazwa_modulu}}.
| 13 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _13 = Tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}.
| 14 = {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} | _14 = Obiekt i kod, czyli: zmienne charakteryzujące zmienną wnętrza: {{Code|szablon}} {{LinkPatrz|szablon}}.
| 15 = {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} | _15 = Tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy.
| 16 = {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} | _16 = Tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię.
| 17 = {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} | _17 = Numeracja rozdziału, z jakim rozpoczyna się rozdział.
| 18 = {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} | _18 = Gdy link znajduje się w rozdziale dodatnim.
| 19 = {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} | _19 = Cała linia z artykułem lub artykułami, tą linią równie dobrze może być rozdział, tu chodzi o rozdział dodatni.
}}
==== Opis pobieżny funkcji {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} ====
Przedstawiamy tutaj funkcję: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, która jest opisana w punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Definicja funkcji w nagłówku:
<syntaxhighlight lang="lua">
__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow2,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare);
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tabela_rozdzial_artykulow2}} | _1 = Jak w: {{LinkPatrz|tabela_rozdzial_artykulow2}},
| 2 = {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} | _2 = Jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}},
| 3 = {{Code|tab_stare}} | _3 = Jak w: {{LinkPatrz|tab_stare}}.
}}
Ta funkcja została opisana już wcześniej.
==== Szczegółowy opis funkcji głównej ====
Uruchamiamy funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, która jest zdefiniowana w module: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}}. Wywołujemy tę funkcję:
<syntaxhighlight lang="lua">
local tab_pozycja_elementow_w_spisie_rzeczy,numer_rodzaju_artykulu,id,parametry_szablonu,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nil,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
</syntaxhighlight>
Pierwszy elementem: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest to zmienna tablicowa, która opisuje parametry artykularno-linkowe parametry, drugi: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, do której kategorii należy dany artykuł w linku, a trzeci parametr, to: {{Code|id}} {{Patrz|id}}, to zbierane są parametry linkowe z szablonu {{s|SpisTreści}}, czwarty to: {{Code|parametry_szablonu}} {{Patrz|parametry_szablonu}}, w przypadku szablonów inteligentnych linków, to są parametry wywołań tych szablonów, ostatni parametr to: {{Code|kom}} {{Patrz|kom}}, przedstawia on, jeśli {{Code|false}}, to artykuł zakwalifikowany został poprawnie do rozważań, a {{Code|true}} już nie.
To {{LinkPatrz|parametry szablonu}}, to jest tablica z trzech elementów, tzn.:
<syntaxhighlight lang="lua">
local parametry szablonu={tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,};
</syntaxhighlight>
Elementy tablicy:
{{OpisParametrów
| 1 = {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} | _1 = Tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych.
| 2 = {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} | _2 = To jest nazwa uzyskanego szablonu linków inteligentnych lub nie.
| 3 = {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} | _3 = Tabela modyfikatorów rozkładanego szablonu.
}}
Jeśli parametr: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, istnieje, to tworzona jest z niego taka sama wersja lub przy nieistnnieniu parametru {{LinkPatrz|wliczaj_artykuly_tego_rozdzialu}}, do niego jest dodawana jest liczba {{Code|6}}. W ten sposób możemy zbierać artykuły książki i inne,ktore należą do pewnych rozdziałów i które nie należą.
===== {{Śródtytuł|ParametrPierwszy}}{{Code|ParametrPierwszy}} =====
Funkcja zbierające dane z {{Code|tab_artykul}} {{Patrz|tab_artykul}}, którego to jest czteroelementowa tablica, dotycząca danego artykułu. Drugim parametrem: {{Code|czy_niedozwolone}} {{Patrz|czy_niedozwolone}}, jest zmienna logiczna mówiąca, czy wskazać w nazwie artykułu, czy są dozwolone znaki, jest to sprawdzenie według wyrażenia regularnego: {{Code|<nowiki>[|<>{}%[%]]</nowiki>}} {{Patrz|wzor_znaki_niedozwolone}} na podstawie funkcji {{LzLua|mw.ustring.match}}, czyli: {{Code|znaki_niedozwolone}} {{Patrz|znaki_niedozwolone}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
ParametrPierwszy(tab_artykul,czy_niedozwolone)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tab_artykul}} | _1 = Jak w: {{LinkPatrz|tab_artykul}}.
| 2 = {{Code|czy_niedozwolone}} | _2 = Jak w: {{LinkPatrz|czy_niedozwolone}}.
}}
Gdzie: {{Code|tab_artykul}} {{LinkPatrz|tab_artykul}}, który jest pierwszym parametrem przyjmowanym przez funkcję, jest zdefiniowany jako czteroelementowa tablica, którą przypisujemy do czterem osobnych parametrów:
<syntaxhighlight lang="lua">
local artykul=tab_artykul[1];
local parametry=tab_artykul[2];
local naglowek=tab_artykul[3];
local tablica_przekierowania=tab_artykul[4];
</syntaxhighlight>
Jeżeli, któreś z parametrów z: {{LinkPatrz|tab_artykul}}, tzn. element jego {{Code|2}}-gi i {{Code|3}}-ci, istnieje, to układana jest trzyelementowa tablica z elementów od {{Code|1}} do {{Code|3}}, z dodatkowym elementem: {{Code|<nowiki>["LINK"] = true</nowiki>}}, a element czwarty to jest: {{Code|tablica_przekierowania}} {{Patrz|tablica_przekierowania}}, a jeżeli te dwa elementy, nie licząc czwartego, wcale nie istnieją, wtedy jest tworzony łańcuch znakowy z tego pierwszego elementu. Tak tworzymy, nową wersję tablicy: {{Code|tab_artykul}} {{Patrz|tab_artykul-nowa wersja}}, lub łańcuch znakowy, w postaci:
<syntaxhighlight lang="lua">
tab_artykul=((artykul)and(parametry or naglowek))and{[1]=artykul,[2]=parametry,[3]=naglowek,["LINK"]=true,} or artykul;
</syntaxhighlight>
Funkcja zwraca trzy parametry, tzn. parametry: {{LinkPatrz|tab_artykul-nowa wersja}}, {{LinkPatrz|znaki_niedozwolone}} i tablicę przekierowania: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}:
<syntaxhighlight lang="lua">
return tab_artykul,znaki_niedozwolone,tablica_przekierowania;
</syntaxhighlight>
===== Rozwijanie nazwy linku artykułu =====
Do rozwijania nazwy linku służy funkcja: {{Code|{{sr|#p.DekodowanieTekstuNazwLinku|p=StronicowyParser/Pomocne}}}} {{Patrz|p.DekodowanieTekstuNazwLinku}}, pod względem szablonowym i nie tylko.
Funkcja rozwija tą nazwę tym: {{LzLua|frame:preprocess}}, jedynie nie rozwija szablonów stronicowego parsera, podane podkategoriach w kategorii: {{Code|{{lk2|Szablony stronicowe}}}}, za pomocą odpowiednich metod, bo to by wywołało nieskończoną pętle, i dlatego takie szablony są zamieniane tylko na wywołania symboliczne.
==== Dalszy opis funkcji nadrzędnej przy istnieniu parametrów linkowych normalnych, czy szablonowych (linków inteligentnych) ====
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|{{=}}}} {{Code|1}} =====
Tworzony jest numerek: {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{Patrz|numer_rodzaju_artykulu_w_podreczniku}}, który w stosunku do: {{LinkPatrz|numer_rodzaju_artykulu}}, jest większy o jeden, a schemat tej operacji:
<syntaxhighlight lang="lua">
local numer_rodzaju_artykulu_w_podreczniku=numer_rodzaju_artykulu+1;
</syntaxhighlight>
====== Tworzenie tablicy: {{nobold|{{Code|tablica_artykulow_zebranych}}}} ======
Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną wstępnie w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}.
; Tablica{{dk}} {{nobold|{{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}}}}, nie jest tablicą{{dk}}
Gdy element pierwszy: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, nie jest tablicą, wtedy jedynie liczymy, czy ona ma znaki niedozwolone: {{Code|wzor_znaki_niedozwolone}} {{LinkPatrz|wzor_znaki_niedozwolone}}, a póżniej wiedząc ten element, który jest aktualną nazwą artykułu kiążki, tworzymy tabelę {{Patrz|tablica_artykulow_zebranych-imicjacja}}:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,};
</syntaxhighlight>
; Gdy element{{dk}} {{nobold|{{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}}}}, jest łańcuchem znaków{{dk}}
Wpierw liczone są parametry z wywołania, z opcją, czy ma liczyć, czy nazwa artykułu ma znaki niedozwolone, z funkcji: {{LinkŚródtytuł|ParametrPierwszy}}:
<syntaxhighlight lang="lua">
tab_pozycja_elementow_w_spisie_rzeczy[1],znaki_niedozwolone,tablica_przekierowania=ParametrPierwszy(tab_pozycja_elementow_w_spisie_rzeczy[1],true);
</syntaxhighlight>
; Inna książka - atrybut, tzn. czy artykuł wychodzi poza daną książkę, lub jego przekierowanie w niej kieruje na stronę poza nią{{dk}}
Dalej sprawdzane jest, czy książka przyjmuje atrybut, tzn.: '''czy inna książka''', wtedy liczymy to z kodu z tablicy przekierowania: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, jeżeli jej wartość istnieje, tzn.: {{Code|czy_inna_ksiazka}} {{Patrz|czy_inna_ksiazka}}:
<syntaxhighlight lang="lua">
local czy_inna_ksiazka=tablica_przekierowania and tablica_przekierowania[1] and tablica_przekierowania[1][5] or nil;
</syntaxhighlight>
; Tablica przekierowania artykułu względem bieżącej książki{{dk}}
Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, który przedstawia, czy to jest artykuł bieżącej książki, którego przekierowanie kieruje, wtedy ten parametr ma wartość {{Code|true}}, a gdy adres przekierowania wskazuje na inną książkę, wtedy {{Code|false}}. Jeśli ten parametr ma wartość fałszywą, wtedy jest sprawdzane, czy jest tablicą w: {{Code|czy_tablica}} {{Patrz|czy_tablica}}, według:
<syntaxhighlight lang="lua">
czy_tablica=parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1]);
</syntaxhighlight>
Lub w przeciwnym wypadku liczymy parametry artykularne z tablicy przekierowania: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek przekierowania, w tej tablicy, istnieje, wtedy parametr: {{Code|czy_tablica}} {{LinkPatrz|czy_tablica}}, przyjmuje wartość {{Code|true}}, w przeciwnym wypadku wartość fałszywą.
Gdy ten element nie jest tablicą, to tworzona jest nazwa pełna artykułu: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}} i umieszczana w tablicy: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z podobną tablicą początkową jak w poprzednim przypadku jego tworzenia, czyli jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}.
; Tablica zebranych artykułów i porównywanie artykułu z nagłówkiem, czy istnieje wcześniejszy artykuł bez niego{{dk}}
Gdy element jest jednak tablicą, też jest liczona pełna nazwa artykułu (gdy nazwa artykułu przekierowania istnieje, wtedy ona jest liczona z: {{Code|tablica_przekierowania[2]}}, w przeciwnym wypadku, jeśli element: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}}, jest tablicą, wtedy liczymy ją z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1][1]}}, w innym wypadku z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}}), a z niej liczymy tablicę: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}, w przypadku pierwszego artykułu nienagłówkowego.
A w przypadku pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie, artykuł poprzedni nie istnieje, a więc tego tam nie ma tam w takim przypadku.
Gdy funkcja napotkała artykuł o takim samym stronie, co poprzednio, to do wartości początkowej, bez definiowania jeszcze raz tej samej tablicy, jest ustawiane odpowiednio:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych[3]=true;
</syntaxhighlight>
Co informuje, że artykuł jest ten sam, tylko inny nagłówek niż poprzedni, a poprzedni pierwszy jest bez niego.
====== Rozwijanie nazwy linku ======
Kompletowany jest drugi element tablicy: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkPatrz|p.DekodowanieTekstuNazwLinku}}. Dalej z tej nazwy są usuwane znaki specjalne według funkcji: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, z modułu: {{Code|{{ld2|Specjalne}}}}. Następnie działamy funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, które końcowe spacje usuwa, a wewnętrz powtarzające zamienia kolejne na jedną spację.
====== Dodawanie do tablicy problemów, jeśli nastąpił problem ze znakami niedozwolonymi ======
A między czasie, gdy mamy niedozwolone znaki: {{Code|znaki_niedozwolone}} {{LinkPatrz|znaki_niedozwolone}}, za pomocą funkcji pytającej sprawdzamy, czy element inny zgłoszeniowy został dodany do tablicy problemów: {{Code|{{sr|#p.CzyJestTakiProblemowyElement|p=StronicowyParser/Problemy}}}}, aż w końcu dodajemy ten problem, jeśli go nie ma przy pomocy funkcji: {{Code|{{sr|#p.UstawTakiProblemowyElement|p=StronicowyParser/Problemy}}}}.
====== {{Śródtytuł|inicjacja_i_kompletowanie_zmiennych}}Ustalanie nazwy jednostki, kompletowanie linii artykułów i inicjowanie pozycji, w tabeli zebranych elementów, w tabeli zebranych elementów ======
Ustalamy nazwę jednostki z funkcji: {{Code|{{sr|#p.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem|p=StronicowyParser/Potrzebne}}}}, i inicjujemy tą wartością, czyli: {{Code|nazwa jednostki}} {{Patrz|nazwa jednostki}}, wartość starą: {{Code|stara_nazwa_jednostki}} {{Patrz|stara_nazwa_jednostki}}, według:
<syntaxhighlight lang="lua">
---- Piszanie pełnej nazwy jednostki bez parametrów i nagłówka;
local nazwa_jednostki=stronicowyparser_potrzebne_modul.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(tab_pozycja_elementow_w_spisie_rzeczy[1],false);
---- Inicjowanie starej wartości tą policzoną;
local stara_nazwa_jednostki=nazwa_jednostki;
</syntaxhighlight>
Dalej {{Śródtekst|uchwyt=tabela_rozdzial_artykulow2|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}}}, według:
<syntaxhighlight lang="lua">
if(not tabela_rozdzial_artykulow2[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow2[numer_rodzaju_artykulu_w_podreczniku]={};end;
</syntaxhighlight>
Co {{Śródtekst|uchwyt=linia_artykokow|tekst=dalej linię artykułów {{Code|linia_artykokow}} {{LinkPatrz|linia_artykokow}}, kompletujemy, funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, z modułu: {{Code|{{ld2|Szablonowe}}}}, znając tablicę: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}}}, według:
<syntaxhighlight lang="lua">
linia_artykokow=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_artykokow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
</syntaxhighlight>
====== Uwzględnianie niepodanego elementu nienagłówkowego w tablicy zebranych parametrów ======
Gdy tablica przekierowania: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, istnieje, wtedy sprawdzamy, czy zmienna logiczna: {{Code|czy_tablica}} {{LinkPatrz|czy_tablica}}, jest prawdą i czy: {{Code|stara_nazwa_jednostki}} {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej: {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie artykułu przekierowania.
Inicjujemy nową zmienną: {{Code|przekierowanie}} {{LinkPatrz|przekierowanie}}, z artykułu, parametrów i nagłówka, ale wpierw sprawdzamy, czy dwa ostatnie istnieją, według:
<syntaxhighlight lang="lua">
przekierowanie=przekierowanie and ((tablica_przekierowania[3] or tablica_przekierowania[4]) and {przekierowanie, tablica_przekierowania[3], tablica_przekierowania[4],["LINK"]=true,}or przekierowanie) or nil;
</syntaxhighlight>
Tworzony jest nowy element: {{Code|nazwa jednostki}} {{Patrz|nazwajednostki-nowy}}, z: {{LinkPatrz|nazwa jednostki}}, parametrów i nagłówka, według rysu:
<syntaxhighlight lang="lua">
nazwa_jednostki={nazwa_jednostki, tab_pozycja_elementow_w_spisie_rzeczy[1][2], tab_pozycja_elementow_w_spisie_rzeczy[1][3],["LINK"]=true,};
</syntaxhighlight>
Jeżeli parametr drugi: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}.
Wsadzamy element: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, do zbioru: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, przy pomocy funkcji: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Następnie jej drugiemu elementowi: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, do tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}, na pozycji: {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, według funkcji: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej.
Jeżeli tablica przekierowania: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, jednak nie istnieje, wtedy tak samo sprawdzamy, co poprzednio potem, ale po spełnieniu tych warunków robimy inną tablicą: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, i tę tablicę robimy podobnie, i inicjujemy te same elementy też podobnie.
====== Uwzględnianie pozycji podanej w tablicy zebranych elementów ======
Tworzymy zmienną: {{Code|ile_dodac_do_poziomu_artykulu}} {{Patrz|ile_dodac_do_poziomu_artykulu}}, z drugiego elementu tablicy: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, następnię tworzymy inną zmienną: {{Code|ile_dodac_do_poziomu_artykulu_lub_nil}} {{Patrz|ile_dodac_do_poziomu_artykulu_lub_nil}}, co uwidaczniamy wzorem:
<syntaxhighlight lang="lua">
local ile_dodac_do_poziomu_artykulu_lub_nil=((ile_dodac_do_poziomu_artykulu)and(ile_dodac_do_poziomu_artykulu>0))and ile_dodac_do_poziomu_artykulu or nil;
</syntaxhighlight>
Tą zmienną wykorzystamy do sformułowania: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}.
{{Śródtekst|tekst=Tworzymy zmienną: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}, na pozycji: {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, przy pomocy funkcji: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.|uchwyt=__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|>{{=}}}} {{Code|2}} =====
Będziemy tutaj operowali, gdy parametr drugi zwracany z funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, wskazuje na nie artykuł książki, zatem ten rozdział jest właśnie dla tego przypadku.
====== Odkodowanie i przygotowanie zmiennych artykułu linku, jej nazwy, także kodu języka i projektu ======
* Gdy pierwszy element tablicy: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}.
* Dla drugiego takiego elementu z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, co jest nazwą linku, wtedy gdy nazwa linku normalnego, czy szablonowego, jest zakodowana, to ją odkodujemy, którego każdy jego element kod odkodujemy według funkcji: {{LinkPatrz|p.DekodowanieTekstuNazwLinku}}, następnie z niej usuwamy znaki specjalne według: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, następnie usuwamy końcowe spacje i wewnątrz kolejne spacje zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
* Dla trzeciego i czwartego takiego elementu z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, te elementy odkodujemy, następnie z nich usuwamy końcowe spacje, a wewnątrz kolejne spacje zastępujemy jedną, według tej samej funkcji, co powyżej.
====== Przygotowanie zmiennych, inicjowanie tablicy: {{Code|tab_stare}}, i wsadzanie jej do tablicy ogólnej: {{Code|tabela_rozdzial_artykulow2}} ======
Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow2}}, także co {{PobierzŚródtekst|linia_artykokow}}, co wszystko robimy podobnie jak w rozdziale: {{LinkŚródtytuł|inicjacja_i_kompletowanie_zmiennych}}.
{{PobierzŚródtekst|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
==== Definicja tablicy: {{Code|tab_stare}}, inicjowanie jej elementów w różnych przypadkach ====
Przedstawiamy tutaj ogólną definicję zmiennej: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. Ta wersja jest jedynie sformułowana dla artykułów w rozdziale, a nie dla rozdziałów, bo w tablicy, do której jest ona wsadzana przyjmuje ona możliwy numerek od "2" do "13", a nie również "1". Jej wersja ogólna:
<syntaxhighlight lang="lua">
local tab_stare=
{
---- Początek elementów alternatywnych
{
---- Początek wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[1], -- artykuł bez pełnej nazwy ksiązki, bez parametrów i nagłówka, bo ich nie posiadałna samym początku;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- artykuł bez pełnej nazwy książki, bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[2], -- nazwa linku artykułu normalnego, czy szablonowego;
---- Początek elementów alternatywnych dla przekierowania
---- Poczatek parametrów przekierowania
{
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
tablica_przekierowania[3], -- parametry przekierowania artykułu;
tablica_przekierowania[4], -- nagłówek przekierowania artykułu;
["LINK"]=true, -- zmienna świadcząca, że nazwa przekierowania artykułu jest z parametrami i nagłówkiem;
},
---- lub
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
---- Koniec parametrów przekierowania
tablica_przekierowania[1], -- tablica o definicji: {
nazwa_przestrzeni_strony_przekierowania, -- nazwa przestrzzeni nazw przekierowania artykułu;
nazwa_przestrzeni_ksiazki_strony_przekierowania, -- nazwa przestrzeni książki przekierowania artykułu;
nazwa_ksiazki_strony_przekierowania, -- nazwa książki orzekierowania artykułu;
true/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce;
true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie;
czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach;
};
---- lub
nil, -- dotycząca przekierowania artykułu, a tutaj strona nie ma przekierowania, więc: nil;
nil, -- dotycząca tablicy książki, na którą wskazuje przekierowanie, a tutaj nie ma tablicy, więc: nil;
---- Koniec elementów alternatywnych dla przekierowania
tab_pozycja_elementow_w_spisie_rzeczy[3], -- kod języka;
tab_pozycja_elementow_w_spisie_rzeczy[4], -- kod projektu;
tab_pozycja_elementow_w_spisie_rzeczy[5], -- adres artykułu bez przetworzenia w linku normalnym,czy szablonowym;
ile_dodac_do_poziomu_artykulu_lub_nil, -- parametr mający tylko wartości: 1, gdy do aktualnego poziomu musi być dodane jeden - ta wartość, tylko dotyczy artykułów należących do tej samej książki, lub: nil, gdy nic, czyli w pozostałych przypadkach;
tab_pozycja_elementow_w_spisie_rzeczy[6], -- "url", pozycja świadcząca, że to jest link zewnętrzny, a nil, gdy to jest normalny link;
},
---- lub
tab_pozycja_elementow_w_spisie_rzeczy[1], -- nazwa artykułu linku, która nie posiada, ani parametrów w sobie, a po nim nagłówka, lub bezpośrednio po nazwie;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- nazwa artykułu bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec elementów alternatywnych
{
#przedrostek_listy, -- poziom listy, w którym jest artykuł, dla artykułów w linii z listą, w innym wypadku dla artykułu znajdującego się w rozdziale dodatnim, czy ujemnym jest zero;
przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])", przeciwnie dla artykułów w rozdziale dodatnim ma wartość pustą;
tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu, gdy nie ma takiej numeracji, bo nie da się jej wydzielić, to ma wartość pustą;
w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym, wtedy "true", w przeciwnym wypadku: "false";
},
linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare";
true/false, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: false;
true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika, przeciwnie: false;
---- Początek elementów alternaatywnych
Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow2), -- który numer artykułu, w momencie wsadzenia do tabeli zbierania rozdziałów i w nich artykułów, nawet w rozdziale;
---- lub
nil, -- nil, wtedy gdy link jest tak sobie dodany, który nie należy do żadnego spisu, a po nim elementy jego z nagłówkiem natomiast należą;
---- Koniec elementów alternatywnych
};
</syntaxhighlight>
W powyższym: {{Tag|syntaxhighlight|parametry=lang="lua"}}, dla elementu: {{Code|<nowiki>---- lub</nowiki>}}, jest powiedziane, że są dostępne alternatywy, które są zawarte w tablicy, że wybieramy te, aby nie spowodować czysto podwójnej tablicy, aby każda tablica zawierały inne elementy, jak wiele, a nie jedną tablicę, jak i łańcuchy znaków, wartość nil, powoduje, że czy ma być taka tablica, ale nie podwójna, co to znaczy podowójna, tzn. tablica w sobie zawiera inną jedyną tablicę, a tak nie może być, a jak zawiera jedną tablicę, to musi posiadać inne nienilowe elementy.
== Funkcje tablicy transportu ==
=== {{Śródtytuł|p.AnalizaNapisuWprowadzeniaTekstu}}{{Code|p.AnalizaNapisuWprowadzeniaTekstu}} ===
Funkcja przyjmuje jako parametr nieskompletowaną i nieprzetworzony tekst napisu wprowadzenia tekstu. On kompletujei przekształca go w odpowiedni sposób,aby otrzymać czysty tekst tytułu rozdziału.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AnalizaNapisuWprowadzeniaTekstu(rozdzial,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|rozdzial}} | _1 = Ten tekst tytułu rozdziału, o którym mówimy.
| 2 = {{Code|pelna_nazwa_spisu_tresci}} | _2 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci}}
| 3 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _3 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _5 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
==== Obiekty typu {{nobold|{{Code|SZABLON}}}} ====
Funkcja korzysta z funkcji: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, funkcja ma zdefiniowaną pierwszą jej funkcję, która dla: {{Code|obiekt {{=}} "SZABLON"}}, używamy pierwsze dwie tabelę, te tabele:
Pierwsza {{Patrz|szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu}}, która służy do zamieniania szablonów na ich parametry, tutaj pierwsza, to jest tablica: {{Code|{{sr|#p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu}}:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu={
["MDL:RozszerzonyLink"]=1,
["Kompletność"]="",
["Kompletność krótka"]="",
["Kompletność junior"]="",
["Książka"]="",
};
</syntaxhighlight>
Druga: {{Code|{{sr|#p.szablony_dozwolone_w_nazwach_linkowych|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_dozwolone_w_nazwach_linkowych}}, też służy do tego samego.
Funkcja wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja {{Patrz|p.szablony_dozwolone_w_nazwach_linkowych}}:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_w_nazwach_linkowych={
["Korekta"] =2,
};
</syntaxhighlight>
===== Funkcje zawartości i dodatków, dla szablonów =====
One służą do zamieniania wywołań szablonowych na odpowiednie ich zawartości parametrów określone przez numery parametrów tych elementów w tch tabelach. Jeżeli przy którym wywolaniu przy wykorzystaniu kolejnych tych tabel przy użyciu funkcji: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, nastąpiło zamienienie, to funkcja pierwsza w: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, zakańcza się z tą wartością. A jeżeli nie to uruchamia się funkcj dodatków: {{Code|{{sr|#p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu|p=StronicowyParser/Rozdziały}}}}, a jeśli nastąpiło zastąpienie, to funkcja kompletowania się kończy z tą wartością.
===== Szablonowe linki =====
Dalej jeżeli tak się nie stało, to uruchamia się funkcja parametrów, w którym wywołanie szablonowe jest rozkładane na nazwę szablonu, modyfikatory i parametry. Dalej jest spradzanie , czy jest to link inteligentny według funkcji: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}, a gdy jest, to funkcja kończy swoje działania z nazwą tego linku lub jego adreesem wewnętrznym, a jeśli on nie jest tym, to sprawdza, czy są inne szablonowe linki, które podejrzewa się poprzez wywołanie funkcji: {{Code|{{sr|#p.NazwaInnegoSzablonowegoLinkowegoObiektu|p=StronicowyParser/Potrzebne}}}}, a jeżeli jest tym linkiem, to funkcja składania zwraca też jak poprzednio nazwę linku lub jego adres wewnętrzny, ewentualnie z dodatkiem. A gdy nie, to w innym przypadku sprawwdzane, czy to jest inny link wewnętrzny generowane przez szablony, która spradza funkcja tutaj: {{Code|{{sr|#p.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy|p=StronicowyParser/Potrzebne}}}}, a jeżeli szablon jest tym linkiem, to kunkcja składania zwraca jego nazwę linkową.
===== Szablony rozwijane przez {{lpg|JavaScript}} =====
A następnym krokiem jest sprawdzanie, czy nazwa szablonu jest jednych z elementów z tablicy: {{LinkPatrz|p.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu}}, która ma ten element, te szablony wymienione w tej tablicy są po to, aby służyły do rozwijania przez JavaScript, są to elementy wikikodu, które są pracochłonne ze względu na ich skomplikowany kod, czy wikikod, nawet {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, i dlatego ich się nie rozwija przez stronicowy parser: {{Code|{{ld2|StronicowyParser}}}}, te nazwy szablonów są określone tablicą: {{Code|{{sr|#p.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu}}:
<syntaxhighlight lang="lua">
p.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu={
["Cytuj"]=true,
["Cytuj stronę"]=true,
["Cytuj pismo"]=true,
["Cytuj odcinek"]=true,
["Cytuj książkę"]=true,
["Cytuj grę komputerową"]=true,
};
</syntaxhighlight>
I funkcja wtedy zwraca skompletowany szablon bez rozwijania jego, pod warunkiem, jeżeli jest tym szablonem o tej nazwę szablonu wywołującego.
===== Co jest zwracane w przypadku szablonów =====
Te powyżej elementy dla funkcji parametrów, w niej wartości są zwracane do niej, a jeżeli ona przyjmuje wartość nienilową, to do funkcji składania zwracana jest jego wartość, a przeciwnie jest zwracane pierwszy parametr szablonu do niej.
==== Obiekty typu: {{nobold|{{Code|NOWIKI}}}}, {{nobold|{{Code|PRE}}}} i {{nobold|{{Code|ŹRÓDŁO}}}} ====
A gdy dla elementów, jeśli nazwa obiektu jest: {{Code|obiekt {{=}} "NOWIKI"}}, {{Code|obiekt {{=}} "PRE"}}, lub: {{Code|obiekt {{=}} "ŹRÓDŁO"}}, znacznik jest rozkładany na czynniki pierwsze, a jeżeli nnie ma zawartości, to przez funkcję skłądania jest zwracana wartość pusta, a jeśli nie, to pewne znaki specjalne tagu {{Tag|nowiki}}, które mają w nim być zamienione na tekst, są zamieniane na kody '''HTML''', co po zamienieniu ta ona jest zwracana.
==== Obiekty typu: {{nobold|{{Code|MATH}}}}, {{nobold|{{Code|GALERIA}}}}, {{nobold|{{Code|MAPAOBRAZU}}}}, i {{nobold|{{Code|INNEPRE}}}} ====
A jeżeli wartość: {{Code|obiekt}}, jest nie równa: {{Code|MATH}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} lub {{Code|INNEPRE}}, wtedy z zawartości zmiennej: {{Code|szablon}}, są wykorzystanne funkcje z modułu: {{Code|{{ld2|Specjalne}}}}, które w tej podanej zmiennej są usuwane z komentarze z: {{Code|{{sr|#p["UsuńKomentarze"]|p=Specjalne}}}}, zamieniane są linki zewnętrzne i wewnętrzne na ich nazwy lub adresy według: {{Code|{{sr|#p["ZamieńLinkiZewnętrzneNaTekst"]|p=Specjalne}}}} i {{Code|{{sr|#p["ZamieńLinkiWewnętrzneNaTekst"]|p=Specjalne}}}}. Są usuwane rozwinięte znaczniki szablonów stylów używając do tego celu: {{Code|{{sr|#p["UsuńSzablonyStylów"]|p=Specjalne}}}}. Są też usuwane znaczniki na podstawie: {{Code|{{sr|#p["UsuńZnaczniki"]|p=Specjalne}}}}. Z tekstu szablonu są usuwane normalne kategorie nieszablonowe: {{Code|{{sr|#p"UsuńKategorie"]|p=Specjalne}}}}. Są też usuwane z zawartości wywołania plików i interwiki z: {{Code|{{sr|#p["UsuńWywołaniaPlików"]|p=Specjalne}}}} i {{Code|{{sr|#p["UsuńInterwiki"]|p=Specjalne}}}}. Dalej z tego obiektu są usuwane znaki specjalne z: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}.
A gdy mamy do czynienia z innymi znacznikami, to są zwracane jest zamiast niego wartość pusta do funkcji kompletowania.
Dane z funkcji kompletowane są zwracane, które z niej są usuwane znaki specjalne z całości tekstu rozdziału: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, i znaki białe z końców tekstu i powtarzarzające się te znaki kolejne z wewnętrz są zamieniane na jedną spację, to się dzieje według funkcji: {{Code|{{sr|#p["UsuńZbędneBiałeZnaki"]|p=Specjalne}}}}.
Cały taki wynik operacji robione w funkcji w nagłówku są zwracane do niej, to jest, co uzyskujemy nazwa rozdziału w postaci przetworzonej.
=== {{Śródtytuł|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}{{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} ===
Opisane tutaj są podfunkcje, z których korzysta ta funkcja, co one robią, do czego są wykorzystane.
==== Opis funkcji: {{nobold|{{Patrz|opis funkcji-ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}}} ====
Funkcja służy do zbierania nagłówków i z niej danych, tzn. linków normalnych i inteligentnych, a także są zbierane nagłówki z listy bez artykułów i do nich elementy podlisty z artykułami w postaci wywołań linkowych w niej. Tworzona jest specjalnie dla niegp tablica: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, która w odpowiedni po przekształaceniach wsadzana jest do tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} | _1 = Jak w: {{LinkPatrz|self}}.
| 2 = {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} | _2 = Kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}.
| 3 = {{Code|nazwa_spisu_tresci}} | _3 = Jak w: {{LinkPatrz|nazwa_spisu_tresci}}.
| 4 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _4 = Czy dany spis treści dla książki dla jej artykułu korzystanego, dla innej książki, wtedy to artykuł niekorzystany.
| 5 = {{Code|adres_ksiazki_glownego_spisu_tresci}} {{Patrz|adres_ksiazki_glownego_spisu_tresci}} | _5 = Jest to wewnętrzny adres książki głównego spisu treści,jest to taki adresm na który wskazuje przekierowanie innej książki.
| 6 = {{Code|__FUNKCJA_ZBIERANIA_DANYCH}} {{Patrz|__FUNKCJA_ZBIERANIA_DANYCH}} | _6 =
{{Śródtekst|bez preprocess=tak|uchwyt=__FUNKCJA_ZBIERANIA_DANYCH|tekst=
Jest to funkcja, która zbiera informacje o aktualnym artykule, która jest spisem treści, w postaci nieprzetworzonej przez funkcje z modułu: {{Code|{{ld2|StronicowyParser/Rozdziały}}}}, opisanego w: {{Code|{{sr|Rozdziały|StronicowyParser - Rozdziały|p=StronicowyParser}}}}, ta funkcja kopiuje, np. tabele danych bazy modułu: {{Code|{{m|Szablonowe}}}}, tzn: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, i tabelę rozkładu elementów w niej na czynniki pierwsze, tzn.: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, co jest napisane w module: {{Code|{{ld2|StronicowyParser/ZbieranieDanychStron}}}}, a w dokumentacji: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
__FUNKCJA_ZBIERANIA_DANYCH(nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona);
</syntaxhighlight>
Funkcja nie zwraca niczego, jest funkcją, zwykłą bezwartościową procedurą, niezwracającą niczego.
}}
}}
==== Funkcje lokalne ====
Funkcja ma w sobie też definicję funkcji lokalnych zdefiniowanej w tej funkcji tutaj opisywanej.
===== {{Śródtytuł|FunkcjaIteratoraTekstuZakodowego}}{{Code|FunkcjaIteratoraTekstuZakodowego}} =====
Funkcja służy do pomijania tego, co nie jest linkiem wewnętrznym, czy zewnętrznym, czyli oznaczone kodami: {{Code|LINKW}} lub {{Code|LINKZ}}, czy nawet szablonem linkuinteligentnego, czy innego służacego do generowania spisu treści, do tego celu również używa funkcji: {{LinkŚródtytuł|CzySzablonLinkLubLicencja}}, oraz tego co nie jest w liście okreslonym wzorem {{Code|<nowiki>\n([#:*;]+)</nowiki>}} z mozliwym na początku tekstem, ale nie z kodami, w danej pozycji listy, lub co ewentualnie nie może być w możliwej liście, tzn.: {{Code|<nowiki>\n([#:*;]*)</nowiki>}}, ale wtedy musi tam być z tekstem, ale nie z kodami, na początku danej pozycji listy, nawet jeśli to nie jest lista, to też tak samo.
Jeżeli funkcja nie ma kodów linków wewnętrznych, czy to normalnych, czy szablonowych, to się zakańcza z wartością domyślną {{Code|nil}}, w przeciwnym wypadku do sprawdzenia używa do tego funkcji: {{LinkŚródtytuł|PomijajLinkiOrazLicencje}}, do sprawdzania, czy to jest link lub licencji, a jeżeli ta funkcja zwraca wartość {{Code|true}}, to cała funkcja zwraca {{Code|nil}}. Jeżeli oba te sposoby nie dały rezultatu {{Code|true}}, to wtedy funkcja zwraca wartość pustą, czyli okreslonym ciągiem znakowym o szwerokości zerowej.
Funkcja ma w sobie dwie definicje funkcji: {{LinkŚródtytuł|PomijajLinkiOrazLicencje}} i {{LinkŚródtytuł|CzySzablonLinkLubLicencja}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local FunkcjaIteratoraTekstuZakodowego=function(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}.
| 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}.
| 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod}}.
}}
====== {{Śródtytuł|PomijajLinkiOrazLicencje}}{{Code|PomijajLinkiOrazLicencje}} ======
Funkcja służy do sprawdzania, czy są odpowiednie szablony w kodzie.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function PomijajLinkiOrazLicencje(szablon)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}.
}}
Funkcja sprawdza, czy to są szablony spisu treści określone tablicą o kluczach, którymi są nazwy szablonów, z wartościami {{Code|true}}, czyli: {{Code|{{sr|#p.szablony_licencji|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_licencji}}:
<syntaxhighlight lang="lua">
p.szablony_licencji={
["Licencja"]=true,
};
</syntaxhighlight>
Tzn., czy to są szablony ozdobne woluminu, którego tablica: {{Code|{{sr|#p.szablony_ozdobne_stron_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_ozdobne_stron_woluminu}}, jest podobnie zbudowana, co poprzednia:
<syntaxhighlight lang="lua">
p.szablony_ozdobne_stron_woluminu={
["MDL:RozszerzonyLink"]=true,
};
</syntaxhighlight>
A jeżeli to są te szablony, to funkcja zwraca wartość {{Code|true}}.
Jeżeli jednak to nie są te szablony, należy użyć tablic, tak samo zbudowanej jak poprzednie, czyli: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.linki_szablony_elementy_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.linki_szablony_elementy_spisu_rzeczy={
["SpisTreści"]=true,
["Sekcja referencyjna"]=true,
["Sr"]=true,
["Link wewnętrzny"]=true,
["Ly"]=true,
["LinkOgólne"]=true,
["Lo"]=true,
};
</syntaxhighlight>
lub innej, inaczej zbudowanej niż poprzednie, ale ważne, że ma wartość niefałszywą, czyli taką tablicą: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}, jest:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
Jak są te nazwy szablonów określone ich kluczami tych tablic, to funkcja zwraca wartość {{Code|true}}. A jeżeli jednak nie to funkcją: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}, jest sprawdzane,czy to jest link inteligentny, nawet przekierowanie, jeżeli link taki jest, to funkcja zwraca wartość w tym wypadku {{Code|true}}. W przeciwnym wypadku, jak nie zwrócił tej wartości,bo taka nie jest nazwa szablonu, to funkcja nic nie zwraca.
====== {{Śródtytuł|CzySzablonLinkLubLicencja}}{{Code|CzySzablonLinkLubLicencja}} ======
Funkcja sprawdzająca za pomocą: {{LinkŚródtytuł|PomijajLinkiOrazLicencje}}, na podstawie parsowania tekstu szablonu funkcją: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, z parsowanym przechwytywanym typem obiektu: {{Code|obiekt}} {{LinkPatrz|obiekt}}, równym {{Code|SZABLON}}. A jeżeli funkcja ta wspomniana w tekście zwróci {{Code|true}}, to funkcja taki obiekt policzy.
Jeżeli liczba policzonych obiektów i znalezionych w wyniku parsowania jest większa od zera, to funkcja w nagłówku zwróci wartość {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local CzySzablonLinkLubLicencja=function(szablon)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}.
}}
===== {{Śródtytuł|iteratorTekstuNaglowka}}{{Code|iteratorTekstuNaglowka}} =====
Jest to funkcja iteratora, którego funkcja zwracana (iterator) zwraca parametry, dla rozdziałów dodatnich i pozycji list.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function iteratorTekstuNaglowka()
... ---- Kod przed zwróceniem iteratora;
return function()
... ---- Ciało funkcji iteratora;
end;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = Brak parametrów. | komórka1 = tak
}}
Iterator (funkcja zwracana przez funkcję w nagłówku) zwraca parametry w wyniku kolejnych wywołań:
<syntaxhighlight lang="lua">
return przedrostek_listy,tekstowy_przedrostek,wyzyskane_wywolanie_szablonu_spis_tresci,true/false;
</syntaxhighlight>
Parametry zwracane przez iterator:
{{OpisParametrów
| 1 = {{Code|przedrostek_listy}} | _1 = Przedrostek pozycji listy, dla rozdziałów dodatnich jest wartością pustą.
| 2 = {{Code|tekstowy_przedrostek}} | _2 = Numeracja pozycji w liście lub w nagłówku dodatnim.
| 3 = {{Code|wyzyskane_wywolanie_szablonu_spis_tresci}} | _3 = Jest to rozdział bez numeracji i przedrostka pozycji listy.
| 4 = {{Code|true/false}} | _4 = Wartość {{Code|true}} świadczy o rozdziale dodatnim, a w przypadku innym funkcja zwraca zawsze wartość tą {{Code|false}} jako ostatni element zwracany.
}}
Funkcja jest przykowana na rozdziałów dodatnich i pozycji list oraz innych linii, dla tego pierwszego funkcja zwraca:
<syntaxhighlight lang="lua">
return "","",wartosc,true;
</syntaxhighlight>
Gdzie {{Code|wartość}} jest to zawartość napisu wprowadzenia tekstu (rozdziału dodatniego).
W przypadku list oraz innych niż rozdziały dodatnie samo wyrażenie regularne {{lpg|Lua}} w {{lpr|Lua|Scribunto}} jest okreslone przez wyrażenie:
<syntaxhighlight lang="lua">
local re="([#:*;]*)[^%S\n]*([%d%.]*[^%S\n]*[^\n]+)";
</syntaxhighlight>
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu|p=StronicowyParser/Rozdziały}}}}, aby zamienić zawartość pozycji listy na rozdział bez numeracji i numerację, i dlatego ta funkcja zwraca te dwie wartości. Gdy funkcja jak nie znajdzie więcej linii (wyszukań), to zwraca wartość {{Code|nil}} mówiąca o zakończeniu iteracji iteratora, tzn. dane dla iteratora się zakończyły.
===== {{Śródtytuł|LiniaArtykulow}}{{Code|LiniaArtykulow}} =====
Funkcja dla szablonów kompletowania określonym tabelką: {{Code|{{sr|#p.szablony_kompletowania_stron_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_kompletowania_stron_woluminu}}, o definicji:
<syntaxhighlight lang="lua">
p.szablony_kompletowania_stron_woluminu={
["Kompletność"]=true,
["Kompletność krótka"]=true,
["Kompletność junior"]=true,
["Książka"]=true,
};
</syntaxhighlight>
Rozdziela linię na wiele obsługiwanych podlinii.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function LiniaArtykulow(linia)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|linia}} {{Patrz|linia}} | _1 = Pojedyncza przetworzona linia.
}}
====== {{Śródtytuł|SzablonAnalizujKompletnosc}}{{Code|SzablonAnalizujKompletnosc}} ======
Funkcja sprawdza, czy dane wywołania szablonu, ma swoją nazwę szablonu, która jest nazwą szablonu kompletowania.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function SzablonAnalizujKompletnosc(szablon)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}.
}}
====== Dalszy opis funkcji ======
Możliwe są dwie opcje, szablon kompletowania jest pierwszy, a drugi drugi, lub odwrotnie. Funkcja obsługuje te oba przypadki. Ona stawia przecinkiem dla obu wersji ustawień, jeśli potraktować układem link i szablon kompletowania, to wstawiany jest on pomiędzy tymi układami, aby rozdzielić linię, a w liście bez jego znaków pozycji, na elementy przy pomocy funkcji: {{LzLua|mw.text.split}}, z opcją jako drugi parametr, aby uwzględniał wyrażenia regularne {{Code|false}}. W tych rozdzielonych linią tą funkcją dzielącą ciąg znakowy na tabelę, kody '''HTML''' przecinka są zamieniane na zwykły przecinek.
Funkcja zwraca tabelę podzielonej linii na mniejsze podlinie, który można iterować funkcją: {{Code|pairs}} lub {{Code|ipairs}}.
===== {{Śródtytuł|WsadzanieParametryDoTablicy}}{{Code|WsadzanieParametryDoTablicy}} =====
Funkcja z parametrami, która uruchamia inną funkcję uruchamianą w: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}, która wstawia tabelę {{LinkPatrz|tab_stare}}, do ogólnej tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}, ewentualnie do {{Code|tabela_rozdzial_artykulow}} {{Patrz|tabela_rozdzial_artykulow}} na pozycję {{Code|numer_podtablicy_w_tablicy}} {{Patrz|numer_podtablicy_w_tablicy}}, a dokładniej na pozycję {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}} w funkcji {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function WsadzanieParametryDoTablicy(linia,czy_linia_uwzgledniana)
return function(tabela_rozdzial_artykulow2,numer_podtablicy_w_tablicy,tab_stare)
... ---- ciało funkcji.
end;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|linia}} | _1 = Jak w: {{LinkPatrz|linia}}.
| 2 = {{Code|czy_linia_uwzgledniana}} {{Patrz|czy_linia_uwzgledniana}} | _2 = Czy linię ma uwzględnić w powiększaniu poziomu o jeden dla artykułu.
}}
Parametry zwracanej funkcji przez tę w nagłówku:
{{OpisParametrów
| 1 = {{Code|tabela_rozdzial_artykulow2}} | _1 = Jak w: {{LinkPatrz|tabela_rozdzial_artykulow2}}.
| 2 = {{Code|numer_podtablicy_w_tablicy}} | _2 = Jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}.
| 3 = {{Code|tab_stare}} | _3 = Jak w: {{LinkPatrz|tab_stare}}.
}}
====== {{Śródtytuł|CzyZaliczac}}{{Code|CzyZaliczac}} ======
Funkcja sprawdza, czy z początkiem linii pozycji listy, bez przedrostka listy, jest z możliwym cudzysłowem, po którym następują liczby, litery, lub myślniki dolne, w takim pzypadku linia nie może składać się z nich, po ktorym występują znaki interpunkcyjne. Jeśli to sprawdzenie było pozytywne funkcja zwraca wartość logiczną odpwowiadającą {{Code|true}}, w przeciwnym wypadku jak {{Code|false}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function CzyZaliczac()...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = Brak parametrów funkcji. | komórka1 = tak
}}
Funkcja zwraca informację, czy daną linię traktować jako rozdział, chodzi tu o pozycje list, a w przypadku rozdziałów dodatnich wiadomo, że one są właśnie, że rozdziałami.
====== Dalszy opis funkcji ======
Funkcja sprawdza w funkcji zwracanej, czy rozważany rozdział jest centrowany danego artykułu, który siedzi pod rozdziałem lub w samym rozdziale, sprawdza, czy artykuł jest w rozdziale, sprawdza czy linia jest uwzględniana: {{Code|czy_linia_uwzgledniana}} {{LinkPatrz|czy_linia_uwzgledniana}}. Funkcja sprawdza, czy sekcja czy w: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, czy istnieje element: {{Code|tab_stare[2]}} {{Patrz|tab_stare[2]}}, i dalszy: {{Code|tab_stare[2][1]}} {{Patrz|tab_stare[2][1]}} - ten element jest to w: {{Code|tab_stare}}, taki: {{Code|#przedrostek_listy}} {{Patrz|#przedrostek_listy}}, a jeżeli to sprawdzenie przeszło pozytywnie, który dla tego jest poziomem listy, lub zerowego rozdziału lub rozdziału dodatniego.
Dla każdej linii zmienna: {{Code|nowa_linia}} {{Patrz|nowa_linia}}, przyjmuje wartość {{Code|false}}, wtedy dla przypadku przeciwnego, tzn. gdy mamy rozdział i uwzględniamy artykuły w jednej linii, którym jest rozdział będacy pozycją listy, w zmiennej: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, jest ustawiany element: {{Code|tab_stare[2][4]}} {{Patrz|tab_stare[2][4]}}, czyli zmienna: {{Code|w_rozdziale}} {{LinkPatrz|w_rozdziale}}, zaczyna przyjmować wartość {{Code|true}}. Wsadzany jest wtedy do tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}, na pozycję: {{Code|numer_podtablicy_w_tablicy}} {{LinkPatrz|numer_podtablicy_w_tablicy}}, czyli to jest też: {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, element {{Code|tab_stare}} {{LinkPatrz|tab_stare}}.
Gdy: {{Code|nowa_linia}} {{LinkPatrz|nowa_linia}}, gdy jednak przyjmuje wartość {{Code|false}}, wtedy jeśli poziom rozdzialu istnieje i przedrostek listy {{LinkPatrz|#przedrostek_listy}} jest większy od zera, i istnieje wiele artykułów w pozycji liście, wtedy: {{Code|ile>0}}, lub funkcja: {{LinkŚródtytuł|CzyZaliczac}}, przyjmuje wartość odpowiadające prawdziwej, w taki przypadku zmiennej: {{Code|nowa_linia}} {{LinkPatrz|nowa_linia}}, przydzielamy wartość {{Code|true}}, by dalsze artykuły można było wsadzić, do tablicy z nowym rozdziałem. Powiększamy numer rozdziału o jeden, tzn.: {{Code|numer_rozdzialu_w_ksiazce}} {{Patrz|numer_rozdzialu_w_ksiazce}}, wtedy w zmiennej: {{Code|tabela_artykulow}} {{Patrz|tabela_artykulow}}, tabeli rozdziałów i w nich artykułów dla tej pozycji przydzielamy wartość równą tablicy pustej. Liczymy rozdział dla tego rozdział z artykułami, z funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}, liczymy napis rozdziału, wtedy do pierwszej pozycji tablicy utworzonej w: {{Code|tabela_artykulow}} {{LinkPatrz|tabela_artykulow}}, dla miejsca: {{Code|numer_rozdzialu_w_ksiazce}} {{LinkPatrz|numer_rozdzialu_w_ksiazce}}, czyli: {{Code|tabela_rozdzial_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}, piszemy:
<syntaxhighlight lang="lua">
tabela_rozdzial_artykulow[1]={rozdzial_na_tekst,{-#przedrostek_listy,przedrostek_listy,tekstowy_przedrostek,false,},linia,};
</syntaxhighlight>
Gdzie: {{Code|rozdzial_na_tekst}} {{Patrz|rozdzial_na_tekst}}, to policzony rozdział, {{Code|-#przedrostek_listy}} {{Patrz|-#przedrostek_listy}} to poziom rozdziału ujemnego, i dlatego minus. A: {{Code|przedrostek_listy}}, to znaki poczatkowe z listy: {{Code|wzor_do_linii_z_lista}} {{LinkPatrz|wzor_do_linii_z_lista}}, a: {{Code|tekstowy_przedrostek}}, to numeracja tego rozdziału. Wartość {{Code|false}} to jest ze ten rozdział nie jest centrowany, a: {{Code|linia}} {{LinkPatrz|linia}}, to wyzyskana linia bez początku pozycji listy. Ustawiamy: {{Code|tab_stare[2][4]}} {{LinkPatrz|tab_stare[2][4]}}, na wartość {{Code|true}} i element: {{Code|tab_stare[6]}} {{Patrz|tab_stare[6]}}, ustawiamy na zero. Tworzymy tablicę pustą na pozycję: {{LinkPatrz|numer_podtablicy_w_tablicy}}, tablicy: {{Code|tabela_rozdzial_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}, i do tej tablicy dodajemy: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, za pomocą funkcji: {{LzLua|table.insert}}.
A jeżeli nie jest tworzony nowy rozdział z listy w tabeli: {{Code|tabela_artykulow}} {{LinkPatrz|tabela_artykulow}}, to na pozycję: {{Code|numer_podtablicy_w_tablicy}} {{LinkPatrz|numer_podtablicy_w_tablicy}}, jest dodawany element: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, również tak jest robione, gdy artykuły znajdują się w rozdziale dodatnim, tzn. równaniowej lub centrowanej, tzn. wtedy: {{Code|w_rozdziale}} {{LinkPatrz|w_rozdziale}}, przyjmuje wartość {{Code|true}}.
===== {{Śródtytuł|AnalizaLiniiObiekty}}{{Code|AnalizaLiniiObiekty}} =====
Za pomocą funkcji: {{LinkŚródtytuł|LiniaArtykulow}}, linia: {{Code|linia_rozwazana}} {{Patrz|linia_rozwazana}}, jest rozdzielana na wiele linii. To wiele linii w postaci tabeli, są iterowane od: {{Code|k {{=}} 1}}, do: {{Code|k {{=}} #tab_linia}}, gdzie: {{Code|#tab_linia}} {{Patrz|#tab_linia}}, jest to długość linii, tzn. liczba elementów numerowanych tablicy, tzn. od 1 do zwyż aż do apotkania najbliższej przerwy lub końca. Wtedy dla pojedyńczej literacji mamy: {{Code|tab_linia[k]}} {{Patrz|tab_linia[k]}}.
Iterujemy po kodach dla linii: {{Code|tab_linia[k]}} {{LinkPatrz|tab_linia[k]}}, przy pomocy funkcji: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} {{Patrz|p.IteratorSzablonowyZakodowanegoTekstu}}, iteratorem: {{Code|iterator2}} {{Patrz|iterator2}}.
Inicjujemy zmienną: {{Code|tab_nieobslugiwane {{=}} nil}}, następnie iterujemy: {{LinkPatrz|iterator2}}, uzyskując w każdej iteracji: {{Code|szablon}} {{LinkPatrz|szablon}}, {{Code|obiekt}} {{LinkPatrz|obiekt}}, i {{Code|kod}} {{LinkPatrz|kod}}.
Gdy mamy do czynienia: {{Code|SZABLON}}, lub: {{Code|LINKW}}, albo: {{Code|LINKZ}}, wtedy dla elementów tego pierwszego bierzemy tablicę: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}, dla elementu: {{Code|nazwa_szablonu}} {{LinkPatrz|nazwa_szablonu}}.
Jeżeli ten element: {{Code|tabela_spisu}}, istnieje, element pierwszy: {{Code|tabela_spisu[1]}}, jest równy wartości {{Code|true}}, wtedy mamy do czynienia z szablonem {{s|SpisPozycja}}. Jej element: {{Code|tabela_spisu["numer_link"]}}, istnieje i jest równy: {{Code|tyt}} {{Patrz|tyt}}. Iterujemy po kluczach i jego wartościach tego szablonu i sprawdzamy, który element jest równy właśnie tej wartości, a jeżeli jest taki, to dla elementów nie równych niemu, a właściwie w jego wartości iterujemy po kodach funkcją: {{LinkPatrz|p.IteratorSzablonowyZakodowanegoTekstu}}, dla tej wartości, w ten sposób zbieramy tablicę wielowymiarową najpierw po: {{Code|obiekt}} {{LinkPatrz|obiekt}}, póżniej po: {{Code|kod}}, {{LinkPatrz|kod}}, którą nazwiemy: {{Code|tab_nieobslugiwane}} {{Patrz|tab_nieobslugiwane}}, którego każda jej wartość jest równa {{Code|true}}. Ta tablica mówi dla jakich elementów ma nie zbierać w tablicy elementów w głównej tablicy rozdziałów i jego artykułach.
Dla elementu {{Code|tyt}} {{LinkPatrz|tyt}} tablicy parametrów przedrostek listy {{Code|przedrostek_listy}} ustawiamy na pusty, i liczmy numerację {{Code|tekstowy_przedrostek}} i zmienną {{Code|szablon}} {{LinkPatrz|szablon}} i ustawiamy zmienną {{Code|przerwij}} {{Patrz|przerwij}} na {{Code|true}}, aby dla tego szablonu nie zbierać elementów w tablicy rozdziałów i jego artykułów.
W przypadku przeciwnym dla: {{Code|tabela_spisu}}, gdy ma wartość {{Code|false}}, wtedy mamy do czynienia z funkcją: {{s|SpisZw}}. Dla niej liczymy: {{Code|przedrostek_listy}}, którą ustawiamy na pustą wartość. A: {{Code|tekstowy_przedrostek}}, liczmy uzyskując parametr o kluczu: {{Code|tabela_spisu["numer"]}}, którym jest parametr o numerze: {{Code|1}}, i {{Code|szablon}} {{LinkPatrz|szablon}}, który liczmy z parametrów szablonu o kluczu {{Code|tabela_spisu["link"]}}, którym jest numer {{Code|2}}. Ustawiamy tutaj zmienną: {{Code|}} {{LinkPatrz|przerwij}}, na wartosć {{Code|true}}.
====== {{Śródtytuł|CzyObslugiwane}}{{Code|CzyObslugiwane}} ======
Funkcja sprawdzająca, które elementy są obsługiwane, jeśli istnieje tablica: {{Code|tab_nieobslugiwane}} {{LinkPatrz|tab_nieobslugiwane}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local CzyObslugiwane=function()...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = Brak parametrów. | komórka1 = tak
}}
====== Dalszy opis funkcji ======
; Uwzględnianie tablicy, reprezentujące artykuł w rozdziale, wstawiany do tablicy danego rozdziału{{dk}}
Sprawdzany jest warunek:
<syntaxhighlight lang="lua">
if((--[[wliczaj_artykuly_tego_rozdzialu]] true)and(not przerwij)and((not tab_nieobslugiwane)or(CzyObslugiwane())))then
</syntaxhighlight>
Jeżeli jest on spełniony, wtedy wywołujemy funkcję: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}, później dla:
<syntaxhighlight lang="lua">
if((not czy_obslugiwane)and(not numer_rodzaju_artykulu_poprz))then
</syntaxhighlight>
Sprawdzamy, czy jest zebrana licencja z autorem według zmiennej: {{Code|licencja_z_autorem}} {{Patrz|licencja_z_autorem}}, i sprawdzamy, czy: {{Code|szablon}} {{LinkPatrz|szablon}}, jest wnetrzem szablonu, jeżeli tak, to ona przyjmuje wartość odpowiadająca prawdziwej, przeciwnie ma fałszywą.
Jeżeli ten pierwszy warunek jest niespełniony, to tylko liczymy to samo coostatnio.
; Szablony licencji, i jego parametry, uwzględnianie jego tylko raz ca całą książkę, mieszcząca się w artykule głównej książki{{dk}}
Następnie dla warunku, który musi być spełniony:
<syntaxhighlight lang="lua">
if((not numer_rodzaju_artykulu_poprz)and(not przerwij)and(link_szablon)and((not tab_pozycja_elementow_w_spisie_rzeczy)or(not tab_pozycja_elementow_w_spisie_rzeczy[1]))and(czy_artykul_korzystany)and(licencja_z_autorem))then
</syntaxhighlight>
Sprawdzamy szablony licencji, takich jak: {{s|Licencja}}, według tablicy: {{Code|{{sr|#p.szablony_licencji|p=StronicowyParser/obiekty}}}}.
Dla parametrów szablonu, liczymy jego parametry o kluczach, tzn.: {{Code|Autor}} {{Patrz|Autor}}, {{Code|Ukończone szkoły}} {{Patrz|Ukończone szkoły}}, {{Code|Email}} {{Patrz|Email}}, {{Code|Dotyczy}} {{Patrz|DotyczyDotyczy}}, {{Code|Licencjonowanie}} {{Patrz|Licencjonowanie}}, {{Code|Umowa prawna}} {{Patrz|Umowa prawna}} i {{Code|Konsekwencje}} {{Patrz|Konsekwencje}}, którego wartości przydzielamy do odpowiednich zmiennych. Każdą z tych zmiennych kompletujemy funkcją: {{Code|{{sr|#p.DekodowanieTekstuDekodowanieTekstu|p=StronicowyParser/Potrzebne}}}}, poprzez zwracaną przez nią funkcję, w której jest wykorzystywana funkcją: {{LzLua|frame:preprocess}}, do rozwijania. A dla elementu istniejącego: {{Code|Autor}}, piszemy zmienną: {{Code|licencja_z_autorem}} {{LinkPatrz|licencja_z_autorem}}, któremu przydzielamy wartość {{Code|false}}, co spowoduje, że nie będziemy analizowali jeszcze raz innego szablonu licencji.
Te zmienne tego szablonu zbieramy natomiast w tablicy: {{Code|tabela_licencji_spisu_tresci}} {{Patrz|tabela_licencji_spisu_tresci}}, dane dotyczące licencji, więc:
<syntaxhighlight lang="lua">
tabela_licencji_spisu_tresci={autor, szkoly, email, dotyczy, licencjonowanie, umowa_prawna, konsekwencje};
</syntaxhighlight>
Co później przerywamy pętle po: {{Code|iterator2}} {{LinkPatrz|iterator2}}, instrukcją: {{Code|break}}.
==== Dalszy opis funkcji {{nobold|{{LinkPatrz|opis funkcji-ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}}} ====
Ściągamy tekst, tabelę bazy i tabelę parametrów strony o nazwie: {{Code|nazwa_modulu}}, przy pomocy funkcji: {{Code|{{sr|#p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony|p=StronicowyParser/Tekst}}}}, według:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=nil;
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
return nil;
end,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Uruchamiamy funkcję: {{Code|__FUNKCJA_ZBIERANIA_DANYCH}} {{LinkPatrz|__FUNKCJA_ZBIERANIA_DANYCH}}, jeżeli istnieje.
Dalej wywołujemy funkcję: {{Code|{{sr|#p.IterTekst|p=StronicowyParser/Rozdziały}}}}, w celu znalezienia tekstu: {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}}, i iteratora: {{Code|iterator}} {{Patrz|iterator}}, po napisach wprowadzenia tekstu rozdziałów i ich zawartości rozdziałów i na podstawie:
<syntaxhighlight lang="lua">
local iterator,tekst_rozwiniety_calego_artykulu=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,true,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,
__FUNKCJA, ---- funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adresu szablonu, określa i zawraca jego zawartość;
__FUNKCJA2, ---- funkcja operująca na przygotowanej zawartości napisu wprowadzenia tekstu i tekście napisu wprowadzenia tekstu (rozdziału);
__FUNKCJA_ANALIZA_SPISU ---- funkcja do analizy i modyfikacji tekstu (może zwracać wartość: nil) przed samym kodowaniem, jeżeli tekst jest w ogóle jest taki, a jeśli nie, ta funkcja wtedy nie jest uruchamiana, funkcja ta bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: IterTekst, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: SpisTreści, co jest uwidocznione w module: Moduł:StronicowyParser/SpisTreści;
);
</syntaxhighlight>
Opis parametrów zwracanych:
{{OpisParametrów
| 1 = {{Code|iterator}} {{Patrz|iterator-IterTekst}} | _1 = Iterator po rozdziałach i jego zawartościach.
| 2 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu-IterTekst}} | _2 = Tekst przetworzony rozdziału.
}}
Odczytujemy tabelę: {{LinkPatrz|p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu}} i dalej: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}, o definicji:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={
["spis treści"]=true,
["spis tresci"]=true,
["spis rzeczy"]=true,
};
</syntaxhighlight>
Robimy kopię tych tabel i przyłączamy do metatabeli: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, przy pomocy funkcji: {{LzLua|setmetatable}}, aby nie odrózniać tych rozdziałów ze względu na wielkość liter i polskie znaki.
Inicjiujemy zmienną: {{Code|numer_rozdzialu_w_ksiazce}} {{LinkPatrz|numer_rozdzialu_w_ksiazce}}, wartością: {{Code|1}}, aby zbierać po kolei artykuły ze poszczególnego pojedynczego spisu treści.
Ustawiamy maksymalny rozmiar rozdziału zerowego na {{Code|50}}, w zmiennej: {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{Patrz|maksymalny_rozmiar_rozdzialu_zerowego}}, według:
<syntaxhighlight lang="lua">
local maksymalny_rozmiar_rozdzialu_zerowego=50;
</syntaxhighlight>
===== {{Śródtytuł|AnalizaRozdzialu}}{{Code|AnalizaRozdzialu}} =====
Jest to funkcja do zbierania danych z pojedynczego rozdziału o pewnej linii, inicjowana z jego parametrami, także tekstem rozdziału.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function AnalizaRozdzialu(rozdzial,linia_rozdzialu,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|rozdzial}} {{Patrz|rozdzial}} | _1 = Jest to tekst rozdziału.
| 2 = {{Code|linia_rozdzialu}} {{Patrz|linia_rozdzialu}} | _2 = Jest to linia z rozdziałem.
| 3 = {{Code|text}} {{Patrz|text}} | _3 = Jest to tekst rozdziału o pewnym napisie wprowadzenia tekstu.
| 4 = {{Code|poziom_rozdzialu}} {{Patrz|poziom_rozdzialu}} | _4 = Jest to poziom danego rozdziału.
| 5 = {{Code|poczatek_rozdzialu}} {{Patrz|poczatek_rozdzialu}} | _5 = Początek pozycji listy rozdziałów '''mechanizmu {{NS|k=mw|l=tak|pk=d}}'''.
| 6 = {{Code|numeracja}} {{Patrz|numeracja}} | _6 = Numeracja rozdziału.
| 7 = {{Code|czy_rozdzial_centrowany}} {{Patrz|czy_rozdzial_centrowany}} | _7 = Czy dany rozdział jest centrowany.
}}
====== Tabela artykułów rozdziałów i w nich artykułów oraz jego poszczególnych ======
Tworzymy tabelę: {{Code|tabela_artykulow}} {{LinkPatrz|tabela_artykulow}}, jeżeli nie istnieje, z pustą tablicą, a później dla elementu: {{Code|numer_rozdzialu_w_ksiazce}} {{LinkPatrz|numer_rozdzialu_w_ksiazce}}, jeżeli też go nie ma, to też pustą tablicą. Dalej liczymy napis wprowadzenia tekstu rozdziału dodatniego funkcją: {{LinkŚródtytuł|p.AnalizaNapisuWprowadzeniaTekstu}} i uwzględniamy je w tabeli rozdziałów dla danego rozdziału pod wartością: {{Code|tabela_rozdzial_artykulow[1]}}, w sposób:
<syntaxhighlight lang="lua">
tabela_rozdzial_artykulow[1]={rozdzial_na_tekst,{poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany,},rozdzial,};
</syntaxhighlight>
Dalej wprowadzamy zmienną: {{Code|czy_spis_rzeczy_napis_wprowadzenia_tekstu}} {{Patrz|czy_spis_rzeczy_napis_wprowadzenia_tekstu}}, mówiącą teraz rozpatrujemy rozdziały i artykuły w ramach spisu treści o nagłówkach typu: {{Code|Spis treści}}, czy: {{Code|SPIS RZECZY}}. Jeżeli wyszliszmy poza to, to ta zmienna wtedy przyjmuje wartość fałszywą, a definicja inicjacji tej zmiennej jest:
<syntaxhighlight lang="lua">
local czy_spis_rzeczy_napis_wprowadzenia_tekstu=(poziom_rozdzialu)and(not czy_jest_spis_tresci)and(not dalej_nie_rozwazaj_spis_tresci)and(jakie_spisy_tresci[spreparowany_uzyskany_tekst_rozdzialu]);
</syntaxhighlight>
Gdzie:
{{OpisParametrów
| 1 = {{Code|poziom_rozdzialu}} | _1 = Jak w: {{LinkPatrz|poziom_rozdzialu}}.
| 2 = {{Code|czy_jest_spis_tresci}} {{Patrz|czy_jest_spis_tresci}} | _2 = Czy jesteśmy w spisie treści.
| 3 = {{Code|dalej_nie_rozwazaj_spis_tresci}} {{Patrz|dalej_nie_rozwazaj_spis_tresci}} | _3 = Zmienna mówiąca, że teraz jesteśmy poza spisem treści.
}}
====== Kiedy uwzględniamy artykuły rozdziału ======
Jeżeli jesteśmy w spisie, to zawsze są uwzględniane artykuły rozdziału, bo jest ustawiona zmienna: {{Code|wliczaj_artykuly_tego_rozdzialu}} {{LinkPatrz|wliczaj_artykuly_tego_rozdzialu}}, na {{Code|true}}, a poza na {{Code|nil}}.
Funkcja jest przyszykowana jest dla jednego spisu treści, o ściśle określonym specjalnym napisie wprowadzenia tekstu, w danym spisie na stronie.
====== Iterator linii artykułu spis treści ======
Uruchamiamy iterator używając funkcji lokalnej: {{LinkŚródtytuł|iteratorTekstuNaglowka}}, według wywołania:
<syntaxhighlight lang="lua">
local iterator=iteratorTekstuNaglowka();
</syntaxhighlight>
Ustawiamy zmienną: {{Code|wliczaj_artykuly_tego_rozdzialu}} {{LinkPatrz|wliczaj_artykuly_tego_rozdzialu}}, aby wliczał lub nie, pewne artykuły rozdziału według:
<syntaxhighlight lang="lua">
local wliczaj_artykuly_tego_rozdzialu=((wliczaj_artykuly_tego_rozdzialu)or(not jakie_nie_rozdzialy[rozdzial]));
</syntaxhighlight>
Iterujemy otrzymanym ostatnio iteratorem, uzyskując kolejno zmienne: {{Code|przedrostek_listy}} {{LinkPatrz|przedrostek_listy}}, {{Code|tekstowy_przedrostek}} {{LinkPatrz|tekstowy_przedrostek}}, {{Code|linia}} {{LinkPatrz|linia}}, i {{Code|w_rozdziale}} {{LinkPatrz|w_rozdziale}}.
; Kiedy rozdziałów zerowych nie liczymy jako je{{dk}}
Dla rozdziałów, które nie sa poziomami z listą, sprawdzamy, czy to jest rozdział zerowy przy pomocy funkcji: {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|p=StronicowyParser/Rozdziały}}}}, i sprawdzamy, czy on przekracza rozmiar: {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}, jeżeli jest tym rozdziałem i nie przekracza pewnego rozmiaru, to to jest rozdział traktowany jako zerowy niepomijany rozdział zerowy, wtedy ustawiamy zmienną: {{Code|nie_pomijaj_tego_rozdzialu}} {{Patrz|nie_pomijaj_tego_rozdzialu}}, na {{Code|true}}.
; A jeśli to są rozdziały z listy zaczynające się od dwukropka w linii{{dk}}
Gdy taki rozdział nie pretenduje do zerowych, to sprawdzamy funkcją: {{Code|{{sr|#p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu|p=StronicowyParser/Rozdziały}}}}, czy ten rozdział pominąć, a jeżeli ona przyjmuje wartość odpowiadającej fałszywej, czyli {{Code|false}}, wtedy ustawiamy zmienną: {{Code|nie_pomijaj_tego_rozdzialunie_pomijaj_tego_rozdzialu}} {{LinkPatrz|nie_pomijaj_tego_rozdzialu}}, na taką samą wartość jak poprzednio.
; Inne rozdziały{{dk}}
Dla rozdziałów innych ta wartość przyjmuje postać {{Code|false}}.
; Rozdziały jednak nie pomijane{{dk}}
Dla rozdziałów, które nie są pomijane, wtedy zmienna: {{Code|nie_pomijaj_tego_rozdzialu}} {{LinkPatrz|nie_pomijaj_tego_rozdzialu}}, przyjmuje wartość {{Code|true}}, w takim przypadku wchodzimy do funkcji: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstuZgodnieZJegoSzablonowymiElementami|p=Szablonowe}}}}, wtedy dla linków szablonowych sprawdzamy, czy to są linki określone tablicami: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy}}, {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}} lub ewentualnie funkcją: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}.
Innym sposobem sprawdzania, czy to jest szablon linkowy jest tablica: {{Code|{{sr|#p.szablony_kompletowania_stron_woluminu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_kompletowania_stron_woluminu}}, lub {{Code|{{sr|#p.szablony_licencji|p=StroncowyParser/obiekty}}}} {{LinkPatrz|p.szablony_licencji}}.
Jeżeli to jest szablon linków, wtedy jest zwracana wartość: {{Code|return true,obiekt,kod}}, w przeciwnym wypadku: {{Code|return false,obiekt,kod}}.
Innym sposobem liczenia, czy to jest link, to wtedy może być to link normalny: {{Code|LINKW}}, który można sprawdzić funkcją: {{Code|{{sr|#p["CzyLinkWewnętrzny"]|p=Specjalne}}}}, wtedy jest zwracane {{Code|return true,obiekt,kod}}.
Link też może być zewnętrzny, wtedy to jest: {{Code|LINKZ}}, wtedy funkcja zwraca wartość: {{Code|return true,obiekt,kod}}.
; Kiedy analizujemy artykuły rozdziału{{dk}}
Następnie dla linii: {{Code|linia_rozwazana}} {{LinkPatrz|linia_rozwazana}}, co na podstawie tego liczymy, czy daną linię nie uwzględnić, w obliczeniach według schematu:
<syntaxhighlight lang="lua">
local czy_linia_uwzgledniana=mw.ustring.match(linia_rozwazana,"^%s*%-%-+(.*)%-%-+%s*$");
local czy_linia=((not czy_linia_uwzgledniana)and(mw.ustring.match(linia_rozwazana,"^%s*[%-%+%=%~]+.*$")
or ((#przedrostek_listy==0)and((mw.ustring.match(linia_rozwazana,"!"))and(mw.ustring.match(linia_rozwazana,"[^!]%s*$"))))
or mw.ustring.match(linia_rozwazana,"^%s*<")) or nil);
</syntaxhighlight>
Co następnie jest ustawiana {{Code|nowa_linia}} {{LinkPatrz|nowa_linia}} na wartość {{Code|false}}.
; Warunek analizowania artykułów rozdziałów{{dk}}
W obliczeniach raz uwzględniamy funkcję: {{LinkŚródtytuł|AnalizaLiniiObiekty}}, w ostatniej omawianej pętli, schematycznie:
<syntaxhighlight lang="lua">
if(not czy_linia)then AnalizaLiniiObiekty(linia_rozwazana);end;
</syntaxhighlight>
===== Dalsza część funkcji {{nobold|{{LinkPatrz|opis funkcji-ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}}} =====
Bierzemy zakodowany tekst: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu-IterTekst}}, i po nim iterator: {{Code|iterator}} {{LinkPatrz|iterator-IterTekst}}, wtedy iterujemy po parametrach:
<syntaxhighlight lang="lua">
local parsuj_rozdzialami=nil; ---- ta zmienna służy na wypadek, gdy by nie była żadnych rozwazanych rozdziałów;
for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do
---- za każdym razem jest uruchamiana funkcja: AnalizaRozdzialu, przy rozważanym rozdziale;
AnalizaRozdzialu(rozdzial_tab[1],rozdzial_tab[2],text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany);
---- oznacz zmienną: parsuj_rozdzialami, wartością; true, a póżniej jąnie inicjuj;
if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end
end;
</syntaxhighlight>
Parametry zwracane przez iterator: {{Code|iterator}} {{LinkPatrz|iterator-IterTekst}}:
{{OpisParametrów
| 1 = {{Code|rozdzial_tab}} {{Code|{{=}}}} {{Code|<nowiki>{ [1] = rozdzial, [2] = linia_rozdzialu, }</nowiki>}} | _1 = tabela składająca się z dwóch elementów:
| 2 = Pod elementy tabeli: | nagłówek2 = tak
| 3 = {{Code|rozdzial}} | _3 = Jak w: {{LinkPatrz|rozdzial}}.
| 4 = {{Code|linia_rozdzialu}} | _4 = Jak w: {{LinkPatrz|linia_rozdzialu}}.
| 5 = Inne parametry: | nagłówek5 = tak
| 6 = {{Code|text}} | _6 = Jak w: {{LinkPatrz|text}}.
| 7 = {{Code|poziom_rozdzialu}} | _7 =Jak w: {{LinkPatrz|poziom_rozdzialu}}.
| 8 = {{Code|poczatek_rozdzialu}} | _8 = Jak w: {{LinkPatrz|poczatek_rozdzialu}}.
| 9 = {{Code|numeracja}} | _9 = Jak w: {{LinkPatrz|numeracja}}.
| 10 = {{Code|czy_rozdzial_centrowany}} | _10 = Jak w: {{LinkPatrz|czy_rozdzial_centrowany}}.
}}
Gdy nie napotkano żadnego rozważanego rozdziału, wtedy: {{Code|parsuj_rozdzialami}}, przyjmuje wartość {{Code|nil}}, w takim razie uruchamiana jest funkcja:
<syntaxhighlight lang="lua">
if(not parsuj_rozdzialami)then
AnalizaRozdzialu("Spis treści",nil,tekst_rozwiniety_calego_artykulu,nil,nil,nil,nil);
end;
</syntaxhighlight>
Funkcja zwraca parametry inaczej, gdy artykuł, do którego należy książka jest korzystany, a inaczej, jeśli nie. W takim razie możemy zwracać na dwa sposoby:
<syntaxhighlight lang="lua">
if(czy_artykul_korzystany)then
return tabela_artykulow,tabela_licencji_spisu_tresci,przekierowanie_spisu_tresci;
else
return tabela_artykulow,nil,przekierowanie_spisu_tresci;
end;
</syntaxhighlight>
Przy artykułach korzystanych, co jest określone zmienną: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, tabelę: {{Code|tabela_licencji_spisu_tresci}} {{LinkPatrz|tabela_licencji_spisu_tresci}}, przy jego spisach treści w książkach, do której należy ten artykuł, zwracana jest jako wartość przeważnie jako nierówna {{Code|nil}}, a dla artykułów z innych książkach, ta wartość już jest taka, tzn. przyjmuje wartość {{Code|nil}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
11cvsi3ozdhiy4ip6bt5bev4pibb8gc
558352
558351
2026-10-02T19:34:57Z
Persino
2851
/* Opis funkcji: {{nobold|{{Patrz|opis funkcji-ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}}} */
558352
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SpisTreści}}|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 lokalne ==
=== {{Śródtytuł|Ile}}{{Code|Ile}} ===
Funkcja liczy liczbę elementów we wszystkich podtabelach tabeli {{Code|tabela_rozdzial_artykulow2}} {{Patrz|tabela_rozdzial_artykulow2}}, licząc od drugiej tabeli, po pierwszej tabeli mieści się podtabela z informacjami o rozdziale, w której znajdują się artykuły określone dalszymi podtabelami.
Tymi podtabelami są od {{Code|2}} do {{Code|7}}, czyli {{Code|6}} tabelek, w których są artykuły, które zaliczamy do kategorii wliczane, tzn. one nie znajdują się w takich rozdziałach przetłumaczonych na małą literę, ale przedtem na nią była działana funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, usuwając z nich odstępy na końcach, w tym dolne myślniki, a wewnątrz zamieniając kolejne dolne myślniki i spacje na jedną spacją.
Metafunkcja, w metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, w: {{Code|{{ld2|Parametry}}}}, aby porównać to z tablicą {{Code|{{sr|#p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu}}, by zaliczyć je do tego typu:
<syntaxhighlight lang="lua">
p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu={
["licencja"]=true,
["inne"]=true,
["bibliografia"]=true,
["zobacz też"]=true,
["linki zewnętrzne"]=true,
};
</syntaxhighlight>
Twew rozdziały należą do kategorii rozdziałów, w których artykuły są pomijane przez: '''{{ld|StronicowyParser|Stronicowy parser}}''', ale jeżeli one należą do rozdziału spisu treści lub rzeczy, to tam jednak nie są takie, inaczej jest poza.
A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}.
A ta powyższa tabela mieści się: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a jego opis w: {{Code|{{sr|#p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu|p=StronicowyParser/obiekty}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow2)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|numer_rodzaju_artykulu}} | _1 = Numer podtabeli elementtu, do którego wsadzamy element.
| 2 = {{Code|tabela_rozdzial_artykulow2}} | _2 = Tabela wraz podtabelami, od {{Code|1}} do {{Code|13}}, ale liczenie jest od {{Code|2}}.
}}
=== {{Śródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}{{Code|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}} ===
==== Opis pobieżny funkcji ====
Funkcja do wstawiania elementów z ogólnej tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}, za pomocą funkcji wstawianej jako parametr: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{Patrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, do odpowiedniej pozycji artykularnej od: {{Code|2}} do {{Code|13}}, a pozycja {{Code|1}}, to pozycja rozdziałowa, ona jest określana przez zmienną: {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{Patrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, a pozycja, którą wsadzamy to: {{Code|tab_stare}} {{Patrz|tab_stare}}.
Funkcja zwraca pozycje:
<syntaxhighlight lang="lua">
return numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych;
</syntaxhighlight>
Opis tych parametrów funkcji:
{{OpisParametrów
| 1 = {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} | _1 = Jest to wartość zwrócona przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}}, w odróżnieniu od: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, jest mniejszy o jeden, czyli wtedy to była a poziomie przypisywania wartość {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}},
| 2 = {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} | _2 = Pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}.
| 3 = {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} | _3 = Tablica do sprawdzania, czy artykuł z nagłówkiem, ma powtórzenie tego bez nagłówka, czyli dla tego bez tego jest inna numeracja niż z nagłówkiem, a gdy niema tego bez, to wtedy dzięki tej funkcji numeracja tak się zachowuje, jak tam by był ten element, co prawda jest tam dodawany, ale jako z informacją taką, że bz numeru ustalanym przez funkcję: {{LinkŚródtytuł|Ile}}, A przy okazji, aby tego elementu nie dodawać ponownie, to w nim jest ustalana druga zmienna na {{Code|1}}, a wcześniej była na {{Code|0}}, i dlatego ona była wtedy dodawana, a później już tak nie jest.
}}
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY,tabela_rozdzial_artykulow2,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow--[[]])...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{Patrz|self}} | _1 = Zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}}.
| 2 = {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} | _2 = Opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow2,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare);
</syntaxhighlight>
Funkcja jest wywoływana w:
<syntaxhighlight lang="lua">
numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych=WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,WsadzanieParametryDoTablicy(linia,czy_linia_uwzgledniana),tabela_rozdzial_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow);
</syntaxhighlight>
Gdzie funkcja: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, to jest: {{LinkŚródtytuł|WsadzanieParametryDoTablicy}}.
| 3 = {{Code|tabela_rozdzial_artykulow2}} | _3 = Ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow2}}.
| 4 = {{Code|tablica_artykulow_zebranych}} | _4 = Diała jak w: {{LinkPatrz|tablica_artykulow_zebranych}}.
| 5 = {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} | _5 = Jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}}.
| 6 = {{Code|szablon}} {{Patrz|szablon}} | _6 = Jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu.
| 7 = {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - | _7 = Kolejno to jest: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''' i '''nazwa książki'''.
| 8 = {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} | _8 = Jest to nazwa artykułu danego spisu treści.
| 9 = {{Code|pelna_nazwa_spisu_tresci}} {{Patrz|pelna_nazwa_spisu_tresci}} | _9 = Uchwyt do bazy kodowania tekstu strony spisu treści.
| 10 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} | _10 = Nazwa strony szablonowa, jak są wywoływane w postaci szablonowej, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}}.
| 11 = {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} | _11 = Uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 12 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _12 = Tablica bazy zapisana w postaci osobnej tablicy, a nie jej w wewnętrznej bazie, nie jak to było w postaci zmiennej {{LinkPatrz|nazwa_modulu}}, używana zamiast: {{LinkPatrz|nazwa_modulu}}.
| 13 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _13 = Tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}.
| 14 = {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} | _14 = Obiekt i kod, czyli: zmienne charakteryzujące zmienną wnętrza: {{Code|szablon}} {{LinkPatrz|szablon}}.
| 15 = {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} | _15 = Tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy.
| 16 = {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} | _16 = Tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię.
| 17 = {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} | _17 = Numeracja rozdziału, z jakim rozpoczyna się rozdział.
| 18 = {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} | _18 = Gdy link znajduje się w rozdziale dodatnim.
| 19 = {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} | _19 = Cała linia z artykułem lub artykułami, tą linią równie dobrze może być rozdział, tu chodzi o rozdział dodatni.
}}
==== Opis pobieżny funkcji {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} ====
Przedstawiamy tutaj funkcję: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, która jest opisana w punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Definicja funkcji w nagłówku:
<syntaxhighlight lang="lua">
__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow2,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare);
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tabela_rozdzial_artykulow2}} | _1 = Jak w: {{LinkPatrz|tabela_rozdzial_artykulow2}},
| 2 = {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} | _2 = Jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}},
| 3 = {{Code|tab_stare}} | _3 = Jak w: {{LinkPatrz|tab_stare}}.
}}
Ta funkcja została opisana już wcześniej.
==== Szczegółowy opis funkcji głównej ====
Uruchamiamy funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, która jest zdefiniowana w module: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}}. Wywołujemy tę funkcję:
<syntaxhighlight lang="lua">
local tab_pozycja_elementow_w_spisie_rzeczy,numer_rodzaju_artykulu,id,parametry_szablonu,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nil,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
</syntaxhighlight>
Pierwszy elementem: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest to zmienna tablicowa, która opisuje parametry artykularno-linkowe parametry, drugi: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, do której kategorii należy dany artykuł w linku, a trzeci parametr, to: {{Code|id}} {{Patrz|id}}, to zbierane są parametry linkowe z szablonu {{s|SpisTreści}}, czwarty to: {{Code|parametry_szablonu}} {{Patrz|parametry_szablonu}}, w przypadku szablonów inteligentnych linków, to są parametry wywołań tych szablonów, ostatni parametr to: {{Code|kom}} {{Patrz|kom}}, przedstawia on, jeśli {{Code|false}}, to artykuł zakwalifikowany został poprawnie do rozważań, a {{Code|true}} już nie.
To {{LinkPatrz|parametry szablonu}}, to jest tablica z trzech elementów, tzn.:
<syntaxhighlight lang="lua">
local parametry szablonu={tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,};
</syntaxhighlight>
Elementy tablicy:
{{OpisParametrów
| 1 = {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} | _1 = Tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych.
| 2 = {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} | _2 = To jest nazwa uzyskanego szablonu linków inteligentnych lub nie.
| 3 = {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} | _3 = Tabela modyfikatorów rozkładanego szablonu.
}}
Jeśli parametr: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, istnieje, to tworzona jest z niego taka sama wersja lub przy nieistnnieniu parametru {{LinkPatrz|wliczaj_artykuly_tego_rozdzialu}}, do niego jest dodawana jest liczba {{Code|6}}. W ten sposób możemy zbierać artykuły książki i inne,ktore należą do pewnych rozdziałów i które nie należą.
===== {{Śródtytuł|ParametrPierwszy}}{{Code|ParametrPierwszy}} =====
Funkcja zbierające dane z {{Code|tab_artykul}} {{Patrz|tab_artykul}}, którego to jest czteroelementowa tablica, dotycząca danego artykułu. Drugim parametrem: {{Code|czy_niedozwolone}} {{Patrz|czy_niedozwolone}}, jest zmienna logiczna mówiąca, czy wskazać w nazwie artykułu, czy są dozwolone znaki, jest to sprawdzenie według wyrażenia regularnego: {{Code|<nowiki>[|<>{}%[%]]</nowiki>}} {{Patrz|wzor_znaki_niedozwolone}} na podstawie funkcji {{LzLua|mw.ustring.match}}, czyli: {{Code|znaki_niedozwolone}} {{Patrz|znaki_niedozwolone}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
ParametrPierwszy(tab_artykul,czy_niedozwolone)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tab_artykul}} | _1 = Jak w: {{LinkPatrz|tab_artykul}}.
| 2 = {{Code|czy_niedozwolone}} | _2 = Jak w: {{LinkPatrz|czy_niedozwolone}}.
}}
Gdzie: {{Code|tab_artykul}} {{LinkPatrz|tab_artykul}}, który jest pierwszym parametrem przyjmowanym przez funkcję, jest zdefiniowany jako czteroelementowa tablica, którą przypisujemy do czterem osobnych parametrów:
<syntaxhighlight lang="lua">
local artykul=tab_artykul[1];
local parametry=tab_artykul[2];
local naglowek=tab_artykul[3];
local tablica_przekierowania=tab_artykul[4];
</syntaxhighlight>
Jeżeli, któreś z parametrów z: {{LinkPatrz|tab_artykul}}, tzn. element jego {{Code|2}}-gi i {{Code|3}}-ci, istnieje, to układana jest trzyelementowa tablica z elementów od {{Code|1}} do {{Code|3}}, z dodatkowym elementem: {{Code|<nowiki>["LINK"] = true</nowiki>}}, a element czwarty to jest: {{Code|tablica_przekierowania}} {{Patrz|tablica_przekierowania}}, a jeżeli te dwa elementy, nie licząc czwartego, wcale nie istnieją, wtedy jest tworzony łańcuch znakowy z tego pierwszego elementu. Tak tworzymy, nową wersję tablicy: {{Code|tab_artykul}} {{Patrz|tab_artykul-nowa wersja}}, lub łańcuch znakowy, w postaci:
<syntaxhighlight lang="lua">
tab_artykul=((artykul)and(parametry or naglowek))and{[1]=artykul,[2]=parametry,[3]=naglowek,["LINK"]=true,} or artykul;
</syntaxhighlight>
Funkcja zwraca trzy parametry, tzn. parametry: {{LinkPatrz|tab_artykul-nowa wersja}}, {{LinkPatrz|znaki_niedozwolone}} i tablicę przekierowania: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}:
<syntaxhighlight lang="lua">
return tab_artykul,znaki_niedozwolone,tablica_przekierowania;
</syntaxhighlight>
===== Rozwijanie nazwy linku artykułu =====
Do rozwijania nazwy linku służy funkcja: {{Code|{{sr|#p.DekodowanieTekstuNazwLinku|p=StronicowyParser/Pomocne}}}} {{Patrz|p.DekodowanieTekstuNazwLinku}}, pod względem szablonowym i nie tylko.
Funkcja rozwija tą nazwę tym: {{LzLua|frame:preprocess}}, jedynie nie rozwija szablonów stronicowego parsera, podane podkategoriach w kategorii: {{Code|{{lk2|Szablony stronicowe}}}}, za pomocą odpowiednich metod, bo to by wywołało nieskończoną pętle, i dlatego takie szablony są zamieniane tylko na wywołania symboliczne.
==== Dalszy opis funkcji nadrzędnej przy istnieniu parametrów linkowych normalnych, czy szablonowych (linków inteligentnych) ====
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|{{=}}}} {{Code|1}} =====
Tworzony jest numerek: {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{Patrz|numer_rodzaju_artykulu_w_podreczniku}}, który w stosunku do: {{LinkPatrz|numer_rodzaju_artykulu}}, jest większy o jeden, a schemat tej operacji:
<syntaxhighlight lang="lua">
local numer_rodzaju_artykulu_w_podreczniku=numer_rodzaju_artykulu+1;
</syntaxhighlight>
====== Tworzenie tablicy: {{nobold|{{Code|tablica_artykulow_zebranych}}}} ======
Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną wstępnie w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}.
; Tablica{{dk}} {{nobold|{{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}}}}, nie jest tablicą{{dk}}
Gdy element pierwszy: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, nie jest tablicą, wtedy jedynie liczymy, czy ona ma znaki niedozwolone: {{Code|wzor_znaki_niedozwolone}} {{LinkPatrz|wzor_znaki_niedozwolone}}, a póżniej wiedząc ten element, który jest aktualną nazwą artykułu kiążki, tworzymy tabelę {{Patrz|tablica_artykulow_zebranych-imicjacja}}:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,};
</syntaxhighlight>
; Gdy element{{dk}} {{nobold|{{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}}}}, jest łańcuchem znaków{{dk}}
Wpierw liczone są parametry z wywołania, z opcją, czy ma liczyć, czy nazwa artykułu ma znaki niedozwolone, z funkcji: {{LinkŚródtytuł|ParametrPierwszy}}:
<syntaxhighlight lang="lua">
tab_pozycja_elementow_w_spisie_rzeczy[1],znaki_niedozwolone,tablica_przekierowania=ParametrPierwszy(tab_pozycja_elementow_w_spisie_rzeczy[1],true);
</syntaxhighlight>
; Inna książka - atrybut, tzn. czy artykuł wychodzi poza daną książkę, lub jego przekierowanie w niej kieruje na stronę poza nią{{dk}}
Dalej sprawdzane jest, czy książka przyjmuje atrybut, tzn.: '''czy inna książka''', wtedy liczymy to z kodu z tablicy przekierowania: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, jeżeli jej wartość istnieje, tzn.: {{Code|czy_inna_ksiazka}} {{Patrz|czy_inna_ksiazka}}:
<syntaxhighlight lang="lua">
local czy_inna_ksiazka=tablica_przekierowania and tablica_przekierowania[1] and tablica_przekierowania[1][5] or nil;
</syntaxhighlight>
; Tablica przekierowania artykułu względem bieżącej książki{{dk}}
Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, który przedstawia, czy to jest artykuł bieżącej książki, którego przekierowanie kieruje, wtedy ten parametr ma wartość {{Code|true}}, a gdy adres przekierowania wskazuje na inną książkę, wtedy {{Code|false}}. Jeśli ten parametr ma wartość fałszywą, wtedy jest sprawdzane, czy jest tablicą w: {{Code|czy_tablica}} {{Patrz|czy_tablica}}, według:
<syntaxhighlight lang="lua">
czy_tablica=parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1]);
</syntaxhighlight>
Lub w przeciwnym wypadku liczymy parametry artykularne z tablicy przekierowania: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek przekierowania, w tej tablicy, istnieje, wtedy parametr: {{Code|czy_tablica}} {{LinkPatrz|czy_tablica}}, przyjmuje wartość {{Code|true}}, w przeciwnym wypadku wartość fałszywą.
Gdy ten element nie jest tablicą, to tworzona jest nazwa pełna artykułu: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}} i umieszczana w tablicy: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z podobną tablicą początkową jak w poprzednim przypadku jego tworzenia, czyli jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}.
; Tablica zebranych artykułów i porównywanie artykułu z nagłówkiem, czy istnieje wcześniejszy artykuł bez niego{{dk}}
Gdy element jest jednak tablicą, też jest liczona pełna nazwa artykułu (gdy nazwa artykułu przekierowania istnieje, wtedy ona jest liczona z: {{Code|tablica_przekierowania[2]}}, w przeciwnym wypadku, jeśli element: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}}, jest tablicą, wtedy liczymy ją z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1][1]}}, w innym wypadku z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}}), a z niej liczymy tablicę: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}, w przypadku pierwszego artykułu nienagłówkowego.
A w przypadku pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie, artykuł poprzedni nie istnieje, a więc tego tam nie ma tam w takim przypadku.
Gdy funkcja napotkała artykuł o takim samym stronie, co poprzednio, to do wartości początkowej, bez definiowania jeszcze raz tej samej tablicy, jest ustawiane odpowiednio:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych[3]=true;
</syntaxhighlight>
Co informuje, że artykuł jest ten sam, tylko inny nagłówek niż poprzedni, a poprzedni pierwszy jest bez niego.
====== Rozwijanie nazwy linku ======
Kompletowany jest drugi element tablicy: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkPatrz|p.DekodowanieTekstuNazwLinku}}. Dalej z tej nazwy są usuwane znaki specjalne według funkcji: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, z modułu: {{Code|{{ld2|Specjalne}}}}. Następnie działamy funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, które końcowe spacje usuwa, a wewnętrz powtarzające zamienia kolejne na jedną spację.
====== Dodawanie do tablicy problemów, jeśli nastąpił problem ze znakami niedozwolonymi ======
A między czasie, gdy mamy niedozwolone znaki: {{Code|znaki_niedozwolone}} {{LinkPatrz|znaki_niedozwolone}}, za pomocą funkcji pytającej sprawdzamy, czy element inny zgłoszeniowy został dodany do tablicy problemów: {{Code|{{sr|#p.CzyJestTakiProblemowyElement|p=StronicowyParser/Problemy}}}}, aż w końcu dodajemy ten problem, jeśli go nie ma przy pomocy funkcji: {{Code|{{sr|#p.UstawTakiProblemowyElement|p=StronicowyParser/Problemy}}}}.
====== {{Śródtytuł|inicjacja_i_kompletowanie_zmiennych}}Ustalanie nazwy jednostki, kompletowanie linii artykułów i inicjowanie pozycji, w tabeli zebranych elementów, w tabeli zebranych elementów ======
Ustalamy nazwę jednostki z funkcji: {{Code|{{sr|#p.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem|p=StronicowyParser/Potrzebne}}}}, i inicjujemy tą wartością, czyli: {{Code|nazwa jednostki}} {{Patrz|nazwa jednostki}}, wartość starą: {{Code|stara_nazwa_jednostki}} {{Patrz|stara_nazwa_jednostki}}, według:
<syntaxhighlight lang="lua">
---- Piszanie pełnej nazwy jednostki bez parametrów i nagłówka;
local nazwa_jednostki=stronicowyparser_potrzebne_modul.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(tab_pozycja_elementow_w_spisie_rzeczy[1],false);
---- Inicjowanie starej wartości tą policzoną;
local stara_nazwa_jednostki=nazwa_jednostki;
</syntaxhighlight>
Dalej {{Śródtekst|uchwyt=tabela_rozdzial_artykulow2|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}}}, według:
<syntaxhighlight lang="lua">
if(not tabela_rozdzial_artykulow2[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow2[numer_rodzaju_artykulu_w_podreczniku]={};end;
</syntaxhighlight>
Co {{Śródtekst|uchwyt=linia_artykokow|tekst=dalej linię artykułów {{Code|linia_artykokow}} {{LinkPatrz|linia_artykokow}}, kompletujemy, funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, z modułu: {{Code|{{ld2|Szablonowe}}}}, znając tablicę: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}}}, według:
<syntaxhighlight lang="lua">
linia_artykokow=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_artykokow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
</syntaxhighlight>
====== Uwzględnianie niepodanego elementu nienagłówkowego w tablicy zebranych parametrów ======
Gdy tablica przekierowania: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, istnieje, wtedy sprawdzamy, czy zmienna logiczna: {{Code|czy_tablica}} {{LinkPatrz|czy_tablica}}, jest prawdą i czy: {{Code|stara_nazwa_jednostki}} {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej: {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie artykułu przekierowania.
Inicjujemy nową zmienną: {{Code|przekierowanie}} {{LinkPatrz|przekierowanie}}, z artykułu, parametrów i nagłówka, ale wpierw sprawdzamy, czy dwa ostatnie istnieją, według:
<syntaxhighlight lang="lua">
przekierowanie=przekierowanie and ((tablica_przekierowania[3] or tablica_przekierowania[4]) and {przekierowanie, tablica_przekierowania[3], tablica_przekierowania[4],["LINK"]=true,}or przekierowanie) or nil;
</syntaxhighlight>
Tworzony jest nowy element: {{Code|nazwa jednostki}} {{Patrz|nazwajednostki-nowy}}, z: {{LinkPatrz|nazwa jednostki}}, parametrów i nagłówka, według rysu:
<syntaxhighlight lang="lua">
nazwa_jednostki={nazwa_jednostki, tab_pozycja_elementow_w_spisie_rzeczy[1][2], tab_pozycja_elementow_w_spisie_rzeczy[1][3],["LINK"]=true,};
</syntaxhighlight>
Jeżeli parametr drugi: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}.
Wsadzamy element: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, do zbioru: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, przy pomocy funkcji: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Następnie jej drugiemu elementowi: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, do tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}, na pozycji: {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, według funkcji: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej.
Jeżeli tablica przekierowania: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, jednak nie istnieje, wtedy tak samo sprawdzamy, co poprzednio potem, ale po spełnieniu tych warunków robimy inną tablicą: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, i tę tablicę robimy podobnie, i inicjujemy te same elementy też podobnie.
====== Uwzględnianie pozycji podanej w tablicy zebranych elementów ======
Tworzymy zmienną: {{Code|ile_dodac_do_poziomu_artykulu}} {{Patrz|ile_dodac_do_poziomu_artykulu}}, z drugiego elementu tablicy: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, następnię tworzymy inną zmienną: {{Code|ile_dodac_do_poziomu_artykulu_lub_nil}} {{Patrz|ile_dodac_do_poziomu_artykulu_lub_nil}}, co uwidaczniamy wzorem:
<syntaxhighlight lang="lua">
local ile_dodac_do_poziomu_artykulu_lub_nil=((ile_dodac_do_poziomu_artykulu)and(ile_dodac_do_poziomu_artykulu>0))and ile_dodac_do_poziomu_artykulu or nil;
</syntaxhighlight>
Tą zmienną wykorzystamy do sformułowania: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}.
{{Śródtekst|tekst=Tworzymy zmienną: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}, na pozycji: {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, przy pomocy funkcji: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.|uchwyt=__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|>{{=}}}} {{Code|2}} =====
Będziemy tutaj operowali, gdy parametr drugi zwracany z funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, wskazuje na nie artykuł książki, zatem ten rozdział jest właśnie dla tego przypadku.
====== Odkodowanie i przygotowanie zmiennych artykułu linku, jej nazwy, także kodu języka i projektu ======
* Gdy pierwszy element tablicy: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}.
* Dla drugiego takiego elementu z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, co jest nazwą linku, wtedy gdy nazwa linku normalnego, czy szablonowego, jest zakodowana, to ją odkodujemy, którego każdy jego element kod odkodujemy według funkcji: {{LinkPatrz|p.DekodowanieTekstuNazwLinku}}, następnie z niej usuwamy znaki specjalne według: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, następnie usuwamy końcowe spacje i wewnątrz kolejne spacje zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
* Dla trzeciego i czwartego takiego elementu z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, te elementy odkodujemy, następnie z nich usuwamy końcowe spacje, a wewnątrz kolejne spacje zastępujemy jedną, według tej samej funkcji, co powyżej.
====== Przygotowanie zmiennych, inicjowanie tablicy: {{Code|tab_stare}}, i wsadzanie jej do tablicy ogólnej: {{Code|tabela_rozdzial_artykulow2}} ======
Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow2}}, także co {{PobierzŚródtekst|linia_artykokow}}, co wszystko robimy podobnie jak w rozdziale: {{LinkŚródtytuł|inicjacja_i_kompletowanie_zmiennych}}.
{{PobierzŚródtekst|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
==== Definicja tablicy: {{Code|tab_stare}}, inicjowanie jej elementów w różnych przypadkach ====
Przedstawiamy tutaj ogólną definicję zmiennej: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. Ta wersja jest jedynie sformułowana dla artykułów w rozdziale, a nie dla rozdziałów, bo w tablicy, do której jest ona wsadzana przyjmuje ona możliwy numerek od "2" do "13", a nie również "1". Jej wersja ogólna:
<syntaxhighlight lang="lua">
local tab_stare=
{
---- Początek elementów alternatywnych
{
---- Początek wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[1], -- artykuł bez pełnej nazwy ksiązki, bez parametrów i nagłówka, bo ich nie posiadałna samym początku;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- artykuł bez pełnej nazwy książki, bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[2], -- nazwa linku artykułu normalnego, czy szablonowego;
---- Początek elementów alternatywnych dla przekierowania
---- Poczatek parametrów przekierowania
{
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
tablica_przekierowania[3], -- parametry przekierowania artykułu;
tablica_przekierowania[4], -- nagłówek przekierowania artykułu;
["LINK"]=true, -- zmienna świadcząca, że nazwa przekierowania artykułu jest z parametrami i nagłówkiem;
},
---- lub
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
---- Koniec parametrów przekierowania
tablica_przekierowania[1], -- tablica o definicji: {
nazwa_przestrzeni_strony_przekierowania, -- nazwa przestrzzeni nazw przekierowania artykułu;
nazwa_przestrzeni_ksiazki_strony_przekierowania, -- nazwa przestrzeni książki przekierowania artykułu;
nazwa_ksiazki_strony_przekierowania, -- nazwa książki orzekierowania artykułu;
true/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce;
true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie;
czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach;
};
---- lub
nil, -- dotycząca przekierowania artykułu, a tutaj strona nie ma przekierowania, więc: nil;
nil, -- dotycząca tablicy książki, na którą wskazuje przekierowanie, a tutaj nie ma tablicy, więc: nil;
---- Koniec elementów alternatywnych dla przekierowania
tab_pozycja_elementow_w_spisie_rzeczy[3], -- kod języka;
tab_pozycja_elementow_w_spisie_rzeczy[4], -- kod projektu;
tab_pozycja_elementow_w_spisie_rzeczy[5], -- adres artykułu bez przetworzenia w linku normalnym,czy szablonowym;
ile_dodac_do_poziomu_artykulu_lub_nil, -- parametr mający tylko wartości: 1, gdy do aktualnego poziomu musi być dodane jeden - ta wartość, tylko dotyczy artykułów należących do tej samej książki, lub: nil, gdy nic, czyli w pozostałych przypadkach;
tab_pozycja_elementow_w_spisie_rzeczy[6], -- "url", pozycja świadcząca, że to jest link zewnętrzny, a nil, gdy to jest normalny link;
},
---- lub
tab_pozycja_elementow_w_spisie_rzeczy[1], -- nazwa artykułu linku, która nie posiada, ani parametrów w sobie, a po nim nagłówka, lub bezpośrednio po nazwie;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- nazwa artykułu bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec elementów alternatywnych
{
#przedrostek_listy, -- poziom listy, w którym jest artykuł, dla artykułów w linii z listą, w innym wypadku dla artykułu znajdującego się w rozdziale dodatnim, czy ujemnym jest zero;
przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])", przeciwnie dla artykułów w rozdziale dodatnim ma wartość pustą;
tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu, gdy nie ma takiej numeracji, bo nie da się jej wydzielić, to ma wartość pustą;
w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym, wtedy "true", w przeciwnym wypadku: "false";
},
linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare";
true/false, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: false;
true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika, przeciwnie: false;
---- Początek elementów alternaatywnych
Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow2), -- który numer artykułu, w momencie wsadzenia do tabeli zbierania rozdziałów i w nich artykułów, nawet w rozdziale;
---- lub
nil, -- nil, wtedy gdy link jest tak sobie dodany, który nie należy do żadnego spisu, a po nim elementy jego z nagłówkiem natomiast należą;
---- Koniec elementów alternatywnych
};
</syntaxhighlight>
W powyższym: {{Tag|syntaxhighlight|parametry=lang="lua"}}, dla elementu: {{Code|<nowiki>---- lub</nowiki>}}, jest powiedziane, że są dostępne alternatywy, które są zawarte w tablicy, że wybieramy te, aby nie spowodować czysto podwójnej tablicy, aby każda tablica zawierały inne elementy, jak wiele, a nie jedną tablicę, jak i łańcuchy znaków, wartość nil, powoduje, że czy ma być taka tablica, ale nie podwójna, co to znaczy podowójna, tzn. tablica w sobie zawiera inną jedyną tablicę, a tak nie może być, a jak zawiera jedną tablicę, to musi posiadać inne nienilowe elementy.
== Funkcje tablicy transportu ==
=== {{Śródtytuł|p.AnalizaNapisuWprowadzeniaTekstu}}{{Code|p.AnalizaNapisuWprowadzeniaTekstu}} ===
Funkcja przyjmuje jako parametr nieskompletowaną i nieprzetworzony tekst napisu wprowadzenia tekstu. On kompletujei przekształca go w odpowiedni sposób,aby otrzymać czysty tekst tytułu rozdziału.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AnalizaNapisuWprowadzeniaTekstu(rozdzial,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|rozdzial}} | _1 = Ten tekst tytułu rozdziału, o którym mówimy.
| 2 = {{Code|pelna_nazwa_spisu_tresci}} | _2 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci}}
| 3 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _3 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _5 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
==== Obiekty typu {{nobold|{{Code|SZABLON}}}} ====
Funkcja korzysta z funkcji: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, funkcja ma zdefiniowaną pierwszą jej funkcję, która dla: {{Code|obiekt {{=}} "SZABLON"}}, używamy pierwsze dwie tabelę, te tabele:
Pierwsza {{Patrz|szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu}}, która służy do zamieniania szablonów na ich parametry, tutaj pierwsza, to jest tablica: {{Code|{{sr|#p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu}}:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu={
["MDL:RozszerzonyLink"]=1,
["Kompletność"]="",
["Kompletność krótka"]="",
["Kompletność junior"]="",
["Książka"]="",
};
</syntaxhighlight>
Druga: {{Code|{{sr|#p.szablony_dozwolone_w_nazwach_linkowych|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_dozwolone_w_nazwach_linkowych}}, też służy do tego samego.
Funkcja wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja {{Patrz|p.szablony_dozwolone_w_nazwach_linkowych}}:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_w_nazwach_linkowych={
["Korekta"] =2,
};
</syntaxhighlight>
===== Funkcje zawartości i dodatków, dla szablonów =====
One służą do zamieniania wywołań szablonowych na odpowiednie ich zawartości parametrów określone przez numery parametrów tych elementów w tch tabelach. Jeżeli przy którym wywolaniu przy wykorzystaniu kolejnych tych tabel przy użyciu funkcji: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, nastąpiło zamienienie, to funkcja pierwsza w: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, zakańcza się z tą wartością. A jeżeli nie to uruchamia się funkcj dodatków: {{Code|{{sr|#p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu|p=StronicowyParser/Rozdziały}}}}, a jeśli nastąpiło zastąpienie, to funkcja kompletowania się kończy z tą wartością.
===== Szablonowe linki =====
Dalej jeżeli tak się nie stało, to uruchamia się funkcja parametrów, w którym wywołanie szablonowe jest rozkładane na nazwę szablonu, modyfikatory i parametry. Dalej jest spradzanie , czy jest to link inteligentny według funkcji: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}, a gdy jest, to funkcja kończy swoje działania z nazwą tego linku lub jego adreesem wewnętrznym, a jeśli on nie jest tym, to sprawdza, czy są inne szablonowe linki, które podejrzewa się poprzez wywołanie funkcji: {{Code|{{sr|#p.NazwaInnegoSzablonowegoLinkowegoObiektu|p=StronicowyParser/Potrzebne}}}}, a jeżeli jest tym linkiem, to funkcja składania zwraca też jak poprzednio nazwę linku lub jego adres wewnętrzny, ewentualnie z dodatkiem. A gdy nie, to w innym przypadku sprawwdzane, czy to jest inny link wewnętrzny generowane przez szablony, która spradza funkcja tutaj: {{Code|{{sr|#p.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy|p=StronicowyParser/Potrzebne}}}}, a jeżeli szablon jest tym linkiem, to kunkcja składania zwraca jego nazwę linkową.
===== Szablony rozwijane przez {{lpg|JavaScript}} =====
A następnym krokiem jest sprawdzanie, czy nazwa szablonu jest jednych z elementów z tablicy: {{LinkPatrz|p.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu}}, która ma ten element, te szablony wymienione w tej tablicy są po to, aby służyły do rozwijania przez JavaScript, są to elementy wikikodu, które są pracochłonne ze względu na ich skomplikowany kod, czy wikikod, nawet {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, i dlatego ich się nie rozwija przez stronicowy parser: {{Code|{{ld2|StronicowyParser}}}}, te nazwy szablonów są określone tablicą: {{Code|{{sr|#p.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu}}:
<syntaxhighlight lang="lua">
p.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu={
["Cytuj"]=true,
["Cytuj stronę"]=true,
["Cytuj pismo"]=true,
["Cytuj odcinek"]=true,
["Cytuj książkę"]=true,
["Cytuj grę komputerową"]=true,
};
</syntaxhighlight>
I funkcja wtedy zwraca skompletowany szablon bez rozwijania jego, pod warunkiem, jeżeli jest tym szablonem o tej nazwę szablonu wywołującego.
===== Co jest zwracane w przypadku szablonów =====
Te powyżej elementy dla funkcji parametrów, w niej wartości są zwracane do niej, a jeżeli ona przyjmuje wartość nienilową, to do funkcji składania zwracana jest jego wartość, a przeciwnie jest zwracane pierwszy parametr szablonu do niej.
==== Obiekty typu: {{nobold|{{Code|NOWIKI}}}}, {{nobold|{{Code|PRE}}}} i {{nobold|{{Code|ŹRÓDŁO}}}} ====
A gdy dla elementów, jeśli nazwa obiektu jest: {{Code|obiekt {{=}} "NOWIKI"}}, {{Code|obiekt {{=}} "PRE"}}, lub: {{Code|obiekt {{=}} "ŹRÓDŁO"}}, znacznik jest rozkładany na czynniki pierwsze, a jeżeli nnie ma zawartości, to przez funkcję skłądania jest zwracana wartość pusta, a jeśli nie, to pewne znaki specjalne tagu {{Tag|nowiki}}, które mają w nim być zamienione na tekst, są zamieniane na kody '''HTML''', co po zamienieniu ta ona jest zwracana.
==== Obiekty typu: {{nobold|{{Code|MATH}}}}, {{nobold|{{Code|GALERIA}}}}, {{nobold|{{Code|MAPAOBRAZU}}}}, i {{nobold|{{Code|INNEPRE}}}} ====
A jeżeli wartość: {{Code|obiekt}}, jest nie równa: {{Code|MATH}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} lub {{Code|INNEPRE}}, wtedy z zawartości zmiennej: {{Code|szablon}}, są wykorzystanne funkcje z modułu: {{Code|{{ld2|Specjalne}}}}, które w tej podanej zmiennej są usuwane z komentarze z: {{Code|{{sr|#p["UsuńKomentarze"]|p=Specjalne}}}}, zamieniane są linki zewnętrzne i wewnętrzne na ich nazwy lub adresy według: {{Code|{{sr|#p["ZamieńLinkiZewnętrzneNaTekst"]|p=Specjalne}}}} i {{Code|{{sr|#p["ZamieńLinkiWewnętrzneNaTekst"]|p=Specjalne}}}}. Są usuwane rozwinięte znaczniki szablonów stylów używając do tego celu: {{Code|{{sr|#p["UsuńSzablonyStylów"]|p=Specjalne}}}}. Są też usuwane znaczniki na podstawie: {{Code|{{sr|#p["UsuńZnaczniki"]|p=Specjalne}}}}. Z tekstu szablonu są usuwane normalne kategorie nieszablonowe: {{Code|{{sr|#p"UsuńKategorie"]|p=Specjalne}}}}. Są też usuwane z zawartości wywołania plików i interwiki z: {{Code|{{sr|#p["UsuńWywołaniaPlików"]|p=Specjalne}}}} i {{Code|{{sr|#p["UsuńInterwiki"]|p=Specjalne}}}}. Dalej z tego obiektu są usuwane znaki specjalne z: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}.
A gdy mamy do czynienia z innymi znacznikami, to są zwracane jest zamiast niego wartość pusta do funkcji kompletowania.
Dane z funkcji kompletowane są zwracane, które z niej są usuwane znaki specjalne z całości tekstu rozdziału: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, i znaki białe z końców tekstu i powtarzarzające się te znaki kolejne z wewnętrz są zamieniane na jedną spację, to się dzieje według funkcji: {{Code|{{sr|#p["UsuńZbędneBiałeZnaki"]|p=Specjalne}}}}.
Cały taki wynik operacji robione w funkcji w nagłówku są zwracane do niej, to jest, co uzyskujemy nazwa rozdziału w postaci przetworzonej.
=== {{Śródtytuł|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}{{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} ===
Opisane tutaj są podfunkcje, z których korzysta ta funkcja, co one robią, do czego są wykorzystane.
==== Opis funkcji: {{nobold|{{Patrz|opis funkcji-ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}}} ====
Funkcja służy do zbierania nagłówków i z niej danych, tzn. linków normalnych i inteligentnych, a także są zbierane nagłówki z listy bez artykułów i do nich elementy podlisty z artykułami w postaci wywołań linkowych w niej. Tworzona jest specjalnie dla niegp tablica: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, która w odpowiedni po przekształaceniach wsadzana jest do tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} | _1 = Jak w: {{LinkPatrz|self}}.
| 2 = {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} | _2 = Kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}.
| 3 = {{Code|nazwa_spisu_tresci}} | _3 = Jak w: {{LinkPatrz|nazwa_spisu_tresci}}.
| 4 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _4 = Czy dany spis treści dla książki dla jej artykułu korzystanego, dla innej książki, wtedy to artykuł niekorzystany.
| 5 = {{Code|adres_ksiazki_glownego_spisu_tresci}} {{Patrz|adres_ksiazki_glownego_spisu_tresci}} | _5 = Jest to wewnętrzny adres książki głównego spisu treści,jest to taki adresm na który wskazuje przekierowanie innej książki.
| 6 = {{Code|__FUNKCJA_ZBIERANIA_DANYCH}} {{Patrz|__FUNKCJA_ZBIERANIA_DANYCH}} | _6 =
{{Śródtekst|uchwyt=__FUNKCJA_ZBIERANIA_DANYCH|tekst=
Jest to funkcja, która zbiera informacje o aktualnym artykule, która jest spisem treści, w postaci nieprzetworzonej przez funkcje z modułu: {{Code|{{ld2|StronicowyParser/Rozdziały}}}}, opisanego w: {{Code|{{sr|Rozdziały|StronicowyParser - Rozdziały|p=StronicowyParser}}}}, ta funkcja kopiuje, np. tabele danych bazy modułu: {{Code|{{m|Szablonowe}}}}, tzn: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, i tabelę rozkładu elementów w niej na czynniki pierwsze, tzn.: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, co jest napisane w module: {{Code|{{ld2|StronicowyParser/ZbieranieDanychStron}}}}, a w dokumentacji: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
__FUNKCJA_ZBIERANIA_DANYCH(nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona);
</syntaxhighlight>
Funkcja nie zwraca niczego, jest funkcją, zwykłą bezwartościową procedurą, niezwracającą niczego.
}}
}}
==== Funkcje lokalne ====
Funkcja ma w sobie też definicję funkcji lokalnych zdefiniowanej w tej funkcji tutaj opisywanej.
===== {{Śródtytuł|FunkcjaIteratoraTekstuZakodowego}}{{Code|FunkcjaIteratoraTekstuZakodowego}} =====
Funkcja służy do pomijania tego, co nie jest linkiem wewnętrznym, czy zewnętrznym, czyli oznaczone kodami: {{Code|LINKW}} lub {{Code|LINKZ}}, czy nawet szablonem linkuinteligentnego, czy innego służacego do generowania spisu treści, do tego celu również używa funkcji: {{LinkŚródtytuł|CzySzablonLinkLubLicencja}}, oraz tego co nie jest w liście okreslonym wzorem {{Code|<nowiki>\n([#:*;]+)</nowiki>}} z mozliwym na początku tekstem, ale nie z kodami, w danej pozycji listy, lub co ewentualnie nie może być w możliwej liście, tzn.: {{Code|<nowiki>\n([#:*;]*)</nowiki>}}, ale wtedy musi tam być z tekstem, ale nie z kodami, na początku danej pozycji listy, nawet jeśli to nie jest lista, to też tak samo.
Jeżeli funkcja nie ma kodów linków wewnętrznych, czy to normalnych, czy szablonowych, to się zakańcza z wartością domyślną {{Code|nil}}, w przeciwnym wypadku do sprawdzenia używa do tego funkcji: {{LinkŚródtytuł|PomijajLinkiOrazLicencje}}, do sprawdzania, czy to jest link lub licencji, a jeżeli ta funkcja zwraca wartość {{Code|true}}, to cała funkcja zwraca {{Code|nil}}. Jeżeli oba te sposoby nie dały rezultatu {{Code|true}}, to wtedy funkcja zwraca wartość pustą, czyli okreslonym ciągiem znakowym o szwerokości zerowej.
Funkcja ma w sobie dwie definicje funkcji: {{LinkŚródtytuł|PomijajLinkiOrazLicencje}} i {{LinkŚródtytuł|CzySzablonLinkLubLicencja}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local FunkcjaIteratoraTekstuZakodowego=function(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}.
| 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}.
| 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod}}.
}}
====== {{Śródtytuł|PomijajLinkiOrazLicencje}}{{Code|PomijajLinkiOrazLicencje}} ======
Funkcja służy do sprawdzania, czy są odpowiednie szablony w kodzie.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function PomijajLinkiOrazLicencje(szablon)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}.
}}
Funkcja sprawdza, czy to są szablony spisu treści określone tablicą o kluczach, którymi są nazwy szablonów, z wartościami {{Code|true}}, czyli: {{Code|{{sr|#p.szablony_licencji|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_licencji}}:
<syntaxhighlight lang="lua">
p.szablony_licencji={
["Licencja"]=true,
};
</syntaxhighlight>
Tzn., czy to są szablony ozdobne woluminu, którego tablica: {{Code|{{sr|#p.szablony_ozdobne_stron_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_ozdobne_stron_woluminu}}, jest podobnie zbudowana, co poprzednia:
<syntaxhighlight lang="lua">
p.szablony_ozdobne_stron_woluminu={
["MDL:RozszerzonyLink"]=true,
};
</syntaxhighlight>
A jeżeli to są te szablony, to funkcja zwraca wartość {{Code|true}}.
Jeżeli jednak to nie są te szablony, należy użyć tablic, tak samo zbudowanej jak poprzednie, czyli: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.linki_szablony_elementy_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.linki_szablony_elementy_spisu_rzeczy={
["SpisTreści"]=true,
["Sekcja referencyjna"]=true,
["Sr"]=true,
["Link wewnętrzny"]=true,
["Ly"]=true,
["LinkOgólne"]=true,
["Lo"]=true,
};
</syntaxhighlight>
lub innej, inaczej zbudowanej niż poprzednie, ale ważne, że ma wartość niefałszywą, czyli taką tablicą: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}, jest:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
Jak są te nazwy szablonów określone ich kluczami tych tablic, to funkcja zwraca wartość {{Code|true}}. A jeżeli jednak nie to funkcją: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}, jest sprawdzane,czy to jest link inteligentny, nawet przekierowanie, jeżeli link taki jest, to funkcja zwraca wartość w tym wypadku {{Code|true}}. W przeciwnym wypadku, jak nie zwrócił tej wartości,bo taka nie jest nazwa szablonu, to funkcja nic nie zwraca.
====== {{Śródtytuł|CzySzablonLinkLubLicencja}}{{Code|CzySzablonLinkLubLicencja}} ======
Funkcja sprawdzająca za pomocą: {{LinkŚródtytuł|PomijajLinkiOrazLicencje}}, na podstawie parsowania tekstu szablonu funkcją: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, z parsowanym przechwytywanym typem obiektu: {{Code|obiekt}} {{LinkPatrz|obiekt}}, równym {{Code|SZABLON}}. A jeżeli funkcja ta wspomniana w tekście zwróci {{Code|true}}, to funkcja taki obiekt policzy.
Jeżeli liczba policzonych obiektów i znalezionych w wyniku parsowania jest większa od zera, to funkcja w nagłówku zwróci wartość {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local CzySzablonLinkLubLicencja=function(szablon)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}.
}}
===== {{Śródtytuł|iteratorTekstuNaglowka}}{{Code|iteratorTekstuNaglowka}} =====
Jest to funkcja iteratora, którego funkcja zwracana (iterator) zwraca parametry, dla rozdziałów dodatnich i pozycji list.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function iteratorTekstuNaglowka()
... ---- Kod przed zwróceniem iteratora;
return function()
... ---- Ciało funkcji iteratora;
end;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = Brak parametrów. | komórka1 = tak
}}
Iterator (funkcja zwracana przez funkcję w nagłówku) zwraca parametry w wyniku kolejnych wywołań:
<syntaxhighlight lang="lua">
return przedrostek_listy,tekstowy_przedrostek,wyzyskane_wywolanie_szablonu_spis_tresci,true/false;
</syntaxhighlight>
Parametry zwracane przez iterator:
{{OpisParametrów
| 1 = {{Code|przedrostek_listy}} | _1 = Przedrostek pozycji listy, dla rozdziałów dodatnich jest wartością pustą.
| 2 = {{Code|tekstowy_przedrostek}} | _2 = Numeracja pozycji w liście lub w nagłówku dodatnim.
| 3 = {{Code|wyzyskane_wywolanie_szablonu_spis_tresci}} | _3 = Jest to rozdział bez numeracji i przedrostka pozycji listy.
| 4 = {{Code|true/false}} | _4 = Wartość {{Code|true}} świadczy o rozdziale dodatnim, a w przypadku innym funkcja zwraca zawsze wartość tą {{Code|false}} jako ostatni element zwracany.
}}
Funkcja jest przykowana na rozdziałów dodatnich i pozycji list oraz innych linii, dla tego pierwszego funkcja zwraca:
<syntaxhighlight lang="lua">
return "","",wartosc,true;
</syntaxhighlight>
Gdzie {{Code|wartość}} jest to zawartość napisu wprowadzenia tekstu (rozdziału dodatniego).
W przypadku list oraz innych niż rozdziały dodatnie samo wyrażenie regularne {{lpg|Lua}} w {{lpr|Lua|Scribunto}} jest okreslone przez wyrażenie:
<syntaxhighlight lang="lua">
local re="([#:*;]*)[^%S\n]*([%d%.]*[^%S\n]*[^\n]+)";
</syntaxhighlight>
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu|p=StronicowyParser/Rozdziały}}}}, aby zamienić zawartość pozycji listy na rozdział bez numeracji i numerację, i dlatego ta funkcja zwraca te dwie wartości. Gdy funkcja jak nie znajdzie więcej linii (wyszukań), to zwraca wartość {{Code|nil}} mówiąca o zakończeniu iteracji iteratora, tzn. dane dla iteratora się zakończyły.
===== {{Śródtytuł|LiniaArtykulow}}{{Code|LiniaArtykulow}} =====
Funkcja dla szablonów kompletowania określonym tabelką: {{Code|{{sr|#p.szablony_kompletowania_stron_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_kompletowania_stron_woluminu}}, o definicji:
<syntaxhighlight lang="lua">
p.szablony_kompletowania_stron_woluminu={
["Kompletność"]=true,
["Kompletność krótka"]=true,
["Kompletność junior"]=true,
["Książka"]=true,
};
</syntaxhighlight>
Rozdziela linię na wiele obsługiwanych podlinii.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function LiniaArtykulow(linia)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|linia}} {{Patrz|linia}} | _1 = Pojedyncza przetworzona linia.
}}
====== {{Śródtytuł|SzablonAnalizujKompletnosc}}{{Code|SzablonAnalizujKompletnosc}} ======
Funkcja sprawdza, czy dane wywołania szablonu, ma swoją nazwę szablonu, która jest nazwą szablonu kompletowania.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function SzablonAnalizujKompletnosc(szablon)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}.
}}
====== Dalszy opis funkcji ======
Możliwe są dwie opcje, szablon kompletowania jest pierwszy, a drugi drugi, lub odwrotnie. Funkcja obsługuje te oba przypadki. Ona stawia przecinkiem dla obu wersji ustawień, jeśli potraktować układem link i szablon kompletowania, to wstawiany jest on pomiędzy tymi układami, aby rozdzielić linię, a w liście bez jego znaków pozycji, na elementy przy pomocy funkcji: {{LzLua|mw.text.split}}, z opcją jako drugi parametr, aby uwzględniał wyrażenia regularne {{Code|false}}. W tych rozdzielonych linią tą funkcją dzielącą ciąg znakowy na tabelę, kody '''HTML''' przecinka są zamieniane na zwykły przecinek.
Funkcja zwraca tabelę podzielonej linii na mniejsze podlinie, który można iterować funkcją: {{Code|pairs}} lub {{Code|ipairs}}.
===== {{Śródtytuł|WsadzanieParametryDoTablicy}}{{Code|WsadzanieParametryDoTablicy}} =====
Funkcja z parametrami, która uruchamia inną funkcję uruchamianą w: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}, która wstawia tabelę {{LinkPatrz|tab_stare}}, do ogólnej tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}, ewentualnie do {{Code|tabela_rozdzial_artykulow}} {{Patrz|tabela_rozdzial_artykulow}} na pozycję {{Code|numer_podtablicy_w_tablicy}} {{Patrz|numer_podtablicy_w_tablicy}}, a dokładniej na pozycję {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}} w funkcji {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function WsadzanieParametryDoTablicy(linia,czy_linia_uwzgledniana)
return function(tabela_rozdzial_artykulow2,numer_podtablicy_w_tablicy,tab_stare)
... ---- ciało funkcji.
end;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|linia}} | _1 = Jak w: {{LinkPatrz|linia}}.
| 2 = {{Code|czy_linia_uwzgledniana}} {{Patrz|czy_linia_uwzgledniana}} | _2 = Czy linię ma uwzględnić w powiększaniu poziomu o jeden dla artykułu.
}}
Parametry zwracanej funkcji przez tę w nagłówku:
{{OpisParametrów
| 1 = {{Code|tabela_rozdzial_artykulow2}} | _1 = Jak w: {{LinkPatrz|tabela_rozdzial_artykulow2}}.
| 2 = {{Code|numer_podtablicy_w_tablicy}} | _2 = Jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}.
| 3 = {{Code|tab_stare}} | _3 = Jak w: {{LinkPatrz|tab_stare}}.
}}
====== {{Śródtytuł|CzyZaliczac}}{{Code|CzyZaliczac}} ======
Funkcja sprawdza, czy z początkiem linii pozycji listy, bez przedrostka listy, jest z możliwym cudzysłowem, po którym następują liczby, litery, lub myślniki dolne, w takim pzypadku linia nie może składać się z nich, po ktorym występują znaki interpunkcyjne. Jeśli to sprawdzenie było pozytywne funkcja zwraca wartość logiczną odpwowiadającą {{Code|true}}, w przeciwnym wypadku jak {{Code|false}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function CzyZaliczac()...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = Brak parametrów funkcji. | komórka1 = tak
}}
Funkcja zwraca informację, czy daną linię traktować jako rozdział, chodzi tu o pozycje list, a w przypadku rozdziałów dodatnich wiadomo, że one są właśnie, że rozdziałami.
====== Dalszy opis funkcji ======
Funkcja sprawdza w funkcji zwracanej, czy rozważany rozdział jest centrowany danego artykułu, który siedzi pod rozdziałem lub w samym rozdziale, sprawdza, czy artykuł jest w rozdziale, sprawdza czy linia jest uwzględniana: {{Code|czy_linia_uwzgledniana}} {{LinkPatrz|czy_linia_uwzgledniana}}. Funkcja sprawdza, czy sekcja czy w: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, czy istnieje element: {{Code|tab_stare[2]}} {{Patrz|tab_stare[2]}}, i dalszy: {{Code|tab_stare[2][1]}} {{Patrz|tab_stare[2][1]}} - ten element jest to w: {{Code|tab_stare}}, taki: {{Code|#przedrostek_listy}} {{Patrz|#przedrostek_listy}}, a jeżeli to sprawdzenie przeszło pozytywnie, który dla tego jest poziomem listy, lub zerowego rozdziału lub rozdziału dodatniego.
Dla każdej linii zmienna: {{Code|nowa_linia}} {{Patrz|nowa_linia}}, przyjmuje wartość {{Code|false}}, wtedy dla przypadku przeciwnego, tzn. gdy mamy rozdział i uwzględniamy artykuły w jednej linii, którym jest rozdział będacy pozycją listy, w zmiennej: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, jest ustawiany element: {{Code|tab_stare[2][4]}} {{Patrz|tab_stare[2][4]}}, czyli zmienna: {{Code|w_rozdziale}} {{LinkPatrz|w_rozdziale}}, zaczyna przyjmować wartość {{Code|true}}. Wsadzany jest wtedy do tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}, na pozycję: {{Code|numer_podtablicy_w_tablicy}} {{LinkPatrz|numer_podtablicy_w_tablicy}}, czyli to jest też: {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, element {{Code|tab_stare}} {{LinkPatrz|tab_stare}}.
Gdy: {{Code|nowa_linia}} {{LinkPatrz|nowa_linia}}, gdy jednak przyjmuje wartość {{Code|false}}, wtedy jeśli poziom rozdzialu istnieje i przedrostek listy {{LinkPatrz|#przedrostek_listy}} jest większy od zera, i istnieje wiele artykułów w pozycji liście, wtedy: {{Code|ile>0}}, lub funkcja: {{LinkŚródtytuł|CzyZaliczac}}, przyjmuje wartość odpowiadające prawdziwej, w taki przypadku zmiennej: {{Code|nowa_linia}} {{LinkPatrz|nowa_linia}}, przydzielamy wartość {{Code|true}}, by dalsze artykuły można było wsadzić, do tablicy z nowym rozdziałem. Powiększamy numer rozdziału o jeden, tzn.: {{Code|numer_rozdzialu_w_ksiazce}} {{Patrz|numer_rozdzialu_w_ksiazce}}, wtedy w zmiennej: {{Code|tabela_artykulow}} {{Patrz|tabela_artykulow}}, tabeli rozdziałów i w nich artykułów dla tej pozycji przydzielamy wartość równą tablicy pustej. Liczymy rozdział dla tego rozdział z artykułami, z funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}, liczymy napis rozdziału, wtedy do pierwszej pozycji tablicy utworzonej w: {{Code|tabela_artykulow}} {{LinkPatrz|tabela_artykulow}}, dla miejsca: {{Code|numer_rozdzialu_w_ksiazce}} {{LinkPatrz|numer_rozdzialu_w_ksiazce}}, czyli: {{Code|tabela_rozdzial_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}, piszemy:
<syntaxhighlight lang="lua">
tabela_rozdzial_artykulow[1]={rozdzial_na_tekst,{-#przedrostek_listy,przedrostek_listy,tekstowy_przedrostek,false,},linia,};
</syntaxhighlight>
Gdzie: {{Code|rozdzial_na_tekst}} {{Patrz|rozdzial_na_tekst}}, to policzony rozdział, {{Code|-#przedrostek_listy}} {{Patrz|-#przedrostek_listy}} to poziom rozdziału ujemnego, i dlatego minus. A: {{Code|przedrostek_listy}}, to znaki poczatkowe z listy: {{Code|wzor_do_linii_z_lista}} {{LinkPatrz|wzor_do_linii_z_lista}}, a: {{Code|tekstowy_przedrostek}}, to numeracja tego rozdziału. Wartość {{Code|false}} to jest ze ten rozdział nie jest centrowany, a: {{Code|linia}} {{LinkPatrz|linia}}, to wyzyskana linia bez początku pozycji listy. Ustawiamy: {{Code|tab_stare[2][4]}} {{LinkPatrz|tab_stare[2][4]}}, na wartość {{Code|true}} i element: {{Code|tab_stare[6]}} {{Patrz|tab_stare[6]}}, ustawiamy na zero. Tworzymy tablicę pustą na pozycję: {{LinkPatrz|numer_podtablicy_w_tablicy}}, tablicy: {{Code|tabela_rozdzial_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}, i do tej tablicy dodajemy: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, za pomocą funkcji: {{LzLua|table.insert}}.
A jeżeli nie jest tworzony nowy rozdział z listy w tabeli: {{Code|tabela_artykulow}} {{LinkPatrz|tabela_artykulow}}, to na pozycję: {{Code|numer_podtablicy_w_tablicy}} {{LinkPatrz|numer_podtablicy_w_tablicy}}, jest dodawany element: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, również tak jest robione, gdy artykuły znajdują się w rozdziale dodatnim, tzn. równaniowej lub centrowanej, tzn. wtedy: {{Code|w_rozdziale}} {{LinkPatrz|w_rozdziale}}, przyjmuje wartość {{Code|true}}.
===== {{Śródtytuł|AnalizaLiniiObiekty}}{{Code|AnalizaLiniiObiekty}} =====
Za pomocą funkcji: {{LinkŚródtytuł|LiniaArtykulow}}, linia: {{Code|linia_rozwazana}} {{Patrz|linia_rozwazana}}, jest rozdzielana na wiele linii. To wiele linii w postaci tabeli, są iterowane od: {{Code|k {{=}} 1}}, do: {{Code|k {{=}} #tab_linia}}, gdzie: {{Code|#tab_linia}} {{Patrz|#tab_linia}}, jest to długość linii, tzn. liczba elementów numerowanych tablicy, tzn. od 1 do zwyż aż do apotkania najbliższej przerwy lub końca. Wtedy dla pojedyńczej literacji mamy: {{Code|tab_linia[k]}} {{Patrz|tab_linia[k]}}.
Iterujemy po kodach dla linii: {{Code|tab_linia[k]}} {{LinkPatrz|tab_linia[k]}}, przy pomocy funkcji: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} {{Patrz|p.IteratorSzablonowyZakodowanegoTekstu}}, iteratorem: {{Code|iterator2}} {{Patrz|iterator2}}.
Inicjujemy zmienną: {{Code|tab_nieobslugiwane {{=}} nil}}, następnie iterujemy: {{LinkPatrz|iterator2}}, uzyskując w każdej iteracji: {{Code|szablon}} {{LinkPatrz|szablon}}, {{Code|obiekt}} {{LinkPatrz|obiekt}}, i {{Code|kod}} {{LinkPatrz|kod}}.
Gdy mamy do czynienia: {{Code|SZABLON}}, lub: {{Code|LINKW}}, albo: {{Code|LINKZ}}, wtedy dla elementów tego pierwszego bierzemy tablicę: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}, dla elementu: {{Code|nazwa_szablonu}} {{LinkPatrz|nazwa_szablonu}}.
Jeżeli ten element: {{Code|tabela_spisu}}, istnieje, element pierwszy: {{Code|tabela_spisu[1]}}, jest równy wartości {{Code|true}}, wtedy mamy do czynienia z szablonem {{s|SpisPozycja}}. Jej element: {{Code|tabela_spisu["numer_link"]}}, istnieje i jest równy: {{Code|tyt}} {{Patrz|tyt}}. Iterujemy po kluczach i jego wartościach tego szablonu i sprawdzamy, który element jest równy właśnie tej wartości, a jeżeli jest taki, to dla elementów nie równych niemu, a właściwie w jego wartości iterujemy po kodach funkcją: {{LinkPatrz|p.IteratorSzablonowyZakodowanegoTekstu}}, dla tej wartości, w ten sposób zbieramy tablicę wielowymiarową najpierw po: {{Code|obiekt}} {{LinkPatrz|obiekt}}, póżniej po: {{Code|kod}}, {{LinkPatrz|kod}}, którą nazwiemy: {{Code|tab_nieobslugiwane}} {{Patrz|tab_nieobslugiwane}}, którego każda jej wartość jest równa {{Code|true}}. Ta tablica mówi dla jakich elementów ma nie zbierać w tablicy elementów w głównej tablicy rozdziałów i jego artykułach.
Dla elementu {{Code|tyt}} {{LinkPatrz|tyt}} tablicy parametrów przedrostek listy {{Code|przedrostek_listy}} ustawiamy na pusty, i liczmy numerację {{Code|tekstowy_przedrostek}} i zmienną {{Code|szablon}} {{LinkPatrz|szablon}} i ustawiamy zmienną {{Code|przerwij}} {{Patrz|przerwij}} na {{Code|true}}, aby dla tego szablonu nie zbierać elementów w tablicy rozdziałów i jego artykułów.
W przypadku przeciwnym dla: {{Code|tabela_spisu}}, gdy ma wartość {{Code|false}}, wtedy mamy do czynienia z funkcją: {{s|SpisZw}}. Dla niej liczymy: {{Code|przedrostek_listy}}, którą ustawiamy na pustą wartość. A: {{Code|tekstowy_przedrostek}}, liczmy uzyskując parametr o kluczu: {{Code|tabela_spisu["numer"]}}, którym jest parametr o numerze: {{Code|1}}, i {{Code|szablon}} {{LinkPatrz|szablon}}, który liczmy z parametrów szablonu o kluczu {{Code|tabela_spisu["link"]}}, którym jest numer {{Code|2}}. Ustawiamy tutaj zmienną: {{Code|}} {{LinkPatrz|przerwij}}, na wartosć {{Code|true}}.
====== {{Śródtytuł|CzyObslugiwane}}{{Code|CzyObslugiwane}} ======
Funkcja sprawdzająca, które elementy są obsługiwane, jeśli istnieje tablica: {{Code|tab_nieobslugiwane}} {{LinkPatrz|tab_nieobslugiwane}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local CzyObslugiwane=function()...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = Brak parametrów. | komórka1 = tak
}}
====== Dalszy opis funkcji ======
; Uwzględnianie tablicy, reprezentujące artykuł w rozdziale, wstawiany do tablicy danego rozdziału{{dk}}
Sprawdzany jest warunek:
<syntaxhighlight lang="lua">
if((--[[wliczaj_artykuly_tego_rozdzialu]] true)and(not przerwij)and((not tab_nieobslugiwane)or(CzyObslugiwane())))then
</syntaxhighlight>
Jeżeli jest on spełniony, wtedy wywołujemy funkcję: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}, później dla:
<syntaxhighlight lang="lua">
if((not czy_obslugiwane)and(not numer_rodzaju_artykulu_poprz))then
</syntaxhighlight>
Sprawdzamy, czy jest zebrana licencja z autorem według zmiennej: {{Code|licencja_z_autorem}} {{Patrz|licencja_z_autorem}}, i sprawdzamy, czy: {{Code|szablon}} {{LinkPatrz|szablon}}, jest wnetrzem szablonu, jeżeli tak, to ona przyjmuje wartość odpowiadająca prawdziwej, przeciwnie ma fałszywą.
Jeżeli ten pierwszy warunek jest niespełniony, to tylko liczymy to samo coostatnio.
; Szablony licencji, i jego parametry, uwzględnianie jego tylko raz ca całą książkę, mieszcząca się w artykule głównej książki{{dk}}
Następnie dla warunku, który musi być spełniony:
<syntaxhighlight lang="lua">
if((not numer_rodzaju_artykulu_poprz)and(not przerwij)and(link_szablon)and((not tab_pozycja_elementow_w_spisie_rzeczy)or(not tab_pozycja_elementow_w_spisie_rzeczy[1]))and(czy_artykul_korzystany)and(licencja_z_autorem))then
</syntaxhighlight>
Sprawdzamy szablony licencji, takich jak: {{s|Licencja}}, według tablicy: {{Code|{{sr|#p.szablony_licencji|p=StronicowyParser/obiekty}}}}.
Dla parametrów szablonu, liczymy jego parametry o kluczach, tzn.: {{Code|Autor}} {{Patrz|Autor}}, {{Code|Ukończone szkoły}} {{Patrz|Ukończone szkoły}}, {{Code|Email}} {{Patrz|Email}}, {{Code|Dotyczy}} {{Patrz|DotyczyDotyczy}}, {{Code|Licencjonowanie}} {{Patrz|Licencjonowanie}}, {{Code|Umowa prawna}} {{Patrz|Umowa prawna}} i {{Code|Konsekwencje}} {{Patrz|Konsekwencje}}, którego wartości przydzielamy do odpowiednich zmiennych. Każdą z tych zmiennych kompletujemy funkcją: {{Code|{{sr|#p.DekodowanieTekstuDekodowanieTekstu|p=StronicowyParser/Potrzebne}}}}, poprzez zwracaną przez nią funkcję, w której jest wykorzystywana funkcją: {{LzLua|frame:preprocess}}, do rozwijania. A dla elementu istniejącego: {{Code|Autor}}, piszemy zmienną: {{Code|licencja_z_autorem}} {{LinkPatrz|licencja_z_autorem}}, któremu przydzielamy wartość {{Code|false}}, co spowoduje, że nie będziemy analizowali jeszcze raz innego szablonu licencji.
Te zmienne tego szablonu zbieramy natomiast w tablicy: {{Code|tabela_licencji_spisu_tresci}} {{Patrz|tabela_licencji_spisu_tresci}}, dane dotyczące licencji, więc:
<syntaxhighlight lang="lua">
tabela_licencji_spisu_tresci={autor, szkoly, email, dotyczy, licencjonowanie, umowa_prawna, konsekwencje};
</syntaxhighlight>
Co później przerywamy pętle po: {{Code|iterator2}} {{LinkPatrz|iterator2}}, instrukcją: {{Code|break}}.
==== Dalszy opis funkcji {{nobold|{{LinkPatrz|opis funkcji-ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}}} ====
Ściągamy tekst, tabelę bazy i tabelę parametrów strony o nazwie: {{Code|nazwa_modulu}}, przy pomocy funkcji: {{Code|{{sr|#p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony|p=StronicowyParser/Tekst}}}}, według:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=nil;
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
return nil;
end,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Uruchamiamy funkcję: {{Code|__FUNKCJA_ZBIERANIA_DANYCH}} {{LinkPatrz|__FUNKCJA_ZBIERANIA_DANYCH}}, jeżeli istnieje.
Dalej wywołujemy funkcję: {{Code|{{sr|#p.IterTekst|p=StronicowyParser/Rozdziały}}}}, w celu znalezienia tekstu: {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}}, i iteratora: {{Code|iterator}} {{Patrz|iterator}}, po napisach wprowadzenia tekstu rozdziałów i ich zawartości rozdziałów i na podstawie:
<syntaxhighlight lang="lua">
local iterator,tekst_rozwiniety_calego_artykulu=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,true,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,
__FUNKCJA, ---- funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adresu szablonu, określa i zawraca jego zawartość;
__FUNKCJA2, ---- funkcja operująca na przygotowanej zawartości napisu wprowadzenia tekstu i tekście napisu wprowadzenia tekstu (rozdziału);
__FUNKCJA_ANALIZA_SPISU ---- funkcja do analizy i modyfikacji tekstu (może zwracać wartość: nil) przed samym kodowaniem, jeżeli tekst jest w ogóle jest taki, a jeśli nie, ta funkcja wtedy nie jest uruchamiana, funkcja ta bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: IterTekst, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: SpisTreści, co jest uwidocznione w module: Moduł:StronicowyParser/SpisTreści;
);
</syntaxhighlight>
Opis parametrów zwracanych:
{{OpisParametrów
| 1 = {{Code|iterator}} {{Patrz|iterator-IterTekst}} | _1 = Iterator po rozdziałach i jego zawartościach.
| 2 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu-IterTekst}} | _2 = Tekst przetworzony rozdziału.
}}
Odczytujemy tabelę: {{LinkPatrz|p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu}} i dalej: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}, o definicji:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={
["spis treści"]=true,
["spis tresci"]=true,
["spis rzeczy"]=true,
};
</syntaxhighlight>
Robimy kopię tych tabel i przyłączamy do metatabeli: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, przy pomocy funkcji: {{LzLua|setmetatable}}, aby nie odrózniać tych rozdziałów ze względu na wielkość liter i polskie znaki.
Inicjiujemy zmienną: {{Code|numer_rozdzialu_w_ksiazce}} {{LinkPatrz|numer_rozdzialu_w_ksiazce}}, wartością: {{Code|1}}, aby zbierać po kolei artykuły ze poszczególnego pojedynczego spisu treści.
Ustawiamy maksymalny rozmiar rozdziału zerowego na {{Code|50}}, w zmiennej: {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{Patrz|maksymalny_rozmiar_rozdzialu_zerowego}}, według:
<syntaxhighlight lang="lua">
local maksymalny_rozmiar_rozdzialu_zerowego=50;
</syntaxhighlight>
===== {{Śródtytuł|AnalizaRozdzialu}}{{Code|AnalizaRozdzialu}} =====
Jest to funkcja do zbierania danych z pojedynczego rozdziału o pewnej linii, inicjowana z jego parametrami, także tekstem rozdziału.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function AnalizaRozdzialu(rozdzial,linia_rozdzialu,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|rozdzial}} {{Patrz|rozdzial}} | _1 = Jest to tekst rozdziału.
| 2 = {{Code|linia_rozdzialu}} {{Patrz|linia_rozdzialu}} | _2 = Jest to linia z rozdziałem.
| 3 = {{Code|text}} {{Patrz|text}} | _3 = Jest to tekst rozdziału o pewnym napisie wprowadzenia tekstu.
| 4 = {{Code|poziom_rozdzialu}} {{Patrz|poziom_rozdzialu}} | _4 = Jest to poziom danego rozdziału.
| 5 = {{Code|poczatek_rozdzialu}} {{Patrz|poczatek_rozdzialu}} | _5 = Początek pozycji listy rozdziałów '''mechanizmu {{NS|k=mw|l=tak|pk=d}}'''.
| 6 = {{Code|numeracja}} {{Patrz|numeracja}} | _6 = Numeracja rozdziału.
| 7 = {{Code|czy_rozdzial_centrowany}} {{Patrz|czy_rozdzial_centrowany}} | _7 = Czy dany rozdział jest centrowany.
}}
====== Tabela artykułów rozdziałów i w nich artykułów oraz jego poszczególnych ======
Tworzymy tabelę: {{Code|tabela_artykulow}} {{LinkPatrz|tabela_artykulow}}, jeżeli nie istnieje, z pustą tablicą, a później dla elementu: {{Code|numer_rozdzialu_w_ksiazce}} {{LinkPatrz|numer_rozdzialu_w_ksiazce}}, jeżeli też go nie ma, to też pustą tablicą. Dalej liczymy napis wprowadzenia tekstu rozdziału dodatniego funkcją: {{LinkŚródtytuł|p.AnalizaNapisuWprowadzeniaTekstu}} i uwzględniamy je w tabeli rozdziałów dla danego rozdziału pod wartością: {{Code|tabela_rozdzial_artykulow[1]}}, w sposób:
<syntaxhighlight lang="lua">
tabela_rozdzial_artykulow[1]={rozdzial_na_tekst,{poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany,},rozdzial,};
</syntaxhighlight>
Dalej wprowadzamy zmienną: {{Code|czy_spis_rzeczy_napis_wprowadzenia_tekstu}} {{Patrz|czy_spis_rzeczy_napis_wprowadzenia_tekstu}}, mówiącą teraz rozpatrujemy rozdziały i artykuły w ramach spisu treści o nagłówkach typu: {{Code|Spis treści}}, czy: {{Code|SPIS RZECZY}}. Jeżeli wyszliszmy poza to, to ta zmienna wtedy przyjmuje wartość fałszywą, a definicja inicjacji tej zmiennej jest:
<syntaxhighlight lang="lua">
local czy_spis_rzeczy_napis_wprowadzenia_tekstu=(poziom_rozdzialu)and(not czy_jest_spis_tresci)and(not dalej_nie_rozwazaj_spis_tresci)and(jakie_spisy_tresci[spreparowany_uzyskany_tekst_rozdzialu]);
</syntaxhighlight>
Gdzie:
{{OpisParametrów
| 1 = {{Code|poziom_rozdzialu}} | _1 = Jak w: {{LinkPatrz|poziom_rozdzialu}}.
| 2 = {{Code|czy_jest_spis_tresci}} {{Patrz|czy_jest_spis_tresci}} | _2 = Czy jesteśmy w spisie treści.
| 3 = {{Code|dalej_nie_rozwazaj_spis_tresci}} {{Patrz|dalej_nie_rozwazaj_spis_tresci}} | _3 = Zmienna mówiąca, że teraz jesteśmy poza spisem treści.
}}
====== Kiedy uwzględniamy artykuły rozdziału ======
Jeżeli jesteśmy w spisie, to zawsze są uwzględniane artykuły rozdziału, bo jest ustawiona zmienna: {{Code|wliczaj_artykuly_tego_rozdzialu}} {{LinkPatrz|wliczaj_artykuly_tego_rozdzialu}}, na {{Code|true}}, a poza na {{Code|nil}}.
Funkcja jest przyszykowana jest dla jednego spisu treści, o ściśle określonym specjalnym napisie wprowadzenia tekstu, w danym spisie na stronie.
====== Iterator linii artykułu spis treści ======
Uruchamiamy iterator używając funkcji lokalnej: {{LinkŚródtytuł|iteratorTekstuNaglowka}}, według wywołania:
<syntaxhighlight lang="lua">
local iterator=iteratorTekstuNaglowka();
</syntaxhighlight>
Ustawiamy zmienną: {{Code|wliczaj_artykuly_tego_rozdzialu}} {{LinkPatrz|wliczaj_artykuly_tego_rozdzialu}}, aby wliczał lub nie, pewne artykuły rozdziału według:
<syntaxhighlight lang="lua">
local wliczaj_artykuly_tego_rozdzialu=((wliczaj_artykuly_tego_rozdzialu)or(not jakie_nie_rozdzialy[rozdzial]));
</syntaxhighlight>
Iterujemy otrzymanym ostatnio iteratorem, uzyskując kolejno zmienne: {{Code|przedrostek_listy}} {{LinkPatrz|przedrostek_listy}}, {{Code|tekstowy_przedrostek}} {{LinkPatrz|tekstowy_przedrostek}}, {{Code|linia}} {{LinkPatrz|linia}}, i {{Code|w_rozdziale}} {{LinkPatrz|w_rozdziale}}.
; Kiedy rozdziałów zerowych nie liczymy jako je{{dk}}
Dla rozdziałów, które nie sa poziomami z listą, sprawdzamy, czy to jest rozdział zerowy przy pomocy funkcji: {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|p=StronicowyParser/Rozdziały}}}}, i sprawdzamy, czy on przekracza rozmiar: {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}, jeżeli jest tym rozdziałem i nie przekracza pewnego rozmiaru, to to jest rozdział traktowany jako zerowy niepomijany rozdział zerowy, wtedy ustawiamy zmienną: {{Code|nie_pomijaj_tego_rozdzialu}} {{Patrz|nie_pomijaj_tego_rozdzialu}}, na {{Code|true}}.
; A jeśli to są rozdziały z listy zaczynające się od dwukropka w linii{{dk}}
Gdy taki rozdział nie pretenduje do zerowych, to sprawdzamy funkcją: {{Code|{{sr|#p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu|p=StronicowyParser/Rozdziały}}}}, czy ten rozdział pominąć, a jeżeli ona przyjmuje wartość odpowiadającej fałszywej, czyli {{Code|false}}, wtedy ustawiamy zmienną: {{Code|nie_pomijaj_tego_rozdzialunie_pomijaj_tego_rozdzialu}} {{LinkPatrz|nie_pomijaj_tego_rozdzialu}}, na taką samą wartość jak poprzednio.
; Inne rozdziały{{dk}}
Dla rozdziałów innych ta wartość przyjmuje postać {{Code|false}}.
; Rozdziały jednak nie pomijane{{dk}}
Dla rozdziałów, które nie są pomijane, wtedy zmienna: {{Code|nie_pomijaj_tego_rozdzialu}} {{LinkPatrz|nie_pomijaj_tego_rozdzialu}}, przyjmuje wartość {{Code|true}}, w takim przypadku wchodzimy do funkcji: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstuZgodnieZJegoSzablonowymiElementami|p=Szablonowe}}}}, wtedy dla linków szablonowych sprawdzamy, czy to są linki określone tablicami: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy}}, {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}} lub ewentualnie funkcją: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}.
Innym sposobem sprawdzania, czy to jest szablon linkowy jest tablica: {{Code|{{sr|#p.szablony_kompletowania_stron_woluminu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_kompletowania_stron_woluminu}}, lub {{Code|{{sr|#p.szablony_licencji|p=StroncowyParser/obiekty}}}} {{LinkPatrz|p.szablony_licencji}}.
Jeżeli to jest szablon linków, wtedy jest zwracana wartość: {{Code|return true,obiekt,kod}}, w przeciwnym wypadku: {{Code|return false,obiekt,kod}}.
Innym sposobem liczenia, czy to jest link, to wtedy może być to link normalny: {{Code|LINKW}}, który można sprawdzić funkcją: {{Code|{{sr|#p["CzyLinkWewnętrzny"]|p=Specjalne}}}}, wtedy jest zwracane {{Code|return true,obiekt,kod}}.
Link też może być zewnętrzny, wtedy to jest: {{Code|LINKZ}}, wtedy funkcja zwraca wartość: {{Code|return true,obiekt,kod}}.
; Kiedy analizujemy artykuły rozdziału{{dk}}
Następnie dla linii: {{Code|linia_rozwazana}} {{LinkPatrz|linia_rozwazana}}, co na podstawie tego liczymy, czy daną linię nie uwzględnić, w obliczeniach według schematu:
<syntaxhighlight lang="lua">
local czy_linia_uwzgledniana=mw.ustring.match(linia_rozwazana,"^%s*%-%-+(.*)%-%-+%s*$");
local czy_linia=((not czy_linia_uwzgledniana)and(mw.ustring.match(linia_rozwazana,"^%s*[%-%+%=%~]+.*$")
or ((#przedrostek_listy==0)and((mw.ustring.match(linia_rozwazana,"!"))and(mw.ustring.match(linia_rozwazana,"[^!]%s*$"))))
or mw.ustring.match(linia_rozwazana,"^%s*<")) or nil);
</syntaxhighlight>
Co następnie jest ustawiana {{Code|nowa_linia}} {{LinkPatrz|nowa_linia}} na wartość {{Code|false}}.
; Warunek analizowania artykułów rozdziałów{{dk}}
W obliczeniach raz uwzględniamy funkcję: {{LinkŚródtytuł|AnalizaLiniiObiekty}}, w ostatniej omawianej pętli, schematycznie:
<syntaxhighlight lang="lua">
if(not czy_linia)then AnalizaLiniiObiekty(linia_rozwazana);end;
</syntaxhighlight>
===== Dalsza część funkcji {{nobold|{{LinkPatrz|opis funkcji-ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}}} =====
Bierzemy zakodowany tekst: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu-IterTekst}}, i po nim iterator: {{Code|iterator}} {{LinkPatrz|iterator-IterTekst}}, wtedy iterujemy po parametrach:
<syntaxhighlight lang="lua">
local parsuj_rozdzialami=nil; ---- ta zmienna służy na wypadek, gdy by nie była żadnych rozwazanych rozdziałów;
for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do
---- za każdym razem jest uruchamiana funkcja: AnalizaRozdzialu, przy rozważanym rozdziale;
AnalizaRozdzialu(rozdzial_tab[1],rozdzial_tab[2],text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany);
---- oznacz zmienną: parsuj_rozdzialami, wartością; true, a póżniej jąnie inicjuj;
if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end
end;
</syntaxhighlight>
Parametry zwracane przez iterator: {{Code|iterator}} {{LinkPatrz|iterator-IterTekst}}:
{{OpisParametrów
| 1 = {{Code|rozdzial_tab}} {{Code|{{=}}}} {{Code|<nowiki>{ [1] = rozdzial, [2] = linia_rozdzialu, }</nowiki>}} | _1 = tabela składająca się z dwóch elementów:
| 2 = Pod elementy tabeli: | nagłówek2 = tak
| 3 = {{Code|rozdzial}} | _3 = Jak w: {{LinkPatrz|rozdzial}}.
| 4 = {{Code|linia_rozdzialu}} | _4 = Jak w: {{LinkPatrz|linia_rozdzialu}}.
| 5 = Inne parametry: | nagłówek5 = tak
| 6 = {{Code|text}} | _6 = Jak w: {{LinkPatrz|text}}.
| 7 = {{Code|poziom_rozdzialu}} | _7 =Jak w: {{LinkPatrz|poziom_rozdzialu}}.
| 8 = {{Code|poczatek_rozdzialu}} | _8 = Jak w: {{LinkPatrz|poczatek_rozdzialu}}.
| 9 = {{Code|numeracja}} | _9 = Jak w: {{LinkPatrz|numeracja}}.
| 10 = {{Code|czy_rozdzial_centrowany}} | _10 = Jak w: {{LinkPatrz|czy_rozdzial_centrowany}}.
}}
Gdy nie napotkano żadnego rozważanego rozdziału, wtedy: {{Code|parsuj_rozdzialami}}, przyjmuje wartość {{Code|nil}}, w takim razie uruchamiana jest funkcja:
<syntaxhighlight lang="lua">
if(not parsuj_rozdzialami)then
AnalizaRozdzialu("Spis treści",nil,tekst_rozwiniety_calego_artykulu,nil,nil,nil,nil);
end;
</syntaxhighlight>
Funkcja zwraca parametry inaczej, gdy artykuł, do którego należy książka jest korzystany, a inaczej, jeśli nie. W takim razie możemy zwracać na dwa sposoby:
<syntaxhighlight lang="lua">
if(czy_artykul_korzystany)then
return tabela_artykulow,tabela_licencji_spisu_tresci,przekierowanie_spisu_tresci;
else
return tabela_artykulow,nil,przekierowanie_spisu_tresci;
end;
</syntaxhighlight>
Przy artykułach korzystanych, co jest określone zmienną: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, tabelę: {{Code|tabela_licencji_spisu_tresci}} {{LinkPatrz|tabela_licencji_spisu_tresci}}, przy jego spisach treści w książkach, do której należy ten artykuł, zwracana jest jako wartość przeważnie jako nierówna {{Code|nil}}, a dla artykułów z innych książkach, ta wartość już jest taka, tzn. przyjmuje wartość {{Code|nil}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
hg9ewcfo5w54w9xr53itaeehtqibtdd
Wikibooks:Moduły/StronicowyParser/Tekst
4
63524
558282
558281
2026-10-02T12:12:09Z
Persino
2851
/* {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} */
558282
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|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.SpreparowanyWikikodStrony}}{{Code|p.SpreparowanyWikikodStrony}} ==
Funkcja sciagące opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Funkcja w opisach szablonów, a w niej instrukcje warunkowe podczas kodowania są rozwijane przy pomocy funkcji: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}}, a normalnie, gdy wewnątrz instrukcji warunkowych nie ma klamerek w funkcji, w składowej funkcji, tzn.: {{LinkPatrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja korzysta bezpośrednio z funkcji: {{LinkŚródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana.
| 2 = {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} | _2 = Nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw.
| 3 = {{Code|nazwa_modulu_szablonowa}} {{Patrz|nazwa_modulu_szablonowa}} | _3 = Nazwa modułu w wersji szablonowej, w wersji wywołaniowej.
| 4 = {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} | _4 = Przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony.
| 5 = {{Code|inkludowana}} {{Patrz|inkludowana}} | _5 = Przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej.
| 6 = Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem: | nagłówek6 = tak
| 7 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-SpreparowanyWikikodStrony}} | _7 = Funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, po kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku.
| 8 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-SpreparowanyWikikodStrony}} | _8 = Jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować.
| 9 = {{Code|__FUNKCJA3}} {{Patrz|__FUNKCJA3-SpreparowanyWikikodStrony}} | _9 = Funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}}.
| 10 = Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]|p=Szablonowe}}}} {{Patrz|UstalanieNazwyWywołania}}:| komórka10 = tak
| 11 = {{Code|__FUNKCJA4}} {{Patrz|__FUNKCJA4-SpreparowanyWikikodStrony}} | _11 = Funkcja, np. dekodująca nazwę szablonu.
| 12 = {{Code|__FUNKCJA5}} {{Patrz|__FUNKCJA5-SpreparowanyWikikodStrony}} | _12 = Funkcja, np. rozwijająca nazwę szablonu.
| 13 = Inne: | nagłówek13 = tak
| 14 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _14 = Funkcja do modyfikacji tekstu pobranego ze strony
| 15 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _15 = Funkcje do generowania tablicy bazy kodów.
}}
Definicje funkcji: {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-UstalanieNazwyWywołania}} i {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-UstalanieNazwyWywołania}}, które są potrzebne do konstrukcji wywołania funkcji: {{LinkPatrz|UstalanieNazwyWywołania}}, uzyskiwania nazwy szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} i {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}}, definicje tych funkcji:
* {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Tablica danych bazy kodów zakodowanego tekstu.
| 5 = {{Code|dokumentacja}} | _5 = Jak w: {{LinkPatrz|dokumentacja}}.
| 6 = {{Code|czy_nie_opis}} | _6 = Czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu_caly}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} {{LinkPatrz|__FUNKCJA3-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu,nazwa_modulu_szablonowa)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_modulu}} | _1 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 2 = {{Code|nazwa_modulu_szablonowa}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory,czy_z_kluczem]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} | _1 = Nazwa szablonu do rozwinięcia.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}}. | _5 = Tabela parametrów potrzebna do szybszego działania '''{{ld|StronicowyParser|Stronicowego parsera}}'''.
| 6 = Gdy tą funkcją jest: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}}, ta zmienna bezpośrednio w: {{Code|__FUNKCJA4}}, nie występuje, ale za to występuje w tej podanej szczególnej przykładowej funkcji: | komórka6 = tak
| 7 = {{Code|czy_uwzgledniac_modyfikatory}} | _7 = Czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}}.
| 8 = {{Code|czy_z_kluczem}} | _8 = Czy klucze, o wzorze: {{Code|klucz}}, lub {{Code|klucz[1-9]%d*}}.
}}
Jeżeli w funkcji {{LinkPatrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}} nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}} w przeciwnym wypadku zwracane jest nazwa szablonu i wartość {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} | _1 = Nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}.
| 2 = {{Code|tabela_modyfikatorow}} | _2 = Tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, to jest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}}, w przypadku: {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}.
| 3 = {{Code|nazwa_modulu}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 4 = {{Code|nazwa_modulu_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}, z korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, z której korzysta {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}, jeżeli z korzystanej tutaj funkcji zrzuciło to niepowodzenie, to pierwsza wartość zwrótcone to: {{Code|nil}}, druga: {{Code|false}}, w przeciwnym wypadku zwraca nazwę rozwiniętego szablonu i wartość: {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice:
; Przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy{{dk}} {{nobold|{{Code|czy_niezakodowana{{=}}czy_nie_opis{{=}}true}}}}, według funkcji{{dk}}
* {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów,
; W przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja:
* {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami.
: Te funkcje są wywoływane wewnątrz funkcji: {{LinkŚródtytuł|p.SpreparowanyWikikodStrony}}. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Zmienna obiektowa.
| 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Strona o nazwie modułu do rozwinięcia i zakodowania.
| 3 = {{Code|inkludowana}} {{LinkPatrz|inkludowana}} | _3 = Zmienna, czy strona ma być interpretowana jako inkludowana.
| 4 = Zmienne funkcyjne: | nagłówek4 = tak
| 5 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _5 = Funkcja generująca zawartość, może być zmodyfikowana, na podstawie pełnej nazwy strony, używana w funkcji: jest to {{Code|__FUNKCJA3}} w: {{Code|{{sr|#FunkcjaIterajacaRozwijanegoSzablonu|p=Szablonowe}}}} {{Patrz|__FUNKCJA-FunkcjaIterajacaRozwijanegoSzablonu}}.
| 6 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _6 = Funkcja do generowania zawartości, może być zmodyfikowana, według podanej jej wartości, używana w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|FUNKCJA2-KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, w postaci zmodyfikowanej, czyli w wersji: {{Code|__FUNKCJA2}},
| 7 = Inne zmienne funkcyjne: | nagłówek7 = tak
| 8 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _8 = Inne operacje wykonywane na pobranym tekście.
| 9 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _9 = Funkcja użyta do generowania tablicy bazy kodów.
}}
Funkcje {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}}, zostały już opisane w tym module, więc wystarczy opisać inne.
{{Hr}}
* Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|pelna_nazwa_szablonu}} | _1 = Pełna nazwa szablonu.
| 2 = {{Code|tabela_parametrow_szablonu}} | _2 = Tabela parametrów wywołania szablonu do rozwinięcia.
| 3 = {{Code|tabela_modyfikatorow}} | _3 = Tabela modyfikatorów danego wywołania szablonowego.
}}
{{Hr}}
* Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} | _1 = Zawartość elementu wikikodu według {{Code|{{m|Szablonowe}}}}.
| 2 = {{Code|obiekt}} | _2 = Nazwa obiektu szablonowego, jak: {{Code|SZABLON}}.
| 3 = {{Code|kod}} | _3 = Numer obiektu.
| 4 = {{Code|tekst}} | _4 = Tekst całego artykułu.
| 5 = {{Code|numer_szablonu}} | _5 = Tabela numerów dla różnych obiektów w jednej tabeli.
| 6 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _6 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 7 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _7 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
== {{Śródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}{{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}} ==
Funkcja służy dościągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}.
Posiada własną walidacje nazwy stron, czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów.
Funkcja odpowiednio operuje na znacznikach wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''', tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
* Zmienne obiektowe:
** {{Code|self}} {{Patrz|self}} - zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
*** {{Code|p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);}}, gdzie {{Code|p}} - to odpowiednia zmienna.
* Zwykłe zmienne:
** {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} - nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć,
** {{Code|nazwa_strony2}} {{Patrz|nazwa_strony2}} - uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej,
** {{Code|czy_noinclude}} {{Patrz|czy_noinclude}} - jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka,
* Zmienna tablicowa:
** {{Code|szablony_magiczne}} {{Patrz|szablony_magiczne}} - tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej,
* Inne zmienne
** {{Code|dokumentacja}} {{Patrz|dokumentacja}} - określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}},
** {{Code|czy_szablon}} {{Patrz|czy_szablon}} - gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją,
** {{Code|nazwa_modulu_szablonu_opisu}} {{Patrz|nazwa_modulu_szablonu_opisu}} - zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami '''{{lpg|HTML}}''' na znaki,
** {{Code|szablon_nie_opis}} {{Patrz|szablon_nie_opis}} - zmienna wskazująca, czy {{Code|nazwa strony}} {{LinkPatrz|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowwany,uzywany wraz ze zmienną: {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}},
* Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} - operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}},
** {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} - funkcja operującana komentarzy, przeciwnie jest używana funkcja: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}},
** {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} - funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów,
** {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} - funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_analizy_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}}, operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} - tekst do analizy, jak w funkcji nadrzędnej,
* {{Code|nazwa_modulu_szablonu_opisu}} {{LinkPatrz|nazwa_modulu_szablonu_opisu}} - nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}},
* {{Code|nazwa_strony_bez_kodow_html}} {{Patrz|nazwa_strony_bez_kodow_html}} - jest to nazwa strony: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, tylko z kodami '''{{lpg|HTML}}''' zamienionymi na ich odpowiedniki znakowe,
* {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}} - tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej,
* {{Code|tabela_nazw}} {{Patrz|tabela_nazw}} - tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, wewnątrz tej funkcji nadrzędnej.
{{Hr}}
Funkcja: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}, ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę: {{Code|tablica}}, w funkcji zwracanej przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod metatabelki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} {{Patrz|__metatablica}}, to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Ten rozdział zawiera kolejność wywołań poszczególnych kroków w funkcji.
==== Poprawność pewnych nazw ====
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]|p=Html}}}}, która z: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}}.
==== Parametry uzyskanej strony ====
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}} {{Patrz|uchwyt strony}}, {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} i {{Code|czy_istnieje}} {{Patrz|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów.
==== Składniki preprocesora kodu mechanizmu: {{nobold|{{NS|l=tak|k=mw|w=tak}}}} ====
* Gdy {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli: {{Code|czy_noinclude}} {{LinkPatrz|czy_noinclude}}, przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie. Ze strony są usuwane pozostałości ze znaczników wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''' i znaczników jak {{Tag|templatedata}},
* Przeciwna wypadek: wtedy: {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}}, jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione.
==== Komentarze ====
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}.
===== Usuwanie pseudoszablonówi niektporych instrukcji warunkowych =====
* Ustawiane są zmienne w: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}} {{LinkPatrz|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}} {{Patrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}, by usunąc różne instrukcje warunkowe.
==== Specjalne elementy zmieniające wikikod ====
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
==== Kodowanie bazy danych kodów {{nobold|{{Code|{{m|Szablonowe}}}}}} ====
* Jeśli: {{Code|szablon_nie_opis}} {{LinkPatrz|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
jzz70qrdtesqiouplj9ku54zz8lslbn
558283
558282
2026-10-02T12:32:23Z
Persino
2851
/* {{Śródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}{{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}} */
558283
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|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.SpreparowanyWikikodStrony}}{{Code|p.SpreparowanyWikikodStrony}} ==
Funkcja sciagące opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Funkcja w opisach szablonów, a w niej instrukcje warunkowe podczas kodowania są rozwijane przy pomocy funkcji: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}}, a normalnie, gdy wewnątrz instrukcji warunkowych nie ma klamerek w funkcji, w składowej funkcji, tzn.: {{LinkPatrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja korzysta bezpośrednio z funkcji: {{LinkŚródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana.
| 2 = {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} | _2 = Nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw.
| 3 = {{Code|nazwa_modulu_szablonowa}} {{Patrz|nazwa_modulu_szablonowa}} | _3 = Nazwa modułu w wersji szablonowej, w wersji wywołaniowej.
| 4 = {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} | _4 = Przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony.
| 5 = {{Code|inkludowana}} {{Patrz|inkludowana}} | _5 = Przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej.
| 6 = Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem: | nagłówek6 = tak
| 7 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-SpreparowanyWikikodStrony}} | _7 = Funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, po kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku.
| 8 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-SpreparowanyWikikodStrony}} | _8 = Jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować.
| 9 = {{Code|__FUNKCJA3}} {{Patrz|__FUNKCJA3-SpreparowanyWikikodStrony}} | _9 = Funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}}.
| 10 = Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]|p=Szablonowe}}}} {{Patrz|UstalanieNazwyWywołania}}:| komórka10 = tak
| 11 = {{Code|__FUNKCJA4}} {{Patrz|__FUNKCJA4-SpreparowanyWikikodStrony}} | _11 = Funkcja, np. dekodująca nazwę szablonu.
| 12 = {{Code|__FUNKCJA5}} {{Patrz|__FUNKCJA5-SpreparowanyWikikodStrony}} | _12 = Funkcja, np. rozwijająca nazwę szablonu.
| 13 = Inne: | nagłówek13 = tak
| 14 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _14 = Funkcja do modyfikacji tekstu pobranego ze strony
| 15 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _15 = Funkcje do generowania tablicy bazy kodów.
}}
Definicje funkcji: {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-UstalanieNazwyWywołania}} i {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-UstalanieNazwyWywołania}}, które są potrzebne do konstrukcji wywołania funkcji: {{LinkPatrz|UstalanieNazwyWywołania}}, uzyskiwania nazwy szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} i {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}}, definicje tych funkcji:
* {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Tablica danych bazy kodów zakodowanego tekstu.
| 5 = {{Code|dokumentacja}} | _5 = Jak w: {{LinkPatrz|dokumentacja}}.
| 6 = {{Code|czy_nie_opis}} | _6 = Czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu_caly}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} {{LinkPatrz|__FUNKCJA3-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu,nazwa_modulu_szablonowa)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_modulu}} | _1 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 2 = {{Code|nazwa_modulu_szablonowa}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory,czy_z_kluczem]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} | _1 = Nazwa szablonu do rozwinięcia.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}}. | _5 = Tabela parametrów potrzebna do szybszego działania '''{{ld|StronicowyParser|Stronicowego parsera}}'''.
| 6 = Gdy tą funkcją jest: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}}, ta zmienna bezpośrednio w: {{Code|__FUNKCJA4}}, nie występuje, ale za to występuje w tej podanej szczególnej przykładowej funkcji: | komórka6 = tak
| 7 = {{Code|czy_uwzgledniac_modyfikatory}} | _7 = Czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}}.
| 8 = {{Code|czy_z_kluczem}} | _8 = Czy klucze, o wzorze: {{Code|klucz}}, lub {{Code|klucz[1-9]%d*}}.
}}
Jeżeli w funkcji {{LinkPatrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}} nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}} w przeciwnym wypadku zwracane jest nazwa szablonu i wartość {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} | _1 = Nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}.
| 2 = {{Code|tabela_modyfikatorow}} | _2 = Tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, to jest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}}, w przypadku: {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}.
| 3 = {{Code|nazwa_modulu}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 4 = {{Code|nazwa_modulu_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}, z korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, z której korzysta {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}, jeżeli z korzystanej tutaj funkcji zrzuciło to niepowodzenie, to pierwsza wartość zwrótcone to: {{Code|nil}}, druga: {{Code|false}}, w przeciwnym wypadku zwraca nazwę rozwiniętego szablonu i wartość: {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice:
; Przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy{{dk}} {{nobold|{{Code|czy_niezakodowana{{=}}czy_nie_opis{{=}}true}}}}, według funkcji{{dk}}
* {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów,
; W przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja:
* {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami.
: Te funkcje są wywoływane wewnątrz funkcji: {{LinkŚródtytuł|p.SpreparowanyWikikodStrony}}. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Zmienna obiektowa.
| 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Strona o nazwie modułu do rozwinięcia i zakodowania.
| 3 = {{Code|inkludowana}} {{LinkPatrz|inkludowana}} | _3 = Zmienna, czy strona ma być interpretowana jako inkludowana.
| 4 = Zmienne funkcyjne: | nagłówek4 = tak
| 5 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _5 = Funkcja generująca zawartość, może być zmodyfikowana, na podstawie pełnej nazwy strony, używana w funkcji: jest to {{Code|__FUNKCJA3}} w: {{Code|{{sr|#FunkcjaIterajacaRozwijanegoSzablonu|p=Szablonowe}}}} {{Patrz|__FUNKCJA-FunkcjaIterajacaRozwijanegoSzablonu}}.
| 6 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _6 = Funkcja do generowania zawartości, może być zmodyfikowana, według podanej jej wartości, używana w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|FUNKCJA2-KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, w postaci zmodyfikowanej, czyli w wersji: {{Code|__FUNKCJA2}},
| 7 = Inne zmienne funkcyjne: | nagłówek7 = tak
| 8 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _8 = Inne operacje wykonywane na pobranym tekście.
| 9 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _9 = Funkcja użyta do generowania tablicy bazy kodów.
}}
Funkcje {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}}, zostały już opisane w tym module, więc wystarczy opisać inne.
{{Hr}}
* Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|pelna_nazwa_szablonu}} | _1 = Pełna nazwa szablonu.
| 2 = {{Code|tabela_parametrow_szablonu}} | _2 = Tabela parametrów wywołania szablonu do rozwinięcia.
| 3 = {{Code|tabela_modyfikatorow}} | _3 = Tabela modyfikatorów danego wywołania szablonowego.
}}
{{Hr}}
* Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} | _1 = Zawartość elementu wikikodu według {{Code|{{m|Szablonowe}}}}.
| 2 = {{Code|obiekt}} | _2 = Nazwa obiektu szablonowego, jak: {{Code|SZABLON}}.
| 3 = {{Code|kod}} | _3 = Numer obiektu.
| 4 = {{Code|tekst}} | _4 = Tekst całego artykułu.
| 5 = {{Code|numer_szablonu}} | _5 = Tabela numerów dla różnych obiektów w jednej tabeli.
| 6 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _6 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 7 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _7 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
== {{Śródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}{{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}} ==
Funkcja służy dościągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}.
Posiada własną walidacje nazwy stron, czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów.
Funkcja odpowiednio operuje na znacznikach wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''', tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
{{OpisParametrów
| 1 = Zmienne obiektowe: | komórka1 = tak
| 2 = {{Code|self}} {{Patrz|self}} | _2 = Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
*** {{Code|p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);}}, gdzie {{Code|p}} - to odpowiednia zmienna.
| 3 = Zwykłe zmienne: | komórka3 = tak
| 4 = {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} | _4 = Nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć.
| 5 = {{Code|nazwa_strony2}} {{Patrz|nazwa_strony2}} | _5 = Uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej.
| 6 = {{Code|czy_noinclude}} {{Patrz|czy_noinclude}} | _6 = Jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka.
| 7 = Zmienna tablicowa: | komórka7 = tak
| 8 = {{Code|szablony_magiczne}} {{Patrz|szablony_magiczne}} | _8 = Tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej.
| 9 = Inne zmienne: | komórka9 = tak
| 10 = {{Code|dokumentacja}} {{Patrz|dokumentacja}} | _10 = Określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}}.
| 11 = {{Code|czy_szablon}} {{Patrz|czy_szablon}} | _11 = Gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją.
| 12 = {{Code|nazwa_modulu_szablonu_opisu}} {{Patrz|nazwa_modulu_szablonu_opisu}} | _12 = Zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami '''{{lpg|HTML}}''' na znaki.
| 13 = {{Code|szablon_nie_opis}} {{Patrz|szablon_nie_opis}} | _13 = Zmienna wskazująca, czy {{Code|nazwa strony}} {{LinkPatrz|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowany, używany wraz ze zmienną: {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}}.
| 14 = Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:| komórka14 = tak
| 15 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} | _15 = Operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
| 16 = {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} | _16 = Funkcja operująca na komentarzach, przeciwnie jest używana funkcja: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}}.
| 17 = {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} | _17 = Funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów.
| 18 = {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} | _18 = Funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_analizy_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
}}
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}}, operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} | _1 = Tekst do analizy, jak w funkcji nadrzędnej.
| 2 = {{Code|nazwa_modulu_szablonu_opisu}} {{LinkPatrz|nazwa_modulu_szablonu_opisu}} | _2 = Nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}.
| 3 = {{Code|nazwa_strony_bez_kodow_html}} {{Patrz|nazwa_strony_bez_kodow_html}} | _3 = Jest to nazwa strony: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, tylko z kodami '''{{lpg|HTML}}''' zamienionymi na ich odpowiedniki znakowe.
| 4 = {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}} | _4 = Tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej.
| 5 = {{Code|tabela_nazw}} {{Patrz|tabela_nazw}} | _5 = Tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, wewnątrz tej funkcji nadrzędnej.
}}
{{Hr}}
Funkcja: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}, ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę: {{Code|tablica}}, w funkcji zwracanej przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod metatabelki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} {{Patrz|__metatablica}}, to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Ten rozdział zawiera kolejność wywołań poszczególnych kroków w funkcji.
==== Poprawność pewnych nazw ====
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]|p=Html}}}}, która z: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}}.
==== Parametry uzyskanej strony ====
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}} {{Patrz|uchwyt strony}}, {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} i {{Code|czy_istnieje}} {{Patrz|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów.
==== Składniki preprocesora kodu mechanizmu: {{nobold|{{NS|l=tak|k=mw|w=tak}}}} ====
* Gdy {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli: {{Code|czy_noinclude}} {{LinkPatrz|czy_noinclude}}, przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie. Ze strony są usuwane pozostałości ze znaczników wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''' i znaczników jak {{Tag|templatedata}},
* Przeciwna wypadek: wtedy: {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}}, jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione.
==== Komentarze ====
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}.
===== Usuwanie pseudoszablonówi niektporych instrukcji warunkowych =====
* Ustawiane są zmienne w: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}} {{LinkPatrz|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}} {{Patrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}, by usunąc różne instrukcje warunkowe.
==== Specjalne elementy zmieniające wikikod ====
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
==== Kodowanie bazy danych kodów {{nobold|{{Code|{{m|Szablonowe}}}}}} ====
* Jeśli: {{Code|szablon_nie_opis}} {{LinkPatrz|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
f6eoicmefjvg47ccqowgk7dovcrpht8
558284
558283
2026-10-02T12:40:31Z
Persino
2851
/* {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} */
558284
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|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.SpreparowanyWikikodStrony}}{{Code|p.SpreparowanyWikikodStrony}} ==
Funkcja sciagące opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Funkcja w opisach szablonów, a w niej instrukcje warunkowe podczas kodowania są rozwijane przy pomocy funkcji: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}}, a normalnie, gdy wewnątrz instrukcji warunkowych nie ma klamerek w funkcji, w składowej funkcji, tzn.: {{LinkPatrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja korzysta bezpośrednio z funkcji: {{LinkŚródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana.
| 2 = {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} | _2 = Nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw.
| 3 = {{Code|nazwa_modulu_szablonowa}} {{Patrz|nazwa_modulu_szablonowa}} | _3 = Nazwa modułu w wersji szablonowej, w wersji wywołaniowej.
| 4 = {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} | _4 = Przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony.
| 5 = {{Code|inkludowana}} {{Patrz|inkludowana}} | _5 = Przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej.
| 6 = Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem: | nagłówek6 = tak
| 7 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-SpreparowanyWikikodStrony}} | _7 = Funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, po kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku.
| 8 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-SpreparowanyWikikodStrony}} | _8 = Jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować.
| 9 = {{Code|__FUNKCJA3}} {{Patrz|__FUNKCJA3-SpreparowanyWikikodStrony}} | _9 = Funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}}.
| 10 = Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]|p=Szablonowe}}}} {{Patrz|UstalanieNazwyWywołania}}:| komórka10 = tak
| 11 = {{Code|__FUNKCJA4}} {{Patrz|__FUNKCJA4-SpreparowanyWikikodStrony}} | _11 = Funkcja, np. dekodująca nazwę szablonu.
| 12 = {{Code|__FUNKCJA5}} {{Patrz|__FUNKCJA5-SpreparowanyWikikodStrony}} | _12 = Funkcja, np. rozwijająca nazwę szablonu.
| 13 = Inne: | nagłówek13 = tak
| 14 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _14 = Funkcja do modyfikacji tekstu pobranego ze strony
| 15 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _15 = Funkcje do generowania tablicy bazy kodów.
}}
Definicje funkcji: {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-UstalanieNazwyWywołania}} i {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-UstalanieNazwyWywołania}}, które są potrzebne do konstrukcji wywołania funkcji: {{LinkPatrz|UstalanieNazwyWywołania}}, uzyskiwania nazwy szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} i {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}}, definicje tych funkcji:
* {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Tablica danych bazy kodów zakodowanego tekstu.
| 5 = {{Code|dokumentacja}} | _5 = Jak w: {{LinkPatrz|dokumentacja}}.
| 6 = {{Code|czy_nie_opis}} | _6 = Czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu_caly}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} {{LinkPatrz|__FUNKCJA3-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu,nazwa_modulu_szablonowa)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_modulu}} | _1 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 2 = {{Code|nazwa_modulu_szablonowa}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory,czy_z_kluczem]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} | _1 = Nazwa szablonu do rozwinięcia.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}}. | _5 = Tabela parametrów potrzebna do szybszego działania '''{{ld|StronicowyParser|Stronicowego parsera}}'''.
| 6 = Gdy tą funkcją jest: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}}, ta zmienna bezpośrednio w: {{Code|__FUNKCJA4}}, nie występuje, ale za to występuje w tej podanej szczególnej przykładowej funkcji: | komórka6 = tak
| 7 = {{Code|czy_uwzgledniac_modyfikatory}} | _7 = Czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}}.
| 8 = {{Code|czy_z_kluczem}} | _8 = Czy klucze, o wzorze: {{Code|klucz}}, lub {{Code|klucz[1-9]%d*}}.
}}
Jeżeli w funkcji {{LinkPatrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}} nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}} w przeciwnym wypadku zwracane jest nazwa szablonu i wartość {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} | _1 = Nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}.
| 2 = {{Code|tabela_modyfikatorow}} | _2 = Tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, to jest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}}, w przypadku: {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}.
| 3 = {{Code|nazwa_modulu}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 4 = {{Code|nazwa_modulu_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}, z korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, z której korzysta {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}, jeżeli z korzystanej tutaj funkcji zrzuciło to niepowodzenie, to pierwsza wartość zwrótcone to: {{Code|nil}}, druga: {{Code|false}}, w przeciwnym wypadku zwraca nazwę rozwiniętego szablonu i wartość: {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice:
; Przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy{{dk}} {{nobold|{{Code|czy_niezakodowana{{=}}czy_nie_opis{{=}}true}}}}, według funkcji{{dk}}
* {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów,
; W przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja:
* {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami.
: Te funkcje są wywoływane wewnątrz funkcji: {{LinkŚródtytuł|p.SpreparowanyWikikodStrony}}. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Zmienna obiektowa.
| 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Strona, a jednocześnie uchwyt do bazy danych kodów zakodowanego tekstu, o nazwie modułu do rozwinięcia i zakodowania.
| 3 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} | _3 = Nazwa strony szablonowa, w postaci wywołaniowej szablonów.
| 4 = {{Code|inkludowana}} {{LinkPatrz|inkludowana}} | _4 = Zmienna, czy strona ma być interpretowana jako inkludowana.
| 5 = Zmienne funkcyjne: | nagłówek5 = tak
| 6 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _6 = Funkcja generująca zawartość, może być zmodyfikowana, na podstawie pełnej nazwy strony, używana w funkcji: jest to {{Code|__FUNKCJA3}} w: {{Code|{{sr|#FunkcjaIterajacaRozwijanegoSzablonu|p=Szablonowe}}}} {{Patrz|__FUNKCJA-FunkcjaIterajacaRozwijanegoSzablonu}}.
| 7 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _7 = Funkcja do generowania zawartości, może być zmodyfikowana, według podanej jej wartości, używana w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|FUNKCJA2-KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, w postaci zmodyfikowanej, czyli w wersji: {{Code|__FUNKCJA2}},
| 8 = Inne zmienne funkcyjne: | nagłówek8 = tak
| 9 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _9 = Inne operacje wykonywane na pobranym tekście.
| 10 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _10 = Funkcja użyta do generowania tablicy bazy kodów.
}}
Funkcje {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}}, zostały już opisane w tym module, więc wystarczy opisać inne.
{{Hr}}
* Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|pelna_nazwa_szablonu}} | _1 = Pełna nazwa szablonu.
| 2 = {{Code|tabela_parametrow_szablonu}} | _2 = Tabela parametrów wywołania szablonu do rozwinięcia.
| 3 = {{Code|tabela_modyfikatorow}} | _3 = Tabela modyfikatorów danego wywołania szablonowego.
}}
{{Hr}}
* Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} | _1 = Zawartość elementu wikikodu według {{Code|{{m|Szablonowe}}}}.
| 2 = {{Code|obiekt}} | _2 = Nazwa obiektu szablonowego, jak: {{Code|SZABLON}}.
| 3 = {{Code|kod}} | _3 = Numer obiektu.
| 4 = {{Code|tekst}} | _4 = Tekst całego artykułu.
| 5 = {{Code|numer_szablonu}} | _5 = Tabela numerów dla różnych obiektów w jednej tabeli.
| 6 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _6 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 7 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _7 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
== {{Śródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}{{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}} ==
Funkcja służy dościągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}.
Posiada własną walidacje nazwy stron, czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów.
Funkcja odpowiednio operuje na znacznikach wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''', tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
{{OpisParametrów
| 1 = Zmienne obiektowe: | komórka1 = tak
| 2 = {{Code|self}} {{Patrz|self}} | _2 = Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
*** {{Code|p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);}}, gdzie {{Code|p}} - to odpowiednia zmienna.
| 3 = Zwykłe zmienne: | komórka3 = tak
| 4 = {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} | _4 = Nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć.
| 5 = {{Code|nazwa_strony2}} {{Patrz|nazwa_strony2}} | _5 = Uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej.
| 6 = {{Code|czy_noinclude}} {{Patrz|czy_noinclude}} | _6 = Jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka.
| 7 = Zmienna tablicowa: | komórka7 = tak
| 8 = {{Code|szablony_magiczne}} {{Patrz|szablony_magiczne}} | _8 = Tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej.
| 9 = Inne zmienne: | komórka9 = tak
| 10 = {{Code|dokumentacja}} {{Patrz|dokumentacja}} | _10 = Określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}}.
| 11 = {{Code|czy_szablon}} {{Patrz|czy_szablon}} | _11 = Gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją.
| 12 = {{Code|nazwa_modulu_szablonu_opisu}} {{Patrz|nazwa_modulu_szablonu_opisu}} | _12 = Zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami '''{{lpg|HTML}}''' na znaki.
| 13 = {{Code|szablon_nie_opis}} {{Patrz|szablon_nie_opis}} | _13 = Zmienna wskazująca, czy {{Code|nazwa strony}} {{LinkPatrz|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowany, używany wraz ze zmienną: {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}}.
| 14 = Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:| komórka14 = tak
| 15 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} | _15 = Operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
| 16 = {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} | _16 = Funkcja operująca na komentarzach, przeciwnie jest używana funkcja: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}}.
| 17 = {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} | _17 = Funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów.
| 18 = {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} | _18 = Funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_analizy_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
}}
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}}, operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} | _1 = Tekst do analizy, jak w funkcji nadrzędnej.
| 2 = {{Code|nazwa_modulu_szablonu_opisu}} {{LinkPatrz|nazwa_modulu_szablonu_opisu}} | _2 = Nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}.
| 3 = {{Code|nazwa_strony_bez_kodow_html}} {{Patrz|nazwa_strony_bez_kodow_html}} | _3 = Jest to nazwa strony: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, tylko z kodami '''{{lpg|HTML}}''' zamienionymi na ich odpowiedniki znakowe.
| 4 = {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}} | _4 = Tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej.
| 5 = {{Code|tabela_nazw}} {{Patrz|tabela_nazw}} | _5 = Tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, wewnątrz tej funkcji nadrzędnej.
}}
{{Hr}}
Funkcja: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}, ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę: {{Code|tablica}}, w funkcji zwracanej przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod metatabelki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} {{Patrz|__metatablica}}, to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Ten rozdział zawiera kolejność wywołań poszczególnych kroków w funkcji.
==== Poprawność pewnych nazw ====
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]|p=Html}}}}, która z: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}}.
==== Parametry uzyskanej strony ====
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}} {{Patrz|uchwyt strony}}, {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} i {{Code|czy_istnieje}} {{Patrz|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów.
==== Składniki preprocesora kodu mechanizmu: {{nobold|{{NS|l=tak|k=mw|w=tak}}}} ====
* Gdy {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli: {{Code|czy_noinclude}} {{LinkPatrz|czy_noinclude}}, przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie. Ze strony są usuwane pozostałości ze znaczników wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''' i znaczników jak {{Tag|templatedata}},
* Przeciwna wypadek: wtedy: {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}}, jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione.
==== Komentarze ====
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}.
===== Usuwanie pseudoszablonówi niektporych instrukcji warunkowych =====
* Ustawiane są zmienne w: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}} {{LinkPatrz|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}} {{Patrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}, by usunąc różne instrukcje warunkowe.
==== Specjalne elementy zmieniające wikikod ====
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
==== Kodowanie bazy danych kodów {{nobold|{{Code|{{m|Szablonowe}}}}}} ====
* Jeśli: {{Code|szablon_nie_opis}} {{LinkPatrz|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
9dmcnbcpy1qvkk46vygnjk14cn8egv3
558285
558284
2026-10-02T12:41:01Z
Persino
2851
/* {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} */
558285
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|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.SpreparowanyWikikodStrony}}{{Code|p.SpreparowanyWikikodStrony}} ==
Funkcja sciagące opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Funkcja w opisach szablonów, a w niej instrukcje warunkowe podczas kodowania są rozwijane przy pomocy funkcji: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}}, a normalnie, gdy wewnątrz instrukcji warunkowych nie ma klamerek w funkcji, w składowej funkcji, tzn.: {{LinkPatrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja korzysta bezpośrednio z funkcji: {{LinkŚródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana.
| 2 = {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} | _2 = Nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw.
| 3 = {{Code|nazwa_modulu_szablonowa}} {{Patrz|nazwa_modulu_szablonowa}} | _3 = Nazwa modułu w wersji szablonowej, w wersji wywołaniowej.
| 4 = {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} | _4 = Przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony.
| 5 = {{Code|inkludowana}} {{Patrz|inkludowana}} | _5 = Przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej.
| 6 = Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem: | nagłówek6 = tak
| 7 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-SpreparowanyWikikodStrony}} | _7 = Funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, po kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku.
| 8 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-SpreparowanyWikikodStrony}} | _8 = Jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować.
| 9 = {{Code|__FUNKCJA3}} {{Patrz|__FUNKCJA3-SpreparowanyWikikodStrony}} | _9 = Funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}}.
| 10 = Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]|p=Szablonowe}}}} {{Patrz|UstalanieNazwyWywołania}}:| komórka10 = tak
| 11 = {{Code|__FUNKCJA4}} {{Patrz|__FUNKCJA4-SpreparowanyWikikodStrony}} | _11 = Funkcja, np. dekodująca nazwę szablonu.
| 12 = {{Code|__FUNKCJA5}} {{Patrz|__FUNKCJA5-SpreparowanyWikikodStrony}} | _12 = Funkcja, np. rozwijająca nazwę szablonu.
| 13 = Inne: | nagłówek13 = tak
| 14 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _14 = Funkcja do modyfikacji tekstu pobranego ze strony
| 15 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _15 = Funkcje do generowania tablicy bazy kodów.
}}
Definicje funkcji: {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-UstalanieNazwyWywołania}} i {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-UstalanieNazwyWywołania}}, które są potrzebne do konstrukcji wywołania funkcji: {{LinkPatrz|UstalanieNazwyWywołania}}, uzyskiwania nazwy szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} i {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}}, definicje tych funkcji:
* {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Tablica danych bazy kodów zakodowanego tekstu.
| 5 = {{Code|dokumentacja}} | _5 = Jak w: {{LinkPatrz|dokumentacja}}.
| 6 = {{Code|czy_nie_opis}} | _6 = Czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu_caly}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} {{LinkPatrz|__FUNKCJA3-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu,nazwa_modulu_szablonowa)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_modulu}} | _1 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 2 = {{Code|nazwa_modulu_szablonowa}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory,czy_z_kluczem]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} | _1 = Nazwa szablonu do rozwinięcia.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}}. | _5 = Tabela parametrów potrzebna do szybszego działania '''{{ld|StronicowyParser|Stronicowego parsera}}'''.
| 6 = Gdy tą funkcją jest: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}}, ta zmienna bezpośrednio w: {{Code|__FUNKCJA4}}, nie występuje, ale za to występuje w tej podanej szczególnej przykładowej funkcji: | komórka6 = tak
| 7 = {{Code|czy_uwzgledniac_modyfikatory}} | _7 = Czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}}.
| 8 = {{Code|czy_z_kluczem}} | _8 = Czy klucze, o wzorze: {{Code|klucz}}, lub {{Code|klucz[1-9]%d*}}.
}}
Jeżeli w funkcji {{LinkPatrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}} nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}} w przeciwnym wypadku zwracane jest nazwa szablonu i wartość {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} | _1 = Nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}.
| 2 = {{Code|tabela_modyfikatorow}} | _2 = Tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, to jest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}}, w przypadku: {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}.
| 3 = {{Code|nazwa_modulu}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 4 = {{Code|nazwa_modulu_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}, z korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, z której korzysta {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}, jeżeli z korzystanej tutaj funkcji zrzuciło to niepowodzenie, to pierwsza wartość zwrótcone to: {{Code|nil}}, druga: {{Code|false}}, w przeciwnym wypadku zwraca nazwę rozwiniętego szablonu i wartość: {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice:
; Przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy{{dk}} {{nobold|{{Code|czy_niezakodowana{{=}}czy_nie_opis{{=}}true}}}}, według funkcji{{dk}}
* {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów,
; W przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja:
* {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami.
: Te funkcje są wywoływane wewnątrz funkcji: {{LinkŚródtytuł|p.SpreparowanyWikikodStrony}}. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Zmienna obiektowa.
| 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Strona, a jednocześnie uchwyt do bazy danych kodów zakodowanego tekstu, o nazwie modułu do rozwinięcia i zakodowania.
| 3 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _3 = Nazwa strony szablonowa, w postaci wywołaniowej szablonów.
| 4 = {{Code|inkludowana}} {{LinkPatrz|inkludowana}} | _4 = Zmienna, czy strona ma być interpretowana jako inkludowana.
| 5 = Zmienne funkcyjne: | nagłówek5 = tak
| 6 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _6 = Funkcja generująca zawartość, może być zmodyfikowana, na podstawie pełnej nazwy strony, używana w funkcji: jest to {{Code|__FUNKCJA3}} w: {{Code|{{sr|#FunkcjaIterajacaRozwijanegoSzablonu|p=Szablonowe}}}} {{Patrz|__FUNKCJA-FunkcjaIterajacaRozwijanegoSzablonu}}.
| 7 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _7 = Funkcja do generowania zawartości, może być zmodyfikowana, według podanej jej wartości, używana w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|FUNKCJA2-KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, w postaci zmodyfikowanej, czyli w wersji: {{Code|__FUNKCJA2}},
| 8 = Inne zmienne funkcyjne: | nagłówek8 = tak
| 9 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _9 = Inne operacje wykonywane na pobranym tekście.
| 10 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _10 = Funkcja użyta do generowania tablicy bazy kodów.
}}
Funkcje {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}}, zostały już opisane w tym module, więc wystarczy opisać inne.
{{Hr}}
* Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|pelna_nazwa_szablonu}} | _1 = Pełna nazwa szablonu.
| 2 = {{Code|tabela_parametrow_szablonu}} | _2 = Tabela parametrów wywołania szablonu do rozwinięcia.
| 3 = {{Code|tabela_modyfikatorow}} | _3 = Tabela modyfikatorów danego wywołania szablonowego.
}}
{{Hr}}
* Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} | _1 = Zawartość elementu wikikodu według {{Code|{{m|Szablonowe}}}}.
| 2 = {{Code|obiekt}} | _2 = Nazwa obiektu szablonowego, jak: {{Code|SZABLON}}.
| 3 = {{Code|kod}} | _3 = Numer obiektu.
| 4 = {{Code|tekst}} | _4 = Tekst całego artykułu.
| 5 = {{Code|numer_szablonu}} | _5 = Tabela numerów dla różnych obiektów w jednej tabeli.
| 6 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _6 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 7 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _7 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
== {{Śródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}{{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}} ==
Funkcja służy dościągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}.
Posiada własną walidacje nazwy stron, czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów.
Funkcja odpowiednio operuje na znacznikach wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''', tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
{{OpisParametrów
| 1 = Zmienne obiektowe: | komórka1 = tak
| 2 = {{Code|self}} {{Patrz|self}} | _2 = Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
*** {{Code|p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);}}, gdzie {{Code|p}} - to odpowiednia zmienna.
| 3 = Zwykłe zmienne: | komórka3 = tak
| 4 = {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} | _4 = Nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć.
| 5 = {{Code|nazwa_strony2}} {{Patrz|nazwa_strony2}} | _5 = Uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej.
| 6 = {{Code|czy_noinclude}} {{Patrz|czy_noinclude}} | _6 = Jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka.
| 7 = Zmienna tablicowa: | komórka7 = tak
| 8 = {{Code|szablony_magiczne}} {{Patrz|szablony_magiczne}} | _8 = Tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej.
| 9 = Inne zmienne: | komórka9 = tak
| 10 = {{Code|dokumentacja}} {{Patrz|dokumentacja}} | _10 = Określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}}.
| 11 = {{Code|czy_szablon}} {{Patrz|czy_szablon}} | _11 = Gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją.
| 12 = {{Code|nazwa_modulu_szablonu_opisu}} {{Patrz|nazwa_modulu_szablonu_opisu}} | _12 = Zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami '''{{lpg|HTML}}''' na znaki.
| 13 = {{Code|szablon_nie_opis}} {{Patrz|szablon_nie_opis}} | _13 = Zmienna wskazująca, czy {{Code|nazwa strony}} {{LinkPatrz|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowany, używany wraz ze zmienną: {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}}.
| 14 = Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:| komórka14 = tak
| 15 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} | _15 = Operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
| 16 = {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} | _16 = Funkcja operująca na komentarzach, przeciwnie jest używana funkcja: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}}.
| 17 = {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} | _17 = Funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów.
| 18 = {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} | _18 = Funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_analizy_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
}}
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}}, operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} | _1 = Tekst do analizy, jak w funkcji nadrzędnej.
| 2 = {{Code|nazwa_modulu_szablonu_opisu}} {{LinkPatrz|nazwa_modulu_szablonu_opisu}} | _2 = Nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}.
| 3 = {{Code|nazwa_strony_bez_kodow_html}} {{Patrz|nazwa_strony_bez_kodow_html}} | _3 = Jest to nazwa strony: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, tylko z kodami '''{{lpg|HTML}}''' zamienionymi na ich odpowiedniki znakowe.
| 4 = {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}} | _4 = Tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej.
| 5 = {{Code|tabela_nazw}} {{Patrz|tabela_nazw}} | _5 = Tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, wewnątrz tej funkcji nadrzędnej.
}}
{{Hr}}
Funkcja: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}, ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę: {{Code|tablica}}, w funkcji zwracanej przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod metatabelki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} {{Patrz|__metatablica}}, to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Ten rozdział zawiera kolejność wywołań poszczególnych kroków w funkcji.
==== Poprawność pewnych nazw ====
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]|p=Html}}}}, która z: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}}.
==== Parametry uzyskanej strony ====
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}} {{Patrz|uchwyt strony}}, {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} i {{Code|czy_istnieje}} {{Patrz|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów.
==== Składniki preprocesora kodu mechanizmu: {{nobold|{{NS|l=tak|k=mw|w=tak}}}} ====
* Gdy {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli: {{Code|czy_noinclude}} {{LinkPatrz|czy_noinclude}}, przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie. Ze strony są usuwane pozostałości ze znaczników wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''' i znaczników jak {{Tag|templatedata}},
* Przeciwna wypadek: wtedy: {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}}, jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione.
==== Komentarze ====
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}.
===== Usuwanie pseudoszablonówi niektporych instrukcji warunkowych =====
* Ustawiane są zmienne w: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}} {{LinkPatrz|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}} {{Patrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}, by usunąc różne instrukcje warunkowe.
==== Specjalne elementy zmieniające wikikod ====
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
==== Kodowanie bazy danych kodów {{nobold|{{Code|{{m|Szablonowe}}}}}} ====
* Jeśli: {{Code|szablon_nie_opis}} {{LinkPatrz|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
ngjfqwg17v21jlpe0dahk0dqryyw7a5
558286
558285
2026-10-02T12:43:24Z
Persino
2851
/* {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} */
558286
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|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.SpreparowanyWikikodStrony}}{{Code|p.SpreparowanyWikikodStrony}} ==
Funkcja sciagące opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Funkcja w opisach szablonów, a w niej instrukcje warunkowe podczas kodowania są rozwijane przy pomocy funkcji: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}}, a normalnie, gdy wewnątrz instrukcji warunkowych nie ma klamerek w funkcji, w składowej funkcji, tzn.: {{LinkPatrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja korzysta bezpośrednio z funkcji: {{LinkŚródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana.
| 2 = {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} | _2 = Nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw.
| 3 = {{Code|nazwa_modulu_szablonowa}} {{Patrz|nazwa_modulu_szablonowa}} | _3 = Nazwa modułu w wersji szablonowej, w wersji wywołaniowej.
| 4 = {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} | _4 = Przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony.
| 5 = {{Code|inkludowana}} {{Patrz|inkludowana}} | _5 = Przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej.
| 6 = Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem: | nagłówek6 = tak
| 7 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-SpreparowanyWikikodStrony}} | _7 = Funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, po kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku.
| 8 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-SpreparowanyWikikodStrony}} | _8 = Jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować.
| 9 = {{Code|__FUNKCJA3}} {{Patrz|__FUNKCJA3-SpreparowanyWikikodStrony}} | _9 = Funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}}.
| 10 = Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]|p=Szablonowe}}}} {{Patrz|UstalanieNazwyWywołania}}:| komórka10 = tak
| 11 = {{Code|__FUNKCJA4}} {{Patrz|__FUNKCJA4-SpreparowanyWikikodStrony}} | _11 = Funkcja, np. dekodująca nazwę szablonu.
| 12 = {{Code|__FUNKCJA5}} {{Patrz|__FUNKCJA5-SpreparowanyWikikodStrony}} | _12 = Funkcja, np. rozwijająca nazwę szablonu.
| 13 = Inne: | nagłówek13 = tak
| 14 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _14 = Funkcja do modyfikacji tekstu pobranego ze strony
| 15 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _15 = Funkcje do generowania tablicy bazy kodów.
}}
Definicje funkcji: {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-UstalanieNazwyWywołania}} i {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-UstalanieNazwyWywołania}}, które są potrzebne do konstrukcji wywołania funkcji: {{LinkPatrz|UstalanieNazwyWywołania}}, uzyskiwania nazwy szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} i {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}}, definicje tych funkcji:
* {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Tablica danych bazy kodów zakodowanego tekstu.
| 5 = {{Code|dokumentacja}} | _5 = Jak w: {{LinkPatrz|dokumentacja}}.
| 6 = {{Code|czy_nie_opis}} | _6 = Czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu_caly}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} {{LinkPatrz|__FUNKCJA3-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu,nazwa_modulu_szablonowa)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_modulu}} | _1 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 2 = {{Code|nazwa_modulu_szablonowa}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory,czy_z_kluczem]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} | _1 = Nazwa szablonu do rozwinięcia.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}}. | _5 = Tabela parametrów potrzebna do szybszego działania '''{{ld|StronicowyParser|Stronicowego parsera}}'''.
| 6 = Gdy tą funkcją jest: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}}, ta zmienna bezpośrednio w: {{Code|__FUNKCJA4}}, nie występuje, ale za to występuje w tej podanej szczególnej przykładowej funkcji: | komórka6 = tak
| 7 = {{Code|czy_uwzgledniac_modyfikatory}} | _7 = Czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}}.
| 8 = {{Code|czy_z_kluczem}} | _8 = Czy klucze, o wzorze: {{Code|klucz}}, lub {{Code|klucz[1-9]%d*}}.
}}
Jeżeli w funkcji {{LinkPatrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}} nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}} w przeciwnym wypadku zwracane jest nazwa szablonu i wartość {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} | _1 = Nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}.
| 2 = {{Code|tabela_modyfikatorow}} | _2 = Tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, to jest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}}, w przypadku: {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}.
| 3 = {{Code|nazwa_modulu}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 4 = {{Code|nazwa_modulu_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}, z korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, z której korzysta {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}, jeżeli z korzystanej tutaj funkcji zrzuciło to niepowodzenie, to pierwsza wartość zwrótcone to: {{Code|nil}}, druga: {{Code|false}}, w przeciwnym wypadku zwraca nazwę rozwiniętego szablonu i wartość: {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice:
; Przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy{{dk}} {{nobold|{{Code|czy_niezakodowana{{=}}czy_nie_opis{{=}}true}}}}, według funkcji{{dk}}
* {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów,
; W przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja:
* {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami.
: Te funkcje są wywoływane wewnątrz funkcji: {{LinkŚródtytuł|p.SpreparowanyWikikodStrony}}. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Zmienna obiektowa.
| 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Strona, a jednocześnie uchwyt do bazy danych kodów zakodowanego tekstu, o nazwie modułu do rozwinięcia i zakodowania.
| 3 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _3 = Nazwa strony szablonowa, w postaci wywołaniowej szablonów.
| 4 = {{Code|inkludowana}} {{LinkPatrz|inkludowana}} | _4 = Zmienna, czy strona ma być interpretowana jako inkludowana.
| 5 = Zmienne funkcyjne: | nagłówek5 = tak
| 6 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _6 = Funkcja generująca zawartość, może być zmodyfikowana, na podstawie pełnej nazwy strony, używana w funkcji: jest to {{Code|__FUNKCJA3}} w: {{Code|{{sr|#FunkcjaIterajacaRozwijanegoSzablonu|p=Szablonowe}}}} {{Patrz|__FUNKCJA-FunkcjaIterajacaRozwijanegoSzablonu}}.
| 7 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _7 = Funkcja do generowania zawartości, może być zmodyfikowana, według podanej jej wartości, używana w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|FUNKCJA2-KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, w postaci zmodyfikowanej, czyli w wersji: {{Code|__FUNKCJA2}},
| 8 = Inne zmienne funkcyjne: | nagłówek8 = tak
| 9 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _9 = Inne operacje wykonywane na pobranym tekście.
| 10 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _10 = Funkcja użyta do generowania tablicy bazy kodów.
}}
Funkcje {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}}, zostały już opisane w tym module, więc wystarczy opisać inne.
{{Hr}}
* Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|pelna_nazwa_szablonu}} | _1 = Pełna nazwa szablonu.
| 2 = {{Code|tabela_parametrow_szablonu}} | _2 = Tabela parametrów wywołania szablonu do rozwinięcia.
| 3 = {{Code|tabela_modyfikatorow}} | _3 = Tabela modyfikatorów danego wywołania szablonowego.
}}
{{Hr}}
* Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} | _1 = Zawartość elementu wikikodu według {{Code|{{m|Szablonowe}}}}.
| 2 = {{Code|obiekt}} | _2 = Nazwa obiektu szablonowego, jak: {{Code|SZABLON}}.
| 3 = {{Code|kod}} | _3 = Numer obiektu.
| 4 = {{Code|tekst}} | _4 = Tekst całego artykułu.
| 5 = {{Code|numer_szablonu}} | _5 = Tabela numerów dla różnych obiektów w jednej tabeli.
| 6 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _6 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 7 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _7 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
== {{Śródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}{{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}} ==
Funkcja służy dościągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}.
Posiada własną walidacje nazwy stron, czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów.
Funkcja odpowiednio operuje na znacznikach wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''', tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
{{OpisParametrów
| 1 = Zmienne obiektowe: | komórka1 = tak
| 2 = {{Code|self}} {{Patrz|self}} | _2 = Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
*** {{Code|p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);}}, gdzie {{Code|p}} - to odpowiednia zmienna.
| 3 = Zwykłe zmienne: | komórka3 = tak
| 4 = {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} | _4 = Nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć.
| 5 = {{Code|nazwa_strony2}} {{Patrz|nazwa_strony2}} | _5 = Uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej.
| 6 = {{Code|czy_noinclude}} {{Patrz|czy_noinclude}} | _6 = Jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka.
| 7 = Zmienna tablicowa: | komórka7 = tak
| 8 = {{Code|szablony_magiczne}} {{Patrz|szablony_magiczne}} | _8 = Tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej.
| 9 = Inne zmienne: | komórka9 = tak
| 10 = {{Code|dokumentacja}} {{Patrz|dokumentacja}} | _10 = Określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}}.
| 11 = {{Code|czy_szablon}} {{Patrz|czy_szablon}} | _11 = Gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją.
| 12 = {{Code|nazwa_modulu_szablonu_opisu}} {{Patrz|nazwa_modulu_szablonu_opisu}} | _12 = Zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami '''{{lpg|HTML}}''' na znaki.
| 13 = {{Code|szablon_nie_opis}} {{Patrz|szablon_nie_opis}} | _13 = Zmienna wskazująca, czy {{Code|nazwa strony}} {{LinkPatrz|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowany, używany wraz ze zmienną: {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}}.
| 14 = Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:| komórka14 = tak
| 15 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} | _15 = Operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
| 16 = {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} | _16 = Funkcja operująca na komentarzach, przeciwnie jest używana funkcja: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}}.
| 17 = {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} | _17 = Funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów.
| 18 = {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} | _18 = Funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_analizy_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
}}
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}}, operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} | _1 = Tekst do analizy, jak w funkcji nadrzędnej.
| 2 = {{Code|nazwa_modulu_szablonu_opisu}} {{LinkPatrz|nazwa_modulu_szablonu_opisu}} | _2 = Nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}.
| 3 = {{Code|nazwa_strony_bez_kodow_html}} {{Patrz|nazwa_strony_bez_kodow_html}} | _3 = Jest to nazwa strony: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, tylko z kodami '''{{lpg|HTML}}''' zamienionymi na ich odpowiedniki znakowe.
| 4 = {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}} | _4 = Tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej.
| 5 = {{Code|tabela_nazw}} {{Patrz|tabela_nazw}} | _5 = Tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, wewnątrz tej funkcji nadrzędnej.
}}
{{Hr}}
Funkcja: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}, ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę: {{Code|tablica}}, w funkcji zwracanej przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod metatabelki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} {{Patrz|__metatablica}}, to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Ten rozdział zawiera kolejność wywołań poszczególnych kroków w funkcji.
==== Poprawność pewnych nazw ====
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]|p=Html}}}}, która z: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}}.
==== Parametry uzyskanej strony ====
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}} {{Patrz|uchwyt strony}}, {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} i {{Code|czy_istnieje}} {{Patrz|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów.
==== Składniki preprocesora kodu mechanizmu: {{nobold|{{NS|l=tak|k=mw|w=tak}}}} ====
* Gdy {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli: {{Code|czy_noinclude}} {{LinkPatrz|czy_noinclude}}, przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie. Ze strony są usuwane pozostałości ze znaczników wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''' i znaczników jak {{Tag|templatedata}},
* Przeciwna wypadek: wtedy: {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}}, jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione.
==== Komentarze ====
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}.
===== Usuwanie pseudoszablonówi niektporych instrukcji warunkowych =====
* Ustawiane są zmienne w: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}} {{LinkPatrz|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}} {{Patrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}, by usunąc różne instrukcje warunkowe.
==== Specjalne elementy zmieniające wikikod ====
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
==== Kodowanie bazy danych kodów {{nobold|{{Code|{{m|Szablonowe}}}}}} ====
* Jeśli: {{Code|szablon_nie_opis}} {{LinkPatrz|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
r5jqb83j0x4mgte66xfx14xnwb0tlmq
558287
558286
2026-10-02T12:47:12Z
Persino
2851
/* {{Śródtytuł|p.SpreparowanyWikikodStrony}}{{Code|p.SpreparowanyWikikodStrony}} */
558287
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|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.SpreparowanyWikikodStrony}}{{Code|p.SpreparowanyWikikodStrony}} ==
Funkcja sciagące opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Funkcja w opisach szablonów, a w niej instrukcje warunkowe podczas kodowania są rozwijane przy pomocy funkcji: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}}, a normalnie, gdy wewnątrz instrukcji warunkowych nie ma klamerek w funkcji, w składowej funkcji, tzn.: {{LinkPatrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja korzysta bezpośrednio z funkcji: {{LinkŚródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana.
| 2 = {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} | _2 = Nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw.
| 3 = {{Code|nazwa_modulu_szablonowa}} {{Patrz|nazwa_modulu_szablonowa}} | _3 = Nazwa modułu w wersji szablonowej, w wersji wywołaniowej.
| 4 = {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} | _4 = Przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony.
| 5 = {{Code|inkludowana}} {{Patrz|inkludowana}} | _5 = Przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej.
| 6 = Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem: | nagłówek6 = tak
| 7 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-SpreparowanyWikikodStrony}} | _7 = Funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, po kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku.
| 8 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-SpreparowanyWikikodStrony}} | _8 = Jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować.
| 9 = {{Code|__FUNKCJA3}} {{Patrz|__FUNKCJA3-SpreparowanyWikikodStrony}} | _9 = Funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}}.
| 10 = Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]|p=Szablonowe}}}} {{Patrz|UstalanieNazwyWywołania}}:| komórka10 = tak
| 11 = {{Code|__FUNKCJA4}} {{Patrz|__FUNKCJA4-SpreparowanyWikikodStrony}} | _11 = Funkcja, np. dekodująca nazwę szablonu.
| 12 = {{Code|__FUNKCJA5}} {{Patrz|__FUNKCJA5-SpreparowanyWikikodStrony}} | _12 = Funkcja, np. rozwijająca nazwę szablonu.
| 13 = Inne: | nagłówek13 = tak
| 14 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _14 = Funkcja do modyfikacji tekstu pobranego ze strony
| 15 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _15 = Funkcje do generowania tablicy bazy kodów.
}}
Definicje funkcji: {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-UstalanieNazwyWywołania}} i {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-UstalanieNazwyWywołania}}, które są potrzebne do konstrukcji wywołania funkcji: {{LinkPatrz|UstalanieNazwyWywołania}}, uzyskiwania nazwy szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} i {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}}, definicje tych funkcji:
* {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Tablica danych bazy kodów zakodowanego tekstu.
| 5 = {{Code|dokumentacja}} | _5 = Jak w: {{LinkPatrz|dokumentacja}}.
| 6 = {{Code|czy_nie_opis}} | _6 = Czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu_caly}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} {{LinkPatrz|__FUNKCJA3-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu,nazwa_modulu_szablonowa)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_modulu}} | _1 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 2 = {{Code|nazwa_modulu_szablonowa}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory,czy_z_kluczem]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} | _1 = Nazwa szablonu do rozwinięcia.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}}. | _5 = Tabela parametrów potrzebna do szybszego działania '''{{ld|StronicowyParser|Stronicowego parsera}}'''.
| 6 = Gdy tą funkcją jest: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}}, ta zmienna bezpośrednio w: {{Code|__FUNKCJA4}}, nie występuje, ale za to występuje w tej podanej szczególnej przykładowej funkcji: | komórka6 = tak
| 7 = {{Code|czy_uwzgledniac_modyfikatory}} | _7 = Czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}}.
| 8 = {{Code|czy_z_kluczem}} | _8 = Czy klucze, o wzorze: {{Code|klucz}}, lub {{Code|klucz[1-9]%d*}}.
}}
Jeżeli w funkcji {{LinkPatrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}} nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}} w przeciwnym wypadku zwracane jest nazwa szablonu i wartość {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} | _1 = Nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}.
| 2 = {{Code|tabela_modyfikatorow}} | _2 = Tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, to jest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}}, w przypadku: {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}.
| 3 = {{Code|nazwa_modulu}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 4 = {{Code|nazwa_modulu_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{LzLua|frame:preprocess}}, w korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, z której korzysta {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}, jeżeli korzystanej tutaj funkcja zrzuciła niepowodzenie, to pierwsza wartość zwrótcone to: {{Code|nil}}, druga: {{Code|false}}, w przeciwnym wypadku zwraca nazwę rozwiniętego szablonu i drugą wartość zrzuconą: {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice:
; Przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy{{dk}} {{nobold|{{Code|czy_niezakodowana{{=}}czy_nie_opis{{=}}true}}}}, według funkcji{{dk}}
* {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów,
; W przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja:
* {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami.
: Te funkcje są wywoływane wewnątrz funkcji: {{LinkŚródtytuł|p.SpreparowanyWikikodStrony}}. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Zmienna obiektowa.
| 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Strona, a jednocześnie uchwyt do bazy danych kodów zakodowanego tekstu, o nazwie modułu do rozwinięcia i zakodowania.
| 3 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _3 = Nazwa strony szablonowa, w postaci wywołaniowej szablonów.
| 4 = {{Code|inkludowana}} {{LinkPatrz|inkludowana}} | _4 = Zmienna, czy strona ma być interpretowana jako inkludowana.
| 5 = Zmienne funkcyjne: | nagłówek5 = tak
| 6 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _6 = Funkcja generująca zawartość, może być zmodyfikowana, na podstawie pełnej nazwy strony, używana w funkcji: jest to {{Code|__FUNKCJA3}} w: {{Code|{{sr|#FunkcjaIterajacaRozwijanegoSzablonu|p=Szablonowe}}}} {{Patrz|__FUNKCJA-FunkcjaIterajacaRozwijanegoSzablonu}}.
| 7 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _7 = Funkcja do generowania zawartości, może być zmodyfikowana, według podanej jej wartości, używana w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|FUNKCJA2-KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, w postaci zmodyfikowanej, czyli w wersji: {{Code|__FUNKCJA2}},
| 8 = Inne zmienne funkcyjne: | nagłówek8 = tak
| 9 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _9 = Inne operacje wykonywane na pobranym tekście.
| 10 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _10 = Funkcja użyta do generowania tablicy bazy kodów.
}}
Funkcje {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}}, zostały już opisane w tym module, więc wystarczy opisać inne.
{{Hr}}
* Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|pelna_nazwa_szablonu}} | _1 = Pełna nazwa szablonu.
| 2 = {{Code|tabela_parametrow_szablonu}} | _2 = Tabela parametrów wywołania szablonu do rozwinięcia.
| 3 = {{Code|tabela_modyfikatorow}} | _3 = Tabela modyfikatorów danego wywołania szablonowego.
}}
{{Hr}}
* Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} | _1 = Zawartość elementu wikikodu według {{Code|{{m|Szablonowe}}}}.
| 2 = {{Code|obiekt}} | _2 = Nazwa obiektu szablonowego, jak: {{Code|SZABLON}}.
| 3 = {{Code|kod}} | _3 = Numer obiektu.
| 4 = {{Code|tekst}} | _4 = Tekst całego artykułu.
| 5 = {{Code|numer_szablonu}} | _5 = Tabela numerów dla różnych obiektów w jednej tabeli.
| 6 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _6 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 7 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _7 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
== {{Śródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}{{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}} ==
Funkcja służy dościągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}.
Posiada własną walidacje nazwy stron, czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów.
Funkcja odpowiednio operuje na znacznikach wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''', tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
{{OpisParametrów
| 1 = Zmienne obiektowe: | komórka1 = tak
| 2 = {{Code|self}} {{Patrz|self}} | _2 = Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
*** {{Code|p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);}}, gdzie {{Code|p}} - to odpowiednia zmienna.
| 3 = Zwykłe zmienne: | komórka3 = tak
| 4 = {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} | _4 = Nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć.
| 5 = {{Code|nazwa_strony2}} {{Patrz|nazwa_strony2}} | _5 = Uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej.
| 6 = {{Code|czy_noinclude}} {{Patrz|czy_noinclude}} | _6 = Jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka.
| 7 = Zmienna tablicowa: | komórka7 = tak
| 8 = {{Code|szablony_magiczne}} {{Patrz|szablony_magiczne}} | _8 = Tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej.
| 9 = Inne zmienne: | komórka9 = tak
| 10 = {{Code|dokumentacja}} {{Patrz|dokumentacja}} | _10 = Określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}}.
| 11 = {{Code|czy_szablon}} {{Patrz|czy_szablon}} | _11 = Gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją.
| 12 = {{Code|nazwa_modulu_szablonu_opisu}} {{Patrz|nazwa_modulu_szablonu_opisu}} | _12 = Zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami '''{{lpg|HTML}}''' na znaki.
| 13 = {{Code|szablon_nie_opis}} {{Patrz|szablon_nie_opis}} | _13 = Zmienna wskazująca, czy {{Code|nazwa strony}} {{LinkPatrz|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowany, używany wraz ze zmienną: {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}}.
| 14 = Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:| komórka14 = tak
| 15 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} | _15 = Operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
| 16 = {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} | _16 = Funkcja operująca na komentarzach, przeciwnie jest używana funkcja: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}}.
| 17 = {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} | _17 = Funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów.
| 18 = {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} | _18 = Funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_analizy_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
}}
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}}, operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} | _1 = Tekst do analizy, jak w funkcji nadrzędnej.
| 2 = {{Code|nazwa_modulu_szablonu_opisu}} {{LinkPatrz|nazwa_modulu_szablonu_opisu}} | _2 = Nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}.
| 3 = {{Code|nazwa_strony_bez_kodow_html}} {{Patrz|nazwa_strony_bez_kodow_html}} | _3 = Jest to nazwa strony: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, tylko z kodami '''{{lpg|HTML}}''' zamienionymi na ich odpowiedniki znakowe.
| 4 = {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}} | _4 = Tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej.
| 5 = {{Code|tabela_nazw}} {{Patrz|tabela_nazw}} | _5 = Tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, wewnątrz tej funkcji nadrzędnej.
}}
{{Hr}}
Funkcja: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}, ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę: {{Code|tablica}}, w funkcji zwracanej przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod metatabelki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} {{Patrz|__metatablica}}, to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Ten rozdział zawiera kolejność wywołań poszczególnych kroków w funkcji.
==== Poprawność pewnych nazw ====
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]|p=Html}}}}, która z: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}}.
==== Parametry uzyskanej strony ====
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}} {{Patrz|uchwyt strony}}, {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} i {{Code|czy_istnieje}} {{Patrz|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów.
==== Składniki preprocesora kodu mechanizmu: {{nobold|{{NS|l=tak|k=mw|w=tak}}}} ====
* Gdy {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli: {{Code|czy_noinclude}} {{LinkPatrz|czy_noinclude}}, przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie. Ze strony są usuwane pozostałości ze znaczników wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''' i znaczników jak {{Tag|templatedata}},
* Przeciwna wypadek: wtedy: {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}}, jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione.
==== Komentarze ====
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}.
===== Usuwanie pseudoszablonówi niektporych instrukcji warunkowych =====
* Ustawiane są zmienne w: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}} {{LinkPatrz|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}} {{Patrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}, by usunąc różne instrukcje warunkowe.
==== Specjalne elementy zmieniające wikikod ====
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
==== Kodowanie bazy danych kodów {{nobold|{{Code|{{m|Szablonowe}}}}}} ====
* Jeśli: {{Code|szablon_nie_opis}} {{LinkPatrz|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
5bmoxwznr0e4tw6uw53x3tbv1n5mw8j
558288
558287
2026-10-02T12:48:43Z
Persino
2851
/* {{Śródtytuł|p.SpreparowanyWikikodStrony}}{{Code|p.SpreparowanyWikikodStrony}} */
558288
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Funkcja sciagące opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Funkcja w opisach szablonów, a w niej instrukcje warunkowe podczas kodowania są rozwijane przy pomocy funkcji: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}}, a normalnie, gdy wewnątrz instrukcji warunkowych nie ma klamerek w funkcji, w składowej funkcji, tzn.: {{LinkPatrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja korzysta bezpośrednio z funkcji: {{LinkŚródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana.
| 2 = {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} | _2 = Nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw.
| 3 = {{Code|nazwa_modulu_szablonowa}} {{Patrz|nazwa_modulu_szablonowa}} | _3 = Nazwa modułu w wersji szablonowej, w wersji wywołaniowej.
| 4 = {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} | _4 = Przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony.
| 5 = {{Code|inkludowana}} {{Patrz|inkludowana}} | _5 = Przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej.
| 6 = Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem: | nagłówek6 = tak
| 7 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-SpreparowanyWikikodStrony}} | _7 = Funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, po kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku.
| 8 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-SpreparowanyWikikodStrony}} | _8 = Jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować.
| 9 = {{Code|__FUNKCJA3}} {{Patrz|__FUNKCJA3-SpreparowanyWikikodStrony}} | _9 = Funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}}.
| 10 = Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]|p=Szablonowe}}}} {{Patrz|UstalanieNazwyWywołania}}:| komórka10 = tak
| 11 = {{Code|__FUNKCJA4}} {{Patrz|__FUNKCJA4-SpreparowanyWikikodStrony}} | _11 = Funkcja, np. dekodująca nazwę szablonu.
| 12 = {{Code|__FUNKCJA5}} {{Patrz|__FUNKCJA5-SpreparowanyWikikodStrony}} | _12 = Funkcja, np. rozwijająca nazwę szablonu.
| 13 = Inne: | nagłówek13 = tak
| 14 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _14 = Funkcja do modyfikacji tekstu pobranego ze strony
| 15 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _15 = Funkcje do generowania tablicy bazy kodów.
}}
Definicje funkcji: {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-UstalanieNazwyWywołania}} i {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-UstalanieNazwyWywołania}}, które są potrzebne do konstrukcji wywołania funkcji: {{LinkPatrz|UstalanieNazwyWywołania}}, uzyskiwania nazwy szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} i {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}}, definicje tych funkcji:
* {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Tablica danych bazy kodów zakodowanego tekstu.
| 5 = {{Code|dokumentacja}} | _5 = Jak w: {{LinkPatrz|dokumentacja}}.
| 6 = {{Code|czy_nie_opis}} | _6 = Czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu_caly}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} {{LinkPatrz|__FUNKCJA3-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu,nazwa_modulu_szablonowa)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_modulu}} | _1 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 2 = {{Code|nazwa_modulu_szablonowa}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory,czy_z_kluczem]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} | _1 = Nazwa szablonu do rozwinięcia.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}}. | _5 = Tabela parametrów potrzebna do szybszego działania '''{{ld|StronicowyParser|Stronicowego parsera}}'''.
| 6 = Gdy tą funkcją jest: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}}, te zmienne bezpośrednio w: {{Code|__FUNKCJA4}}, nie występują, ale za to występują w tej podanej szczególnej przykładowej funkcji, tzn. argumenty: | komórka6 = tak
| 7 = {{Code|czy_uwzgledniac_modyfikatory}} | _7 = Czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}}.
| 8 = {{Code|czy_z_kluczem}} | _8 = Czy klucze, o wzorze: {{Code|klucz}}, lub {{Code|klucz[1-9]%d*}}.
}}
Jeżeli w funkcji {{LinkPatrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}} nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}} w przeciwnym wypadku zwracane jest nazwa szablonu i wartość {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} | _1 = Nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}.
| 2 = {{Code|tabela_modyfikatorow}} | _2 = Tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, to jest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}}, w przypadku: {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}.
| 3 = {{Code|nazwa_modulu}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 4 = {{Code|nazwa_modulu_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{LzLua|frame:preprocess}}, w korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, z której korzysta {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}, jeżeli korzystanej tutaj funkcja zrzuciła niepowodzenie, to pierwsza wartość zwrótcone to: {{Code|nil}}, druga: {{Code|false}}, w przeciwnym wypadku zwraca nazwę rozwiniętego szablonu i drugą wartość zrzuconą: {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice:
; Przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy{{dk}} {{nobold|{{Code|czy_niezakodowana{{=}}czy_nie_opis{{=}}true}}}}, według funkcji{{dk}}
* {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów,
; W przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja:
* {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami.
: Te funkcje są wywoływane wewnątrz funkcji: {{LinkŚródtytuł|p.SpreparowanyWikikodStrony}}. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Zmienna obiektowa.
| 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Strona, a jednocześnie uchwyt do bazy danych kodów zakodowanego tekstu, o nazwie modułu do rozwinięcia i zakodowania.
| 3 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _3 = Nazwa strony szablonowa, w postaci wywołaniowej szablonów.
| 4 = {{Code|inkludowana}} {{LinkPatrz|inkludowana}} | _4 = Zmienna, czy strona ma być interpretowana jako inkludowana.
| 5 = Zmienne funkcyjne: | nagłówek5 = tak
| 6 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _6 = Funkcja generująca zawartość, może być zmodyfikowana, na podstawie pełnej nazwy strony, używana w funkcji: jest to {{Code|__FUNKCJA3}} w: {{Code|{{sr|#FunkcjaIterajacaRozwijanegoSzablonu|p=Szablonowe}}}} {{Patrz|__FUNKCJA-FunkcjaIterajacaRozwijanegoSzablonu}}.
| 7 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _7 = Funkcja do generowania zawartości, może być zmodyfikowana, według podanej jej wartości, używana w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|FUNKCJA2-KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, w postaci zmodyfikowanej, czyli w wersji: {{Code|__FUNKCJA2}},
| 8 = Inne zmienne funkcyjne: | nagłówek8 = tak
| 9 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _9 = Inne operacje wykonywane na pobranym tekście.
| 10 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _10 = Funkcja użyta do generowania tablicy bazy kodów.
}}
Funkcje {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}}, zostały już opisane w tym module, więc wystarczy opisać inne.
{{Hr}}
* Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|pelna_nazwa_szablonu}} | _1 = Pełna nazwa szablonu.
| 2 = {{Code|tabela_parametrow_szablonu}} | _2 = Tabela parametrów wywołania szablonu do rozwinięcia.
| 3 = {{Code|tabela_modyfikatorow}} | _3 = Tabela modyfikatorów danego wywołania szablonowego.
}}
{{Hr}}
* Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} | _1 = Zawartość elementu wikikodu według {{Code|{{m|Szablonowe}}}}.
| 2 = {{Code|obiekt}} | _2 = Nazwa obiektu szablonowego, jak: {{Code|SZABLON}}.
| 3 = {{Code|kod}} | _3 = Numer obiektu.
| 4 = {{Code|tekst}} | _4 = Tekst całego artykułu.
| 5 = {{Code|numer_szablonu}} | _5 = Tabela numerów dla różnych obiektów w jednej tabeli.
| 6 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _6 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 7 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _7 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
== {{Śródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}{{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}} ==
Funkcja służy dościągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}.
Posiada własną walidacje nazwy stron, czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów.
Funkcja odpowiednio operuje na znacznikach wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''', tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
{{OpisParametrów
| 1 = Zmienne obiektowe: | komórka1 = tak
| 2 = {{Code|self}} {{Patrz|self}} | _2 = Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
*** {{Code|p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);}}, gdzie {{Code|p}} - to odpowiednia zmienna.
| 3 = Zwykłe zmienne: | komórka3 = tak
| 4 = {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} | _4 = Nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć.
| 5 = {{Code|nazwa_strony2}} {{Patrz|nazwa_strony2}} | _5 = Uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej.
| 6 = {{Code|czy_noinclude}} {{Patrz|czy_noinclude}} | _6 = Jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka.
| 7 = Zmienna tablicowa: | komórka7 = tak
| 8 = {{Code|szablony_magiczne}} {{Patrz|szablony_magiczne}} | _8 = Tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej.
| 9 = Inne zmienne: | komórka9 = tak
| 10 = {{Code|dokumentacja}} {{Patrz|dokumentacja}} | _10 = Określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}}.
| 11 = {{Code|czy_szablon}} {{Patrz|czy_szablon}} | _11 = Gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją.
| 12 = {{Code|nazwa_modulu_szablonu_opisu}} {{Patrz|nazwa_modulu_szablonu_opisu}} | _12 = Zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami '''{{lpg|HTML}}''' na znaki.
| 13 = {{Code|szablon_nie_opis}} {{Patrz|szablon_nie_opis}} | _13 = Zmienna wskazująca, czy {{Code|nazwa strony}} {{LinkPatrz|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowany, używany wraz ze zmienną: {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}}.
| 14 = Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:| komórka14 = tak
| 15 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} | _15 = Operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
| 16 = {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} | _16 = Funkcja operująca na komentarzach, przeciwnie jest używana funkcja: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}}.
| 17 = {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} | _17 = Funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów.
| 18 = {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} | _18 = Funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_analizy_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
}}
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}}, operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} | _1 = Tekst do analizy, jak w funkcji nadrzędnej.
| 2 = {{Code|nazwa_modulu_szablonu_opisu}} {{LinkPatrz|nazwa_modulu_szablonu_opisu}} | _2 = Nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}.
| 3 = {{Code|nazwa_strony_bez_kodow_html}} {{Patrz|nazwa_strony_bez_kodow_html}} | _3 = Jest to nazwa strony: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, tylko z kodami '''{{lpg|HTML}}''' zamienionymi na ich odpowiedniki znakowe.
| 4 = {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}} | _4 = Tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej.
| 5 = {{Code|tabela_nazw}} {{Patrz|tabela_nazw}} | _5 = Tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, wewnątrz tej funkcji nadrzędnej.
}}
{{Hr}}
Funkcja: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}, ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę: {{Code|tablica}}, w funkcji zwracanej przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod metatabelki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} {{Patrz|__metatablica}}, to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Ten rozdział zawiera kolejność wywołań poszczególnych kroków w funkcji.
==== Poprawność pewnych nazw ====
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]|p=Html}}}}, która z: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}}.
==== Parametry uzyskanej strony ====
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}} {{Patrz|uchwyt strony}}, {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} i {{Code|czy_istnieje}} {{Patrz|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów.
==== Składniki preprocesora kodu mechanizmu: {{nobold|{{NS|l=tak|k=mw|w=tak}}}} ====
* Gdy {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli: {{Code|czy_noinclude}} {{LinkPatrz|czy_noinclude}}, przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie. Ze strony są usuwane pozostałości ze znaczników wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''' i znaczników jak {{Tag|templatedata}},
* Przeciwna wypadek: wtedy: {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}}, jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione.
==== Komentarze ====
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}.
===== Usuwanie pseudoszablonówi niektporych instrukcji warunkowych =====
* Ustawiane są zmienne w: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}} {{LinkPatrz|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}} {{Patrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}, by usunąc różne instrukcje warunkowe.
==== Specjalne elementy zmieniające wikikod ====
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
==== Kodowanie bazy danych kodów {{nobold|{{Code|{{m|Szablonowe}}}}}} ====
* Jeśli: {{Code|szablon_nie_opis}} {{LinkPatrz|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
0ite36064d9lxn6xvysui2qe0zixx5e
558289
558288
2026-10-02T12:53:40Z
Persino
2851
/* {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} */
558289
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Funkcja sciagące opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Funkcja w opisach szablonów, a w niej instrukcje warunkowe podczas kodowania są rozwijane przy pomocy funkcji: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}}, a normalnie, gdy wewnątrz instrukcji warunkowych nie ma klamerek w funkcji, w składowej funkcji, tzn.: {{LinkPatrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja korzysta bezpośrednio z funkcji: {{LinkŚródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana.
| 2 = {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} | _2 = Nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw.
| 3 = {{Code|nazwa_modulu_szablonowa}} {{Patrz|nazwa_modulu_szablonowa}} | _3 = Nazwa modułu w wersji szablonowej, w wersji wywołaniowej.
| 4 = {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} | _4 = Przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony.
| 5 = {{Code|inkludowana}} {{Patrz|inkludowana}} | _5 = Przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej.
| 6 = Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem: | nagłówek6 = tak
| 7 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-SpreparowanyWikikodStrony}} | _7 = Funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, po kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku.
| 8 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-SpreparowanyWikikodStrony}} | _8 = Jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować.
| 9 = {{Code|__FUNKCJA3}} {{Patrz|__FUNKCJA3-SpreparowanyWikikodStrony}} | _9 = Funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}}.
| 10 = Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]|p=Szablonowe}}}} {{Patrz|UstalanieNazwyWywołania}}:| komórka10 = tak
| 11 = {{Code|__FUNKCJA4}} {{Patrz|__FUNKCJA4-SpreparowanyWikikodStrony}} | _11 = Funkcja, np. dekodująca nazwę szablonu.
| 12 = {{Code|__FUNKCJA5}} {{Patrz|__FUNKCJA5-SpreparowanyWikikodStrony}} | _12 = Funkcja, np. rozwijająca nazwę szablonu.
| 13 = Inne: | nagłówek13 = tak
| 14 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _14 = Funkcja do modyfikacji tekstu pobranego ze strony
| 15 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _15 = Funkcje do generowania tablicy bazy kodów.
}}
Definicje funkcji: {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-UstalanieNazwyWywołania}} i {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-UstalanieNazwyWywołania}}, które są potrzebne do konstrukcji wywołania funkcji: {{LinkPatrz|UstalanieNazwyWywołania}}, uzyskiwania nazwy szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} i {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}}, definicje tych funkcji:
* {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Tablica danych bazy kodów zakodowanego tekstu.
| 5 = {{Code|dokumentacja}} | _5 = Jak w: {{LinkPatrz|dokumentacja}}.
| 6 = {{Code|czy_nie_opis}} | _6 = Czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu_caly}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} {{LinkPatrz|__FUNKCJA3-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu,nazwa_modulu_szablonowa)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_modulu}} | _1 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 2 = {{Code|nazwa_modulu_szablonowa}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory,czy_z_kluczem]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} | _1 = Nazwa szablonu do rozwinięcia.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}}. | _5 = Tabela parametrów potrzebna do szybszego działania '''{{ld|StronicowyParser|Stronicowego parsera}}'''.
| 6 = Gdy tą funkcją jest: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}}, te zmienne bezpośrednio w: {{Code|__FUNKCJA4}}, nie występują, ale za to występują w tej podanej szczególnej przykładowej funkcji, tzn. argumenty: | komórka6 = tak
| 7 = {{Code|czy_uwzgledniac_modyfikatory}} | _7 = Czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}}.
| 8 = {{Code|czy_z_kluczem}} | _8 = Czy klucze, o wzorze: {{Code|klucz}}, lub {{Code|klucz[1-9]%d*}}.
}}
Jeżeli w funkcji {{LinkPatrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}} nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}} w przeciwnym wypadku zwracane jest nazwa szablonu i wartość {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} | _1 = Nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}.
| 2 = {{Code|tabela_modyfikatorow}} | _2 = Tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, to jest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}}, w przypadku: {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}.
| 3 = {{Code|nazwa_modulu}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 4 = {{Code|nazwa_modulu_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{LzLua|frame:preprocess}}, w korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, z której korzysta {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}, jeżeli korzystanej tutaj funkcja zrzuciła niepowodzenie, to pierwsza wartość zwrótcone to: {{Code|nil}}, druga: {{Code|false}}, w przeciwnym wypadku zwraca nazwę rozwiniętego szablonu i drugą wartość zrzuconą: {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice:
; Przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy{{dk}} {{nobold|{{Code|czy_niezakodowana{{=}}czy_nie_opis{{=}}true}}}}, według funkcji{{dk}}
* {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów,
; W przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja:
* {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami.
: Te funkcje są wywoływane wewnątrz funkcji: {{LinkŚródtytuł|p.SpreparowanyWikikodStrony}}. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Zmienna obiektowa.
| 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Strona, a jednocześnie uchwyt do bazy danych kodów zakodowanego tekstu, o nazwie modułu do rozwinięcia i zakodowania.
| 3 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _3 = Nazwa strony szablonowa, w postaci wywołaniowej szablonów.
| 4 = {{Code|inkludowana}} {{LinkPatrz|inkludowana}} | _4 = Zmienna, czy strona ma być interpretowana jako inkludowana.
| 5 = Zmienne funkcyjne: | nagłówek5 = tak
| 6 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _6 = Funkcja generująca zawartość, może być zmodyfikowana, na podstawie pełnej nazwy strony, używana w funkcji: jest to {{Code|__FUNKCJA3}} w: {{Code|{{sr|#FunkcjaIterajacaRozwijanegoSzablonu|p=Szablonowe}}}} {{Patrz|__FUNKCJA-FunkcjaIterajacaRozwijanegoSzablonu}}.
| 7 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _7 = Funkcja do generowania zawartości, może być zmodyfikowana, według podanej jej wartości, używana w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|FUNKCJA2-KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, w postaci zmodyfikowanej, czyli w wersji: {{Code|__FUNKCJA2}},
| 8 = Inne zmienne funkcyjne: | nagłówek8 = tak
| 9 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _9 = Inne operacje wykonywane na pobranym tekście.
| 10 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _10 = Funkcja użyta do generowania tablicy bazy kodów.
}}
Funkcje {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}}, zostały już opisane w tym module, więc wystarczy opisać inne.
{{Hr}}
* Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|pelna_nazwa_szablonu}} | _1 = Pełna nazwa szablonu.
| 2 = {{Code|tabela_parametrow_szablonu}} | _2 = Tabela parametrów wywołania szablonu do rozwinięcia.
| 3 = {{Code|tabela_modyfikatorow}} | _3 = Tabela modyfikatorów danego wywołania szablonowego.
}}
{{Hr}}
* Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Zawartość elementu wikikodu według {{Code|{{m|Szablonowe}}}}.
| 2 = {{Code|obiekt}} {{Patrz|obiekt}} | _2 = Nazwa obiektu szablonowego, jak: {{Code|SZABLON}}.
| 3 = {{Code|kod}} {{Patrz|kod}} | _3 = Numer obiektu, typu: {{Code|obiekt}} {{LinkPatrz|obiekt}}.
| 4 = {{Code|tekst}} | _4 = Tekst całego artykułu.
| 5 = {{Code|numer_szablonu}} {{Patrz|numer_szablonu}} | _5 = Tabela numerów dla różnych obiektów w jednej tabeli.
| 6 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _6 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 7 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _7 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
== {{Śródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}{{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}} ==
Funkcja służy dościągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}.
Posiada własną walidacje nazwy stron, czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów.
Funkcja odpowiednio operuje na znacznikach wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''', tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
{{OpisParametrów
| 1 = Zmienne obiektowe: | komórka1 = tak
| 2 = {{Code|self}} {{Patrz|self}} | _2 = Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
*** {{Code|p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);}}, gdzie {{Code|p}} - to odpowiednia zmienna.
| 3 = Zwykłe zmienne: | komórka3 = tak
| 4 = {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} | _4 = Nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć.
| 5 = {{Code|nazwa_strony2}} {{Patrz|nazwa_strony2}} | _5 = Uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej.
| 6 = {{Code|czy_noinclude}} {{Patrz|czy_noinclude}} | _6 = Jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka.
| 7 = Zmienna tablicowa: | komórka7 = tak
| 8 = {{Code|szablony_magiczne}} {{Patrz|szablony_magiczne}} | _8 = Tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej.
| 9 = Inne zmienne: | komórka9 = tak
| 10 = {{Code|dokumentacja}} {{Patrz|dokumentacja}} | _10 = Określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}}.
| 11 = {{Code|czy_szablon}} {{Patrz|czy_szablon}} | _11 = Gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją.
| 12 = {{Code|nazwa_modulu_szablonu_opisu}} {{Patrz|nazwa_modulu_szablonu_opisu}} | _12 = Zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami '''{{lpg|HTML}}''' na znaki.
| 13 = {{Code|szablon_nie_opis}} {{Patrz|szablon_nie_opis}} | _13 = Zmienna wskazująca, czy {{Code|nazwa strony}} {{LinkPatrz|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowany, używany wraz ze zmienną: {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}}.
| 14 = Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:| komórka14 = tak
| 15 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} | _15 = Operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
| 16 = {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} | _16 = Funkcja operująca na komentarzach, przeciwnie jest używana funkcja: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}}.
| 17 = {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} | _17 = Funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów.
| 18 = {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} | _18 = Funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_analizy_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
}}
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}}, operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} | _1 = Tekst do analizy, jak w funkcji nadrzędnej.
| 2 = {{Code|nazwa_modulu_szablonu_opisu}} {{LinkPatrz|nazwa_modulu_szablonu_opisu}} | _2 = Nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}.
| 3 = {{Code|nazwa_strony_bez_kodow_html}} {{Patrz|nazwa_strony_bez_kodow_html}} | _3 = Jest to nazwa strony: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, tylko z kodami '''{{lpg|HTML}}''' zamienionymi na ich odpowiedniki znakowe.
| 4 = {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}} | _4 = Tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej.
| 5 = {{Code|tabela_nazw}} {{Patrz|tabela_nazw}} | _5 = Tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, wewnątrz tej funkcji nadrzędnej.
}}
{{Hr}}
Funkcja: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}, ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę: {{Code|tablica}}, w funkcji zwracanej przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod metatabelki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} {{Patrz|__metatablica}}, to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Ten rozdział zawiera kolejność wywołań poszczególnych kroków w funkcji.
==== Poprawność pewnych nazw ====
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]|p=Html}}}}, która z: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}}.
==== Parametry uzyskanej strony ====
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}} {{Patrz|uchwyt strony}}, {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} i {{Code|czy_istnieje}} {{Patrz|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów.
==== Składniki preprocesora kodu mechanizmu: {{nobold|{{NS|l=tak|k=mw|w=tak}}}} ====
* Gdy {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli: {{Code|czy_noinclude}} {{LinkPatrz|czy_noinclude}}, przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie. Ze strony są usuwane pozostałości ze znaczników wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''' i znaczników jak {{Tag|templatedata}},
* Przeciwna wypadek: wtedy: {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}}, jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione.
==== Komentarze ====
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}.
===== Usuwanie pseudoszablonówi niektporych instrukcji warunkowych =====
* Ustawiane są zmienne w: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}} {{LinkPatrz|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}} {{Patrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}, by usunąc różne instrukcje warunkowe.
==== Specjalne elementy zmieniające wikikod ====
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
==== Kodowanie bazy danych kodów {{nobold|{{Code|{{m|Szablonowe}}}}}} ====
* Jeśli: {{Code|szablon_nie_opis}} {{LinkPatrz|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
rehx3hntfbrqlhw3j16np5tsrplrh9g
558290
558289
2026-10-02T12:56:03Z
Persino
2851
558290
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|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.SpreparowanyWikikodStrony}}{{Code|p.SpreparowanyWikikodStrony}} ==
Funkcja ściągąjąca opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Funkcja w opisach szablonów, a w niej instrukcje warunkowe podczas kodowania są rozwijane przy pomocy funkcji: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}}, a normalnie, gdy wewnątrz instrukcji warunkowych nie ma klamerek w funkcji, w składowej funkcji, tzn.: {{LinkPatrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja korzysta bezpośrednio z funkcji: {{LinkŚródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana.
| 2 = {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} | _2 = Nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw.
| 3 = {{Code|nazwa_modulu_szablonowa}} {{Patrz|nazwa_modulu_szablonowa}} | _3 = Nazwa modułu w wersji szablonowej, w wersji wywołaniowej.
| 4 = {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} | _4 = Przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony.
| 5 = {{Code|inkludowana}} {{Patrz|inkludowana}} | _5 = Przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej.
| 6 = Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem: | nagłówek6 = tak
| 7 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-SpreparowanyWikikodStrony}} | _7 = Funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, po kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku.
| 8 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-SpreparowanyWikikodStrony}} | _8 = Jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować.
| 9 = {{Code|__FUNKCJA3}} {{Patrz|__FUNKCJA3-SpreparowanyWikikodStrony}} | _9 = Funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}}.
| 10 = Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]|p=Szablonowe}}}} {{Patrz|UstalanieNazwyWywołania}}:| komórka10 = tak
| 11 = {{Code|__FUNKCJA4}} {{Patrz|__FUNKCJA4-SpreparowanyWikikodStrony}} | _11 = Funkcja, np. dekodująca nazwę szablonu.
| 12 = {{Code|__FUNKCJA5}} {{Patrz|__FUNKCJA5-SpreparowanyWikikodStrony}} | _12 = Funkcja, np. rozwijająca nazwę szablonu.
| 13 = Inne: | nagłówek13 = tak
| 14 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _14 = Funkcja do modyfikacji tekstu pobranego ze strony
| 15 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _15 = Funkcje do generowania tablicy bazy kodów.
}}
Definicje funkcji: {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-UstalanieNazwyWywołania}} i {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-UstalanieNazwyWywołania}}, które są potrzebne do konstrukcji wywołania funkcji: {{LinkPatrz|UstalanieNazwyWywołania}}, uzyskiwania nazwy szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} i {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}}, definicje tych funkcji:
* {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Tablica danych bazy kodów zakodowanego tekstu.
| 5 = {{Code|dokumentacja}} | _5 = Jak w: {{LinkPatrz|dokumentacja}}.
| 6 = {{Code|czy_nie_opis}} | _6 = Czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu_caly}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} {{LinkPatrz|__FUNKCJA3-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu,nazwa_modulu_szablonowa)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_modulu}} | _1 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 2 = {{Code|nazwa_modulu_szablonowa}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory,czy_z_kluczem]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} | _1 = Nazwa szablonu do rozwinięcia.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}}. | _5 = Tabela parametrów potrzebna do szybszego działania '''{{ld|StronicowyParser|Stronicowego parsera}}'''.
| 6 = Gdy tą funkcją jest: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}}, te zmienne bezpośrednio w: {{Code|__FUNKCJA4}}, nie występują, ale za to występują w tej podanej szczególnej przykładowej funkcji, tzn. argumenty: | komórka6 = tak
| 7 = {{Code|czy_uwzgledniac_modyfikatory}} | _7 = Czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}}.
| 8 = {{Code|czy_z_kluczem}} | _8 = Czy klucze, o wzorze: {{Code|klucz}}, lub {{Code|klucz[1-9]%d*}}.
}}
Jeżeli w funkcji {{LinkPatrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}} nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}} w przeciwnym wypadku zwracane jest nazwa szablonu i wartość {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} | _1 = Nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}.
| 2 = {{Code|tabela_modyfikatorow}} | _2 = Tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, to jest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}}, w przypadku: {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}.
| 3 = {{Code|nazwa_modulu}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 4 = {{Code|nazwa_modulu_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{LzLua|frame:preprocess}}, w korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, z której korzysta {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}, jeżeli korzystanej tutaj funkcja zrzuciła niepowodzenie, to pierwsza wartość zwrótcone to: {{Code|nil}}, druga: {{Code|false}}, w przeciwnym wypadku zwraca nazwę rozwiniętego szablonu i drugą wartość zrzuconą: {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice:
; Przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy{{dk}} {{nobold|{{Code|czy_niezakodowana{{=}}czy_nie_opis{{=}}true}}}}, według funkcji{{dk}}
* {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów,
; W przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja:
* {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami.
: Te funkcje są wywoływane wewnątrz funkcji: {{LinkŚródtytuł|p.SpreparowanyWikikodStrony}}. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Zmienna obiektowa.
| 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Strona, a jednocześnie uchwyt do bazy danych kodów zakodowanego tekstu, o nazwie modułu do rozwinięcia i zakodowania.
| 3 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _3 = Nazwa strony szablonowa, w postaci wywołaniowej szablonów.
| 4 = {{Code|inkludowana}} {{LinkPatrz|inkludowana}} | _4 = Zmienna, czy strona ma być interpretowana jako inkludowana.
| 5 = Zmienne funkcyjne: | nagłówek5 = tak
| 6 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _6 = Funkcja generująca zawartość, może być zmodyfikowana, na podstawie pełnej nazwy strony, używana w funkcji: jest to {{Code|__FUNKCJA3}} w: {{Code|{{sr|#FunkcjaIterajacaRozwijanegoSzablonu|p=Szablonowe}}}} {{Patrz|__FUNKCJA-FunkcjaIterajacaRozwijanegoSzablonu}}.
| 7 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _7 = Funkcja do generowania zawartości, może być zmodyfikowana, według podanej jej wartości, używana w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|FUNKCJA2-KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, w postaci zmodyfikowanej, czyli w wersji: {{Code|__FUNKCJA2}},
| 8 = Inne zmienne funkcyjne: | nagłówek8 = tak
| 9 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _9 = Inne operacje wykonywane na pobranym tekście.
| 10 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _10 = Funkcja użyta do generowania tablicy bazy kodów.
}}
Funkcje {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}}, zostały już opisane w tym module, więc wystarczy opisać inne.
{{Hr}}
* Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|pelna_nazwa_szablonu}} | _1 = Pełna nazwa szablonu.
| 2 = {{Code|tabela_parametrow_szablonu}} | _2 = Tabela parametrów wywołania szablonu do rozwinięcia.
| 3 = {{Code|tabela_modyfikatorow}} | _3 = Tabela modyfikatorów danego wywołania szablonowego.
}}
{{Hr}}
* Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Zawartość elementu wikikodu według {{Code|{{m|Szablonowe}}}}.
| 2 = {{Code|obiekt}} {{Patrz|obiekt}} | _2 = Nazwa obiektu szablonowego, jak: {{Code|SZABLON}}.
| 3 = {{Code|kod}} {{Patrz|kod}} | _3 = Numer obiektu, typu: {{Code|obiekt}} {{LinkPatrz|obiekt}}.
| 4 = {{Code|tekst}} | _4 = Tekst całego artykułu.
| 5 = {{Code|numer_szablonu}} {{Patrz|numer_szablonu}} | _5 = Tabela numerów dla różnych obiektów w jednej tabeli.
| 6 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _6 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 7 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _7 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
== {{Śródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}{{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}} ==
Funkcja służy dościągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}.
Posiada własną walidacje nazwy stron, czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów.
Funkcja odpowiednio operuje na znacznikach wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''', tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
{{OpisParametrów
| 1 = Zmienne obiektowe: | komórka1 = tak
| 2 = {{Code|self}} {{Patrz|self}} | _2 = Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
*** {{Code|p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);}}, gdzie {{Code|p}} - to odpowiednia zmienna.
| 3 = Zwykłe zmienne: | komórka3 = tak
| 4 = {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} | _4 = Nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć.
| 5 = {{Code|nazwa_strony2}} {{Patrz|nazwa_strony2}} | _5 = Uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej.
| 6 = {{Code|czy_noinclude}} {{Patrz|czy_noinclude}} | _6 = Jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka.
| 7 = Zmienna tablicowa: | komórka7 = tak
| 8 = {{Code|szablony_magiczne}} {{Patrz|szablony_magiczne}} | _8 = Tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej.
| 9 = Inne zmienne: | komórka9 = tak
| 10 = {{Code|dokumentacja}} {{Patrz|dokumentacja}} | _10 = Określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}}.
| 11 = {{Code|czy_szablon}} {{Patrz|czy_szablon}} | _11 = Gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją.
| 12 = {{Code|nazwa_modulu_szablonu_opisu}} {{Patrz|nazwa_modulu_szablonu_opisu}} | _12 = Zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami '''{{lpg|HTML}}''' na znaki.
| 13 = {{Code|szablon_nie_opis}} {{Patrz|szablon_nie_opis}} | _13 = Zmienna wskazująca, czy {{Code|nazwa strony}} {{LinkPatrz|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowany, używany wraz ze zmienną: {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}}.
| 14 = Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:| komórka14 = tak
| 15 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} | _15 = Operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
| 16 = {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} | _16 = Funkcja operująca na komentarzach, przeciwnie jest używana funkcja: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}}.
| 17 = {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} | _17 = Funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów.
| 18 = {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} | _18 = Funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_analizy_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
}}
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}}, operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} | _1 = Tekst do analizy, jak w funkcji nadrzędnej.
| 2 = {{Code|nazwa_modulu_szablonu_opisu}} {{LinkPatrz|nazwa_modulu_szablonu_opisu}} | _2 = Nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}.
| 3 = {{Code|nazwa_strony_bez_kodow_html}} {{Patrz|nazwa_strony_bez_kodow_html}} | _3 = Jest to nazwa strony: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, tylko z kodami '''{{lpg|HTML}}''' zamienionymi na ich odpowiedniki znakowe.
| 4 = {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}} | _4 = Tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej.
| 5 = {{Code|tabela_nazw}} {{Patrz|tabela_nazw}} | _5 = Tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, wewnątrz tej funkcji nadrzędnej.
}}
{{Hr}}
Funkcja: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}, ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę: {{Code|tablica}}, w funkcji zwracanej przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod metatabelki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} {{Patrz|__metatablica}}, to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Ten rozdział zawiera kolejność wywołań poszczególnych kroków w funkcji.
==== Poprawność pewnych nazw ====
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]|p=Html}}}}, która z: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}}.
==== Parametry uzyskanej strony ====
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}} {{Patrz|uchwyt strony}}, {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} i {{Code|czy_istnieje}} {{Patrz|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów.
==== Składniki preprocesora kodu mechanizmu: {{nobold|{{NS|l=tak|k=mw|w=tak}}}} ====
* Gdy {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli: {{Code|czy_noinclude}} {{LinkPatrz|czy_noinclude}}, przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie. Ze strony są usuwane pozostałości ze znaczników wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''' i znaczników jak {{Tag|templatedata}},
* Przeciwna wypadek: wtedy: {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}}, jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione.
==== Komentarze ====
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}.
===== Usuwanie pseudoszablonówi niektporych instrukcji warunkowych =====
* Ustawiane są zmienne w: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}} {{LinkPatrz|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}} {{Patrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}, by usunąc różne instrukcje warunkowe.
==== Specjalne elementy zmieniające wikikod ====
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
==== Kodowanie bazy danych kodów {{nobold|{{Code|{{m|Szablonowe}}}}}} ====
* Jeśli: {{Code|szablon_nie_opis}} {{LinkPatrz|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
1zg6nxy6asv48y4hm25ubx6xpu4j716
558291
558290
2026-10-02T13:02:03Z
Persino
2851
/* {{Śródtytuł|p.SpreparowanyWikikodStrony}}{{Code|p.SpreparowanyWikikodStrony}} */
558291
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|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.SpreparowanyWikikodStrony}}{{Code|p.SpreparowanyWikikodStrony}} ==
Funkcja ściągąjąca opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Funkcja w opisach szablonów, a w niej instrukcje warunkowe podczas kodowania są rozwijane przy pomocy funkcji: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}}, a normalnie, gdy wewnątrz instrukcji warunkowych nie ma klamerek w funkcji, w składowej funkcji, tzn.: {{LinkPatrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja korzysta bezpośrednio z funkcji: {{LinkŚródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana.
| 2 = {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} | _2 = Nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw.
| 3 = {{Code|nazwa_modulu_szablonowa}} {{Patrz|nazwa_modulu_szablonowa}} | _3 = Nazwa modułu w wersji szablonowej, w wersji wywołaniowej.
| 4 = {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} | _4 = Przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony.
| 5 = {{Code|inkludowana}} {{Patrz|inkludowana}} | _5 = Przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej.
| 6 = Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem: | nagłówek6 = tak
| 7 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-SpreparowanyWikikodStrony}} | _7 = Funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, po kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku.
| 8 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-SpreparowanyWikikodStrony}} | _8 = Jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować.
| 9 = {{Code|__FUNKCJA3}} {{Patrz|__FUNKCJA3-SpreparowanyWikikodStrony}} | _9 = Funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}}.
| 10 = Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]|p=Szablonowe}}}} {{Patrz|UstalanieNazwyWywołania}}:| komórka10 = tak
| 11 = {{Code|__FUNKCJA4}} {{Patrz|__FUNKCJA4-SpreparowanyWikikodStrony}} | _11 = Funkcja, np. dekodująca nazwę szablonu.
| 12 = {{Code|__FUNKCJA5}} {{Patrz|__FUNKCJA5-SpreparowanyWikikodStrony}} | _12 = Funkcja, np. rozwijająca nazwę szablonu.
| 13 = Inne: | nagłówek13 = tak
| 14 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _14 = Funkcja do modyfikacji tekstu pobranego ze strony
| 15 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _15 = Funkcje do generowania tablicy bazy kodów.
}}
Definicje funkcji: {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-UstalanieNazwyWywołania}} i {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-UstalanieNazwyWywołania}}, które są potrzebne do konstrukcji wywołania funkcji: {{LinkPatrz|UstalanieNazwyWywołania}}, uzyskiwania nazwy szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} i {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}}, definicje tych funkcji:
* {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Tablica danych bazy kodów zakodowanego tekstu.
| 5 = {{Code|dokumentacja}} | _5 = Jak w: {{LinkPatrz|dokumentacja}}.
| 6 = {{Code|czy_nie_opis}} {{Patrz|czy_nie_opis}} | _6 = Czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu_caly}} {{Patrz|tekst_artykulu_caly}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} {{LinkPatrz|__FUNKCJA3-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu,nazwa_modulu_szablonowa)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_modulu}} | _1 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 2 = {{Code|nazwa_modulu_szablonowa}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory,czy_z_kluczem]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} | _1 = Nazwa szablonu do rozwinięcia.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}}. | _5 = Tabela parametrów potrzebna do szybszego działania '''{{ld|StronicowyParser|Stronicowego parsera}}'''.
| 6 = Gdy tą funkcją jest: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}}, te zmienne bezpośrednio w: {{Code|__FUNKCJA4}}, nie występują, ale za to występują w tej podanej szczególnej przykładowej funkcji, tzn. argumenty: | komórka6 = tak
| 7 = {{Code|czy_uwzgledniac_modyfikatory}} {{Patrz|czy_uwzgledniac_modyfikatory}} | _7 = Czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}}.
| 8 = {{Code|czy_z_kluczem}} {{Patrz|czy_z_kluczem}} | _8 = Czy klucze, o wzorze: {{Code|<nowiki>^klucz$</nowiki>}}, lub {{Code|<nowiki>^klucz[1-9]%d*$</nowiki>}}.
}}
Jeżeli w funkcji {{LinkPatrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}} nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}} w przeciwnym wypadku zwracane jest nazwa szablonu i wartość {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} | _1 = Jak w: {{LinkPatrz|nazwa_szablonu}}. To jest nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}.
| 2 = {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} | _2 = Tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, to jest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}}, w przypadku: {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}.
| 3 = {{Code|nazwa_modulu}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 4 = {{Code|nazwa_modulu_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{LzLua|frame:preprocess}}, w korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, z której korzysta {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}, jeżeli korzystanej tutaj funkcja zrzuciła niepowodzenie, to pierwsza wartość zwrótcone to: {{Code|nil}}, druga: {{Code|false}}, w przeciwnym wypadku zwraca nazwę rozwiniętego szablonu i drugą wartość zrzuconą: {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice:
; Przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy{{dk}} {{nobold|{{Code|czy_niezakodowana{{=}}czy_nie_opis{{=}}true}}}}, według funkcji{{dk}}
* {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów,
; W przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja:
* {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami.
: Te funkcje są wywoływane wewnątrz funkcji: {{LinkŚródtytuł|p.SpreparowanyWikikodStrony}}. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Zmienna obiektowa.
| 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Strona, a jednocześnie uchwyt do bazy danych kodów zakodowanego tekstu, o nazwie modułu do rozwinięcia i zakodowania.
| 3 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _3 = Nazwa strony szablonowa, w postaci wywołaniowej szablonów.
| 4 = {{Code|inkludowana}} {{LinkPatrz|inkludowana}} | _4 = Zmienna, czy strona ma być interpretowana jako inkludowana.
| 5 = Zmienne funkcyjne: | nagłówek5 = tak
| 6 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _6 = Funkcja generująca zawartość, może być zmodyfikowana, na podstawie pełnej nazwy strony, używana w funkcji: jest to {{Code|__FUNKCJA3}} w: {{Code|{{sr|#FunkcjaIterajacaRozwijanegoSzablonu|p=Szablonowe}}}} {{Patrz|__FUNKCJA-FunkcjaIterajacaRozwijanegoSzablonu}}.
| 7 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _7 = Funkcja do generowania zawartości, może być zmodyfikowana, według podanej jej wartości, używana w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|FUNKCJA2-KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, w postaci zmodyfikowanej, czyli w wersji: {{Code|__FUNKCJA2}},
| 8 = Inne zmienne funkcyjne: | nagłówek8 = tak
| 9 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _9 = Inne operacje wykonywane na pobranym tekście.
| 10 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _10 = Funkcja użyta do generowania tablicy bazy kodów.
}}
Funkcje {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}}, zostały już opisane w tym module, więc wystarczy opisać inne.
{{Hr}}
* Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|pelna_nazwa_szablonu}} | _1 = Pełna nazwa szablonu.
| 2 = {{Code|tabela_parametrow_szablonu}} | _2 = Tabela parametrów wywołania szablonu do rozwinięcia.
| 3 = {{Code|tabela_modyfikatorow}} | _3 = Tabela modyfikatorów danego wywołania szablonowego.
}}
{{Hr}}
* Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Zawartość elementu wikikodu według {{Code|{{m|Szablonowe}}}}.
| 2 = {{Code|obiekt}} {{Patrz|obiekt}} | _2 = Nazwa obiektu szablonowego, jak: {{Code|SZABLON}}.
| 3 = {{Code|kod}} {{Patrz|kod}} | _3 = Numer obiektu, typu: {{Code|obiekt}} {{LinkPatrz|obiekt}}.
| 4 = {{Code|tekst}} | _4 = Tekst całego artykułu.
| 5 = {{Code|numer_szablonu}} {{Patrz|numer_szablonu}} | _5 = Tabela numerów dla różnych obiektów w jednej tabeli.
| 6 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _6 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 7 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _7 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
== {{Śródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}{{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}} ==
Funkcja służy dościągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}.
Posiada własną walidacje nazwy stron, czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów.
Funkcja odpowiednio operuje na znacznikach wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''', tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
{{OpisParametrów
| 1 = Zmienne obiektowe: | komórka1 = tak
| 2 = {{Code|self}} {{Patrz|self}} | _2 = Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
*** {{Code|p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);}}, gdzie {{Code|p}} - to odpowiednia zmienna.
| 3 = Zwykłe zmienne: | komórka3 = tak
| 4 = {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} | _4 = Nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć.
| 5 = {{Code|nazwa_strony2}} {{Patrz|nazwa_strony2}} | _5 = Uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej.
| 6 = {{Code|czy_noinclude}} {{Patrz|czy_noinclude}} | _6 = Jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka.
| 7 = Zmienna tablicowa: | komórka7 = tak
| 8 = {{Code|szablony_magiczne}} {{Patrz|szablony_magiczne}} | _8 = Tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej.
| 9 = Inne zmienne: | komórka9 = tak
| 10 = {{Code|dokumentacja}} {{Patrz|dokumentacja}} | _10 = Określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}}.
| 11 = {{Code|czy_szablon}} {{Patrz|czy_szablon}} | _11 = Gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją.
| 12 = {{Code|nazwa_modulu_szablonu_opisu}} {{Patrz|nazwa_modulu_szablonu_opisu}} | _12 = Zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami '''{{lpg|HTML}}''' na znaki.
| 13 = {{Code|szablon_nie_opis}} {{Patrz|szablon_nie_opis}} | _13 = Zmienna wskazująca, czy {{Code|nazwa strony}} {{LinkPatrz|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowany, używany wraz ze zmienną: {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}}.
| 14 = Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:| komórka14 = tak
| 15 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} | _15 = Operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
| 16 = {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} | _16 = Funkcja operująca na komentarzach, przeciwnie jest używana funkcja: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}}.
| 17 = {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} | _17 = Funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów.
| 18 = {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} | _18 = Funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_analizy_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
}}
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}}, operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} | _1 = Tekst do analizy, jak w funkcji nadrzędnej.
| 2 = {{Code|nazwa_modulu_szablonu_opisu}} {{LinkPatrz|nazwa_modulu_szablonu_opisu}} | _2 = Nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}.
| 3 = {{Code|nazwa_strony_bez_kodow_html}} {{Patrz|nazwa_strony_bez_kodow_html}} | _3 = Jest to nazwa strony: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, tylko z kodami '''{{lpg|HTML}}''' zamienionymi na ich odpowiedniki znakowe.
| 4 = {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}} | _4 = Tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej.
| 5 = {{Code|tabela_nazw}} {{Patrz|tabela_nazw}} | _5 = Tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, wewnątrz tej funkcji nadrzędnej.
}}
{{Hr}}
Funkcja: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}, ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę: {{Code|tablica}}, w funkcji zwracanej przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod metatabelki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} {{Patrz|__metatablica}}, to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Ten rozdział zawiera kolejność wywołań poszczególnych kroków w funkcji.
==== Poprawność pewnych nazw ====
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]|p=Html}}}}, która z: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}}.
==== Parametry uzyskanej strony ====
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}} {{Patrz|uchwyt strony}}, {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} i {{Code|czy_istnieje}} {{Patrz|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów.
==== Składniki preprocesora kodu mechanizmu: {{nobold|{{NS|l=tak|k=mw|w=tak}}}} ====
* Gdy {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli: {{Code|czy_noinclude}} {{LinkPatrz|czy_noinclude}}, przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie. Ze strony są usuwane pozostałości ze znaczników wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''' i znaczników jak {{Tag|templatedata}},
* Przeciwna wypadek: wtedy: {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}}, jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione.
==== Komentarze ====
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}.
===== Usuwanie pseudoszablonówi niektporych instrukcji warunkowych =====
* Ustawiane są zmienne w: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}} {{LinkPatrz|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}} {{Patrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}, by usunąc różne instrukcje warunkowe.
==== Specjalne elementy zmieniające wikikod ====
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
==== Kodowanie bazy danych kodów {{nobold|{{Code|{{m|Szablonowe}}}}}} ====
* Jeśli: {{Code|szablon_nie_opis}} {{LinkPatrz|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
qf7snkb7sl25ptyge2htxqe35tm2jgy
558292
558291
2026-10-02T13:19:23Z
Persino
2851
/* {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} */
558292
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|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.SpreparowanyWikikodStrony}}{{Code|p.SpreparowanyWikikodStrony}} ==
Funkcja ściągąjąca opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Funkcja w opisach szablonów, a w niej instrukcje warunkowe podczas kodowania są rozwijane przy pomocy funkcji: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}}, a normalnie, gdy wewnątrz instrukcji warunkowych nie ma klamerek w funkcji, w składowej funkcji, tzn.: {{LinkPatrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja korzysta bezpośrednio z funkcji: {{LinkŚródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana.
| 2 = {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} | _2 = Nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw.
| 3 = {{Code|nazwa_modulu_szablonowa}} {{Patrz|nazwa_modulu_szablonowa}} | _3 = Nazwa modułu w wersji szablonowej, w wersji wywołaniowej.
| 4 = {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} | _4 = Przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony.
| 5 = {{Code|inkludowana}} {{Patrz|inkludowana}} | _5 = Przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej.
| 6 = Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem: | nagłówek6 = tak
| 7 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-SpreparowanyWikikodStrony}} | _7 = Funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, po kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku.
| 8 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-SpreparowanyWikikodStrony}} | _8 = Jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować.
| 9 = {{Code|__FUNKCJA3}} {{Patrz|__FUNKCJA3-SpreparowanyWikikodStrony}} | _9 = Funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}}.
| 10 = Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]|p=Szablonowe}}}} {{Patrz|UstalanieNazwyWywołania}}:| komórka10 = tak
| 11 = {{Code|__FUNKCJA4}} {{Patrz|__FUNKCJA4-SpreparowanyWikikodStrony}} | _11 = Funkcja, np. dekodująca nazwę szablonu.
| 12 = {{Code|__FUNKCJA5}} {{Patrz|__FUNKCJA5-SpreparowanyWikikodStrony}} | _12 = Funkcja, np. rozwijająca nazwę szablonu.
| 13 = Inne: | nagłówek13 = tak
| 14 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _14 = Funkcja do modyfikacji tekstu pobranego ze strony
| 15 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _15 = Funkcje do generowania tablicy bazy kodów.
}}
Definicje funkcji: {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-UstalanieNazwyWywołania}} i {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-UstalanieNazwyWywołania}}, które są potrzebne do konstrukcji wywołania funkcji: {{LinkPatrz|UstalanieNazwyWywołania}}, uzyskiwania nazwy szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} i {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}}, definicje tych funkcji:
* {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Tablica danych bazy kodów zakodowanego tekstu.
| 5 = {{Code|dokumentacja}} | _5 = Jak w: {{LinkPatrz|dokumentacja}}.
| 6 = {{Code|czy_nie_opis}} {{Patrz|czy_nie_opis}} | _6 = Czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu_caly}} {{Patrz|tekst_artykulu_caly}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} {{LinkPatrz|__FUNKCJA3-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu,nazwa_modulu_szablonowa)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_modulu}} | _1 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 2 = {{Code|nazwa_modulu_szablonowa}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory,czy_z_kluczem]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} | _1 = Nazwa szablonu do rozwinięcia.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}}. | _5 = Tabela parametrów potrzebna do szybszego działania '''{{ld|StronicowyParser|Stronicowego parsera}}'''.
| 6 = Gdy tą funkcją jest: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}}, te zmienne bezpośrednio w: {{Code|__FUNKCJA4}}, nie występują, ale za to występują w tej podanej szczególnej przykładowej funkcji, tzn. argumenty: | komórka6 = tak
| 7 = {{Code|czy_uwzgledniac_modyfikatory}} {{Patrz|czy_uwzgledniac_modyfikatory}} | _7 = Czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}}.
| 8 = {{Code|czy_z_kluczem}} {{Patrz|czy_z_kluczem}} | _8 = Czy klucze, o wzorze: {{Code|<nowiki>^klucz$</nowiki>}}, lub {{Code|<nowiki>^klucz[1-9]%d*$</nowiki>}}.
}}
Jeżeli w funkcji {{LinkPatrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}} nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}} w przeciwnym wypadku zwracane jest nazwa szablonu i wartość {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} | _1 = Jak w: {{LinkPatrz|nazwa_szablonu}}. To jest nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}.
| 2 = {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} | _2 = Tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, to jest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}}, w przypadku: {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}.
| 3 = {{Code|nazwa_modulu}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 4 = {{Code|nazwa_modulu_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{LzLua|frame:preprocess}}, w korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, z której korzysta {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}, jeżeli korzystanej tutaj funkcja zrzuciła niepowodzenie, to pierwsza wartość zwrótcone to: {{Code|nil}}, druga: {{Code|false}}, w przeciwnym wypadku zwraca nazwę rozwiniętego szablonu i drugą wartość zrzuconą: {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice:
; Przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy{{dk}} {{nobold|{{Code|czy_niezakodowana {{=}} true}}}} i {{nobold|{{Code|czy_nie_opis {{=}} true}}}}, według funkcji{{dk}}
* {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów,
; W przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja:
* {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami.
: Te funkcje są wywoływane wewnątrz funkcji: {{LinkŚródtytuł|p.SpreparowanyWikikodStrony}}. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Zmienna obiektowa.
| 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Strona, a jednocześnie uchwyt do bazy danych kodów zakodowanego tekstu, o nazwie modułu do rozwinięcia i zakodowania.
| 3 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _3 = Nazwa strony szablonowa, w postaci wywołaniowej szablonów.
| 4 = {{Code|inkludowana}} {{LinkPatrz|inkludowana}} | _4 = Zmienna, czy strona ma być interpretowana jako inkludowana.
| 5 = Zmienne funkcyjne: | nagłówek5 = tak
| 6 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _6 = Funkcja generująca zawartość, może być zmodyfikowana, na podstawie pełnej nazwy strony, używana w funkcji: jest to {{Code|__FUNKCJA3}} w: {{Code|{{sr|#FunkcjaIterajacaRozwijanegoSzablonu|p=Szablonowe}}}} {{Patrz|__FUNKCJA-FunkcjaIterajacaRozwijanegoSzablonu}}.
| 7 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _7 = Funkcja do generowania zawartości, może być zmodyfikowana, według podanej jej wartości, używana w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|FUNKCJA2-KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, w postaci zmodyfikowanej, czyli w wersji: {{Code|__FUNKCJA2}},
| 8 = Inne zmienne funkcyjne: | nagłówek8 = tak
| 9 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _9 = Inne operacje wykonywane na pobranym tekście.
| 10 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _10 = Funkcja użyta do generowania tablicy bazy kodów.
}}
Funkcje {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}}, zostały już opisane w tym module, więc wystarczy opisać inne.
{{Hr}}
* Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|pelna_nazwa_szablonu}} | _1 = Pełna nazwa szablonu.
| 2 = {{Code|tabela_parametrow_szablonu}} | _2 = Tabela parametrów wywołania szablonu do rozwinięcia.
| 3 = {{Code|tabela_modyfikatorow}} | _3 = Tabela modyfikatorów danego wywołania szablonowego.
}}
{{Hr}}
* Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Zawartość elementu wikikodu według {{Code|{{m|Szablonowe}}}}.
| 2 = {{Code|obiekt}} {{Patrz|obiekt}} | _2 = Nazwa obiektu szablonowego, jak: {{Code|SZABLON}}.
| 3 = {{Code|kod}} {{Patrz|kod}} | _3 = Numer obiektu, typu: {{Code|obiekt}} {{LinkPatrz|obiekt}}.
| 4 = {{Code|tekst}} | _4 = Tekst całego artykułu.
| 5 = {{Code|numer_szablonu}} {{Patrz|numer_szablonu}} | _5 = Tabela numerów dla różnych obiektów w jednej tabeli.
| 6 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _6 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 7 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _7 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
== {{Śródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}{{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}} ==
Funkcja służy dościągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}.
Posiada własną walidacje nazwy stron, czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów.
Funkcja odpowiednio operuje na znacznikach wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''', tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
{{OpisParametrów
| 1 = Zmienne obiektowe: | komórka1 = tak
| 2 = {{Code|self}} {{Patrz|self}} | _2 = Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
*** {{Code|p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);}}, gdzie {{Code|p}} - to odpowiednia zmienna.
| 3 = Zwykłe zmienne: | komórka3 = tak
| 4 = {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} | _4 = Nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć.
| 5 = {{Code|nazwa_strony2}} {{Patrz|nazwa_strony2}} | _5 = Uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej.
| 6 = {{Code|czy_noinclude}} {{Patrz|czy_noinclude}} | _6 = Jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka.
| 7 = Zmienna tablicowa: | komórka7 = tak
| 8 = {{Code|szablony_magiczne}} {{Patrz|szablony_magiczne}} | _8 = Tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej.
| 9 = Inne zmienne: | komórka9 = tak
| 10 = {{Code|dokumentacja}} {{Patrz|dokumentacja}} | _10 = Określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}}.
| 11 = {{Code|czy_szablon}} {{Patrz|czy_szablon}} | _11 = Gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją.
| 12 = {{Code|nazwa_modulu_szablonu_opisu}} {{Patrz|nazwa_modulu_szablonu_opisu}} | _12 = Zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami '''{{lpg|HTML}}''' na znaki.
| 13 = {{Code|szablon_nie_opis}} {{Patrz|szablon_nie_opis}} | _13 = Zmienna wskazująca, czy {{Code|nazwa strony}} {{LinkPatrz|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowany, używany wraz ze zmienną: {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}}.
| 14 = Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:| komórka14 = tak
| 15 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} | _15 = Operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
| 16 = {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} | _16 = Funkcja operująca na komentarzach, przeciwnie jest używana funkcja: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}}.
| 17 = {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} | _17 = Funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów.
| 18 = {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} | _18 = Funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_analizy_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
}}
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}}, operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} | _1 = Tekst do analizy, jak w funkcji nadrzędnej.
| 2 = {{Code|nazwa_modulu_szablonu_opisu}} {{LinkPatrz|nazwa_modulu_szablonu_opisu}} | _2 = Nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}.
| 3 = {{Code|nazwa_strony_bez_kodow_html}} {{Patrz|nazwa_strony_bez_kodow_html}} | _3 = Jest to nazwa strony: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, tylko z kodami '''{{lpg|HTML}}''' zamienionymi na ich odpowiedniki znakowe.
| 4 = {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}} | _4 = Tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej.
| 5 = {{Code|tabela_nazw}} {{Patrz|tabela_nazw}} | _5 = Tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, wewnątrz tej funkcji nadrzędnej.
}}
{{Hr}}
Funkcja: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}, ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę: {{Code|tablica}}, w funkcji zwracanej przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod metatabelki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} {{Patrz|__metatablica}}, to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Ten rozdział zawiera kolejność wywołań poszczególnych kroków w funkcji.
==== Poprawność pewnych nazw ====
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]|p=Html}}}}, która z: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}}.
==== Parametry uzyskanej strony ====
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}} {{Patrz|uchwyt strony}}, {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} i {{Code|czy_istnieje}} {{Patrz|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów.
==== Składniki preprocesora kodu mechanizmu: {{nobold|{{NS|l=tak|k=mw|w=tak}}}} ====
* Gdy {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli: {{Code|czy_noinclude}} {{LinkPatrz|czy_noinclude}}, przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie. Ze strony są usuwane pozostałości ze znaczników wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''' i znaczników jak {{Tag|templatedata}},
* Przeciwna wypadek: wtedy: {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}}, jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione.
==== Komentarze ====
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}.
===== Usuwanie pseudoszablonówi niektporych instrukcji warunkowych =====
* Ustawiane są zmienne w: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}} {{LinkPatrz|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}} {{Patrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}, by usunąc różne instrukcje warunkowe.
==== Specjalne elementy zmieniające wikikod ====
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
==== Kodowanie bazy danych kodów {{nobold|{{Code|{{m|Szablonowe}}}}}} ====
* Jeśli: {{Code|szablon_nie_opis}} {{LinkPatrz|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
0iy4xzpavsx9t90jmkxfqpg6b7euks0
558293
558292
2026-10-02T13:19:42Z
Persino
2851
/* {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} */
558293
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|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.SpreparowanyWikikodStrony}}{{Code|p.SpreparowanyWikikodStrony}} ==
Funkcja ściągąjąca opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Funkcja w opisach szablonów, a w niej instrukcje warunkowe podczas kodowania są rozwijane przy pomocy funkcji: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}}, a normalnie, gdy wewnątrz instrukcji warunkowych nie ma klamerek w funkcji, w składowej funkcji, tzn.: {{LinkPatrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja korzysta bezpośrednio z funkcji: {{LinkŚródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana.
| 2 = {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} | _2 = Nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw.
| 3 = {{Code|nazwa_modulu_szablonowa}} {{Patrz|nazwa_modulu_szablonowa}} | _3 = Nazwa modułu w wersji szablonowej, w wersji wywołaniowej.
| 4 = {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} | _4 = Przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony.
| 5 = {{Code|inkludowana}} {{Patrz|inkludowana}} | _5 = Przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej.
| 6 = Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem: | nagłówek6 = tak
| 7 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-SpreparowanyWikikodStrony}} | _7 = Funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, po kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku.
| 8 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-SpreparowanyWikikodStrony}} | _8 = Jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować.
| 9 = {{Code|__FUNKCJA3}} {{Patrz|__FUNKCJA3-SpreparowanyWikikodStrony}} | _9 = Funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}}.
| 10 = Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]|p=Szablonowe}}}} {{Patrz|UstalanieNazwyWywołania}}:| komórka10 = tak
| 11 = {{Code|__FUNKCJA4}} {{Patrz|__FUNKCJA4-SpreparowanyWikikodStrony}} | _11 = Funkcja, np. dekodująca nazwę szablonu.
| 12 = {{Code|__FUNKCJA5}} {{Patrz|__FUNKCJA5-SpreparowanyWikikodStrony}} | _12 = Funkcja, np. rozwijająca nazwę szablonu.
| 13 = Inne: | nagłówek13 = tak
| 14 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _14 = Funkcja do modyfikacji tekstu pobranego ze strony
| 15 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _15 = Funkcje do generowania tablicy bazy kodów.
}}
Definicje funkcji: {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-UstalanieNazwyWywołania}} i {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-UstalanieNazwyWywołania}}, które są potrzebne do konstrukcji wywołania funkcji: {{LinkPatrz|UstalanieNazwyWywołania}}, uzyskiwania nazwy szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} i {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}}, definicje tych funkcji:
* {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Tablica danych bazy kodów zakodowanego tekstu.
| 5 = {{Code|dokumentacja}} | _5 = Jak w: {{LinkPatrz|dokumentacja}}.
| 6 = {{Code|czy_nie_opis}} {{Patrz|czy_nie_opis}} | _6 = Czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu_caly}} {{Patrz|tekst_artykulu_caly}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} {{LinkPatrz|__FUNKCJA3-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu,nazwa_modulu_szablonowa)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_modulu}} | _1 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 2 = {{Code|nazwa_modulu_szablonowa}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory,czy_z_kluczem]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} | _1 = Nazwa szablonu do rozwinięcia.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}}. | _5 = Tabela parametrów potrzebna do szybszego działania '''{{ld|StronicowyParser|Stronicowego parsera}}'''.
| 6 = Gdy tą funkcją jest: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}}, te zmienne bezpośrednio w: {{Code|__FUNKCJA4}}, nie występują, ale za to występują w tej podanej szczególnej przykładowej funkcji, tzn. argumenty: | komórka6 = tak
| 7 = {{Code|czy_uwzgledniac_modyfikatory}} {{Patrz|czy_uwzgledniac_modyfikatory}} | _7 = Czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}}.
| 8 = {{Code|czy_z_kluczem}} {{Patrz|czy_z_kluczem}} | _8 = Czy klucze, o wzorze: {{Code|<nowiki>^klucz$</nowiki>}}, lub {{Code|<nowiki>^klucz[1-9]%d*$</nowiki>}}.
}}
Jeżeli w funkcji {{LinkPatrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}} nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}} w przeciwnym wypadku zwracane jest nazwa szablonu i wartość {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} | _1 = Jak w: {{LinkPatrz|nazwa_szablonu}}. To jest nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}.
| 2 = {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} | _2 = Tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, to jest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}}, w przypadku: {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}.
| 3 = {{Code|nazwa_modulu}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 4 = {{Code|nazwa_modulu_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{LzLua|frame:preprocess}}, w korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, z której korzysta {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}, jeżeli korzystanej tutaj funkcja zrzuciła niepowodzenie, to pierwsza wartość zwrótcone to: {{Code|nil}}, druga: {{Code|false}}, w przeciwnym wypadku zwraca nazwę rozwiniętego szablonu i drugą wartość zrzuconą: {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice:
; Przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy{{dk}} {{nobold|{{Code|czy_niezakodowana {{=}} true}}}}, i {{nobold|{{Code|czy_nie_opis {{=}} true}}}}, według funkcji{{dk}}
* {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów,
; W przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja:
* {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami.
: Te funkcje są wywoływane wewnątrz funkcji: {{LinkŚródtytuł|p.SpreparowanyWikikodStrony}}. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Zmienna obiektowa.
| 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Strona, a jednocześnie uchwyt do bazy danych kodów zakodowanego tekstu, o nazwie modułu do rozwinięcia i zakodowania.
| 3 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _3 = Nazwa strony szablonowa, w postaci wywołaniowej szablonów.
| 4 = {{Code|inkludowana}} {{LinkPatrz|inkludowana}} | _4 = Zmienna, czy strona ma być interpretowana jako inkludowana.
| 5 = Zmienne funkcyjne: | nagłówek5 = tak
| 6 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _6 = Funkcja generująca zawartość, może być zmodyfikowana, na podstawie pełnej nazwy strony, używana w funkcji: jest to {{Code|__FUNKCJA3}} w: {{Code|{{sr|#FunkcjaIterajacaRozwijanegoSzablonu|p=Szablonowe}}}} {{Patrz|__FUNKCJA-FunkcjaIterajacaRozwijanegoSzablonu}}.
| 7 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _7 = Funkcja do generowania zawartości, może być zmodyfikowana, według podanej jej wartości, używana w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|FUNKCJA2-KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, w postaci zmodyfikowanej, czyli w wersji: {{Code|__FUNKCJA2}},
| 8 = Inne zmienne funkcyjne: | nagłówek8 = tak
| 9 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _9 = Inne operacje wykonywane na pobranym tekście.
| 10 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _10 = Funkcja użyta do generowania tablicy bazy kodów.
}}
Funkcje {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}}, zostały już opisane w tym module, więc wystarczy opisać inne.
{{Hr}}
* Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|pelna_nazwa_szablonu}} | _1 = Pełna nazwa szablonu.
| 2 = {{Code|tabela_parametrow_szablonu}} | _2 = Tabela parametrów wywołania szablonu do rozwinięcia.
| 3 = {{Code|tabela_modyfikatorow}} | _3 = Tabela modyfikatorów danego wywołania szablonowego.
}}
{{Hr}}
* Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Zawartość elementu wikikodu według {{Code|{{m|Szablonowe}}}}.
| 2 = {{Code|obiekt}} {{Patrz|obiekt}} | _2 = Nazwa obiektu szablonowego, jak: {{Code|SZABLON}}.
| 3 = {{Code|kod}} {{Patrz|kod}} | _3 = Numer obiektu, typu: {{Code|obiekt}} {{LinkPatrz|obiekt}}.
| 4 = {{Code|tekst}} | _4 = Tekst całego artykułu.
| 5 = {{Code|numer_szablonu}} {{Patrz|numer_szablonu}} | _5 = Tabela numerów dla różnych obiektów w jednej tabeli.
| 6 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _6 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 7 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _7 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
== {{Śródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}{{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}} ==
Funkcja służy dościągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}.
Posiada własną walidacje nazwy stron, czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów.
Funkcja odpowiednio operuje na znacznikach wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''', tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
{{OpisParametrów
| 1 = Zmienne obiektowe: | komórka1 = tak
| 2 = {{Code|self}} {{Patrz|self}} | _2 = Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
*** {{Code|p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);}}, gdzie {{Code|p}} - to odpowiednia zmienna.
| 3 = Zwykłe zmienne: | komórka3 = tak
| 4 = {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} | _4 = Nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć.
| 5 = {{Code|nazwa_strony2}} {{Patrz|nazwa_strony2}} | _5 = Uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej.
| 6 = {{Code|czy_noinclude}} {{Patrz|czy_noinclude}} | _6 = Jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka.
| 7 = Zmienna tablicowa: | komórka7 = tak
| 8 = {{Code|szablony_magiczne}} {{Patrz|szablony_magiczne}} | _8 = Tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej.
| 9 = Inne zmienne: | komórka9 = tak
| 10 = {{Code|dokumentacja}} {{Patrz|dokumentacja}} | _10 = Określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}}.
| 11 = {{Code|czy_szablon}} {{Patrz|czy_szablon}} | _11 = Gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją.
| 12 = {{Code|nazwa_modulu_szablonu_opisu}} {{Patrz|nazwa_modulu_szablonu_opisu}} | _12 = Zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami '''{{lpg|HTML}}''' na znaki.
| 13 = {{Code|szablon_nie_opis}} {{Patrz|szablon_nie_opis}} | _13 = Zmienna wskazująca, czy {{Code|nazwa strony}} {{LinkPatrz|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowany, używany wraz ze zmienną: {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}}.
| 14 = Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:| komórka14 = tak
| 15 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} | _15 = Operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
| 16 = {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} | _16 = Funkcja operująca na komentarzach, przeciwnie jest używana funkcja: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}}.
| 17 = {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} | _17 = Funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów.
| 18 = {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} | _18 = Funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_analizy_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
}}
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}}, operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} | _1 = Tekst do analizy, jak w funkcji nadrzędnej.
| 2 = {{Code|nazwa_modulu_szablonu_opisu}} {{LinkPatrz|nazwa_modulu_szablonu_opisu}} | _2 = Nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}.
| 3 = {{Code|nazwa_strony_bez_kodow_html}} {{Patrz|nazwa_strony_bez_kodow_html}} | _3 = Jest to nazwa strony: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, tylko z kodami '''{{lpg|HTML}}''' zamienionymi na ich odpowiedniki znakowe.
| 4 = {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}} | _4 = Tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej.
| 5 = {{Code|tabela_nazw}} {{Patrz|tabela_nazw}} | _5 = Tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, wewnątrz tej funkcji nadrzędnej.
}}
{{Hr}}
Funkcja: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}, ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę: {{Code|tablica}}, w funkcji zwracanej przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod metatabelki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} {{Patrz|__metatablica}}, to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Ten rozdział zawiera kolejność wywołań poszczególnych kroków w funkcji.
==== Poprawność pewnych nazw ====
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]|p=Html}}}}, która z: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}}.
==== Parametry uzyskanej strony ====
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}} {{Patrz|uchwyt strony}}, {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} i {{Code|czy_istnieje}} {{Patrz|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów.
==== Składniki preprocesora kodu mechanizmu: {{nobold|{{NS|l=tak|k=mw|w=tak}}}} ====
* Gdy {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli: {{Code|czy_noinclude}} {{LinkPatrz|czy_noinclude}}, przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie. Ze strony są usuwane pozostałości ze znaczników wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''' i znaczników jak {{Tag|templatedata}},
* Przeciwna wypadek: wtedy: {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}}, jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione.
==== Komentarze ====
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}.
===== Usuwanie pseudoszablonówi niektporych instrukcji warunkowych =====
* Ustawiane są zmienne w: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}} {{LinkPatrz|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}} {{Patrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}, by usunąc różne instrukcje warunkowe.
==== Specjalne elementy zmieniające wikikod ====
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
==== Kodowanie bazy danych kodów {{nobold|{{Code|{{m|Szablonowe}}}}}} ====
* Jeśli: {{Code|szablon_nie_opis}} {{LinkPatrz|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
sgld6i7a88n34marxuz0udvacb2xif4
558294
558293
2026-10-02T13:25:28Z
Persino
2851
/* {{Śródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}{{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}} */
558294
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|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.SpreparowanyWikikodStrony}}{{Code|p.SpreparowanyWikikodStrony}} ==
Funkcja ściągąjąca opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Funkcja w opisach szablonów, a w niej instrukcje warunkowe podczas kodowania są rozwijane przy pomocy funkcji: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}}, a normalnie, gdy wewnątrz instrukcji warunkowych nie ma klamerek w funkcji, w składowej funkcji, tzn.: {{LinkPatrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja korzysta bezpośrednio z funkcji: {{LinkŚródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana.
| 2 = {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} | _2 = Nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw.
| 3 = {{Code|nazwa_modulu_szablonowa}} {{Patrz|nazwa_modulu_szablonowa}} | _3 = Nazwa modułu w wersji szablonowej, w wersji wywołaniowej.
| 4 = {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} | _4 = Przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony.
| 5 = {{Code|inkludowana}} {{Patrz|inkludowana}} | _5 = Przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej.
| 6 = Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem: | nagłówek6 = tak
| 7 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-SpreparowanyWikikodStrony}} | _7 = Funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, po kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku.
| 8 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-SpreparowanyWikikodStrony}} | _8 = Jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować.
| 9 = {{Code|__FUNKCJA3}} {{Patrz|__FUNKCJA3-SpreparowanyWikikodStrony}} | _9 = Funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}}.
| 10 = Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]|p=Szablonowe}}}} {{Patrz|UstalanieNazwyWywołania}}:| komórka10 = tak
| 11 = {{Code|__FUNKCJA4}} {{Patrz|__FUNKCJA4-SpreparowanyWikikodStrony}} | _11 = Funkcja, np. dekodująca nazwę szablonu.
| 12 = {{Code|__FUNKCJA5}} {{Patrz|__FUNKCJA5-SpreparowanyWikikodStrony}} | _12 = Funkcja, np. rozwijająca nazwę szablonu.
| 13 = Inne: | nagłówek13 = tak
| 14 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _14 = Funkcja do modyfikacji tekstu pobranego ze strony
| 15 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _15 = Funkcje do generowania tablicy bazy kodów.
}}
Definicje funkcji: {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-UstalanieNazwyWywołania}} i {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-UstalanieNazwyWywołania}}, które są potrzebne do konstrukcji wywołania funkcji: {{LinkPatrz|UstalanieNazwyWywołania}}, uzyskiwania nazwy szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} i {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}}, definicje tych funkcji:
* {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Tablica danych bazy kodów zakodowanego tekstu.
| 5 = {{Code|dokumentacja}} | _5 = Jak w: {{LinkPatrz|dokumentacja}}.
| 6 = {{Code|czy_nie_opis}} {{Patrz|czy_nie_opis}} | _6 = Czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu_caly}} {{Patrz|tekst_artykulu_caly}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} {{LinkPatrz|__FUNKCJA3-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu,nazwa_modulu_szablonowa)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_modulu}} | _1 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 2 = {{Code|nazwa_modulu_szablonowa}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory,czy_z_kluczem]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} | _1 = Nazwa szablonu do rozwinięcia.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}}. | _5 = Tabela parametrów potrzebna do szybszego działania '''{{ld|StronicowyParser|Stronicowego parsera}}'''.
| 6 = Gdy tą funkcją jest: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}}, te zmienne bezpośrednio w: {{Code|__FUNKCJA4}}, nie występują, ale za to występują w tej podanej szczególnej przykładowej funkcji, tzn. argumenty: | komórka6 = tak
| 7 = {{Code|czy_uwzgledniac_modyfikatory}} {{Patrz|czy_uwzgledniac_modyfikatory}} | _7 = Czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}}.
| 8 = {{Code|czy_z_kluczem}} {{Patrz|czy_z_kluczem}} | _8 = Czy klucze, o wzorze: {{Code|<nowiki>^klucz$</nowiki>}}, lub {{Code|<nowiki>^klucz[1-9]%d*$</nowiki>}}.
}}
Jeżeli w funkcji {{LinkPatrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}} nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}} w przeciwnym wypadku zwracane jest nazwa szablonu i wartość {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} | _1 = Jak w: {{LinkPatrz|nazwa_szablonu}}. To jest nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}.
| 2 = {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} | _2 = Tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, to jest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}}, w przypadku: {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}.
| 3 = {{Code|nazwa_modulu}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 4 = {{Code|nazwa_modulu_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{LzLua|frame:preprocess}}, w korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, z której korzysta {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}, jeżeli korzystanej tutaj funkcja zrzuciła niepowodzenie, to pierwsza wartość zwrótcone to: {{Code|nil}}, druga: {{Code|false}}, w przeciwnym wypadku zwraca nazwę rozwiniętego szablonu i drugą wartość zrzuconą: {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice:
; Przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy{{dk}} {{nobold|{{Code|czy_niezakodowana {{=}} true}}}}, i {{nobold|{{Code|czy_nie_opis {{=}} true}}}}, według funkcji{{dk}}
* {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów,
; W przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja:
* {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami.
: Te funkcje są wywoływane wewnątrz funkcji: {{LinkŚródtytuł|p.SpreparowanyWikikodStrony}}. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Zmienna obiektowa.
| 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Strona, a jednocześnie uchwyt do bazy danych kodów zakodowanego tekstu, o nazwie modułu do rozwinięcia i zakodowania.
| 3 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _3 = Nazwa strony szablonowa, w postaci wywołaniowej szablonów.
| 4 = {{Code|inkludowana}} {{LinkPatrz|inkludowana}} | _4 = Zmienna, czy strona ma być interpretowana jako inkludowana.
| 5 = Zmienne funkcyjne: | nagłówek5 = tak
| 6 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _6 = Funkcja generująca zawartość, może być zmodyfikowana, na podstawie pełnej nazwy strony, używana w funkcji: jest to {{Code|__FUNKCJA3}} w: {{Code|{{sr|#FunkcjaIterajacaRozwijanegoSzablonu|p=Szablonowe}}}} {{Patrz|__FUNKCJA-FunkcjaIterajacaRozwijanegoSzablonu}}.
| 7 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _7 = Funkcja do generowania zawartości, może być zmodyfikowana, według podanej jej wartości, używana w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|FUNKCJA2-KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, w postaci zmodyfikowanej, czyli w wersji: {{Code|__FUNKCJA2}},
| 8 = Inne zmienne funkcyjne: | nagłówek8 = tak
| 9 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _9 = Inne operacje wykonywane na pobranym tekście.
| 10 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _10 = Funkcja użyta do generowania tablicy bazy kodów.
}}
Funkcje {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}}, zostały już opisane w tym module, więc wystarczy opisać inne.
{{Hr}}
* Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|pelna_nazwa_szablonu}} | _1 = Pełna nazwa szablonu.
| 2 = {{Code|tabela_parametrow_szablonu}} | _2 = Tabela parametrów wywołania szablonu do rozwinięcia.
| 3 = {{Code|tabela_modyfikatorow}} | _3 = Tabela modyfikatorów danego wywołania szablonowego.
}}
{{Hr}}
* Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Zawartość elementu wikikodu według {{Code|{{m|Szablonowe}}}}.
| 2 = {{Code|obiekt}} {{Patrz|obiekt}} | _2 = Nazwa obiektu szablonowego, jak: {{Code|SZABLON}}.
| 3 = {{Code|kod}} {{Patrz|kod}} | _3 = Numer obiektu, typu: {{Code|obiekt}} {{LinkPatrz|obiekt}}.
| 4 = {{Code|tekst}} | _4 = Tekst całego artykułu.
| 5 = {{Code|numer_szablonu}} {{Patrz|numer_szablonu}} | _5 = Tabela numerów dla różnych obiektów w jednej tabeli.
| 6 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _6 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 7 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _7 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
== {{Śródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}{{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}} ==
Funkcja służy dościągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}.
Posiada własną walidacje nazwy stron, czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów.
Funkcja odpowiednio operuje na znacznikach wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''', tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
{{OpisParametrów
| 1 = Zmienne obiektowe: | nagłówek1 = tak
| 2 = {{Code|self}} {{Patrz|self}} | _2 = Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
*** {{Code|p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);}}, gdzie {{Code|p}} - to odpowiednia zmienna.
| 3 = Zwykłe zmienne: | nagłówek3 = tak
| 4 = {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} | _4 = Nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć.
| 5 = {{Code|nazwa_strony2}} {{Patrz|nazwa_strony2}} | _5 = Uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej.
| 6 = {{Code|czy_noinclude}} {{Patrz|czy_noinclude}} | _6 = Jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka.
| 7 = Zmienna tablicowa: | nagłówek7 = tak
| 8 = {{Code|szablony_magiczne}} {{Patrz|szablony_magiczne}} | _8 = Tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej.
| 9 = Inne zmienne: | nagłówek9 = tak
| 10 = {{Code|dokumentacja}} {{Patrz|dokumentacja}} | _10 = Określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}}.
| 11 = {{Code|czy_szablon}} {{Patrz|czy_szablon}} | _11 = Gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją.
| 12 = {{Code|nazwa_modulu_szablonu_opisu}} {{Patrz|nazwa_modulu_szablonu_opisu}} | _12 = Zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami '''{{lpg|HTML}}''' na znaki.
| 13 = {{Code|szablon_nie_opis}} {{Patrz|szablon_nie_opis}} | _13 = Zmienna wskazująca, czy {{Code|nazwa strony}} {{LinkPatrz|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowany, używany wraz ze zmienną: {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}}.
| 14 = Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:| nagłówek14 = tak
| 15 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} | _15 = Operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
| 16 = {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} | _16 = Funkcja operująca na komentarzach, przeciwnie jest używana funkcja: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}}.
| 17 = {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} | _17 = Funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów.
| 18 = {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} | _18 = Funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_analizy_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
}}
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}}, operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} | _1 = Tekst do analizy, jak w funkcji nadrzędnej.
| 2 = {{Code|nazwa_modulu_szablonu_opisu}} {{LinkPatrz|nazwa_modulu_szablonu_opisu}} | _2 = Nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}.
| 3 = {{Code|nazwa_strony_bez_kodow_html}} {{Patrz|nazwa_strony_bez_kodow_html}} | _3 = Jest to nazwa strony: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, tylko z kodami '''{{lpg|HTML}}''' zamienionymi na ich odpowiedniki znakowe.
| 4 = {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}} | _4 = Tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej.
| 5 = {{Code|tabela_nazw}} {{Patrz|tabela_nazw}} | _5 = Tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, wewnątrz tej funkcji nadrzędnej.
}}
{{Hr}}
Funkcja: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}, ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę: {{Code|tablica}}, w funkcji zwracanej przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod metatabelki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} {{Patrz|__metatablica}}, to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Ten rozdział zawiera kolejność wywołań poszczególnych kroków w funkcji.
==== Poprawność pewnych nazw ====
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]|p=Html}}}}, która z: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}}.
==== Parametry uzyskanej strony ====
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}} {{Patrz|uchwyt strony}}, {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} i {{Code|czy_istnieje}} {{Patrz|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów.
==== Składniki preprocesora kodu mechanizmu: {{nobold|{{NS|l=tak|k=mw|w=tak}}}} ====
* Gdy {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli: {{Code|czy_noinclude}} {{LinkPatrz|czy_noinclude}}, przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie. Ze strony są usuwane pozostałości ze znaczników wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''' i znaczników jak {{Tag|templatedata}},
* Przeciwna wypadek: wtedy: {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}}, jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione.
==== Komentarze ====
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}.
===== Usuwanie pseudoszablonówi niektporych instrukcji warunkowych =====
* Ustawiane są zmienne w: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}} {{LinkPatrz|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}} {{Patrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}, by usunąc różne instrukcje warunkowe.
==== Specjalne elementy zmieniające wikikod ====
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
==== Kodowanie bazy danych kodów {{nobold|{{Code|{{m|Szablonowe}}}}}} ====
* Jeśli: {{Code|szablon_nie_opis}} {{LinkPatrz|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
7h547jhwzs2a4mc8o1zqv5ly165jclc
558295
558294
2026-10-02T13:26:10Z
Persino
2851
/* {{Śródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}{{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}} */
558295
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|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.SpreparowanyWikikodStrony}}{{Code|p.SpreparowanyWikikodStrony}} ==
Funkcja ściągąjąca opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Funkcja w opisach szablonów, a w niej instrukcje warunkowe podczas kodowania są rozwijane przy pomocy funkcji: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}}, a normalnie, gdy wewnątrz instrukcji warunkowych nie ma klamerek w funkcji, w składowej funkcji, tzn.: {{LinkPatrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja korzysta bezpośrednio z funkcji: {{LinkŚródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana.
| 2 = {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} | _2 = Nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw.
| 3 = {{Code|nazwa_modulu_szablonowa}} {{Patrz|nazwa_modulu_szablonowa}} | _3 = Nazwa modułu w wersji szablonowej, w wersji wywołaniowej.
| 4 = {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} | _4 = Przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony.
| 5 = {{Code|inkludowana}} {{Patrz|inkludowana}} | _5 = Przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej.
| 6 = Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem: | nagłówek6 = tak
| 7 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-SpreparowanyWikikodStrony}} | _7 = Funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, po kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku.
| 8 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-SpreparowanyWikikodStrony}} | _8 = Jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować.
| 9 = {{Code|__FUNKCJA3}} {{Patrz|__FUNKCJA3-SpreparowanyWikikodStrony}} | _9 = Funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}}.
| 10 = Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]|p=Szablonowe}}}} {{Patrz|UstalanieNazwyWywołania}}:| komórka10 = tak
| 11 = {{Code|__FUNKCJA4}} {{Patrz|__FUNKCJA4-SpreparowanyWikikodStrony}} | _11 = Funkcja, np. dekodująca nazwę szablonu.
| 12 = {{Code|__FUNKCJA5}} {{Patrz|__FUNKCJA5-SpreparowanyWikikodStrony}} | _12 = Funkcja, np. rozwijająca nazwę szablonu.
| 13 = Inne: | nagłówek13 = tak
| 14 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _14 = Funkcja do modyfikacji tekstu pobranego ze strony
| 15 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _15 = Funkcje do generowania tablicy bazy kodów.
}}
Definicje funkcji: {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-UstalanieNazwyWywołania}} i {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-UstalanieNazwyWywołania}}, które są potrzebne do konstrukcji wywołania funkcji: {{LinkPatrz|UstalanieNazwyWywołania}}, uzyskiwania nazwy szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} i {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}}, definicje tych funkcji:
* {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Tablica danych bazy kodów zakodowanego tekstu.
| 5 = {{Code|dokumentacja}} | _5 = Jak w: {{LinkPatrz|dokumentacja}}.
| 6 = {{Code|czy_nie_opis}} {{Patrz|czy_nie_opis}} | _6 = Czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu_caly}} {{Patrz|tekst_artykulu_caly}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} {{LinkPatrz|__FUNKCJA3-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu,nazwa_modulu_szablonowa)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_modulu}} | _1 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 2 = {{Code|nazwa_modulu_szablonowa}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory,czy_z_kluczem]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} | _1 = Nazwa szablonu do rozwinięcia.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}}. | _5 = Tabela parametrów potrzebna do szybszego działania '''{{ld|StronicowyParser|Stronicowego parsera}}'''.
| 6 = Gdy tą funkcją jest: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}}, te zmienne bezpośrednio w: {{Code|__FUNKCJA4}}, nie występują, ale za to występują w tej podanej szczególnej przykładowej funkcji, tzn. argumenty: | komórka6 = tak
| 7 = {{Code|czy_uwzgledniac_modyfikatory}} {{Patrz|czy_uwzgledniac_modyfikatory}} | _7 = Czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}}.
| 8 = {{Code|czy_z_kluczem}} {{Patrz|czy_z_kluczem}} | _8 = Czy klucze, o wzorze: {{Code|<nowiki>^klucz$</nowiki>}}, lub {{Code|<nowiki>^klucz[1-9]%d*$</nowiki>}}.
}}
Jeżeli w funkcji {{LinkPatrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}} nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}} w przeciwnym wypadku zwracane jest nazwa szablonu i wartość {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} | _1 = Jak w: {{LinkPatrz|nazwa_szablonu}}. To jest nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}.
| 2 = {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} | _2 = Tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, to jest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}}, w przypadku: {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}.
| 3 = {{Code|nazwa_modulu}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 4 = {{Code|nazwa_modulu_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{LzLua|frame:preprocess}}, w korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, z której korzysta {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}, jeżeli korzystanej tutaj funkcja zrzuciła niepowodzenie, to pierwsza wartość zwrótcone to: {{Code|nil}}, druga: {{Code|false}}, w przeciwnym wypadku zwraca nazwę rozwiniętego szablonu i drugą wartość zrzuconą: {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice:
; Przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy{{dk}} {{nobold|{{Code|czy_niezakodowana {{=}} true}}}}, i {{nobold|{{Code|czy_nie_opis {{=}} true}}}}, według funkcji{{dk}}
* {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów,
; W przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja:
* {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami.
: Te funkcje są wywoływane wewnątrz funkcji: {{LinkŚródtytuł|p.SpreparowanyWikikodStrony}}. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Zmienna obiektowa.
| 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Strona, a jednocześnie uchwyt do bazy danych kodów zakodowanego tekstu, o nazwie modułu do rozwinięcia i zakodowania.
| 3 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _3 = Nazwa strony szablonowa, w postaci wywołaniowej szablonów.
| 4 = {{Code|inkludowana}} {{LinkPatrz|inkludowana}} | _4 = Zmienna, czy strona ma być interpretowana jako inkludowana.
| 5 = Zmienne funkcyjne: | nagłówek5 = tak
| 6 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _6 = Funkcja generująca zawartość, może być zmodyfikowana, na podstawie pełnej nazwy strony, używana w funkcji: jest to {{Code|__FUNKCJA3}} w: {{Code|{{sr|#FunkcjaIterajacaRozwijanegoSzablonu|p=Szablonowe}}}} {{Patrz|__FUNKCJA-FunkcjaIterajacaRozwijanegoSzablonu}}.
| 7 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _7 = Funkcja do generowania zawartości, może być zmodyfikowana, według podanej jej wartości, używana w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|FUNKCJA2-KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, w postaci zmodyfikowanej, czyli w wersji: {{Code|__FUNKCJA2}},
| 8 = Inne zmienne funkcyjne: | nagłówek8 = tak
| 9 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _9 = Inne operacje wykonywane na pobranym tekście.
| 10 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _10 = Funkcja użyta do generowania tablicy bazy kodów.
}}
Funkcje {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}}, zostały już opisane w tym module, więc wystarczy opisać inne.
{{Hr}}
* Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|pelna_nazwa_szablonu}} | _1 = Pełna nazwa szablonu.
| 2 = {{Code|tabela_parametrow_szablonu}} | _2 = Tabela parametrów wywołania szablonu do rozwinięcia.
| 3 = {{Code|tabela_modyfikatorow}} | _3 = Tabela modyfikatorów danego wywołania szablonowego.
}}
{{Hr}}
* Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Zawartość elementu wikikodu według {{Code|{{m|Szablonowe}}}}.
| 2 = {{Code|obiekt}} {{Patrz|obiekt}} | _2 = Nazwa obiektu szablonowego, jak: {{Code|SZABLON}}.
| 3 = {{Code|kod}} {{Patrz|kod}} | _3 = Numer obiektu, typu: {{Code|obiekt}} {{LinkPatrz|obiekt}}.
| 4 = {{Code|tekst}} | _4 = Tekst całego artykułu.
| 5 = {{Code|numer_szablonu}} {{Patrz|numer_szablonu}} | _5 = Tabela numerów dla różnych obiektów w jednej tabeli.
| 6 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _6 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 7 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _7 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
== {{Śródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}{{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}} ==
Funkcja służy dościągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}.
Posiada własną walidacje nazwy stron, czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów.
Funkcja odpowiednio operuje na znacznikach wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''', tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
{{OpisParametrów
| 1 = Zmienne obiektowe: | nagłówek1 = tak
| 2 = {{Code|self}} {{Patrz|self}} | _2 = Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
*** {{Code|p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);}}, gdzie {{Code|p}} - to odpowiednia zmienna.
| 3 = Zwykłe zmienne: | nagłówek3 = tak
| 4 = {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} | _4 = Nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć.
| 5 = {{Code|nazwa_strony2}} {{Patrz|nazwa_strony2}} | _5 = Uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej.
| 6 = {{Code|czy_noinclude}} {{Patrz|czy_noinclude}} | _6 = Jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka.
| 7 = Zmienne tablicowe: | nagłówek7 = tak
| 8 = {{Code|szablony_magiczne}} {{Patrz|szablony_magiczne}} | _8 = Tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej.
| 9 = Inne zmienne: | nagłówek9 = tak
| 10 = {{Code|dokumentacja}} {{Patrz|dokumentacja}} | _10 = Określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}}.
| 11 = {{Code|czy_szablon}} {{Patrz|czy_szablon}} | _11 = Gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją.
| 12 = {{Code|nazwa_modulu_szablonu_opisu}} {{Patrz|nazwa_modulu_szablonu_opisu}} | _12 = Zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami '''{{lpg|HTML}}''' na znaki.
| 13 = {{Code|szablon_nie_opis}} {{Patrz|szablon_nie_opis}} | _13 = Zmienna wskazująca, czy {{Code|nazwa strony}} {{LinkPatrz|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowany, używany wraz ze zmienną: {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}}.
| 14 = Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:| nagłówek14 = tak
| 15 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} | _15 = Operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
| 16 = {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} | _16 = Funkcja operująca na komentarzach, przeciwnie jest używana funkcja: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}}.
| 17 = {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} | _17 = Funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów.
| 18 = {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} | _18 = Funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_analizy_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
}}
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}}, operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} | _1 = Tekst do analizy, jak w funkcji nadrzędnej.
| 2 = {{Code|nazwa_modulu_szablonu_opisu}} {{LinkPatrz|nazwa_modulu_szablonu_opisu}} | _2 = Nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}.
| 3 = {{Code|nazwa_strony_bez_kodow_html}} {{Patrz|nazwa_strony_bez_kodow_html}} | _3 = Jest to nazwa strony: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, tylko z kodami '''{{lpg|HTML}}''' zamienionymi na ich odpowiedniki znakowe.
| 4 = {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}} | _4 = Tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej.
| 5 = {{Code|tabela_nazw}} {{Patrz|tabela_nazw}} | _5 = Tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, wewnątrz tej funkcji nadrzędnej.
}}
{{Hr}}
Funkcja: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}, ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę: {{Code|tablica}}, w funkcji zwracanej przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod metatabelki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} {{Patrz|__metatablica}}, to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Ten rozdział zawiera kolejność wywołań poszczególnych kroków w funkcji.
==== Poprawność pewnych nazw ====
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]|p=Html}}}}, która z: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}}.
==== Parametry uzyskanej strony ====
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}} {{Patrz|uchwyt strony}}, {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} i {{Code|czy_istnieje}} {{Patrz|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów.
==== Składniki preprocesora kodu mechanizmu: {{nobold|{{NS|l=tak|k=mw|w=tak}}}} ====
* Gdy {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli: {{Code|czy_noinclude}} {{LinkPatrz|czy_noinclude}}, przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie. Ze strony są usuwane pozostałości ze znaczników wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''' i znaczników jak {{Tag|templatedata}},
* Przeciwna wypadek: wtedy: {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}}, jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione.
==== Komentarze ====
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}.
===== Usuwanie pseudoszablonówi niektporych instrukcji warunkowych =====
* Ustawiane są zmienne w: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}} {{LinkPatrz|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}} {{Patrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}, by usunąc różne instrukcje warunkowe.
==== Specjalne elementy zmieniające wikikod ====
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
==== Kodowanie bazy danych kodów {{nobold|{{Code|{{m|Szablonowe}}}}}} ====
* Jeśli: {{Code|szablon_nie_opis}} {{LinkPatrz|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
3uz9rhmk8qz4mjwlqpnrzvykxff1zcz
558296
558295
2026-10-02T13:28:36Z
Persino
2851
/* {{Śródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}{{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}} */
558296
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|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.SpreparowanyWikikodStrony}}{{Code|p.SpreparowanyWikikodStrony}} ==
Funkcja ściągąjąca opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Funkcja w opisach szablonów, a w niej instrukcje warunkowe podczas kodowania są rozwijane przy pomocy funkcji: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}}, a normalnie, gdy wewnątrz instrukcji warunkowych nie ma klamerek w funkcji, w składowej funkcji, tzn.: {{LinkPatrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja korzysta bezpośrednio z funkcji: {{LinkŚródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana.
| 2 = {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} | _2 = Nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw.
| 3 = {{Code|nazwa_modulu_szablonowa}} {{Patrz|nazwa_modulu_szablonowa}} | _3 = Nazwa modułu w wersji szablonowej, w wersji wywołaniowej.
| 4 = {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} | _4 = Przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony.
| 5 = {{Code|inkludowana}} {{Patrz|inkludowana}} | _5 = Przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej.
| 6 = Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem: | nagłówek6 = tak
| 7 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-SpreparowanyWikikodStrony}} | _7 = Funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, po kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku.
| 8 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-SpreparowanyWikikodStrony}} | _8 = Jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować.
| 9 = {{Code|__FUNKCJA3}} {{Patrz|__FUNKCJA3-SpreparowanyWikikodStrony}} | _9 = Funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}}.
| 10 = Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]|p=Szablonowe}}}} {{Patrz|UstalanieNazwyWywołania}}:| komórka10 = tak
| 11 = {{Code|__FUNKCJA4}} {{Patrz|__FUNKCJA4-SpreparowanyWikikodStrony}} | _11 = Funkcja, np. dekodująca nazwę szablonu.
| 12 = {{Code|__FUNKCJA5}} {{Patrz|__FUNKCJA5-SpreparowanyWikikodStrony}} | _12 = Funkcja, np. rozwijająca nazwę szablonu.
| 13 = Inne: | nagłówek13 = tak
| 14 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _14 = Funkcja do modyfikacji tekstu pobranego ze strony
| 15 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _15 = Funkcje do generowania tablicy bazy kodów.
}}
Definicje funkcji: {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-UstalanieNazwyWywołania}} i {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-UstalanieNazwyWywołania}}, które są potrzebne do konstrukcji wywołania funkcji: {{LinkPatrz|UstalanieNazwyWywołania}}, uzyskiwania nazwy szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} i {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}}, definicje tych funkcji:
* {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Tablica danych bazy kodów zakodowanego tekstu.
| 5 = {{Code|dokumentacja}} | _5 = Jak w: {{LinkPatrz|dokumentacja}}.
| 6 = {{Code|czy_nie_opis}} {{Patrz|czy_nie_opis}} | _6 = Czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu_caly}} {{Patrz|tekst_artykulu_caly}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} {{LinkPatrz|__FUNKCJA3-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu,nazwa_modulu_szablonowa)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_modulu}} | _1 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 2 = {{Code|nazwa_modulu_szablonowa}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory,czy_z_kluczem]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} | _1 = Nazwa szablonu do rozwinięcia.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}}. | _5 = Tabela parametrów potrzebna do szybszego działania '''{{ld|StronicowyParser|Stronicowego parsera}}'''.
| 6 = Gdy tą funkcją jest: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}}, te zmienne bezpośrednio w: {{Code|__FUNKCJA4}}, nie występują, ale za to występują w tej podanej szczególnej przykładowej funkcji, tzn. argumenty: | komórka6 = tak
| 7 = {{Code|czy_uwzgledniac_modyfikatory}} {{Patrz|czy_uwzgledniac_modyfikatory}} | _7 = Czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}}.
| 8 = {{Code|czy_z_kluczem}} {{Patrz|czy_z_kluczem}} | _8 = Czy klucze, o wzorze: {{Code|<nowiki>^klucz$</nowiki>}}, lub {{Code|<nowiki>^klucz[1-9]%d*$</nowiki>}}.
}}
Jeżeli w funkcji {{LinkPatrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}} nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}} w przeciwnym wypadku zwracane jest nazwa szablonu i wartość {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} | _1 = Jak w: {{LinkPatrz|nazwa_szablonu}}. To jest nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}.
| 2 = {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} | _2 = Tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, to jest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}}, w przypadku: {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}.
| 3 = {{Code|nazwa_modulu}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 4 = {{Code|nazwa_modulu_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{LzLua|frame:preprocess}}, w korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, z której korzysta {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}, jeżeli korzystanej tutaj funkcja zrzuciła niepowodzenie, to pierwsza wartość zwrótcone to: {{Code|nil}}, druga: {{Code|false}}, w przeciwnym wypadku zwraca nazwę rozwiniętego szablonu i drugą wartość zrzuconą: {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice:
; Przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy{{dk}} {{nobold|{{Code|czy_niezakodowana {{=}} true}}}}, i {{nobold|{{Code|czy_nie_opis {{=}} true}}}}, według funkcji{{dk}}
* {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów,
; W przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja:
* {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami.
: Te funkcje są wywoływane wewnątrz funkcji: {{LinkŚródtytuł|p.SpreparowanyWikikodStrony}}. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Zmienna obiektowa.
| 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Strona, a jednocześnie uchwyt do bazy danych kodów zakodowanego tekstu, o nazwie modułu do rozwinięcia i zakodowania.
| 3 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _3 = Nazwa strony szablonowa, w postaci wywołaniowej szablonów.
| 4 = {{Code|inkludowana}} {{LinkPatrz|inkludowana}} | _4 = Zmienna, czy strona ma być interpretowana jako inkludowana.
| 5 = Zmienne funkcyjne: | nagłówek5 = tak
| 6 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _6 = Funkcja generująca zawartość, może być zmodyfikowana, na podstawie pełnej nazwy strony, używana w funkcji: jest to {{Code|__FUNKCJA3}} w: {{Code|{{sr|#FunkcjaIterajacaRozwijanegoSzablonu|p=Szablonowe}}}} {{Patrz|__FUNKCJA-FunkcjaIterajacaRozwijanegoSzablonu}}.
| 7 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _7 = Funkcja do generowania zawartości, może być zmodyfikowana, według podanej jej wartości, używana w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|FUNKCJA2-KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, w postaci zmodyfikowanej, czyli w wersji: {{Code|__FUNKCJA2}},
| 8 = Inne zmienne funkcyjne: | nagłówek8 = tak
| 9 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _9 = Inne operacje wykonywane na pobranym tekście.
| 10 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _10 = Funkcja użyta do generowania tablicy bazy kodów.
}}
Funkcje {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}}, zostały już opisane w tym module, więc wystarczy opisać inne.
{{Hr}}
* Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|pelna_nazwa_szablonu}} | _1 = Pełna nazwa szablonu.
| 2 = {{Code|tabela_parametrow_szablonu}} | _2 = Tabela parametrów wywołania szablonu do rozwinięcia.
| 3 = {{Code|tabela_modyfikatorow}} | _3 = Tabela modyfikatorów danego wywołania szablonowego.
}}
{{Hr}}
* Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Zawartość elementu wikikodu według {{Code|{{m|Szablonowe}}}}.
| 2 = {{Code|obiekt}} {{Patrz|obiekt}} | _2 = Nazwa obiektu szablonowego, jak: {{Code|SZABLON}}.
| 3 = {{Code|kod}} {{Patrz|kod}} | _3 = Numer obiektu, typu: {{Code|obiekt}} {{LinkPatrz|obiekt}}.
| 4 = {{Code|tekst}} | _4 = Tekst całego artykułu.
| 5 = {{Code|numer_szablonu}} {{Patrz|numer_szablonu}} | _5 = Tabela numerów dla różnych obiektów w jednej tabeli.
| 6 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _6 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 7 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _7 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
== {{Śródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}{{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}} ==
Funkcja służy dościągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}.
Posiada własną walidacje nazwy stron, czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów.
Funkcja odpowiednio operuje na znacznikach wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''', tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
{{OpisParametrów
| 1 = Zmienne obiektowe: | nagłówek1 = tak
| 2 = {{Code|self}} {{Patrz|self}} | _2 = Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 3 = Zwykłe zmienne: | nagłówek3 = tak
| 4 = {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} | _4 = Nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć.
| 5 = {{Code|nazwa_strony2}} {{Patrz|nazwa_strony2}} | _5 = Uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej.
| 6 = {{Code|czy_noinclude}} {{Patrz|czy_noinclude}} | _6 = Jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka.
| 7 = Zmienne tablicowe: | nagłówek7 = tak
| 8 = {{Code|szablony_magiczne}} {{Patrz|szablony_magiczne}} | _8 = Tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej.
| 9 = Inne zmienne: | nagłówek9 = tak
| 10 = {{Code|dokumentacja}} {{Patrz|dokumentacja}} | _10 = Określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}}.
| 11 = {{Code|czy_szablon}} {{Patrz|czy_szablon}} | _11 = Gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją.
| 12 = {{Code|nazwa_modulu_szablonu_opisu}} {{Patrz|nazwa_modulu_szablonu_opisu}} | _12 = Zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami '''{{lpg|HTML}}''' na znaki.
| 13 = {{Code|szablon_nie_opis}} {{Patrz|szablon_nie_opis}} | _13 = Zmienna wskazująca, czy {{Code|nazwa strony}} {{LinkPatrz|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowany, używany wraz ze zmienną: {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}}.
| 14 = Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:| nagłówek14 = tak
| 15 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} | _15 = Operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
| 16 = {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} | _16 = Funkcja operująca na komentarzach, przeciwnie jest używana funkcja: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}}.
| 17 = {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} | _17 = Funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów.
| 18 = {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} | _18 = Funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_analizy_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
}}
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}}, operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} | _1 = Tekst do analizy, jak w funkcji nadrzędnej.
| 2 = {{Code|nazwa_modulu_szablonu_opisu}} {{LinkPatrz|nazwa_modulu_szablonu_opisu}} | _2 = Nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}.
| 3 = {{Code|nazwa_strony_bez_kodow_html}} {{Patrz|nazwa_strony_bez_kodow_html}} | _3 = Jest to nazwa strony: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, tylko z kodami '''{{lpg|HTML}}''' zamienionymi na ich odpowiedniki znakowe.
| 4 = {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}} | _4 = Tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej.
| 5 = {{Code|tabela_nazw}} {{Patrz|tabela_nazw}} | _5 = Tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, wewnątrz tej funkcji nadrzędnej.
}}
{{Hr}}
Funkcja: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}, ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę: {{Code|tablica}}, w funkcji zwracanej przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod metatabelki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} {{Patrz|__metatablica}}, to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Ten rozdział zawiera kolejność wywołań poszczególnych kroków w funkcji.
==== Poprawność pewnych nazw ====
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]|p=Html}}}}, która z: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}}.
==== Parametry uzyskanej strony ====
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}} {{Patrz|uchwyt strony}}, {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} i {{Code|czy_istnieje}} {{Patrz|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów.
==== Składniki preprocesora kodu mechanizmu: {{nobold|{{NS|l=tak|k=mw|w=tak}}}} ====
* Gdy {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli: {{Code|czy_noinclude}} {{LinkPatrz|czy_noinclude}}, przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie. Ze strony są usuwane pozostałości ze znaczników wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''' i znaczników jak {{Tag|templatedata}},
* Przeciwna wypadek: wtedy: {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}}, jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione.
==== Komentarze ====
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}.
===== Usuwanie pseudoszablonówi niektporych instrukcji warunkowych =====
* Ustawiane są zmienne w: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}} {{LinkPatrz|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}} {{Patrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}, by usunąc różne instrukcje warunkowe.
==== Specjalne elementy zmieniające wikikod ====
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
==== Kodowanie bazy danych kodów {{nobold|{{Code|{{m|Szablonowe}}}}}} ====
* Jeśli: {{Code|szablon_nie_opis}} {{LinkPatrz|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
lfxoz8zr4wklu4oi2dp3dp9cwn3yfr9
558297
558296
2026-10-02T13:29:51Z
Persino
2851
/* {{Śródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}{{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}} */
558297
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|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.SpreparowanyWikikodStrony}}{{Code|p.SpreparowanyWikikodStrony}} ==
Funkcja ściągąjąca opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Funkcja w opisach szablonów, a w niej instrukcje warunkowe podczas kodowania są rozwijane przy pomocy funkcji: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}}, a normalnie, gdy wewnątrz instrukcji warunkowych nie ma klamerek w funkcji, w składowej funkcji, tzn.: {{LinkPatrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja korzysta bezpośrednio z funkcji: {{LinkŚródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana.
| 2 = {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} | _2 = Nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw.
| 3 = {{Code|nazwa_modulu_szablonowa}} {{Patrz|nazwa_modulu_szablonowa}} | _3 = Nazwa modułu w wersji szablonowej, w wersji wywołaniowej.
| 4 = {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} | _4 = Przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony.
| 5 = {{Code|inkludowana}} {{Patrz|inkludowana}} | _5 = Przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej.
| 6 = Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem: | nagłówek6 = tak
| 7 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-SpreparowanyWikikodStrony}} | _7 = Funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, po kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku.
| 8 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-SpreparowanyWikikodStrony}} | _8 = Jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować.
| 9 = {{Code|__FUNKCJA3}} {{Patrz|__FUNKCJA3-SpreparowanyWikikodStrony}} | _9 = Funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}}.
| 10 = Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]|p=Szablonowe}}}} {{Patrz|UstalanieNazwyWywołania}}:| komórka10 = tak
| 11 = {{Code|__FUNKCJA4}} {{Patrz|__FUNKCJA4-SpreparowanyWikikodStrony}} | _11 = Funkcja, np. dekodująca nazwę szablonu.
| 12 = {{Code|__FUNKCJA5}} {{Patrz|__FUNKCJA5-SpreparowanyWikikodStrony}} | _12 = Funkcja, np. rozwijająca nazwę szablonu.
| 13 = Inne: | nagłówek13 = tak
| 14 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _14 = Funkcja do modyfikacji tekstu pobranego ze strony
| 15 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _15 = Funkcje do generowania tablicy bazy kodów.
}}
Definicje funkcji: {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-UstalanieNazwyWywołania}} i {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-UstalanieNazwyWywołania}}, które są potrzebne do konstrukcji wywołania funkcji: {{LinkPatrz|UstalanieNazwyWywołania}}, uzyskiwania nazwy szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} i {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}}, definicje tych funkcji:
* {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Tablica danych bazy kodów zakodowanego tekstu.
| 5 = {{Code|dokumentacja}} | _5 = Jak w: {{LinkPatrz|dokumentacja}}.
| 6 = {{Code|czy_nie_opis}} {{Patrz|czy_nie_opis}} | _6 = Czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu_caly}} {{Patrz|tekst_artykulu_caly}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} {{LinkPatrz|__FUNKCJA3-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu,nazwa_modulu_szablonowa)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_modulu}} | _1 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 2 = {{Code|nazwa_modulu_szablonowa}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory,czy_z_kluczem]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} | _1 = Nazwa szablonu do rozwinięcia.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}}. | _5 = Tabela parametrów potrzebna do szybszego działania '''{{ld|StronicowyParser|Stronicowego parsera}}'''.
| 6 = Gdy tą funkcją jest: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}}, te zmienne bezpośrednio w: {{Code|__FUNKCJA4}}, nie występują, ale za to występują w tej podanej szczególnej przykładowej funkcji, tzn. argumenty: | komórka6 = tak
| 7 = {{Code|czy_uwzgledniac_modyfikatory}} {{Patrz|czy_uwzgledniac_modyfikatory}} | _7 = Czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}}.
| 8 = {{Code|czy_z_kluczem}} {{Patrz|czy_z_kluczem}} | _8 = Czy klucze, o wzorze: {{Code|<nowiki>^klucz$</nowiki>}}, lub {{Code|<nowiki>^klucz[1-9]%d*$</nowiki>}}.
}}
Jeżeli w funkcji {{LinkPatrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}} nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}} w przeciwnym wypadku zwracane jest nazwa szablonu i wartość {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} | _1 = Jak w: {{LinkPatrz|nazwa_szablonu}}. To jest nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}.
| 2 = {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} | _2 = Tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, to jest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}}, w przypadku: {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}.
| 3 = {{Code|nazwa_modulu}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 4 = {{Code|nazwa_modulu_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{LzLua|frame:preprocess}}, w korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, z której korzysta {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}, jeżeli korzystanej tutaj funkcja zrzuciła niepowodzenie, to pierwsza wartość zwrótcone to: {{Code|nil}}, druga: {{Code|false}}, w przeciwnym wypadku zwraca nazwę rozwiniętego szablonu i drugą wartość zrzuconą: {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice:
; Przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy{{dk}} {{nobold|{{Code|czy_niezakodowana {{=}} true}}}}, i {{nobold|{{Code|czy_nie_opis {{=}} true}}}}, według funkcji{{dk}}
* {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów,
; W przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja:
* {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami.
: Te funkcje są wywoływane wewnątrz funkcji: {{LinkŚródtytuł|p.SpreparowanyWikikodStrony}}. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Zmienna obiektowa.
| 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Strona, a jednocześnie uchwyt do bazy danych kodów zakodowanego tekstu, o nazwie modułu do rozwinięcia i zakodowania.
| 3 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _3 = Nazwa strony szablonowa, w postaci wywołaniowej szablonów.
| 4 = {{Code|inkludowana}} {{LinkPatrz|inkludowana}} | _4 = Zmienna, czy strona ma być interpretowana jako inkludowana.
| 5 = Zmienne funkcyjne: | nagłówek5 = tak
| 6 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _6 = Funkcja generująca zawartość, może być zmodyfikowana, na podstawie pełnej nazwy strony, używana w funkcji: jest to {{Code|__FUNKCJA3}} w: {{Code|{{sr|#FunkcjaIterajacaRozwijanegoSzablonu|p=Szablonowe}}}} {{Patrz|__FUNKCJA-FunkcjaIterajacaRozwijanegoSzablonu}}.
| 7 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _7 = Funkcja do generowania zawartości, może być zmodyfikowana, według podanej jej wartości, używana w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|FUNKCJA2-KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, w postaci zmodyfikowanej, czyli w wersji: {{Code|__FUNKCJA2}},
| 8 = Inne zmienne funkcyjne: | nagłówek8 = tak
| 9 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _9 = Inne operacje wykonywane na pobranym tekście.
| 10 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _10 = Funkcja użyta do generowania tablicy bazy kodów.
}}
Funkcje {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}}, zostały już opisane w tym module, więc wystarczy opisać inne.
{{Hr}}
* Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|pelna_nazwa_szablonu}} | _1 = Pełna nazwa szablonu.
| 2 = {{Code|tabela_parametrow_szablonu}} | _2 = Tabela parametrów wywołania szablonu do rozwinięcia.
| 3 = {{Code|tabela_modyfikatorow}} | _3 = Tabela modyfikatorów danego wywołania szablonowego.
}}
{{Hr}}
* Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Zawartość elementu wikikodu według {{Code|{{m|Szablonowe}}}}.
| 2 = {{Code|obiekt}} {{Patrz|obiekt}} | _2 = Nazwa obiektu szablonowego, jak: {{Code|SZABLON}}.
| 3 = {{Code|kod}} {{Patrz|kod}} | _3 = Numer obiektu, typu: {{Code|obiekt}} {{LinkPatrz|obiekt}}.
| 4 = {{Code|tekst}} | _4 = Tekst całego artykułu.
| 5 = {{Code|numer_szablonu}} {{Patrz|numer_szablonu}} | _5 = Tabela numerów dla różnych obiektów w jednej tabeli.
| 6 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _6 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 7 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _7 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
== {{Śródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}{{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}} ==
Funkcja służy do ściągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}.
Posiada własną walidacje nazwy stron, czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów.
Funkcja odpowiednio operuje na znacznikach wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''', tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
{{OpisParametrów
| 1 = Zmienne obiektowe: | nagłówek1 = tak
| 2 = {{Code|self}} {{Patrz|self}} | _2 = Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 3 = Zwykłe zmienne: | nagłówek3 = tak
| 4 = {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} | _4 = Nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć.
| 5 = {{Code|nazwa_strony2}} {{Patrz|nazwa_strony2}} | _5 = Uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej.
| 6 = {{Code|czy_noinclude}} {{Patrz|czy_noinclude}} | _6 = Jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka.
| 7 = Zmienne tablicowe: | nagłówek7 = tak
| 8 = {{Code|szablony_magiczne}} {{Patrz|szablony_magiczne}} | _8 = Tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej.
| 9 = Inne zmienne: | nagłówek9 = tak
| 10 = {{Code|dokumentacja}} {{Patrz|dokumentacja}} | _10 = Określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}}.
| 11 = {{Code|czy_szablon}} {{Patrz|czy_szablon}} | _11 = Gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją.
| 12 = {{Code|nazwa_modulu_szablonu_opisu}} {{Patrz|nazwa_modulu_szablonu_opisu}} | _12 = Zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami '''{{lpg|HTML}}''' na znaki.
| 13 = {{Code|szablon_nie_opis}} {{Patrz|szablon_nie_opis}} | _13 = Zmienna wskazująca, czy {{Code|nazwa strony}} {{LinkPatrz|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowany, używany wraz ze zmienną: {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}}.
| 14 = Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:| nagłówek14 = tak
| 15 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} | _15 = Operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
| 16 = {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} | _16 = Funkcja operująca na komentarzach, przeciwnie jest używana funkcja: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}}.
| 17 = {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} | _17 = Funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów.
| 18 = {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} | _18 = Funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_analizy_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
}}
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}}, operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} | _1 = Tekst do analizy, jak w funkcji nadrzędnej.
| 2 = {{Code|nazwa_modulu_szablonu_opisu}} {{LinkPatrz|nazwa_modulu_szablonu_opisu}} | _2 = Nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}.
| 3 = {{Code|nazwa_strony_bez_kodow_html}} {{Patrz|nazwa_strony_bez_kodow_html}} | _3 = Jest to nazwa strony: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, tylko z kodami '''{{lpg|HTML}}''' zamienionymi na ich odpowiedniki znakowe.
| 4 = {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}} | _4 = Tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej.
| 5 = {{Code|tabela_nazw}} {{Patrz|tabela_nazw}} | _5 = Tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, wewnątrz tej funkcji nadrzędnej.
}}
{{Hr}}
Funkcja: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}, ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę: {{Code|tablica}}, w funkcji zwracanej przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod metatabelki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} {{Patrz|__metatablica}}, to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Ten rozdział zawiera kolejność wywołań poszczególnych kroków w funkcji.
==== Poprawność pewnych nazw ====
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]|p=Html}}}}, która z: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}}.
==== Parametry uzyskanej strony ====
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}} {{Patrz|uchwyt strony}}, {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} i {{Code|czy_istnieje}} {{Patrz|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów.
==== Składniki preprocesora kodu mechanizmu: {{nobold|{{NS|l=tak|k=mw|w=tak}}}} ====
* Gdy {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli: {{Code|czy_noinclude}} {{LinkPatrz|czy_noinclude}}, przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie. Ze strony są usuwane pozostałości ze znaczników wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''' i znaczników jak {{Tag|templatedata}},
* Przeciwna wypadek: wtedy: {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}}, jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione.
==== Komentarze ====
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}.
===== Usuwanie pseudoszablonówi niektporych instrukcji warunkowych =====
* Ustawiane są zmienne w: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}} {{LinkPatrz|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}} {{Patrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}, by usunąc różne instrukcje warunkowe.
==== Specjalne elementy zmieniające wikikod ====
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
==== Kodowanie bazy danych kodów {{nobold|{{Code|{{m|Szablonowe}}}}}} ====
* Jeśli: {{Code|szablon_nie_opis}} {{LinkPatrz|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
jb0rzgx7s0367a37zv7lro09lby8ad4
558298
558297
2026-10-02T13:30:47Z
Persino
2851
/* {{Śródtytuł|p.SpreparowanyWikikodStrony}}{{Code|p.SpreparowanyWikikodStrony}} */
558298
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|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.SpreparowanyWikikodStrony}}{{Code|p.SpreparowanyWikikodStrony}} ==
Funkcja ściągąjąca opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Funkcja w opisach szablonów, a w niej instrukcje warunkowe podczas kodowania są rozwijane przy pomocy funkcji: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}}, a normalnie, gdy wewnątrz instrukcji warunkowych nie ma klamerek w funkcji, w składowej funkcji, tzn.: {{LinkPatrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja korzysta bezpośrednio z funkcji: {{LinkŚródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana. Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:SpreparowanyWikikodStrony(self,nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 2 = {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} | _2 = Nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw.
| 3 = {{Code|nazwa_modulu_szablonowa}} {{Patrz|nazwa_modulu_szablonowa}} | _3 = Nazwa modułu w wersji szablonowej, w wersji wywołaniowej.
| 4 = {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} | _4 = Przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony.
| 5 = {{Code|inkludowana}} {{Patrz|inkludowana}} | _5 = Przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej.
| 6 = Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem: | nagłówek6 = tak
| 7 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-SpreparowanyWikikodStrony}} | _7 = Funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, po kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku.
| 8 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-SpreparowanyWikikodStrony}} | _8 = Jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować.
| 9 = {{Code|__FUNKCJA3}} {{Patrz|__FUNKCJA3-SpreparowanyWikikodStrony}} | _9 = Funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}}.
| 10 = Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]|p=Szablonowe}}}} {{Patrz|UstalanieNazwyWywołania}}:| komórka10 = tak
| 11 = {{Code|__FUNKCJA4}} {{Patrz|__FUNKCJA4-SpreparowanyWikikodStrony}} | _11 = Funkcja, np. dekodująca nazwę szablonu.
| 12 = {{Code|__FUNKCJA5}} {{Patrz|__FUNKCJA5-SpreparowanyWikikodStrony}} | _12 = Funkcja, np. rozwijająca nazwę szablonu.
| 13 = Inne: | nagłówek13 = tak
| 14 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _14 = Funkcja do modyfikacji tekstu pobranego ze strony
| 15 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _15 = Funkcje do generowania tablicy bazy kodów.
}}
Definicje funkcji: {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-UstalanieNazwyWywołania}} i {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-UstalanieNazwyWywołania}}, które są potrzebne do konstrukcji wywołania funkcji: {{LinkPatrz|UstalanieNazwyWywołania}}, uzyskiwania nazwy szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} i {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}}, definicje tych funkcji:
* {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Tablica danych bazy kodów zakodowanego tekstu.
| 5 = {{Code|dokumentacja}} | _5 = Jak w: {{LinkPatrz|dokumentacja}}.
| 6 = {{Code|czy_nie_opis}} {{Patrz|czy_nie_opis}} | _6 = Czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu_caly}} {{Patrz|tekst_artykulu_caly}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} {{LinkPatrz|__FUNKCJA3-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu,nazwa_modulu_szablonowa)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_modulu}} | _1 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 2 = {{Code|nazwa_modulu_szablonowa}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory,czy_z_kluczem]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} | _1 = Nazwa szablonu do rozwinięcia.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}}. | _5 = Tabela parametrów potrzebna do szybszego działania '''{{ld|StronicowyParser|Stronicowego parsera}}'''.
| 6 = Gdy tą funkcją jest: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}}, te zmienne bezpośrednio w: {{Code|__FUNKCJA4}}, nie występują, ale za to występują w tej podanej szczególnej przykładowej funkcji, tzn. argumenty: | komórka6 = tak
| 7 = {{Code|czy_uwzgledniac_modyfikatory}} {{Patrz|czy_uwzgledniac_modyfikatory}} | _7 = Czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}}.
| 8 = {{Code|czy_z_kluczem}} {{Patrz|czy_z_kluczem}} | _8 = Czy klucze, o wzorze: {{Code|<nowiki>^klucz$</nowiki>}}, lub {{Code|<nowiki>^klucz[1-9]%d*$</nowiki>}}.
}}
Jeżeli w funkcji {{LinkPatrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}} nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}} w przeciwnym wypadku zwracane jest nazwa szablonu i wartość {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} | _1 = Jak w: {{LinkPatrz|nazwa_szablonu}}. To jest nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}.
| 2 = {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} | _2 = Tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, to jest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}}, w przypadku: {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}.
| 3 = {{Code|nazwa_modulu}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 4 = {{Code|nazwa_modulu_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{LzLua|frame:preprocess}}, w korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, z której korzysta {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}, jeżeli korzystanej tutaj funkcja zrzuciła niepowodzenie, to pierwsza wartość zwrótcone to: {{Code|nil}}, druga: {{Code|false}}, w przeciwnym wypadku zwraca nazwę rozwiniętego szablonu i drugą wartość zrzuconą: {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice:
; Przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy{{dk}} {{nobold|{{Code|czy_niezakodowana {{=}} true}}}}, i {{nobold|{{Code|czy_nie_opis {{=}} true}}}}, według funkcji{{dk}}
* {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów,
; W przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja:
* {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami.
: Te funkcje są wywoływane wewnątrz funkcji: {{LinkŚródtytuł|p.SpreparowanyWikikodStrony}}. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Zmienna obiektowa.
| 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Strona, a jednocześnie uchwyt do bazy danych kodów zakodowanego tekstu, o nazwie modułu do rozwinięcia i zakodowania.
| 3 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _3 = Nazwa strony szablonowa, w postaci wywołaniowej szablonów.
| 4 = {{Code|inkludowana}} {{LinkPatrz|inkludowana}} | _4 = Zmienna, czy strona ma być interpretowana jako inkludowana.
| 5 = Zmienne funkcyjne: | nagłówek5 = tak
| 6 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _6 = Funkcja generująca zawartość, może być zmodyfikowana, na podstawie pełnej nazwy strony, używana w funkcji: jest to {{Code|__FUNKCJA3}} w: {{Code|{{sr|#FunkcjaIterajacaRozwijanegoSzablonu|p=Szablonowe}}}} {{Patrz|__FUNKCJA-FunkcjaIterajacaRozwijanegoSzablonu}}.
| 7 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _7 = Funkcja do generowania zawartości, może być zmodyfikowana, według podanej jej wartości, używana w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|FUNKCJA2-KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, w postaci zmodyfikowanej, czyli w wersji: {{Code|__FUNKCJA2}},
| 8 = Inne zmienne funkcyjne: | nagłówek8 = tak
| 9 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _9 = Inne operacje wykonywane na pobranym tekście.
| 10 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _10 = Funkcja użyta do generowania tablicy bazy kodów.
}}
Funkcje {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}}, zostały już opisane w tym module, więc wystarczy opisać inne.
{{Hr}}
* Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|pelna_nazwa_szablonu}} | _1 = Pełna nazwa szablonu.
| 2 = {{Code|tabela_parametrow_szablonu}} | _2 = Tabela parametrów wywołania szablonu do rozwinięcia.
| 3 = {{Code|tabela_modyfikatorow}} | _3 = Tabela modyfikatorów danego wywołania szablonowego.
}}
{{Hr}}
* Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Zawartość elementu wikikodu według {{Code|{{m|Szablonowe}}}}.
| 2 = {{Code|obiekt}} {{Patrz|obiekt}} | _2 = Nazwa obiektu szablonowego, jak: {{Code|SZABLON}}.
| 3 = {{Code|kod}} {{Patrz|kod}} | _3 = Numer obiektu, typu: {{Code|obiekt}} {{LinkPatrz|obiekt}}.
| 4 = {{Code|tekst}} | _4 = Tekst całego artykułu.
| 5 = {{Code|numer_szablonu}} {{Patrz|numer_szablonu}} | _5 = Tabela numerów dla różnych obiektów w jednej tabeli.
| 6 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _6 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 7 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _7 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
== {{Śródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}{{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}} ==
Funkcja służy do ściągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}.
Posiada własną walidacje nazwy stron, czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów.
Funkcja odpowiednio operuje na znacznikach wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''', tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
{{OpisParametrów
| 1 = Zmienne obiektowe: | nagłówek1 = tak
| 2 = {{Code|self}} {{Patrz|self}} | _2 = Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 3 = Zwykłe zmienne: | nagłówek3 = tak
| 4 = {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} | _4 = Nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć.
| 5 = {{Code|nazwa_strony2}} {{Patrz|nazwa_strony2}} | _5 = Uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej.
| 6 = {{Code|czy_noinclude}} {{Patrz|czy_noinclude}} | _6 = Jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka.
| 7 = Zmienne tablicowe: | nagłówek7 = tak
| 8 = {{Code|szablony_magiczne}} {{Patrz|szablony_magiczne}} | _8 = Tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej.
| 9 = Inne zmienne: | nagłówek9 = tak
| 10 = {{Code|dokumentacja}} {{Patrz|dokumentacja}} | _10 = Określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}}.
| 11 = {{Code|czy_szablon}} {{Patrz|czy_szablon}} | _11 = Gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją.
| 12 = {{Code|nazwa_modulu_szablonu_opisu}} {{Patrz|nazwa_modulu_szablonu_opisu}} | _12 = Zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami '''{{lpg|HTML}}''' na znaki.
| 13 = {{Code|szablon_nie_opis}} {{Patrz|szablon_nie_opis}} | _13 = Zmienna wskazująca, czy {{Code|nazwa strony}} {{LinkPatrz|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowany, używany wraz ze zmienną: {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}}.
| 14 = Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:| nagłówek14 = tak
| 15 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} | _15 = Operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
| 16 = {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} | _16 = Funkcja operująca na komentarzach, przeciwnie jest używana funkcja: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}}.
| 17 = {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} | _17 = Funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów.
| 18 = {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} | _18 = Funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_analizy_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
}}
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}}, operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} | _1 = Tekst do analizy, jak w funkcji nadrzędnej.
| 2 = {{Code|nazwa_modulu_szablonu_opisu}} {{LinkPatrz|nazwa_modulu_szablonu_opisu}} | _2 = Nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}.
| 3 = {{Code|nazwa_strony_bez_kodow_html}} {{Patrz|nazwa_strony_bez_kodow_html}} | _3 = Jest to nazwa strony: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, tylko z kodami '''{{lpg|HTML}}''' zamienionymi na ich odpowiedniki znakowe.
| 4 = {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}} | _4 = Tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej.
| 5 = {{Code|tabela_nazw}} {{Patrz|tabela_nazw}} | _5 = Tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, wewnątrz tej funkcji nadrzędnej.
}}
{{Hr}}
Funkcja: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}, ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę: {{Code|tablica}}, w funkcji zwracanej przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod metatabelki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} {{Patrz|__metatablica}}, to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Ten rozdział zawiera kolejność wywołań poszczególnych kroków w funkcji.
==== Poprawność pewnych nazw ====
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]|p=Html}}}}, która z: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}}.
==== Parametry uzyskanej strony ====
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}} {{Patrz|uchwyt strony}}, {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} i {{Code|czy_istnieje}} {{Patrz|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów.
==== Składniki preprocesora kodu mechanizmu: {{nobold|{{NS|l=tak|k=mw|w=tak}}}} ====
* Gdy {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli: {{Code|czy_noinclude}} {{LinkPatrz|czy_noinclude}}, przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie. Ze strony są usuwane pozostałości ze znaczników wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''' i znaczników jak {{Tag|templatedata}},
* Przeciwna wypadek: wtedy: {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}}, jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione.
==== Komentarze ====
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}.
===== Usuwanie pseudoszablonówi niektporych instrukcji warunkowych =====
* Ustawiane są zmienne w: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}} {{LinkPatrz|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}} {{Patrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}, by usunąc różne instrukcje warunkowe.
==== Specjalne elementy zmieniające wikikod ====
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
==== Kodowanie bazy danych kodów {{nobold|{{Code|{{m|Szablonowe}}}}}} ====
* Jeśli: {{Code|szablon_nie_opis}} {{LinkPatrz|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
szomi2uw0nop4bcwo1b9k34t11kfjmw
558299
558298
2026-10-02T13:32:25Z
Persino
2851
/* {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} */
558299
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|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.SpreparowanyWikikodStrony}}{{Code|p.SpreparowanyWikikodStrony}} ==
Funkcja ściągąjąca opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Funkcja w opisach szablonów, a w niej instrukcje warunkowe podczas kodowania są rozwijane przy pomocy funkcji: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}}, a normalnie, gdy wewnątrz instrukcji warunkowych nie ma klamerek w funkcji, w składowej funkcji, tzn.: {{LinkPatrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja korzysta bezpośrednio z funkcji: {{LinkŚródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana. Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:SpreparowanyWikikodStrony(self,nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 2 = {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} | _2 = Nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw.
| 3 = {{Code|nazwa_modulu_szablonowa}} {{Patrz|nazwa_modulu_szablonowa}} | _3 = Nazwa modułu w wersji szablonowej, w wersji wywołaniowej.
| 4 = {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} | _4 = Przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony.
| 5 = {{Code|inkludowana}} {{Patrz|inkludowana}} | _5 = Przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej.
| 6 = Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem: | nagłówek6 = tak
| 7 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-SpreparowanyWikikodStrony}} | _7 = Funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, po kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku.
| 8 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-SpreparowanyWikikodStrony}} | _8 = Jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować.
| 9 = {{Code|__FUNKCJA3}} {{Patrz|__FUNKCJA3-SpreparowanyWikikodStrony}} | _9 = Funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}}.
| 10 = Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]|p=Szablonowe}}}} {{Patrz|UstalanieNazwyWywołania}}:| komórka10 = tak
| 11 = {{Code|__FUNKCJA4}} {{Patrz|__FUNKCJA4-SpreparowanyWikikodStrony}} | _11 = Funkcja, np. dekodująca nazwę szablonu.
| 12 = {{Code|__FUNKCJA5}} {{Patrz|__FUNKCJA5-SpreparowanyWikikodStrony}} | _12 = Funkcja, np. rozwijająca nazwę szablonu.
| 13 = Inne: | nagłówek13 = tak
| 14 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _14 = Funkcja do modyfikacji tekstu pobranego ze strony
| 15 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _15 = Funkcje do generowania tablicy bazy kodów.
}}
Definicje funkcji: {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-UstalanieNazwyWywołania}} i {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-UstalanieNazwyWywołania}}, które są potrzebne do konstrukcji wywołania funkcji: {{LinkPatrz|UstalanieNazwyWywołania}}, uzyskiwania nazwy szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} i {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}}, definicje tych funkcji:
* {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Tablica danych bazy kodów zakodowanego tekstu.
| 5 = {{Code|dokumentacja}} | _5 = Jak w: {{LinkPatrz|dokumentacja}}.
| 6 = {{Code|czy_nie_opis}} {{Patrz|czy_nie_opis}} | _6 = Czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu_caly}} {{Patrz|tekst_artykulu_caly}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} {{LinkPatrz|__FUNKCJA3-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu,nazwa_modulu_szablonowa)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_modulu}} | _1 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 2 = {{Code|nazwa_modulu_szablonowa}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory,czy_z_kluczem]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} | _1 = Nazwa szablonu do rozwinięcia.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}}. | _5 = Tabela parametrów potrzebna do szybszego działania '''{{ld|StronicowyParser|Stronicowego parsera}}'''.
| 6 = Gdy tą funkcją jest: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}}, te zmienne bezpośrednio w: {{Code|__FUNKCJA4}}, nie występują, ale za to występują w tej podanej szczególnej przykładowej funkcji, tzn. argumenty: | komórka6 = tak
| 7 = {{Code|czy_uwzgledniac_modyfikatory}} {{Patrz|czy_uwzgledniac_modyfikatory}} | _7 = Czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}}.
| 8 = {{Code|czy_z_kluczem}} {{Patrz|czy_z_kluczem}} | _8 = Czy klucze, o wzorze: {{Code|<nowiki>^klucz$</nowiki>}}, lub {{Code|<nowiki>^klucz[1-9]%d*$</nowiki>}}.
}}
Jeżeli w funkcji {{LinkPatrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}} nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}} w przeciwnym wypadku zwracane jest nazwa szablonu i wartość {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} | _1 = Jak w: {{LinkPatrz|nazwa_szablonu}}. To jest nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}.
| 2 = {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} | _2 = Tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, to jest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}}, w przypadku: {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}.
| 3 = {{Code|nazwa_modulu}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 4 = {{Code|nazwa_modulu_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{LzLua|frame:preprocess}}, w korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, z której korzysta {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}, jeżeli korzystanej tutaj funkcja zrzuciła niepowodzenie, to pierwsza wartość zwrótcone to: {{Code|nil}}, druga: {{Code|false}}, w przeciwnym wypadku zwraca nazwę rozwiniętego szablonu i drugą wartość zrzuconą: {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice:
; Przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy{{dk}} {{nobold|{{Code|czy_niezakodowana {{=}} true}}}}, i {{nobold|{{Code|czy_nie_opis {{=}} true}}}}, według funkcji{{dk}}
* {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów,
; W przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja:
* {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami.
: Te funkcje są wywoływane wewnątrz funkcji: {{LinkŚródtytuł|p.SpreparowanyWikikodStrony}}. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana. Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Strona, a jednocześnie uchwyt do bazy danych kodów zakodowanego tekstu, o nazwie modułu do rozwinięcia i zakodowania.
| 3 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _3 = Nazwa strony szablonowa, w postaci wywołaniowej szablonów.
| 4 = {{Code|inkludowana}} {{LinkPatrz|inkludowana}} | _4 = Zmienna, czy strona ma być interpretowana jako inkludowana.
| 5 = Zmienne funkcyjne: | nagłówek5 = tak
| 6 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _6 = Funkcja generująca zawartość, może być zmodyfikowana, na podstawie pełnej nazwy strony, używana w funkcji: jest to {{Code|__FUNKCJA3}} w: {{Code|{{sr|#FunkcjaIterajacaRozwijanegoSzablonu|p=Szablonowe}}}} {{Patrz|__FUNKCJA-FunkcjaIterajacaRozwijanegoSzablonu}}.
| 7 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _7 = Funkcja do generowania zawartości, może być zmodyfikowana, według podanej jej wartości, używana w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|FUNKCJA2-KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, w postaci zmodyfikowanej, czyli w wersji: {{Code|__FUNKCJA2}},
| 8 = Inne zmienne funkcyjne: | nagłówek8 = tak
| 9 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _9 = Inne operacje wykonywane na pobranym tekście.
| 10 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _10 = Funkcja użyta do generowania tablicy bazy kodów.
}}
Funkcje {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}}, zostały już opisane w tym module, więc wystarczy opisać inne.
{{Hr}}
* Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|pelna_nazwa_szablonu}} | _1 = Pełna nazwa szablonu.
| 2 = {{Code|tabela_parametrow_szablonu}} | _2 = Tabela parametrów wywołania szablonu do rozwinięcia.
| 3 = {{Code|tabela_modyfikatorow}} | _3 = Tabela modyfikatorów danego wywołania szablonowego.
}}
{{Hr}}
* Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Zawartość elementu wikikodu według {{Code|{{m|Szablonowe}}}}.
| 2 = {{Code|obiekt}} {{Patrz|obiekt}} | _2 = Nazwa obiektu szablonowego, jak: {{Code|SZABLON}}.
| 3 = {{Code|kod}} {{Patrz|kod}} | _3 = Numer obiektu, typu: {{Code|obiekt}} {{LinkPatrz|obiekt}}.
| 4 = {{Code|tekst}} | _4 = Tekst całego artykułu.
| 5 = {{Code|numer_szablonu}} {{Patrz|numer_szablonu}} | _5 = Tabela numerów dla różnych obiektów w jednej tabeli.
| 6 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _6 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 7 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _7 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
== {{Śródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}{{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}} ==
Funkcja służy do ściągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}.
Posiada własną walidacje nazwy stron, czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów.
Funkcja odpowiednio operuje na znacznikach wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''', tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
{{OpisParametrów
| 1 = Zmienne obiektowe: | nagłówek1 = tak
| 2 = {{Code|self}} {{Patrz|self}} | _2 = Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 3 = Zwykłe zmienne: | nagłówek3 = tak
| 4 = {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} | _4 = Nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć.
| 5 = {{Code|nazwa_strony2}} {{Patrz|nazwa_strony2}} | _5 = Uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej.
| 6 = {{Code|czy_noinclude}} {{Patrz|czy_noinclude}} | _6 = Jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka.
| 7 = Zmienne tablicowe: | nagłówek7 = tak
| 8 = {{Code|szablony_magiczne}} {{Patrz|szablony_magiczne}} | _8 = Tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej.
| 9 = Inne zmienne: | nagłówek9 = tak
| 10 = {{Code|dokumentacja}} {{Patrz|dokumentacja}} | _10 = Określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}}.
| 11 = {{Code|czy_szablon}} {{Patrz|czy_szablon}} | _11 = Gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją.
| 12 = {{Code|nazwa_modulu_szablonu_opisu}} {{Patrz|nazwa_modulu_szablonu_opisu}} | _12 = Zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami '''{{lpg|HTML}}''' na znaki.
| 13 = {{Code|szablon_nie_opis}} {{Patrz|szablon_nie_opis}} | _13 = Zmienna wskazująca, czy {{Code|nazwa strony}} {{LinkPatrz|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowany, używany wraz ze zmienną: {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}}.
| 14 = Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:| nagłówek14 = tak
| 15 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} | _15 = Operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
| 16 = {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} | _16 = Funkcja operująca na komentarzach, przeciwnie jest używana funkcja: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}}.
| 17 = {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} | _17 = Funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów.
| 18 = {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} | _18 = Funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_analizy_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
}}
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}}, operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} | _1 = Tekst do analizy, jak w funkcji nadrzędnej.
| 2 = {{Code|nazwa_modulu_szablonu_opisu}} {{LinkPatrz|nazwa_modulu_szablonu_opisu}} | _2 = Nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}.
| 3 = {{Code|nazwa_strony_bez_kodow_html}} {{Patrz|nazwa_strony_bez_kodow_html}} | _3 = Jest to nazwa strony: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, tylko z kodami '''{{lpg|HTML}}''' zamienionymi na ich odpowiedniki znakowe.
| 4 = {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}} | _4 = Tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej.
| 5 = {{Code|tabela_nazw}} {{Patrz|tabela_nazw}} | _5 = Tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, wewnątrz tej funkcji nadrzędnej.
}}
{{Hr}}
Funkcja: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}, ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę: {{Code|tablica}}, w funkcji zwracanej przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod metatabelki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} {{Patrz|__metatablica}}, to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Ten rozdział zawiera kolejność wywołań poszczególnych kroków w funkcji.
==== Poprawność pewnych nazw ====
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]|p=Html}}}}, która z: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}}.
==== Parametry uzyskanej strony ====
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}} {{Patrz|uchwyt strony}}, {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} i {{Code|czy_istnieje}} {{Patrz|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów.
==== Składniki preprocesora kodu mechanizmu: {{nobold|{{NS|l=tak|k=mw|w=tak}}}} ====
* Gdy {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli: {{Code|czy_noinclude}} {{LinkPatrz|czy_noinclude}}, przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie. Ze strony są usuwane pozostałości ze znaczników wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''' i znaczników jak {{Tag|templatedata}},
* Przeciwna wypadek: wtedy: {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}}, jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione.
==== Komentarze ====
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}.
===== Usuwanie pseudoszablonówi niektporych instrukcji warunkowych =====
* Ustawiane są zmienne w: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}} {{LinkPatrz|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}} {{Patrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}, by usunąc różne instrukcje warunkowe.
==== Specjalne elementy zmieniające wikikod ====
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
==== Kodowanie bazy danych kodów {{nobold|{{Code|{{m|Szablonowe}}}}}} ====
* Jeśli: {{Code|szablon_nie_opis}} {{LinkPatrz|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
ek1jgm1x4thpbsn2fo6w3y4pjqi1qh3
558300
558299
2026-10-02T13:33:07Z
Persino
2851
/* {{Śródtytuł|p.SpreparowanyWikikodStrony}}{{Code|p.SpreparowanyWikikodStrony}} */
558300
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|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.SpreparowanyWikikodStrony}}{{Code|p.SpreparowanyWikikodStrony}} ==
Funkcja ściągąjąca opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Funkcja w opisach szablonów, a w niej instrukcje warunkowe podczas kodowania są rozwijane przy pomocy funkcji: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}}, a normalnie, gdy wewnątrz instrukcji warunkowych nie ma klamerek w funkcji, w składowej funkcji, tzn.: {{LinkPatrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja korzysta bezpośrednio z funkcji: {{LinkŚródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana. Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:SpreparowanyWikikodStrony(nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 2 = {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} | _2 = Nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw.
| 3 = {{Code|nazwa_modulu_szablonowa}} {{Patrz|nazwa_modulu_szablonowa}} | _3 = Nazwa modułu w wersji szablonowej, w wersji wywołaniowej.
| 4 = {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} | _4 = Przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony.
| 5 = {{Code|inkludowana}} {{Patrz|inkludowana}} | _5 = Przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej.
| 6 = Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem: | nagłówek6 = tak
| 7 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-SpreparowanyWikikodStrony}} | _7 = Funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, po kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku.
| 8 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-SpreparowanyWikikodStrony}} | _8 = Jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować.
| 9 = {{Code|__FUNKCJA3}} {{Patrz|__FUNKCJA3-SpreparowanyWikikodStrony}} | _9 = Funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}}.
| 10 = Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]|p=Szablonowe}}}} {{Patrz|UstalanieNazwyWywołania}}:| komórka10 = tak
| 11 = {{Code|__FUNKCJA4}} {{Patrz|__FUNKCJA4-SpreparowanyWikikodStrony}} | _11 = Funkcja, np. dekodująca nazwę szablonu.
| 12 = {{Code|__FUNKCJA5}} {{Patrz|__FUNKCJA5-SpreparowanyWikikodStrony}} | _12 = Funkcja, np. rozwijająca nazwę szablonu.
| 13 = Inne: | nagłówek13 = tak
| 14 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _14 = Funkcja do modyfikacji tekstu pobranego ze strony
| 15 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _15 = Funkcje do generowania tablicy bazy kodów.
}}
Definicje funkcji: {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-UstalanieNazwyWywołania}} i {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-UstalanieNazwyWywołania}}, które są potrzebne do konstrukcji wywołania funkcji: {{LinkPatrz|UstalanieNazwyWywołania}}, uzyskiwania nazwy szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} i {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}}, definicje tych funkcji:
* {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Tablica danych bazy kodów zakodowanego tekstu.
| 5 = {{Code|dokumentacja}} | _5 = Jak w: {{LinkPatrz|dokumentacja}}.
| 6 = {{Code|czy_nie_opis}} {{Patrz|czy_nie_opis}} | _6 = Czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu_caly}} {{Patrz|tekst_artykulu_caly}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} {{LinkPatrz|__FUNKCJA3-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu,nazwa_modulu_szablonowa)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_modulu}} | _1 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 2 = {{Code|nazwa_modulu_szablonowa}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory,czy_z_kluczem]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} | _1 = Nazwa szablonu do rozwinięcia.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}}. | _5 = Tabela parametrów potrzebna do szybszego działania '''{{ld|StronicowyParser|Stronicowego parsera}}'''.
| 6 = Gdy tą funkcją jest: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}}, te zmienne bezpośrednio w: {{Code|__FUNKCJA4}}, nie występują, ale za to występują w tej podanej szczególnej przykładowej funkcji, tzn. argumenty: | komórka6 = tak
| 7 = {{Code|czy_uwzgledniac_modyfikatory}} {{Patrz|czy_uwzgledniac_modyfikatory}} | _7 = Czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}}.
| 8 = {{Code|czy_z_kluczem}} {{Patrz|czy_z_kluczem}} | _8 = Czy klucze, o wzorze: {{Code|<nowiki>^klucz$</nowiki>}}, lub {{Code|<nowiki>^klucz[1-9]%d*$</nowiki>}}.
}}
Jeżeli w funkcji {{LinkPatrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}} nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}} w przeciwnym wypadku zwracane jest nazwa szablonu i wartość {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} | _1 = Jak w: {{LinkPatrz|nazwa_szablonu}}. To jest nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}.
| 2 = {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} | _2 = Tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, to jest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}}, w przypadku: {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}.
| 3 = {{Code|nazwa_modulu}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 4 = {{Code|nazwa_modulu_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{LzLua|frame:preprocess}}, w korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, z której korzysta {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}, jeżeli korzystanej tutaj funkcja zrzuciła niepowodzenie, to pierwsza wartość zwrótcone to: {{Code|nil}}, druga: {{Code|false}}, w przeciwnym wypadku zwraca nazwę rozwiniętego szablonu i drugą wartość zrzuconą: {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice:
; Przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy{{dk}} {{nobold|{{Code|czy_niezakodowana {{=}} true}}}}, i {{nobold|{{Code|czy_nie_opis {{=}} true}}}}, według funkcji{{dk}}
* {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów,
; W przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja:
* {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami.
: Te funkcje są wywoływane wewnątrz funkcji: {{LinkŚródtytuł|p.SpreparowanyWikikodStrony}}. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana. Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Strona, a jednocześnie uchwyt do bazy danych kodów zakodowanego tekstu, o nazwie modułu do rozwinięcia i zakodowania.
| 3 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _3 = Nazwa strony szablonowa, w postaci wywołaniowej szablonów.
| 4 = {{Code|inkludowana}} {{LinkPatrz|inkludowana}} | _4 = Zmienna, czy strona ma być interpretowana jako inkludowana.
| 5 = Zmienne funkcyjne: | nagłówek5 = tak
| 6 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _6 = Funkcja generująca zawartość, może być zmodyfikowana, na podstawie pełnej nazwy strony, używana w funkcji: jest to {{Code|__FUNKCJA3}} w: {{Code|{{sr|#FunkcjaIterajacaRozwijanegoSzablonu|p=Szablonowe}}}} {{Patrz|__FUNKCJA-FunkcjaIterajacaRozwijanegoSzablonu}}.
| 7 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _7 = Funkcja do generowania zawartości, może być zmodyfikowana, według podanej jej wartości, używana w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|FUNKCJA2-KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, w postaci zmodyfikowanej, czyli w wersji: {{Code|__FUNKCJA2}},
| 8 = Inne zmienne funkcyjne: | nagłówek8 = tak
| 9 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _9 = Inne operacje wykonywane na pobranym tekście.
| 10 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _10 = Funkcja użyta do generowania tablicy bazy kodów.
}}
Funkcje {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}}, zostały już opisane w tym module, więc wystarczy opisać inne.
{{Hr}}
* Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|pelna_nazwa_szablonu}} | _1 = Pełna nazwa szablonu.
| 2 = {{Code|tabela_parametrow_szablonu}} | _2 = Tabela parametrów wywołania szablonu do rozwinięcia.
| 3 = {{Code|tabela_modyfikatorow}} | _3 = Tabela modyfikatorów danego wywołania szablonowego.
}}
{{Hr}}
* Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Zawartość elementu wikikodu według {{Code|{{m|Szablonowe}}}}.
| 2 = {{Code|obiekt}} {{Patrz|obiekt}} | _2 = Nazwa obiektu szablonowego, jak: {{Code|SZABLON}}.
| 3 = {{Code|kod}} {{Patrz|kod}} | _3 = Numer obiektu, typu: {{Code|obiekt}} {{LinkPatrz|obiekt}}.
| 4 = {{Code|tekst}} | _4 = Tekst całego artykułu.
| 5 = {{Code|numer_szablonu}} {{Patrz|numer_szablonu}} | _5 = Tabela numerów dla różnych obiektów w jednej tabeli.
| 6 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _6 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 7 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _7 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
== {{Śródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}{{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}} ==
Funkcja służy do ściągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}.
Posiada własną walidacje nazwy stron, czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów.
Funkcja odpowiednio operuje na znacznikach wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''', tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
{{OpisParametrów
| 1 = Zmienne obiektowe: | nagłówek1 = tak
| 2 = {{Code|self}} {{Patrz|self}} | _2 = Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 3 = Zwykłe zmienne: | nagłówek3 = tak
| 4 = {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} | _4 = Nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć.
| 5 = {{Code|nazwa_strony2}} {{Patrz|nazwa_strony2}} | _5 = Uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej.
| 6 = {{Code|czy_noinclude}} {{Patrz|czy_noinclude}} | _6 = Jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka.
| 7 = Zmienne tablicowe: | nagłówek7 = tak
| 8 = {{Code|szablony_magiczne}} {{Patrz|szablony_magiczne}} | _8 = Tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej.
| 9 = Inne zmienne: | nagłówek9 = tak
| 10 = {{Code|dokumentacja}} {{Patrz|dokumentacja}} | _10 = Określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}}.
| 11 = {{Code|czy_szablon}} {{Patrz|czy_szablon}} | _11 = Gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją.
| 12 = {{Code|nazwa_modulu_szablonu_opisu}} {{Patrz|nazwa_modulu_szablonu_opisu}} | _12 = Zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami '''{{lpg|HTML}}''' na znaki.
| 13 = {{Code|szablon_nie_opis}} {{Patrz|szablon_nie_opis}} | _13 = Zmienna wskazująca, czy {{Code|nazwa strony}} {{LinkPatrz|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowany, używany wraz ze zmienną: {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}}.
| 14 = Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:| nagłówek14 = tak
| 15 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} | _15 = Operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
| 16 = {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} | _16 = Funkcja operująca na komentarzach, przeciwnie jest używana funkcja: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}}.
| 17 = {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} | _17 = Funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów.
| 18 = {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} | _18 = Funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_analizy_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
}}
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}}, operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} | _1 = Tekst do analizy, jak w funkcji nadrzędnej.
| 2 = {{Code|nazwa_modulu_szablonu_opisu}} {{LinkPatrz|nazwa_modulu_szablonu_opisu}} | _2 = Nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}.
| 3 = {{Code|nazwa_strony_bez_kodow_html}} {{Patrz|nazwa_strony_bez_kodow_html}} | _3 = Jest to nazwa strony: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, tylko z kodami '''{{lpg|HTML}}''' zamienionymi na ich odpowiedniki znakowe.
| 4 = {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}} | _4 = Tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej.
| 5 = {{Code|tabela_nazw}} {{Patrz|tabela_nazw}} | _5 = Tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, wewnątrz tej funkcji nadrzędnej.
}}
{{Hr}}
Funkcja: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}, ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę: {{Code|tablica}}, w funkcji zwracanej przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod metatabelki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} {{Patrz|__metatablica}}, to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Ten rozdział zawiera kolejność wywołań poszczególnych kroków w funkcji.
==== Poprawność pewnych nazw ====
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]|p=Html}}}}, która z: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}}.
==== Parametry uzyskanej strony ====
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}} {{Patrz|uchwyt strony}}, {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} i {{Code|czy_istnieje}} {{Patrz|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów.
==== Składniki preprocesora kodu mechanizmu: {{nobold|{{NS|l=tak|k=mw|w=tak}}}} ====
* Gdy {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli: {{Code|czy_noinclude}} {{LinkPatrz|czy_noinclude}}, przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie. Ze strony są usuwane pozostałości ze znaczników wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''' i znaczników jak {{Tag|templatedata}},
* Przeciwna wypadek: wtedy: {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}}, jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione.
==== Komentarze ====
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}.
===== Usuwanie pseudoszablonówi niektporych instrukcji warunkowych =====
* Ustawiane są zmienne w: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}} {{LinkPatrz|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}} {{Patrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}, by usunąc różne instrukcje warunkowe.
==== Specjalne elementy zmieniające wikikod ====
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
==== Kodowanie bazy danych kodów {{nobold|{{Code|{{m|Szablonowe}}}}}} ====
* Jeśli: {{Code|szablon_nie_opis}} {{LinkPatrz|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
bffr6tipf62uu1qmepiemk0vhhoapv2
558301
558300
2026-10-02T13:34:31Z
Persino
2851
/* {{Śródtytuł|p.SpreparowanyWikikodStrony}}{{Code|p.SpreparowanyWikikodStrony}} */
558301
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|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.SpreparowanyWikikodStrony}}{{Code|p.SpreparowanyWikikodStrony}} ==
Funkcja ściągąjąca opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Funkcja w opisach szablonów, a w niej instrukcje warunkowe podczas kodowania są rozwijane przy pomocy funkcji: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}}, a normalnie, gdy wewnątrz instrukcji warunkowych nie ma klamerek w funkcji, w składowej funkcji, tzn.: {{LinkPatrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja korzysta bezpośrednio z funkcji: {{LinkŚródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana. Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:SpreparowanyWikikodStrony(nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 2 = {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} | _2 = Nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw.
| 3 = {{Code|nazwa_modulu_szablonowa}} {{Patrz|nazwa_modulu_szablonowa}} | _3 = Nazwa modułu w wersji szablonowej, w wersji wywołaniowej.
| 4 = {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} | _4 = Przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony.
| 5 = {{Code|inkludowana}} {{Patrz|inkludowana}} | _5 = Przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej.
| 6 = Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem: | nagłówek6 = tak
| 7 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-SpreparowanyWikikodStrony}} | _7 = Funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, po kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku.
| 8 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-SpreparowanyWikikodStrony}} | _8 = Jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować.
| 9 = {{Code|__FUNKCJA3}} {{Patrz|__FUNKCJA3-SpreparowanyWikikodStrony}} | _9 = Funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}}.
| 10 = Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]|p=Szablonowe}}}} {{Patrz|UstalanieNazwyWywołania}}: | nagłówek10 = tak
| 11 = {{Code|__FUNKCJA4}} {{Patrz|__FUNKCJA4-SpreparowanyWikikodStrony}} | _11 = Funkcja, np. dekodująca nazwę szablonu.
| 12 = {{Code|__FUNKCJA5}} {{Patrz|__FUNKCJA5-SpreparowanyWikikodStrony}} | _12 = Funkcja, np. rozwijająca nazwę szablonu.
| 13 = Inne: | nagłówek13 = tak
| 14 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _14 = Funkcja do modyfikacji tekstu pobranego ze strony
| 15 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _15 = Funkcje do generowania tablicy bazy kodów.
}}
Definicje funkcji: {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-UstalanieNazwyWywołania}} i {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-UstalanieNazwyWywołania}}, które są potrzebne do konstrukcji wywołania funkcji: {{LinkPatrz|UstalanieNazwyWywołania}}, uzyskiwania nazwy szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} i {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}}, definicje tych funkcji:
* {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Tablica danych bazy kodów zakodowanego tekstu.
| 5 = {{Code|dokumentacja}} | _5 = Jak w: {{LinkPatrz|dokumentacja}}.
| 6 = {{Code|czy_nie_opis}} {{Patrz|czy_nie_opis}} | _6 = Czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu_caly}} {{Patrz|tekst_artykulu_caly}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} {{LinkPatrz|__FUNKCJA3-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu,nazwa_modulu_szablonowa)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_modulu}} | _1 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 2 = {{Code|nazwa_modulu_szablonowa}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory,czy_z_kluczem]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} | _1 = Nazwa szablonu do rozwinięcia.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}}. | _5 = Tabela parametrów potrzebna do szybszego działania '''{{ld|StronicowyParser|Stronicowego parsera}}'''.
| 6 = Gdy tą funkcją jest: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}}, te zmienne bezpośrednio w: {{Code|__FUNKCJA4}}, nie występują, ale za to występują w tej podanej szczególnej przykładowej funkcji, tzn. argumenty: | komórka6 = tak
| 7 = {{Code|czy_uwzgledniac_modyfikatory}} {{Patrz|czy_uwzgledniac_modyfikatory}} | _7 = Czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}}.
| 8 = {{Code|czy_z_kluczem}} {{Patrz|czy_z_kluczem}} | _8 = Czy klucze, o wzorze: {{Code|<nowiki>^klucz$</nowiki>}}, lub {{Code|<nowiki>^klucz[1-9]%d*$</nowiki>}}.
}}
Jeżeli w funkcji {{LinkPatrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}} nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}} w przeciwnym wypadku zwracane jest nazwa szablonu i wartość {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} | _1 = Jak w: {{LinkPatrz|nazwa_szablonu}}. To jest nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}.
| 2 = {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} | _2 = Tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, to jest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}}, w przypadku: {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}.
| 3 = {{Code|nazwa_modulu}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 4 = {{Code|nazwa_modulu_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{LzLua|frame:preprocess}}, w korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, z której korzysta {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}, jeżeli korzystanej tutaj funkcja zrzuciła niepowodzenie, to pierwsza wartość zwrótcone to: {{Code|nil}}, druga: {{Code|false}}, w przeciwnym wypadku zwraca nazwę rozwiniętego szablonu i drugą wartość zrzuconą: {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice:
; Przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy{{dk}} {{nobold|{{Code|czy_niezakodowana {{=}} true}}}}, i {{nobold|{{Code|czy_nie_opis {{=}} true}}}}, według funkcji{{dk}}
* {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów,
; W przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja:
* {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami.
: Te funkcje są wywoływane wewnątrz funkcji: {{LinkŚródtytuł|p.SpreparowanyWikikodStrony}}. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana. Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Strona, a jednocześnie uchwyt do bazy danych kodów zakodowanego tekstu, o nazwie modułu do rozwinięcia i zakodowania.
| 3 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _3 = Nazwa strony szablonowa, w postaci wywołaniowej szablonów.
| 4 = {{Code|inkludowana}} {{LinkPatrz|inkludowana}} | _4 = Zmienna, czy strona ma być interpretowana jako inkludowana.
| 5 = Zmienne funkcyjne: | nagłówek5 = tak
| 6 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _6 = Funkcja generująca zawartość, może być zmodyfikowana, na podstawie pełnej nazwy strony, używana w funkcji: jest to {{Code|__FUNKCJA3}} w: {{Code|{{sr|#FunkcjaIterajacaRozwijanegoSzablonu|p=Szablonowe}}}} {{Patrz|__FUNKCJA-FunkcjaIterajacaRozwijanegoSzablonu}}.
| 7 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _7 = Funkcja do generowania zawartości, może być zmodyfikowana, według podanej jej wartości, używana w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|FUNKCJA2-KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, w postaci zmodyfikowanej, czyli w wersji: {{Code|__FUNKCJA2}},
| 8 = Inne zmienne funkcyjne: | nagłówek8 = tak
| 9 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _9 = Inne operacje wykonywane na pobranym tekście.
| 10 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _10 = Funkcja użyta do generowania tablicy bazy kodów.
}}
Funkcje {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}}, zostały już opisane w tym module, więc wystarczy opisać inne.
{{Hr}}
* Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|pelna_nazwa_szablonu}} | _1 = Pełna nazwa szablonu.
| 2 = {{Code|tabela_parametrow_szablonu}} | _2 = Tabela parametrów wywołania szablonu do rozwinięcia.
| 3 = {{Code|tabela_modyfikatorow}} | _3 = Tabela modyfikatorów danego wywołania szablonowego.
}}
{{Hr}}
* Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Zawartość elementu wikikodu według {{Code|{{m|Szablonowe}}}}.
| 2 = {{Code|obiekt}} {{Patrz|obiekt}} | _2 = Nazwa obiektu szablonowego, jak: {{Code|SZABLON}}.
| 3 = {{Code|kod}} {{Patrz|kod}} | _3 = Numer obiektu, typu: {{Code|obiekt}} {{LinkPatrz|obiekt}}.
| 4 = {{Code|tekst}} | _4 = Tekst całego artykułu.
| 5 = {{Code|numer_szablonu}} {{Patrz|numer_szablonu}} | _5 = Tabela numerów dla różnych obiektów w jednej tabeli.
| 6 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _6 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 7 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _7 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
== {{Śródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}{{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}} ==
Funkcja służy do ściągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}.
Posiada własną walidacje nazwy stron, czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów.
Funkcja odpowiednio operuje na znacznikach wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''', tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
{{OpisParametrów
| 1 = Zmienne obiektowe: | nagłówek1 = tak
| 2 = {{Code|self}} {{Patrz|self}} | _2 = Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 3 = Zwykłe zmienne: | nagłówek3 = tak
| 4 = {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} | _4 = Nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć.
| 5 = {{Code|nazwa_strony2}} {{Patrz|nazwa_strony2}} | _5 = Uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej.
| 6 = {{Code|czy_noinclude}} {{Patrz|czy_noinclude}} | _6 = Jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka.
| 7 = Zmienne tablicowe: | nagłówek7 = tak
| 8 = {{Code|szablony_magiczne}} {{Patrz|szablony_magiczne}} | _8 = Tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej.
| 9 = Inne zmienne: | nagłówek9 = tak
| 10 = {{Code|dokumentacja}} {{Patrz|dokumentacja}} | _10 = Określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}}.
| 11 = {{Code|czy_szablon}} {{Patrz|czy_szablon}} | _11 = Gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją.
| 12 = {{Code|nazwa_modulu_szablonu_opisu}} {{Patrz|nazwa_modulu_szablonu_opisu}} | _12 = Zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami '''{{lpg|HTML}}''' na znaki.
| 13 = {{Code|szablon_nie_opis}} {{Patrz|szablon_nie_opis}} | _13 = Zmienna wskazująca, czy {{Code|nazwa strony}} {{LinkPatrz|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowany, używany wraz ze zmienną: {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}}.
| 14 = Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:| nagłówek14 = tak
| 15 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} | _15 = Operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
| 16 = {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} | _16 = Funkcja operująca na komentarzach, przeciwnie jest używana funkcja: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}}.
| 17 = {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} | _17 = Funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów.
| 18 = {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} | _18 = Funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_analizy_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
}}
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}}, operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} | _1 = Tekst do analizy, jak w funkcji nadrzędnej.
| 2 = {{Code|nazwa_modulu_szablonu_opisu}} {{LinkPatrz|nazwa_modulu_szablonu_opisu}} | _2 = Nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}.
| 3 = {{Code|nazwa_strony_bez_kodow_html}} {{Patrz|nazwa_strony_bez_kodow_html}} | _3 = Jest to nazwa strony: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, tylko z kodami '''{{lpg|HTML}}''' zamienionymi na ich odpowiedniki znakowe.
| 4 = {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}} | _4 = Tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej.
| 5 = {{Code|tabela_nazw}} {{Patrz|tabela_nazw}} | _5 = Tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, wewnątrz tej funkcji nadrzędnej.
}}
{{Hr}}
Funkcja: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}, ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę: {{Code|tablica}}, w funkcji zwracanej przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod metatabelki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} {{Patrz|__metatablica}}, to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Ten rozdział zawiera kolejność wywołań poszczególnych kroków w funkcji.
==== Poprawność pewnych nazw ====
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]|p=Html}}}}, która z: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}}.
==== Parametry uzyskanej strony ====
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}} {{Patrz|uchwyt strony}}, {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} i {{Code|czy_istnieje}} {{Patrz|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów.
==== Składniki preprocesora kodu mechanizmu: {{nobold|{{NS|l=tak|k=mw|w=tak}}}} ====
* Gdy {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli: {{Code|czy_noinclude}} {{LinkPatrz|czy_noinclude}}, przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie. Ze strony są usuwane pozostałości ze znaczników wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''' i znaczników jak {{Tag|templatedata}},
* Przeciwna wypadek: wtedy: {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}}, jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione.
==== Komentarze ====
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}.
===== Usuwanie pseudoszablonówi niektporych instrukcji warunkowych =====
* Ustawiane są zmienne w: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}} {{LinkPatrz|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}} {{Patrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}, by usunąc różne instrukcje warunkowe.
==== Specjalne elementy zmieniające wikikod ====
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
==== Kodowanie bazy danych kodów {{nobold|{{Code|{{m|Szablonowe}}}}}} ====
* Jeśli: {{Code|szablon_nie_opis}} {{LinkPatrz|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
b6o1vsh1seqg6uugral3j38camrffj6
558302
558301
2026-10-02T13:44:06Z
Persino
2851
/* {{Śródtytuł|p.SpreparowanyWikikodStrony}}{{Code|p.SpreparowanyWikikodStrony}} */
558302
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|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.SpreparowanyWikikodStrony}}{{Code|p.SpreparowanyWikikodStrony}} ==
Funkcja ściągąjąca opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Funkcja w opisach szablonów, a w niej instrukcje warunkowe podczas kodowania są rozwijane przy pomocy funkcji: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}}, a normalnie, gdy wewnątrz instrukcji warunkowych nie ma klamerek w funkcji, w składowej funkcji, tzn.: {{LinkPatrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja korzysta bezpośrednio z funkcji: {{LinkŚródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana. Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:SpreparowanyWikikodStrony(nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 2 = {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} | _2 = Nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw.
| 3 = {{Code|nazwa_modulu_szablonowa}} {{Patrz|nazwa_modulu_szablonowa}} | _3 = Nazwa modułu w wersji szablonowej, w wersji wywołaniowej.
| 4 = {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} | _4 = Przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony.
| 5 = {{Code|inkludowana}} {{Patrz|inkludowana}} | _5 = Przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej.
| 6 = Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem: | nagłówek6 = tak
| 7 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-SpreparowanyWikikodStrony}} | _7 = Funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, po kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
tekst=__FUNKCJA(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,dokumentacja,czy_niezakodowana)
</syntaxhighlight>
| 8 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-SpreparowanyWikikodStrony}} | _8 = Jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul)))then
</syntaxhighlight>
| 9 = {{Code|__FUNKCJA3}} {{Patrz|__FUNKCJA3-SpreparowanyWikikodStrony}} | _9 = Funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}}.
| 10 = Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]|p=Szablonowe}}}} {{Patrz|UstalanieNazwyWywołania}}: | nagłówek10 = tak
| 11 = {{Code|__FUNKCJA4}} {{Patrz|__FUNKCJA4-SpreparowanyWikikodStrony}} | _11 = Funkcja, np. dekodująca nazwę szablonu.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if(__FUNKCJA4)then
nazwa_szablonu,powodzenie__FUNKCJA4(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
| 12 = {{Code|__FUNKCJA5}} {{Patrz|__FUNKCJA5-SpreparowanyWikikodStrony}} | _12 = Funkcja, np. rozwijająca nazwę szablonu.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
nazwa_szablonu=__FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
</syntaxhighlight>
| 13 = Inne: | nagłówek13 = tak
| 14 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _14 = Funkcja do modyfikacji tekstu pobranego ze strony
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
tekst_artykulu=__FUNKCJA_ANALIZA_SPISOWA and __FUNKCJA_ANALIZA_SPISOWA(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw) or tekst_artykulu;
</syntaxhighlight>
| 15 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _15 = Funkcje do generowania tablicy bazy kodów.
<syntaxhighlight lang="lua">
</syntaxhighlight>
}}
Definicje funkcji: {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-UstalanieNazwyWywołania}} i {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-UstalanieNazwyWywołania}}, które są potrzebne do konstrukcji wywołania funkcji: {{LinkPatrz|UstalanieNazwyWywołania}}, uzyskiwania nazwy szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} i {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}}, definicje tych funkcji:
* {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Tablica danych bazy kodów zakodowanego tekstu.
| 5 = {{Code|dokumentacja}} | _5 = Jak w: {{LinkPatrz|dokumentacja}}.
| 6 = {{Code|czy_nie_opis}} {{Patrz|czy_nie_opis}} | _6 = Czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu_caly}} {{Patrz|tekst_artykulu_caly}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} {{LinkPatrz|__FUNKCJA3-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu,nazwa_modulu_szablonowa)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_modulu}} | _1 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 2 = {{Code|nazwa_modulu_szablonowa}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory,czy_z_kluczem]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} | _1 = Nazwa szablonu do rozwinięcia.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}}. | _5 = Tabela parametrów potrzebna do szybszego działania '''{{ld|StronicowyParser|Stronicowego parsera}}'''.
| 6 = Gdy tą funkcją jest: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}}, te zmienne bezpośrednio w: {{Code|__FUNKCJA4}}, nie występują, ale za to występują w tej podanej szczególnej przykładowej funkcji, tzn. argumenty: | komórka6 = tak
| 7 = {{Code|czy_uwzgledniac_modyfikatory}} {{Patrz|czy_uwzgledniac_modyfikatory}} | _7 = Czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}}.
| 8 = {{Code|czy_z_kluczem}} {{Patrz|czy_z_kluczem}} | _8 = Czy klucze, o wzorze: {{Code|<nowiki>^klucz$</nowiki>}}, lub {{Code|<nowiki>^klucz[1-9]%d*$</nowiki>}}.
}}
Jeżeli w funkcji {{LinkPatrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}} nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}} w przeciwnym wypadku zwracane jest nazwa szablonu i wartość {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} | _1 = Jak w: {{LinkPatrz|nazwa_szablonu}}. To jest nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}.
| 2 = {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} | _2 = Tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, to jest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}}, w przypadku: {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}.
| 3 = {{Code|nazwa_modulu}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 4 = {{Code|nazwa_modulu_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{LzLua|frame:preprocess}}, w korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, z której korzysta {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}, jeżeli korzystanej tutaj funkcja zrzuciła niepowodzenie, to pierwsza wartość zwrótcone to: {{Code|nil}}, druga: {{Code|false}}, w przeciwnym wypadku zwraca nazwę rozwiniętego szablonu i drugą wartość zrzuconą: {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice:
; Przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy{{dk}} {{nobold|{{Code|czy_niezakodowana {{=}} true}}}}, i {{nobold|{{Code|czy_nie_opis {{=}} true}}}}, według funkcji{{dk}}
* {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów,
; W przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja:
* {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami.
: Te funkcje są wywoływane wewnątrz funkcji: {{LinkŚródtytuł|p.SpreparowanyWikikodStrony}}. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana. Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Strona, a jednocześnie uchwyt do bazy danych kodów zakodowanego tekstu, o nazwie modułu do rozwinięcia i zakodowania.
| 3 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _3 = Nazwa strony szablonowa, w postaci wywołaniowej szablonów.
| 4 = {{Code|inkludowana}} {{LinkPatrz|inkludowana}} | _4 = Zmienna, czy strona ma być interpretowana jako inkludowana.
| 5 = Zmienne funkcyjne: | nagłówek5 = tak
| 6 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _6 = Funkcja generująca zawartość, może być zmodyfikowana, na podstawie pełnej nazwy strony, używana w funkcji: jest to {{Code|__FUNKCJA3}} w: {{Code|{{sr|#FunkcjaIterajacaRozwijanegoSzablonu|p=Szablonowe}}}} {{Patrz|__FUNKCJA-FunkcjaIterajacaRozwijanegoSzablonu}}.
| 7 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _7 = Funkcja do generowania zawartości, może być zmodyfikowana, według podanej jej wartości, używana w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|FUNKCJA2-KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, w postaci zmodyfikowanej, czyli w wersji: {{Code|__FUNKCJA2}},
| 8 = Inne zmienne funkcyjne: | nagłówek8 = tak
| 9 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _9 = Inne operacje wykonywane na pobranym tekście.
| 10 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _10 = Funkcja użyta do generowania tablicy bazy kodów.
}}
Funkcje {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}}, zostały już opisane w tym module, więc wystarczy opisać inne.
{{Hr}}
* Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|pelna_nazwa_szablonu}} | _1 = Pełna nazwa szablonu.
| 2 = {{Code|tabela_parametrow_szablonu}} | _2 = Tabela parametrów wywołania szablonu do rozwinięcia.
| 3 = {{Code|tabela_modyfikatorow}} | _3 = Tabela modyfikatorów danego wywołania szablonowego.
}}
{{Hr}}
* Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Zawartość elementu wikikodu według {{Code|{{m|Szablonowe}}}}.
| 2 = {{Code|obiekt}} {{Patrz|obiekt}} | _2 = Nazwa obiektu szablonowego, jak: {{Code|SZABLON}}.
| 3 = {{Code|kod}} {{Patrz|kod}} | _3 = Numer obiektu, typu: {{Code|obiekt}} {{LinkPatrz|obiekt}}.
| 4 = {{Code|tekst}} | _4 = Tekst całego artykułu.
| 5 = {{Code|numer_szablonu}} {{Patrz|numer_szablonu}} | _5 = Tabela numerów dla różnych obiektów w jednej tabeli.
| 6 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _6 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 7 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _7 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
== {{Śródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}{{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}} ==
Funkcja służy do ściągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}.
Posiada własną walidacje nazwy stron, czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów.
Funkcja odpowiednio operuje na znacznikach wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''', tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
{{OpisParametrów
| 1 = Zmienne obiektowe: | nagłówek1 = tak
| 2 = {{Code|self}} {{Patrz|self}} | _2 = Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 3 = Zwykłe zmienne: | nagłówek3 = tak
| 4 = {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} | _4 = Nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć.
| 5 = {{Code|nazwa_strony2}} {{Patrz|nazwa_strony2}} | _5 = Uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej.
| 6 = {{Code|czy_noinclude}} {{Patrz|czy_noinclude}} | _6 = Jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka.
| 7 = Zmienne tablicowe: | nagłówek7 = tak
| 8 = {{Code|szablony_magiczne}} {{Patrz|szablony_magiczne}} | _8 = Tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej.
| 9 = Inne zmienne: | nagłówek9 = tak
| 10 = {{Code|dokumentacja}} {{Patrz|dokumentacja}} | _10 = Określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}}.
| 11 = {{Code|czy_szablon}} {{Patrz|czy_szablon}} | _11 = Gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją.
| 12 = {{Code|nazwa_modulu_szablonu_opisu}} {{Patrz|nazwa_modulu_szablonu_opisu}} | _12 = Zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami '''{{lpg|HTML}}''' na znaki.
| 13 = {{Code|szablon_nie_opis}} {{Patrz|szablon_nie_opis}} | _13 = Zmienna wskazująca, czy {{Code|nazwa strony}} {{LinkPatrz|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowany, używany wraz ze zmienną: {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}}.
| 14 = Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:| nagłówek14 = tak
| 15 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} | _15 = Operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
| 16 = {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} | _16 = Funkcja operująca na komentarzach, przeciwnie jest używana funkcja: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}}.
| 17 = {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} | _17 = Funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów.
| 18 = {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} | _18 = Funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_analizy_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
}}
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}}, operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} | _1 = Tekst do analizy, jak w funkcji nadrzędnej.
| 2 = {{Code|nazwa_modulu_szablonu_opisu}} {{LinkPatrz|nazwa_modulu_szablonu_opisu}} | _2 = Nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}.
| 3 = {{Code|nazwa_strony_bez_kodow_html}} {{Patrz|nazwa_strony_bez_kodow_html}} | _3 = Jest to nazwa strony: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, tylko z kodami '''{{lpg|HTML}}''' zamienionymi na ich odpowiedniki znakowe.
| 4 = {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}} | _4 = Tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej.
| 5 = {{Code|tabela_nazw}} {{Patrz|tabela_nazw}} | _5 = Tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, wewnątrz tej funkcji nadrzędnej.
}}
{{Hr}}
Funkcja: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}, ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę: {{Code|tablica}}, w funkcji zwracanej przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod metatabelki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} {{Patrz|__metatablica}}, to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Ten rozdział zawiera kolejność wywołań poszczególnych kroków w funkcji.
==== Poprawność pewnych nazw ====
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]|p=Html}}}}, która z: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}}.
==== Parametry uzyskanej strony ====
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}} {{Patrz|uchwyt strony}}, {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} i {{Code|czy_istnieje}} {{Patrz|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów.
==== Składniki preprocesora kodu mechanizmu: {{nobold|{{NS|l=tak|k=mw|w=tak}}}} ====
* Gdy {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli: {{Code|czy_noinclude}} {{LinkPatrz|czy_noinclude}}, przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie. Ze strony są usuwane pozostałości ze znaczników wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''' i znaczników jak {{Tag|templatedata}},
* Przeciwna wypadek: wtedy: {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}}, jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione.
==== Komentarze ====
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}.
===== Usuwanie pseudoszablonówi niektporych instrukcji warunkowych =====
* Ustawiane są zmienne w: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}} {{LinkPatrz|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}} {{Patrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}, by usunąc różne instrukcje warunkowe.
==== Specjalne elementy zmieniające wikikod ====
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
==== Kodowanie bazy danych kodów {{nobold|{{Code|{{m|Szablonowe}}}}}} ====
* Jeśli: {{Code|szablon_nie_opis}} {{LinkPatrz|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
ssx7qqpm66r61n6b25zst7r6k3x2rk0
558303
558302
2026-10-02T13:50:53Z
Persino
2851
/* {{Śródtytuł|p.SpreparowanyWikikodStrony}}{{Code|p.SpreparowanyWikikodStrony}} */
558303
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|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.SpreparowanyWikikodStrony}}{{Code|p.SpreparowanyWikikodStrony}} ==
Funkcja ściągąjąca opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Funkcja w opisach szablonów, a w niej instrukcje warunkowe podczas kodowania są rozwijane przy pomocy funkcji: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}}, a normalnie, gdy wewnątrz instrukcji warunkowych nie ma klamerek w funkcji, w składowej funkcji, tzn.: {{LinkPatrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja korzysta bezpośrednio z funkcji: {{LinkŚródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana. Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:SpreparowanyWikikodStrony(nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 2 = {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} | _2 = Nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw.
| 3 = {{Code|nazwa_modulu_szablonowa}} {{Patrz|nazwa_modulu_szablonowa}} | _3 = Nazwa modułu w wersji szablonowej, w wersji wywołaniowej.
| 4 = {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} | _4 = Przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony.
| 5 = {{Code|inkludowana}} {{Patrz|inkludowana}} | _5 = Przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej.
| 6 = Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem: | nagłówek6 = tak
| 7 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-SpreparowanyWikikodStrony}} | _7 = Funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, po kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
tekst=__FUNKCJA(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,dokumentacja,czy_niezakodowana)
</syntaxhighlight>
| 8 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-SpreparowanyWikikodStrony}} | _8 = Jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul)))then
</syntaxhighlight>
| 9 = {{Code|__FUNKCJA3}} {{Patrz|__FUNKCJA3-SpreparowanyWikikodStrony}} | _9 = Funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}}.
| 10 = Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]|p=Szablonowe}}}} {{Patrz|UstalanieNazwyWywołania}}: | nagłówek10 = tak
| 11 = {{Code|__FUNKCJA4}} {{Patrz|__FUNKCJA4-SpreparowanyWikikodStrony}} | _11 = Funkcja, np. dekodująca nazwę szablonu.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if(__FUNKCJA4)then
nazwa_szablonu,powodzenie__FUNKCJA4(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
| 12 = {{Code|__FUNKCJA5}} {{Patrz|__FUNKCJA5-SpreparowanyWikikodStrony}} | _12 = Funkcja, np. rozwijająca nazwę szablonu.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
nazwa_szablonu=__FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
</syntaxhighlight>
| 13 = Inne: | nagłówek13 = tak
| 14 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _14 = Funkcja do modyfikacji tekstu pobranego ze strony
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
tekst_artykulu=__FUNKCJA_ANALIZA_SPISOWA and __FUNKCJA_ANALIZA_SPISOWA(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw) or tekst_artykulu;
</syntaxhighlight>
| 15 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _15 = Funkcje do generowania tablicy bazy kodów.
{{P|Przykład definicji:}}
<syntaxhighlight lang="lua">
function __FUNKCJA_PARAMETRY(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_element_juz_istnieje)
...
end;
end;
</syntaxhighlight>
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
local __FUNKCJA=__FUNKCJA_PARAMETRY(obiekt);
...
__FUNKCJA(tablica,klucz,wartosc_tablicy,false);
</syntaxhighlight>
}}
Definicje funkcji: {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-UstalanieNazwyWywołania}} i {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-UstalanieNazwyWywołania}}, które są potrzebne do konstrukcji wywołania funkcji: {{LinkPatrz|UstalanieNazwyWywołania}}, uzyskiwania nazwy szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} i {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}}, definicje tych funkcji:
* {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Tablica danych bazy kodów zakodowanego tekstu.
| 5 = {{Code|dokumentacja}} | _5 = Jak w: {{LinkPatrz|dokumentacja}}.
| 6 = {{Code|czy_nie_opis}} {{Patrz|czy_nie_opis}} | _6 = Czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu_caly}} {{Patrz|tekst_artykulu_caly}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} {{LinkPatrz|__FUNKCJA3-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu,nazwa_modulu_szablonowa)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_modulu}} | _1 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 2 = {{Code|nazwa_modulu_szablonowa}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory,czy_z_kluczem]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} | _1 = Nazwa szablonu do rozwinięcia.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}}. | _5 = Tabela parametrów potrzebna do szybszego działania '''{{ld|StronicowyParser|Stronicowego parsera}}'''.
| 6 = Gdy tą funkcją jest: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}}, te zmienne bezpośrednio w: {{Code|__FUNKCJA4}}, nie występują, ale za to występują w tej podanej szczególnej przykładowej funkcji, tzn. argumenty: | komórka6 = tak
| 7 = {{Code|czy_uwzgledniac_modyfikatory}} {{Patrz|czy_uwzgledniac_modyfikatory}} | _7 = Czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}}.
| 8 = {{Code|czy_z_kluczem}} {{Patrz|czy_z_kluczem}} | _8 = Czy klucze, o wzorze: {{Code|<nowiki>^klucz$</nowiki>}}, lub {{Code|<nowiki>^klucz[1-9]%d*$</nowiki>}}.
}}
Jeżeli w funkcji {{LinkPatrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}} nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}} w przeciwnym wypadku zwracane jest nazwa szablonu i wartość {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} | _1 = Jak w: {{LinkPatrz|nazwa_szablonu}}. To jest nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}.
| 2 = {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} | _2 = Tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, to jest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}}, w przypadku: {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}.
| 3 = {{Code|nazwa_modulu}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 4 = {{Code|nazwa_modulu_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{LzLua|frame:preprocess}}, w korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, z której korzysta {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}, jeżeli korzystanej tutaj funkcja zrzuciła niepowodzenie, to pierwsza wartość zwrótcone to: {{Code|nil}}, druga: {{Code|false}}, w przeciwnym wypadku zwraca nazwę rozwiniętego szablonu i drugą wartość zrzuconą: {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice:
; Przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy{{dk}} {{nobold|{{Code|czy_niezakodowana {{=}} true}}}}, i {{nobold|{{Code|czy_nie_opis {{=}} true}}}}, według funkcji{{dk}}
* {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów,
; W przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja:
* {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami.
: Te funkcje są wywoływane wewnątrz funkcji: {{LinkŚródtytuł|p.SpreparowanyWikikodStrony}}. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana. Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Strona, a jednocześnie uchwyt do bazy danych kodów zakodowanego tekstu, o nazwie modułu do rozwinięcia i zakodowania.
| 3 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _3 = Nazwa strony szablonowa, w postaci wywołaniowej szablonów.
| 4 = {{Code|inkludowana}} {{LinkPatrz|inkludowana}} | _4 = Zmienna, czy strona ma być interpretowana jako inkludowana.
| 5 = Zmienne funkcyjne: | nagłówek5 = tak
| 6 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _6 = Funkcja generująca zawartość, może być zmodyfikowana, na podstawie pełnej nazwy strony, używana w funkcji: jest to {{Code|__FUNKCJA3}} w: {{Code|{{sr|#FunkcjaIterajacaRozwijanegoSzablonu|p=Szablonowe}}}} {{Patrz|__FUNKCJA-FunkcjaIterajacaRozwijanegoSzablonu}}.
| 7 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _7 = Funkcja do generowania zawartości, może być zmodyfikowana, według podanej jej wartości, używana w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|FUNKCJA2-KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, w postaci zmodyfikowanej, czyli w wersji: {{Code|__FUNKCJA2}},
| 8 = Inne zmienne funkcyjne: | nagłówek8 = tak
| 9 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _9 = Inne operacje wykonywane na pobranym tekście.
| 10 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _10 = Funkcja użyta do generowania tablicy bazy kodów.
}}
Funkcje {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}}, zostały już opisane w tym module, więc wystarczy opisać inne.
{{Hr}}
* Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|pelna_nazwa_szablonu}} | _1 = Pełna nazwa szablonu.
| 2 = {{Code|tabela_parametrow_szablonu}} | _2 = Tabela parametrów wywołania szablonu do rozwinięcia.
| 3 = {{Code|tabela_modyfikatorow}} | _3 = Tabela modyfikatorów danego wywołania szablonowego.
}}
{{Hr}}
* Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Zawartość elementu wikikodu według {{Code|{{m|Szablonowe}}}}.
| 2 = {{Code|obiekt}} {{Patrz|obiekt}} | _2 = Nazwa obiektu szablonowego, jak: {{Code|SZABLON}}.
| 3 = {{Code|kod}} {{Patrz|kod}} | _3 = Numer obiektu, typu: {{Code|obiekt}} {{LinkPatrz|obiekt}}.
| 4 = {{Code|tekst}} | _4 = Tekst całego artykułu.
| 5 = {{Code|numer_szablonu}} {{Patrz|numer_szablonu}} | _5 = Tabela numerów dla różnych obiektów w jednej tabeli.
| 6 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _6 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 7 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _7 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
== {{Śródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}{{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}} ==
Funkcja służy do ściągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}.
Posiada własną walidacje nazwy stron, czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów.
Funkcja odpowiednio operuje na znacznikach wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''', tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
{{OpisParametrów
| 1 = Zmienne obiektowe: | nagłówek1 = tak
| 2 = {{Code|self}} {{Patrz|self}} | _2 = Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 3 = Zwykłe zmienne: | nagłówek3 = tak
| 4 = {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} | _4 = Nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć.
| 5 = {{Code|nazwa_strony2}} {{Patrz|nazwa_strony2}} | _5 = Uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej.
| 6 = {{Code|czy_noinclude}} {{Patrz|czy_noinclude}} | _6 = Jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka.
| 7 = Zmienne tablicowe: | nagłówek7 = tak
| 8 = {{Code|szablony_magiczne}} {{Patrz|szablony_magiczne}} | _8 = Tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej.
| 9 = Inne zmienne: | nagłówek9 = tak
| 10 = {{Code|dokumentacja}} {{Patrz|dokumentacja}} | _10 = Określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}}.
| 11 = {{Code|czy_szablon}} {{Patrz|czy_szablon}} | _11 = Gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją.
| 12 = {{Code|nazwa_modulu_szablonu_opisu}} {{Patrz|nazwa_modulu_szablonu_opisu}} | _12 = Zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami '''{{lpg|HTML}}''' na znaki.
| 13 = {{Code|szablon_nie_opis}} {{Patrz|szablon_nie_opis}} | _13 = Zmienna wskazująca, czy {{Code|nazwa strony}} {{LinkPatrz|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowany, używany wraz ze zmienną: {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}}.
| 14 = Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:| nagłówek14 = tak
| 15 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} | _15 = Operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
| 16 = {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} | _16 = Funkcja operująca na komentarzach, przeciwnie jest używana funkcja: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}}.
| 17 = {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} | _17 = Funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów.
| 18 = {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} | _18 = Funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_analizy_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
}}
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}}, operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} | _1 = Tekst do analizy, jak w funkcji nadrzędnej.
| 2 = {{Code|nazwa_modulu_szablonu_opisu}} {{LinkPatrz|nazwa_modulu_szablonu_opisu}} | _2 = Nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}.
| 3 = {{Code|nazwa_strony_bez_kodow_html}} {{Patrz|nazwa_strony_bez_kodow_html}} | _3 = Jest to nazwa strony: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, tylko z kodami '''{{lpg|HTML}}''' zamienionymi na ich odpowiedniki znakowe.
| 4 = {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}} | _4 = Tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej.
| 5 = {{Code|tabela_nazw}} {{Patrz|tabela_nazw}} | _5 = Tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, wewnątrz tej funkcji nadrzędnej.
}}
{{Hr}}
Funkcja: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}, ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę: {{Code|tablica}}, w funkcji zwracanej przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod metatabelki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} {{Patrz|__metatablica}}, to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Ten rozdział zawiera kolejność wywołań poszczególnych kroków w funkcji.
==== Poprawność pewnych nazw ====
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]|p=Html}}}}, która z: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}}.
==== Parametry uzyskanej strony ====
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}} {{Patrz|uchwyt strony}}, {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} i {{Code|czy_istnieje}} {{Patrz|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów.
==== Składniki preprocesora kodu mechanizmu: {{nobold|{{NS|l=tak|k=mw|w=tak}}}} ====
* Gdy {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli: {{Code|czy_noinclude}} {{LinkPatrz|czy_noinclude}}, przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie. Ze strony są usuwane pozostałości ze znaczników wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''' i znaczników jak {{Tag|templatedata}},
* Przeciwna wypadek: wtedy: {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}}, jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione.
==== Komentarze ====
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}.
===== Usuwanie pseudoszablonówi niektporych instrukcji warunkowych =====
* Ustawiane są zmienne w: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}} {{LinkPatrz|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}} {{Patrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}, by usunąc różne instrukcje warunkowe.
==== Specjalne elementy zmieniające wikikod ====
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
==== Kodowanie bazy danych kodów {{nobold|{{Code|{{m|Szablonowe}}}}}} ====
* Jeśli: {{Code|szablon_nie_opis}} {{LinkPatrz|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
sg1xzu0avvrilyy0tg2b70f0aurx44h
558304
558303
2026-10-02T13:54:10Z
Persino
2851
/* {{Śródtytuł|p.SpreparowanyWikikodStrony}}{{Code|p.SpreparowanyWikikodStrony}} */
558304
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|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.SpreparowanyWikikodStrony}}{{Code|p.SpreparowanyWikikodStrony}} ==
Funkcja ściągąjąca opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Funkcja w opisach szablonów, a w niej instrukcje warunkowe podczas kodowania są rozwijane przy pomocy funkcji: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}}, a normalnie, gdy wewnątrz instrukcji warunkowych nie ma klamerek w funkcji, w składowej funkcji, tzn.: {{LinkPatrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja korzysta bezpośrednio z funkcji: {{LinkŚródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana. Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:SpreparowanyWikikodStrony(nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 2 = {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} | _2 = Nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw.
| 3 = {{Code|nazwa_modulu_szablonowa}} {{Patrz|nazwa_modulu_szablonowa}} | _3 = Nazwa modułu w wersji szablonowej, w wersji wywołaniowej.
| 4 = {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} | _4 = Przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony.
| 5 = {{Code|inkludowana}} {{Patrz|inkludowana}} | _5 = Przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej.
| 6 = Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem: | nagłówek6 = tak
| 7 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-SpreparowanyWikikodStrony}} | _7 = Funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, po kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
tekst=__FUNKCJA(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,dokumentacja,czy_niezakodowana)
</syntaxhighlight>
| 8 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-SpreparowanyWikikodStrony}} | _8 = Jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul)))then
</syntaxhighlight>
| 9 = {{Code|__FUNKCJA3}} {{Patrz|__FUNKCJA3-SpreparowanyWikikodStrony}} | _9 = Funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}}.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu,nazwa_modulu_szablonowa) or nil;
</syntaxhighlight>
| 10 = Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]|p=Szablonowe}}}} {{Patrz|UstalanieNazwyWywołania}}: | nagłówek10 = tak
| 11 = {{Code|__FUNKCJA4}} {{Patrz|__FUNKCJA4-SpreparowanyWikikodStrony}} | _11 = Funkcja, np. dekodująca nazwę szablonu.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if(__FUNKCJA4)then
nazwa_szablonu,powodzenie__FUNKCJA4(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
| 12 = {{Code|__FUNKCJA5}} {{Patrz|__FUNKCJA5-SpreparowanyWikikodStrony}} | _12 = Funkcja, np. rozwijająca nazwę szablonu.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
nazwa_szablonu=__FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
</syntaxhighlight>
| 13 = Inne: | nagłówek13 = tak
| 14 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _14 = Funkcja do modyfikacji tekstu pobranego ze strony
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
tekst_artykulu=__FUNKCJA_ANALIZA_SPISOWA and __FUNKCJA_ANALIZA_SPISOWA(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw) or tekst_artykulu;
</syntaxhighlight>
| 15 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _15 = Funkcje do generowania tablicy bazy kodów.
{{P|Przykład definicji:}}
<syntaxhighlight lang="lua">
function __FUNKCJA_PARAMETRY(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_element_juz_istnieje)
...
end;
end;
</syntaxhighlight>
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
local __FUNKCJA=__FUNKCJA_PARAMETRY(obiekt);
...
__FUNKCJA(tablica,klucz,wartosc_tablicy,false);
</syntaxhighlight>
}}
Definicje funkcji: {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-UstalanieNazwyWywołania}} i {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-UstalanieNazwyWywołania}}, które są potrzebne do konstrukcji wywołania funkcji: {{LinkPatrz|UstalanieNazwyWywołania}}, uzyskiwania nazwy szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} i {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}}, definicje tych funkcji:
* {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Tablica danych bazy kodów zakodowanego tekstu.
| 5 = {{Code|dokumentacja}} | _5 = Jak w: {{LinkPatrz|dokumentacja}}.
| 6 = {{Code|czy_nie_opis}} {{Patrz|czy_nie_opis}} | _6 = Czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu_caly}} {{Patrz|tekst_artykulu_caly}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} {{LinkPatrz|__FUNKCJA3-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu,nazwa_modulu_szablonowa)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_modulu}} | _1 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 2 = {{Code|nazwa_modulu_szablonowa}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory,czy_z_kluczem]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} | _1 = Nazwa szablonu do rozwinięcia.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}}. | _5 = Tabela parametrów potrzebna do szybszego działania '''{{ld|StronicowyParser|Stronicowego parsera}}'''.
| 6 = Gdy tą funkcją jest: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}}, te zmienne bezpośrednio w: {{Code|__FUNKCJA4}}, nie występują, ale za to występują w tej podanej szczególnej przykładowej funkcji, tzn. argumenty: | komórka6 = tak
| 7 = {{Code|czy_uwzgledniac_modyfikatory}} {{Patrz|czy_uwzgledniac_modyfikatory}} | _7 = Czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}}.
| 8 = {{Code|czy_z_kluczem}} {{Patrz|czy_z_kluczem}} | _8 = Czy klucze, o wzorze: {{Code|<nowiki>^klucz$</nowiki>}}, lub {{Code|<nowiki>^klucz[1-9]%d*$</nowiki>}}.
}}
Jeżeli w funkcji {{LinkPatrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}} nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}} w przeciwnym wypadku zwracane jest nazwa szablonu i wartość {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} | _1 = Jak w: {{LinkPatrz|nazwa_szablonu}}. To jest nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}.
| 2 = {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} | _2 = Tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, to jest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}}, w przypadku: {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}.
| 3 = {{Code|nazwa_modulu}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 4 = {{Code|nazwa_modulu_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{LzLua|frame:preprocess}}, w korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, z której korzysta {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}, jeżeli korzystanej tutaj funkcja zrzuciła niepowodzenie, to pierwsza wartość zwrótcone to: {{Code|nil}}, druga: {{Code|false}}, w przeciwnym wypadku zwraca nazwę rozwiniętego szablonu i drugą wartość zrzuconą: {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice:
; Przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy{{dk}} {{nobold|{{Code|czy_niezakodowana {{=}} true}}}}, i {{nobold|{{Code|czy_nie_opis {{=}} true}}}}, według funkcji{{dk}}
* {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów,
; W przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja:
* {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami.
: Te funkcje są wywoływane wewnątrz funkcji: {{LinkŚródtytuł|p.SpreparowanyWikikodStrony}}. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana. Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Strona, a jednocześnie uchwyt do bazy danych kodów zakodowanego tekstu, o nazwie modułu do rozwinięcia i zakodowania.
| 3 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _3 = Nazwa strony szablonowa, w postaci wywołaniowej szablonów.
| 4 = {{Code|inkludowana}} {{LinkPatrz|inkludowana}} | _4 = Zmienna, czy strona ma być interpretowana jako inkludowana.
| 5 = Zmienne funkcyjne: | nagłówek5 = tak
| 6 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _6 = Funkcja generująca zawartość, może być zmodyfikowana, na podstawie pełnej nazwy strony, używana w funkcji: jest to {{Code|__FUNKCJA3}} w: {{Code|{{sr|#FunkcjaIterajacaRozwijanegoSzablonu|p=Szablonowe}}}} {{Patrz|__FUNKCJA-FunkcjaIterajacaRozwijanegoSzablonu}}.
| 7 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _7 = Funkcja do generowania zawartości, może być zmodyfikowana, według podanej jej wartości, używana w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|FUNKCJA2-KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, w postaci zmodyfikowanej, czyli w wersji: {{Code|__FUNKCJA2}},
| 8 = Inne zmienne funkcyjne: | nagłówek8 = tak
| 9 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _9 = Inne operacje wykonywane na pobranym tekście.
| 10 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _10 = Funkcja użyta do generowania tablicy bazy kodów.
}}
Funkcje {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}}, zostały już opisane w tym module, więc wystarczy opisać inne.
{{Hr}}
* Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|pelna_nazwa_szablonu}} | _1 = Pełna nazwa szablonu.
| 2 = {{Code|tabela_parametrow_szablonu}} | _2 = Tabela parametrów wywołania szablonu do rozwinięcia.
| 3 = {{Code|tabela_modyfikatorow}} | _3 = Tabela modyfikatorów danego wywołania szablonowego.
}}
{{Hr}}
* Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Zawartość elementu wikikodu według {{Code|{{m|Szablonowe}}}}.
| 2 = {{Code|obiekt}} {{Patrz|obiekt}} | _2 = Nazwa obiektu szablonowego, jak: {{Code|SZABLON}}.
| 3 = {{Code|kod}} {{Patrz|kod}} | _3 = Numer obiektu, typu: {{Code|obiekt}} {{LinkPatrz|obiekt}}.
| 4 = {{Code|tekst}} | _4 = Tekst całego artykułu.
| 5 = {{Code|numer_szablonu}} {{Patrz|numer_szablonu}} | _5 = Tabela numerów dla różnych obiektów w jednej tabeli.
| 6 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _6 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 7 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _7 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
== {{Śródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}{{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}} ==
Funkcja służy do ściągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}.
Posiada własną walidacje nazwy stron, czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów.
Funkcja odpowiednio operuje na znacznikach wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''', tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
{{OpisParametrów
| 1 = Zmienne obiektowe: | nagłówek1 = tak
| 2 = {{Code|self}} {{Patrz|self}} | _2 = Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 3 = Zwykłe zmienne: | nagłówek3 = tak
| 4 = {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} | _4 = Nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć.
| 5 = {{Code|nazwa_strony2}} {{Patrz|nazwa_strony2}} | _5 = Uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej.
| 6 = {{Code|czy_noinclude}} {{Patrz|czy_noinclude}} | _6 = Jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka.
| 7 = Zmienne tablicowe: | nagłówek7 = tak
| 8 = {{Code|szablony_magiczne}} {{Patrz|szablony_magiczne}} | _8 = Tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej.
| 9 = Inne zmienne: | nagłówek9 = tak
| 10 = {{Code|dokumentacja}} {{Patrz|dokumentacja}} | _10 = Określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}}.
| 11 = {{Code|czy_szablon}} {{Patrz|czy_szablon}} | _11 = Gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją.
| 12 = {{Code|nazwa_modulu_szablonu_opisu}} {{Patrz|nazwa_modulu_szablonu_opisu}} | _12 = Zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami '''{{lpg|HTML}}''' na znaki.
| 13 = {{Code|szablon_nie_opis}} {{Patrz|szablon_nie_opis}} | _13 = Zmienna wskazująca, czy {{Code|nazwa strony}} {{LinkPatrz|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowany, używany wraz ze zmienną: {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}}.
| 14 = Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:| nagłówek14 = tak
| 15 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} | _15 = Operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
| 16 = {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} | _16 = Funkcja operująca na komentarzach, przeciwnie jest używana funkcja: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}}.
| 17 = {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} | _17 = Funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów.
| 18 = {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} | _18 = Funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_analizy_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
}}
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}}, operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} | _1 = Tekst do analizy, jak w funkcji nadrzędnej.
| 2 = {{Code|nazwa_modulu_szablonu_opisu}} {{LinkPatrz|nazwa_modulu_szablonu_opisu}} | _2 = Nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}.
| 3 = {{Code|nazwa_strony_bez_kodow_html}} {{Patrz|nazwa_strony_bez_kodow_html}} | _3 = Jest to nazwa strony: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, tylko z kodami '''{{lpg|HTML}}''' zamienionymi na ich odpowiedniki znakowe.
| 4 = {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}} | _4 = Tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej.
| 5 = {{Code|tabela_nazw}} {{Patrz|tabela_nazw}} | _5 = Tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, wewnątrz tej funkcji nadrzędnej.
}}
{{Hr}}
Funkcja: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}, ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę: {{Code|tablica}}, w funkcji zwracanej przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod metatabelki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} {{Patrz|__metatablica}}, to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Ten rozdział zawiera kolejność wywołań poszczególnych kroków w funkcji.
==== Poprawność pewnych nazw ====
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]|p=Html}}}}, która z: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}}.
==== Parametry uzyskanej strony ====
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}} {{Patrz|uchwyt strony}}, {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} i {{Code|czy_istnieje}} {{Patrz|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów.
==== Składniki preprocesora kodu mechanizmu: {{nobold|{{NS|l=tak|k=mw|w=tak}}}} ====
* Gdy {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli: {{Code|czy_noinclude}} {{LinkPatrz|czy_noinclude}}, przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie. Ze strony są usuwane pozostałości ze znaczników wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''' i znaczników jak {{Tag|templatedata}},
* Przeciwna wypadek: wtedy: {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}}, jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione.
==== Komentarze ====
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}.
===== Usuwanie pseudoszablonówi niektporych instrukcji warunkowych =====
* Ustawiane są zmienne w: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}} {{LinkPatrz|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}} {{Patrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}, by usunąc różne instrukcje warunkowe.
==== Specjalne elementy zmieniające wikikod ====
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
==== Kodowanie bazy danych kodów {{nobold|{{Code|{{m|Szablonowe}}}}}} ====
* Jeśli: {{Code|szablon_nie_opis}} {{LinkPatrz|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
jjb1v7irt0d0n3rd8cshfxy0da6bhy2
558305
558304
2026-10-02T14:05:49Z
Persino
2851
/* {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} */
558305
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|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.SpreparowanyWikikodStrony}}{{Code|p.SpreparowanyWikikodStrony}} ==
Funkcja ściągąjąca opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Funkcja w opisach szablonów, a w niej instrukcje warunkowe podczas kodowania są rozwijane przy pomocy funkcji: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}}, a normalnie, gdy wewnątrz instrukcji warunkowych nie ma klamerek w funkcji, w składowej funkcji, tzn.: {{LinkPatrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja korzysta bezpośrednio z funkcji: {{LinkŚródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana. Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:SpreparowanyWikikodStrony(nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 2 = {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} | _2 = Nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw.
| 3 = {{Code|nazwa_modulu_szablonowa}} {{Patrz|nazwa_modulu_szablonowa}} | _3 = Nazwa modułu w wersji szablonowej, w wersji wywołaniowej.
| 4 = {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} | _4 = Przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony.
| 5 = {{Code|inkludowana}} {{Patrz|inkludowana}} | _5 = Przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej.
| 6 = Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem: | nagłówek6 = tak
| 7 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-SpreparowanyWikikodStrony}} | _7 = Funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, po kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
tekst=__FUNKCJA(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,dokumentacja,czy_niezakodowana)
</syntaxhighlight>
| 8 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-SpreparowanyWikikodStrony}} | _8 = Jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul)))then
</syntaxhighlight>
| 9 = {{Code|__FUNKCJA3}} {{Patrz|__FUNKCJA3-SpreparowanyWikikodStrony}} | _9 = Funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}}.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu,nazwa_modulu_szablonowa) or nil;
</syntaxhighlight>
| 10 = Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]|p=Szablonowe}}}} {{Patrz|UstalanieNazwyWywołania}}: | nagłówek10 = tak
| 11 = {{Code|__FUNKCJA4}} {{Patrz|__FUNKCJA4-SpreparowanyWikikodStrony}} | _11 = Funkcja, np. dekodująca nazwę szablonu.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if(__FUNKCJA4)then
nazwa_szablonu,powodzenie__FUNKCJA4(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
| 12 = {{Code|__FUNKCJA5}} {{Patrz|__FUNKCJA5-SpreparowanyWikikodStrony}} | _12 = Funkcja, np. rozwijająca nazwę szablonu.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
nazwa_szablonu=__FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
</syntaxhighlight>
| 13 = Inne: | nagłówek13 = tak
| 14 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _14 = Funkcja do modyfikacji tekstu pobranego ze strony
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
tekst_artykulu=__FUNKCJA_ANALIZA_SPISOWA and __FUNKCJA_ANALIZA_SPISOWA(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw) or tekst_artykulu;
</syntaxhighlight>
| 15 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _15 = Funkcje do generowania tablicy bazy kodów.
{{P|Przykład definicji:}}
<syntaxhighlight lang="lua">
function __FUNKCJA_PARAMETRY(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_element_juz_istnieje)
...
end;
end;
</syntaxhighlight>
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
local __FUNKCJA=__FUNKCJA_PARAMETRY(obiekt);
...
__FUNKCJA(tablica,klucz,wartosc_tablicy,false);
</syntaxhighlight>
}}
Definicje funkcji: {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-UstalanieNazwyWywołania}} i {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-UstalanieNazwyWywołania}}, które są potrzebne do konstrukcji wywołania funkcji: {{LinkPatrz|UstalanieNazwyWywołania}}, uzyskiwania nazwy szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} i {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}}, definicje tych funkcji:
* {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Tablica danych bazy kodów zakodowanego tekstu.
| 5 = {{Code|dokumentacja}} | _5 = Jak w: {{LinkPatrz|dokumentacja}}.
| 6 = {{Code|czy_nie_opis}} {{Patrz|czy_nie_opis}} | _6 = Czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu_caly}} {{Patrz|tekst_artykulu_caly}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} {{LinkPatrz|__FUNKCJA3-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu,nazwa_modulu_szablonowa)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_modulu}} | _1 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 2 = {{Code|nazwa_modulu_szablonowa}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory,czy_z_kluczem]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} | _1 = Nazwa szablonu do rozwinięcia.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}}. | _5 = Tabela parametrów potrzebna do szybszego działania '''{{ld|StronicowyParser|Stronicowego parsera}}'''.
| 6 = Gdy tą funkcją jest: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}}, te zmienne bezpośrednio w: {{Code|__FUNKCJA4}}, nie występują, ale za to występują w tej podanej szczególnej przykładowej funkcji, tzn. argumenty: | komórka6 = tak
| 7 = {{Code|czy_uwzgledniac_modyfikatory}} {{Patrz|czy_uwzgledniac_modyfikatory}} | _7 = Czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}}.
| 8 = {{Code|czy_z_kluczem}} {{Patrz|czy_z_kluczem}} | _8 = Czy klucze, o wzorze: {{Code|<nowiki>^klucz$</nowiki>}}, lub {{Code|<nowiki>^klucz[1-9]%d*$</nowiki>}}.
}}
Jeżeli w funkcji {{LinkPatrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}} nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}} w przeciwnym wypadku zwracane jest nazwa szablonu i wartość {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} | _1 = Jak w: {{LinkPatrz|nazwa_szablonu}}. To jest nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}.
| 2 = {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} | _2 = Tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, to jest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}}, w przypadku: {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}.
| 3 = {{Code|nazwa_modulu}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 4 = {{Code|nazwa_modulu_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{LzLua|frame:preprocess}}, w korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, z której korzysta {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}, jeżeli korzystanej tutaj funkcja zrzuciła niepowodzenie, to pierwsza wartość zwrótcone to: {{Code|nil}}, druga: {{Code|false}}, w przeciwnym wypadku zwraca nazwę rozwiniętego szablonu i drugą wartość zrzuconą: {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice:
; Przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy{{dk}} {{nobold|{{Code|czy_niezakodowana {{=}} true}}}}, i {{nobold|{{Code|czy_nie_opis {{=}} true}}}}, według funkcji{{dk}}
* {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów,
; W przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja:
* {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami.
: Te funkcje są wywoływane wewnątrz funkcji: {{LinkŚródtytuł|p.SpreparowanyWikikodStrony}}. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana. Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Strona, a jednocześnie uchwyt do bazy danych kodów zakodowanego tekstu, o nazwie modułu do rozwinięcia i zakodowania.
| 3 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _3 = Nazwa strony szablonowa, w postaci wywołaniowej szablonów.
| 4 = {{Code|inkludowana}} {{LinkPatrz|inkludowana}} | _4 = Zmienna, czy strona ma być interpretowana jako inkludowana.
| 5 = Zmienne funkcyjne: | nagłówek5 = tak
| 6 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _6 = Funkcja generująca zawartość, może być zmodyfikowana, na podstawie pełnej nazwy strony, używana w funkcji: jest to {{Code|__FUNKCJA3}} w: {{Code|{{sr|#FunkcjaIterajacaRozwijanegoSzablonu|p=Szablonowe}}}} {{Patrz|__FUNKCJA-FunkcjaIterajacaRozwijanegoSzablonu}}.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if((czy_niekodowane)and(__FUNKCJA3))then
local wynik=__FUNKCJA3(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow);
if(wynik)then
return wynik;
end;
end;
</syntaxhighlight>
| 7 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _7 = Funkcja do generowania zawartości, może być zmodyfikowana, według podanej jej wartości, używana w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|FUNKCJA2-KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, w postaci zmodyfikowanej, czyli w wersji: {{Code|__FUNKCJA2}},
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
szablon=__FUNKCJA4 and __FUNKCJA4(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or szablon;
</syntaxhighlight>
| 8 = Inne zmienne funkcyjne: | nagłówek8 = tak
| 9 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _9 = Inne operacje wykonywane na pobranym tekście.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
tekst_artykulu=__FUNKCJA_ANALIZA_SPISOWA and __FUNKCJA_ANALIZA_SPISOWA(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw) or tekst_artykulu;
</syntaxhighlight>
| 10 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _10 = Funkcja użyta do generowania tablicy bazy kodów.
{{P|Przykład definicji:}}
<syntaxhighlight lang="lua">
function __FUNKCJA_PARAMETRY(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_element_juz_istnieje)
...
end;
end;
</syntaxhighlight>
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
local __FUNKCJA=__FUNKCJA_PARAMETRY(obiekt);
...
__FUNKCJA(tablica,klucz,wartosc_tablicy,false);
</syntaxhighlight>
}}
Funkcje {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}}, zostały już opisane w tym module, więc wystarczy opisać inne.
{{Hr}}
* Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|pelna_nazwa_szablonu}} | _1 = Pełna nazwa szablonu.
| 2 = {{Code|tabela_parametrow_szablonu}} | _2 = Tabela parametrów wywołania szablonu do rozwinięcia.
| 3 = {{Code|tabela_modyfikatorow}} | _3 = Tabela modyfikatorów danego wywołania szablonowego.
}}
{{Hr}}
* Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Zawartość elementu wikikodu według {{Code|{{m|Szablonowe}}}}.
| 2 = {{Code|obiekt}} {{Patrz|obiekt}} | _2 = Nazwa obiektu szablonowego, jak: {{Code|SZABLON}}.
| 3 = {{Code|kod}} {{Patrz|kod}} | _3 = Numer obiektu, typu: {{Code|obiekt}} {{LinkPatrz|obiekt}}.
| 4 = {{Code|tekst}} | _4 = Tekst całego artykułu.
| 5 = {{Code|numer_szablonu}} {{Patrz|numer_szablonu}} | _5 = Tabela numerów dla różnych obiektów w jednej tabeli.
| 6 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _6 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 7 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _7 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
== {{Śródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}{{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}} ==
Funkcja służy do ściągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}.
Posiada własną walidacje nazwy stron, czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów.
Funkcja odpowiednio operuje na znacznikach wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''', tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
{{OpisParametrów
| 1 = Zmienne obiektowe: | nagłówek1 = tak
| 2 = {{Code|self}} {{Patrz|self}} | _2 = Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 3 = Zwykłe zmienne: | nagłówek3 = tak
| 4 = {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} | _4 = Nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć.
| 5 = {{Code|nazwa_strony2}} {{Patrz|nazwa_strony2}} | _5 = Uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej.
| 6 = {{Code|czy_noinclude}} {{Patrz|czy_noinclude}} | _6 = Jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka.
| 7 = Zmienne tablicowe: | nagłówek7 = tak
| 8 = {{Code|szablony_magiczne}} {{Patrz|szablony_magiczne}} | _8 = Tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej.
| 9 = Inne zmienne: | nagłówek9 = tak
| 10 = {{Code|dokumentacja}} {{Patrz|dokumentacja}} | _10 = Określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}}.
| 11 = {{Code|czy_szablon}} {{Patrz|czy_szablon}} | _11 = Gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją.
| 12 = {{Code|nazwa_modulu_szablonu_opisu}} {{Patrz|nazwa_modulu_szablonu_opisu}} | _12 = Zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami '''{{lpg|HTML}}''' na znaki.
| 13 = {{Code|szablon_nie_opis}} {{Patrz|szablon_nie_opis}} | _13 = Zmienna wskazująca, czy {{Code|nazwa strony}} {{LinkPatrz|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowany, używany wraz ze zmienną: {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}}.
| 14 = Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:| nagłówek14 = tak
| 15 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} | _15 = Operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
| 16 = {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} | _16 = Funkcja operująca na komentarzach, przeciwnie jest używana funkcja: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}}.
| 17 = {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} | _17 = Funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów.
| 18 = {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} | _18 = Funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_analizy_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
}}
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}}, operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} | _1 = Tekst do analizy, jak w funkcji nadrzędnej.
| 2 = {{Code|nazwa_modulu_szablonu_opisu}} {{LinkPatrz|nazwa_modulu_szablonu_opisu}} | _2 = Nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}.
| 3 = {{Code|nazwa_strony_bez_kodow_html}} {{Patrz|nazwa_strony_bez_kodow_html}} | _3 = Jest to nazwa strony: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, tylko z kodami '''{{lpg|HTML}}''' zamienionymi na ich odpowiedniki znakowe.
| 4 = {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}} | _4 = Tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej.
| 5 = {{Code|tabela_nazw}} {{Patrz|tabela_nazw}} | _5 = Tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, wewnątrz tej funkcji nadrzędnej.
}}
{{Hr}}
Funkcja: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}, ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę: {{Code|tablica}}, w funkcji zwracanej przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod metatabelki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} {{Patrz|__metatablica}}, to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Ten rozdział zawiera kolejność wywołań poszczególnych kroków w funkcji.
==== Poprawność pewnych nazw ====
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]|p=Html}}}}, która z: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}}.
==== Parametry uzyskanej strony ====
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}} {{Patrz|uchwyt strony}}, {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} i {{Code|czy_istnieje}} {{Patrz|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów.
==== Składniki preprocesora kodu mechanizmu: {{nobold|{{NS|l=tak|k=mw|w=tak}}}} ====
* Gdy {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli: {{Code|czy_noinclude}} {{LinkPatrz|czy_noinclude}}, przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie. Ze strony są usuwane pozostałości ze znaczników wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''' i znaczników jak {{Tag|templatedata}},
* Przeciwna wypadek: wtedy: {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}}, jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione.
==== Komentarze ====
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}.
===== Usuwanie pseudoszablonówi niektporych instrukcji warunkowych =====
* Ustawiane są zmienne w: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}} {{LinkPatrz|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}} {{Patrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}, by usunąc różne instrukcje warunkowe.
==== Specjalne elementy zmieniające wikikod ====
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
==== Kodowanie bazy danych kodów {{nobold|{{Code|{{m|Szablonowe}}}}}} ====
* Jeśli: {{Code|szablon_nie_opis}} {{LinkPatrz|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
9k7j7jozt18claqwoo6d2p1b9u2cebz
558306
558305
2026-10-02T14:08:12Z
Persino
2851
558306
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|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.SpreparowanyWikikodStrony}}{{Code|p.SpreparowanyWikikodStrony}} ==
Funkcja ściągąjąca opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Funkcja w opisach szablonów, a w niej instrukcje warunkowe podczas kodowania są rozwijane przy pomocy funkcji: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}}, a normalnie, gdy wewnątrz instrukcji warunkowych nie ma klamerek w funkcji, w składowej funkcji, tzn.: {{LinkPatrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja korzysta bezpośrednio z funkcji: {{LinkŚródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana. Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:SpreparowanyWikikodStrony(nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 2 = {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} | _2 = Nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw.
| 3 = {{Code|nazwa_modulu_szablonowa}} {{Patrz|nazwa_modulu_szablonowa}} | _3 = Nazwa modułu w wersji szablonowej, w wersji wywołaniowej.
| 4 = {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} | _4 = Przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony.
| 5 = {{Code|inkludowana}} {{Patrz|inkludowana}} | _5 = Przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej.
| 6 = Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem: | nagłówek6 = tak
| 7 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-SpreparowanyWikikodStrony}} | _7 = Funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, po kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
tekst=__FUNKCJA(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,dokumentacja,czy_niezakodowana)
</syntaxhighlight>
| 8 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-SpreparowanyWikikodStrony}} | _8 = Jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul)))then
| 9 = {{Code|__FUNKCJA3}} {{Patrz|__FUNKCJA3-SpreparowanyWikikodStrony}} | _9 = Funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}}.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu,nazwa_modulu_szablonowa) or nil;
</syntaxhighlight>
| 10 = Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]|p=Szablonowe}}}} {{Patrz|UstalanieNazwyWywołania}}: | nagłówek10 = tak
| 11 = {{Code|__FUNKCJA4}} {{Patrz|__FUNKCJA4-SpreparowanyWikikodStrony}} | _11 = Funkcja, np. dekodująca nazwę szablonu.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if(__FUNKCJA4)then
nazwa_szablonu,powodzenie__FUNKCJA4(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
| 12 = {{Code|__FUNKCJA5}} {{Patrz|__FUNKCJA5-SpreparowanyWikikodStrony}} | _12 = Funkcja, np. rozwijająca nazwę szablonu.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
nazwa_szablonu=__FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
</syntaxhighlight>
| 13 = Inne: | nagłówek13 = tak
| 14 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _14 = Funkcja do modyfikacji tekstu pobranego ze strony
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
tekst_artykulu=__FUNKCJA_ANALIZA_SPISOWA and __FUNKCJA_ANALIZA_SPISOWA(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw) or tekst_artykulu;
</syntaxhighlight>
| 15 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _15 = Funkcje do generowania tablicy bazy kodów.
{{Śródtekst|uchwyt=__FUNKCJA_PARAMETRY|tekst=
{{P|Przykład definicji:}}
<syntaxhighlight lang="lua">
function __FUNKCJA_PARAMETRY(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_element_juz_istnieje)
...
end;
end;
</syntaxhighlight>
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
local __FUNKCJA=__FUNKCJA_PARAMETRY(obiekt);
...
__FUNKCJA(tablica,klucz,wartosc_tablicy,false);
</syntaxhighlight>
}}
}}
Definicje funkcji: {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-UstalanieNazwyWywołania}} i {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-UstalanieNazwyWywołania}}, które są potrzebne do konstrukcji wywołania funkcji: {{LinkPatrz|UstalanieNazwyWywołania}}, uzyskiwania nazwy szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} i {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}}, definicje tych funkcji:
* {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Tablica danych bazy kodów zakodowanego tekstu.
| 5 = {{Code|dokumentacja}} | _5 = Jak w: {{LinkPatrz|dokumentacja}}.
| 6 = {{Code|czy_nie_opis}} {{Patrz|czy_nie_opis}} | _6 = Czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu_caly}} {{Patrz|tekst_artykulu_caly}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} {{LinkPatrz|__FUNKCJA3-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu,nazwa_modulu_szablonowa)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_modulu}} | _1 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 2 = {{Code|nazwa_modulu_szablonowa}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory,czy_z_kluczem]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} | _1 = Nazwa szablonu do rozwinięcia.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}}. | _5 = Tabela parametrów potrzebna do szybszego działania '''{{ld|StronicowyParser|Stronicowego parsera}}'''.
| 6 = Gdy tą funkcją jest: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}}, te zmienne bezpośrednio w: {{Code|__FUNKCJA4}}, nie występują, ale za to występują w tej podanej szczególnej przykładowej funkcji, tzn. argumenty: | komórka6 = tak
| 7 = {{Code|czy_uwzgledniac_modyfikatory}} {{Patrz|czy_uwzgledniac_modyfikatory}} | _7 = Czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}}.
| 8 = {{Code|czy_z_kluczem}} {{Patrz|czy_z_kluczem}} | _8 = Czy klucze, o wzorze: {{Code|<nowiki>^klucz$</nowiki>}}, lub {{Code|<nowiki>^klucz[1-9]%d*$</nowiki>}}.
}}
Jeżeli w funkcji {{LinkPatrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}} nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}} w przeciwnym wypadku zwracane jest nazwa szablonu i wartość {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} | _1 = Jak w: {{LinkPatrz|nazwa_szablonu}}. To jest nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}.
| 2 = {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} | _2 = Tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, to jest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}}, w przypadku: {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}.
| 3 = {{Code|nazwa_modulu}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 4 = {{Code|nazwa_modulu_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{LzLua|frame:preprocess}}, w korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, z której korzysta {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}, jeżeli korzystanej tutaj funkcja zrzuciła niepowodzenie, to pierwsza wartość zwrótcone to: {{Code|nil}}, druga: {{Code|false}}, w przeciwnym wypadku zwraca nazwę rozwiniętego szablonu i drugą wartość zrzuconą: {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice:
; Przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy{{dk}} {{nobold|{{Code|czy_niezakodowana {{=}} true}}}}, i {{nobold|{{Code|czy_nie_opis {{=}} true}}}}, według funkcji{{dk}}
* {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów,
; W przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja:
* {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami.
: Te funkcje są wywoływane wewnątrz funkcji: {{LinkŚródtytuł|p.SpreparowanyWikikodStrony}}. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana. Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Strona, a jednocześnie uchwyt do bazy danych kodów zakodowanego tekstu, o nazwie modułu do rozwinięcia i zakodowania.
| 3 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _3 = Nazwa strony szablonowa, w postaci wywołaniowej szablonów.
| 4 = {{Code|inkludowana}} {{LinkPatrz|inkludowana}} | _4 = Zmienna, czy strona ma być interpretowana jako inkludowana.
| 5 = Zmienne funkcyjne: | nagłówek5 = tak
| 6 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _6 = Funkcja generująca zawartość, może być zmodyfikowana, na podstawie pełnej nazwy strony, używana w funkcji: jest to {{Code|__FUNKCJA3}} w: {{Code|{{sr|#FunkcjaIterajacaRozwijanegoSzablonu|p=Szablonowe}}}} {{Patrz|__FUNKCJA-FunkcjaIterajacaRozwijanegoSzablonu}}.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if((czy_niekodowane)and(__FUNKCJA3))then
local wynik=__FUNKCJA3(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow);
if(wynik)then
return wynik;
end;
end;
</syntaxhighlight>
| 7 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _7 = Funkcja do generowania zawartości, może być zmodyfikowana, według podanej jej wartości, używana w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|FUNKCJA2-KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, w postaci zmodyfikowanej, czyli w wersji: {{Code|__FUNKCJA2}},
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
szablon=__FUNKCJA4 and __FUNKCJA4(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or szablon;
</syntaxhighlight>
| 8 = Inne zmienne funkcyjne: | nagłówek8 = tak
| 9 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _9 = Inne operacje wykonywane na pobranym tekście.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
tekst_artykulu=__FUNKCJA_ANALIZA_SPISOWA and __FUNKCJA_ANALIZA_SPISOWA(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw) or tekst_artykulu;
</syntaxhighlight>
| 10 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _10 = Funkcja użyta do generowania tablicy bazy kodów.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY}}
}}
Funkcje {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}}, zostały już opisane w tym module, więc wystarczy opisać inne.
{{Hr}}
* Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|pelna_nazwa_szablonu}} | _1 = Pełna nazwa szablonu.
| 2 = {{Code|tabela_parametrow_szablonu}} | _2 = Tabela parametrów wywołania szablonu do rozwinięcia.
| 3 = {{Code|tabela_modyfikatorow}} | _3 = Tabela modyfikatorów danego wywołania szablonowego.
}}
{{Hr}}
* Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Zawartość elementu wikikodu według {{Code|{{m|Szablonowe}}}}.
| 2 = {{Code|obiekt}} {{Patrz|obiekt}} | _2 = Nazwa obiektu szablonowego, jak: {{Code|SZABLON}}.
| 3 = {{Code|kod}} {{Patrz|kod}} | _3 = Numer obiektu, typu: {{Code|obiekt}} {{LinkPatrz|obiekt}}.
| 4 = {{Code|tekst}} | _4 = Tekst całego artykułu.
| 5 = {{Code|numer_szablonu}} {{Patrz|numer_szablonu}} | _5 = Tabela numerów dla różnych obiektów w jednej tabeli.
| 6 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _6 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 7 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _7 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
== {{Śródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}{{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}} ==
Funkcja służy do ściągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}.
Posiada własną walidacje nazwy stron, czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów.
Funkcja odpowiednio operuje na znacznikach wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''', tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
{{OpisParametrów
| 1 = Zmienne obiektowe: | nagłówek1 = tak
| 2 = {{Code|self}} {{Patrz|self}} | _2 = Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 3 = Zwykłe zmienne: | nagłówek3 = tak
| 4 = {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} | _4 = Nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć.
| 5 = {{Code|nazwa_strony2}} {{Patrz|nazwa_strony2}} | _5 = Uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej.
| 6 = {{Code|czy_noinclude}} {{Patrz|czy_noinclude}} | _6 = Jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka.
| 7 = Zmienne tablicowe: | nagłówek7 = tak
| 8 = {{Code|szablony_magiczne}} {{Patrz|szablony_magiczne}} | _8 = Tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej.
| 9 = Inne zmienne: | nagłówek9 = tak
| 10 = {{Code|dokumentacja}} {{Patrz|dokumentacja}} | _10 = Określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}}.
| 11 = {{Code|czy_szablon}} {{Patrz|czy_szablon}} | _11 = Gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją.
| 12 = {{Code|nazwa_modulu_szablonu_opisu}} {{Patrz|nazwa_modulu_szablonu_opisu}} | _12 = Zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami '''{{lpg|HTML}}''' na znaki.
| 13 = {{Code|szablon_nie_opis}} {{Patrz|szablon_nie_opis}} | _13 = Zmienna wskazująca, czy {{Code|nazwa strony}} {{LinkPatrz|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowany, używany wraz ze zmienną: {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}}.
| 14 = Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:| nagłówek14 = tak
| 15 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} | _15 = Operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
| 16 = {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} | _16 = Funkcja operująca na komentarzach, przeciwnie jest używana funkcja: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}}.
| 17 = {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} | _17 = Funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów.
| 18 = {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} | _18 = Funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_analizy_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
}}
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}}, operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} | _1 = Tekst do analizy, jak w funkcji nadrzędnej.
| 2 = {{Code|nazwa_modulu_szablonu_opisu}} {{LinkPatrz|nazwa_modulu_szablonu_opisu}} | _2 = Nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}.
| 3 = {{Code|nazwa_strony_bez_kodow_html}} {{Patrz|nazwa_strony_bez_kodow_html}} | _3 = Jest to nazwa strony: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, tylko z kodami '''{{lpg|HTML}}''' zamienionymi na ich odpowiedniki znakowe.
| 4 = {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}} | _4 = Tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej.
| 5 = {{Code|tabela_nazw}} {{Patrz|tabela_nazw}} | _5 = Tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, wewnątrz tej funkcji nadrzędnej.
}}
{{Hr}}
Funkcja: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}, ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę: {{Code|tablica}}, w funkcji zwracanej przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod metatabelki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} {{Patrz|__metatablica}}, to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Ten rozdział zawiera kolejność wywołań poszczególnych kroków w funkcji.
==== Poprawność pewnych nazw ====
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]|p=Html}}}}, która z: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}}.
==== Parametry uzyskanej strony ====
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}} {{Patrz|uchwyt strony}}, {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} i {{Code|czy_istnieje}} {{Patrz|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów.
==== Składniki preprocesora kodu mechanizmu: {{nobold|{{NS|l=tak|k=mw|w=tak}}}} ====
* Gdy {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli: {{Code|czy_noinclude}} {{LinkPatrz|czy_noinclude}}, przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie. Ze strony są usuwane pozostałości ze znaczników wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''' i znaczników jak {{Tag|templatedata}},
* Przeciwna wypadek: wtedy: {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}}, jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione.
==== Komentarze ====
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}.
===== Usuwanie pseudoszablonówi niektporych instrukcji warunkowych =====
* Ustawiane są zmienne w: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}} {{LinkPatrz|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}} {{Patrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}, by usunąc różne instrukcje warunkowe.
==== Specjalne elementy zmieniające wikikod ====
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
==== Kodowanie bazy danych kodów {{nobold|{{Code|{{m|Szablonowe}}}}}} ====
* Jeśli: {{Code|szablon_nie_opis}} {{LinkPatrz|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
3shoap5rlu7un7zvq0lham6hrin7fn5
558307
558306
2026-10-02T14:09:19Z
Persino
2851
/* {{Śródtytuł|p.SpreparowanyWikikodStrony}}{{Code|p.SpreparowanyWikikodStrony}} */
558307
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|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.SpreparowanyWikikodStrony}}{{Code|p.SpreparowanyWikikodStrony}} ==
Funkcja ściągąjąca opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Funkcja w opisach szablonów, a w niej instrukcje warunkowe podczas kodowania są rozwijane przy pomocy funkcji: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}}, a normalnie, gdy wewnątrz instrukcji warunkowych nie ma klamerek w funkcji, w składowej funkcji, tzn.: {{LinkPatrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja korzysta bezpośrednio z funkcji: {{LinkŚródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana. Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:SpreparowanyWikikodStrony(nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 2 = {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} | _2 = Nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw.
| 3 = {{Code|nazwa_modulu_szablonowa}} {{Patrz|nazwa_modulu_szablonowa}} | _3 = Nazwa modułu w wersji szablonowej, w wersji wywołaniowej.
| 4 = {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} | _4 = Przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony.
| 5 = {{Code|inkludowana}} {{Patrz|inkludowana}} | _5 = Przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej.
| 6 = Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem: | nagłówek6 = tak
| 7 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-SpreparowanyWikikodStrony}} | _7 = Funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, po kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
tekst=__FUNKCJA(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,dokumentacja,czy_niezakodowana)
</syntaxhighlight>
| 8 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-SpreparowanyWikikodStrony}} | _8 = Jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul)))then
</syntaxhighlight>
| 9 = {{Code|__FUNKCJA3}} {{Patrz|__FUNKCJA3-SpreparowanyWikikodStrony}} | _9 = Funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}}.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu,nazwa_modulu_szablonowa) or nil;
</syntaxhighlight>
| 10 = Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]|p=Szablonowe}}}} {{Patrz|UstalanieNazwyWywołania}}: | nagłówek10 = tak
| 11 = {{Code|__FUNKCJA4}} {{Patrz|__FUNKCJA4-SpreparowanyWikikodStrony}} | _11 = Funkcja, np. dekodująca nazwę szablonu.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if(__FUNKCJA4)then
nazwa_szablonu,powodzenie__FUNKCJA4(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
| 12 = {{Code|__FUNKCJA5}} {{Patrz|__FUNKCJA5-SpreparowanyWikikodStrony}} | _12 = Funkcja, np. rozwijająca nazwę szablonu.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
nazwa_szablonu=__FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
</syntaxhighlight>
| 13 = Inne: | nagłówek13 = tak
| 14 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _14 = Funkcja do modyfikacji tekstu pobranego ze strony
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
tekst_artykulu=__FUNKCJA_ANALIZA_SPISOWA and __FUNKCJA_ANALIZA_SPISOWA(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw) or tekst_artykulu;
</syntaxhighlight>
| 15 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _15 = Funkcje do generowania tablicy bazy kodów.
{{Śródtekst|uchwyt=__FUNKCJA_PARAMETRY|tekst=
{{P|Przykład definicji:}}
<syntaxhighlight lang="lua">
function __FUNKCJA_PARAMETRY(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_element_juz_istnieje)
...
end;
end;
</syntaxhighlight>
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
local __FUNKCJA=__FUNKCJA_PARAMETRY(obiekt);
...
__FUNKCJA(tablica,klucz,wartosc_tablicy,false);
</syntaxhighlight>
}}
}}
Definicje funkcji: {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-UstalanieNazwyWywołania}} i {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-UstalanieNazwyWywołania}}, które są potrzebne do konstrukcji wywołania funkcji: {{LinkPatrz|UstalanieNazwyWywołania}}, uzyskiwania nazwy szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} i {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}}, definicje tych funkcji:
* {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Tablica danych bazy kodów zakodowanego tekstu.
| 5 = {{Code|dokumentacja}} | _5 = Jak w: {{LinkPatrz|dokumentacja}}.
| 6 = {{Code|czy_nie_opis}} {{Patrz|czy_nie_opis}} | _6 = Czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu_caly}} {{Patrz|tekst_artykulu_caly}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} {{LinkPatrz|__FUNKCJA3-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu,nazwa_modulu_szablonowa)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_modulu}} | _1 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 2 = {{Code|nazwa_modulu_szablonowa}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory,czy_z_kluczem]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} | _1 = Nazwa szablonu do rozwinięcia.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}}. | _5 = Tabela parametrów potrzebna do szybszego działania '''{{ld|StronicowyParser|Stronicowego parsera}}'''.
| 6 = Gdy tą funkcją jest: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}}, te zmienne bezpośrednio w: {{Code|__FUNKCJA4}}, nie występują, ale za to występują w tej podanej szczególnej przykładowej funkcji, tzn. argumenty: | komórka6 = tak
| 7 = {{Code|czy_uwzgledniac_modyfikatory}} {{Patrz|czy_uwzgledniac_modyfikatory}} | _7 = Czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}}.
| 8 = {{Code|czy_z_kluczem}} {{Patrz|czy_z_kluczem}} | _8 = Czy klucze, o wzorze: {{Code|<nowiki>^klucz$</nowiki>}}, lub {{Code|<nowiki>^klucz[1-9]%d*$</nowiki>}}.
}}
Jeżeli w funkcji {{LinkPatrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}} nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}} w przeciwnym wypadku zwracane jest nazwa szablonu i wartość {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} | _1 = Jak w: {{LinkPatrz|nazwa_szablonu}}. To jest nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}.
| 2 = {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} | _2 = Tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, to jest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}}, w przypadku: {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}.
| 3 = {{Code|nazwa_modulu}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 4 = {{Code|nazwa_modulu_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{LzLua|frame:preprocess}}, w korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, z której korzysta {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}, jeżeli korzystanej tutaj funkcja zrzuciła niepowodzenie, to pierwsza wartość zwrótcone to: {{Code|nil}}, druga: {{Code|false}}, w przeciwnym wypadku zwraca nazwę rozwiniętego szablonu i drugą wartość zrzuconą: {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice:
; Przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy{{dk}} {{nobold|{{Code|czy_niezakodowana {{=}} true}}}}, i {{nobold|{{Code|czy_nie_opis {{=}} true}}}}, według funkcji{{dk}}
* {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów,
; W przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja:
* {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami.
: Te funkcje są wywoływane wewnątrz funkcji: {{LinkŚródtytuł|p.SpreparowanyWikikodStrony}}. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana. Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Strona, a jednocześnie uchwyt do bazy danych kodów zakodowanego tekstu, o nazwie modułu do rozwinięcia i zakodowania.
| 3 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _3 = Nazwa strony szablonowa, w postaci wywołaniowej szablonów.
| 4 = {{Code|inkludowana}} {{LinkPatrz|inkludowana}} | _4 = Zmienna, czy strona ma być interpretowana jako inkludowana.
| 5 = Zmienne funkcyjne: | nagłówek5 = tak
| 6 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _6 = Funkcja generująca zawartość, może być zmodyfikowana, na podstawie pełnej nazwy strony, używana w funkcji: jest to {{Code|__FUNKCJA3}} w: {{Code|{{sr|#FunkcjaIterajacaRozwijanegoSzablonu|p=Szablonowe}}}} {{Patrz|__FUNKCJA-FunkcjaIterajacaRozwijanegoSzablonu}}.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if((czy_niekodowane)and(__FUNKCJA3))then
local wynik=__FUNKCJA3(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow);
if(wynik)then
return wynik;
end;
end;
</syntaxhighlight>
| 7 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _7 = Funkcja do generowania zawartości, może być zmodyfikowana, według podanej jej wartości, używana w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|FUNKCJA2-KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, w postaci zmodyfikowanej, czyli w wersji: {{Code|__FUNKCJA2}},
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
szablon=__FUNKCJA4 and __FUNKCJA4(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or szablon;
</syntaxhighlight>
| 8 = Inne zmienne funkcyjne: | nagłówek8 = tak
| 9 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _9 = Inne operacje wykonywane na pobranym tekście.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
tekst_artykulu=__FUNKCJA_ANALIZA_SPISOWA and __FUNKCJA_ANALIZA_SPISOWA(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw) or tekst_artykulu;
</syntaxhighlight>
| 10 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _10 = Funkcja użyta do generowania tablicy bazy kodów.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY}}
}}
Funkcje {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}}, zostały już opisane w tym module, więc wystarczy opisać inne.
{{Hr}}
* Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|pelna_nazwa_szablonu}} | _1 = Pełna nazwa szablonu.
| 2 = {{Code|tabela_parametrow_szablonu}} | _2 = Tabela parametrów wywołania szablonu do rozwinięcia.
| 3 = {{Code|tabela_modyfikatorow}} | _3 = Tabela modyfikatorów danego wywołania szablonowego.
}}
{{Hr}}
* Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Zawartość elementu wikikodu według {{Code|{{m|Szablonowe}}}}.
| 2 = {{Code|obiekt}} {{Patrz|obiekt}} | _2 = Nazwa obiektu szablonowego, jak: {{Code|SZABLON}}.
| 3 = {{Code|kod}} {{Patrz|kod}} | _3 = Numer obiektu, typu: {{Code|obiekt}} {{LinkPatrz|obiekt}}.
| 4 = {{Code|tekst}} | _4 = Tekst całego artykułu.
| 5 = {{Code|numer_szablonu}} {{Patrz|numer_szablonu}} | _5 = Tabela numerów dla różnych obiektów w jednej tabeli.
| 6 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _6 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 7 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _7 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
== {{Śródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}{{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}} ==
Funkcja służy do ściągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}.
Posiada własną walidacje nazwy stron, czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów.
Funkcja odpowiednio operuje na znacznikach wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''', tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
{{OpisParametrów
| 1 = Zmienne obiektowe: | nagłówek1 = tak
| 2 = {{Code|self}} {{Patrz|self}} | _2 = Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 3 = Zwykłe zmienne: | nagłówek3 = tak
| 4 = {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} | _4 = Nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć.
| 5 = {{Code|nazwa_strony2}} {{Patrz|nazwa_strony2}} | _5 = Uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej.
| 6 = {{Code|czy_noinclude}} {{Patrz|czy_noinclude}} | _6 = Jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka.
| 7 = Zmienne tablicowe: | nagłówek7 = tak
| 8 = {{Code|szablony_magiczne}} {{Patrz|szablony_magiczne}} | _8 = Tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej.
| 9 = Inne zmienne: | nagłówek9 = tak
| 10 = {{Code|dokumentacja}} {{Patrz|dokumentacja}} | _10 = Określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}}.
| 11 = {{Code|czy_szablon}} {{Patrz|czy_szablon}} | _11 = Gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją.
| 12 = {{Code|nazwa_modulu_szablonu_opisu}} {{Patrz|nazwa_modulu_szablonu_opisu}} | _12 = Zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami '''{{lpg|HTML}}''' na znaki.
| 13 = {{Code|szablon_nie_opis}} {{Patrz|szablon_nie_opis}} | _13 = Zmienna wskazująca, czy {{Code|nazwa strony}} {{LinkPatrz|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowany, używany wraz ze zmienną: {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}}.
| 14 = Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:| nagłówek14 = tak
| 15 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} | _15 = Operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
| 16 = {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} | _16 = Funkcja operująca na komentarzach, przeciwnie jest używana funkcja: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}}.
| 17 = {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} | _17 = Funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów.
| 18 = {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} | _18 = Funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_analizy_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
}}
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}}, operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} | _1 = Tekst do analizy, jak w funkcji nadrzędnej.
| 2 = {{Code|nazwa_modulu_szablonu_opisu}} {{LinkPatrz|nazwa_modulu_szablonu_opisu}} | _2 = Nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}.
| 3 = {{Code|nazwa_strony_bez_kodow_html}} {{Patrz|nazwa_strony_bez_kodow_html}} | _3 = Jest to nazwa strony: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, tylko z kodami '''{{lpg|HTML}}''' zamienionymi na ich odpowiedniki znakowe.
| 4 = {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}} | _4 = Tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej.
| 5 = {{Code|tabela_nazw}} {{Patrz|tabela_nazw}} | _5 = Tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, wewnątrz tej funkcji nadrzędnej.
}}
{{Hr}}
Funkcja: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}, ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę: {{Code|tablica}}, w funkcji zwracanej przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod metatabelki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} {{Patrz|__metatablica}}, to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Ten rozdział zawiera kolejność wywołań poszczególnych kroków w funkcji.
==== Poprawność pewnych nazw ====
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]|p=Html}}}}, która z: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}}.
==== Parametry uzyskanej strony ====
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}} {{Patrz|uchwyt strony}}, {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} i {{Code|czy_istnieje}} {{Patrz|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów.
==== Składniki preprocesora kodu mechanizmu: {{nobold|{{NS|l=tak|k=mw|w=tak}}}} ====
* Gdy {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli: {{Code|czy_noinclude}} {{LinkPatrz|czy_noinclude}}, przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie. Ze strony są usuwane pozostałości ze znaczników wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''' i znaczników jak {{Tag|templatedata}},
* Przeciwna wypadek: wtedy: {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}}, jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione.
==== Komentarze ====
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}.
===== Usuwanie pseudoszablonówi niektporych instrukcji warunkowych =====
* Ustawiane są zmienne w: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}} {{LinkPatrz|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}} {{Patrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}, by usunąc różne instrukcje warunkowe.
==== Specjalne elementy zmieniające wikikod ====
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
==== Kodowanie bazy danych kodów {{nobold|{{Code|{{m|Szablonowe}}}}}} ====
* Jeśli: {{Code|szablon_nie_opis}} {{LinkPatrz|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
0vkfemwbvy2ba586bbwp7jqh67aaf9z
558308
558307
2026-10-02T14:11:09Z
Persino
2851
558308
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|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.SpreparowanyWikikodStrony}}{{Code|p.SpreparowanyWikikodStrony}} ==
Funkcja ściągąjąca opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Funkcja w opisach szablonów, a w niej instrukcje warunkowe podczas kodowania są rozwijane przy pomocy funkcji: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}}, a normalnie, gdy wewnątrz instrukcji warunkowych nie ma klamerek w funkcji, w składowej funkcji, tzn.: {{LinkPatrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja korzysta bezpośrednio z funkcji: {{LinkŚródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana. Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:SpreparowanyWikikodStrony(nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 2 = {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} | _2 = Nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw.
| 3 = {{Code|nazwa_modulu_szablonowa}} {{Patrz|nazwa_modulu_szablonowa}} | _3 = Nazwa modułu w wersji szablonowej, w wersji wywołaniowej.
| 4 = {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} | _4 = Przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony.
| 5 = {{Code|inkludowana}} {{Patrz|inkludowana}} | _5 = Przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej.
| 6 = Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem: | nagłówek6 = tak
| 7 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-SpreparowanyWikikodStrony}} | _7 = Funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, po kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
tekst=__FUNKCJA(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,dokumentacja,czy_niezakodowana)
</syntaxhighlight>
| 8 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-SpreparowanyWikikodStrony}} | _8 = Jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul)))then
</syntaxhighlight>
| 9 = {{Code|__FUNKCJA3}} {{Patrz|__FUNKCJA3-SpreparowanyWikikodStrony}} | _9 = Funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}}.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu,nazwa_modulu_szablonowa) or nil;
</syntaxhighlight>
| 10 = Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]|p=Szablonowe}}}} {{Patrz|UstalanieNazwyWywołania}}: | nagłówek10 = tak
| 11 = {{Code|__FUNKCJA4}} {{Patrz|__FUNKCJA4-SpreparowanyWikikodStrony}} | _11 = Funkcja, np. dekodująca nazwę szablonu.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if(__FUNKCJA4)then
nazwa_szablonu,powodzenie__FUNKCJA4(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
| 12 = {{Code|__FUNKCJA5}} {{Patrz|__FUNKCJA5-SpreparowanyWikikodStrony}} | _12 = Funkcja, np. rozwijająca nazwę szablonu.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
nazwa_szablonu=__FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
</syntaxhighlight>
| 13 = Inne: | nagłówek13 = tak
| 14 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _14 = Funkcja do modyfikacji tekstu pobranego ze strony.
{{Śródtekst|uchwyt=__FUNKCJA_ANALIZA_SPISOWA|tekst=
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
tekst_artykulu=__FUNKCJA_ANALIZA_SPISOWA and __FUNKCJA_ANALIZA_SPISOWA(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw) or tekst_artykulu;
</syntaxhighlight>
}}
| 15 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _15 = Funkcje do generowania tablicy bazy kodów.
{{Śródtekst|uchwyt=__FUNKCJA_PARAMETRY|tekst=
{{P|Przykład definicji:}}
<syntaxhighlight lang="lua">
function __FUNKCJA_PARAMETRY(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_element_juz_istnieje)
...
end;
end;
</syntaxhighlight>
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
local __FUNKCJA=__FUNKCJA_PARAMETRY(obiekt);
...
__FUNKCJA(tablica,klucz,wartosc_tablicy,false);
</syntaxhighlight>
}}
}}
Definicje funkcji: {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-UstalanieNazwyWywołania}} i {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-UstalanieNazwyWywołania}}, które są potrzebne do konstrukcji wywołania funkcji: {{LinkPatrz|UstalanieNazwyWywołania}}, uzyskiwania nazwy szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} i {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}}, definicje tych funkcji:
* {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Tablica danych bazy kodów zakodowanego tekstu.
| 5 = {{Code|dokumentacja}} | _5 = Jak w: {{LinkPatrz|dokumentacja}}.
| 6 = {{Code|czy_nie_opis}} {{Patrz|czy_nie_opis}} | _6 = Czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu_caly}} {{Patrz|tekst_artykulu_caly}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} {{LinkPatrz|__FUNKCJA3-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu,nazwa_modulu_szablonowa)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_modulu}} | _1 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 2 = {{Code|nazwa_modulu_szablonowa}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory,czy_z_kluczem]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} | _1 = Nazwa szablonu do rozwinięcia.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}}. | _5 = Tabela parametrów potrzebna do szybszego działania '''{{ld|StronicowyParser|Stronicowego parsera}}'''.
| 6 = Gdy tą funkcją jest: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}}, te zmienne bezpośrednio w: {{Code|__FUNKCJA4}}, nie występują, ale za to występują w tej podanej szczególnej przykładowej funkcji, tzn. argumenty: | komórka6 = tak
| 7 = {{Code|czy_uwzgledniac_modyfikatory}} {{Patrz|czy_uwzgledniac_modyfikatory}} | _7 = Czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}}.
| 8 = {{Code|czy_z_kluczem}} {{Patrz|czy_z_kluczem}} | _8 = Czy klucze, o wzorze: {{Code|<nowiki>^klucz$</nowiki>}}, lub {{Code|<nowiki>^klucz[1-9]%d*$</nowiki>}}.
}}
Jeżeli w funkcji {{LinkPatrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}} nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}} w przeciwnym wypadku zwracane jest nazwa szablonu i wartość {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} | _1 = Jak w: {{LinkPatrz|nazwa_szablonu}}. To jest nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}.
| 2 = {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} | _2 = Tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, to jest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}}, w przypadku: {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}.
| 3 = {{Code|nazwa_modulu}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 4 = {{Code|nazwa_modulu_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{LzLua|frame:preprocess}}, w korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, z której korzysta {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}, jeżeli korzystanej tutaj funkcja zrzuciła niepowodzenie, to pierwsza wartość zwrótcone to: {{Code|nil}}, druga: {{Code|false}}, w przeciwnym wypadku zwraca nazwę rozwiniętego szablonu i drugą wartość zrzuconą: {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice:
; Przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy{{dk}} {{nobold|{{Code|czy_niezakodowana {{=}} true}}}}, i {{nobold|{{Code|czy_nie_opis {{=}} true}}}}, według funkcji{{dk}}
* {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów,
; W przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja:
* {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami.
: Te funkcje są wywoływane wewnątrz funkcji: {{LinkŚródtytuł|p.SpreparowanyWikikodStrony}}. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana. Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Strona, a jednocześnie uchwyt do bazy danych kodów zakodowanego tekstu, o nazwie modułu do rozwinięcia i zakodowania.
| 3 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _3 = Nazwa strony szablonowa, w postaci wywołaniowej szablonów.
| 4 = {{Code|inkludowana}} {{LinkPatrz|inkludowana}} | _4 = Zmienna, czy strona ma być interpretowana jako inkludowana.
| 5 = Zmienne funkcyjne: | nagłówek5 = tak
| 6 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _6 = Funkcja generująca zawartość, może być zmodyfikowana, na podstawie pełnej nazwy strony, używana w funkcji: jest to {{Code|__FUNKCJA3}} w: {{Code|{{sr|#FunkcjaIterajacaRozwijanegoSzablonu|p=Szablonowe}}}} {{Patrz|__FUNKCJA-FunkcjaIterajacaRozwijanegoSzablonu}}.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if((czy_niekodowane)and(__FUNKCJA3))then
local wynik=__FUNKCJA3(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow);
if(wynik)then
return wynik;
end;
end;
</syntaxhighlight>
| 7 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _7 = Funkcja do generowania zawartości, może być zmodyfikowana, według podanej jej wartości, używana w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|FUNKCJA2-KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, w postaci zmodyfikowanej, czyli w wersji: {{Code|__FUNKCJA2}},
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
szablon=__FUNKCJA4 and __FUNKCJA4(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or szablon;
</syntaxhighlight>
| 8 = Inne zmienne funkcyjne: | nagłówek8 = tak
| 9 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _9 = Inne operacje wykonywane na pobranym tekście.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
tekst_artykulu=__FUNKCJA_ANALIZA_SPISOWA and __FUNKCJA_ANALIZA_SPISOWA(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw) or tekst_artykulu;
</syntaxhighlight>
| 10 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _10 = Funkcja użyta do generowania tablicy bazy kodów.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY}}
}}
Funkcje {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}}, zostały już opisane w tym module, więc wystarczy opisać inne.
{{Hr}}
* Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|pelna_nazwa_szablonu}} | _1 = Pełna nazwa szablonu.
| 2 = {{Code|tabela_parametrow_szablonu}} | _2 = Tabela parametrów wywołania szablonu do rozwinięcia.
| 3 = {{Code|tabela_modyfikatorow}} | _3 = Tabela modyfikatorów danego wywołania szablonowego.
}}
{{Hr}}
* Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Zawartość elementu wikikodu według {{Code|{{m|Szablonowe}}}}.
| 2 = {{Code|obiekt}} {{Patrz|obiekt}} | _2 = Nazwa obiektu szablonowego, jak: {{Code|SZABLON}}.
| 3 = {{Code|kod}} {{Patrz|kod}} | _3 = Numer obiektu, typu: {{Code|obiekt}} {{LinkPatrz|obiekt}}.
| 4 = {{Code|tekst}} | _4 = Tekst całego artykułu.
| 5 = {{Code|numer_szablonu}} {{Patrz|numer_szablonu}} | _5 = Tabela numerów dla różnych obiektów w jednej tabeli.
| 6 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _6 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 7 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _7 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
== {{Śródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}{{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}} ==
Funkcja służy do ściągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}.
Posiada własną walidacje nazwy stron, czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów.
Funkcja odpowiednio operuje na znacznikach wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''', tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
{{OpisParametrów
| 1 = Zmienne obiektowe: | nagłówek1 = tak
| 2 = {{Code|self}} {{Patrz|self}} | _2 = Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 3 = Zwykłe zmienne: | nagłówek3 = tak
| 4 = {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} | _4 = Nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć.
| 5 = {{Code|nazwa_strony2}} {{Patrz|nazwa_strony2}} | _5 = Uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej.
| 6 = {{Code|czy_noinclude}} {{Patrz|czy_noinclude}} | _6 = Jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka.
| 7 = Zmienne tablicowe: | nagłówek7 = tak
| 8 = {{Code|szablony_magiczne}} {{Patrz|szablony_magiczne}} | _8 = Tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej.
| 9 = Inne zmienne: | nagłówek9 = tak
| 10 = {{Code|dokumentacja}} {{Patrz|dokumentacja}} | _10 = Określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}}.
| 11 = {{Code|czy_szablon}} {{Patrz|czy_szablon}} | _11 = Gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją.
| 12 = {{Code|nazwa_modulu_szablonu_opisu}} {{Patrz|nazwa_modulu_szablonu_opisu}} | _12 = Zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami '''{{lpg|HTML}}''' na znaki.
| 13 = {{Code|szablon_nie_opis}} {{Patrz|szablon_nie_opis}} | _13 = Zmienna wskazująca, czy {{Code|nazwa strony}} {{LinkPatrz|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowany, używany wraz ze zmienną: {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}}.
| 14 = Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:| nagłówek14 = tak
| 15 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} | _15 = Operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
| 16 = {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} | _16 = Funkcja operująca na komentarzach, przeciwnie jest używana funkcja: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}}.
| 17 = {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} | _17 = Funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów.
| 18 = {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} | _18 = Funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_analizy_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
}}
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}}, operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} | _1 = Tekst do analizy, jak w funkcji nadrzędnej.
| 2 = {{Code|nazwa_modulu_szablonu_opisu}} {{LinkPatrz|nazwa_modulu_szablonu_opisu}} | _2 = Nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}.
| 3 = {{Code|nazwa_strony_bez_kodow_html}} {{Patrz|nazwa_strony_bez_kodow_html}} | _3 = Jest to nazwa strony: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, tylko z kodami '''{{lpg|HTML}}''' zamienionymi na ich odpowiedniki znakowe.
| 4 = {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}} | _4 = Tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej.
| 5 = {{Code|tabela_nazw}} {{Patrz|tabela_nazw}} | _5 = Tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, wewnątrz tej funkcji nadrzędnej.
}}
{{Hr}}
Funkcja: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}, ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę: {{Code|tablica}}, w funkcji zwracanej przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod metatabelki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} {{Patrz|__metatablica}}, to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Ten rozdział zawiera kolejność wywołań poszczególnych kroków w funkcji.
==== Poprawność pewnych nazw ====
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]|p=Html}}}}, która z: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}}.
==== Parametry uzyskanej strony ====
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}} {{Patrz|uchwyt strony}}, {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} i {{Code|czy_istnieje}} {{Patrz|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów.
==== Składniki preprocesora kodu mechanizmu: {{nobold|{{NS|l=tak|k=mw|w=tak}}}} ====
* Gdy {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli: {{Code|czy_noinclude}} {{LinkPatrz|czy_noinclude}}, przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie. Ze strony są usuwane pozostałości ze znaczników wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''' i znaczników jak {{Tag|templatedata}},
* Przeciwna wypadek: wtedy: {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}}, jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione.
==== Komentarze ====
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}.
===== Usuwanie pseudoszablonówi niektporych instrukcji warunkowych =====
* Ustawiane są zmienne w: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}} {{LinkPatrz|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}} {{Patrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}, by usunąc różne instrukcje warunkowe.
==== Specjalne elementy zmieniające wikikod ====
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
==== Kodowanie bazy danych kodów {{nobold|{{Code|{{m|Szablonowe}}}}}} ====
* Jeśli: {{Code|szablon_nie_opis}} {{LinkPatrz|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
7rcn227gh7othxr86010t7k5ugumg1n
558309
558308
2026-10-02T14:12:15Z
Persino
2851
/* {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} */
558309
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|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.SpreparowanyWikikodStrony}}{{Code|p.SpreparowanyWikikodStrony}} ==
Funkcja ściągąjąca opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Funkcja w opisach szablonów, a w niej instrukcje warunkowe podczas kodowania są rozwijane przy pomocy funkcji: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}}, a normalnie, gdy wewnątrz instrukcji warunkowych nie ma klamerek w funkcji, w składowej funkcji, tzn.: {{LinkPatrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja korzysta bezpośrednio z funkcji: {{LinkŚródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana. Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:SpreparowanyWikikodStrony(nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 2 = {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} | _2 = Nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw.
| 3 = {{Code|nazwa_modulu_szablonowa}} {{Patrz|nazwa_modulu_szablonowa}} | _3 = Nazwa modułu w wersji szablonowej, w wersji wywołaniowej.
| 4 = {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} | _4 = Przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony.
| 5 = {{Code|inkludowana}} {{Patrz|inkludowana}} | _5 = Przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej.
| 6 = Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem: | nagłówek6 = tak
| 7 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-SpreparowanyWikikodStrony}} | _7 = Funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, po kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
tekst=__FUNKCJA(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,dokumentacja,czy_niezakodowana)
</syntaxhighlight>
| 8 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-SpreparowanyWikikodStrony}} | _8 = Jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul)))then
</syntaxhighlight>
| 9 = {{Code|__FUNKCJA3}} {{Patrz|__FUNKCJA3-SpreparowanyWikikodStrony}} | _9 = Funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}}.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu,nazwa_modulu_szablonowa) or nil;
</syntaxhighlight>
| 10 = Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]|p=Szablonowe}}}} {{Patrz|UstalanieNazwyWywołania}}: | nagłówek10 = tak
| 11 = {{Code|__FUNKCJA4}} {{Patrz|__FUNKCJA4-SpreparowanyWikikodStrony}} | _11 = Funkcja, np. dekodująca nazwę szablonu.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if(__FUNKCJA4)then
nazwa_szablonu,powodzenie__FUNKCJA4(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
| 12 = {{Code|__FUNKCJA5}} {{Patrz|__FUNKCJA5-SpreparowanyWikikodStrony}} | _12 = Funkcja, np. rozwijająca nazwę szablonu.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
nazwa_szablonu=__FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
</syntaxhighlight>
| 13 = Inne: | nagłówek13 = tak
| 14 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _14 = Funkcja do modyfikacji tekstu pobranego ze strony.
{{Śródtekst|uchwyt=__FUNKCJA_ANALIZA_SPISOWA|tekst=
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
tekst_artykulu=__FUNKCJA_ANALIZA_SPISOWA and __FUNKCJA_ANALIZA_SPISOWA(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw) or tekst_artykulu;
</syntaxhighlight>
}}
| 15 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _15 = Funkcje do generowania tablicy bazy kodów.
{{Śródtekst|uchwyt=__FUNKCJA_PARAMETRY|tekst=
{{P|Przykład definicji:}}
<syntaxhighlight lang="lua">
function __FUNKCJA_PARAMETRY(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_element_juz_istnieje)
...
end;
end;
</syntaxhighlight>
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
local __FUNKCJA=__FUNKCJA_PARAMETRY(obiekt);
...
__FUNKCJA(tablica,klucz,wartosc_tablicy,false);
</syntaxhighlight>
}}
}}
Definicje funkcji: {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-UstalanieNazwyWywołania}} i {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-UstalanieNazwyWywołania}}, które są potrzebne do konstrukcji wywołania funkcji: {{LinkPatrz|UstalanieNazwyWywołania}}, uzyskiwania nazwy szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} i {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}}, definicje tych funkcji:
* {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Tablica danych bazy kodów zakodowanego tekstu.
| 5 = {{Code|dokumentacja}} | _5 = Jak w: {{LinkPatrz|dokumentacja}}.
| 6 = {{Code|czy_nie_opis}} {{Patrz|czy_nie_opis}} | _6 = Czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu_caly}} {{Patrz|tekst_artykulu_caly}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} {{LinkPatrz|__FUNKCJA3-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu,nazwa_modulu_szablonowa)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_modulu}} | _1 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 2 = {{Code|nazwa_modulu_szablonowa}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory,czy_z_kluczem]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} | _1 = Nazwa szablonu do rozwinięcia.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}}. | _5 = Tabela parametrów potrzebna do szybszego działania '''{{ld|StronicowyParser|Stronicowego parsera}}'''.
| 6 = Gdy tą funkcją jest: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}}, te zmienne bezpośrednio w: {{Code|__FUNKCJA4}}, nie występują, ale za to występują w tej podanej szczególnej przykładowej funkcji, tzn. argumenty: | komórka6 = tak
| 7 = {{Code|czy_uwzgledniac_modyfikatory}} {{Patrz|czy_uwzgledniac_modyfikatory}} | _7 = Czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}}.
| 8 = {{Code|czy_z_kluczem}} {{Patrz|czy_z_kluczem}} | _8 = Czy klucze, o wzorze: {{Code|<nowiki>^klucz$</nowiki>}}, lub {{Code|<nowiki>^klucz[1-9]%d*$</nowiki>}}.
}}
Jeżeli w funkcji {{LinkPatrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}} nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}} w przeciwnym wypadku zwracane jest nazwa szablonu i wartość {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} | _1 = Jak w: {{LinkPatrz|nazwa_szablonu}}. To jest nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}.
| 2 = {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} | _2 = Tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, to jest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}}, w przypadku: {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}.
| 3 = {{Code|nazwa_modulu}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 4 = {{Code|nazwa_modulu_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{LzLua|frame:preprocess}}, w korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, z której korzysta {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}, jeżeli korzystanej tutaj funkcja zrzuciła niepowodzenie, to pierwsza wartość zwrótcone to: {{Code|nil}}, druga: {{Code|false}}, w przeciwnym wypadku zwraca nazwę rozwiniętego szablonu i drugą wartość zrzuconą: {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice:
; Przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy{{dk}} {{nobold|{{Code|czy_niezakodowana {{=}} true}}}}, i {{nobold|{{Code|czy_nie_opis {{=}} true}}}}, według funkcji{{dk}}
* {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów,
; W przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja:
* {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami.
: Te funkcje są wywoływane wewnątrz funkcji: {{LinkŚródtytuł|p.SpreparowanyWikikodStrony}}. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana. Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Strona, a jednocześnie uchwyt do bazy danych kodów zakodowanego tekstu, o nazwie modułu do rozwinięcia i zakodowania.
| 3 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _3 = Nazwa strony szablonowa, w postaci wywołaniowej szablonów.
| 4 = {{Code|inkludowana}} {{LinkPatrz|inkludowana}} | _4 = Zmienna, czy strona ma być interpretowana jako inkludowana.
| 5 = Zmienne funkcyjne: | nagłówek5 = tak
| 6 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _6 = Funkcja generująca zawartość, może być zmodyfikowana, na podstawie pełnej nazwy strony, używana w funkcji: jest to {{Code|__FUNKCJA3}} w: {{Code|{{sr|#FunkcjaIterajacaRozwijanegoSzablonu|p=Szablonowe}}}} {{Patrz|__FUNKCJA-FunkcjaIterajacaRozwijanegoSzablonu}}.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if((czy_niekodowane)and(__FUNKCJA3))then
local wynik=__FUNKCJA3(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow);
if(wynik)then
return wynik;
end;
end;
</syntaxhighlight>
| 7 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _7 = Funkcja do generowania zawartości, może być zmodyfikowana, według podanej jej wartości, używana w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|FUNKCJA2-KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, w postaci zmodyfikowanej, czyli w wersji: {{Code|__FUNKCJA2}},
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
szablon=__FUNKCJA4 and __FUNKCJA4(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or szablon;
</syntaxhighlight>
| 8 = Inne zmienne funkcyjne: | nagłówek8 = tak
| 9 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _9 = Inne operacje wykonywane na pobranym tekście.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_ANALIZA_SPISOWA}}
| 10 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _10 = Funkcja użyta do generowania tablicy bazy kodów.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY}}
}}
Funkcje {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}}, zostały już opisane w tym module, więc wystarczy opisać inne.
{{Hr}}
* Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|pelna_nazwa_szablonu}} | _1 = Pełna nazwa szablonu.
| 2 = {{Code|tabela_parametrow_szablonu}} | _2 = Tabela parametrów wywołania szablonu do rozwinięcia.
| 3 = {{Code|tabela_modyfikatorow}} | _3 = Tabela modyfikatorów danego wywołania szablonowego.
}}
{{Hr}}
* Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Zawartość elementu wikikodu według {{Code|{{m|Szablonowe}}}}.
| 2 = {{Code|obiekt}} {{Patrz|obiekt}} | _2 = Nazwa obiektu szablonowego, jak: {{Code|SZABLON}}.
| 3 = {{Code|kod}} {{Patrz|kod}} | _3 = Numer obiektu, typu: {{Code|obiekt}} {{LinkPatrz|obiekt}}.
| 4 = {{Code|tekst}} | _4 = Tekst całego artykułu.
| 5 = {{Code|numer_szablonu}} {{Patrz|numer_szablonu}} | _5 = Tabela numerów dla różnych obiektów w jednej tabeli.
| 6 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _6 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 7 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _7 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
== {{Śródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}{{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}} ==
Funkcja służy do ściągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}.
Posiada własną walidacje nazwy stron, czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów.
Funkcja odpowiednio operuje na znacznikach wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''', tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
{{OpisParametrów
| 1 = Zmienne obiektowe: | nagłówek1 = tak
| 2 = {{Code|self}} {{Patrz|self}} | _2 = Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 3 = Zwykłe zmienne: | nagłówek3 = tak
| 4 = {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} | _4 = Nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć.
| 5 = {{Code|nazwa_strony2}} {{Patrz|nazwa_strony2}} | _5 = Uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej.
| 6 = {{Code|czy_noinclude}} {{Patrz|czy_noinclude}} | _6 = Jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka.
| 7 = Zmienne tablicowe: | nagłówek7 = tak
| 8 = {{Code|szablony_magiczne}} {{Patrz|szablony_magiczne}} | _8 = Tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej.
| 9 = Inne zmienne: | nagłówek9 = tak
| 10 = {{Code|dokumentacja}} {{Patrz|dokumentacja}} | _10 = Określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}}.
| 11 = {{Code|czy_szablon}} {{Patrz|czy_szablon}} | _11 = Gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją.
| 12 = {{Code|nazwa_modulu_szablonu_opisu}} {{Patrz|nazwa_modulu_szablonu_opisu}} | _12 = Zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami '''{{lpg|HTML}}''' na znaki.
| 13 = {{Code|szablon_nie_opis}} {{Patrz|szablon_nie_opis}} | _13 = Zmienna wskazująca, czy {{Code|nazwa strony}} {{LinkPatrz|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowany, używany wraz ze zmienną: {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}}.
| 14 = Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:| nagłówek14 = tak
| 15 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} | _15 = Operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
| 16 = {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} | _16 = Funkcja operująca na komentarzach, przeciwnie jest używana funkcja: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}}.
| 17 = {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} | _17 = Funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów.
| 18 = {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} | _18 = Funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_analizy_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
}}
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}}, operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} | _1 = Tekst do analizy, jak w funkcji nadrzędnej.
| 2 = {{Code|nazwa_modulu_szablonu_opisu}} {{LinkPatrz|nazwa_modulu_szablonu_opisu}} | _2 = Nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}.
| 3 = {{Code|nazwa_strony_bez_kodow_html}} {{Patrz|nazwa_strony_bez_kodow_html}} | _3 = Jest to nazwa strony: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, tylko z kodami '''{{lpg|HTML}}''' zamienionymi na ich odpowiedniki znakowe.
| 4 = {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}} | _4 = Tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej.
| 5 = {{Code|tabela_nazw}} {{Patrz|tabela_nazw}} | _5 = Tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, wewnątrz tej funkcji nadrzędnej.
}}
{{Hr}}
Funkcja: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}, ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę: {{Code|tablica}}, w funkcji zwracanej przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod metatabelki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} {{Patrz|__metatablica}}, to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Ten rozdział zawiera kolejność wywołań poszczególnych kroków w funkcji.
==== Poprawność pewnych nazw ====
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]|p=Html}}}}, która z: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}}.
==== Parametry uzyskanej strony ====
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}} {{Patrz|uchwyt strony}}, {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} i {{Code|czy_istnieje}} {{Patrz|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów.
==== Składniki preprocesora kodu mechanizmu: {{nobold|{{NS|l=tak|k=mw|w=tak}}}} ====
* Gdy {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli: {{Code|czy_noinclude}} {{LinkPatrz|czy_noinclude}}, przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie. Ze strony są usuwane pozostałości ze znaczników wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''' i znaczników jak {{Tag|templatedata}},
* Przeciwna wypadek: wtedy: {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}}, jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione.
==== Komentarze ====
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}.
===== Usuwanie pseudoszablonówi niektporych instrukcji warunkowych =====
* Ustawiane są zmienne w: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}} {{LinkPatrz|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}} {{Patrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}, by usunąc różne instrukcje warunkowe.
==== Specjalne elementy zmieniające wikikod ====
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
==== Kodowanie bazy danych kodów {{nobold|{{Code|{{m|Szablonowe}}}}}} ====
* Jeśli: {{Code|szablon_nie_opis}} {{LinkPatrz|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
sbc69wesgu0hjkb1ja87enkxuqk6fnx
558310
558309
2026-10-02T14:19:18Z
Persino
2851
/* {{Śródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}{{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}} */
558310
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|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.SpreparowanyWikikodStrony}}{{Code|p.SpreparowanyWikikodStrony}} ==
Funkcja ściągąjąca opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Funkcja w opisach szablonów, a w niej instrukcje warunkowe podczas kodowania są rozwijane przy pomocy funkcji: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}}, a normalnie, gdy wewnątrz instrukcji warunkowych nie ma klamerek w funkcji, w składowej funkcji, tzn.: {{LinkPatrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja korzysta bezpośrednio z funkcji: {{LinkŚródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana. Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:SpreparowanyWikikodStrony(nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 2 = {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} | _2 = Nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw.
| 3 = {{Code|nazwa_modulu_szablonowa}} {{Patrz|nazwa_modulu_szablonowa}} | _3 = Nazwa modułu w wersji szablonowej, w wersji wywołaniowej.
| 4 = {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} | _4 = Przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony.
| 5 = {{Code|inkludowana}} {{Patrz|inkludowana}} | _5 = Przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej.
| 6 = Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem: | nagłówek6 = tak
| 7 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-SpreparowanyWikikodStrony}} | _7 = Funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, po kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
tekst=__FUNKCJA(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,dokumentacja,czy_niezakodowana)
</syntaxhighlight>
| 8 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-SpreparowanyWikikodStrony}} | _8 = Jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul)))then
</syntaxhighlight>
| 9 = {{Code|__FUNKCJA3}} {{Patrz|__FUNKCJA3-SpreparowanyWikikodStrony}} | _9 = Funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}}.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu,nazwa_modulu_szablonowa) or nil;
</syntaxhighlight>
| 10 = Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]|p=Szablonowe}}}} {{Patrz|UstalanieNazwyWywołania}}: | nagłówek10 = tak
| 11 = {{Code|__FUNKCJA4}} {{Patrz|__FUNKCJA4-SpreparowanyWikikodStrony}} | _11 = Funkcja, np. dekodująca nazwę szablonu.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if(__FUNKCJA4)then
nazwa_szablonu,powodzenie__FUNKCJA4(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
| 12 = {{Code|__FUNKCJA5}} {{Patrz|__FUNKCJA5-SpreparowanyWikikodStrony}} | _12 = Funkcja, np. rozwijająca nazwę szablonu.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
nazwa_szablonu=__FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
</syntaxhighlight>
| 13 = Inne: | nagłówek13 = tak
| 14 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _14 = Funkcja do modyfikacji tekstu pobranego ze strony.
{{Śródtekst|uchwyt=__FUNKCJA_ANALIZA_SPISOWA|tekst=
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
tekst_artykulu=__FUNKCJA_ANALIZA_SPISOWA and __FUNKCJA_ANALIZA_SPISOWA(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw) or tekst_artykulu;
</syntaxhighlight>
}}
| 15 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _15 = Funkcje do generowania tablicy bazy kodów.
{{Śródtekst|uchwyt=__FUNKCJA_PARAMETRY|tekst=
{{P|Przykład definicji:}}
<syntaxhighlight lang="lua">
function __FUNKCJA_PARAMETRY(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_element_juz_istnieje)
...
end;
end;
</syntaxhighlight>
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
local __FUNKCJA=__FUNKCJA_PARAMETRY(obiekt);
...
__FUNKCJA(tablica,klucz,wartosc_tablicy,false);
</syntaxhighlight>
}}
}}
Definicje funkcji: {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-UstalanieNazwyWywołania}} i {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-UstalanieNazwyWywołania}}, które są potrzebne do konstrukcji wywołania funkcji: {{LinkPatrz|UstalanieNazwyWywołania}}, uzyskiwania nazwy szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} i {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}}, definicje tych funkcji:
* {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Tablica danych bazy kodów zakodowanego tekstu.
| 5 = {{Code|dokumentacja}} | _5 = Jak w: {{LinkPatrz|dokumentacja}}.
| 6 = {{Code|czy_nie_opis}} {{Patrz|czy_nie_opis}} | _6 = Czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu_caly}} {{Patrz|tekst_artykulu_caly}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} {{LinkPatrz|__FUNKCJA3-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu,nazwa_modulu_szablonowa)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_modulu}} | _1 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 2 = {{Code|nazwa_modulu_szablonowa}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory,czy_z_kluczem]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} | _1 = Nazwa szablonu do rozwinięcia.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}}. | _5 = Tabela parametrów potrzebna do szybszego działania '''{{ld|StronicowyParser|Stronicowego parsera}}'''.
| 6 = Gdy tą funkcją jest: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}}, te zmienne bezpośrednio w: {{Code|__FUNKCJA4}}, nie występują, ale za to występują w tej podanej szczególnej przykładowej funkcji, tzn. argumenty: | komórka6 = tak
| 7 = {{Code|czy_uwzgledniac_modyfikatory}} {{Patrz|czy_uwzgledniac_modyfikatory}} | _7 = Czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}}.
| 8 = {{Code|czy_z_kluczem}} {{Patrz|czy_z_kluczem}} | _8 = Czy klucze, o wzorze: {{Code|<nowiki>^klucz$</nowiki>}}, lub {{Code|<nowiki>^klucz[1-9]%d*$</nowiki>}}.
}}
Jeżeli w funkcji {{LinkPatrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}} nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}} w przeciwnym wypadku zwracane jest nazwa szablonu i wartość {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} | _1 = Jak w: {{LinkPatrz|nazwa_szablonu}}. To jest nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}.
| 2 = {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} | _2 = Tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, to jest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}}, w przypadku: {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}.
| 3 = {{Code|nazwa_modulu}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 4 = {{Code|nazwa_modulu_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{LzLua|frame:preprocess}}, w korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, z której korzysta {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}, jeżeli korzystanej tutaj funkcja zrzuciła niepowodzenie, to pierwsza wartość zwrótcone to: {{Code|nil}}, druga: {{Code|false}}, w przeciwnym wypadku zwraca nazwę rozwiniętego szablonu i drugą wartość zrzuconą: {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice:
; Przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy{{dk}} {{nobold|{{Code|czy_niezakodowana {{=}} true}}}}, i {{nobold|{{Code|czy_nie_opis {{=}} true}}}}, według funkcji{{dk}}
* {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów,
; W przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja:
* {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami.
: Te funkcje są wywoływane wewnątrz funkcji: {{LinkŚródtytuł|p.SpreparowanyWikikodStrony}}. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana. Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Strona, a jednocześnie uchwyt do bazy danych kodów zakodowanego tekstu, o nazwie modułu do rozwinięcia i zakodowania.
| 3 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _3 = Nazwa strony szablonowa, w postaci wywołaniowej szablonów.
| 4 = {{Code|inkludowana}} {{LinkPatrz|inkludowana}} | _4 = Zmienna, czy strona ma być interpretowana jako inkludowana.
| 5 = Zmienne funkcyjne: | nagłówek5 = tak
| 6 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _6 = Funkcja generująca zawartość, może być zmodyfikowana, na podstawie pełnej nazwy strony, używana w funkcji: jest to {{Code|__FUNKCJA3}} w: {{Code|{{sr|#FunkcjaIterajacaRozwijanegoSzablonu|p=Szablonowe}}}} {{Patrz|__FUNKCJA-FunkcjaIterajacaRozwijanegoSzablonu}}.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if((czy_niekodowane)and(__FUNKCJA3))then
local wynik=__FUNKCJA3(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow);
if(wynik)then
return wynik;
end;
end;
</syntaxhighlight>
| 7 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _7 = Funkcja do generowania zawartości, może być zmodyfikowana, według podanej jej wartości, używana w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|FUNKCJA2-KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, w postaci zmodyfikowanej, czyli w wersji: {{Code|__FUNKCJA2}},
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
szablon=__FUNKCJA4 and __FUNKCJA4(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or szablon;
</syntaxhighlight>
| 8 = Inne zmienne funkcyjne: | nagłówek8 = tak
| 9 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _9 = Inne operacje wykonywane na pobranym tekście.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_ANALIZA_SPISOWA}}
| 10 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _10 = Funkcja użyta do generowania tablicy bazy kodów.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY}}
}}
Funkcje {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}}, zostały już opisane w tym module, więc wystarczy opisać inne.
{{Hr}}
* Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|pelna_nazwa_szablonu}} | _1 = Pełna nazwa szablonu.
| 2 = {{Code|tabela_parametrow_szablonu}} | _2 = Tabela parametrów wywołania szablonu do rozwinięcia.
| 3 = {{Code|tabela_modyfikatorow}} | _3 = Tabela modyfikatorów danego wywołania szablonowego.
}}
{{Hr}}
* Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Zawartość elementu wikikodu według {{Code|{{m|Szablonowe}}}}.
| 2 = {{Code|obiekt}} {{Patrz|obiekt}} | _2 = Nazwa obiektu szablonowego, jak: {{Code|SZABLON}}.
| 3 = {{Code|kod}} {{Patrz|kod}} | _3 = Numer obiektu, typu: {{Code|obiekt}} {{LinkPatrz|obiekt}}.
| 4 = {{Code|tekst}} | _4 = Tekst całego artykułu.
| 5 = {{Code|numer_szablonu}} {{Patrz|numer_szablonu}} | _5 = Tabela numerów dla różnych obiektów w jednej tabeli.
| 6 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _6 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 7 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _7 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
== {{Śródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}{{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}} ==
Funkcja służy do ściągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}.
Posiada własną walidacje nazwy stron, czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów.
Funkcja odpowiednio operuje na znacznikach wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''', tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
{{OpisParametrów
| 1 = Zmienne obiektowe: | nagłówek1 = tak
| 2 = {{Code|self}} {{Patrz|self}} | _2 = Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 3 = Zwykłe zmienne: | nagłówek3 = tak
| 4 = {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} | _4 = Nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć.
| 5 = {{Code|nazwa_strony2}} {{Patrz|nazwa_strony2}} | _5 = Uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej.
| 6 = {{Code|czy_noinclude}} {{Patrz|czy_noinclude}} | _6 = Jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka.
| 7 = Zmienne tablicowe: | nagłówek7 = tak
| 8 = {{Code|szablony_magiczne}} {{Patrz|szablony_magiczne}} | _8 = Tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej.
| 9 = Inne zmienne: | nagłówek9 = tak
| 10 = {{Code|dokumentacja}} {{Patrz|dokumentacja}} | _10 = Określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}}.
| 11 = {{Code|czy_szablon}} {{Patrz|czy_szablon}} | _11 = Gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją.
| 12 = {{Code|nazwa_modulu_szablonu_opisu}} {{Patrz|nazwa_modulu_szablonu_opisu}} | _12 = Zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami '''{{lpg|HTML}}''' na znaki.
| 13 = {{Code|szablon_nie_opis}} {{Patrz|szablon_nie_opis}} | _13 = Zmienna wskazująca, czy {{Code|nazwa strony}} {{LinkPatrz|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowany, używany wraz ze zmienną: {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}}.
| 14 = Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chcieliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:| nagłówek14 = tak
| 15 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} | _15 = Operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_ANALIZA_SPISOWA}}
| 16 = {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} | _16 = Funkcja operująca na komentarzach, przeciwnie jest używana funkcja: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}, gdzie:
<syntaxhighlight lang="lua">
local techniczne_modul=require("Module:Techniczne");
tekst_artykulu=__FUNKCJA_KOMENTARZE
and (__FUNKCJA_KOMENTARZE(tekst_artykulu))
or techniczne_modul.UsuwanieKomentarzowe(tekst_artykulu);
</syntaxhighlight>
| 17 = {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} | _17 = Funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów.
{{P|Przykład wywołania;}}
<syntaxhighlight lang="lua">
tekst_artykulu=__FUNKCJA_KONTROLNE and __FUNKCJA_KONTROLNE(tekst_artykulu) or tekst_artykulu;
</syntaxhighlight>
| 18 = {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} | _18 = Funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_analizy_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY}}
}}
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}}, operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} | _1 = Tekst do analizy, jak w funkcji nadrzędnej.
| 2 = {{Code|nazwa_modulu_szablonu_opisu}} {{LinkPatrz|nazwa_modulu_szablonu_opisu}} | _2 = Nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}.
| 3 = {{Code|nazwa_strony_bez_kodow_html}} {{Patrz|nazwa_strony_bez_kodow_html}} | _3 = Jest to nazwa strony: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, tylko z kodami '''{{lpg|HTML}}''' zamienionymi na ich odpowiedniki znakowe.
| 4 = {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}} | _4 = Tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej.
| 5 = {{Code|tabela_nazw}} {{Patrz|tabela_nazw}} | _5 = Tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, wewnątrz tej funkcji nadrzędnej.
}}
{{Hr}}
Funkcja: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}, ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę: {{Code|tablica}}, w funkcji zwracanej przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod metatabelki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} {{Patrz|__metatablica}}, to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Ten rozdział zawiera kolejność wywołań poszczególnych kroków w funkcji.
==== Poprawność pewnych nazw ====
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]|p=Html}}}}, która z: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}}.
==== Parametry uzyskanej strony ====
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}} {{Patrz|uchwyt strony}}, {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} i {{Code|czy_istnieje}} {{Patrz|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów.
==== Składniki preprocesora kodu mechanizmu: {{nobold|{{NS|l=tak|k=mw|w=tak}}}} ====
* Gdy {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli: {{Code|czy_noinclude}} {{LinkPatrz|czy_noinclude}}, przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie. Ze strony są usuwane pozostałości ze znaczników wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''' i znaczników jak {{Tag|templatedata}},
* Przeciwna wypadek: wtedy: {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}}, jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione.
==== Komentarze ====
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}.
===== Usuwanie pseudoszablonówi niektporych instrukcji warunkowych =====
* Ustawiane są zmienne w: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}} {{LinkPatrz|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}} {{Patrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}, by usunąc różne instrukcje warunkowe.
==== Specjalne elementy zmieniające wikikod ====
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
==== Kodowanie bazy danych kodów {{nobold|{{Code|{{m|Szablonowe}}}}}} ====
* Jeśli: {{Code|szablon_nie_opis}} {{LinkPatrz|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
7t4iabxi0xv284edct9q6swqurajqt8
558311
558310
2026-10-02T14:25:35Z
Persino
2851
/* {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} */
558311
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|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.SpreparowanyWikikodStrony}}{{Code|p.SpreparowanyWikikodStrony}} ==
Funkcja ściągąjąca opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Funkcja w opisach szablonów, a w niej instrukcje warunkowe podczas kodowania są rozwijane przy pomocy funkcji: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}}, a normalnie, gdy wewnątrz instrukcji warunkowych nie ma klamerek w funkcji, w składowej funkcji, tzn.: {{LinkPatrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja korzysta bezpośrednio z funkcji: {{LinkŚródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana. Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:SpreparowanyWikikodStrony(nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 2 = {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} | _2 = Nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw.
| 3 = {{Code|nazwa_modulu_szablonowa}} {{Patrz|nazwa_modulu_szablonowa}} | _3 = Nazwa modułu w wersji szablonowej, w wersji wywołaniowej.
| 4 = {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} | _4 = Przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony.
| 5 = {{Code|inkludowana}} {{Patrz|inkludowana}} | _5 = Przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej.
| 6 = Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem: | nagłówek6 = tak
| 7 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-SpreparowanyWikikodStrony}} | _7 = Funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, po kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
tekst=__FUNKCJA(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,dokumentacja,czy_niezakodowana)
</syntaxhighlight>
| 8 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-SpreparowanyWikikodStrony}} | _8 = Jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul)))then
</syntaxhighlight>
| 9 = {{Code|__FUNKCJA3}} {{Patrz|__FUNKCJA3-SpreparowanyWikikodStrony}} | _9 = Funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}}.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu,nazwa_modulu_szablonowa) or nil;
</syntaxhighlight>
| 10 = Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]|p=Szablonowe}}}} {{Patrz|UstalanieNazwyWywołania}}: | nagłówek10 = tak
| 11 = {{Code|__FUNKCJA4}} {{Patrz|__FUNKCJA4-SpreparowanyWikikodStrony}} | _11 = Funkcja, np. dekodująca nazwę szablonu.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if(__FUNKCJA4)then
nazwa_szablonu,powodzenie__FUNKCJA4(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
| 12 = {{Code|__FUNKCJA5}} {{Patrz|__FUNKCJA5-SpreparowanyWikikodStrony}} | _12 = Funkcja, np. rozwijająca nazwę szablonu.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
nazwa_szablonu=__FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
</syntaxhighlight>
| 13 = Inne: | nagłówek13 = tak
| 14 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _14 = Funkcja do modyfikacji tekstu pobranego ze strony.
{{Śródtekst|uchwyt=__FUNKCJA_ANALIZA_SPISOWA|tekst=
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
tekst_artykulu=__FUNKCJA_ANALIZA_SPISOWA and __FUNKCJA_ANALIZA_SPISOWA(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw) or tekst_artykulu;
</syntaxhighlight>
}}
| 15 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _15 = Funkcje do generowania tablicy bazy kodów.
{{Śródtekst|uchwyt=__FUNKCJA_PARAMETRY|tekst=
{{P|Przykład definicji:}}
<syntaxhighlight lang="lua">
function __FUNKCJA_PARAMETRY(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_element_juz_istnieje)
...
end;
end;
</syntaxhighlight>
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
local __FUNKCJA=__FUNKCJA_PARAMETRY(obiekt);
...
__FUNKCJA(tablica,klucz,wartosc_tablicy,false);
</syntaxhighlight>
}}
}}
Definicje funkcji: {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-UstalanieNazwyWywołania}} i {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-UstalanieNazwyWywołania}}, które są potrzebne do konstrukcji wywołania funkcji: {{LinkPatrz|UstalanieNazwyWywołania}}, uzyskiwania nazwy szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} i {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}}, definicje tych funkcji:
* {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Tablica danych bazy kodów zakodowanego tekstu.
| 5 = {{Code|dokumentacja}} | _5 = Jak w: {{LinkPatrz|dokumentacja}}.
| 6 = {{Code|czy_nie_opis}} {{Patrz|czy_nie_opis}} | _6 = Czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu_caly}} {{Patrz|tekst_artykulu_caly}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} {{LinkPatrz|__FUNKCJA3-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu,nazwa_modulu_szablonowa)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_modulu}} | _1 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 2 = {{Code|nazwa_modulu_szablonowa}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory,czy_z_kluczem]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} | _1 = Nazwa szablonu do rozwinięcia.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}}. | _5 = Tabela parametrów potrzebna do szybszego działania '''{{ld|StronicowyParser|Stronicowego parsera}}'''.
| 6 = Gdy tą funkcją jest: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}}, te zmienne bezpośrednio w: {{Code|__FUNKCJA4}}, nie występują, ale za to występują w tej podanej szczególnej przykładowej funkcji, tzn. argumenty: | komórka6 = tak
| 7 = {{Code|czy_uwzgledniac_modyfikatory}} {{Patrz|czy_uwzgledniac_modyfikatory}} | _7 = Czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}}.
| 8 = {{Code|czy_z_kluczem}} {{Patrz|czy_z_kluczem}} | _8 = Czy klucze, o wzorze: {{Code|<nowiki>^klucz$</nowiki>}}, lub {{Code|<nowiki>^klucz[1-9]%d*$</nowiki>}}.
}}
Jeżeli w funkcji {{LinkPatrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}} nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}} w przeciwnym wypadku zwracane jest nazwa szablonu i wartość {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} | _1 = Jak w: {{LinkPatrz|nazwa_szablonu}}. To jest nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}.
| 2 = {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} | _2 = Tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, to jest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}}, w przypadku: {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}.
| 3 = {{Code|nazwa_modulu}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 4 = {{Code|nazwa_modulu_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{LzLua|frame:preprocess}}, w korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, z której korzysta {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}, jeżeli korzystanej tutaj funkcja zrzuciła niepowodzenie, to pierwsza wartość zwrótcone to: {{Code|nil}}, druga: {{Code|false}}, w przeciwnym wypadku zwraca nazwę rozwiniętego szablonu i drugą wartość zrzuconą: {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice:
; Przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy{{dk}} {{nobold|{{Code|czy_niezakodowana {{=}} true}}}}, i {{nobold|{{Code|czy_nie_opis {{=}} true}}}}, według funkcji{{dk}}
* {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów,
; W przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja:
* {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami.
: Te funkcje są wywoływane wewnątrz funkcji: {{LinkŚródtytuł|p.SpreparowanyWikikodStrony}}. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana. Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Strona, a jednocześnie uchwyt do bazy danych kodów zakodowanego tekstu, o nazwie modułu do rozwinięcia i zakodowania.
| 3 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _3 = Nazwa strony szablonowa, w postaci wywołaniowej szablonów.
| 4 = {{Code|inkludowana}} {{LinkPatrz|inkludowana}} | _4 = Zmienna, czy strona ma być interpretowana jako inkludowana.
| 5 = Zmienne funkcyjne: | nagłówek5 = tak
| 6 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _6 = Funkcja generująca zawartość, może być zmodyfikowana, na podstawie pełnej nazwy strony, używana w funkcji: jest to {{Code|__FUNKCJA3}} w: {{Code|{{sr|#FunkcjaIterajacaRozwijanegoSzablonu|p=Szablonowe}}}} {{Patrz|__FUNKCJA-FunkcjaIterajacaRozwijanegoSzablonu}}.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if((czy_niekodowane)and(__FUNKCJA))then
local wynik=__FUNKCJA(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow);
if(wynik)then
return wynik;
end;
end;
</syntaxhighlight>
| 7 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _7 = Funkcja do generowania zawartości, może być zmodyfikowana, według podanej jej wartości, używana w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|FUNKCJA2-KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, w postaci zmodyfikowanej, czyli w wersji: {{Code|__FUNKCJA2}},
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
szablon=__FUNKCJA2 and __FUNKCJA2(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or szablon;
</syntaxhighlight>
| 8 = Inne zmienne funkcyjne: | nagłówek8 = tak
| 9 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _9 = Inne operacje wykonywane na pobranym tekście.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_ANALIZA_SPISOWA}}
| 10 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _10 = Funkcja użyta do generowania tablicy bazy kodów.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY}}
}}
Funkcje {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}}, zostały już opisane w tym module, więc wystarczy opisać inne.
{{Hr}}
* Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|pelna_nazwa_szablonu}} | _1 = Pełna nazwa szablonu.
| 2 = {{Code|tabela_parametrow_szablonu}} | _2 = Tabela parametrów wywołania szablonu do rozwinięcia.
| 3 = {{Code|tabela_modyfikatorow}} | _3 = Tabela modyfikatorów danego wywołania szablonowego.
}}
{{Hr}}
* Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Zawartość elementu wikikodu według {{Code|{{m|Szablonowe}}}}.
| 2 = {{Code|obiekt}} {{Patrz|obiekt}} | _2 = Nazwa obiektu szablonowego, jak: {{Code|SZABLON}}.
| 3 = {{Code|kod}} {{Patrz|kod}} | _3 = Numer obiektu, typu: {{Code|obiekt}} {{LinkPatrz|obiekt}}.
| 4 = {{Code|tekst}} | _4 = Tekst całego artykułu.
| 5 = {{Code|numer_szablonu}} {{Patrz|numer_szablonu}} | _5 = Tabela numerów dla różnych obiektów w jednej tabeli.
| 6 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _6 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 7 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _7 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
== {{Śródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}{{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}} ==
Funkcja służy do ściągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}.
Posiada własną walidacje nazwy stron, czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów.
Funkcja odpowiednio operuje na znacznikach wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''', tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
{{OpisParametrów
| 1 = Zmienne obiektowe: | nagłówek1 = tak
| 2 = {{Code|self}} {{Patrz|self}} | _2 = Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 3 = Zwykłe zmienne: | nagłówek3 = tak
| 4 = {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} | _4 = Nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć.
| 5 = {{Code|nazwa_strony2}} {{Patrz|nazwa_strony2}} | _5 = Uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej.
| 6 = {{Code|czy_noinclude}} {{Patrz|czy_noinclude}} | _6 = Jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka.
| 7 = Zmienne tablicowe: | nagłówek7 = tak
| 8 = {{Code|szablony_magiczne}} {{Patrz|szablony_magiczne}} | _8 = Tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej.
| 9 = Inne zmienne: | nagłówek9 = tak
| 10 = {{Code|dokumentacja}} {{Patrz|dokumentacja}} | _10 = Określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}}.
| 11 = {{Code|czy_szablon}} {{Patrz|czy_szablon}} | _11 = Gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją.
| 12 = {{Code|nazwa_modulu_szablonu_opisu}} {{Patrz|nazwa_modulu_szablonu_opisu}} | _12 = Zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami '''{{lpg|HTML}}''' na znaki.
| 13 = {{Code|szablon_nie_opis}} {{Patrz|szablon_nie_opis}} | _13 = Zmienna wskazująca, czy {{Code|nazwa strony}} {{LinkPatrz|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowany, używany wraz ze zmienną: {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}}.
| 14 = Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chcieliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:| nagłówek14 = tak
| 15 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} | _15 = Operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_ANALIZA_SPISOWA}}
| 16 = {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} | _16 = Funkcja operująca na komentarzach, przeciwnie jest używana funkcja: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}, gdzie:
<syntaxhighlight lang="lua">
local techniczne_modul=require("Module:Techniczne");
tekst_artykulu=__FUNKCJA_KOMENTARZE
and (__FUNKCJA_KOMENTARZE(tekst_artykulu))
or techniczne_modul.UsuwanieKomentarzowe(tekst_artykulu);
</syntaxhighlight>
| 17 = {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} | _17 = Funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów.
{{P|Przykład wywołania;}}
<syntaxhighlight lang="lua">
tekst_artykulu=__FUNKCJA_KONTROLNE and __FUNKCJA_KONTROLNE(tekst_artykulu) or tekst_artykulu;
</syntaxhighlight>
| 18 = {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} | _18 = Funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_analizy_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY}}
}}
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}}, operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} | _1 = Tekst do analizy, jak w funkcji nadrzędnej.
| 2 = {{Code|nazwa_modulu_szablonu_opisu}} {{LinkPatrz|nazwa_modulu_szablonu_opisu}} | _2 = Nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}.
| 3 = {{Code|nazwa_strony_bez_kodow_html}} {{Patrz|nazwa_strony_bez_kodow_html}} | _3 = Jest to nazwa strony: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, tylko z kodami '''{{lpg|HTML}}''' zamienionymi na ich odpowiedniki znakowe.
| 4 = {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}} | _4 = Tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej.
| 5 = {{Code|tabela_nazw}} {{Patrz|tabela_nazw}} | _5 = Tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, wewnątrz tej funkcji nadrzędnej.
}}
{{Hr}}
Funkcja: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}, ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę: {{Code|tablica}}, w funkcji zwracanej przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod metatabelki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} {{Patrz|__metatablica}}, to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Ten rozdział zawiera kolejność wywołań poszczególnych kroków w funkcji.
==== Poprawność pewnych nazw ====
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]|p=Html}}}}, która z: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}}.
==== Parametry uzyskanej strony ====
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}} {{Patrz|uchwyt strony}}, {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} i {{Code|czy_istnieje}} {{Patrz|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów.
==== Składniki preprocesora kodu mechanizmu: {{nobold|{{NS|l=tak|k=mw|w=tak}}}} ====
* Gdy {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli: {{Code|czy_noinclude}} {{LinkPatrz|czy_noinclude}}, przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie. Ze strony są usuwane pozostałości ze znaczników wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''' i znaczników jak {{Tag|templatedata}},
* Przeciwna wypadek: wtedy: {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}}, jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione.
==== Komentarze ====
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}.
===== Usuwanie pseudoszablonówi niektporych instrukcji warunkowych =====
* Ustawiane są zmienne w: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}} {{LinkPatrz|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}} {{Patrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}, by usunąc różne instrukcje warunkowe.
==== Specjalne elementy zmieniające wikikod ====
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
==== Kodowanie bazy danych kodów {{nobold|{{Code|{{m|Szablonowe}}}}}} ====
* Jeśli: {{Code|szablon_nie_opis}} {{LinkPatrz|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
jb156on7wlzqe07k61qdh4jb1av9ql4
558312
558311
2026-10-02T14:30:55Z
Persino
2851
/* {{Śródtytuł|p.SpreparowanyWikikodStrony}}{{Code|p.SpreparowanyWikikodStrony}} */
558312
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|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.SpreparowanyWikikodStrony}}{{Code|p.SpreparowanyWikikodStrony}} ==
Funkcja ściągąjąca opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Funkcja w opisach szablonów, a w niej instrukcje warunkowe podczas kodowania są rozwijane przy pomocy funkcji: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}}, a normalnie, gdy wewnątrz instrukcji warunkowych nie ma klamerek w funkcji, w składowej funkcji, tzn.: {{LinkPatrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja korzysta bezpośrednio z funkcji: {{LinkŚródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana. Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:SpreparowanyWikikodStrony(nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 2 = {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} | _2 = Nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw.
| 3 = {{Code|nazwa_modulu_szablonowa}} {{Patrz|nazwa_modulu_szablonowa}} | _3 = Nazwa modułu w wersji szablonowej, w wersji wywołaniowej.
| 4 = {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} | _4 = Przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony.
| 5 = {{Code|inkludowana}} {{Patrz|inkludowana}} | _5 = Przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej.
| 6 = Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem: | nagłówek6 = tak
| 7 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-SpreparowanyWikikodStrony}} | _7 = Funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, po kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
tekst=__FUNKCJA(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,dokumentacja,czy_niezakodowana)
</syntaxhighlight>
| 8 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-SpreparowanyWikikodStrony}} | _8 = Jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, odkodować od postaci zakodowanej, czyli do formy dokumentacji.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul)))then
</syntaxhighlight>
| 9 = {{Code|__FUNKCJA3}} {{Patrz|__FUNKCJA3-SpreparowanyWikikodStrony}} | _9 = Funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}}.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu,nazwa_modulu_szablonowa) or nil;
</syntaxhighlight>
| 10 = Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]|p=Szablonowe}}}} {{Patrz|UstalanieNazwyWywołania}}: | nagłówek10 = tak
| 11 = {{Code|__FUNKCJA4}} {{Patrz|__FUNKCJA4-SpreparowanyWikikodStrony}} | _11 = Funkcja, np. dekodująca nazwę szablonu.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if(__FUNKCJA4)then
nazwa_szablonu,powodzenie__FUNKCJA4(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
| 12 = {{Code|__FUNKCJA5}} {{Patrz|__FUNKCJA5-SpreparowanyWikikodStrony}} | _12 = Funkcja, np. rozwijająca nazwę szablonu.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
nazwa_szablonu=__FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
</syntaxhighlight>
| 13 = Inne: | nagłówek13 = tak
| 14 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _14 = Funkcja do modyfikacji tekstu pobranego ze strony.
{{Śródtekst|uchwyt=__FUNKCJA_ANALIZA_SPISOWA|tekst=
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
tekst_artykulu=__FUNKCJA_ANALIZA_SPISOWA and __FUNKCJA_ANALIZA_SPISOWA(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw) or tekst_artykulu;
</syntaxhighlight>
}}
| 15 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _15 = Funkcje do generowania tablicy bazy kodów.
{{Śródtekst|uchwyt=__FUNKCJA_PARAMETRY|tekst=
{{P|Przykład definicji:}}
<syntaxhighlight lang="lua">
function __FUNKCJA_PARAMETRY(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_element_juz_istnieje)
...
end;
end;
</syntaxhighlight>
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
local __FUNKCJA=__FUNKCJA_PARAMETRY(obiekt);
...
__FUNKCJA(tablica,klucz,wartosc_tablicy,false);
</syntaxhighlight>
}}
}}
Definicje funkcji: {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-UstalanieNazwyWywołania}} i {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-UstalanieNazwyWywołania}}, które są potrzebne do konstrukcji wywołania funkcji: {{LinkPatrz|UstalanieNazwyWywołania}}, uzyskiwania nazwy szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} i {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}}, definicje tych funkcji:
* {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Tablica danych bazy kodów zakodowanego tekstu.
| 5 = {{Code|dokumentacja}} | _5 = Jak w: {{LinkPatrz|dokumentacja}}.
| 6 = {{Code|czy_nie_opis}} {{Patrz|czy_nie_opis}} | _6 = Czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu_caly}} {{Patrz|tekst_artykulu_caly}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} {{LinkPatrz|__FUNKCJA3-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu,nazwa_modulu_szablonowa)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_modulu}} | _1 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 2 = {{Code|nazwa_modulu_szablonowa}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory,czy_z_kluczem]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} | _1 = Nazwa szablonu do rozwinięcia.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}}. | _5 = Tabela parametrów potrzebna do szybszego działania '''{{ld|StronicowyParser|Stronicowego parsera}}'''.
| 6 = Gdy tą funkcją jest: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}}, te zmienne bezpośrednio w: {{Code|__FUNKCJA4}}, nie występują, ale za to występują w tej podanej szczególnej przykładowej funkcji, tzn. argumenty: | komórka6 = tak
| 7 = {{Code|czy_uwzgledniac_modyfikatory}} {{Patrz|czy_uwzgledniac_modyfikatory}} | _7 = Czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}}.
| 8 = {{Code|czy_z_kluczem}} {{Patrz|czy_z_kluczem}} | _8 = Czy klucze, o wzorze: {{Code|<nowiki>^klucz$</nowiki>}}, lub {{Code|<nowiki>^klucz[1-9]%d*$</nowiki>}}.
}}
Jeżeli w funkcji {{LinkPatrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}} nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}} w przeciwnym wypadku zwracane jest nazwa szablonu i wartość {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} | _1 = Jak w: {{LinkPatrz|nazwa_szablonu}}. To jest nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}.
| 2 = {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} | _2 = Tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, to jest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}}, w przypadku: {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}.
| 3 = {{Code|nazwa_modulu}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 4 = {{Code|nazwa_modulu_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{LzLua|frame:preprocess}}, w korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, z której korzysta {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}, jeżeli korzystanej tutaj funkcja zrzuciła niepowodzenie, to pierwsza wartość zwrótcone to: {{Code|nil}}, druga: {{Code|false}}, w przeciwnym wypadku zwraca nazwę rozwiniętego szablonu i drugą wartość zrzuconą: {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice:
; Przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy{{dk}} {{nobold|{{Code|czy_niezakodowana {{=}} true}}}}, i {{nobold|{{Code|czy_nie_opis {{=}} true}}}}, według funkcji{{dk}}
* {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów,
; W przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja:
* {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami.
: Te funkcje są wywoływane wewnątrz funkcji: {{LinkŚródtytuł|p.SpreparowanyWikikodStrony}}. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana. Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Strona, a jednocześnie uchwyt do bazy danych kodów zakodowanego tekstu, o nazwie modułu do rozwinięcia i zakodowania.
| 3 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _3 = Nazwa strony szablonowa, w postaci wywołaniowej szablonów.
| 4 = {{Code|inkludowana}} {{LinkPatrz|inkludowana}} | _4 = Zmienna, czy strona ma być interpretowana jako inkludowana.
| 5 = Zmienne funkcyjne: | nagłówek5 = tak
| 6 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _6 = Funkcja generująca zawartość, może być zmodyfikowana, na podstawie pełnej nazwy strony, używana w funkcji: jest to {{Code|__FUNKCJA3}} w: {{Code|{{sr|#FunkcjaIterajacaRozwijanegoSzablonu|p=Szablonowe}}}} {{Patrz|__FUNKCJA-FunkcjaIterajacaRozwijanegoSzablonu}}.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if((czy_niekodowane)and(__FUNKCJA))then
local wynik=__FUNKCJA(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow);
if(wynik)then
return wynik;
end;
end;
</syntaxhighlight>
| 7 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _7 = Funkcja do generowania zawartości, może być zmodyfikowana, według podanej jej wartości, używana w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|FUNKCJA2-KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, w postaci zmodyfikowanej, czyli w wersji: {{Code|__FUNKCJA2}},
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
szablon=__FUNKCJA2 and __FUNKCJA2(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or szablon;
</syntaxhighlight>
| 8 = Inne zmienne funkcyjne: | nagłówek8 = tak
| 9 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _9 = Inne operacje wykonywane na pobranym tekście.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_ANALIZA_SPISOWA}}
| 10 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _10 = Funkcja użyta do generowania tablicy bazy kodów.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY}}
}}
Funkcje {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}}, zostały już opisane w tym module, więc wystarczy opisać inne.
{{Hr}}
* Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|pelna_nazwa_szablonu}} | _1 = Pełna nazwa szablonu.
| 2 = {{Code|tabela_parametrow_szablonu}} | _2 = Tabela parametrów wywołania szablonu do rozwinięcia.
| 3 = {{Code|tabela_modyfikatorow}} | _3 = Tabela modyfikatorów danego wywołania szablonowego.
}}
{{Hr}}
* Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Zawartość elementu wikikodu według {{Code|{{m|Szablonowe}}}}.
| 2 = {{Code|obiekt}} {{Patrz|obiekt}} | _2 = Nazwa obiektu szablonowego, jak: {{Code|SZABLON}}.
| 3 = {{Code|kod}} {{Patrz|kod}} | _3 = Numer obiektu, typu: {{Code|obiekt}} {{LinkPatrz|obiekt}}.
| 4 = {{Code|tekst}} | _4 = Tekst całego artykułu.
| 5 = {{Code|numer_szablonu}} {{Patrz|numer_szablonu}} | _5 = Tabela numerów dla różnych obiektów w jednej tabeli.
| 6 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _6 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 7 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _7 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
== {{Śródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}{{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}} ==
Funkcja służy do ściągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}.
Posiada własną walidacje nazwy stron, czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów.
Funkcja odpowiednio operuje na znacznikach wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''', tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
{{OpisParametrów
| 1 = Zmienne obiektowe: | nagłówek1 = tak
| 2 = {{Code|self}} {{Patrz|self}} | _2 = Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 3 = Zwykłe zmienne: | nagłówek3 = tak
| 4 = {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} | _4 = Nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć.
| 5 = {{Code|nazwa_strony2}} {{Patrz|nazwa_strony2}} | _5 = Uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej.
| 6 = {{Code|czy_noinclude}} {{Patrz|czy_noinclude}} | _6 = Jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka.
| 7 = Zmienne tablicowe: | nagłówek7 = tak
| 8 = {{Code|szablony_magiczne}} {{Patrz|szablony_magiczne}} | _8 = Tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej.
| 9 = Inne zmienne: | nagłówek9 = tak
| 10 = {{Code|dokumentacja}} {{Patrz|dokumentacja}} | _10 = Określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}}.
| 11 = {{Code|czy_szablon}} {{Patrz|czy_szablon}} | _11 = Gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją.
| 12 = {{Code|nazwa_modulu_szablonu_opisu}} {{Patrz|nazwa_modulu_szablonu_opisu}} | _12 = Zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami '''{{lpg|HTML}}''' na znaki.
| 13 = {{Code|szablon_nie_opis}} {{Patrz|szablon_nie_opis}} | _13 = Zmienna wskazująca, czy {{Code|nazwa strony}} {{LinkPatrz|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowany, używany wraz ze zmienną: {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}}.
| 14 = Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chcieliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:| nagłówek14 = tak
| 15 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} | _15 = Operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_ANALIZA_SPISOWA}}
| 16 = {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} | _16 = Funkcja operująca na komentarzach, przeciwnie jest używana funkcja: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}, gdzie:
<syntaxhighlight lang="lua">
local techniczne_modul=require("Module:Techniczne");
tekst_artykulu=__FUNKCJA_KOMENTARZE
and (__FUNKCJA_KOMENTARZE(tekst_artykulu))
or techniczne_modul.UsuwanieKomentarzowe(tekst_artykulu);
</syntaxhighlight>
| 17 = {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} | _17 = Funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów.
{{P|Przykład wywołania;}}
<syntaxhighlight lang="lua">
tekst_artykulu=__FUNKCJA_KONTROLNE and __FUNKCJA_KONTROLNE(tekst_artykulu) or tekst_artykulu;
</syntaxhighlight>
| 18 = {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} | _18 = Funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_analizy_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY}}
}}
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}}, operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} | _1 = Tekst do analizy, jak w funkcji nadrzędnej.
| 2 = {{Code|nazwa_modulu_szablonu_opisu}} {{LinkPatrz|nazwa_modulu_szablonu_opisu}} | _2 = Nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}.
| 3 = {{Code|nazwa_strony_bez_kodow_html}} {{Patrz|nazwa_strony_bez_kodow_html}} | _3 = Jest to nazwa strony: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, tylko z kodami '''{{lpg|HTML}}''' zamienionymi na ich odpowiedniki znakowe.
| 4 = {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}} | _4 = Tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej.
| 5 = {{Code|tabela_nazw}} {{Patrz|tabela_nazw}} | _5 = Tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, wewnątrz tej funkcji nadrzędnej.
}}
{{Hr}}
Funkcja: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}, ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę: {{Code|tablica}}, w funkcji zwracanej przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod metatabelki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} {{Patrz|__metatablica}}, to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Ten rozdział zawiera kolejność wywołań poszczególnych kroków w funkcji.
==== Poprawność pewnych nazw ====
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]|p=Html}}}}, która z: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}}.
==== Parametry uzyskanej strony ====
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}} {{Patrz|uchwyt strony}}, {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} i {{Code|czy_istnieje}} {{Patrz|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów.
==== Składniki preprocesora kodu mechanizmu: {{nobold|{{NS|l=tak|k=mw|w=tak}}}} ====
* Gdy {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli: {{Code|czy_noinclude}} {{LinkPatrz|czy_noinclude}}, przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie. Ze strony są usuwane pozostałości ze znaczników wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''' i znaczników jak {{Tag|templatedata}},
* Przeciwna wypadek: wtedy: {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}}, jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione.
==== Komentarze ====
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}.
===== Usuwanie pseudoszablonówi niektporych instrukcji warunkowych =====
* Ustawiane są zmienne w: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}} {{LinkPatrz|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}} {{Patrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}, by usunąc różne instrukcje warunkowe.
==== Specjalne elementy zmieniające wikikod ====
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
==== Kodowanie bazy danych kodów {{nobold|{{Code|{{m|Szablonowe}}}}}} ====
* Jeśli: {{Code|szablon_nie_opis}} {{LinkPatrz|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
3v0thqqspaoyo9yu92orm6uop7vmb26
558313
558312
2026-10-02T14:33:29Z
Persino
2851
/* {{Śródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}{{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}} */
558313
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|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.SpreparowanyWikikodStrony}}{{Code|p.SpreparowanyWikikodStrony}} ==
Funkcja ściągąjąca opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Funkcja w opisach szablonów, a w niej instrukcje warunkowe podczas kodowania są rozwijane przy pomocy funkcji: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}}, a normalnie, gdy wewnątrz instrukcji warunkowych nie ma klamerek w funkcji, w składowej funkcji, tzn.: {{LinkPatrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja korzysta bezpośrednio z funkcji: {{LinkŚródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana. Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:SpreparowanyWikikodStrony(nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 2 = {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} | _2 = Nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw.
| 3 = {{Code|nazwa_modulu_szablonowa}} {{Patrz|nazwa_modulu_szablonowa}} | _3 = Nazwa modułu w wersji szablonowej, w wersji wywołaniowej.
| 4 = {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} | _4 = Przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony.
| 5 = {{Code|inkludowana}} {{Patrz|inkludowana}} | _5 = Przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej.
| 6 = Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem: | nagłówek6 = tak
| 7 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-SpreparowanyWikikodStrony}} | _7 = Funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, po kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
tekst=__FUNKCJA(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,dokumentacja,czy_niezakodowana)
</syntaxhighlight>
| 8 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-SpreparowanyWikikodStrony}} | _8 = Jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, odkodować od postaci zakodowanej, czyli do formy dokumentacji.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul)))then
</syntaxhighlight>
| 9 = {{Code|__FUNKCJA3}} {{Patrz|__FUNKCJA3-SpreparowanyWikikodStrony}} | _9 = Funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}}.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu,nazwa_modulu_szablonowa) or nil;
</syntaxhighlight>
| 10 = Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]|p=Szablonowe}}}} {{Patrz|UstalanieNazwyWywołania}}: | nagłówek10 = tak
| 11 = {{Code|__FUNKCJA4}} {{Patrz|__FUNKCJA4-SpreparowanyWikikodStrony}} | _11 = Funkcja, np. dekodująca nazwę szablonu.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if(__FUNKCJA4)then
nazwa_szablonu,powodzenie__FUNKCJA4(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
| 12 = {{Code|__FUNKCJA5}} {{Patrz|__FUNKCJA5-SpreparowanyWikikodStrony}} | _12 = Funkcja, np. rozwijająca nazwę szablonu.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
nazwa_szablonu=__FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
</syntaxhighlight>
| 13 = Inne: | nagłówek13 = tak
| 14 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _14 = Funkcja do modyfikacji tekstu pobranego ze strony.
{{Śródtekst|uchwyt=__FUNKCJA_ANALIZA_SPISOWA|tekst=
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
tekst_artykulu=__FUNKCJA_ANALIZA_SPISOWA and __FUNKCJA_ANALIZA_SPISOWA(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw) or tekst_artykulu;
</syntaxhighlight>
}}
| 15 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _15 = Funkcje do generowania tablicy bazy kodów.
{{Śródtekst|uchwyt=__FUNKCJA_PARAMETRY|tekst=
{{P|Przykład definicji:}}
<syntaxhighlight lang="lua">
function __FUNKCJA_PARAMETRY(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_element_juz_istnieje)
...
end;
end;
</syntaxhighlight>
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
local __FUNKCJA=__FUNKCJA_PARAMETRY(obiekt);
...
__FUNKCJA(tablica,klucz,wartosc_tablicy,false);
</syntaxhighlight>
}}
}}
Definicje funkcji: {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-UstalanieNazwyWywołania}} i {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-UstalanieNazwyWywołania}}, które są potrzebne do konstrukcji wywołania funkcji: {{LinkPatrz|UstalanieNazwyWywołania}}, uzyskiwania nazwy szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} i {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}}, definicje tych funkcji:
* {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Tablica danych bazy kodów zakodowanego tekstu.
| 5 = {{Code|dokumentacja}} | _5 = Jak w: {{LinkPatrz|dokumentacja}}.
| 6 = {{Code|czy_nie_opis}} {{Patrz|czy_nie_opis}} | _6 = Czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu_caly}} {{Patrz|tekst_artykulu_caly}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} {{LinkPatrz|__FUNKCJA3-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu,nazwa_modulu_szablonowa)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_modulu}} | _1 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 2 = {{Code|nazwa_modulu_szablonowa}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory,czy_z_kluczem]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} | _1 = Nazwa szablonu do rozwinięcia.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}}. | _5 = Tabela parametrów potrzebna do szybszego działania '''{{ld|StronicowyParser|Stronicowego parsera}}'''.
| 6 = Gdy tą funkcją jest: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}}, te zmienne bezpośrednio w: {{Code|__FUNKCJA4}}, nie występują, ale za to występują w tej podanej szczególnej przykładowej funkcji, tzn. argumenty: | komórka6 = tak
| 7 = {{Code|czy_uwzgledniac_modyfikatory}} {{Patrz|czy_uwzgledniac_modyfikatory}} | _7 = Czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}}.
| 8 = {{Code|czy_z_kluczem}} {{Patrz|czy_z_kluczem}} | _8 = Czy klucze, o wzorze: {{Code|<nowiki>^klucz$</nowiki>}}, lub {{Code|<nowiki>^klucz[1-9]%d*$</nowiki>}}.
}}
Jeżeli w funkcji {{LinkPatrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}} nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}} w przeciwnym wypadku zwracane jest nazwa szablonu i wartość {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} | _1 = Jak w: {{LinkPatrz|nazwa_szablonu}}. To jest nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}.
| 2 = {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} | _2 = Tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, to jest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}}, w przypadku: {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}.
| 3 = {{Code|nazwa_modulu}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 4 = {{Code|nazwa_modulu_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{LzLua|frame:preprocess}}, w korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, z której korzysta {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}, jeżeli korzystanej tutaj funkcja zrzuciła niepowodzenie, to pierwsza wartość zwrótcone to: {{Code|nil}}, druga: {{Code|false}}, w przeciwnym wypadku zwraca nazwę rozwiniętego szablonu i drugą wartość zrzuconą: {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice:
; Przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy{{dk}} {{nobold|{{Code|czy_niezakodowana {{=}} true}}}}, i {{nobold|{{Code|czy_nie_opis {{=}} true}}}}, według funkcji{{dk}}
* {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów,
; W przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja:
* {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami.
: Te funkcje są wywoływane wewnątrz funkcji: {{LinkŚródtytuł|p.SpreparowanyWikikodStrony}}. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana. Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Strona, a jednocześnie uchwyt do bazy danych kodów zakodowanego tekstu, o nazwie modułu do rozwinięcia i zakodowania.
| 3 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _3 = Nazwa strony szablonowa, w postaci wywołaniowej szablonów.
| 4 = {{Code|inkludowana}} {{LinkPatrz|inkludowana}} | _4 = Zmienna, czy strona ma być interpretowana jako inkludowana.
| 5 = Zmienne funkcyjne: | nagłówek5 = tak
| 6 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _6 = Funkcja generująca zawartość, może być zmodyfikowana, na podstawie pełnej nazwy strony, używana w funkcji: jest to {{Code|__FUNKCJA3}} w: {{Code|{{sr|#FunkcjaIterajacaRozwijanegoSzablonu|p=Szablonowe}}}} {{Patrz|__FUNKCJA-FunkcjaIterajacaRozwijanegoSzablonu}}.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if((czy_niekodowane)and(__FUNKCJA))then
local wynik=__FUNKCJA(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow);
if(wynik)then
return wynik;
end;
end;
</syntaxhighlight>
| 7 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _7 = Funkcja do generowania zawartości, może być zmodyfikowana, według podanej jej wartości, używana w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|FUNKCJA2-KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, w postaci zmodyfikowanej, czyli w wersji: {{Code|__FUNKCJA2}},
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
szablon=__FUNKCJA2 and __FUNKCJA2(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or szablon;
</syntaxhighlight>
| 8 = Inne zmienne funkcyjne: | nagłówek8 = tak
| 9 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _9 = Inne operacje wykonywane na pobranym tekście.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_ANALIZA_SPISOWA}}
| 10 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _10 = Funkcja użyta do generowania tablicy bazy kodów.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY}}
}}
Funkcje {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}}, zostały już opisane w tym module, więc wystarczy opisać inne.
{{Hr}}
* Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|pelna_nazwa_szablonu}} | _1 = Pełna nazwa szablonu.
| 2 = {{Code|tabela_parametrow_szablonu}} | _2 = Tabela parametrów wywołania szablonu do rozwinięcia.
| 3 = {{Code|tabela_modyfikatorow}} | _3 = Tabela modyfikatorów danego wywołania szablonowego.
}}
{{Hr}}
* Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Zawartość elementu wikikodu według {{Code|{{m|Szablonowe}}}}.
| 2 = {{Code|obiekt}} {{Patrz|obiekt}} | _2 = Nazwa obiektu szablonowego, jak: {{Code|SZABLON}}.
| 3 = {{Code|kod}} {{Patrz|kod}} | _3 = Numer obiektu, typu: {{Code|obiekt}} {{LinkPatrz|obiekt}}.
| 4 = {{Code|tekst}} | _4 = Tekst całego artykułu.
| 5 = {{Code|numer_szablonu}} {{Patrz|numer_szablonu}} | _5 = Tabela numerów dla różnych obiektów w jednej tabeli.
| 6 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _6 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 7 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _7 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
== {{Śródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}{{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}} ==
Funkcja służy do ściągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}.
Posiada własną walidacje nazwy stron, czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów.
Funkcja odpowiednio operuje na znacznikach wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''', tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
{{OpisParametrów
| 1 = Zmienne obiektowe: | nagłówek1 = tak
| 2 = {{Code|self}} {{Patrz|self}} | _2 = Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 3 = Zwykłe zmienne: | nagłówek3 = tak
| 4 = {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} | _4 = Nazwa strony, której liczymy zawartość, używając funkcji: {{LzLua|mw.title.makeTitle}}, strona może nie istnieć.
| 5 = {{Code|nazwa_strony2}} {{Patrz|nazwa_strony2}} | _5 = Uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej.
| 6 = {{Code|czy_noinclude}} {{Patrz|czy_noinclude}} | _6 = Jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka.
| 7 = Zmienne tablicowe: | nagłówek7 = tak
| 8 = {{Code|szablony_magiczne}} {{Patrz|szablony_magiczne}} | _8 = Tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej.
| 9 = Inne zmienne: | nagłówek9 = tak
| 10 = {{Code|dokumentacja}} {{Patrz|dokumentacja}} | _10 = Określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}}.
| 11 = {{Code|czy_szablon}} {{Patrz|czy_szablon}} | _11 = Gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją.
| 12 = {{Code|nazwa_modulu_szablonu_opisu}} {{Patrz|nazwa_modulu_szablonu_opisu}} | _12 = Zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami '''{{lpg|HTML}}''' na znaki.
| 13 = {{Code|szablon_nie_opis}} {{Patrz|szablon_nie_opis}} | _13 = Zmienna wskazująca, czy {{Code|nazwa strony}} {{LinkPatrz|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowany, używany wraz ze zmienną: {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}}.
| 14 = Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chcieliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:| nagłówek14 = tak
| 15 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} | _15 = Operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_ANALIZA_SPISOWA}}
| 16 = {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} | _16 = Funkcja operująca na komentarzach, przeciwnie jest używana funkcja: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}, gdzie:
<syntaxhighlight lang="lua">
local techniczne_modul=require("Module:Techniczne");
tekst_artykulu=__FUNKCJA_KOMENTARZE
and (__FUNKCJA_KOMENTARZE(tekst_artykulu))
or techniczne_modul.UsuwanieKomentarzowe(tekst_artykulu);
</syntaxhighlight>
| 17 = {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} | _17 = Funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów.
{{P|Przykład wywołania;}}
<syntaxhighlight lang="lua">
tekst_artykulu=__FUNKCJA_KONTROLNE and __FUNKCJA_KONTROLNE(tekst_artykulu) or tekst_artykulu;
</syntaxhighlight>
| 18 = {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} | _18 = Funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_analizy_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY}}
}}
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}}, operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} | _1 = Tekst do analizy, jak w funkcji nadrzędnej.
| 2 = {{Code|nazwa_modulu_szablonu_opisu}} {{LinkPatrz|nazwa_modulu_szablonu_opisu}} | _2 = Nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}.
| 3 = {{Code|nazwa_strony_bez_kodow_html}} {{Patrz|nazwa_strony_bez_kodow_html}} | _3 = Jest to nazwa strony: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, tylko z kodami '''{{lpg|HTML}}''' zamienionymi na ich odpowiedniki znakowe.
| 4 = {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}} | _4 = Tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej.
| 5 = {{Code|tabela_nazw}} {{Patrz|tabela_nazw}} | _5 = Tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, wewnątrz tej funkcji nadrzędnej.
}}
{{Hr}}
Funkcja: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}, ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę: {{Code|tablica}}, w funkcji zwracanej przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod metatabelki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} {{Patrz|__metatablica}}, to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Ten rozdział zawiera kolejność wywołań poszczególnych kroków w funkcji.
==== Poprawność pewnych nazw ====
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]|p=Html}}}}, która z: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}}.
==== Parametry uzyskanej strony ====
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}} {{Patrz|uchwyt strony}}, {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} i {{Code|czy_istnieje}} {{Patrz|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów.
==== Składniki preprocesora kodu mechanizmu: {{nobold|{{NS|l=tak|k=mw|w=tak}}}} ====
* Gdy {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli: {{Code|czy_noinclude}} {{LinkPatrz|czy_noinclude}}, przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie. Ze strony są usuwane pozostałości ze znaczników wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''' i znaczników jak {{Tag|templatedata}},
* Przeciwna wypadek: wtedy: {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}}, jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione.
==== Komentarze ====
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}.
===== Usuwanie pseudoszablonówi niektporych instrukcji warunkowych =====
* Ustawiane są zmienne w: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}} {{LinkPatrz|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}} {{Patrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}, by usunąc różne instrukcje warunkowe.
==== Specjalne elementy zmieniające wikikod ====
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
==== Kodowanie bazy danych kodów {{nobold|{{Code|{{m|Szablonowe}}}}}} ====
* Jeśli: {{Code|szablon_nie_opis}} {{LinkPatrz|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
och6lm5has66bl6gmh1hz1vrq9vxck4
558315
558313
2026-10-02T14:50:11Z
Persino
2851
/* {{Śródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}{{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}} */
558315
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|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.SpreparowanyWikikodStrony}}{{Code|p.SpreparowanyWikikodStrony}} ==
Funkcja ściągąjąca opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Funkcja w opisach szablonów, a w niej instrukcje warunkowe podczas kodowania są rozwijane przy pomocy funkcji: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}}, a normalnie, gdy wewnątrz instrukcji warunkowych nie ma klamerek w funkcji, w składowej funkcji, tzn.: {{LinkPatrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja korzysta bezpośrednio z funkcji: {{LinkŚródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana. Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:SpreparowanyWikikodStrony(nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 2 = {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} | _2 = Nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw.
| 3 = {{Code|nazwa_modulu_szablonowa}} {{Patrz|nazwa_modulu_szablonowa}} | _3 = Nazwa modułu w wersji szablonowej, w wersji wywołaniowej.
| 4 = {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} | _4 = Przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony.
| 5 = {{Code|inkludowana}} {{Patrz|inkludowana}} | _5 = Przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej.
| 6 = Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem: | nagłówek6 = tak
| 7 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-SpreparowanyWikikodStrony}} | _7 = Funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, po kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
tekst=__FUNKCJA(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,dokumentacja,czy_niezakodowana)
</syntaxhighlight>
| 8 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-SpreparowanyWikikodStrony}} | _8 = Jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, odkodować od postaci zakodowanej, czyli do formy dokumentacji.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul)))then
</syntaxhighlight>
| 9 = {{Code|__FUNKCJA3}} {{Patrz|__FUNKCJA3-SpreparowanyWikikodStrony}} | _9 = Funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}}.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu,nazwa_modulu_szablonowa) or nil;
</syntaxhighlight>
| 10 = Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]|p=Szablonowe}}}} {{Patrz|UstalanieNazwyWywołania}}: | nagłówek10 = tak
| 11 = {{Code|__FUNKCJA4}} {{Patrz|__FUNKCJA4-SpreparowanyWikikodStrony}} | _11 = Funkcja, np. dekodująca nazwę szablonu.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if(__FUNKCJA4)then
nazwa_szablonu,powodzenie__FUNKCJA4(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
| 12 = {{Code|__FUNKCJA5}} {{Patrz|__FUNKCJA5-SpreparowanyWikikodStrony}} | _12 = Funkcja, np. rozwijająca nazwę szablonu.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
nazwa_szablonu=__FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
</syntaxhighlight>
| 13 = Inne: | nagłówek13 = tak
| 14 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _14 = Funkcja do modyfikacji tekstu pobranego ze strony.
{{Śródtekst|uchwyt=__FUNKCJA_ANALIZA_SPISOWA|tekst=
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
tekst_artykulu=__FUNKCJA_ANALIZA_SPISOWA and __FUNKCJA_ANALIZA_SPISOWA(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw) or tekst_artykulu;
</syntaxhighlight>
}}
| 15 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _15 = Funkcje do generowania tablicy bazy kodów.
{{Śródtekst|uchwyt=__FUNKCJA_PARAMETRY|tekst=
{{P|Przykład definicji:}}
<syntaxhighlight lang="lua">
function __FUNKCJA_PARAMETRY(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_element_juz_istnieje)
...
end;
end;
</syntaxhighlight>
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
local __FUNKCJA=__FUNKCJA_PARAMETRY(obiekt);
...
__FUNKCJA(tablica,klucz,wartosc_tablicy,false);
</syntaxhighlight>
}}
}}
Definicje funkcji: {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-UstalanieNazwyWywołania}} i {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-UstalanieNazwyWywołania}}, które są potrzebne do konstrukcji wywołania funkcji: {{LinkPatrz|UstalanieNazwyWywołania}}, uzyskiwania nazwy szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} i {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}}, definicje tych funkcji:
* {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Tablica danych bazy kodów zakodowanego tekstu.
| 5 = {{Code|dokumentacja}} | _5 = Jak w: {{LinkPatrz|dokumentacja}}.
| 6 = {{Code|czy_nie_opis}} {{Patrz|czy_nie_opis}} | _6 = Czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu_caly}} {{Patrz|tekst_artykulu_caly}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} {{LinkPatrz|__FUNKCJA3-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu,nazwa_modulu_szablonowa)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_modulu}} | _1 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 2 = {{Code|nazwa_modulu_szablonowa}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory,czy_z_kluczem]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} | _1 = Nazwa szablonu do rozwinięcia.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}}. | _5 = Tabela parametrów potrzebna do szybszego działania '''{{ld|StronicowyParser|Stronicowego parsera}}'''.
| 6 = Gdy tą funkcją jest: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}}, te zmienne bezpośrednio w: {{Code|__FUNKCJA4}}, nie występują, ale za to występują w tej podanej szczególnej przykładowej funkcji, tzn. argumenty: | komórka6 = tak
| 7 = {{Code|czy_uwzgledniac_modyfikatory}} {{Patrz|czy_uwzgledniac_modyfikatory}} | _7 = Czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}}.
| 8 = {{Code|czy_z_kluczem}} {{Patrz|czy_z_kluczem}} | _8 = Czy klucze, o wzorze: {{Code|<nowiki>^klucz$</nowiki>}}, lub {{Code|<nowiki>^klucz[1-9]%d*$</nowiki>}}.
}}
Jeżeli w funkcji {{LinkPatrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}} nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}} w przeciwnym wypadku zwracane jest nazwa szablonu i wartość {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} | _1 = Jak w: {{LinkPatrz|nazwa_szablonu}}. To jest nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}.
| 2 = {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} | _2 = Tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, to jest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}}, w przypadku: {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}.
| 3 = {{Code|nazwa_modulu}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 4 = {{Code|nazwa_modulu_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{LzLua|frame:preprocess}}, w korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, z której korzysta {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}, jeżeli korzystanej tutaj funkcja zrzuciła niepowodzenie, to pierwsza wartość zwrótcone to: {{Code|nil}}, druga: {{Code|false}}, w przeciwnym wypadku zwraca nazwę rozwiniętego szablonu i drugą wartość zrzuconą: {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice:
; Przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy{{dk}} {{nobold|{{Code|czy_niezakodowana {{=}} true}}}}, i {{nobold|{{Code|czy_nie_opis {{=}} true}}}}, według funkcji{{dk}}
* {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów,
; W przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja:
* {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami.
: Te funkcje są wywoływane wewnątrz funkcji: {{LinkŚródtytuł|p.SpreparowanyWikikodStrony}}. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana. Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Strona, a jednocześnie uchwyt do bazy danych kodów zakodowanego tekstu, o nazwie modułu do rozwinięcia i zakodowania.
| 3 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _3 = Nazwa strony szablonowa, w postaci wywołaniowej szablonów.
| 4 = {{Code|inkludowana}} {{LinkPatrz|inkludowana}} | _4 = Zmienna, czy strona ma być interpretowana jako inkludowana.
| 5 = Zmienne funkcyjne: | nagłówek5 = tak
| 6 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _6 = Funkcja generująca zawartość, może być zmodyfikowana, na podstawie pełnej nazwy strony, używana w funkcji: jest to {{Code|__FUNKCJA3}} w: {{Code|{{sr|#FunkcjaIterajacaRozwijanegoSzablonu|p=Szablonowe}}}} {{Patrz|__FUNKCJA-FunkcjaIterajacaRozwijanegoSzablonu}}.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if((czy_niekodowane)and(__FUNKCJA))then
local wynik=__FUNKCJA(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow);
if(wynik)then
return wynik;
end;
end;
</syntaxhighlight>
| 7 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _7 = Funkcja do generowania zawartości, może być zmodyfikowana, według podanej jej wartości, używana w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|FUNKCJA2-KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, w postaci zmodyfikowanej, czyli w wersji: {{Code|__FUNKCJA2}},
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
szablon=__FUNKCJA2 and __FUNKCJA2(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or szablon;
</syntaxhighlight>
| 8 = Inne zmienne funkcyjne: | nagłówek8 = tak
| 9 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _9 = Inne operacje wykonywane na pobranym tekście.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_ANALIZA_SPISOWA}}
| 10 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _10 = Funkcja użyta do generowania tablicy bazy kodów.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY}}
}}
Funkcje {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}}, zostały już opisane w tym module, więc wystarczy opisać inne.
{{Hr}}
* Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|pelna_nazwa_szablonu}} | _1 = Pełna nazwa szablonu.
| 2 = {{Code|tabela_parametrow_szablonu}} | _2 = Tabela parametrów wywołania szablonu do rozwinięcia.
| 3 = {{Code|tabela_modyfikatorow}} | _3 = Tabela modyfikatorów danego wywołania szablonowego.
}}
{{Hr}}
* Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Zawartość elementu wikikodu według {{Code|{{m|Szablonowe}}}}.
| 2 = {{Code|obiekt}} {{Patrz|obiekt}} | _2 = Nazwa obiektu szablonowego, jak: {{Code|SZABLON}}.
| 3 = {{Code|kod}} {{Patrz|kod}} | _3 = Numer obiektu, typu: {{Code|obiekt}} {{LinkPatrz|obiekt}}.
| 4 = {{Code|tekst}} | _4 = Tekst całego artykułu.
| 5 = {{Code|numer_szablonu}} {{Patrz|numer_szablonu}} | _5 = Tabela numerów dla różnych obiektów w jednej tabeli.
| 6 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _6 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 7 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _7 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
== {{Śródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}{{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}} ==
Funkcja służy do ściągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}.
Posiada własną walidacje nazwy stron, czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe według ściśle określonych sposobów.
Funkcja odpowiednio operuje na znacznikach wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''', tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
{{OpisParametrów
| 1 = Zmienne obiektowe: | nagłówek1 = tak
| 2 = {{Code|self}} {{Patrz|self}} | _2 = Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 3 = Zwykłe zmienne: | nagłówek3 = tak
| 4 = {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} | _4 = Nazwa strony, której liczymy zawartość, używając funkcji: {{LzLua|mw.title.makeTitle}}, strona może nie istnieć.
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local nazwa_strony_z_kodami_html=html_modul["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](nazwa_strony);
...
local czy_istnieje;
local techniczne_modul=require("Module:Techniczne");
uchwyt_strony,tekst_artykulu,czy_istnieje = techniczne_modul.CzyStronaIstniejeJejParametry(nazwa_strony_z_kodami_html,true);
</syntaxhighlight>
| 5 = {{Code|nazwa_strony2}} {{Patrz|nazwa_strony2}} | _5 = Uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej, przeciwnie brana jest nazwa: {{Code|nazwa_strony}}, jako uchwyt.
<syntaxhighlight lang="lua">
if(not szablon_nie_opis)then
if(not dokumentacja)then
local szablonowe_modul=require("Module:Szablonowe");
tekst_artykulu=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst_artykulu,nazwa_strony2 or nazwa_strony,nil,nil,nil,nil,nil,nil,nil,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
| 6 = {{Code|czy_noinclude}} {{Patrz|czy_noinclude}} | _6 = Jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka.
| 7 = Zmienne tablicowe: | nagłówek7 = tak
| 8 = {{Code|szablony_magiczne}} {{Patrz|szablony_magiczne}} | _8 = Tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej.
| 9 = Inne zmienne: | nagłówek9 = tak
| 10 = {{Code|dokumentacja}} {{Patrz|dokumentacja}} | _10 = Określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}}.
| 11 = {{Code|czy_szablon}} {{Patrz|czy_szablon}} | _11 = Gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją.
| 12 = {{Code|nazwa_modulu_szablonu_opisu}} {{Patrz|nazwa_modulu_szablonu_opisu}} | _12 = Zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami '''{{lpg|HTML}}''' na znaki.
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
nazwa_strony_bez_kodow_html=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](nazwa_strony);
...
local tabela_nazw={};
if(szablony_magiczne)then
local nazwy_modul=require("Module:Nazwy");
szablony_magiczne["{{ROOTPAGENAME}}"]=szablony_magiczne["{{ROOTPAGENAME}}"] or nazwy_modul["NAZWAKORZENIASTRONY"](nazwa_modulu_szablonu_opisu or nazwa_strony_bez_kodow_html,tabela_nazw);
</syntaxhighlight>
| 13 = {{Code|szablon_nie_opis}} {{Patrz|szablon_nie_opis}} | _13 = Zmienna wskazująca, czy {{Code|nazwa strony}} {{LinkPatrz|nazwa strony}} wskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowany, używany wraz ze zmienną: {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}}.
| 14 = Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chcieliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:| nagłówek14 = tak
| 15 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} | _15 = Operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_ANALIZA_SPISOWA}}
| 16 = {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} | _16 = Funkcja operująca na komentarzach, przeciwnie jest używana funkcja: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}, gdzie:
<syntaxhighlight lang="lua">
local techniczne_modul=require("Module:Techniczne");
tekst_artykulu=__FUNKCJA_KOMENTARZE
and (__FUNKCJA_KOMENTARZE(tekst_artykulu))
or techniczne_modul.UsuwanieKomentarzowe(tekst_artykulu);
</syntaxhighlight>
| 17 = {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} | _17 = Funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów.
{{P|Przykład wywołania;}}
<syntaxhighlight lang="lua">
tekst_artykulu=__FUNKCJA_KONTROLNE and __FUNKCJA_KONTROLNE(tekst_artykulu) or tekst_artykulu;
</syntaxhighlight>
| 18 = {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} | _18 = Funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_analizy_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY}}
}}
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}}, operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} | _1 = Tekst do analizy, jak w funkcji nadrzędnej.
| 2 = {{Code|nazwa_modulu_szablonu_opisu}} {{LinkPatrz|nazwa_modulu_szablonu_opisu}} | _2 = Nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}.
| 3 = {{Code|nazwa_strony_bez_kodow_html}} {{Patrz|nazwa_strony_bez_kodow_html}} | _3 = Jest to nazwa strony: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, tylko z kodami '''{{lpg|HTML}}''' zamienionymi na ich odpowiedniki znakowe.
| 4 = {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}} | _4 = Tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej.
| 5 = {{Code|tabela_nazw}} {{Patrz|tabela_nazw}} | _5 = Tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, wewnątrz tej funkcji nadrzędnej.
}}
{{Hr}}
Funkcja: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}, ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę: {{Code|tablica}}, w funkcji zwracanej przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod metatabelki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} {{Patrz|__metatablica}}, to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Ten rozdział zawiera kolejność wywołań poszczególnych kroków w funkcji.
==== Poprawność pewnych nazw ====
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]|p=Html}}}}, która z: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}}.
==== Parametry uzyskanej strony ====
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}} {{Patrz|uchwyt strony}}, {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} i {{Code|czy_istnieje}} {{Patrz|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów.
==== Składniki preprocesora kodu mechanizmu: {{nobold|{{NS|l=tak|k=mw|w=tak}}}} ====
* Gdy {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli: {{Code|czy_noinclude}} {{LinkPatrz|czy_noinclude}}, przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie. Ze strony są usuwane pozostałości ze znaczników wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''' i znaczników jak {{Tag|templatedata}},
* Przeciwna wypadek: wtedy: {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}}, jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione.
==== Komentarze ====
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}.
===== Usuwanie pseudoszablonówi niektporych instrukcji warunkowych =====
* Ustawiane są zmienne w: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}} {{LinkPatrz|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}} {{Patrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}, by usunąc różne instrukcje warunkowe.
==== Specjalne elementy zmieniające wikikod ====
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
==== Kodowanie bazy danych kodów {{nobold|{{Code|{{m|Szablonowe}}}}}} ====
* Jeśli: {{Code|szablon_nie_opis}} {{LinkPatrz|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
7274a543zyj3m10euefti0hp5x606hy
558316
558315
2026-10-02T14:56:38Z
Persino
2851
/* Komentarze */
558316
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|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.SpreparowanyWikikodStrony}}{{Code|p.SpreparowanyWikikodStrony}} ==
Funkcja ściągąjąca opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Funkcja w opisach szablonów, a w niej instrukcje warunkowe podczas kodowania są rozwijane przy pomocy funkcji: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}}, a normalnie, gdy wewnątrz instrukcji warunkowych nie ma klamerek w funkcji, w składowej funkcji, tzn.: {{LinkPatrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja korzysta bezpośrednio z funkcji: {{LinkŚródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana. Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:SpreparowanyWikikodStrony(nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 2 = {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} | _2 = Nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw.
| 3 = {{Code|nazwa_modulu_szablonowa}} {{Patrz|nazwa_modulu_szablonowa}} | _3 = Nazwa modułu w wersji szablonowej, w wersji wywołaniowej.
| 4 = {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} | _4 = Przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony.
| 5 = {{Code|inkludowana}} {{Patrz|inkludowana}} | _5 = Przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej.
| 6 = Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem: | nagłówek6 = tak
| 7 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-SpreparowanyWikikodStrony}} | _7 = Funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, po kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
tekst=__FUNKCJA(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,dokumentacja,czy_niezakodowana)
</syntaxhighlight>
| 8 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-SpreparowanyWikikodStrony}} | _8 = Jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, odkodować od postaci zakodowanej, czyli do formy dokumentacji.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul)))then
</syntaxhighlight>
| 9 = {{Code|__FUNKCJA3}} {{Patrz|__FUNKCJA3-SpreparowanyWikikodStrony}} | _9 = Funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}}.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu,nazwa_modulu_szablonowa) or nil;
</syntaxhighlight>
| 10 = Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]|p=Szablonowe}}}} {{Patrz|UstalanieNazwyWywołania}}: | nagłówek10 = tak
| 11 = {{Code|__FUNKCJA4}} {{Patrz|__FUNKCJA4-SpreparowanyWikikodStrony}} | _11 = Funkcja, np. dekodująca nazwę szablonu.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if(__FUNKCJA4)then
nazwa_szablonu,powodzenie__FUNKCJA4(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
| 12 = {{Code|__FUNKCJA5}} {{Patrz|__FUNKCJA5-SpreparowanyWikikodStrony}} | _12 = Funkcja, np. rozwijająca nazwę szablonu.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
nazwa_szablonu=__FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
</syntaxhighlight>
| 13 = Inne: | nagłówek13 = tak
| 14 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _14 = Funkcja do modyfikacji tekstu pobranego ze strony.
{{Śródtekst|uchwyt=__FUNKCJA_ANALIZA_SPISOWA|tekst=
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
tekst_artykulu=__FUNKCJA_ANALIZA_SPISOWA and __FUNKCJA_ANALIZA_SPISOWA(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw) or tekst_artykulu;
</syntaxhighlight>
}}
| 15 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _15 = Funkcje do generowania tablicy bazy kodów.
{{Śródtekst|uchwyt=__FUNKCJA_PARAMETRY|tekst=
{{P|Przykład definicji:}}
<syntaxhighlight lang="lua">
function __FUNKCJA_PARAMETRY(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_element_juz_istnieje)
...
end;
end;
</syntaxhighlight>
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
local __FUNKCJA=__FUNKCJA_PARAMETRY(obiekt);
...
__FUNKCJA(tablica,klucz,wartosc_tablicy,false);
</syntaxhighlight>
}}
}}
Definicje funkcji: {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-UstalanieNazwyWywołania}} i {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-UstalanieNazwyWywołania}}, które są potrzebne do konstrukcji wywołania funkcji: {{LinkPatrz|UstalanieNazwyWywołania}}, uzyskiwania nazwy szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} i {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}}, definicje tych funkcji:
* {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Tablica danych bazy kodów zakodowanego tekstu.
| 5 = {{Code|dokumentacja}} | _5 = Jak w: {{LinkPatrz|dokumentacja}}.
| 6 = {{Code|czy_nie_opis}} {{Patrz|czy_nie_opis}} | _6 = Czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu_caly}} {{Patrz|tekst_artykulu_caly}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} {{LinkPatrz|__FUNKCJA3-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu,nazwa_modulu_szablonowa)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_modulu}} | _1 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 2 = {{Code|nazwa_modulu_szablonowa}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory,czy_z_kluczem]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} | _1 = Nazwa szablonu do rozwinięcia.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}}. | _5 = Tabela parametrów potrzebna do szybszego działania '''{{ld|StronicowyParser|Stronicowego parsera}}'''.
| 6 = Gdy tą funkcją jest: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}}, te zmienne bezpośrednio w: {{Code|__FUNKCJA4}}, nie występują, ale za to występują w tej podanej szczególnej przykładowej funkcji, tzn. argumenty: | komórka6 = tak
| 7 = {{Code|czy_uwzgledniac_modyfikatory}} {{Patrz|czy_uwzgledniac_modyfikatory}} | _7 = Czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}}.
| 8 = {{Code|czy_z_kluczem}} {{Patrz|czy_z_kluczem}} | _8 = Czy klucze, o wzorze: {{Code|<nowiki>^klucz$</nowiki>}}, lub {{Code|<nowiki>^klucz[1-9]%d*$</nowiki>}}.
}}
Jeżeli w funkcji {{LinkPatrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}} nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}} w przeciwnym wypadku zwracane jest nazwa szablonu i wartość {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} | _1 = Jak w: {{LinkPatrz|nazwa_szablonu}}. To jest nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}.
| 2 = {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} | _2 = Tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, to jest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}}, w przypadku: {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}.
| 3 = {{Code|nazwa_modulu}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 4 = {{Code|nazwa_modulu_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{LzLua|frame:preprocess}}, w korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, z której korzysta {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}, jeżeli korzystanej tutaj funkcja zrzuciła niepowodzenie, to pierwsza wartość zwrótcone to: {{Code|nil}}, druga: {{Code|false}}, w przeciwnym wypadku zwraca nazwę rozwiniętego szablonu i drugą wartość zrzuconą: {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice:
; Przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy{{dk}} {{nobold|{{Code|czy_niezakodowana {{=}} true}}}}, i {{nobold|{{Code|czy_nie_opis {{=}} true}}}}, według funkcji{{dk}}
* {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów,
; W przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja:
* {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami.
: Te funkcje są wywoływane wewnątrz funkcji: {{LinkŚródtytuł|p.SpreparowanyWikikodStrony}}. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana. Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Strona, a jednocześnie uchwyt do bazy danych kodów zakodowanego tekstu, o nazwie modułu do rozwinięcia i zakodowania.
| 3 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _3 = Nazwa strony szablonowa, w postaci wywołaniowej szablonów.
| 4 = {{Code|inkludowana}} {{LinkPatrz|inkludowana}} | _4 = Zmienna, czy strona ma być interpretowana jako inkludowana.
| 5 = Zmienne funkcyjne: | nagłówek5 = tak
| 6 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _6 = Funkcja generująca zawartość, może być zmodyfikowana, na podstawie pełnej nazwy strony, używana w funkcji: jest to {{Code|__FUNKCJA3}} w: {{Code|{{sr|#FunkcjaIterajacaRozwijanegoSzablonu|p=Szablonowe}}}} {{Patrz|__FUNKCJA-FunkcjaIterajacaRozwijanegoSzablonu}}.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if((czy_niekodowane)and(__FUNKCJA))then
local wynik=__FUNKCJA(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow);
if(wynik)then
return wynik;
end;
end;
</syntaxhighlight>
| 7 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _7 = Funkcja do generowania zawartości, może być zmodyfikowana, według podanej jej wartości, używana w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|FUNKCJA2-KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, w postaci zmodyfikowanej, czyli w wersji: {{Code|__FUNKCJA2}},
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
szablon=__FUNKCJA2 and __FUNKCJA2(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or szablon;
</syntaxhighlight>
| 8 = Inne zmienne funkcyjne: | nagłówek8 = tak
| 9 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _9 = Inne operacje wykonywane na pobranym tekście.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_ANALIZA_SPISOWA}}
| 10 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _10 = Funkcja użyta do generowania tablicy bazy kodów.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY}}
}}
Funkcje {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}}, zostały już opisane w tym module, więc wystarczy opisać inne.
{{Hr}}
* Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|pelna_nazwa_szablonu}} | _1 = Pełna nazwa szablonu.
| 2 = {{Code|tabela_parametrow_szablonu}} | _2 = Tabela parametrów wywołania szablonu do rozwinięcia.
| 3 = {{Code|tabela_modyfikatorow}} | _3 = Tabela modyfikatorów danego wywołania szablonowego.
}}
{{Hr}}
* Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Zawartość elementu wikikodu według {{Code|{{m|Szablonowe}}}}.
| 2 = {{Code|obiekt}} {{Patrz|obiekt}} | _2 = Nazwa obiektu szablonowego, jak: {{Code|SZABLON}}.
| 3 = {{Code|kod}} {{Patrz|kod}} | _3 = Numer obiektu, typu: {{Code|obiekt}} {{LinkPatrz|obiekt}}.
| 4 = {{Code|tekst}} | _4 = Tekst całego artykułu.
| 5 = {{Code|numer_szablonu}} {{Patrz|numer_szablonu}} | _5 = Tabela numerów dla różnych obiektów w jednej tabeli.
| 6 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _6 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 7 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _7 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
== {{Śródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}{{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}} ==
Funkcja służy do ściągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}.
Posiada własną walidacje nazwy stron, czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe według ściśle określonych sposobów.
Funkcja odpowiednio operuje na znacznikach wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''', tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
{{OpisParametrów
| 1 = Zmienne obiektowe: | nagłówek1 = tak
| 2 = {{Code|self}} {{Patrz|self}} | _2 = Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 3 = Zwykłe zmienne: | nagłówek3 = tak
| 4 = {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} | _4 = Nazwa strony, której liczymy zawartość, używając funkcji: {{LzLua|mw.title.makeTitle}}, strona może nie istnieć.
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local nazwa_strony_z_kodami_html=html_modul["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](nazwa_strony);
...
local czy_istnieje;
local techniczne_modul=require("Module:Techniczne");
uchwyt_strony,tekst_artykulu,czy_istnieje = techniczne_modul.CzyStronaIstniejeJejParametry(nazwa_strony_z_kodami_html,true);
</syntaxhighlight>
| 5 = {{Code|nazwa_strony2}} {{Patrz|nazwa_strony2}} | _5 = Uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej, przeciwnie brana jest nazwa: {{Code|nazwa_strony}}, jako uchwyt.
<syntaxhighlight lang="lua">
if(not szablon_nie_opis)then
if(not dokumentacja)then
local szablonowe_modul=require("Module:Szablonowe");
tekst_artykulu=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst_artykulu,nazwa_strony2 or nazwa_strony,nil,nil,nil,nil,nil,nil,nil,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
| 6 = {{Code|czy_noinclude}} {{Patrz|czy_noinclude}} | _6 = Jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka.
| 7 = Zmienne tablicowe: | nagłówek7 = tak
| 8 = {{Code|szablony_magiczne}} {{Patrz|szablony_magiczne}} | _8 = Tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej.
| 9 = Inne zmienne: | nagłówek9 = tak
| 10 = {{Code|dokumentacja}} {{Patrz|dokumentacja}} | _10 = Określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}}.
| 11 = {{Code|czy_szablon}} {{Patrz|czy_szablon}} | _11 = Gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją.
| 12 = {{Code|nazwa_modulu_szablonu_opisu}} {{Patrz|nazwa_modulu_szablonu_opisu}} | _12 = Zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami '''{{lpg|HTML}}''' na znaki.
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
nazwa_strony_bez_kodow_html=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](nazwa_strony);
...
local tabela_nazw={};
if(szablony_magiczne)then
local nazwy_modul=require("Module:Nazwy");
szablony_magiczne["{{ROOTPAGENAME}}"]=szablony_magiczne["{{ROOTPAGENAME}}"] or nazwy_modul["NAZWAKORZENIASTRONY"](nazwa_modulu_szablonu_opisu or nazwa_strony_bez_kodow_html,tabela_nazw);
</syntaxhighlight>
| 13 = {{Code|szablon_nie_opis}} {{Patrz|szablon_nie_opis}} | _13 = Zmienna wskazująca, czy {{Code|nazwa strony}} {{LinkPatrz|nazwa strony}} wskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowany, używany wraz ze zmienną: {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}}.
| 14 = Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chcieliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:| nagłówek14 = tak
| 15 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} | _15 = Operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_ANALIZA_SPISOWA}}
| 16 = {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} | _16 = Funkcja operująca na komentarzach, przeciwnie jest używana funkcja: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}, gdzie:
<syntaxhighlight lang="lua">
local techniczne_modul=require("Module:Techniczne");
tekst_artykulu=__FUNKCJA_KOMENTARZE
and (__FUNKCJA_KOMENTARZE(tekst_artykulu))
or techniczne_modul.UsuwanieKomentarzowe(tekst_artykulu);
</syntaxhighlight>
| 17 = {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} | _17 = Funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów.
{{P|Przykład wywołania;}}
<syntaxhighlight lang="lua">
tekst_artykulu=__FUNKCJA_KONTROLNE and __FUNKCJA_KONTROLNE(tekst_artykulu) or tekst_artykulu;
</syntaxhighlight>
| 18 = {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} | _18 = Funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_analizy_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY}}
}}
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}}, operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} | _1 = Tekst do analizy, jak w funkcji nadrzędnej.
| 2 = {{Code|nazwa_modulu_szablonu_opisu}} {{LinkPatrz|nazwa_modulu_szablonu_opisu}} | _2 = Nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}.
| 3 = {{Code|nazwa_strony_bez_kodow_html}} {{Patrz|nazwa_strony_bez_kodow_html}} | _3 = Jest to nazwa strony: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, tylko z kodami '''{{lpg|HTML}}''' zamienionymi na ich odpowiedniki znakowe.
| 4 = {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}} | _4 = Tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej.
| 5 = {{Code|tabela_nazw}} {{Patrz|tabela_nazw}} | _5 = Tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, wewnątrz tej funkcji nadrzędnej.
}}
{{Hr}}
Funkcja: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}, ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę: {{Code|tablica}}, w funkcji zwracanej przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod metatabelki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} {{Patrz|__metatablica}}, to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Ten rozdział zawiera kolejność wywołań poszczególnych kroków w funkcji.
==== Poprawność pewnych nazw ====
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]|p=Html}}}}, która z: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}}.
==== Parametry uzyskanej strony ====
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}} {{Patrz|uchwyt strony}}, {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} i {{Code|czy_istnieje}} {{Patrz|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów.
==== Składniki preprocesora kodu mechanizmu: {{nobold|{{NS|l=tak|k=mw|w=tak}}}} ====
* Gdy {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli: {{Code|czy_noinclude}} {{LinkPatrz|czy_noinclude}}, przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie. Ze strony są usuwane pozostałości ze znaczników wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''' i znaczników jak {{Tag|templatedata}},
* Przeciwna wypadek: wtedy: {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}}, jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione.
==== Komentarze ====
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, a jeżeli one nie istnieją, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}.
===== Usuwanie pseudoszablonówi niektporych instrukcji warunkowych =====
* Ustawiane są zmienne w: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}} {{LinkPatrz|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}} {{Patrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}, by usunąć różne instrukcje warunkowe.
==== Specjalne elementy zmieniające wikikod ====
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
==== Kodowanie bazy danych kodów {{nobold|{{Code|{{m|Szablonowe}}}}}} ====
* Jeśli: {{Code|szablon_nie_opis}} {{LinkPatrz|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
f5lwoeq8bm422a2gu95ksa1zzpvyy48
558317
558316
2026-10-02T14:57:36Z
Persino
2851
/* Specjalne elementy zmieniające wikikod */
558317
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|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.SpreparowanyWikikodStrony}}{{Code|p.SpreparowanyWikikodStrony}} ==
Funkcja ściągąjąca opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Funkcja w opisach szablonów, a w niej instrukcje warunkowe podczas kodowania są rozwijane przy pomocy funkcji: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}}, a normalnie, gdy wewnątrz instrukcji warunkowych nie ma klamerek w funkcji, w składowej funkcji, tzn.: {{LinkPatrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja korzysta bezpośrednio z funkcji: {{LinkŚródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana. Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:SpreparowanyWikikodStrony(nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 2 = {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} | _2 = Nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw.
| 3 = {{Code|nazwa_modulu_szablonowa}} {{Patrz|nazwa_modulu_szablonowa}} | _3 = Nazwa modułu w wersji szablonowej, w wersji wywołaniowej.
| 4 = {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} | _4 = Przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony.
| 5 = {{Code|inkludowana}} {{Patrz|inkludowana}} | _5 = Przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej.
| 6 = Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem: | nagłówek6 = tak
| 7 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-SpreparowanyWikikodStrony}} | _7 = Funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, po kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
tekst=__FUNKCJA(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,dokumentacja,czy_niezakodowana)
</syntaxhighlight>
| 8 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-SpreparowanyWikikodStrony}} | _8 = Jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, odkodować od postaci zakodowanej, czyli do formy dokumentacji.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul)))then
</syntaxhighlight>
| 9 = {{Code|__FUNKCJA3}} {{Patrz|__FUNKCJA3-SpreparowanyWikikodStrony}} | _9 = Funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}}.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu,nazwa_modulu_szablonowa) or nil;
</syntaxhighlight>
| 10 = Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]|p=Szablonowe}}}} {{Patrz|UstalanieNazwyWywołania}}: | nagłówek10 = tak
| 11 = {{Code|__FUNKCJA4}} {{Patrz|__FUNKCJA4-SpreparowanyWikikodStrony}} | _11 = Funkcja, np. dekodująca nazwę szablonu.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if(__FUNKCJA4)then
nazwa_szablonu,powodzenie__FUNKCJA4(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
| 12 = {{Code|__FUNKCJA5}} {{Patrz|__FUNKCJA5-SpreparowanyWikikodStrony}} | _12 = Funkcja, np. rozwijająca nazwę szablonu.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
nazwa_szablonu=__FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
</syntaxhighlight>
| 13 = Inne: | nagłówek13 = tak
| 14 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _14 = Funkcja do modyfikacji tekstu pobranego ze strony.
{{Śródtekst|uchwyt=__FUNKCJA_ANALIZA_SPISOWA|tekst=
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
tekst_artykulu=__FUNKCJA_ANALIZA_SPISOWA and __FUNKCJA_ANALIZA_SPISOWA(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw) or tekst_artykulu;
</syntaxhighlight>
}}
| 15 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _15 = Funkcje do generowania tablicy bazy kodów.
{{Śródtekst|uchwyt=__FUNKCJA_PARAMETRY|tekst=
{{P|Przykład definicji:}}
<syntaxhighlight lang="lua">
function __FUNKCJA_PARAMETRY(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_element_juz_istnieje)
...
end;
end;
</syntaxhighlight>
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
local __FUNKCJA=__FUNKCJA_PARAMETRY(obiekt);
...
__FUNKCJA(tablica,klucz,wartosc_tablicy,false);
</syntaxhighlight>
}}
}}
Definicje funkcji: {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-UstalanieNazwyWywołania}} i {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-UstalanieNazwyWywołania}}, które są potrzebne do konstrukcji wywołania funkcji: {{LinkPatrz|UstalanieNazwyWywołania}}, uzyskiwania nazwy szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} i {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}}, definicje tych funkcji:
* {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Tablica danych bazy kodów zakodowanego tekstu.
| 5 = {{Code|dokumentacja}} | _5 = Jak w: {{LinkPatrz|dokumentacja}}.
| 6 = {{Code|czy_nie_opis}} {{Patrz|czy_nie_opis}} | _6 = Czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu_caly}} {{Patrz|tekst_artykulu_caly}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} {{LinkPatrz|__FUNKCJA3-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu,nazwa_modulu_szablonowa)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_modulu}} | _1 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 2 = {{Code|nazwa_modulu_szablonowa}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory,czy_z_kluczem]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} | _1 = Nazwa szablonu do rozwinięcia.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}}. | _5 = Tabela parametrów potrzebna do szybszego działania '''{{ld|StronicowyParser|Stronicowego parsera}}'''.
| 6 = Gdy tą funkcją jest: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}}, te zmienne bezpośrednio w: {{Code|__FUNKCJA4}}, nie występują, ale za to występują w tej podanej szczególnej przykładowej funkcji, tzn. argumenty: | komórka6 = tak
| 7 = {{Code|czy_uwzgledniac_modyfikatory}} {{Patrz|czy_uwzgledniac_modyfikatory}} | _7 = Czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}}.
| 8 = {{Code|czy_z_kluczem}} {{Patrz|czy_z_kluczem}} | _8 = Czy klucze, o wzorze: {{Code|<nowiki>^klucz$</nowiki>}}, lub {{Code|<nowiki>^klucz[1-9]%d*$</nowiki>}}.
}}
Jeżeli w funkcji {{LinkPatrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}} nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}} w przeciwnym wypadku zwracane jest nazwa szablonu i wartość {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} | _1 = Jak w: {{LinkPatrz|nazwa_szablonu}}. To jest nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}.
| 2 = {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} | _2 = Tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, to jest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}}, w przypadku: {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}.
| 3 = {{Code|nazwa_modulu}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 4 = {{Code|nazwa_modulu_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{LzLua|frame:preprocess}}, w korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, z której korzysta {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}, jeżeli korzystanej tutaj funkcja zrzuciła niepowodzenie, to pierwsza wartość zwrótcone to: {{Code|nil}}, druga: {{Code|false}}, w przeciwnym wypadku zwraca nazwę rozwiniętego szablonu i drugą wartość zrzuconą: {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice:
; Przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy{{dk}} {{nobold|{{Code|czy_niezakodowana {{=}} true}}}}, i {{nobold|{{Code|czy_nie_opis {{=}} true}}}}, według funkcji{{dk}}
* {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów,
; W przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja:
* {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami.
: Te funkcje są wywoływane wewnątrz funkcji: {{LinkŚródtytuł|p.SpreparowanyWikikodStrony}}. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana. Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Strona, a jednocześnie uchwyt do bazy danych kodów zakodowanego tekstu, o nazwie modułu do rozwinięcia i zakodowania.
| 3 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _3 = Nazwa strony szablonowa, w postaci wywołaniowej szablonów.
| 4 = {{Code|inkludowana}} {{LinkPatrz|inkludowana}} | _4 = Zmienna, czy strona ma być interpretowana jako inkludowana.
| 5 = Zmienne funkcyjne: | nagłówek5 = tak
| 6 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _6 = Funkcja generująca zawartość, może być zmodyfikowana, na podstawie pełnej nazwy strony, używana w funkcji: jest to {{Code|__FUNKCJA3}} w: {{Code|{{sr|#FunkcjaIterajacaRozwijanegoSzablonu|p=Szablonowe}}}} {{Patrz|__FUNKCJA-FunkcjaIterajacaRozwijanegoSzablonu}}.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if((czy_niekodowane)and(__FUNKCJA))then
local wynik=__FUNKCJA(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow);
if(wynik)then
return wynik;
end;
end;
</syntaxhighlight>
| 7 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _7 = Funkcja do generowania zawartości, może być zmodyfikowana, według podanej jej wartości, używana w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|FUNKCJA2-KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, w postaci zmodyfikowanej, czyli w wersji: {{Code|__FUNKCJA2}},
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
szablon=__FUNKCJA2 and __FUNKCJA2(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or szablon;
</syntaxhighlight>
| 8 = Inne zmienne funkcyjne: | nagłówek8 = tak
| 9 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _9 = Inne operacje wykonywane na pobranym tekście.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_ANALIZA_SPISOWA}}
| 10 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _10 = Funkcja użyta do generowania tablicy bazy kodów.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY}}
}}
Funkcje {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}}, zostały już opisane w tym module, więc wystarczy opisać inne.
{{Hr}}
* Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|pelna_nazwa_szablonu}} | _1 = Pełna nazwa szablonu.
| 2 = {{Code|tabela_parametrow_szablonu}} | _2 = Tabela parametrów wywołania szablonu do rozwinięcia.
| 3 = {{Code|tabela_modyfikatorow}} | _3 = Tabela modyfikatorów danego wywołania szablonowego.
}}
{{Hr}}
* Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Zawartość elementu wikikodu według {{Code|{{m|Szablonowe}}}}.
| 2 = {{Code|obiekt}} {{Patrz|obiekt}} | _2 = Nazwa obiektu szablonowego, jak: {{Code|SZABLON}}.
| 3 = {{Code|kod}} {{Patrz|kod}} | _3 = Numer obiektu, typu: {{Code|obiekt}} {{LinkPatrz|obiekt}}.
| 4 = {{Code|tekst}} | _4 = Tekst całego artykułu.
| 5 = {{Code|numer_szablonu}} {{Patrz|numer_szablonu}} | _5 = Tabela numerów dla różnych obiektów w jednej tabeli.
| 6 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _6 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 7 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _7 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
== {{Śródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}{{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}} ==
Funkcja służy do ściągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}.
Posiada własną walidacje nazwy stron, czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe według ściśle określonych sposobów.
Funkcja odpowiednio operuje na znacznikach wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''', tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
{{OpisParametrów
| 1 = Zmienne obiektowe: | nagłówek1 = tak
| 2 = {{Code|self}} {{Patrz|self}} | _2 = Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 3 = Zwykłe zmienne: | nagłówek3 = tak
| 4 = {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} | _4 = Nazwa strony, której liczymy zawartość, używając funkcji: {{LzLua|mw.title.makeTitle}}, strona może nie istnieć.
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local nazwa_strony_z_kodami_html=html_modul["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](nazwa_strony);
...
local czy_istnieje;
local techniczne_modul=require("Module:Techniczne");
uchwyt_strony,tekst_artykulu,czy_istnieje = techniczne_modul.CzyStronaIstniejeJejParametry(nazwa_strony_z_kodami_html,true);
</syntaxhighlight>
| 5 = {{Code|nazwa_strony2}} {{Patrz|nazwa_strony2}} | _5 = Uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej, przeciwnie brana jest nazwa: {{Code|nazwa_strony}}, jako uchwyt.
<syntaxhighlight lang="lua">
if(not szablon_nie_opis)then
if(not dokumentacja)then
local szablonowe_modul=require("Module:Szablonowe");
tekst_artykulu=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst_artykulu,nazwa_strony2 or nazwa_strony,nil,nil,nil,nil,nil,nil,nil,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
| 6 = {{Code|czy_noinclude}} {{Patrz|czy_noinclude}} | _6 = Jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka.
| 7 = Zmienne tablicowe: | nagłówek7 = tak
| 8 = {{Code|szablony_magiczne}} {{Patrz|szablony_magiczne}} | _8 = Tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej.
| 9 = Inne zmienne: | nagłówek9 = tak
| 10 = {{Code|dokumentacja}} {{Patrz|dokumentacja}} | _10 = Określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}}.
| 11 = {{Code|czy_szablon}} {{Patrz|czy_szablon}} | _11 = Gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją.
| 12 = {{Code|nazwa_modulu_szablonu_opisu}} {{Patrz|nazwa_modulu_szablonu_opisu}} | _12 = Zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami '''{{lpg|HTML}}''' na znaki.
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
nazwa_strony_bez_kodow_html=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](nazwa_strony);
...
local tabela_nazw={};
if(szablony_magiczne)then
local nazwy_modul=require("Module:Nazwy");
szablony_magiczne["{{ROOTPAGENAME}}"]=szablony_magiczne["{{ROOTPAGENAME}}"] or nazwy_modul["NAZWAKORZENIASTRONY"](nazwa_modulu_szablonu_opisu or nazwa_strony_bez_kodow_html,tabela_nazw);
</syntaxhighlight>
| 13 = {{Code|szablon_nie_opis}} {{Patrz|szablon_nie_opis}} | _13 = Zmienna wskazująca, czy {{Code|nazwa strony}} {{LinkPatrz|nazwa strony}} wskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowany, używany wraz ze zmienną: {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}}.
| 14 = Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chcieliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:| nagłówek14 = tak
| 15 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} | _15 = Operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_ANALIZA_SPISOWA}}
| 16 = {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} | _16 = Funkcja operująca na komentarzach, przeciwnie jest używana funkcja: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}, gdzie:
<syntaxhighlight lang="lua">
local techniczne_modul=require("Module:Techniczne");
tekst_artykulu=__FUNKCJA_KOMENTARZE
and (__FUNKCJA_KOMENTARZE(tekst_artykulu))
or techniczne_modul.UsuwanieKomentarzowe(tekst_artykulu);
</syntaxhighlight>
| 17 = {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} | _17 = Funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów.
{{P|Przykład wywołania;}}
<syntaxhighlight lang="lua">
tekst_artykulu=__FUNKCJA_KONTROLNE and __FUNKCJA_KONTROLNE(tekst_artykulu) or tekst_artykulu;
</syntaxhighlight>
| 18 = {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} | _18 = Funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_analizy_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY}}
}}
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}}, operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} | _1 = Tekst do analizy, jak w funkcji nadrzędnej.
| 2 = {{Code|nazwa_modulu_szablonu_opisu}} {{LinkPatrz|nazwa_modulu_szablonu_opisu}} | _2 = Nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}.
| 3 = {{Code|nazwa_strony_bez_kodow_html}} {{Patrz|nazwa_strony_bez_kodow_html}} | _3 = Jest to nazwa strony: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, tylko z kodami '''{{lpg|HTML}}''' zamienionymi na ich odpowiedniki znakowe.
| 4 = {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}} | _4 = Tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej.
| 5 = {{Code|tabela_nazw}} {{Patrz|tabela_nazw}} | _5 = Tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, wewnątrz tej funkcji nadrzędnej.
}}
{{Hr}}
Funkcja: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}, ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę: {{Code|tablica}}, w funkcji zwracanej przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod metatabelki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} {{Patrz|__metatablica}}, to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Ten rozdział zawiera kolejność wywołań poszczególnych kroków w funkcji.
==== Poprawność pewnych nazw ====
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]|p=Html}}}}, która z: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}}.
==== Parametry uzyskanej strony ====
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}} {{Patrz|uchwyt strony}}, {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} i {{Code|czy_istnieje}} {{Patrz|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów.
==== Składniki preprocesora kodu mechanizmu: {{nobold|{{NS|l=tak|k=mw|w=tak}}}} ====
* Gdy {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli: {{Code|czy_noinclude}} {{LinkPatrz|czy_noinclude}}, przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie. Ze strony są usuwane pozostałości ze znaczników wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''' i znaczników jak {{Tag|templatedata}},
* Przeciwna wypadek: wtedy: {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}}, jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione.
==== Komentarze ====
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, a jeżeli one nie istnieją, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}.
===== Usuwanie pseudoszablonówi niektporych instrukcji warunkowych =====
* Ustawiane są zmienne w: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}} {{LinkPatrz|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}} {{Patrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}, by usunąć różne instrukcje warunkowe.
==== Specjalne elementy zmieniające wikikod ====
* Uruchamiana jest, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana jest, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
==== Kodowanie bazy danych kodów {{nobold|{{Code|{{m|Szablonowe}}}}}} ====
* Jeśli: {{Code|szablon_nie_opis}} {{LinkPatrz|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
0ys6q0vlg2r3jgywn42p7hfayeml66s
558318
558317
2026-10-02T14:59:14Z
Persino
2851
/* Składniki preprocesora kodu mechanizmu: {{nobold|{{NS|l=tak|k=mw|w=tak}}}} */
558318
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|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.SpreparowanyWikikodStrony}}{{Code|p.SpreparowanyWikikodStrony}} ==
Funkcja ściągąjąca opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Funkcja w opisach szablonów, a w niej instrukcje warunkowe podczas kodowania są rozwijane przy pomocy funkcji: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}}, a normalnie, gdy wewnątrz instrukcji warunkowych nie ma klamerek w funkcji, w składowej funkcji, tzn.: {{LinkPatrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja korzysta bezpośrednio z funkcji: {{LinkŚródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana. Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:SpreparowanyWikikodStrony(nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 2 = {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} | _2 = Nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw.
| 3 = {{Code|nazwa_modulu_szablonowa}} {{Patrz|nazwa_modulu_szablonowa}} | _3 = Nazwa modułu w wersji szablonowej, w wersji wywołaniowej.
| 4 = {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} | _4 = Przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony.
| 5 = {{Code|inkludowana}} {{Patrz|inkludowana}} | _5 = Przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej.
| 6 = Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem: | nagłówek6 = tak
| 7 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-SpreparowanyWikikodStrony}} | _7 = Funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, po kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
tekst=__FUNKCJA(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,dokumentacja,czy_niezakodowana)
</syntaxhighlight>
| 8 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-SpreparowanyWikikodStrony}} | _8 = Jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, odkodować od postaci zakodowanej, czyli do formy dokumentacji.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul)))then
</syntaxhighlight>
| 9 = {{Code|__FUNKCJA3}} {{Patrz|__FUNKCJA3-SpreparowanyWikikodStrony}} | _9 = Funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}}.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu,nazwa_modulu_szablonowa) or nil;
</syntaxhighlight>
| 10 = Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]|p=Szablonowe}}}} {{Patrz|UstalanieNazwyWywołania}}: | nagłówek10 = tak
| 11 = {{Code|__FUNKCJA4}} {{Patrz|__FUNKCJA4-SpreparowanyWikikodStrony}} | _11 = Funkcja, np. dekodująca nazwę szablonu.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if(__FUNKCJA4)then
nazwa_szablonu,powodzenie__FUNKCJA4(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
| 12 = {{Code|__FUNKCJA5}} {{Patrz|__FUNKCJA5-SpreparowanyWikikodStrony}} | _12 = Funkcja, np. rozwijająca nazwę szablonu.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
nazwa_szablonu=__FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
</syntaxhighlight>
| 13 = Inne: | nagłówek13 = tak
| 14 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _14 = Funkcja do modyfikacji tekstu pobranego ze strony.
{{Śródtekst|uchwyt=__FUNKCJA_ANALIZA_SPISOWA|tekst=
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
tekst_artykulu=__FUNKCJA_ANALIZA_SPISOWA and __FUNKCJA_ANALIZA_SPISOWA(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw) or tekst_artykulu;
</syntaxhighlight>
}}
| 15 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _15 = Funkcje do generowania tablicy bazy kodów.
{{Śródtekst|uchwyt=__FUNKCJA_PARAMETRY|tekst=
{{P|Przykład definicji:}}
<syntaxhighlight lang="lua">
function __FUNKCJA_PARAMETRY(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_element_juz_istnieje)
...
end;
end;
</syntaxhighlight>
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
local __FUNKCJA=__FUNKCJA_PARAMETRY(obiekt);
...
__FUNKCJA(tablica,klucz,wartosc_tablicy,false);
</syntaxhighlight>
}}
}}
Definicje funkcji: {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-UstalanieNazwyWywołania}} i {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-UstalanieNazwyWywołania}}, które są potrzebne do konstrukcji wywołania funkcji: {{LinkPatrz|UstalanieNazwyWywołania}}, uzyskiwania nazwy szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} i {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}}, definicje tych funkcji:
* {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Tablica danych bazy kodów zakodowanego tekstu.
| 5 = {{Code|dokumentacja}} | _5 = Jak w: {{LinkPatrz|dokumentacja}}.
| 6 = {{Code|czy_nie_opis}} {{Patrz|czy_nie_opis}} | _6 = Czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu_caly}} {{Patrz|tekst_artykulu_caly}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} {{LinkPatrz|__FUNKCJA3-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu,nazwa_modulu_szablonowa)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_modulu}} | _1 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 2 = {{Code|nazwa_modulu_szablonowa}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory,czy_z_kluczem]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} | _1 = Nazwa szablonu do rozwinięcia.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}}. | _5 = Tabela parametrów potrzebna do szybszego działania '''{{ld|StronicowyParser|Stronicowego parsera}}'''.
| 6 = Gdy tą funkcją jest: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}}, te zmienne bezpośrednio w: {{Code|__FUNKCJA4}}, nie występują, ale za to występują w tej podanej szczególnej przykładowej funkcji, tzn. argumenty: | komórka6 = tak
| 7 = {{Code|czy_uwzgledniac_modyfikatory}} {{Patrz|czy_uwzgledniac_modyfikatory}} | _7 = Czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}}.
| 8 = {{Code|czy_z_kluczem}} {{Patrz|czy_z_kluczem}} | _8 = Czy klucze, o wzorze: {{Code|<nowiki>^klucz$</nowiki>}}, lub {{Code|<nowiki>^klucz[1-9]%d*$</nowiki>}}.
}}
Jeżeli w funkcji {{LinkPatrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}} nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}} w przeciwnym wypadku zwracane jest nazwa szablonu i wartość {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} | _1 = Jak w: {{LinkPatrz|nazwa_szablonu}}. To jest nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}.
| 2 = {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} | _2 = Tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, to jest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}}, w przypadku: {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}.
| 3 = {{Code|nazwa_modulu}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 4 = {{Code|nazwa_modulu_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{LzLua|frame:preprocess}}, w korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, z której korzysta {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}, jeżeli korzystanej tutaj funkcja zrzuciła niepowodzenie, to pierwsza wartość zwrótcone to: {{Code|nil}}, druga: {{Code|false}}, w przeciwnym wypadku zwraca nazwę rozwiniętego szablonu i drugą wartość zrzuconą: {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice:
; Przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy{{dk}} {{nobold|{{Code|czy_niezakodowana {{=}} true}}}}, i {{nobold|{{Code|czy_nie_opis {{=}} true}}}}, według funkcji{{dk}}
* {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów,
; W przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja:
* {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami.
: Te funkcje są wywoływane wewnątrz funkcji: {{LinkŚródtytuł|p.SpreparowanyWikikodStrony}}. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana. Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Strona, a jednocześnie uchwyt do bazy danych kodów zakodowanego tekstu, o nazwie modułu do rozwinięcia i zakodowania.
| 3 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _3 = Nazwa strony szablonowa, w postaci wywołaniowej szablonów.
| 4 = {{Code|inkludowana}} {{LinkPatrz|inkludowana}} | _4 = Zmienna, czy strona ma być interpretowana jako inkludowana.
| 5 = Zmienne funkcyjne: | nagłówek5 = tak
| 6 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _6 = Funkcja generująca zawartość, może być zmodyfikowana, na podstawie pełnej nazwy strony, używana w funkcji: jest to {{Code|__FUNKCJA3}} w: {{Code|{{sr|#FunkcjaIterajacaRozwijanegoSzablonu|p=Szablonowe}}}} {{Patrz|__FUNKCJA-FunkcjaIterajacaRozwijanegoSzablonu}}.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if((czy_niekodowane)and(__FUNKCJA))then
local wynik=__FUNKCJA(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow);
if(wynik)then
return wynik;
end;
end;
</syntaxhighlight>
| 7 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _7 = Funkcja do generowania zawartości, może być zmodyfikowana, według podanej jej wartości, używana w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|FUNKCJA2-KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, w postaci zmodyfikowanej, czyli w wersji: {{Code|__FUNKCJA2}},
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
szablon=__FUNKCJA2 and __FUNKCJA2(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or szablon;
</syntaxhighlight>
| 8 = Inne zmienne funkcyjne: | nagłówek8 = tak
| 9 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _9 = Inne operacje wykonywane na pobranym tekście.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_ANALIZA_SPISOWA}}
| 10 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _10 = Funkcja użyta do generowania tablicy bazy kodów.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY}}
}}
Funkcje {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}}, zostały już opisane w tym module, więc wystarczy opisać inne.
{{Hr}}
* Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|pelna_nazwa_szablonu}} | _1 = Pełna nazwa szablonu.
| 2 = {{Code|tabela_parametrow_szablonu}} | _2 = Tabela parametrów wywołania szablonu do rozwinięcia.
| 3 = {{Code|tabela_modyfikatorow}} | _3 = Tabela modyfikatorów danego wywołania szablonowego.
}}
{{Hr}}
* Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Zawartość elementu wikikodu według {{Code|{{m|Szablonowe}}}}.
| 2 = {{Code|obiekt}} {{Patrz|obiekt}} | _2 = Nazwa obiektu szablonowego, jak: {{Code|SZABLON}}.
| 3 = {{Code|kod}} {{Patrz|kod}} | _3 = Numer obiektu, typu: {{Code|obiekt}} {{LinkPatrz|obiekt}}.
| 4 = {{Code|tekst}} | _4 = Tekst całego artykułu.
| 5 = {{Code|numer_szablonu}} {{Patrz|numer_szablonu}} | _5 = Tabela numerów dla różnych obiektów w jednej tabeli.
| 6 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _6 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 7 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _7 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
== {{Śródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}{{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}} ==
Funkcja służy do ściągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}.
Posiada własną walidacje nazwy stron, czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe według ściśle określonych sposobów.
Funkcja odpowiednio operuje na znacznikach wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''', tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
{{OpisParametrów
| 1 = Zmienne obiektowe: | nagłówek1 = tak
| 2 = {{Code|self}} {{Patrz|self}} | _2 = Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 3 = Zwykłe zmienne: | nagłówek3 = tak
| 4 = {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} | _4 = Nazwa strony, której liczymy zawartość, używając funkcji: {{LzLua|mw.title.makeTitle}}, strona może nie istnieć.
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local nazwa_strony_z_kodami_html=html_modul["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](nazwa_strony);
...
local czy_istnieje;
local techniczne_modul=require("Module:Techniczne");
uchwyt_strony,tekst_artykulu,czy_istnieje = techniczne_modul.CzyStronaIstniejeJejParametry(nazwa_strony_z_kodami_html,true);
</syntaxhighlight>
| 5 = {{Code|nazwa_strony2}} {{Patrz|nazwa_strony2}} | _5 = Uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej, przeciwnie brana jest nazwa: {{Code|nazwa_strony}}, jako uchwyt.
<syntaxhighlight lang="lua">
if(not szablon_nie_opis)then
if(not dokumentacja)then
local szablonowe_modul=require("Module:Szablonowe");
tekst_artykulu=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst_artykulu,nazwa_strony2 or nazwa_strony,nil,nil,nil,nil,nil,nil,nil,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
| 6 = {{Code|czy_noinclude}} {{Patrz|czy_noinclude}} | _6 = Jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka.
| 7 = Zmienne tablicowe: | nagłówek7 = tak
| 8 = {{Code|szablony_magiczne}} {{Patrz|szablony_magiczne}} | _8 = Tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej.
| 9 = Inne zmienne: | nagłówek9 = tak
| 10 = {{Code|dokumentacja}} {{Patrz|dokumentacja}} | _10 = Określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}}.
| 11 = {{Code|czy_szablon}} {{Patrz|czy_szablon}} | _11 = Gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją.
| 12 = {{Code|nazwa_modulu_szablonu_opisu}} {{Patrz|nazwa_modulu_szablonu_opisu}} | _12 = Zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami '''{{lpg|HTML}}''' na znaki.
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
nazwa_strony_bez_kodow_html=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](nazwa_strony);
...
local tabela_nazw={};
if(szablony_magiczne)then
local nazwy_modul=require("Module:Nazwy");
szablony_magiczne["{{ROOTPAGENAME}}"]=szablony_magiczne["{{ROOTPAGENAME}}"] or nazwy_modul["NAZWAKORZENIASTRONY"](nazwa_modulu_szablonu_opisu or nazwa_strony_bez_kodow_html,tabela_nazw);
</syntaxhighlight>
| 13 = {{Code|szablon_nie_opis}} {{Patrz|szablon_nie_opis}} | _13 = Zmienna wskazująca, czy {{Code|nazwa strony}} {{LinkPatrz|nazwa strony}} wskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowany, używany wraz ze zmienną: {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}}.
| 14 = Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chcieliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:| nagłówek14 = tak
| 15 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} | _15 = Operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_ANALIZA_SPISOWA}}
| 16 = {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} | _16 = Funkcja operująca na komentarzach, przeciwnie jest używana funkcja: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}, gdzie:
<syntaxhighlight lang="lua">
local techniczne_modul=require("Module:Techniczne");
tekst_artykulu=__FUNKCJA_KOMENTARZE
and (__FUNKCJA_KOMENTARZE(tekst_artykulu))
or techniczne_modul.UsuwanieKomentarzowe(tekst_artykulu);
</syntaxhighlight>
| 17 = {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} | _17 = Funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów.
{{P|Przykład wywołania;}}
<syntaxhighlight lang="lua">
tekst_artykulu=__FUNKCJA_KONTROLNE and __FUNKCJA_KONTROLNE(tekst_artykulu) or tekst_artykulu;
</syntaxhighlight>
| 18 = {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} | _18 = Funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_analizy_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY}}
}}
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}}, operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} | _1 = Tekst do analizy, jak w funkcji nadrzędnej.
| 2 = {{Code|nazwa_modulu_szablonu_opisu}} {{LinkPatrz|nazwa_modulu_szablonu_opisu}} | _2 = Nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}.
| 3 = {{Code|nazwa_strony_bez_kodow_html}} {{Patrz|nazwa_strony_bez_kodow_html}} | _3 = Jest to nazwa strony: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, tylko z kodami '''{{lpg|HTML}}''' zamienionymi na ich odpowiedniki znakowe.
| 4 = {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}} | _4 = Tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej.
| 5 = {{Code|tabela_nazw}} {{Patrz|tabela_nazw}} | _5 = Tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, wewnątrz tej funkcji nadrzędnej.
}}
{{Hr}}
Funkcja: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}, ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę: {{Code|tablica}}, w funkcji zwracanej przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod metatabelki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} {{Patrz|__metatablica}}, to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Ten rozdział zawiera kolejność wywołań poszczególnych kroków w funkcji.
==== Poprawność pewnych nazw ====
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]|p=Html}}}}, która z: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}}.
==== Parametry uzyskanej strony ====
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}} {{Patrz|uchwyt strony}}, {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} i {{Code|czy_istnieje}} {{Patrz|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów.
==== Składniki preprocesora kodu mechanizmu: {{nobold|{{NS|l=tak|k=mw|w=tak}}}} ====
* Gdy {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli: {{Code|czy_noinclude}} {{LinkPatrz|czy_noinclude}}, przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie. Ze strony są usuwane pozostałości ze znaczników wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''' i znaczników jak {{Tag|templatedata}},
* Przeciwny wypadek: wtedy: {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}}, jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione.
==== Komentarze ====
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, a jeżeli one nie istnieją, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}.
===== Usuwanie pseudoszablonówi niektporych instrukcji warunkowych =====
* Ustawiane są zmienne w: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}} {{LinkPatrz|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}} {{Patrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}, by usunąć różne instrukcje warunkowe.
==== Specjalne elementy zmieniające wikikod ====
* Uruchamiana jest, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana jest, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
==== Kodowanie bazy danych kodów {{nobold|{{Code|{{m|Szablonowe}}}}}} ====
* Jeśli: {{Code|szablon_nie_opis}} {{LinkPatrz|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
de9qi9m7n3x9u3wnuhux74slbqth7xs
558319
558318
2026-10-02T15:03:10Z
Persino
2851
/* Parametry uzyskanej strony */
558319
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|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.SpreparowanyWikikodStrony}}{{Code|p.SpreparowanyWikikodStrony}} ==
Funkcja ściągąjąca opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Funkcja w opisach szablonów, a w niej instrukcje warunkowe podczas kodowania są rozwijane przy pomocy funkcji: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}}, a normalnie, gdy wewnątrz instrukcji warunkowych nie ma klamerek w funkcji, w składowej funkcji, tzn.: {{LinkPatrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja korzysta bezpośrednio z funkcji: {{LinkŚródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana. Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:SpreparowanyWikikodStrony(nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 2 = {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} | _2 = Nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw.
| 3 = {{Code|nazwa_modulu_szablonowa}} {{Patrz|nazwa_modulu_szablonowa}} | _3 = Nazwa modułu w wersji szablonowej, w wersji wywołaniowej.
| 4 = {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} | _4 = Przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony.
| 5 = {{Code|inkludowana}} {{Patrz|inkludowana}} | _5 = Przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej.
| 6 = Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem: | nagłówek6 = tak
| 7 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-SpreparowanyWikikodStrony}} | _7 = Funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, po kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
tekst=__FUNKCJA(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,dokumentacja,czy_niezakodowana)
</syntaxhighlight>
| 8 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-SpreparowanyWikikodStrony}} | _8 = Jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, odkodować od postaci zakodowanej, czyli do formy dokumentacji.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul)))then
</syntaxhighlight>
| 9 = {{Code|__FUNKCJA3}} {{Patrz|__FUNKCJA3-SpreparowanyWikikodStrony}} | _9 = Funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}}.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu,nazwa_modulu_szablonowa) or nil;
</syntaxhighlight>
| 10 = Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]|p=Szablonowe}}}} {{Patrz|UstalanieNazwyWywołania}}: | nagłówek10 = tak
| 11 = {{Code|__FUNKCJA4}} {{Patrz|__FUNKCJA4-SpreparowanyWikikodStrony}} | _11 = Funkcja, np. dekodująca nazwę szablonu.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if(__FUNKCJA4)then
nazwa_szablonu,powodzenie__FUNKCJA4(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
| 12 = {{Code|__FUNKCJA5}} {{Patrz|__FUNKCJA5-SpreparowanyWikikodStrony}} | _12 = Funkcja, np. rozwijająca nazwę szablonu.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
nazwa_szablonu=__FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
</syntaxhighlight>
| 13 = Inne: | nagłówek13 = tak
| 14 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _14 = Funkcja do modyfikacji tekstu pobranego ze strony.
{{Śródtekst|uchwyt=__FUNKCJA_ANALIZA_SPISOWA|tekst=
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
tekst_artykulu=__FUNKCJA_ANALIZA_SPISOWA and __FUNKCJA_ANALIZA_SPISOWA(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw) or tekst_artykulu;
</syntaxhighlight>
}}
| 15 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _15 = Funkcje do generowania tablicy bazy kodów.
{{Śródtekst|uchwyt=__FUNKCJA_PARAMETRY|tekst=
{{P|Przykład definicji:}}
<syntaxhighlight lang="lua">
function __FUNKCJA_PARAMETRY(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_element_juz_istnieje)
...
end;
end;
</syntaxhighlight>
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
local __FUNKCJA=__FUNKCJA_PARAMETRY(obiekt);
...
__FUNKCJA(tablica,klucz,wartosc_tablicy,false);
</syntaxhighlight>
}}
}}
Definicje funkcji: {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-UstalanieNazwyWywołania}} i {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-UstalanieNazwyWywołania}}, które są potrzebne do konstrukcji wywołania funkcji: {{LinkPatrz|UstalanieNazwyWywołania}}, uzyskiwania nazwy szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} i {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}}, definicje tych funkcji:
* {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Tablica danych bazy kodów zakodowanego tekstu.
| 5 = {{Code|dokumentacja}} | _5 = Jak w: {{LinkPatrz|dokumentacja}}.
| 6 = {{Code|czy_nie_opis}} {{Patrz|czy_nie_opis}} | _6 = Czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu_caly}} {{Patrz|tekst_artykulu_caly}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} {{LinkPatrz|__FUNKCJA3-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu,nazwa_modulu_szablonowa)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_modulu}} | _1 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 2 = {{Code|nazwa_modulu_szablonowa}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory,czy_z_kluczem]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} | _1 = Nazwa szablonu do rozwinięcia.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}}. | _5 = Tabela parametrów potrzebna do szybszego działania '''{{ld|StronicowyParser|Stronicowego parsera}}'''.
| 6 = Gdy tą funkcją jest: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}}, te zmienne bezpośrednio w: {{Code|__FUNKCJA4}}, nie występują, ale za to występują w tej podanej szczególnej przykładowej funkcji, tzn. argumenty: | komórka6 = tak
| 7 = {{Code|czy_uwzgledniac_modyfikatory}} {{Patrz|czy_uwzgledniac_modyfikatory}} | _7 = Czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}}.
| 8 = {{Code|czy_z_kluczem}} {{Patrz|czy_z_kluczem}} | _8 = Czy klucze, o wzorze: {{Code|<nowiki>^klucz$</nowiki>}}, lub {{Code|<nowiki>^klucz[1-9]%d*$</nowiki>}}.
}}
Jeżeli w funkcji {{LinkPatrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}} nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}} w przeciwnym wypadku zwracane jest nazwa szablonu i wartość {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} | _1 = Jak w: {{LinkPatrz|nazwa_szablonu}}. To jest nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}.
| 2 = {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} | _2 = Tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, to jest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}}, w przypadku: {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}.
| 3 = {{Code|nazwa_modulu}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 4 = {{Code|nazwa_modulu_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{LzLua|frame:preprocess}}, w korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, z której korzysta {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}, jeżeli korzystanej tutaj funkcja zrzuciła niepowodzenie, to pierwsza wartość zwrótcone to: {{Code|nil}}, druga: {{Code|false}}, w przeciwnym wypadku zwraca nazwę rozwiniętego szablonu i drugą wartość zrzuconą: {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice:
; Przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy{{dk}} {{nobold|{{Code|czy_niezakodowana {{=}} true}}}}, i {{nobold|{{Code|czy_nie_opis {{=}} true}}}}, według funkcji{{dk}}
* {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów,
; W przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja:
* {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami.
: Te funkcje są wywoływane wewnątrz funkcji: {{LinkŚródtytuł|p.SpreparowanyWikikodStrony}}. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana. Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Strona, a jednocześnie uchwyt do bazy danych kodów zakodowanego tekstu, o nazwie modułu do rozwinięcia i zakodowania.
| 3 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _3 = Nazwa strony szablonowa, w postaci wywołaniowej szablonów.
| 4 = {{Code|inkludowana}} {{LinkPatrz|inkludowana}} | _4 = Zmienna, czy strona ma być interpretowana jako inkludowana.
| 5 = Zmienne funkcyjne: | nagłówek5 = tak
| 6 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _6 = Funkcja generująca zawartość, może być zmodyfikowana, na podstawie pełnej nazwy strony, używana w funkcji: jest to {{Code|__FUNKCJA3}} w: {{Code|{{sr|#FunkcjaIterajacaRozwijanegoSzablonu|p=Szablonowe}}}} {{Patrz|__FUNKCJA-FunkcjaIterajacaRozwijanegoSzablonu}}.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if((czy_niekodowane)and(__FUNKCJA))then
local wynik=__FUNKCJA(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow);
if(wynik)then
return wynik;
end;
end;
</syntaxhighlight>
| 7 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _7 = Funkcja do generowania zawartości, może być zmodyfikowana, według podanej jej wartości, używana w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|FUNKCJA2-KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, w postaci zmodyfikowanej, czyli w wersji: {{Code|__FUNKCJA2}},
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
szablon=__FUNKCJA2 and __FUNKCJA2(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or szablon;
</syntaxhighlight>
| 8 = Inne zmienne funkcyjne: | nagłówek8 = tak
| 9 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _9 = Inne operacje wykonywane na pobranym tekście.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_ANALIZA_SPISOWA}}
| 10 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _10 = Funkcja użyta do generowania tablicy bazy kodów.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY}}
}}
Funkcje {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}}, zostały już opisane w tym module, więc wystarczy opisać inne.
{{Hr}}
* Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|pelna_nazwa_szablonu}} | _1 = Pełna nazwa szablonu.
| 2 = {{Code|tabela_parametrow_szablonu}} | _2 = Tabela parametrów wywołania szablonu do rozwinięcia.
| 3 = {{Code|tabela_modyfikatorow}} | _3 = Tabela modyfikatorów danego wywołania szablonowego.
}}
{{Hr}}
* Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Zawartość elementu wikikodu według {{Code|{{m|Szablonowe}}}}.
| 2 = {{Code|obiekt}} {{Patrz|obiekt}} | _2 = Nazwa obiektu szablonowego, jak: {{Code|SZABLON}}.
| 3 = {{Code|kod}} {{Patrz|kod}} | _3 = Numer obiektu, typu: {{Code|obiekt}} {{LinkPatrz|obiekt}}.
| 4 = {{Code|tekst}} | _4 = Tekst całego artykułu.
| 5 = {{Code|numer_szablonu}} {{Patrz|numer_szablonu}} | _5 = Tabela numerów dla różnych obiektów w jednej tabeli.
| 6 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _6 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 7 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _7 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
== {{Śródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}{{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}} ==
Funkcja służy do ściągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}.
Posiada własną walidacje nazwy stron, czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe według ściśle określonych sposobów.
Funkcja odpowiednio operuje na znacznikach wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''', tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
{{OpisParametrów
| 1 = Zmienne obiektowe: | nagłówek1 = tak
| 2 = {{Code|self}} {{Patrz|self}} | _2 = Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 3 = Zwykłe zmienne: | nagłówek3 = tak
| 4 = {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} | _4 = Nazwa strony, której liczymy zawartość, używając funkcji: {{LzLua|mw.title.makeTitle}}, strona może nie istnieć.
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local nazwa_strony_z_kodami_html=html_modul["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](nazwa_strony);
...
local czy_istnieje;
local techniczne_modul=require("Module:Techniczne");
uchwyt_strony,tekst_artykulu,czy_istnieje = techniczne_modul.CzyStronaIstniejeJejParametry(nazwa_strony_z_kodami_html,true);
</syntaxhighlight>
| 5 = {{Code|nazwa_strony2}} {{Patrz|nazwa_strony2}} | _5 = Uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej, przeciwnie brana jest nazwa: {{Code|nazwa_strony}}, jako uchwyt.
<syntaxhighlight lang="lua">
if(not szablon_nie_opis)then
if(not dokumentacja)then
local szablonowe_modul=require("Module:Szablonowe");
tekst_artykulu=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst_artykulu,nazwa_strony2 or nazwa_strony,nil,nil,nil,nil,nil,nil,nil,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
| 6 = {{Code|czy_noinclude}} {{Patrz|czy_noinclude}} | _6 = Jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka.
| 7 = Zmienne tablicowe: | nagłówek7 = tak
| 8 = {{Code|szablony_magiczne}} {{Patrz|szablony_magiczne}} | _8 = Tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej.
| 9 = Inne zmienne: | nagłówek9 = tak
| 10 = {{Code|dokumentacja}} {{Patrz|dokumentacja}} | _10 = Określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}}.
| 11 = {{Code|czy_szablon}} {{Patrz|czy_szablon}} | _11 = Gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją.
| 12 = {{Code|nazwa_modulu_szablonu_opisu}} {{Patrz|nazwa_modulu_szablonu_opisu}} | _12 = Zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami '''{{lpg|HTML}}''' na znaki.
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
nazwa_strony_bez_kodow_html=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](nazwa_strony);
...
local tabela_nazw={};
if(szablony_magiczne)then
local nazwy_modul=require("Module:Nazwy");
szablony_magiczne["{{ROOTPAGENAME}}"]=szablony_magiczne["{{ROOTPAGENAME}}"] or nazwy_modul["NAZWAKORZENIASTRONY"](nazwa_modulu_szablonu_opisu or nazwa_strony_bez_kodow_html,tabela_nazw);
</syntaxhighlight>
| 13 = {{Code|szablon_nie_opis}} {{Patrz|szablon_nie_opis}} | _13 = Zmienna wskazująca, czy {{Code|nazwa strony}} {{LinkPatrz|nazwa strony}} wskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowany, używany wraz ze zmienną: {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}}.
| 14 = Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chcieliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:| nagłówek14 = tak
| 15 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} | _15 = Operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_ANALIZA_SPISOWA}}
| 16 = {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} | _16 = Funkcja operująca na komentarzach, przeciwnie jest używana funkcja: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}, gdzie:
<syntaxhighlight lang="lua">
local techniczne_modul=require("Module:Techniczne");
tekst_artykulu=__FUNKCJA_KOMENTARZE
and (__FUNKCJA_KOMENTARZE(tekst_artykulu))
or techniczne_modul.UsuwanieKomentarzowe(tekst_artykulu);
</syntaxhighlight>
| 17 = {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} | _17 = Funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów.
{{P|Przykład wywołania;}}
<syntaxhighlight lang="lua">
tekst_artykulu=__FUNKCJA_KONTROLNE and __FUNKCJA_KONTROLNE(tekst_artykulu) or tekst_artykulu;
</syntaxhighlight>
| 18 = {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} | _18 = Funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_analizy_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY}}
}}
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}}, operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} | _1 = Tekst do analizy, jak w funkcji nadrzędnej.
| 2 = {{Code|nazwa_modulu_szablonu_opisu}} {{LinkPatrz|nazwa_modulu_szablonu_opisu}} | _2 = Nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}.
| 3 = {{Code|nazwa_strony_bez_kodow_html}} {{Patrz|nazwa_strony_bez_kodow_html}} | _3 = Jest to nazwa strony: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, tylko z kodami '''{{lpg|HTML}}''' zamienionymi na ich odpowiedniki znakowe.
| 4 = {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}} | _4 = Tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej.
| 5 = {{Code|tabela_nazw}} {{Patrz|tabela_nazw}} | _5 = Tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, wewnątrz tej funkcji nadrzędnej.
}}
{{Hr}}
Funkcja: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}, ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę: {{Code|tablica}}, w funkcji zwracanej przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod metatabelki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} {{Patrz|__metatablica}}, to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Ten rozdział zawiera kolejność wywołań poszczególnych kroków w funkcji.
==== Poprawność pewnych nazw ====
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]|p=Html}}}}, która z: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}}.
==== Parametry uzyskanej strony ====
* Uzyskujemy: {{Code|nazwa_strony_z_kodami_html}}, z {{Code|nazwa_strony}}, na podstawie funkcji: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]|p=Html}}}}.
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry|p=Techniczne}}}}, używając parametru: {{Code|nazwa_strony_z_kodami_html}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}} {{Patrz|uchwyt strony}}, {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} i {{Code|czy_istnieje}} {{Patrz|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów.
==== Składniki preprocesora kodu mechanizmu: {{nobold|{{NS|l=tak|k=mw|w=tak}}}} ====
* Gdy {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli: {{Code|czy_noinclude}} {{LinkPatrz|czy_noinclude}}, przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie. Ze strony są usuwane pozostałości ze znaczników wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''' i znaczników jak {{Tag|templatedata}},
* Przeciwny wypadek: wtedy: {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}}, jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione.
==== Komentarze ====
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, a jeżeli one nie istnieją, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}.
===== Usuwanie pseudoszablonówi niektporych instrukcji warunkowych =====
* Ustawiane są zmienne w: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}} {{LinkPatrz|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}} {{Patrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}, by usunąć różne instrukcje warunkowe.
==== Specjalne elementy zmieniające wikikod ====
* Uruchamiana jest, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana jest, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
==== Kodowanie bazy danych kodów {{nobold|{{Code|{{m|Szablonowe}}}}}} ====
* Jeśli: {{Code|szablon_nie_opis}} {{LinkPatrz|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
0cuav7k72zohqqgoysym88u6xm3wzgb
558320
558319
2026-10-02T15:05:36Z
Persino
2851
/* Usuwanie pseudoszablonówi niektporych instrukcji warunkowych */
558320
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|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.SpreparowanyWikikodStrony}}{{Code|p.SpreparowanyWikikodStrony}} ==
Funkcja ściągąjąca opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Funkcja w opisach szablonów, a w niej instrukcje warunkowe podczas kodowania są rozwijane przy pomocy funkcji: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}}, a normalnie, gdy wewnątrz instrukcji warunkowych nie ma klamerek w funkcji, w składowej funkcji, tzn.: {{LinkPatrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja korzysta bezpośrednio z funkcji: {{LinkŚródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana. Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:SpreparowanyWikikodStrony(nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 2 = {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} | _2 = Nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw.
| 3 = {{Code|nazwa_modulu_szablonowa}} {{Patrz|nazwa_modulu_szablonowa}} | _3 = Nazwa modułu w wersji szablonowej, w wersji wywołaniowej.
| 4 = {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} | _4 = Przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony.
| 5 = {{Code|inkludowana}} {{Patrz|inkludowana}} | _5 = Przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej.
| 6 = Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem: | nagłówek6 = tak
| 7 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-SpreparowanyWikikodStrony}} | _7 = Funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, po kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
tekst=__FUNKCJA(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,dokumentacja,czy_niezakodowana)
</syntaxhighlight>
| 8 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-SpreparowanyWikikodStrony}} | _8 = Jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, odkodować od postaci zakodowanej, czyli do formy dokumentacji.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul)))then
</syntaxhighlight>
| 9 = {{Code|__FUNKCJA3}} {{Patrz|__FUNKCJA3-SpreparowanyWikikodStrony}} | _9 = Funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}}.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu,nazwa_modulu_szablonowa) or nil;
</syntaxhighlight>
| 10 = Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]|p=Szablonowe}}}} {{Patrz|UstalanieNazwyWywołania}}: | nagłówek10 = tak
| 11 = {{Code|__FUNKCJA4}} {{Patrz|__FUNKCJA4-SpreparowanyWikikodStrony}} | _11 = Funkcja, np. dekodująca nazwę szablonu.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if(__FUNKCJA4)then
nazwa_szablonu,powodzenie__FUNKCJA4(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
| 12 = {{Code|__FUNKCJA5}} {{Patrz|__FUNKCJA5-SpreparowanyWikikodStrony}} | _12 = Funkcja, np. rozwijająca nazwę szablonu.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
nazwa_szablonu=__FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
</syntaxhighlight>
| 13 = Inne: | nagłówek13 = tak
| 14 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _14 = Funkcja do modyfikacji tekstu pobranego ze strony.
{{Śródtekst|uchwyt=__FUNKCJA_ANALIZA_SPISOWA|tekst=
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
tekst_artykulu=__FUNKCJA_ANALIZA_SPISOWA and __FUNKCJA_ANALIZA_SPISOWA(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw) or tekst_artykulu;
</syntaxhighlight>
}}
| 15 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _15 = Funkcje do generowania tablicy bazy kodów.
{{Śródtekst|uchwyt=__FUNKCJA_PARAMETRY|tekst=
{{P|Przykład definicji:}}
<syntaxhighlight lang="lua">
function __FUNKCJA_PARAMETRY(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_element_juz_istnieje)
...
end;
end;
</syntaxhighlight>
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
local __FUNKCJA=__FUNKCJA_PARAMETRY(obiekt);
...
__FUNKCJA(tablica,klucz,wartosc_tablicy,false);
</syntaxhighlight>
}}
}}
Definicje funkcji: {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-UstalanieNazwyWywołania}} i {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-UstalanieNazwyWywołania}}, które są potrzebne do konstrukcji wywołania funkcji: {{LinkPatrz|UstalanieNazwyWywołania}}, uzyskiwania nazwy szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} i {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}}, definicje tych funkcji:
* {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Tablica danych bazy kodów zakodowanego tekstu.
| 5 = {{Code|dokumentacja}} | _5 = Jak w: {{LinkPatrz|dokumentacja}}.
| 6 = {{Code|czy_nie_opis}} {{Patrz|czy_nie_opis}} | _6 = Czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu_caly}} {{Patrz|tekst_artykulu_caly}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} {{LinkPatrz|__FUNKCJA3-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu,nazwa_modulu_szablonowa)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_modulu}} | _1 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 2 = {{Code|nazwa_modulu_szablonowa}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory,czy_z_kluczem]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} | _1 = Nazwa szablonu do rozwinięcia.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}}. | _5 = Tabela parametrów potrzebna do szybszego działania '''{{ld|StronicowyParser|Stronicowego parsera}}'''.
| 6 = Gdy tą funkcją jest: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}}, te zmienne bezpośrednio w: {{Code|__FUNKCJA4}}, nie występują, ale za to występują w tej podanej szczególnej przykładowej funkcji, tzn. argumenty: | komórka6 = tak
| 7 = {{Code|czy_uwzgledniac_modyfikatory}} {{Patrz|czy_uwzgledniac_modyfikatory}} | _7 = Czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}}.
| 8 = {{Code|czy_z_kluczem}} {{Patrz|czy_z_kluczem}} | _8 = Czy klucze, o wzorze: {{Code|<nowiki>^klucz$</nowiki>}}, lub {{Code|<nowiki>^klucz[1-9]%d*$</nowiki>}}.
}}
Jeżeli w funkcji {{LinkPatrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}} nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}} w przeciwnym wypadku zwracane jest nazwa szablonu i wartość {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} | _1 = Jak w: {{LinkPatrz|nazwa_szablonu}}. To jest nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}.
| 2 = {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} | _2 = Tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, to jest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}}, w przypadku: {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}.
| 3 = {{Code|nazwa_modulu}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 4 = {{Code|nazwa_modulu_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{LzLua|frame:preprocess}}, w korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, z której korzysta {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}, jeżeli korzystanej tutaj funkcja zrzuciła niepowodzenie, to pierwsza wartość zwrótcone to: {{Code|nil}}, druga: {{Code|false}}, w przeciwnym wypadku zwraca nazwę rozwiniętego szablonu i drugą wartość zrzuconą: {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice:
; Przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy{{dk}} {{nobold|{{Code|czy_niezakodowana {{=}} true}}}}, i {{nobold|{{Code|czy_nie_opis {{=}} true}}}}, według funkcji{{dk}}
* {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów,
; W przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja:
* {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami.
: Te funkcje są wywoływane wewnątrz funkcji: {{LinkŚródtytuł|p.SpreparowanyWikikodStrony}}. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana. Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Strona, a jednocześnie uchwyt do bazy danych kodów zakodowanego tekstu, o nazwie modułu do rozwinięcia i zakodowania.
| 3 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _3 = Nazwa strony szablonowa, w postaci wywołaniowej szablonów.
| 4 = {{Code|inkludowana}} {{LinkPatrz|inkludowana}} | _4 = Zmienna, czy strona ma być interpretowana jako inkludowana.
| 5 = Zmienne funkcyjne: | nagłówek5 = tak
| 6 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _6 = Funkcja generująca zawartość, może być zmodyfikowana, na podstawie pełnej nazwy strony, używana w funkcji: jest to {{Code|__FUNKCJA3}} w: {{Code|{{sr|#FunkcjaIterajacaRozwijanegoSzablonu|p=Szablonowe}}}} {{Patrz|__FUNKCJA-FunkcjaIterajacaRozwijanegoSzablonu}}.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if((czy_niekodowane)and(__FUNKCJA))then
local wynik=__FUNKCJA(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow);
if(wynik)then
return wynik;
end;
end;
</syntaxhighlight>
| 7 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _7 = Funkcja do generowania zawartości, może być zmodyfikowana, według podanej jej wartości, używana w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|FUNKCJA2-KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, w postaci zmodyfikowanej, czyli w wersji: {{Code|__FUNKCJA2}},
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
szablon=__FUNKCJA2 and __FUNKCJA2(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or szablon;
</syntaxhighlight>
| 8 = Inne zmienne funkcyjne: | nagłówek8 = tak
| 9 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _9 = Inne operacje wykonywane na pobranym tekście.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_ANALIZA_SPISOWA}}
| 10 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _10 = Funkcja użyta do generowania tablicy bazy kodów.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY}}
}}
Funkcje {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}}, zostały już opisane w tym module, więc wystarczy opisać inne.
{{Hr}}
* Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|pelna_nazwa_szablonu}} | _1 = Pełna nazwa szablonu.
| 2 = {{Code|tabela_parametrow_szablonu}} | _2 = Tabela parametrów wywołania szablonu do rozwinięcia.
| 3 = {{Code|tabela_modyfikatorow}} | _3 = Tabela modyfikatorów danego wywołania szablonowego.
}}
{{Hr}}
* Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Zawartość elementu wikikodu według {{Code|{{m|Szablonowe}}}}.
| 2 = {{Code|obiekt}} {{Patrz|obiekt}} | _2 = Nazwa obiektu szablonowego, jak: {{Code|SZABLON}}.
| 3 = {{Code|kod}} {{Patrz|kod}} | _3 = Numer obiektu, typu: {{Code|obiekt}} {{LinkPatrz|obiekt}}.
| 4 = {{Code|tekst}} | _4 = Tekst całego artykułu.
| 5 = {{Code|numer_szablonu}} {{Patrz|numer_szablonu}} | _5 = Tabela numerów dla różnych obiektów w jednej tabeli.
| 6 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _6 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 7 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _7 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
== {{Śródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}{{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}} ==
Funkcja służy do ściągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}.
Posiada własną walidacje nazwy stron, czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe według ściśle określonych sposobów.
Funkcja odpowiednio operuje na znacznikach wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''', tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
{{OpisParametrów
| 1 = Zmienne obiektowe: | nagłówek1 = tak
| 2 = {{Code|self}} {{Patrz|self}} | _2 = Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 3 = Zwykłe zmienne: | nagłówek3 = tak
| 4 = {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} | _4 = Nazwa strony, której liczymy zawartość, używając funkcji: {{LzLua|mw.title.makeTitle}}, strona może nie istnieć.
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local nazwa_strony_z_kodami_html=html_modul["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](nazwa_strony);
...
local czy_istnieje;
local techniczne_modul=require("Module:Techniczne");
uchwyt_strony,tekst_artykulu,czy_istnieje = techniczne_modul.CzyStronaIstniejeJejParametry(nazwa_strony_z_kodami_html,true);
</syntaxhighlight>
| 5 = {{Code|nazwa_strony2}} {{Patrz|nazwa_strony2}} | _5 = Uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej, przeciwnie brana jest nazwa: {{Code|nazwa_strony}}, jako uchwyt.
<syntaxhighlight lang="lua">
if(not szablon_nie_opis)then
if(not dokumentacja)then
local szablonowe_modul=require("Module:Szablonowe");
tekst_artykulu=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst_artykulu,nazwa_strony2 or nazwa_strony,nil,nil,nil,nil,nil,nil,nil,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
| 6 = {{Code|czy_noinclude}} {{Patrz|czy_noinclude}} | _6 = Jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka.
| 7 = Zmienne tablicowe: | nagłówek7 = tak
| 8 = {{Code|szablony_magiczne}} {{Patrz|szablony_magiczne}} | _8 = Tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej.
| 9 = Inne zmienne: | nagłówek9 = tak
| 10 = {{Code|dokumentacja}} {{Patrz|dokumentacja}} | _10 = Określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}}.
| 11 = {{Code|czy_szablon}} {{Patrz|czy_szablon}} | _11 = Gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją.
| 12 = {{Code|nazwa_modulu_szablonu_opisu}} {{Patrz|nazwa_modulu_szablonu_opisu}} | _12 = Zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami '''{{lpg|HTML}}''' na znaki.
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
nazwa_strony_bez_kodow_html=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](nazwa_strony);
...
local tabela_nazw={};
if(szablony_magiczne)then
local nazwy_modul=require("Module:Nazwy");
szablony_magiczne["{{ROOTPAGENAME}}"]=szablony_magiczne["{{ROOTPAGENAME}}"] or nazwy_modul["NAZWAKORZENIASTRONY"](nazwa_modulu_szablonu_opisu or nazwa_strony_bez_kodow_html,tabela_nazw);
</syntaxhighlight>
| 13 = {{Code|szablon_nie_opis}} {{Patrz|szablon_nie_opis}} | _13 = Zmienna wskazująca, czy {{Code|nazwa strony}} {{LinkPatrz|nazwa strony}} wskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowany, używany wraz ze zmienną: {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}}.
| 14 = Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chcieliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:| nagłówek14 = tak
| 15 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} | _15 = Operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_ANALIZA_SPISOWA}}
| 16 = {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} | _16 = Funkcja operująca na komentarzach, przeciwnie jest używana funkcja: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}, gdzie:
<syntaxhighlight lang="lua">
local techniczne_modul=require("Module:Techniczne");
tekst_artykulu=__FUNKCJA_KOMENTARZE
and (__FUNKCJA_KOMENTARZE(tekst_artykulu))
or techniczne_modul.UsuwanieKomentarzowe(tekst_artykulu);
</syntaxhighlight>
| 17 = {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} | _17 = Funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów.
{{P|Przykład wywołania;}}
<syntaxhighlight lang="lua">
tekst_artykulu=__FUNKCJA_KONTROLNE and __FUNKCJA_KONTROLNE(tekst_artykulu) or tekst_artykulu;
</syntaxhighlight>
| 18 = {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} | _18 = Funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_analizy_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY}}
}}
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}}, operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} | _1 = Tekst do analizy, jak w funkcji nadrzędnej.
| 2 = {{Code|nazwa_modulu_szablonu_opisu}} {{LinkPatrz|nazwa_modulu_szablonu_opisu}} | _2 = Nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}.
| 3 = {{Code|nazwa_strony_bez_kodow_html}} {{Patrz|nazwa_strony_bez_kodow_html}} | _3 = Jest to nazwa strony: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, tylko z kodami '''{{lpg|HTML}}''' zamienionymi na ich odpowiedniki znakowe.
| 4 = {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}} | _4 = Tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej.
| 5 = {{Code|tabela_nazw}} {{Patrz|tabela_nazw}} | _5 = Tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, wewnątrz tej funkcji nadrzędnej.
}}
{{Hr}}
Funkcja: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}, ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę: {{Code|tablica}}, w funkcji zwracanej przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod metatabelki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} {{Patrz|__metatablica}}, to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Ten rozdział zawiera kolejność wywołań poszczególnych kroków w funkcji.
==== Poprawność pewnych nazw ====
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]|p=Html}}}}, która z: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}}.
==== Parametry uzyskanej strony ====
* Uzyskujemy: {{Code|nazwa_strony_z_kodami_html}}, z {{Code|nazwa_strony}}, na podstawie funkcji: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]|p=Html}}}}.
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry|p=Techniczne}}}}, używając parametru: {{Code|nazwa_strony_z_kodami_html}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}} {{Patrz|uchwyt strony}}, {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} i {{Code|czy_istnieje}} {{Patrz|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów.
==== Składniki preprocesora kodu mechanizmu: {{nobold|{{NS|l=tak|k=mw|w=tak}}}} ====
* Gdy {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli: {{Code|czy_noinclude}} {{LinkPatrz|czy_noinclude}}, przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie. Ze strony są usuwane pozostałości ze znaczników wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''' i znaczników jak {{Tag|templatedata}},
* Przeciwny wypadek: wtedy: {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}}, jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione.
==== Komentarze ====
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, a jeżeli one nie istnieją, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}.
===== Usuwanie pseudoszablonów i niektórych instrukcji warunkowych =====
* Ustawiane są zmienne w: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}} {{LinkPatrz|tabela_nazw}}. Do tego celu jest używana zmienna: {{Code|nazwa_modulu_szablonu_opisu}}, lub {{Code|nazwa_strony_bez_kodow_html}}.
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}} {{Patrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}, by usunąć różne instrukcje warunkowe.
==== Specjalne elementy zmieniające wikikod ====
* Uruchamiana jest, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana jest, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
==== Kodowanie bazy danych kodów {{nobold|{{Code|{{m|Szablonowe}}}}}} ====
* Jeśli: {{Code|szablon_nie_opis}} {{LinkPatrz|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
ooq0h2w7g94gera8ynj5isbwctm5mq7
558321
558320
2026-10-02T15:12:25Z
Persino
2851
/* {{Śródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}{{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}} */
558321
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|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.SpreparowanyWikikodStrony}}{{Code|p.SpreparowanyWikikodStrony}} ==
Funkcja ściągąjąca opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Funkcja w opisach szablonów, a w niej instrukcje warunkowe podczas kodowania są rozwijane przy pomocy funkcji: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}}, a normalnie, gdy wewnątrz instrukcji warunkowych nie ma klamerek w funkcji, w składowej funkcji, tzn.: {{LinkPatrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja korzysta bezpośrednio z funkcji: {{LinkŚródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana. Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:SpreparowanyWikikodStrony(nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 2 = {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} | _2 = Nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw.
| 3 = {{Code|nazwa_modulu_szablonowa}} {{Patrz|nazwa_modulu_szablonowa}} | _3 = Nazwa modułu w wersji szablonowej, w wersji wywołaniowej.
| 4 = {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} | _4 = Przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony.
| 5 = {{Code|inkludowana}} {{Patrz|inkludowana}} | _5 = Przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej.
| 6 = Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem: | nagłówek6 = tak
| 7 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-SpreparowanyWikikodStrony}} | _7 = Funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, po kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
tekst=__FUNKCJA(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,dokumentacja,czy_niezakodowana)
</syntaxhighlight>
| 8 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-SpreparowanyWikikodStrony}} | _8 = Jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, odkodować od postaci zakodowanej, czyli do formy dokumentacji.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul)))then
</syntaxhighlight>
| 9 = {{Code|__FUNKCJA3}} {{Patrz|__FUNKCJA3-SpreparowanyWikikodStrony}} | _9 = Funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}}.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu,nazwa_modulu_szablonowa) or nil;
</syntaxhighlight>
| 10 = Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]|p=Szablonowe}}}} {{Patrz|UstalanieNazwyWywołania}}: | nagłówek10 = tak
| 11 = {{Code|__FUNKCJA4}} {{Patrz|__FUNKCJA4-SpreparowanyWikikodStrony}} | _11 = Funkcja, np. dekodująca nazwę szablonu.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if(__FUNKCJA4)then
nazwa_szablonu,powodzenie__FUNKCJA4(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
| 12 = {{Code|__FUNKCJA5}} {{Patrz|__FUNKCJA5-SpreparowanyWikikodStrony}} | _12 = Funkcja, np. rozwijająca nazwę szablonu.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
nazwa_szablonu=__FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
</syntaxhighlight>
| 13 = Inne: | nagłówek13 = tak
| 14 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _14 = Funkcja do modyfikacji tekstu pobranego ze strony.
{{Śródtekst|uchwyt=__FUNKCJA_ANALIZA_SPISOWA|tekst=
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
tekst_artykulu=__FUNKCJA_ANALIZA_SPISOWA and __FUNKCJA_ANALIZA_SPISOWA(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw) or tekst_artykulu;
</syntaxhighlight>
}}
| 15 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _15 = Funkcje do generowania tablicy bazy kodów.
{{Śródtekst|uchwyt=__FUNKCJA_PARAMETRY|tekst=
{{P|Przykład definicji:}}
<syntaxhighlight lang="lua">
function __FUNKCJA_PARAMETRY(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_element_juz_istnieje)
...
end;
end;
</syntaxhighlight>
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
local __FUNKCJA=__FUNKCJA_PARAMETRY(obiekt);
...
__FUNKCJA(tablica,klucz,wartosc_tablicy,false);
</syntaxhighlight>
}}
}}
Definicje funkcji: {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-UstalanieNazwyWywołania}} i {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-UstalanieNazwyWywołania}}, które są potrzebne do konstrukcji wywołania funkcji: {{LinkPatrz|UstalanieNazwyWywołania}}, uzyskiwania nazwy szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} i {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}}, definicje tych funkcji:
* {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Tablica danych bazy kodów zakodowanego tekstu.
| 5 = {{Code|dokumentacja}} | _5 = Jak w: {{LinkPatrz|dokumentacja}}.
| 6 = {{Code|czy_nie_opis}} {{Patrz|czy_nie_opis}} | _6 = Czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu_caly}} {{Patrz|tekst_artykulu_caly}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} {{LinkPatrz|__FUNKCJA3-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu,nazwa_modulu_szablonowa)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_modulu}} | _1 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 2 = {{Code|nazwa_modulu_szablonowa}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory,czy_z_kluczem]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} | _1 = Nazwa szablonu do rozwinięcia.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}}. | _5 = Tabela parametrów potrzebna do szybszego działania '''{{ld|StronicowyParser|Stronicowego parsera}}'''.
| 6 = Gdy tą funkcją jest: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}}, te zmienne bezpośrednio w: {{Code|__FUNKCJA4}}, nie występują, ale za to występują w tej podanej szczególnej przykładowej funkcji, tzn. argumenty: | komórka6 = tak
| 7 = {{Code|czy_uwzgledniac_modyfikatory}} {{Patrz|czy_uwzgledniac_modyfikatory}} | _7 = Czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}}.
| 8 = {{Code|czy_z_kluczem}} {{Patrz|czy_z_kluczem}} | _8 = Czy klucze, o wzorze: {{Code|<nowiki>^klucz$</nowiki>}}, lub {{Code|<nowiki>^klucz[1-9]%d*$</nowiki>}}.
}}
Jeżeli w funkcji {{LinkPatrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}} nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}} w przeciwnym wypadku zwracane jest nazwa szablonu i wartość {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} | _1 = Jak w: {{LinkPatrz|nazwa_szablonu}}. To jest nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}.
| 2 = {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} | _2 = Tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, to jest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}}, w przypadku: {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}.
| 3 = {{Code|nazwa_modulu}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 4 = {{Code|nazwa_modulu_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{LzLua|frame:preprocess}}, w korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, z której korzysta {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}, jeżeli korzystanej tutaj funkcja zrzuciła niepowodzenie, to pierwsza wartość zwrótcone to: {{Code|nil}}, druga: {{Code|false}}, w przeciwnym wypadku zwraca nazwę rozwiniętego szablonu i drugą wartość zrzuconą: {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice:
; Przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy{{dk}} {{nobold|{{Code|czy_niezakodowana {{=}} true}}}}, i {{nobold|{{Code|czy_nie_opis {{=}} true}}}}, według funkcji{{dk}}
* {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów,
; W przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja:
* {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami.
: Te funkcje są wywoływane wewnątrz funkcji: {{LinkŚródtytuł|p.SpreparowanyWikikodStrony}}. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana. Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Strona, a jednocześnie uchwyt do bazy danych kodów zakodowanego tekstu, o nazwie modułu do rozwinięcia i zakodowania.
| 3 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _3 = Nazwa strony szablonowa, w postaci wywołaniowej szablonów.
| 4 = {{Code|inkludowana}} {{LinkPatrz|inkludowana}} | _4 = Zmienna, czy strona ma być interpretowana jako inkludowana.
| 5 = Zmienne funkcyjne: | nagłówek5 = tak
| 6 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _6 = Funkcja generująca zawartość, może być zmodyfikowana, na podstawie pełnej nazwy strony, używana w funkcji: jest to {{Code|__FUNKCJA3}} w: {{Code|{{sr|#FunkcjaIterajacaRozwijanegoSzablonu|p=Szablonowe}}}} {{Patrz|__FUNKCJA-FunkcjaIterajacaRozwijanegoSzablonu}}.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if((czy_niekodowane)and(__FUNKCJA))then
local wynik=__FUNKCJA(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow);
if(wynik)then
return wynik;
end;
end;
</syntaxhighlight>
| 7 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _7 = Funkcja do generowania zawartości, może być zmodyfikowana, według podanej jej wartości, używana w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|FUNKCJA2-KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, w postaci zmodyfikowanej, czyli w wersji: {{Code|__FUNKCJA2}},
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
szablon=__FUNKCJA2 and __FUNKCJA2(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or szablon;
</syntaxhighlight>
| 8 = Inne zmienne funkcyjne: | nagłówek8 = tak
| 9 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _9 = Inne operacje wykonywane na pobranym tekście.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_ANALIZA_SPISOWA}}
| 10 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _10 = Funkcja użyta do generowania tablicy bazy kodów.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY}}
}}
Funkcje {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}}, zostały już opisane w tym module, więc wystarczy opisać inne.
{{Hr}}
* Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|pelna_nazwa_szablonu}} | _1 = Pełna nazwa szablonu.
| 2 = {{Code|tabela_parametrow_szablonu}} | _2 = Tabela parametrów wywołania szablonu do rozwinięcia.
| 3 = {{Code|tabela_modyfikatorow}} | _3 = Tabela modyfikatorów danego wywołania szablonowego.
}}
{{Hr}}
* Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Zawartość elementu wikikodu według {{Code|{{m|Szablonowe}}}}.
| 2 = {{Code|obiekt}} {{Patrz|obiekt}} | _2 = Nazwa obiektu szablonowego, jak: {{Code|SZABLON}}.
| 3 = {{Code|kod}} {{Patrz|kod}} | _3 = Numer obiektu, typu: {{Code|obiekt}} {{LinkPatrz|obiekt}}.
| 4 = {{Code|tekst}} | _4 = Tekst całego artykułu.
| 5 = {{Code|numer_szablonu}} {{Patrz|numer_szablonu}} | _5 = Tabela numerów dla różnych obiektów w jednej tabeli.
| 6 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _6 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 7 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _7 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
== {{Śródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}{{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}} ==
Funkcja służy do ściągania zawartości stron z zawartością, a jeżeli zawartości nie ma, to ona zwraca wartość {{Code|nil}}.
Posiada własną walidacje nazwy stron, czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe według ściśle określonych sposobów.
Funkcja odpowiednio operuje na znacznikach wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''', tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znaczniki typu: {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
{{OpisParametrów
| 1 = Zmienne obiektowe: | nagłówek1 = tak
| 2 = {{Code|self}} {{Patrz|self}} | _2 = Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 3 = Zwykłe zmienne: | nagłówek3 = tak
| 4 = {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} | _4 = Nazwa strony, której liczymy zawartość, używając funkcji: {{LzLua|mw.title.makeTitle}}, strona może nie istnieć.
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local nazwa_strony_z_kodami_html=html_modul["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](nazwa_strony);
...
local czy_istnieje;
local techniczne_modul=require("Module:Techniczne");
uchwyt_strony,tekst_artykulu,czy_istnieje = techniczne_modul.CzyStronaIstniejeJejParametry(nazwa_strony_z_kodami_html,true);
</syntaxhighlight>
| 5 = {{Code|nazwa_strony2}} {{Patrz|nazwa_strony2}} | _5 = Uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej, przeciwnie brana jest nazwa: {{Code|nazwa_strony}}, jako uchwyt.
<syntaxhighlight lang="lua">
if(not szablon_nie_opis)then
if(not dokumentacja)then
local szablonowe_modul=require("Module:Szablonowe");
tekst_artykulu=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst_artykulu,nazwa_strony2 or nazwa_strony,nil,nil,nil,nil,nil,nil,nil,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
| 6 = {{Code|czy_noinclude}} {{Patrz|czy_noinclude}} | _6 = Jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka.
| 7 = Zmienne tablicowe: | nagłówek7 = tak
| 8 = {{Code|szablony_magiczne}} {{Patrz|szablony_magiczne}} | _8 = Tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej.
| 9 = Inne zmienne: | nagłówek9 = tak
| 10 = {{Code|dokumentacja}} {{Patrz|dokumentacja}} | _10 = Określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}}.
| 11 = {{Code|czy_szablon}} {{Patrz|czy_szablon}} | _11 = Gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją.
| 12 = {{Code|nazwa_modulu_szablonu_opisu}} {{Patrz|nazwa_modulu_szablonu_opisu}} | _12 = Zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami '''{{lpg|HTML}}''' na znaki.
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
nazwa_strony_bez_kodow_html=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](nazwa_strony);
...
local tabela_nazw={};
if(szablony_magiczne)then
local nazwy_modul=require("Module:Nazwy");
szablony_magiczne["{{ROOTPAGENAME}}"]=szablony_magiczne["{{ROOTPAGENAME}}"] or nazwy_modul["NAZWAKORZENIASTRONY"](nazwa_modulu_szablonu_opisu or nazwa_strony_bez_kodow_html,tabela_nazw);
</syntaxhighlight>
| 13 = {{Code|szablon_nie_opis}} {{Patrz|szablon_nie_opis}} | _13 = Zmienna wskazująca, czy {{Code|nazwa strony}} {{LinkPatrz|nazwa strony}} wskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowany, używany wraz ze zmienną: {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}}.
| 14 = Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chcieliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:| nagłówek14 = tak
| 15 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} | _15 = Operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_ANALIZA_SPISOWA}}
| 16 = {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} | _16 = Funkcja operująca na komentarzach, przeciwnie jest używana funkcja: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}, gdzie:
<syntaxhighlight lang="lua">
local techniczne_modul=require("Module:Techniczne");
tekst_artykulu=__FUNKCJA_KOMENTARZE
and (__FUNKCJA_KOMENTARZE(tekst_artykulu))
or techniczne_modul.UsuwanieKomentarzowe(tekst_artykulu);
</syntaxhighlight>
| 17 = {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} | _17 = Funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów.
{{P|Przykład wywołania;}}
<syntaxhighlight lang="lua">
tekst_artykulu=__FUNKCJA_KONTROLNE and __FUNKCJA_KONTROLNE(tekst_artykulu) or tekst_artykulu;
</syntaxhighlight>
| 18 = {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} | _18 = Funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_analizy_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY}}
}}
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}}, operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} | _1 = Tekst do analizy, jak w funkcji nadrzędnej.
| 2 = {{Code|nazwa_modulu_szablonu_opisu}} {{LinkPatrz|nazwa_modulu_szablonu_opisu}} | _2 = Nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}.
| 3 = {{Code|nazwa_strony_bez_kodow_html}} {{Patrz|nazwa_strony_bez_kodow_html}} | _3 = Jest to nazwa strony: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, tylko z kodami '''{{lpg|HTML}}''' zamienionymi na ich odpowiedniki znakowe.
| 4 = {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}} | _4 = Tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej.
| 5 = {{Code|tabela_nazw}} {{Patrz|tabela_nazw}} | _5 = Tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, wewnątrz tej funkcji nadrzędnej.
}}
{{Hr}}
Funkcja: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}, ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica: {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt]}}, uzyskana z: {{Code|tablica_analizy_obiektow_strony_dany_moduł}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_moduł}}, jest tablicą zawsze pustą, do niej dla każdego obiektu: {{Code|obiekt}} {{LinkPatrz|obiekt}}, przywiązana jest tablica, którą zapełniamy elementami, modyfikującego tablicę: {{Code|tablica}}. W funkcji zwracanej przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}, też modyfikujemy ją. Jak piszemy {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod metatabelki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} {{Patrz|__metatablica}}, to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Ten rozdział zawiera kolejność wywołań poszczególnych kroków w funkcji.
==== Poprawność pewnych nazw ====
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]|p=Html}}}}, która z: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}}.
==== Parametry uzyskanej strony ====
* Uzyskujemy: {{Code|nazwa_strony_z_kodami_html}}, z {{Code|nazwa_strony}}, na podstawie funkcji: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]|p=Html}}}}.
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry|p=Techniczne}}}}, używając parametru: {{Code|nazwa_strony_z_kodami_html}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}} {{Patrz|uchwyt strony}}, {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} i {{Code|czy_istnieje}} {{Patrz|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów.
==== Składniki preprocesora kodu mechanizmu: {{nobold|{{NS|l=tak|k=mw|w=tak}}}} ====
* Gdy {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli: {{Code|czy_noinclude}} {{LinkPatrz|czy_noinclude}}, przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie. Ze strony są usuwane pozostałości ze znaczników wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''' i znaczników jak {{Tag|templatedata}},
* Przeciwny wypadek: wtedy: {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}}, jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione.
==== Komentarze ====
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, a jeżeli one nie istnieją, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}.
===== Usuwanie pseudoszablonów i niektórych instrukcji warunkowych =====
* Ustawiane są zmienne w: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}} {{LinkPatrz|tabela_nazw}}. Do tego celu jest używana zmienna: {{Code|nazwa_modulu_szablonu_opisu}}, lub {{Code|nazwa_strony_bez_kodow_html}}.
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}} {{Patrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}, by usunąć różne instrukcje warunkowe.
==== Specjalne elementy zmieniające wikikod ====
* Uruchamiana jest, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana jest, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
==== Kodowanie bazy danych kodów {{nobold|{{Code|{{m|Szablonowe}}}}}} ====
* Jeśli: {{Code|szablon_nie_opis}} {{LinkPatrz|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
cqdazdzar81hohzcc1325dnqp8ld35z
558322
558321
2026-10-02T15:14:28Z
Persino
2851
/* {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} */
558322
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|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.SpreparowanyWikikodStrony}}{{Code|p.SpreparowanyWikikodStrony}} ==
Funkcja ściągąjąca opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Funkcja w opisach szablonów, a w niej instrukcje warunkowe podczas kodowania są rozwijane przy pomocy funkcji: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}}, a normalnie, gdy wewnątrz instrukcji warunkowych nie ma klamerek w funkcji, w składowej funkcji, tzn.: {{LinkPatrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja korzysta bezpośrednio z funkcji: {{LinkŚródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana. Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:SpreparowanyWikikodStrony(nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 2 = {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} | _2 = Nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw.
| 3 = {{Code|nazwa_modulu_szablonowa}} {{Patrz|nazwa_modulu_szablonowa}} | _3 = Nazwa modułu w wersji szablonowej, w wersji wywołaniowej.
| 4 = {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} | _4 = Przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony.
| 5 = {{Code|inkludowana}} {{Patrz|inkludowana}} | _5 = Przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej.
| 6 = Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem: | nagłówek6 = tak
| 7 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-SpreparowanyWikikodStrony}} | _7 = Funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, po kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
tekst=__FUNKCJA(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,dokumentacja,czy_niezakodowana)
</syntaxhighlight>
| 8 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-SpreparowanyWikikodStrony}} | _8 = Jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, odkodować od postaci zakodowanej, czyli do formy dokumentacji.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul)))then
</syntaxhighlight>
| 9 = {{Code|__FUNKCJA3}} {{Patrz|__FUNKCJA3-SpreparowanyWikikodStrony}} | _9 = Funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}}.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu,nazwa_modulu_szablonowa) or nil;
</syntaxhighlight>
| 10 = Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]|p=Szablonowe}}}} {{Patrz|UstalanieNazwyWywołania}}: | nagłówek10 = tak
| 11 = {{Code|__FUNKCJA4}} {{Patrz|__FUNKCJA4-SpreparowanyWikikodStrony}} | _11 = Funkcja, np. dekodująca nazwę szablonu.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if(__FUNKCJA4)then
nazwa_szablonu,powodzenie__FUNKCJA4(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
| 12 = {{Code|__FUNKCJA5}} {{Patrz|__FUNKCJA5-SpreparowanyWikikodStrony}} | _12 = Funkcja, np. rozwijająca nazwę szablonu.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
nazwa_szablonu=__FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
</syntaxhighlight>
| 13 = Inne: | nagłówek13 = tak
| 14 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _14 = Funkcja do modyfikacji tekstu pobranego ze strony.
{{Śródtekst|uchwyt=__FUNKCJA_ANALIZA_SPISOWA|tekst=
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
tekst_artykulu=__FUNKCJA_ANALIZA_SPISOWA and __FUNKCJA_ANALIZA_SPISOWA(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw) or tekst_artykulu;
</syntaxhighlight>
}}
| 15 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _15 = Funkcje do generowania tablicy bazy kodów.
{{Śródtekst|uchwyt=__FUNKCJA_PARAMETRY|tekst=
{{P|Przykład definicji:}}
<syntaxhighlight lang="lua">
function __FUNKCJA_PARAMETRY(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_element_juz_istnieje)
...
end;
end;
</syntaxhighlight>
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
local __FUNKCJA=__FUNKCJA_PARAMETRY(obiekt);
...
__FUNKCJA(tablica,klucz,wartosc_tablicy,false);
</syntaxhighlight>
}}
}}
Definicje funkcji: {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-UstalanieNazwyWywołania}} i {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-UstalanieNazwyWywołania}}, które są potrzebne do konstrukcji wywołania funkcji: {{LinkPatrz|UstalanieNazwyWywołania}}, uzyskiwania nazwy szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} i {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}}, definicje tych funkcji:
* {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Tablica danych bazy kodów zakodowanego tekstu.
| 5 = {{Code|dokumentacja}} | _5 = Jak w: {{LinkPatrz|dokumentacja}}.
| 6 = {{Code|czy_nie_opis}} {{Patrz|czy_nie_opis}} | _6 = Czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu_caly}} {{Patrz|tekst_artykulu_caly}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} {{LinkPatrz|__FUNKCJA3-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu,nazwa_modulu_szablonowa)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_modulu}} | _1 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 2 = {{Code|nazwa_modulu_szablonowa}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory,czy_z_kluczem]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} | _1 = Nazwa szablonu do rozwinięcia.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}}. | _5 = Tabela parametrów potrzebna do szybszego działania '''{{ld|StronicowyParser|Stronicowego parsera}}'''.
| 6 = Gdy tą funkcją jest: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}}, te zmienne bezpośrednio w: {{Code|__FUNKCJA4}}, nie występują, ale za to występują w tej podanej szczególnej przykładowej funkcji, tzn. argumenty: | komórka6 = tak
| 7 = {{Code|czy_uwzgledniac_modyfikatory}} {{Patrz|czy_uwzgledniac_modyfikatory}} | _7 = Czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}}.
| 8 = {{Code|czy_z_kluczem}} {{Patrz|czy_z_kluczem}} | _8 = Czy klucze, o wzorze: {{Code|<nowiki>^klucz$</nowiki>}}, lub {{Code|<nowiki>^klucz[1-9]%d*$</nowiki>}}.
}}
Jeżeli w funkcji {{LinkPatrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}} nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}} w przeciwnym wypadku zwracane jest nazwa szablonu i wartość {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} | _1 = Jak w: {{LinkPatrz|nazwa_szablonu}}. To jest nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}.
| 2 = {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} | _2 = Tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, to jest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}}, w przypadku: {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}.
| 3 = {{Code|nazwa_modulu}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 4 = {{Code|nazwa_modulu_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{LzLua|frame:preprocess}}, w korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, z której korzysta {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}, jeżeli korzystanej tutaj funkcja zrzuciła niepowodzenie, to pierwsza wartość zwrótcone to: {{Code|nil}}, druga: {{Code|false}}, w przeciwnym wypadku zwraca nazwę rozwiniętego szablonu i drugą wartość zrzuconą: {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąć, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice:
; Przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy{{dk}} {{nobold|{{Code|czy_niezakodowana {{=}} true}}}}, i {{nobold|{{Code|czy_nie_opis {{=}} true}}}}, według funkcji{{dk}}
* {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów,
; W przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja:
* {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami.
----
: Te funkcje są wywoływane wewnątrz funkcji: {{LinkŚródtytuł|p.SpreparowanyWikikodStrony}}. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąć za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana. Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Strona, a jednocześnie uchwyt do bazy danych kodów zakodowanego tekstu, o nazwie modułu do rozwinięcia i zakodowania.
| 3 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _3 = Nazwa strony szablonowa, w postaci wywołaniowej szablonów.
| 4 = {{Code|inkludowana}} {{LinkPatrz|inkludowana}} | _4 = Zmienna, czy strona ma być interpretowana jako inkludowana.
| 5 = Zmienne funkcyjne: | nagłówek5 = tak
| 6 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _6 = Funkcja generująca zawartość, może być zmodyfikowana, na podstawie pełnej nazwy strony, używana w funkcji: jest to {{Code|__FUNKCJA3}} w: {{Code|{{sr|#FunkcjaIterajacaRozwijanegoSzablonu|p=Szablonowe}}}} {{Patrz|__FUNKCJA-FunkcjaIterajacaRozwijanegoSzablonu}}.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if((czy_niekodowane)and(__FUNKCJA))then
local wynik=__FUNKCJA(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow);
if(wynik)then
return wynik;
end;
end;
</syntaxhighlight>
| 7 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _7 = Funkcja do generowania zawartości, może być zmodyfikowana, według podanej jej wartości, używana w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|FUNKCJA2-KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, w postaci zmodyfikowanej, czyli w wersji: {{Code|__FUNKCJA2}},
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
szablon=__FUNKCJA2 and __FUNKCJA2(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or szablon;
</syntaxhighlight>
| 8 = Inne zmienne funkcyjne: | nagłówek8 = tak
| 9 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _9 = Inne operacje wykonywane na pobranym tekście.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_ANALIZA_SPISOWA}}
| 10 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _10 = Funkcja użyta do generowania tablicy bazy kodów.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY}}
}}
Funkcje {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}}, zostały już opisane w tym module, więc wystarczy opisać inne.
{{Hr}}
* Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|pelna_nazwa_szablonu}} | _1 = Pełna nazwa szablonu.
| 2 = {{Code|tabela_parametrow_szablonu}} | _2 = Tabela parametrów wywołania szablonu do rozwinięcia.
| 3 = {{Code|tabela_modyfikatorow}} | _3 = Tabela modyfikatorów danego wywołania szablonowego.
}}
{{Hr}}
* Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Zawartość elementu wikikodu według {{Code|{{m|Szablonowe}}}}.
| 2 = {{Code|obiekt}} {{Patrz|obiekt}} | _2 = Nazwa obiektu szablonowego, jak: {{Code|SZABLON}}.
| 3 = {{Code|kod}} {{Patrz|kod}} | _3 = Numer obiektu, typu: {{Code|obiekt}} {{LinkPatrz|obiekt}}.
| 4 = {{Code|tekst}} | _4 = Tekst całego artykułu.
| 5 = {{Code|numer_szablonu}} {{Patrz|numer_szablonu}} | _5 = Tabela numerów dla różnych obiektów w jednej tabeli.
| 6 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _6 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 7 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _7 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
== {{Śródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}{{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}} ==
Funkcja służy do ściągania zawartości stron z zawartością, a jeżeli zawartości nie ma, to ona zwraca wartość {{Code|nil}}.
Posiada własną walidacje nazwy stron, czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe według ściśle określonych sposobów.
Funkcja odpowiednio operuje na znacznikach wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''', tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znaczniki typu: {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
{{OpisParametrów
| 1 = Zmienne obiektowe: | nagłówek1 = tak
| 2 = {{Code|self}} {{Patrz|self}} | _2 = Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 3 = Zwykłe zmienne: | nagłówek3 = tak
| 4 = {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} | _4 = Nazwa strony, której liczymy zawartość, używając funkcji: {{LzLua|mw.title.makeTitle}}, strona może nie istnieć.
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local nazwa_strony_z_kodami_html=html_modul["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](nazwa_strony);
...
local czy_istnieje;
local techniczne_modul=require("Module:Techniczne");
uchwyt_strony,tekst_artykulu,czy_istnieje = techniczne_modul.CzyStronaIstniejeJejParametry(nazwa_strony_z_kodami_html,true);
</syntaxhighlight>
| 5 = {{Code|nazwa_strony2}} {{Patrz|nazwa_strony2}} | _5 = Uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej, przeciwnie brana jest nazwa: {{Code|nazwa_strony}}, jako uchwyt.
<syntaxhighlight lang="lua">
if(not szablon_nie_opis)then
if(not dokumentacja)then
local szablonowe_modul=require("Module:Szablonowe");
tekst_artykulu=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst_artykulu,nazwa_strony2 or nazwa_strony,nil,nil,nil,nil,nil,nil,nil,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
| 6 = {{Code|czy_noinclude}} {{Patrz|czy_noinclude}} | _6 = Jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka.
| 7 = Zmienne tablicowe: | nagłówek7 = tak
| 8 = {{Code|szablony_magiczne}} {{Patrz|szablony_magiczne}} | _8 = Tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej.
| 9 = Inne zmienne: | nagłówek9 = tak
| 10 = {{Code|dokumentacja}} {{Patrz|dokumentacja}} | _10 = Określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}}.
| 11 = {{Code|czy_szablon}} {{Patrz|czy_szablon}} | _11 = Gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją.
| 12 = {{Code|nazwa_modulu_szablonu_opisu}} {{Patrz|nazwa_modulu_szablonu_opisu}} | _12 = Zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami '''{{lpg|HTML}}''' na znaki.
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
nazwa_strony_bez_kodow_html=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](nazwa_strony);
...
local tabela_nazw={};
if(szablony_magiczne)then
local nazwy_modul=require("Module:Nazwy");
szablony_magiczne["{{ROOTPAGENAME}}"]=szablony_magiczne["{{ROOTPAGENAME}}"] or nazwy_modul["NAZWAKORZENIASTRONY"](nazwa_modulu_szablonu_opisu or nazwa_strony_bez_kodow_html,tabela_nazw);
</syntaxhighlight>
| 13 = {{Code|szablon_nie_opis}} {{Patrz|szablon_nie_opis}} | _13 = Zmienna wskazująca, czy {{Code|nazwa strony}} {{LinkPatrz|nazwa strony}} wskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowany, używany wraz ze zmienną: {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}}.
| 14 = Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chcieliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:| nagłówek14 = tak
| 15 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} | _15 = Operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_ANALIZA_SPISOWA}}
| 16 = {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} | _16 = Funkcja operująca na komentarzach, przeciwnie jest używana funkcja: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}, gdzie:
<syntaxhighlight lang="lua">
local techniczne_modul=require("Module:Techniczne");
tekst_artykulu=__FUNKCJA_KOMENTARZE
and (__FUNKCJA_KOMENTARZE(tekst_artykulu))
or techniczne_modul.UsuwanieKomentarzowe(tekst_artykulu);
</syntaxhighlight>
| 17 = {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} | _17 = Funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów.
{{P|Przykład wywołania;}}
<syntaxhighlight lang="lua">
tekst_artykulu=__FUNKCJA_KONTROLNE and __FUNKCJA_KONTROLNE(tekst_artykulu) or tekst_artykulu;
</syntaxhighlight>
| 18 = {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} | _18 = Funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_analizy_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY}}
}}
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}}, operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} | _1 = Tekst do analizy, jak w funkcji nadrzędnej.
| 2 = {{Code|nazwa_modulu_szablonu_opisu}} {{LinkPatrz|nazwa_modulu_szablonu_opisu}} | _2 = Nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}.
| 3 = {{Code|nazwa_strony_bez_kodow_html}} {{Patrz|nazwa_strony_bez_kodow_html}} | _3 = Jest to nazwa strony: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, tylko z kodami '''{{lpg|HTML}}''' zamienionymi na ich odpowiedniki znakowe.
| 4 = {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}} | _4 = Tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej.
| 5 = {{Code|tabela_nazw}} {{Patrz|tabela_nazw}} | _5 = Tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, wewnątrz tej funkcji nadrzędnej.
}}
{{Hr}}
Funkcja: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}, ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica: {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt]}}, uzyskana z: {{Code|tablica_analizy_obiektow_strony_dany_moduł}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_moduł}}, jest tablicą zawsze pustą, do niej dla każdego obiektu: {{Code|obiekt}} {{LinkPatrz|obiekt}}, przywiązana jest tablica, którą zapełniamy elementami, modyfikującego tablicę: {{Code|tablica}}. W funkcji zwracanej przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}, też modyfikujemy ją. Jak piszemy {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod metatabelki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} {{Patrz|__metatablica}}, to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Ten rozdział zawiera kolejność wywołań poszczególnych kroków w funkcji.
==== Poprawność pewnych nazw ====
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]|p=Html}}}}, która z: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}}.
==== Parametry uzyskanej strony ====
* Uzyskujemy: {{Code|nazwa_strony_z_kodami_html}}, z {{Code|nazwa_strony}}, na podstawie funkcji: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]|p=Html}}}}.
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry|p=Techniczne}}}}, używając parametru: {{Code|nazwa_strony_z_kodami_html}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}} {{Patrz|uchwyt strony}}, {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} i {{Code|czy_istnieje}} {{Patrz|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów.
==== Składniki preprocesora kodu mechanizmu: {{nobold|{{NS|l=tak|k=mw|w=tak}}}} ====
* Gdy {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli: {{Code|czy_noinclude}} {{LinkPatrz|czy_noinclude}}, przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie. Ze strony są usuwane pozostałości ze znaczników wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''' i znaczników jak {{Tag|templatedata}},
* Przeciwny wypadek: wtedy: {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}}, jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione.
==== Komentarze ====
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, a jeżeli one nie istnieją, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}.
===== Usuwanie pseudoszablonów i niektórych instrukcji warunkowych =====
* Ustawiane są zmienne w: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}} {{LinkPatrz|tabela_nazw}}. Do tego celu jest używana zmienna: {{Code|nazwa_modulu_szablonu_opisu}}, lub {{Code|nazwa_strony_bez_kodow_html}}.
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}} {{Patrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}, by usunąć różne instrukcje warunkowe.
==== Specjalne elementy zmieniające wikikod ====
* Uruchamiana jest, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana jest, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
==== Kodowanie bazy danych kodów {{nobold|{{Code|{{m|Szablonowe}}}}}} ====
* Jeśli: {{Code|szablon_nie_opis}} {{LinkPatrz|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
81u4dqd3in7noj8voyxpi6qyq47e7bh
558323
558322
2026-10-02T15:16:52Z
Persino
2851
/* {{Śródtytuł|p.SpreparowanyWikikodStrony}}{{Code|p.SpreparowanyWikikodStrony}} */
558323
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|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.SpreparowanyWikikodStrony}}{{Code|p.SpreparowanyWikikodStrony}} ==
Funkcja ściągąjąca opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Funkcja w opisach szablonów, a w niej instrukcje warunkowe podczas kodowania są rozwijane przy pomocy funkcji: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}}, a normalnie, gdy wewnątrz instrukcji warunkowych nie ma klamerek w funkcji, w składowej funkcji, tzn.: {{LinkPatrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja korzysta bezpośrednio z funkcji: {{LinkŚródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana. Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:SpreparowanyWikikodStrony(nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 2 = {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} | _2 = Nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw.
| 3 = {{Code|nazwa_modulu_szablonowa}} {{Patrz|nazwa_modulu_szablonowa}} | _3 = Nazwa modułu w wersji szablonowej, w wersji wywołaniowej.
| 4 = {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} | _4 = Przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony.
| 5 = {{Code|inkludowana}} {{Patrz|inkludowana}} | _5 = Przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej.
| 6 = Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem: | nagłówek6 = tak
| 7 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-SpreparowanyWikikodStrony}} | _7 = Funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, po kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
tekst=__FUNKCJA(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,dokumentacja,czy_niezakodowana)
</syntaxhighlight>
| 8 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-SpreparowanyWikikodStrony}} | _8 = Jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, odkodować od postaci zakodowanej, czyli do formy dokumentacji.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul)))then
</syntaxhighlight>
| 9 = {{Code|__FUNKCJA3}} {{Patrz|__FUNKCJA3-SpreparowanyWikikodStrony}} | _9 = Funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}}, czyli: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu,nazwa_modulu_szablonowa) or nil;
</syntaxhighlight>
| 10 = Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]|p=Szablonowe}}}} {{Patrz|UstalanieNazwyWywołania}}: | nagłówek10 = tak
| 11 = {{Code|__FUNKCJA4}} {{Patrz|__FUNKCJA4-SpreparowanyWikikodStrony}} | _11 = Funkcja, np. dekodująca nazwę szablonu.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if(__FUNKCJA4)then
nazwa_szablonu,powodzenie__FUNKCJA4(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
| 12 = {{Code|__FUNKCJA5}} {{Patrz|__FUNKCJA5-SpreparowanyWikikodStrony}} | _12 = Funkcja, np. rozwijająca nazwę szablonu.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
nazwa_szablonu=__FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
</syntaxhighlight>
| 13 = Inne: | nagłówek13 = tak
| 14 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _14 = Funkcja do modyfikacji tekstu pobranego ze strony.
{{Śródtekst|uchwyt=__FUNKCJA_ANALIZA_SPISOWA|tekst=
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
tekst_artykulu=__FUNKCJA_ANALIZA_SPISOWA and __FUNKCJA_ANALIZA_SPISOWA(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw) or tekst_artykulu;
</syntaxhighlight>
}}
| 15 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _15 = Funkcje do generowania tablicy bazy kodów.
{{Śródtekst|uchwyt=__FUNKCJA_PARAMETRY|tekst=
{{P|Przykład definicji:}}
<syntaxhighlight lang="lua">
function __FUNKCJA_PARAMETRY(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_element_juz_istnieje)
...
end;
end;
</syntaxhighlight>
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
local __FUNKCJA=__FUNKCJA_PARAMETRY(obiekt);
...
__FUNKCJA(tablica,klucz,wartosc_tablicy,false);
</syntaxhighlight>
}}
}}
Definicje funkcji: {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-UstalanieNazwyWywołania}} i {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-UstalanieNazwyWywołania}}, które są potrzebne do konstrukcji wywołania funkcji: {{LinkPatrz|UstalanieNazwyWywołania}}, uzyskiwania nazwy szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} i {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}}, definicje tych funkcji:
* {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Tablica danych bazy kodów zakodowanego tekstu.
| 5 = {{Code|dokumentacja}} | _5 = Jak w: {{LinkPatrz|dokumentacja}}.
| 6 = {{Code|czy_nie_opis}} {{Patrz|czy_nie_opis}} | _6 = Czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu_caly}} {{Patrz|tekst_artykulu_caly}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} {{LinkPatrz|__FUNKCJA3-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu,nazwa_modulu_szablonowa)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_modulu}} | _1 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 2 = {{Code|nazwa_modulu_szablonowa}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory,czy_z_kluczem]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} | _1 = Nazwa szablonu do rozwinięcia.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}}. | _5 = Tabela parametrów potrzebna do szybszego działania '''{{ld|StronicowyParser|Stronicowego parsera}}'''.
| 6 = Gdy tą funkcją jest: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}}, te zmienne bezpośrednio w: {{Code|__FUNKCJA4}}, nie występują, ale za to występują w tej podanej szczególnej przykładowej funkcji, tzn. argumenty: | komórka6 = tak
| 7 = {{Code|czy_uwzgledniac_modyfikatory}} {{Patrz|czy_uwzgledniac_modyfikatory}} | _7 = Czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}}.
| 8 = {{Code|czy_z_kluczem}} {{Patrz|czy_z_kluczem}} | _8 = Czy klucze, o wzorze: {{Code|<nowiki>^klucz$</nowiki>}}, lub {{Code|<nowiki>^klucz[1-9]%d*$</nowiki>}}.
}}
Jeżeli w funkcji {{LinkPatrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}} nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}} w przeciwnym wypadku zwracane jest nazwa szablonu i wartość {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} | _1 = Jak w: {{LinkPatrz|nazwa_szablonu}}. To jest nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}.
| 2 = {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} | _2 = Tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, to jest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}}, w przypadku: {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}.
| 3 = {{Code|nazwa_modulu}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 4 = {{Code|nazwa_modulu_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{LzLua|frame:preprocess}}, w korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, z której korzysta {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}, jeżeli korzystanej tutaj funkcja zrzuciła niepowodzenie, to pierwsza wartość zwrótcone to: {{Code|nil}}, druga: {{Code|false}}, w przeciwnym wypadku zwraca nazwę rozwiniętego szablonu i drugą wartość zrzuconą: {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąć, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice:
; Przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy{{dk}} {{nobold|{{Code|czy_niezakodowana {{=}} true}}}}, i {{nobold|{{Code|czy_nie_opis {{=}} true}}}}, według funkcji{{dk}}
* {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów,
; W przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja:
* {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami.
----
: Te funkcje są wywoływane wewnątrz funkcji: {{LinkŚródtytuł|p.SpreparowanyWikikodStrony}}. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąć za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana. Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Strona, a jednocześnie uchwyt do bazy danych kodów zakodowanego tekstu, o nazwie modułu do rozwinięcia i zakodowania.
| 3 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _3 = Nazwa strony szablonowa, w postaci wywołaniowej szablonów.
| 4 = {{Code|inkludowana}} {{LinkPatrz|inkludowana}} | _4 = Zmienna, czy strona ma być interpretowana jako inkludowana.
| 5 = Zmienne funkcyjne: | nagłówek5 = tak
| 6 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _6 = Funkcja generująca zawartość, może być zmodyfikowana, na podstawie pełnej nazwy strony, używana w funkcji: jest to {{Code|__FUNKCJA3}} w: {{Code|{{sr|#FunkcjaIterajacaRozwijanegoSzablonu|p=Szablonowe}}}} {{Patrz|__FUNKCJA-FunkcjaIterajacaRozwijanegoSzablonu}}.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if((czy_niekodowane)and(__FUNKCJA))then
local wynik=__FUNKCJA(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow);
if(wynik)then
return wynik;
end;
end;
</syntaxhighlight>
| 7 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _7 = Funkcja do generowania zawartości, może być zmodyfikowana, według podanej jej wartości, używana w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|FUNKCJA2-KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, w postaci zmodyfikowanej, czyli w wersji: {{Code|__FUNKCJA2}},
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
szablon=__FUNKCJA2 and __FUNKCJA2(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or szablon;
</syntaxhighlight>
| 8 = Inne zmienne funkcyjne: | nagłówek8 = tak
| 9 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _9 = Inne operacje wykonywane na pobranym tekście.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_ANALIZA_SPISOWA}}
| 10 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _10 = Funkcja użyta do generowania tablicy bazy kodów.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY}}
}}
Funkcje {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}}, zostały już opisane w tym module, więc wystarczy opisać inne.
{{Hr}}
* Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|pelna_nazwa_szablonu}} | _1 = Pełna nazwa szablonu.
| 2 = {{Code|tabela_parametrow_szablonu}} | _2 = Tabela parametrów wywołania szablonu do rozwinięcia.
| 3 = {{Code|tabela_modyfikatorow}} | _3 = Tabela modyfikatorów danego wywołania szablonowego.
}}
{{Hr}}
* Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Zawartość elementu wikikodu według {{Code|{{m|Szablonowe}}}}.
| 2 = {{Code|obiekt}} {{Patrz|obiekt}} | _2 = Nazwa obiektu szablonowego, jak: {{Code|SZABLON}}.
| 3 = {{Code|kod}} {{Patrz|kod}} | _3 = Numer obiektu, typu: {{Code|obiekt}} {{LinkPatrz|obiekt}}.
| 4 = {{Code|tekst}} | _4 = Tekst całego artykułu.
| 5 = {{Code|numer_szablonu}} {{Patrz|numer_szablonu}} | _5 = Tabela numerów dla różnych obiektów w jednej tabeli.
| 6 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _6 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 7 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _7 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
== {{Śródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}{{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}} ==
Funkcja służy do ściągania zawartości stron z zawartością, a jeżeli zawartości nie ma, to ona zwraca wartość {{Code|nil}}.
Posiada własną walidacje nazwy stron, czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe według ściśle określonych sposobów.
Funkcja odpowiednio operuje na znacznikach wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''', tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znaczniki typu: {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
{{OpisParametrów
| 1 = Zmienne obiektowe: | nagłówek1 = tak
| 2 = {{Code|self}} {{Patrz|self}} | _2 = Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 3 = Zwykłe zmienne: | nagłówek3 = tak
| 4 = {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} | _4 = Nazwa strony, której liczymy zawartość, używając funkcji: {{LzLua|mw.title.makeTitle}}, strona może nie istnieć.
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local nazwa_strony_z_kodami_html=html_modul["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](nazwa_strony);
...
local czy_istnieje;
local techniczne_modul=require("Module:Techniczne");
uchwyt_strony,tekst_artykulu,czy_istnieje = techniczne_modul.CzyStronaIstniejeJejParametry(nazwa_strony_z_kodami_html,true);
</syntaxhighlight>
| 5 = {{Code|nazwa_strony2}} {{Patrz|nazwa_strony2}} | _5 = Uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej, przeciwnie brana jest nazwa: {{Code|nazwa_strony}}, jako uchwyt.
<syntaxhighlight lang="lua">
if(not szablon_nie_opis)then
if(not dokumentacja)then
local szablonowe_modul=require("Module:Szablonowe");
tekst_artykulu=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst_artykulu,nazwa_strony2 or nazwa_strony,nil,nil,nil,nil,nil,nil,nil,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
| 6 = {{Code|czy_noinclude}} {{Patrz|czy_noinclude}} | _6 = Jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka.
| 7 = Zmienne tablicowe: | nagłówek7 = tak
| 8 = {{Code|szablony_magiczne}} {{Patrz|szablony_magiczne}} | _8 = Tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej.
| 9 = Inne zmienne: | nagłówek9 = tak
| 10 = {{Code|dokumentacja}} {{Patrz|dokumentacja}} | _10 = Określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}}.
| 11 = {{Code|czy_szablon}} {{Patrz|czy_szablon}} | _11 = Gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją.
| 12 = {{Code|nazwa_modulu_szablonu_opisu}} {{Patrz|nazwa_modulu_szablonu_opisu}} | _12 = Zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami '''{{lpg|HTML}}''' na znaki.
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
nazwa_strony_bez_kodow_html=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](nazwa_strony);
...
local tabela_nazw={};
if(szablony_magiczne)then
local nazwy_modul=require("Module:Nazwy");
szablony_magiczne["{{ROOTPAGENAME}}"]=szablony_magiczne["{{ROOTPAGENAME}}"] or nazwy_modul["NAZWAKORZENIASTRONY"](nazwa_modulu_szablonu_opisu or nazwa_strony_bez_kodow_html,tabela_nazw);
</syntaxhighlight>
| 13 = {{Code|szablon_nie_opis}} {{Patrz|szablon_nie_opis}} | _13 = Zmienna wskazująca, czy {{Code|nazwa strony}} {{LinkPatrz|nazwa strony}} wskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowany, używany wraz ze zmienną: {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}}.
| 14 = Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chcieliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:| nagłówek14 = tak
| 15 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} | _15 = Operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_ANALIZA_SPISOWA}}
| 16 = {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} | _16 = Funkcja operująca na komentarzach, przeciwnie jest używana funkcja: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}, gdzie:
<syntaxhighlight lang="lua">
local techniczne_modul=require("Module:Techniczne");
tekst_artykulu=__FUNKCJA_KOMENTARZE
and (__FUNKCJA_KOMENTARZE(tekst_artykulu))
or techniczne_modul.UsuwanieKomentarzowe(tekst_artykulu);
</syntaxhighlight>
| 17 = {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} | _17 = Funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów.
{{P|Przykład wywołania;}}
<syntaxhighlight lang="lua">
tekst_artykulu=__FUNKCJA_KONTROLNE and __FUNKCJA_KONTROLNE(tekst_artykulu) or tekst_artykulu;
</syntaxhighlight>
| 18 = {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} | _18 = Funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_analizy_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY}}
}}
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}}, operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} | _1 = Tekst do analizy, jak w funkcji nadrzędnej.
| 2 = {{Code|nazwa_modulu_szablonu_opisu}} {{LinkPatrz|nazwa_modulu_szablonu_opisu}} | _2 = Nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}.
| 3 = {{Code|nazwa_strony_bez_kodow_html}} {{Patrz|nazwa_strony_bez_kodow_html}} | _3 = Jest to nazwa strony: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, tylko z kodami '''{{lpg|HTML}}''' zamienionymi na ich odpowiedniki znakowe.
| 4 = {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}} | _4 = Tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej.
| 5 = {{Code|tabela_nazw}} {{Patrz|tabela_nazw}} | _5 = Tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, wewnątrz tej funkcji nadrzędnej.
}}
{{Hr}}
Funkcja: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}, ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica: {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt]}}, uzyskana z: {{Code|tablica_analizy_obiektow_strony_dany_moduł}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_moduł}}, jest tablicą zawsze pustą, do niej dla każdego obiektu: {{Code|obiekt}} {{LinkPatrz|obiekt}}, przywiązana jest tablica, którą zapełniamy elementami, modyfikującego tablicę: {{Code|tablica}}. W funkcji zwracanej przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}, też modyfikujemy ją. Jak piszemy {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod metatabelki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} {{Patrz|__metatablica}}, to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Ten rozdział zawiera kolejność wywołań poszczególnych kroków w funkcji.
==== Poprawność pewnych nazw ====
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]|p=Html}}}}, która z: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}}.
==== Parametry uzyskanej strony ====
* Uzyskujemy: {{Code|nazwa_strony_z_kodami_html}}, z {{Code|nazwa_strony}}, na podstawie funkcji: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]|p=Html}}}}.
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry|p=Techniczne}}}}, używając parametru: {{Code|nazwa_strony_z_kodami_html}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}} {{Patrz|uchwyt strony}}, {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} i {{Code|czy_istnieje}} {{Patrz|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów.
==== Składniki preprocesora kodu mechanizmu: {{nobold|{{NS|l=tak|k=mw|w=tak}}}} ====
* Gdy {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli: {{Code|czy_noinclude}} {{LinkPatrz|czy_noinclude}}, przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie. Ze strony są usuwane pozostałości ze znaczników wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''' i znaczników jak {{Tag|templatedata}},
* Przeciwny wypadek: wtedy: {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}}, jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione.
==== Komentarze ====
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, a jeżeli one nie istnieją, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}.
===== Usuwanie pseudoszablonów i niektórych instrukcji warunkowych =====
* Ustawiane są zmienne w: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}} {{LinkPatrz|tabela_nazw}}. Do tego celu jest używana zmienna: {{Code|nazwa_modulu_szablonu_opisu}}, lub {{Code|nazwa_strony_bez_kodow_html}}.
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}} {{Patrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}, by usunąć różne instrukcje warunkowe.
==== Specjalne elementy zmieniające wikikod ====
* Uruchamiana jest, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana jest, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
==== Kodowanie bazy danych kodów {{nobold|{{Code|{{m|Szablonowe}}}}}} ====
* Jeśli: {{Code|szablon_nie_opis}} {{LinkPatrz|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
9eby92lov008fq71ptofvjl2i6iz87q
558324
558323
2026-10-02T15:18:59Z
Persino
2851
/* {{Śródtytuł|p.SpreparowanyWikikodStrony}}{{Code|p.SpreparowanyWikikodStrony}} */
558324
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|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.SpreparowanyWikikodStrony}}{{Code|p.SpreparowanyWikikodStrony}} ==
Funkcja ściągąjąca opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Funkcja w opisach szablonów, a w niej instrukcje warunkowe podczas kodowania są rozwijane przy pomocy funkcji: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}}, a normalnie, gdy wewnątrz instrukcji warunkowych nie ma klamerek w funkcji, w składowej funkcji, tzn.: {{LinkPatrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja korzysta bezpośrednio z funkcji: {{LinkŚródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana. Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:SpreparowanyWikikodStrony(nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 2 = {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} | _2 = Nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw.
| 3 = {{Code|nazwa_modulu_szablonowa}} {{Patrz|nazwa_modulu_szablonowa}} | _3 = Nazwa modułu w wersji szablonowej, w wersji wywołaniowej.
| 4 = {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} | _4 = Przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony.
| 5 = {{Code|inkludowana}} {{Patrz|inkludowana}} | _5 = Przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej.
| 6 = Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem: | nagłówek6 = tak
| 7 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-SpreparowanyWikikodStrony}} | _7 = Funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, po kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
tekst=__FUNKCJA(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,dokumentacja,czy_niezakodowana)
</syntaxhighlight>
| 8 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-SpreparowanyWikikodStrony}} | _8 = Jeśli: {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} {{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, odkodować od postaci zakodowanej, czyli do formy dokumentacji.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul)))then
</syntaxhighlight>
| 9 = {{Code|__FUNKCJA3}} {{Patrz|__FUNKCJA3-SpreparowanyWikikodStrony}} | _9 = Funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}}, czyli: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu,nazwa_modulu_szablonowa) or nil;
</syntaxhighlight>
| 10 = Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]|p=Szablonowe}}}} {{Patrz|UstalanieNazwyWywołania}}: | nagłówek10 = tak
| 11 = {{Code|__FUNKCJA4}} {{Patrz|__FUNKCJA4-SpreparowanyWikikodStrony}} | _11 = Funkcja, np. dekodująca nazwę szablonu.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if(__FUNKCJA4)then
nazwa_szablonu,powodzenie__FUNKCJA4(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
| 12 = {{Code|__FUNKCJA5}} {{Patrz|__FUNKCJA5-SpreparowanyWikikodStrony}} | _12 = Funkcja, np. rozwijająca nazwę szablonu.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
nazwa_szablonu=__FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
</syntaxhighlight>
| 13 = Inne: | nagłówek13 = tak
| 14 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _14 = Funkcja do modyfikacji tekstu pobranego ze strony.
{{Śródtekst|uchwyt=__FUNKCJA_ANALIZA_SPISOWA|tekst=
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
tekst_artykulu=__FUNKCJA_ANALIZA_SPISOWA and __FUNKCJA_ANALIZA_SPISOWA(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw) or tekst_artykulu;
</syntaxhighlight>
}}
| 15 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _15 = Funkcje do generowania tablicy bazy kodów.
{{Śródtekst|uchwyt=__FUNKCJA_PARAMETRY|tekst=
{{P|Przykład definicji:}}
<syntaxhighlight lang="lua">
function __FUNKCJA_PARAMETRY(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_element_juz_istnieje)
...
end;
end;
</syntaxhighlight>
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
local __FUNKCJA=__FUNKCJA_PARAMETRY(obiekt);
...
__FUNKCJA(tablica,klucz,wartosc_tablicy,false);
</syntaxhighlight>
}}
}}
Definicje funkcji: {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-UstalanieNazwyWywołania}} i {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-UstalanieNazwyWywołania}}, które są potrzebne do konstrukcji wywołania funkcji: {{LinkPatrz|UstalanieNazwyWywołania}}, uzyskiwania nazwy szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} i {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}}, definicje tych funkcji:
* {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Tablica danych bazy kodów zakodowanego tekstu.
| 5 = {{Code|dokumentacja}} | _5 = Jak w: {{LinkPatrz|dokumentacja}}.
| 6 = {{Code|czy_nie_opis}} {{Patrz|czy_nie_opis}} | _6 = Czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu_caly}} {{Patrz|tekst_artykulu_caly}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} {{LinkPatrz|__FUNKCJA3-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu,nazwa_modulu_szablonowa)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_modulu}} | _1 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 2 = {{Code|nazwa_modulu_szablonowa}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory,czy_z_kluczem]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} | _1 = Nazwa szablonu do rozwinięcia.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}}. | _5 = Tabela parametrów potrzebna do szybszego działania '''{{ld|StronicowyParser|Stronicowego parsera}}'''.
| 6 = Gdy tą funkcją jest: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}}, te zmienne bezpośrednio w: {{Code|__FUNKCJA4}}, nie występują, ale za to występują w tej podanej szczególnej przykładowej funkcji, tzn. argumenty: | komórka6 = tak
| 7 = {{Code|czy_uwzgledniac_modyfikatory}} {{Patrz|czy_uwzgledniac_modyfikatory}} | _7 = Czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}}.
| 8 = {{Code|czy_z_kluczem}} {{Patrz|czy_z_kluczem}} | _8 = Czy klucze, o wzorze: {{Code|<nowiki>^klucz$</nowiki>}}, lub {{Code|<nowiki>^klucz[1-9]%d*$</nowiki>}}.
}}
Jeżeli w funkcji {{LinkPatrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}} nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}} w przeciwnym wypadku zwracane jest nazwa szablonu i wartość {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} | _1 = Jak w: {{LinkPatrz|nazwa_szablonu}}. To jest nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}.
| 2 = {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} | _2 = Tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, to jest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}}, w przypadku: {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}.
| 3 = {{Code|nazwa_modulu}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 4 = {{Code|nazwa_modulu_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{LzLua|frame:preprocess}}, w korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, z której korzysta {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}, jeżeli korzystanej tutaj funkcja zrzuciła niepowodzenie, to pierwsza wartość zwrótcone to: {{Code|nil}}, druga: {{Code|false}}, w przeciwnym wypadku zwraca nazwę rozwiniętego szablonu i drugą wartość zrzuconą: {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąć, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice:
; Przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy{{dk}} {{nobold|{{Code|czy_niezakodowana {{=}} true}}}}, i {{nobold|{{Code|czy_nie_opis {{=}} true}}}}, według funkcji{{dk}}
* {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów,
; W przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja:
* {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami.
----
: Te funkcje są wywoływane wewnątrz funkcji: {{LinkŚródtytuł|p.SpreparowanyWikikodStrony}}. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąć za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana. Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Strona, a jednocześnie uchwyt do bazy danych kodów zakodowanego tekstu, o nazwie modułu do rozwinięcia i zakodowania.
| 3 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _3 = Nazwa strony szablonowa, w postaci wywołaniowej szablonów.
| 4 = {{Code|inkludowana}} {{LinkPatrz|inkludowana}} | _4 = Zmienna, czy strona ma być interpretowana jako inkludowana.
| 5 = Zmienne funkcyjne: | nagłówek5 = tak
| 6 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _6 = Funkcja generująca zawartość, może być zmodyfikowana, na podstawie pełnej nazwy strony, używana w funkcji: jest to {{Code|__FUNKCJA3}} w: {{Code|{{sr|#FunkcjaIterajacaRozwijanegoSzablonu|p=Szablonowe}}}} {{Patrz|__FUNKCJA-FunkcjaIterajacaRozwijanegoSzablonu}}.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if((czy_niekodowane)and(__FUNKCJA))then
local wynik=__FUNKCJA(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow);
if(wynik)then
return wynik;
end;
end;
</syntaxhighlight>
| 7 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _7 = Funkcja do generowania zawartości, może być zmodyfikowana, według podanej jej wartości, używana w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|FUNKCJA2-KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, w postaci zmodyfikowanej, czyli w wersji: {{Code|__FUNKCJA2}},
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
szablon=__FUNKCJA2 and __FUNKCJA2(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or szablon;
</syntaxhighlight>
| 8 = Inne zmienne funkcyjne: | nagłówek8 = tak
| 9 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _9 = Inne operacje wykonywane na pobranym tekście.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_ANALIZA_SPISOWA}}
| 10 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _10 = Funkcja użyta do generowania tablicy bazy kodów.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY}}
}}
Funkcje {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}}, zostały już opisane w tym module, więc wystarczy opisać inne.
{{Hr}}
* Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|pelna_nazwa_szablonu}} | _1 = Pełna nazwa szablonu.
| 2 = {{Code|tabela_parametrow_szablonu}} | _2 = Tabela parametrów wywołania szablonu do rozwinięcia.
| 3 = {{Code|tabela_modyfikatorow}} | _3 = Tabela modyfikatorów danego wywołania szablonowego.
}}
{{Hr}}
* Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Zawartość elementu wikikodu według {{Code|{{m|Szablonowe}}}}.
| 2 = {{Code|obiekt}} {{Patrz|obiekt}} | _2 = Nazwa obiektu szablonowego, jak: {{Code|SZABLON}}.
| 3 = {{Code|kod}} {{Patrz|kod}} | _3 = Numer obiektu, typu: {{Code|obiekt}} {{LinkPatrz|obiekt}}.
| 4 = {{Code|tekst}} | _4 = Tekst całego artykułu.
| 5 = {{Code|numer_szablonu}} {{Patrz|numer_szablonu}} | _5 = Tabela numerów dla różnych obiektów w jednej tabeli.
| 6 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _6 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 7 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _7 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
== {{Śródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}{{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}} ==
Funkcja służy do ściągania zawartości stron z zawartością, a jeżeli zawartości nie ma, to ona zwraca wartość {{Code|nil}}.
Posiada własną walidacje nazwy stron, czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe według ściśle określonych sposobów.
Funkcja odpowiednio operuje na znacznikach wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''', tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znaczniki typu: {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
{{OpisParametrów
| 1 = Zmienne obiektowe: | nagłówek1 = tak
| 2 = {{Code|self}} {{Patrz|self}} | _2 = Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 3 = Zwykłe zmienne: | nagłówek3 = tak
| 4 = {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} | _4 = Nazwa strony, której liczymy zawartość, używając funkcji: {{LzLua|mw.title.makeTitle}}, strona może nie istnieć.
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local nazwa_strony_z_kodami_html=html_modul["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](nazwa_strony);
...
local czy_istnieje;
local techniczne_modul=require("Module:Techniczne");
uchwyt_strony,tekst_artykulu,czy_istnieje = techniczne_modul.CzyStronaIstniejeJejParametry(nazwa_strony_z_kodami_html,true);
</syntaxhighlight>
| 5 = {{Code|nazwa_strony2}} {{Patrz|nazwa_strony2}} | _5 = Uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej, przeciwnie brana jest nazwa: {{Code|nazwa_strony}}, jako uchwyt.
<syntaxhighlight lang="lua">
if(not szablon_nie_opis)then
if(not dokumentacja)then
local szablonowe_modul=require("Module:Szablonowe");
tekst_artykulu=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst_artykulu,nazwa_strony2 or nazwa_strony,nil,nil,nil,nil,nil,nil,nil,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
| 6 = {{Code|czy_noinclude}} {{Patrz|czy_noinclude}} | _6 = Jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka.
| 7 = Zmienne tablicowe: | nagłówek7 = tak
| 8 = {{Code|szablony_magiczne}} {{Patrz|szablony_magiczne}} | _8 = Tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej.
| 9 = Inne zmienne: | nagłówek9 = tak
| 10 = {{Code|dokumentacja}} {{Patrz|dokumentacja}} | _10 = Określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}}.
| 11 = {{Code|czy_szablon}} {{Patrz|czy_szablon}} | _11 = Gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją.
| 12 = {{Code|nazwa_modulu_szablonu_opisu}} {{Patrz|nazwa_modulu_szablonu_opisu}} | _12 = Zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami '''{{lpg|HTML}}''' na znaki.
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
nazwa_strony_bez_kodow_html=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](nazwa_strony);
...
local tabela_nazw={};
if(szablony_magiczne)then
local nazwy_modul=require("Module:Nazwy");
szablony_magiczne["{{ROOTPAGENAME}}"]=szablony_magiczne["{{ROOTPAGENAME}}"] or nazwy_modul["NAZWAKORZENIASTRONY"](nazwa_modulu_szablonu_opisu or nazwa_strony_bez_kodow_html,tabela_nazw);
</syntaxhighlight>
| 13 = {{Code|szablon_nie_opis}} {{Patrz|szablon_nie_opis}} | _13 = Zmienna wskazująca, czy {{Code|nazwa strony}} {{LinkPatrz|nazwa strony}} wskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowany, używany wraz ze zmienną: {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}}.
| 14 = Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chcieliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:| nagłówek14 = tak
| 15 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} | _15 = Operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_ANALIZA_SPISOWA}}
| 16 = {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} | _16 = Funkcja operująca na komentarzach, przeciwnie jest używana funkcja: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}, gdzie:
<syntaxhighlight lang="lua">
local techniczne_modul=require("Module:Techniczne");
tekst_artykulu=__FUNKCJA_KOMENTARZE
and (__FUNKCJA_KOMENTARZE(tekst_artykulu))
or techniczne_modul.UsuwanieKomentarzowe(tekst_artykulu);
</syntaxhighlight>
| 17 = {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} | _17 = Funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów.
{{P|Przykład wywołania;}}
<syntaxhighlight lang="lua">
tekst_artykulu=__FUNKCJA_KONTROLNE and __FUNKCJA_KONTROLNE(tekst_artykulu) or tekst_artykulu;
</syntaxhighlight>
| 18 = {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} | _18 = Funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_analizy_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY}}
}}
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}}, operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} | _1 = Tekst do analizy, jak w funkcji nadrzędnej.
| 2 = {{Code|nazwa_modulu_szablonu_opisu}} {{LinkPatrz|nazwa_modulu_szablonu_opisu}} | _2 = Nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}.
| 3 = {{Code|nazwa_strony_bez_kodow_html}} {{Patrz|nazwa_strony_bez_kodow_html}} | _3 = Jest to nazwa strony: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, tylko z kodami '''{{lpg|HTML}}''' zamienionymi na ich odpowiedniki znakowe.
| 4 = {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}} | _4 = Tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej.
| 5 = {{Code|tabela_nazw}} {{Patrz|tabela_nazw}} | _5 = Tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, wewnątrz tej funkcji nadrzędnej.
}}
{{Hr}}
Funkcja: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}, ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica: {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt]}}, uzyskana z: {{Code|tablica_analizy_obiektow_strony_dany_moduł}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_moduł}}, jest tablicą zawsze pustą, do niej dla każdego obiektu: {{Code|obiekt}} {{LinkPatrz|obiekt}}, przywiązana jest tablica, którą zapełniamy elementami, modyfikującego tablicę: {{Code|tablica}}. W funkcji zwracanej przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}, też modyfikujemy ją. Jak piszemy {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod metatabelki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} {{Patrz|__metatablica}}, to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Ten rozdział zawiera kolejność wywołań poszczególnych kroków w funkcji.
==== Poprawność pewnych nazw ====
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]|p=Html}}}}, która z: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}}.
==== Parametry uzyskanej strony ====
* Uzyskujemy: {{Code|nazwa_strony_z_kodami_html}}, z {{Code|nazwa_strony}}, na podstawie funkcji: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]|p=Html}}}}.
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry|p=Techniczne}}}}, używając parametru: {{Code|nazwa_strony_z_kodami_html}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}} {{Patrz|uchwyt strony}}, {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} i {{Code|czy_istnieje}} {{Patrz|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów.
==== Składniki preprocesora kodu mechanizmu: {{nobold|{{NS|l=tak|k=mw|w=tak}}}} ====
* Gdy {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli: {{Code|czy_noinclude}} {{LinkPatrz|czy_noinclude}}, przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie. Ze strony są usuwane pozostałości ze znaczników wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''' i znaczników jak {{Tag|templatedata}},
* Przeciwny wypadek: wtedy: {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}}, jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione.
==== Komentarze ====
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, a jeżeli one nie istnieją, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}.
===== Usuwanie pseudoszablonów i niektórych instrukcji warunkowych =====
* Ustawiane są zmienne w: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}} {{LinkPatrz|tabela_nazw}}. Do tego celu jest używana zmienna: {{Code|nazwa_modulu_szablonu_opisu}}, lub {{Code|nazwa_strony_bez_kodow_html}}.
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}} {{Patrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}, by usunąć różne instrukcje warunkowe.
==== Specjalne elementy zmieniające wikikod ====
* Uruchamiana jest, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana jest, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
==== Kodowanie bazy danych kodów {{nobold|{{Code|{{m|Szablonowe}}}}}} ====
* Jeśli: {{Code|szablon_nie_opis}} {{LinkPatrz|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
nt29tkgkd5csjftu3ntpqgrmq5qka84
558325
558324
2026-10-02T15:21:09Z
Persino
2851
/* {{Śródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}{{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}} */
558325
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|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.SpreparowanyWikikodStrony}}{{Code|p.SpreparowanyWikikodStrony}} ==
Funkcja ściągąjąca opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Funkcja w opisach szablonów, a w niej instrukcje warunkowe podczas kodowania są rozwijane przy pomocy funkcji: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}}, a normalnie, gdy wewnątrz instrukcji warunkowych nie ma klamerek w funkcji, w składowej funkcji, tzn.: {{LinkPatrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja korzysta bezpośrednio z funkcji: {{LinkŚródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana. Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:SpreparowanyWikikodStrony(nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 2 = {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} | _2 = Nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw.
| 3 = {{Code|nazwa_modulu_szablonowa}} {{Patrz|nazwa_modulu_szablonowa}} | _3 = Nazwa modułu w wersji szablonowej, w wersji wywołaniowej.
| 4 = {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} | _4 = Przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony.
| 5 = {{Code|inkludowana}} {{Patrz|inkludowana}} | _5 = Przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej.
| 6 = Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem: | nagłówek6 = tak
| 7 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-SpreparowanyWikikodStrony}} | _7 = Funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, po kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
tekst=__FUNKCJA(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,dokumentacja,czy_niezakodowana)
</syntaxhighlight>
| 8 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-SpreparowanyWikikodStrony}} | _8 = Jeśli: {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} {{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, odkodować od postaci zakodowanej, czyli do formy dokumentacji.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul)))then
</syntaxhighlight>
| 9 = {{Code|__FUNKCJA3}} {{Patrz|__FUNKCJA3-SpreparowanyWikikodStrony}} | _9 = Funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}}, czyli: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu,nazwa_modulu_szablonowa) or nil;
</syntaxhighlight>
| 10 = Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]|p=Szablonowe}}}} {{Patrz|UstalanieNazwyWywołania}}: | nagłówek10 = tak
| 11 = {{Code|__FUNKCJA4}} {{Patrz|__FUNKCJA4-SpreparowanyWikikodStrony}} | _11 = Funkcja, np. dekodująca nazwę szablonu.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if(__FUNKCJA4)then
nazwa_szablonu,powodzenie__FUNKCJA4(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
| 12 = {{Code|__FUNKCJA5}} {{Patrz|__FUNKCJA5-SpreparowanyWikikodStrony}} | _12 = Funkcja, np. rozwijająca nazwę szablonu.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
nazwa_szablonu=__FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
</syntaxhighlight>
| 13 = Inne: | nagłówek13 = tak
| 14 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _14 = Funkcja do modyfikacji tekstu pobranego ze strony.
{{Śródtekst|uchwyt=__FUNKCJA_ANALIZA_SPISOWA|tekst=
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
tekst_artykulu=__FUNKCJA_ANALIZA_SPISOWA and __FUNKCJA_ANALIZA_SPISOWA(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw) or tekst_artykulu;
</syntaxhighlight>
}}
| 15 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _15 = Funkcje do generowania tablicy bazy kodów.
{{Śródtekst|uchwyt=__FUNKCJA_PARAMETRY|tekst=
{{P|Przykład definicji:}}
<syntaxhighlight lang="lua">
function __FUNKCJA_PARAMETRY(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_element_juz_istnieje)
...
end;
end;
</syntaxhighlight>
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
local __FUNKCJA=__FUNKCJA_PARAMETRY(obiekt);
...
__FUNKCJA(tablica,klucz,wartosc_tablicy,false);
</syntaxhighlight>
}}
}}
Definicje funkcji: {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-UstalanieNazwyWywołania}} i {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-UstalanieNazwyWywołania}}, które są potrzebne do konstrukcji wywołania funkcji: {{LinkPatrz|UstalanieNazwyWywołania}}, uzyskiwania nazwy szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} i {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}}, definicje tych funkcji:
* {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Tablica danych bazy kodów zakodowanego tekstu.
| 5 = {{Code|dokumentacja}} | _5 = Jak w: {{LinkPatrz|dokumentacja}}.
| 6 = {{Code|czy_nie_opis}} {{Patrz|czy_nie_opis}} | _6 = Czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu_caly}} {{Patrz|tekst_artykulu_caly}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} {{LinkPatrz|__FUNKCJA3-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu,nazwa_modulu_szablonowa)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_modulu}} | _1 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 2 = {{Code|nazwa_modulu_szablonowa}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory,czy_z_kluczem]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} | _1 = Nazwa szablonu do rozwinięcia.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}}. | _5 = Tabela parametrów potrzebna do szybszego działania '''{{ld|StronicowyParser|Stronicowego parsera}}'''.
| 6 = Gdy tą funkcją jest: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}}, te zmienne bezpośrednio w: {{Code|__FUNKCJA4}}, nie występują, ale za to występują w tej podanej szczególnej przykładowej funkcji, tzn. argumenty: | komórka6 = tak
| 7 = {{Code|czy_uwzgledniac_modyfikatory}} {{Patrz|czy_uwzgledniac_modyfikatory}} | _7 = Czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}}.
| 8 = {{Code|czy_z_kluczem}} {{Patrz|czy_z_kluczem}} | _8 = Czy klucze, o wzorze: {{Code|<nowiki>^klucz$</nowiki>}}, lub {{Code|<nowiki>^klucz[1-9]%d*$</nowiki>}}.
}}
Jeżeli w funkcji {{LinkPatrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}} nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}} w przeciwnym wypadku zwracane jest nazwa szablonu i wartość {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} | _1 = Jak w: {{LinkPatrz|nazwa_szablonu}}. To jest nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}.
| 2 = {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} | _2 = Tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, to jest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}}, w przypadku: {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}.
| 3 = {{Code|nazwa_modulu}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 4 = {{Code|nazwa_modulu_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{LzLua|frame:preprocess}}, w korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, z której korzysta {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}, jeżeli korzystanej tutaj funkcja zrzuciła niepowodzenie, to pierwsza wartość zwrótcone to: {{Code|nil}}, druga: {{Code|false}}, w przeciwnym wypadku zwraca nazwę rozwiniętego szablonu i drugą wartość zrzuconą: {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąć, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice:
; Przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy{{dk}} {{nobold|{{Code|czy_niezakodowana {{=}} true}}}}, i {{nobold|{{Code|czy_nie_opis {{=}} true}}}}, według funkcji{{dk}}
* {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów,
; W przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja:
* {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami.
----
: Te funkcje są wywoływane wewnątrz funkcji: {{LinkŚródtytuł|p.SpreparowanyWikikodStrony}}. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąć za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana. Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Strona, a jednocześnie uchwyt do bazy danych kodów zakodowanego tekstu, o nazwie modułu do rozwinięcia i zakodowania.
| 3 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _3 = Nazwa strony szablonowa, w postaci wywołaniowej szablonów.
| 4 = {{Code|inkludowana}} {{LinkPatrz|inkludowana}} | _4 = Zmienna, czy strona ma być interpretowana jako inkludowana.
| 5 = Zmienne funkcyjne: | nagłówek5 = tak
| 6 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _6 = Funkcja generująca zawartość, może być zmodyfikowana, na podstawie pełnej nazwy strony, używana w funkcji: jest to {{Code|__FUNKCJA3}} w: {{Code|{{sr|#FunkcjaIterajacaRozwijanegoSzablonu|p=Szablonowe}}}} {{Patrz|__FUNKCJA-FunkcjaIterajacaRozwijanegoSzablonu}}.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if((czy_niekodowane)and(__FUNKCJA))then
local wynik=__FUNKCJA(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow);
if(wynik)then
return wynik;
end;
end;
</syntaxhighlight>
| 7 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _7 = Funkcja do generowania zawartości, może być zmodyfikowana, według podanej jej wartości, używana w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|FUNKCJA2-KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, w postaci zmodyfikowanej, czyli w wersji: {{Code|__FUNKCJA2}},
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
szablon=__FUNKCJA2 and __FUNKCJA2(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or szablon;
</syntaxhighlight>
| 8 = Inne zmienne funkcyjne: | nagłówek8 = tak
| 9 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _9 = Inne operacje wykonywane na pobranym tekście.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_ANALIZA_SPISOWA}}
| 10 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _10 = Funkcja użyta do generowania tablicy bazy kodów.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY}}
}}
Funkcje {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}}, zostały już opisane w tym module, więc wystarczy opisać inne.
{{Hr}}
* Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|pelna_nazwa_szablonu}} | _1 = Pełna nazwa szablonu.
| 2 = {{Code|tabela_parametrow_szablonu}} | _2 = Tabela parametrów wywołania szablonu do rozwinięcia.
| 3 = {{Code|tabela_modyfikatorow}} | _3 = Tabela modyfikatorów danego wywołania szablonowego.
}}
{{Hr}}
* Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Zawartość elementu wikikodu według {{Code|{{m|Szablonowe}}}}.
| 2 = {{Code|obiekt}} {{Patrz|obiekt}} | _2 = Nazwa obiektu szablonowego, jak: {{Code|SZABLON}}.
| 3 = {{Code|kod}} {{Patrz|kod}} | _3 = Numer obiektu, typu: {{Code|obiekt}} {{LinkPatrz|obiekt}}.
| 4 = {{Code|tekst}} | _4 = Tekst całego artykułu.
| 5 = {{Code|numer_szablonu}} {{Patrz|numer_szablonu}} | _5 = Tabela numerów dla różnych obiektów w jednej tabeli.
| 6 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _6 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 7 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _7 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
== {{Śródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}{{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}} ==
Funkcja służy do ściągania zawartości stron z zawartością, a jeżeli zawartości nie ma, to ona zwraca wartość {{Code|nil}}.
Posiada własną walidacje nazwy stron, czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe według ściśle określonych sposobów.
Funkcja odpowiednio operuje na znacznikach wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''', tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znaczniki typu: {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
{{OpisParametrów
| 1 = Zmienne obiektowe: | nagłówek1 = tak
| 2 = {{Code|self}} {{Patrz|self}} | _2 = Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 3 = Zwykłe zmienne: | nagłówek3 = tak
| 4 = {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} | _4 = Nazwa strony, której liczymy zawartość, używając funkcji: {{LzLua|mw.title.makeTitle}}, strona może nie istnieć.
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local nazwa_strony_z_kodami_html=html_modul["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](nazwa_strony);
...
local czy_istnieje;
local techniczne_modul=require("Module:Techniczne");
uchwyt_strony,tekst_artykulu,czy_istnieje = techniczne_modul.CzyStronaIstniejeJejParametry(nazwa_strony_z_kodami_html,true);
</syntaxhighlight>
| 5 = {{Code|nazwa_strony2}} {{Patrz|nazwa_strony2}} | _5 = Uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej, przeciwnie brana jest nazwa: {{Code|nazwa_strony}}, jako uchwyt.
<syntaxhighlight lang="lua">
if(not szablon_nie_opis)then
if(not dokumentacja)then
local szablonowe_modul=require("Module:Szablonowe");
tekst_artykulu=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst_artykulu,nazwa_strony2 or nazwa_strony,nil,nil,nil,nil,nil,nil,nil,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
| 6 = {{Code|czy_noinclude}} {{Patrz|czy_noinclude}} | _6 = Jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka.
| 7 = Zmienne tablicowe: | nagłówek7 = tak
| 8 = {{Code|szablony_magiczne}} {{Patrz|szablony_magiczne}} | _8 = Tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej.
| 9 = Inne zmienne: | nagłówek9 = tak
| 10 = {{Code|dokumentacja}} {{Patrz|dokumentacja}} | _10 = Określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}}.
| 11 = {{Code|czy_szablon}} {{Patrz|czy_szablon}} | _11 = Gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją.
| 12 = {{Code|nazwa_modulu_szablonu_opisu}} {{Patrz|nazwa_modulu_szablonu_opisu}} | _12 = Zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami '''{{lpg|HTML}}''' na znaki.
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
nazwa_strony_bez_kodow_html=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](nazwa_strony);
...
local tabela_nazw={};
if(szablony_magiczne)then
local nazwy_modul=require("Module:Nazwy");
szablony_magiczne["{{ROOTPAGENAME}}"]=szablony_magiczne["{{ROOTPAGENAME}}"] or nazwy_modul["NAZWAKORZENIASTRONY"](nazwa_modulu_szablonu_opisu or nazwa_strony_bez_kodow_html,tabela_nazw);
</syntaxhighlight>
| 13 = {{Code|szablon_nie_opis}} {{Patrz|szablon_nie_opis}} | _13 = Zmienna wskazująca, czy {{Code|nazwa strony}} {{LinkPatrz|nazwa strony}} wskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowany, używany wraz ze zmienną: {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}}.
| 14 = Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chcieliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:| nagłówek14 = tak
| 15 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} | _15 = Operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_ANALIZA_SPISOWA}}
| 16 = {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} | _16 = Funkcja operująca na komentarzach, przeciwnie jest używana funkcja: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}, gdzie:
<syntaxhighlight lang="lua">
local techniczne_modul=require("Module:Techniczne");
tekst_artykulu=__FUNKCJA_KOMENTARZE
and (__FUNKCJA_KOMENTARZE(tekst_artykulu))
or techniczne_modul.UsuwanieKomentarzowe(tekst_artykulu);
</syntaxhighlight>
| 17 = {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} | _17 = Funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów.
{{P|Przykład wywołania;}}
<syntaxhighlight lang="lua">
tekst_artykulu=__FUNKCJA_KONTROLNE and __FUNKCJA_KONTROLNE(tekst_artykulu) or tekst_artykulu;
</syntaxhighlight>
| 18 = {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} | _18 = Funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_analizy_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY}}
}}
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}}, operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} | _1 = Tekst do analizy, jak w funkcji nadrzędnej.
| 2 = {{Code|nazwa_modulu_szablonu_opisu}} {{LinkPatrz|nazwa_modulu_szablonu_opisu}} | _2 = Nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}.
| 3 = {{Code|nazwa_strony_bez_kodow_html}} {{Patrz|nazwa_strony_bez_kodow_html}} | _3 = Jest to nazwa strony: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, tylko z kodami '''{{lpg|HTML}}''' zamienionymi na ich odpowiedniki znakowe.
| 4 = {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}} | _4 = Tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej.
| 5 = {{Code|tabela_nazw}} {{Patrz|tabela_nazw}} | _5 = Tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, wewnątrz tej funkcji nadrzędnej.
}}
{{Hr}}
Funkcja: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}, ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica: {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt]}}, uzyskana z: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, jest tablicą zawsze pustą, do niej dla każdego obiektu: {{Code|obiekt}} {{LinkPatrz|obiekt}}, przywiązana jest tablica, którą zapełniamy elementami, modyfikującego tablicę: {{Code|tablica}}. W funkcji zwracanej przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}, też modyfikujemy ją. Jak piszemy {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod metatabelki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} {{Patrz|__metatablica}}, to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Ten rozdział zawiera kolejność wywołań poszczególnych kroków w funkcji.
==== Poprawność pewnych nazw ====
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]|p=Html}}}}, która z: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}}.
==== Parametry uzyskanej strony ====
* Uzyskujemy: {{Code|nazwa_strony_z_kodami_html}}, z {{Code|nazwa_strony}}, na podstawie funkcji: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]|p=Html}}}}.
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry|p=Techniczne}}}}, używając parametru: {{Code|nazwa_strony_z_kodami_html}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}} {{Patrz|uchwyt strony}}, {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} i {{Code|czy_istnieje}} {{Patrz|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów.
==== Składniki preprocesora kodu mechanizmu: {{nobold|{{NS|l=tak|k=mw|w=tak}}}} ====
* Gdy {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli: {{Code|czy_noinclude}} {{LinkPatrz|czy_noinclude}}, przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie. Ze strony są usuwane pozostałości ze znaczników wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''' i znaczników jak {{Tag|templatedata}},
* Przeciwny wypadek: wtedy: {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}}, jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione.
==== Komentarze ====
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, a jeżeli one nie istnieją, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}.
===== Usuwanie pseudoszablonów i niektórych instrukcji warunkowych =====
* Ustawiane są zmienne w: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}} {{LinkPatrz|tabela_nazw}}. Do tego celu jest używana zmienna: {{Code|nazwa_modulu_szablonu_opisu}}, lub {{Code|nazwa_strony_bez_kodow_html}}.
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}} {{Patrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}, by usunąć różne instrukcje warunkowe.
==== Specjalne elementy zmieniające wikikod ====
* Uruchamiana jest, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana jest, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
==== Kodowanie bazy danych kodów {{nobold|{{Code|{{m|Szablonowe}}}}}} ====
* Jeśli: {{Code|szablon_nie_opis}} {{LinkPatrz|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
fjf1640204dnhi78hrlp545pyoqmvcu
558326
558325
2026-10-02T15:23:20Z
Persino
2851
/* {{Śródtytuł|p.SpreparowanyWikikodStrony}}{{Code|p.SpreparowanyWikikodStrony}} */
558326
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|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.SpreparowanyWikikodStrony}}{{Code|p.SpreparowanyWikikodStrony}} ==
Funkcja ściągąjąca opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Funkcja w opisach szablonów, a w niej instrukcje warunkowe podczas kodowania są rozwijane przy pomocy funkcji: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}}, a normalnie, gdy wewnątrz instrukcji warunkowych nie ma klamerek w funkcji, w składowej funkcji, tzn.: {{LinkPatrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja korzysta bezpośrednio z funkcji: {{LinkŚródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana. Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję, np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:SpreparowanyWikikodStrony(nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 2 = {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} | _2 = Nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw.
| 3 = {{Code|nazwa_modulu_szablonowa}} {{Patrz|nazwa_modulu_szablonowa}} | _3 = Nazwa modułu w wersji szablonowej, w wersji wywołaniowej.
| 4 = {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} | _4 = Przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony.
| 5 = {{Code|inkludowana}} {{Patrz|inkludowana}} | _5 = Przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej.
| 6 = Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem: | nagłówek6 = tak
| 7 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-SpreparowanyWikikodStrony}} | _7 = Funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, po kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
tekst=__FUNKCJA(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,dokumentacja,czy_niezakodowana)
</syntaxhighlight>
| 8 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-SpreparowanyWikikodStrony}} | _8 = Jeśli: {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} {{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, odkodować od postaci zakodowanej, czyli do formy dokumentacji.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul)))then
</syntaxhighlight>
| 9 = {{Code|__FUNKCJA3}} {{Patrz|__FUNKCJA3-SpreparowanyWikikodStrony}} | _9 = Funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}}, czyli: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu,nazwa_modulu_szablonowa) or nil;
</syntaxhighlight>
| 10 = Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]|p=Szablonowe}}}} {{Patrz|UstalanieNazwyWywołania}}: | nagłówek10 = tak
| 11 = {{Code|__FUNKCJA4}} {{Patrz|__FUNKCJA4-SpreparowanyWikikodStrony}} | _11 = Funkcja, np. dekodująca nazwę szablonu.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if(__FUNKCJA4)then
nazwa_szablonu,powodzenie__FUNKCJA4(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
| 12 = {{Code|__FUNKCJA5}} {{Patrz|__FUNKCJA5-SpreparowanyWikikodStrony}} | _12 = Funkcja, np. rozwijająca nazwę szablonu.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
nazwa_szablonu=__FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
</syntaxhighlight>
| 13 = Inne: | nagłówek13 = tak
| 14 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _14 = Funkcja do modyfikacji tekstu pobranego ze strony.
{{Śródtekst|uchwyt=__FUNKCJA_ANALIZA_SPISOWA|tekst=
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
tekst_artykulu=__FUNKCJA_ANALIZA_SPISOWA and __FUNKCJA_ANALIZA_SPISOWA(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw) or tekst_artykulu;
</syntaxhighlight>
}}
| 15 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _15 = Funkcje do generowania tablicy bazy kodów.
{{Śródtekst|uchwyt=__FUNKCJA_PARAMETRY|tekst=
{{P|Przykład definicji:}}
<syntaxhighlight lang="lua">
function __FUNKCJA_PARAMETRY(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_element_juz_istnieje)
...
end;
end;
</syntaxhighlight>
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
local __FUNKCJA=__FUNKCJA_PARAMETRY(obiekt);
...
__FUNKCJA(tablica,klucz,wartosc_tablicy,false);
</syntaxhighlight>
}}
}}
Definicje funkcji: {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-UstalanieNazwyWywołania}} i {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-UstalanieNazwyWywołania}}, które są potrzebne do konstrukcji wywołania funkcji: {{LinkPatrz|UstalanieNazwyWywołania}}, uzyskiwania nazwy szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} i {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}}, definicje tych funkcji:
* {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Tablica danych bazy kodów zakodowanego tekstu.
| 5 = {{Code|dokumentacja}} | _5 = Jak w: {{LinkPatrz|dokumentacja}}.
| 6 = {{Code|czy_nie_opis}} {{Patrz|czy_nie_opis}} | _6 = Czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu_caly}} {{Patrz|tekst_artykulu_caly}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} {{LinkPatrz|__FUNKCJA3-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu,nazwa_modulu_szablonowa)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_modulu}} | _1 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 2 = {{Code|nazwa_modulu_szablonowa}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory,czy_z_kluczem]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} | _1 = Nazwa szablonu do rozwinięcia.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}}. | _5 = Tabela parametrów potrzebna do szybszego działania '''{{ld|StronicowyParser|Stronicowego parsera}}'''.
| 6 = Gdy tą funkcją jest: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}}, te zmienne bezpośrednio w: {{Code|__FUNKCJA4}}, nie występują, ale za to występują w tej podanej szczególnej przykładowej funkcji, tzn. argumenty: | komórka6 = tak
| 7 = {{Code|czy_uwzgledniac_modyfikatory}} {{Patrz|czy_uwzgledniac_modyfikatory}} | _7 = Czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}}.
| 8 = {{Code|czy_z_kluczem}} {{Patrz|czy_z_kluczem}} | _8 = Czy klucze, o wzorze: {{Code|<nowiki>^klucz$</nowiki>}}, lub {{Code|<nowiki>^klucz[1-9]%d*$</nowiki>}}.
}}
Jeżeli w funkcji {{LinkPatrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}} nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}} w przeciwnym wypadku zwracane jest nazwa szablonu i wartość {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} | _1 = Jak w: {{LinkPatrz|nazwa_szablonu}}. To jest nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}.
| 2 = {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} | _2 = Tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, to jest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}}, w przypadku: {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}.
| 3 = {{Code|nazwa_modulu}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 4 = {{Code|nazwa_modulu_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{LzLua|frame:preprocess}}, w korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, z której korzysta {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}, jeżeli korzystanej tutaj funkcja zrzuciła niepowodzenie, to pierwsza wartość zwrótcone to: {{Code|nil}}, druga: {{Code|false}}, w przeciwnym wypadku zwraca nazwę rozwiniętego szablonu i drugą wartość zrzuconą: {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąć, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice:
; Przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy{{dk}} {{nobold|{{Code|czy_niezakodowana {{=}} true}}}}, i {{nobold|{{Code|czy_nie_opis {{=}} true}}}}, według funkcji{{dk}}
* {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów,
; W przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja:
* {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami.
----
: Te funkcje są wywoływane wewnątrz funkcji: {{LinkŚródtytuł|p.SpreparowanyWikikodStrony}}. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąć za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana. Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Strona, a jednocześnie uchwyt do bazy danych kodów zakodowanego tekstu, o nazwie modułu do rozwinięcia i zakodowania.
| 3 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _3 = Nazwa strony szablonowa, w postaci wywołaniowej szablonów.
| 4 = {{Code|inkludowana}} {{LinkPatrz|inkludowana}} | _4 = Zmienna, czy strona ma być interpretowana jako inkludowana.
| 5 = Zmienne funkcyjne: | nagłówek5 = tak
| 6 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _6 = Funkcja generująca zawartość, może być zmodyfikowana, na podstawie pełnej nazwy strony, używana w funkcji: jest to {{Code|__FUNKCJA3}} w: {{Code|{{sr|#FunkcjaIterajacaRozwijanegoSzablonu|p=Szablonowe}}}} {{Patrz|__FUNKCJA-FunkcjaIterajacaRozwijanegoSzablonu}}.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if((czy_niekodowane)and(__FUNKCJA))then
local wynik=__FUNKCJA(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow);
if(wynik)then
return wynik;
end;
end;
</syntaxhighlight>
| 7 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _7 = Funkcja do generowania zawartości, może być zmodyfikowana, według podanej jej wartości, używana w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|FUNKCJA2-KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, w postaci zmodyfikowanej, czyli w wersji: {{Code|__FUNKCJA2}},
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
szablon=__FUNKCJA2 and __FUNKCJA2(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or szablon;
</syntaxhighlight>
| 8 = Inne zmienne funkcyjne: | nagłówek8 = tak
| 9 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _9 = Inne operacje wykonywane na pobranym tekście.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_ANALIZA_SPISOWA}}
| 10 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _10 = Funkcja użyta do generowania tablicy bazy kodów.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY}}
}}
Funkcje {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}}, zostały już opisane w tym module, więc wystarczy opisać inne.
{{Hr}}
* Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|pelna_nazwa_szablonu}} | _1 = Pełna nazwa szablonu.
| 2 = {{Code|tabela_parametrow_szablonu}} | _2 = Tabela parametrów wywołania szablonu do rozwinięcia.
| 3 = {{Code|tabela_modyfikatorow}} | _3 = Tabela modyfikatorów danego wywołania szablonowego.
}}
{{Hr}}
* Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Zawartość elementu wikikodu według {{Code|{{m|Szablonowe}}}}.
| 2 = {{Code|obiekt}} {{Patrz|obiekt}} | _2 = Nazwa obiektu szablonowego, jak: {{Code|SZABLON}}.
| 3 = {{Code|kod}} {{Patrz|kod}} | _3 = Numer obiektu, typu: {{Code|obiekt}} {{LinkPatrz|obiekt}}.
| 4 = {{Code|tekst}} | _4 = Tekst całego artykułu.
| 5 = {{Code|numer_szablonu}} {{Patrz|numer_szablonu}} | _5 = Tabela numerów dla różnych obiektów w jednej tabeli.
| 6 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _6 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 7 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _7 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
== {{Śródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}{{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}} ==
Funkcja służy do ściągania zawartości stron z zawartością, a jeżeli zawartości nie ma, to ona zwraca wartość {{Code|nil}}.
Posiada własną walidacje nazwy stron, czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe według ściśle określonych sposobów.
Funkcja odpowiednio operuje na znacznikach wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''', tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znaczniki typu: {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
{{OpisParametrów
| 1 = Zmienne obiektowe: | nagłówek1 = tak
| 2 = {{Code|self}} {{Patrz|self}} | _2 = Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 3 = Zwykłe zmienne: | nagłówek3 = tak
| 4 = {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} | _4 = Nazwa strony, której liczymy zawartość, używając funkcji: {{LzLua|mw.title.makeTitle}}, strona może nie istnieć.
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local nazwa_strony_z_kodami_html=html_modul["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](nazwa_strony);
...
local czy_istnieje;
local techniczne_modul=require("Module:Techniczne");
uchwyt_strony,tekst_artykulu,czy_istnieje = techniczne_modul.CzyStronaIstniejeJejParametry(nazwa_strony_z_kodami_html,true);
</syntaxhighlight>
| 5 = {{Code|nazwa_strony2}} {{Patrz|nazwa_strony2}} | _5 = Uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej, przeciwnie brana jest nazwa: {{Code|nazwa_strony}}, jako uchwyt.
<syntaxhighlight lang="lua">
if(not szablon_nie_opis)then
if(not dokumentacja)then
local szablonowe_modul=require("Module:Szablonowe");
tekst_artykulu=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst_artykulu,nazwa_strony2 or nazwa_strony,nil,nil,nil,nil,nil,nil,nil,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
| 6 = {{Code|czy_noinclude}} {{Patrz|czy_noinclude}} | _6 = Jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka.
| 7 = Zmienne tablicowe: | nagłówek7 = tak
| 8 = {{Code|szablony_magiczne}} {{Patrz|szablony_magiczne}} | _8 = Tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej.
| 9 = Inne zmienne: | nagłówek9 = tak
| 10 = {{Code|dokumentacja}} {{Patrz|dokumentacja}} | _10 = Określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}}.
| 11 = {{Code|czy_szablon}} {{Patrz|czy_szablon}} | _11 = Gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją.
| 12 = {{Code|nazwa_modulu_szablonu_opisu}} {{Patrz|nazwa_modulu_szablonu_opisu}} | _12 = Zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami '''{{lpg|HTML}}''' na znaki.
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
nazwa_strony_bez_kodow_html=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](nazwa_strony);
...
local tabela_nazw={};
if(szablony_magiczne)then
local nazwy_modul=require("Module:Nazwy");
szablony_magiczne["{{ROOTPAGENAME}}"]=szablony_magiczne["{{ROOTPAGENAME}}"] or nazwy_modul["NAZWAKORZENIASTRONY"](nazwa_modulu_szablonu_opisu or nazwa_strony_bez_kodow_html,tabela_nazw);
</syntaxhighlight>
| 13 = {{Code|szablon_nie_opis}} {{Patrz|szablon_nie_opis}} | _13 = Zmienna wskazująca, czy {{Code|nazwa strony}} {{LinkPatrz|nazwa strony}} wskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowany, używany wraz ze zmienną: {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}}.
| 14 = Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chcieliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:| nagłówek14 = tak
| 15 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} | _15 = Operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_ANALIZA_SPISOWA}}
| 16 = {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} | _16 = Funkcja operująca na komentarzach, przeciwnie jest używana funkcja: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}, gdzie:
<syntaxhighlight lang="lua">
local techniczne_modul=require("Module:Techniczne");
tekst_artykulu=__FUNKCJA_KOMENTARZE
and (__FUNKCJA_KOMENTARZE(tekst_artykulu))
or techniczne_modul.UsuwanieKomentarzowe(tekst_artykulu);
</syntaxhighlight>
| 17 = {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} | _17 = Funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów.
{{P|Przykład wywołania;}}
<syntaxhighlight lang="lua">
tekst_artykulu=__FUNKCJA_KONTROLNE and __FUNKCJA_KONTROLNE(tekst_artykulu) or tekst_artykulu;
</syntaxhighlight>
| 18 = {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} | _18 = Funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_analizy_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY}}
}}
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}}, operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} | _1 = Tekst do analizy, jak w funkcji nadrzędnej.
| 2 = {{Code|nazwa_modulu_szablonu_opisu}} {{LinkPatrz|nazwa_modulu_szablonu_opisu}} | _2 = Nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}.
| 3 = {{Code|nazwa_strony_bez_kodow_html}} {{Patrz|nazwa_strony_bez_kodow_html}} | _3 = Jest to nazwa strony: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, tylko z kodami '''{{lpg|HTML}}''' zamienionymi na ich odpowiedniki znakowe.
| 4 = {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}} | _4 = Tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej.
| 5 = {{Code|tabela_nazw}} {{Patrz|tabela_nazw}} | _5 = Tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, wewnątrz tej funkcji nadrzędnej.
}}
{{Hr}}
Funkcja: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}, ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica: {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt]}}, uzyskana z: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, jest tablicą zawsze pustą, do niej dla każdego obiektu: {{Code|obiekt}} {{LinkPatrz|obiekt}}, przywiązana jest tablica, którą zapełniamy elementami, modyfikującego tablicę: {{Code|tablica}}. W funkcji zwracanej przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}, też modyfikujemy ją. Jak piszemy {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod metatabelki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} {{Patrz|__metatablica}}, to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Ten rozdział zawiera kolejność wywołań poszczególnych kroków w funkcji.
==== Poprawność pewnych nazw ====
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]|p=Html}}}}, która z: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}}.
==== Parametry uzyskanej strony ====
* Uzyskujemy: {{Code|nazwa_strony_z_kodami_html}}, z {{Code|nazwa_strony}}, na podstawie funkcji: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]|p=Html}}}}.
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry|p=Techniczne}}}}, używając parametru: {{Code|nazwa_strony_z_kodami_html}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}} {{Patrz|uchwyt strony}}, {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} i {{Code|czy_istnieje}} {{Patrz|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów.
==== Składniki preprocesora kodu mechanizmu: {{nobold|{{NS|l=tak|k=mw|w=tak}}}} ====
* Gdy {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli: {{Code|czy_noinclude}} {{LinkPatrz|czy_noinclude}}, przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie. Ze strony są usuwane pozostałości ze znaczników wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''' i znaczników jak {{Tag|templatedata}},
* Przeciwny wypadek: wtedy: {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}}, jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione.
==== Komentarze ====
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, a jeżeli one nie istnieją, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}.
===== Usuwanie pseudoszablonów i niektórych instrukcji warunkowych =====
* Ustawiane są zmienne w: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}} {{LinkPatrz|tabela_nazw}}. Do tego celu jest używana zmienna: {{Code|nazwa_modulu_szablonu_opisu}}, lub {{Code|nazwa_strony_bez_kodow_html}}.
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}} {{Patrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}, by usunąć różne instrukcje warunkowe.
==== Specjalne elementy zmieniające wikikod ====
* Uruchamiana jest, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana jest, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
==== Kodowanie bazy danych kodów {{nobold|{{Code|{{m|Szablonowe}}}}}} ====
* Jeśli: {{Code|szablon_nie_opis}} {{LinkPatrz|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
iauc9pdm7jmfxg7oy5ujgto9a2d2ebj
558327
558326
2026-10-02T15:25:13Z
Persino
2851
/* {{Śródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}{{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}} */
558327
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|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.SpreparowanyWikikodStrony}}{{Code|p.SpreparowanyWikikodStrony}} ==
Funkcja ściągąjąca opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Funkcja w opisach szablonów, a w niej instrukcje warunkowe podczas kodowania są rozwijane przy pomocy funkcji: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}}, a normalnie, gdy wewnątrz instrukcji warunkowych nie ma klamerek w funkcji, w składowej funkcji, tzn.: {{LinkPatrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja korzysta bezpośrednio z funkcji: {{LinkŚródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana. Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję, np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:SpreparowanyWikikodStrony(nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 2 = {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} | _2 = Nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw.
| 3 = {{Code|nazwa_modulu_szablonowa}} {{Patrz|nazwa_modulu_szablonowa}} | _3 = Nazwa modułu w wersji szablonowej, w wersji wywołaniowej.
| 4 = {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} | _4 = Przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony.
| 5 = {{Code|inkludowana}} {{Patrz|inkludowana}} | _5 = Przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej.
| 6 = Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem: | nagłówek6 = tak
| 7 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-SpreparowanyWikikodStrony}} | _7 = Funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, po kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
tekst=__FUNKCJA(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,dokumentacja,czy_niezakodowana)
</syntaxhighlight>
| 8 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-SpreparowanyWikikodStrony}} | _8 = Jeśli: {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} {{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, odkodować od postaci zakodowanej, czyli do formy dokumentacji.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul)))then
</syntaxhighlight>
| 9 = {{Code|__FUNKCJA3}} {{Patrz|__FUNKCJA3-SpreparowanyWikikodStrony}} | _9 = Funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}}, czyli: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu,nazwa_modulu_szablonowa) or nil;
</syntaxhighlight>
| 10 = Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]|p=Szablonowe}}}} {{Patrz|UstalanieNazwyWywołania}}: | nagłówek10 = tak
| 11 = {{Code|__FUNKCJA4}} {{Patrz|__FUNKCJA4-SpreparowanyWikikodStrony}} | _11 = Funkcja, np. dekodująca nazwę szablonu.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if(__FUNKCJA4)then
nazwa_szablonu,powodzenie__FUNKCJA4(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
| 12 = {{Code|__FUNKCJA5}} {{Patrz|__FUNKCJA5-SpreparowanyWikikodStrony}} | _12 = Funkcja, np. rozwijająca nazwę szablonu.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
nazwa_szablonu=__FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
</syntaxhighlight>
| 13 = Inne: | nagłówek13 = tak
| 14 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _14 = Funkcja do modyfikacji tekstu pobranego ze strony.
{{Śródtekst|uchwyt=__FUNKCJA_ANALIZA_SPISOWA|tekst=
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
tekst_artykulu=__FUNKCJA_ANALIZA_SPISOWA and __FUNKCJA_ANALIZA_SPISOWA(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw) or tekst_artykulu;
</syntaxhighlight>
}}
| 15 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _15 = Funkcje do generowania tablicy bazy kodów.
{{Śródtekst|uchwyt=__FUNKCJA_PARAMETRY|tekst=
{{P|Przykład definicji:}}
<syntaxhighlight lang="lua">
function __FUNKCJA_PARAMETRY(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_element_juz_istnieje)
...
end;
end;
</syntaxhighlight>
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
local __FUNKCJA=__FUNKCJA_PARAMETRY(obiekt);
...
__FUNKCJA(tablica,klucz,wartosc_tablicy,false);
</syntaxhighlight>
}}
}}
Definicje funkcji: {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-UstalanieNazwyWywołania}} i {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-UstalanieNazwyWywołania}}, które są potrzebne do konstrukcji wywołania funkcji: {{LinkPatrz|UstalanieNazwyWywołania}}, uzyskiwania nazwy szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} i {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}}, definicje tych funkcji:
* {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Tablica danych bazy kodów zakodowanego tekstu.
| 5 = {{Code|dokumentacja}} | _5 = Jak w: {{LinkPatrz|dokumentacja}}.
| 6 = {{Code|czy_nie_opis}} {{Patrz|czy_nie_opis}} | _6 = Czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu_caly}} {{Patrz|tekst_artykulu_caly}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} {{LinkPatrz|__FUNKCJA3-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu,nazwa_modulu_szablonowa)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_modulu}} | _1 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 2 = {{Code|nazwa_modulu_szablonowa}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory,czy_z_kluczem]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} | _1 = Nazwa szablonu do rozwinięcia.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}}. | _5 = Tabela parametrów potrzebna do szybszego działania '''{{ld|StronicowyParser|Stronicowego parsera}}'''.
| 6 = Gdy tą funkcją jest: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}}, te zmienne bezpośrednio w: {{Code|__FUNKCJA4}}, nie występują, ale za to występują w tej podanej szczególnej przykładowej funkcji, tzn. argumenty: | komórka6 = tak
| 7 = {{Code|czy_uwzgledniac_modyfikatory}} {{Patrz|czy_uwzgledniac_modyfikatory}} | _7 = Czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}}.
| 8 = {{Code|czy_z_kluczem}} {{Patrz|czy_z_kluczem}} | _8 = Czy klucze, o wzorze: {{Code|<nowiki>^klucz$</nowiki>}}, lub {{Code|<nowiki>^klucz[1-9]%d*$</nowiki>}}.
}}
Jeżeli w funkcji {{LinkPatrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}} nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}} w przeciwnym wypadku zwracane jest nazwa szablonu i wartość {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} | _1 = Jak w: {{LinkPatrz|nazwa_szablonu}}. To jest nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}.
| 2 = {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} | _2 = Tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, to jest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}}, w przypadku: {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}.
| 3 = {{Code|nazwa_modulu}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 4 = {{Code|nazwa_modulu_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{LzLua|frame:preprocess}}, w korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, z której korzysta {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}, jeżeli korzystanej tutaj funkcja zrzuciła niepowodzenie, to pierwsza wartość zwrótcone to: {{Code|nil}}, druga: {{Code|false}}, w przeciwnym wypadku zwraca nazwę rozwiniętego szablonu i drugą wartość zrzuconą: {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąć, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice:
; Przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy{{dk}} {{nobold|{{Code|czy_niezakodowana {{=}} true}}}}, i {{nobold|{{Code|czy_nie_opis {{=}} true}}}}, według funkcji{{dk}}
* {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów,
; W przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja:
* {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami.
----
: Te funkcje są wywoływane wewnątrz funkcji: {{LinkŚródtytuł|p.SpreparowanyWikikodStrony}}. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąć za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana. Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Strona, a jednocześnie uchwyt do bazy danych kodów zakodowanego tekstu, o nazwie modułu do rozwinięcia i zakodowania.
| 3 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _3 = Nazwa strony szablonowa, w postaci wywołaniowej szablonów.
| 4 = {{Code|inkludowana}} {{LinkPatrz|inkludowana}} | _4 = Zmienna, czy strona ma być interpretowana jako inkludowana.
| 5 = Zmienne funkcyjne: | nagłówek5 = tak
| 6 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _6 = Funkcja generująca zawartość, może być zmodyfikowana, na podstawie pełnej nazwy strony, używana w funkcji: jest to {{Code|__FUNKCJA3}} w: {{Code|{{sr|#FunkcjaIterajacaRozwijanegoSzablonu|p=Szablonowe}}}} {{Patrz|__FUNKCJA-FunkcjaIterajacaRozwijanegoSzablonu}}.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if((czy_niekodowane)and(__FUNKCJA))then
local wynik=__FUNKCJA(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow);
if(wynik)then
return wynik;
end;
end;
</syntaxhighlight>
| 7 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _7 = Funkcja do generowania zawartości, może być zmodyfikowana, według podanej jej wartości, używana w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|FUNKCJA2-KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, w postaci zmodyfikowanej, czyli w wersji: {{Code|__FUNKCJA2}},
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
szablon=__FUNKCJA2 and __FUNKCJA2(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or szablon;
</syntaxhighlight>
| 8 = Inne zmienne funkcyjne: | nagłówek8 = tak
| 9 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _9 = Inne operacje wykonywane na pobranym tekście.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_ANALIZA_SPISOWA}}
| 10 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _10 = Funkcja użyta do generowania tablicy bazy kodów.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY}}
}}
Funkcje {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}}, zostały już opisane w tym module, więc wystarczy opisać inne.
{{Hr}}
* Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|pelna_nazwa_szablonu}} | _1 = Pełna nazwa szablonu.
| 2 = {{Code|tabela_parametrow_szablonu}} | _2 = Tabela parametrów wywołania szablonu do rozwinięcia.
| 3 = {{Code|tabela_modyfikatorow}} | _3 = Tabela modyfikatorów danego wywołania szablonowego.
}}
{{Hr}}
* Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Zawartość elementu wikikodu według {{Code|{{m|Szablonowe}}}}.
| 2 = {{Code|obiekt}} {{Patrz|obiekt}} | _2 = Nazwa obiektu szablonowego, jak: {{Code|SZABLON}}.
| 3 = {{Code|kod}} {{Patrz|kod}} | _3 = Numer obiektu, typu: {{Code|obiekt}} {{LinkPatrz|obiekt}}.
| 4 = {{Code|tekst}} | _4 = Tekst całego artykułu.
| 5 = {{Code|numer_szablonu}} {{Patrz|numer_szablonu}} | _5 = Tabela numerów dla różnych obiektów w jednej tabeli.
| 6 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _6 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 7 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _7 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
== {{Śródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}{{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}} ==
Funkcja służy do ściągania zawartości stron z zawartością, a jeżeli zawartości nie ma, to ona zwraca wartość {{Code|nil}}.
Posiada własną walidacje nazwy stron, czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe według ściśle określonych sposobów.
Funkcja odpowiednio operuje na znacznikach wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''', tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znaczniki typu: {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
{{OpisParametrów
| 1 = Zmienne obiektowe: | nagłówek1 = tak
| 2 = {{Code|self}} {{Patrz|self}} | _2 = Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 3 = Zwykłe zmienne: | nagłówek3 = tak
| 4 = {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} | _4 = Nazwa strony, której liczymy zawartość, używając funkcji: {{LzLua|mw.title.makeTitle}}, strona może nie istnieć.
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local nazwa_strony_z_kodami_html=html_modul["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](nazwa_strony);
...
local czy_istnieje;
local techniczne_modul=require("Module:Techniczne");
uchwyt_strony,tekst_artykulu,czy_istnieje = techniczne_modul.CzyStronaIstniejeJejParametry(nazwa_strony_z_kodami_html,true);
</syntaxhighlight>
| 5 = {{Code|nazwa_strony2}} {{Patrz|nazwa_strony2}} | _5 = Uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej, przeciwnie brana jest nazwa: {{Code|nazwa_strony}}, jako uchwyt.
<syntaxhighlight lang="lua">
if(not szablon_nie_opis)then
if(not dokumentacja)then
local szablonowe_modul=require("Module:Szablonowe");
tekst_artykulu=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst_artykulu,nazwa_strony2 or nazwa_strony,nil,nil,nil,nil,nil,nil,nil,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
| 6 = {{Code|czy_noinclude}} {{Patrz|czy_noinclude}} | _6 = Jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka.
| 7 = Zmienne tablicowe: | nagłówek7 = tak
| 8 = {{Code|szablony_magiczne}} {{Patrz|szablony_magiczne}} | _8 = Tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej.
| 9 = Inne zmienne: | nagłówek9 = tak
| 10 = {{Code|dokumentacja}} {{Patrz|dokumentacja}} | _10 = Określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}}.
| 11 = {{Code|czy_szablon}} {{Patrz|czy_szablon}} | _11 = Gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją.
| 12 = {{Code|nazwa_modulu_szablonu_opisu}} {{Patrz|nazwa_modulu_szablonu_opisu}} | _12 = Zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami '''{{lpg|HTML}}''' na znaki.
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
nazwa_strony_bez_kodow_html=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](nazwa_strony);
...
local tabela_nazw={};
if(szablony_magiczne)then
local nazwy_modul=require("Module:Nazwy");
szablony_magiczne["{{ROOTPAGENAME}}"]=szablony_magiczne["{{ROOTPAGENAME}}"] or nazwy_modul["NAZWAKORZENIASTRONY"](nazwa_modulu_szablonu_opisu or nazwa_strony_bez_kodow_html,tabela_nazw);
</syntaxhighlight>
| 13 = {{Code|szablon_nie_opis}} {{Patrz|szablon_nie_opis}} | _13 = Zmienna wskazująca, czy {{Code|nazwa strony}} {{LinkPatrz|nazwa strony}} wskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowany, używany wraz ze zmienną: {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}}.
| 14 = Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chcieliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:| nagłówek14 = tak
| 15 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} | _15 = Operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_ANALIZA_SPISOWA}}
| 16 = {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} | _16 = Funkcja operująca na komentarzach, przeciwnie jest używana funkcja: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}, gdzie:
<syntaxhighlight lang="lua">
local techniczne_modul=require("Module:Techniczne");
tekst_artykulu=__FUNKCJA_KOMENTARZE
and (__FUNKCJA_KOMENTARZE(tekst_artykulu))
or techniczne_modul.UsuwanieKomentarzowe(tekst_artykulu);
</syntaxhighlight>
| 17 = {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} | _17 = Funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów.
{{P|Przykład wywołania;}}
<syntaxhighlight lang="lua">
tekst_artykulu=__FUNKCJA_KONTROLNE and __FUNKCJA_KONTROLNE(tekst_artykulu) or tekst_artykulu;
</syntaxhighlight>
| 18 = {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} | _18 = Funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_analizy_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY}}
}}
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}}, operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} | _1 = Tekst do analizy, jak w funkcji nadrzędnej.
| 2 = {{Code|nazwa_modulu_szablonu_opisu}} {{LinkPatrz|nazwa_modulu_szablonu_opisu}} | _2 = Nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}.
| 3 = {{Code|nazwa_strony_bez_kodow_html}} {{Patrz|nazwa_strony_bez_kodow_html}} | _3 = Jest to nazwa strony: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, tylko z kodami '''{{lpg|HTML}}''' zamienionymi na ich odpowiedniki znakowe.
| 4 = {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}} | _4 = Tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej.
| 5 = {{Code|tabela_nazw}} {{Patrz|tabela_nazw}} | _5 = Tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, wewnątrz tej funkcji nadrzędnej.
}}
{{Hr}}
Funkcja: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}, ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica: {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt]}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul[obiekt]}}, uzyskana z: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, jest tablicą zawsze pustą, do niej dla każdego obiektu: {{Code|obiekt}} {{LinkPatrz|obiekt}}, przywiązana jest tablica, którą zapełniamy elementami, modyfikującego tablicę: {{Code|tablica}}. W funkcji zwracanej przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}, też modyfikujemy ją. Jak piszemy {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod metatabelki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} {{Patrz|__metatablica}}, to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Ten rozdział zawiera kolejność wywołań poszczególnych kroków w funkcji.
==== Poprawność pewnych nazw ====
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]|p=Html}}}}, która z: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}}.
==== Parametry uzyskanej strony ====
* Uzyskujemy: {{Code|nazwa_strony_z_kodami_html}}, z {{Code|nazwa_strony}}, na podstawie funkcji: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]|p=Html}}}}.
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry|p=Techniczne}}}}, używając parametru: {{Code|nazwa_strony_z_kodami_html}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}} {{Patrz|uchwyt strony}}, {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} i {{Code|czy_istnieje}} {{Patrz|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów.
==== Składniki preprocesora kodu mechanizmu: {{nobold|{{NS|l=tak|k=mw|w=tak}}}} ====
* Gdy {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli: {{Code|czy_noinclude}} {{LinkPatrz|czy_noinclude}}, przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie. Ze strony są usuwane pozostałości ze znaczników wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''' i znaczników jak {{Tag|templatedata}},
* Przeciwny wypadek: wtedy: {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}}, jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione.
==== Komentarze ====
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, a jeżeli one nie istnieją, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}.
===== Usuwanie pseudoszablonów i niektórych instrukcji warunkowych =====
* Ustawiane są zmienne w: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}} {{LinkPatrz|tabela_nazw}}. Do tego celu jest używana zmienna: {{Code|nazwa_modulu_szablonu_opisu}}, lub {{Code|nazwa_strony_bez_kodow_html}}.
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}} {{Patrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}, by usunąć różne instrukcje warunkowe.
==== Specjalne elementy zmieniające wikikod ====
* Uruchamiana jest, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana jest, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
==== Kodowanie bazy danych kodów {{nobold|{{Code|{{m|Szablonowe}}}}}} ====
* Jeśli: {{Code|szablon_nie_opis}} {{LinkPatrz|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
r20s4ctd7j3yujlivcvelwl5ld84g6m
558328
558327
2026-10-02T15:42:17Z
Persino
2851
/* {{Śródtytuł|p.SpreparowanyWikikodStrony}}{{Code|p.SpreparowanyWikikodStrony}} */
558328
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|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.SpreparowanyWikikodStrony}}{{Code|p.SpreparowanyWikikodStrony}} ==
Funkcja ściągąjąca opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Funkcja w opisach szablonów, a w niej instrukcje warunkowe podczas kodowania są rozwijane przy pomocy funkcji: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}}, a normalnie, gdy wewnątrz instrukcji warunkowych nie ma klamerek w funkcji, w składowej funkcji, tzn.: {{LinkPatrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja korzysta bezpośrednio z funkcji: {{LinkŚródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana. Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję, np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:SpreparowanyWikikodStrony(nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 2 = {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} | _2 = Nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw.
| 3 = {{Code|nazwa_modulu_szablonowa}} {{Patrz|nazwa_modulu_szablonowa}} | _3 = Nazwa modułu w wersji szablonowej, w wersji wywołaniowej.
| 4 = {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} | _4 = Przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony.
| 5 = {{Code|inkludowana}} {{Patrz|inkludowana}} | _5 = Przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}} {{LinkPatrz|czy_noinclude}}.
| 6 = Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem: | nagłówek6 = tak
| 7 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-SpreparowanyWikikodStrony}} | _7 = Funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, po kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
tekst=__FUNKCJA(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,dokumentacja,czy_niezakodowana)
</syntaxhighlight>
| 8 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-SpreparowanyWikikodStrony}} | _8 = Jeśli: {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} {{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, odkodować od postaci zakodowanej, czyli do formy dokumentacji.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul)))then
</syntaxhighlight>
| 9 = {{Code|__FUNKCJA3}} {{Patrz|__FUNKCJA3-SpreparowanyWikikodStrony}} | _9 = Funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}}, czyli: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu,nazwa_modulu_szablonowa) or nil;
</syntaxhighlight>
| 10 = Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]|p=Szablonowe}}}} {{Patrz|UstalanieNazwyWywołania}}: | nagłówek10 = tak
| 11 = {{Code|__FUNKCJA4}} {{Patrz|__FUNKCJA4-SpreparowanyWikikodStrony}} | _11 = Funkcja, np. dekodująca nazwę szablonu.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if(__FUNKCJA4)then
nazwa_szablonu,powodzenie__FUNKCJA4(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
| 12 = {{Code|__FUNKCJA5}} {{Patrz|__FUNKCJA5-SpreparowanyWikikodStrony}} | _12 = Funkcja, np. rozwijająca nazwę szablonu.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
nazwa_szablonu=__FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
</syntaxhighlight>
| 13 = Inne: | nagłówek13 = tak
| 14 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _14 = Funkcja do modyfikacji tekstu pobranego ze strony.
{{Śródtekst|uchwyt=__FUNKCJA_ANALIZA_SPISOWA|tekst=
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
tekst_artykulu=__FUNKCJA_ANALIZA_SPISOWA and __FUNKCJA_ANALIZA_SPISOWA(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw) or tekst_artykulu;
</syntaxhighlight>
}}
| 15 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _15 = Funkcje do generowania tablicy bazy kodów.
{{Śródtekst|uchwyt=__FUNKCJA_PARAMETRY|tekst=
{{P|Przykład definicji:}}
<syntaxhighlight lang="lua">
function __FUNKCJA_PARAMETRY(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_element_juz_istnieje)
...
end;
end;
</syntaxhighlight>
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
local __FUNKCJA=__FUNKCJA_PARAMETRY(obiekt);
...
__FUNKCJA(tablica,klucz,wartosc_tablicy,false);
</syntaxhighlight>
}}
}}
Definicje funkcji: {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-UstalanieNazwyWywołania}} i {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-UstalanieNazwyWywołania}}, które są potrzebne do konstrukcji wywołania funkcji: {{LinkPatrz|UstalanieNazwyWywołania}}, uzyskiwania nazwy szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} i {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}}, definicje tych funkcji:
* {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Tablica danych bazy kodów zakodowanego tekstu.
| 5 = {{Code|dokumentacja}} | _5 = Jak w: {{LinkPatrz|dokumentacja}}.
| 6 = {{Code|czy_nie_opis}} {{Patrz|czy_nie_opis}} | _6 = Czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu_caly}} {{Patrz|tekst_artykulu_caly}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} {{LinkPatrz|__FUNKCJA3-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu,nazwa_modulu_szablonowa)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_modulu}} | _1 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 2 = {{Code|nazwa_modulu_szablonowa}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory,czy_z_kluczem]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} | _1 = Nazwa szablonu do rozwinięcia.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}}. | _5 = Tabela parametrów potrzebna do szybszego działania '''{{ld|StronicowyParser|Stronicowego parsera}}'''.
| 6 = Gdy tą funkcją jest: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}}, te zmienne bezpośrednio w: {{Code|__FUNKCJA4}}, nie występują, ale za to występują w tej podanej szczególnej przykładowej funkcji, tzn. argumenty: | komórka6 = tak
| 7 = {{Code|czy_uwzgledniac_modyfikatory}} {{Patrz|czy_uwzgledniac_modyfikatory}} | _7 = Czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}}.
| 8 = {{Code|czy_z_kluczem}} {{Patrz|czy_z_kluczem}} | _8 = Czy klucze, o wzorze: {{Code|<nowiki>^klucz$</nowiki>}}, lub {{Code|<nowiki>^klucz[1-9]%d*$</nowiki>}}.
}}
Jeżeli w funkcji {{LinkPatrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}} nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}} w przeciwnym wypadku zwracane jest nazwa szablonu i wartość {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} | _1 = Jak w: {{LinkPatrz|nazwa_szablonu}}. To jest nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}.
| 2 = {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} | _2 = Tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, to jest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}}, w przypadku: {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}.
| 3 = {{Code|nazwa_modulu}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 4 = {{Code|nazwa_modulu_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{LzLua|frame:preprocess}}, w korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, z której korzysta {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}, jeżeli korzystanej tutaj funkcja zrzuciła niepowodzenie, to pierwsza wartość zwrótcone to: {{Code|nil}}, druga: {{Code|false}}, w przeciwnym wypadku zwraca nazwę rozwiniętego szablonu i drugą wartość zrzuconą: {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąć, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice:
; Przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy{{dk}} {{nobold|{{Code|czy_niezakodowana {{=}} true}}}}, i {{nobold|{{Code|czy_nie_opis {{=}} true}}}}, według funkcji{{dk}}
* {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów,
; W przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja:
* {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami.
----
: Te funkcje są wywoływane wewnątrz funkcji: {{LinkŚródtytuł|p.SpreparowanyWikikodStrony}}. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąć za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana. Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Strona, a jednocześnie uchwyt do bazy danych kodów zakodowanego tekstu, o nazwie modułu do rozwinięcia i zakodowania.
| 3 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _3 = Nazwa strony szablonowa, w postaci wywołaniowej szablonów.
| 4 = {{Code|inkludowana}} {{LinkPatrz|inkludowana}} | _4 = Zmienna, czy strona ma być interpretowana jako inkludowana.
| 5 = Zmienne funkcyjne: | nagłówek5 = tak
| 6 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _6 = Funkcja generująca zawartość, może być zmodyfikowana, na podstawie pełnej nazwy strony, używana w funkcji: jest to {{Code|__FUNKCJA3}} w: {{Code|{{sr|#FunkcjaIterajacaRozwijanegoSzablonu|p=Szablonowe}}}} {{Patrz|__FUNKCJA-FunkcjaIterajacaRozwijanegoSzablonu}}.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if((czy_niekodowane)and(__FUNKCJA))then
local wynik=__FUNKCJA(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow);
if(wynik)then
return wynik;
end;
end;
</syntaxhighlight>
| 7 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _7 = Funkcja do generowania zawartości, może być zmodyfikowana, według podanej jej wartości, używana w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|FUNKCJA2-KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, w postaci zmodyfikowanej, czyli w wersji: {{Code|__FUNKCJA2}},
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
szablon=__FUNKCJA2 and __FUNKCJA2(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or szablon;
</syntaxhighlight>
| 8 = Inne zmienne funkcyjne: | nagłówek8 = tak
| 9 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _9 = Inne operacje wykonywane na pobranym tekście.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_ANALIZA_SPISOWA}}
| 10 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _10 = Funkcja użyta do generowania tablicy bazy kodów.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY}}
}}
Funkcje {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}}, zostały już opisane w tym module, więc wystarczy opisać inne.
{{Hr}}
* Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|pelna_nazwa_szablonu}} | _1 = Pełna nazwa szablonu.
| 2 = {{Code|tabela_parametrow_szablonu}} | _2 = Tabela parametrów wywołania szablonu do rozwinięcia.
| 3 = {{Code|tabela_modyfikatorow}} | _3 = Tabela modyfikatorów danego wywołania szablonowego.
}}
{{Hr}}
* Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Zawartość elementu wikikodu według {{Code|{{m|Szablonowe}}}}.
| 2 = {{Code|obiekt}} {{Patrz|obiekt}} | _2 = Nazwa obiektu szablonowego, jak: {{Code|SZABLON}}.
| 3 = {{Code|kod}} {{Patrz|kod}} | _3 = Numer obiektu, typu: {{Code|obiekt}} {{LinkPatrz|obiekt}}.
| 4 = {{Code|tekst}} | _4 = Tekst całego artykułu.
| 5 = {{Code|numer_szablonu}} {{Patrz|numer_szablonu}} | _5 = Tabela numerów dla różnych obiektów w jednej tabeli.
| 6 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _6 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 7 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _7 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
== {{Śródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}{{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}} ==
Funkcja służy do ściągania zawartości stron z zawartością, a jeżeli zawartości nie ma, to ona zwraca wartość {{Code|nil}}.
Posiada własną walidacje nazwy stron, czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe według ściśle określonych sposobów.
Funkcja odpowiednio operuje na znacznikach wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''', tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znaczniki typu: {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
{{OpisParametrów
| 1 = Zmienne obiektowe: | nagłówek1 = tak
| 2 = {{Code|self}} {{Patrz|self}} | _2 = Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 3 = Zwykłe zmienne: | nagłówek3 = tak
| 4 = {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} | _4 = Nazwa strony, której liczymy zawartość, używając funkcji: {{LzLua|mw.title.makeTitle}}, strona może nie istnieć.
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local nazwa_strony_z_kodami_html=html_modul["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](nazwa_strony);
...
local czy_istnieje;
local techniczne_modul=require("Module:Techniczne");
uchwyt_strony,tekst_artykulu,czy_istnieje = techniczne_modul.CzyStronaIstniejeJejParametry(nazwa_strony_z_kodami_html,true);
</syntaxhighlight>
| 5 = {{Code|nazwa_strony2}} {{Patrz|nazwa_strony2}} | _5 = Uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej, przeciwnie brana jest nazwa: {{Code|nazwa_strony}}, jako uchwyt.
<syntaxhighlight lang="lua">
if(not szablon_nie_opis)then
if(not dokumentacja)then
local szablonowe_modul=require("Module:Szablonowe");
tekst_artykulu=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst_artykulu,nazwa_strony2 or nazwa_strony,nil,nil,nil,nil,nil,nil,nil,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
| 6 = {{Code|czy_noinclude}} {{Patrz|czy_noinclude}} | _6 = Jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka.
| 7 = Zmienne tablicowe: | nagłówek7 = tak
| 8 = {{Code|szablony_magiczne}} {{Patrz|szablony_magiczne}} | _8 = Tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej.
| 9 = Inne zmienne: | nagłówek9 = tak
| 10 = {{Code|dokumentacja}} {{Patrz|dokumentacja}} | _10 = Określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}}.
| 11 = {{Code|czy_szablon}} {{Patrz|czy_szablon}} | _11 = Gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją.
| 12 = {{Code|nazwa_modulu_szablonu_opisu}} {{Patrz|nazwa_modulu_szablonu_opisu}} | _12 = Zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami '''{{lpg|HTML}}''' na znaki.
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
nazwa_strony_bez_kodow_html=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](nazwa_strony);
...
local tabela_nazw={};
if(szablony_magiczne)then
local nazwy_modul=require("Module:Nazwy");
szablony_magiczne["{{ROOTPAGENAME}}"]=szablony_magiczne["{{ROOTPAGENAME}}"] or nazwy_modul["NAZWAKORZENIASTRONY"](nazwa_modulu_szablonu_opisu or nazwa_strony_bez_kodow_html,tabela_nazw);
</syntaxhighlight>
| 13 = {{Code|szablon_nie_opis}} {{Patrz|szablon_nie_opis}} | _13 = Zmienna wskazująca, czy {{Code|nazwa strony}} {{LinkPatrz|nazwa strony}} wskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowany, używany wraz ze zmienną: {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}}.
| 14 = Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chcieliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:| nagłówek14 = tak
| 15 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} | _15 = Operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_ANALIZA_SPISOWA}}
| 16 = {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} | _16 = Funkcja operująca na komentarzach, przeciwnie jest używana funkcja: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}, gdzie:
<syntaxhighlight lang="lua">
local techniczne_modul=require("Module:Techniczne");
tekst_artykulu=__FUNKCJA_KOMENTARZE
and (__FUNKCJA_KOMENTARZE(tekst_artykulu))
or techniczne_modul.UsuwanieKomentarzowe(tekst_artykulu);
</syntaxhighlight>
| 17 = {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} | _17 = Funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów.
{{P|Przykład wywołania;}}
<syntaxhighlight lang="lua">
tekst_artykulu=__FUNKCJA_KONTROLNE and __FUNKCJA_KONTROLNE(tekst_artykulu) or tekst_artykulu;
</syntaxhighlight>
| 18 = {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} | _18 = Funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_analizy_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY}}
}}
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}}, operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} | _1 = Tekst do analizy, jak w funkcji nadrzędnej.
| 2 = {{Code|nazwa_modulu_szablonu_opisu}} {{LinkPatrz|nazwa_modulu_szablonu_opisu}} | _2 = Nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}.
| 3 = {{Code|nazwa_strony_bez_kodow_html}} {{Patrz|nazwa_strony_bez_kodow_html}} | _3 = Jest to nazwa strony: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, tylko z kodami '''{{lpg|HTML}}''' zamienionymi na ich odpowiedniki znakowe.
| 4 = {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}} | _4 = Tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej.
| 5 = {{Code|tabela_nazw}} {{Patrz|tabela_nazw}} | _5 = Tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, wewnątrz tej funkcji nadrzędnej.
}}
{{Hr}}
Funkcja: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}, ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica: {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt]}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul[obiekt]}}, uzyskana z: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, jest tablicą zawsze pustą, do niej dla każdego obiektu: {{Code|obiekt}} {{LinkPatrz|obiekt}}, przywiązana jest tablica, którą zapełniamy elementami, modyfikującego tablicę: {{Code|tablica}}. W funkcji zwracanej przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}, też modyfikujemy ją. Jak piszemy {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod metatabelki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} {{Patrz|__metatablica}}, to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Ten rozdział zawiera kolejność wywołań poszczególnych kroków w funkcji.
==== Poprawność pewnych nazw ====
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]|p=Html}}}}, która z: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}}.
==== Parametry uzyskanej strony ====
* Uzyskujemy: {{Code|nazwa_strony_z_kodami_html}}, z {{Code|nazwa_strony}}, na podstawie funkcji: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]|p=Html}}}}.
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry|p=Techniczne}}}}, używając parametru: {{Code|nazwa_strony_z_kodami_html}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}} {{Patrz|uchwyt strony}}, {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} i {{Code|czy_istnieje}} {{Patrz|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów.
==== Składniki preprocesora kodu mechanizmu: {{nobold|{{NS|l=tak|k=mw|w=tak}}}} ====
* Gdy {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli: {{Code|czy_noinclude}} {{LinkPatrz|czy_noinclude}}, przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie. Ze strony są usuwane pozostałości ze znaczników wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''' i znaczników jak {{Tag|templatedata}},
* Przeciwny wypadek: wtedy: {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}}, jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione.
==== Komentarze ====
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, a jeżeli one nie istnieją, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}.
===== Usuwanie pseudoszablonów i niektórych instrukcji warunkowych =====
* Ustawiane są zmienne w: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}} {{LinkPatrz|tabela_nazw}}. Do tego celu jest używana zmienna: {{Code|nazwa_modulu_szablonu_opisu}}, lub {{Code|nazwa_strony_bez_kodow_html}}.
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}} {{Patrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}, by usunąć różne instrukcje warunkowe.
==== Specjalne elementy zmieniające wikikod ====
* Uruchamiana jest, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana jest, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
==== Kodowanie bazy danych kodów {{nobold|{{Code|{{m|Szablonowe}}}}}} ====
* Jeśli: {{Code|szablon_nie_opis}} {{LinkPatrz|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
p1d1u7hy9r2yqh92bebyt4xu7a3ncyn
558329
558328
2026-10-02T17:13:46Z
Persino
2851
/* {{Śródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}{{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}} */
558329
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|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.SpreparowanyWikikodStrony}}{{Code|p.SpreparowanyWikikodStrony}} ==
Funkcja ściągąjąca opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Funkcja w opisach szablonów, a w niej instrukcje warunkowe podczas kodowania są rozwijane przy pomocy funkcji: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}}, a normalnie, gdy wewnątrz instrukcji warunkowych nie ma klamerek w funkcji, w składowej funkcji, tzn.: {{LinkPatrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja korzysta bezpośrednio z funkcji: {{LinkŚródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana. Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję, np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:SpreparowanyWikikodStrony(nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 2 = {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} | _2 = Nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw.
| 3 = {{Code|nazwa_modulu_szablonowa}} {{Patrz|nazwa_modulu_szablonowa}} | _3 = Nazwa modułu w wersji szablonowej, w wersji wywołaniowej.
| 4 = {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} | _4 = Przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony.
| 5 = {{Code|inkludowana}} {{Patrz|inkludowana}} | _5 = Przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}} {{LinkPatrz|czy_noinclude}}.
| 6 = Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem: | nagłówek6 = tak
| 7 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-SpreparowanyWikikodStrony}} | _7 = Funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, po kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
tekst=__FUNKCJA(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,dokumentacja,czy_niezakodowana)
</syntaxhighlight>
| 8 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-SpreparowanyWikikodStrony}} | _8 = Jeśli: {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} {{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, odkodować od postaci zakodowanej, czyli do formy dokumentacji.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul)))then
</syntaxhighlight>
| 9 = {{Code|__FUNKCJA3}} {{Patrz|__FUNKCJA3-SpreparowanyWikikodStrony}} | _9 = Funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}}, czyli: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu,nazwa_modulu_szablonowa) or nil;
</syntaxhighlight>
| 10 = Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]|p=Szablonowe}}}} {{Patrz|UstalanieNazwyWywołania}}: | nagłówek10 = tak
| 11 = {{Code|__FUNKCJA4}} {{Patrz|__FUNKCJA4-SpreparowanyWikikodStrony}} | _11 = Funkcja, np. dekodująca nazwę szablonu.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if(__FUNKCJA4)then
nazwa_szablonu,powodzenie__FUNKCJA4(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
| 12 = {{Code|__FUNKCJA5}} {{Patrz|__FUNKCJA5-SpreparowanyWikikodStrony}} | _12 = Funkcja, np. rozwijająca nazwę szablonu.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
nazwa_szablonu=__FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
</syntaxhighlight>
| 13 = Inne: | nagłówek13 = tak
| 14 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _14 = Funkcja do modyfikacji tekstu pobranego ze strony.
{{Śródtekst|uchwyt=__FUNKCJA_ANALIZA_SPISOWA|tekst=
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
tekst_artykulu=__FUNKCJA_ANALIZA_SPISOWA and __FUNKCJA_ANALIZA_SPISOWA(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw) or tekst_artykulu;
</syntaxhighlight>
}}
| 15 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _15 = Funkcje do generowania tablicy bazy kodów.
{{Śródtekst|uchwyt=__FUNKCJA_PARAMETRY|tekst=
{{P|Przykład definicji:}}
<syntaxhighlight lang="lua">
function __FUNKCJA_PARAMETRY(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_element_juz_istnieje)
...
end;
end;
</syntaxhighlight>
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
local __FUNKCJA=__FUNKCJA_PARAMETRY(obiekt);
...
__FUNKCJA(tablica,klucz,wartosc_tablicy,false);
</syntaxhighlight>
}}
}}
Definicje funkcji: {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-UstalanieNazwyWywołania}} i {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-UstalanieNazwyWywołania}}, które są potrzebne do konstrukcji wywołania funkcji: {{LinkPatrz|UstalanieNazwyWywołania}}, uzyskiwania nazwy szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} i {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}}, definicje tych funkcji:
* {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Tablica danych bazy kodów zakodowanego tekstu.
| 5 = {{Code|dokumentacja}} | _5 = Jak w: {{LinkPatrz|dokumentacja}}.
| 6 = {{Code|czy_nie_opis}} {{Patrz|czy_nie_opis}} | _6 = Czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu_caly}} {{Patrz|tekst_artykulu_caly}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} {{LinkPatrz|__FUNKCJA3-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu,nazwa_modulu_szablonowa)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_modulu}} | _1 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 2 = {{Code|nazwa_modulu_szablonowa}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory,czy_z_kluczem]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} | _1 = Nazwa szablonu do rozwinięcia.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}}. | _5 = Tabela parametrów potrzebna do szybszego działania '''{{ld|StronicowyParser|Stronicowego parsera}}'''.
| 6 = Gdy tą funkcją jest: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}}, te zmienne bezpośrednio w: {{Code|__FUNKCJA4}}, nie występują, ale za to występują w tej podanej szczególnej przykładowej funkcji, tzn. argumenty: | komórka6 = tak
| 7 = {{Code|czy_uwzgledniac_modyfikatory}} {{Patrz|czy_uwzgledniac_modyfikatory}} | _7 = Czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}}.
| 8 = {{Code|czy_z_kluczem}} {{Patrz|czy_z_kluczem}} | _8 = Czy klucze, o wzorze: {{Code|<nowiki>^klucz$</nowiki>}}, lub {{Code|<nowiki>^klucz[1-9]%d*$</nowiki>}}.
}}
Jeżeli w funkcji {{LinkPatrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}} nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}} w przeciwnym wypadku zwracane jest nazwa szablonu i wartość {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} | _1 = Jak w: {{LinkPatrz|nazwa_szablonu}}. To jest nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}.
| 2 = {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} | _2 = Tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, to jest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}}, w przypadku: {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}.
| 3 = {{Code|nazwa_modulu}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 4 = {{Code|nazwa_modulu_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{LzLua|frame:preprocess}}, w korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, z której korzysta {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}, jeżeli korzystanej tutaj funkcja zrzuciła niepowodzenie, to pierwsza wartość zwrótcone to: {{Code|nil}}, druga: {{Code|false}}, w przeciwnym wypadku zwraca nazwę rozwiniętego szablonu i drugą wartość zrzuconą: {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąć, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice:
; Przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy{{dk}} {{nobold|{{Code|czy_niezakodowana {{=}} true}}}}, i {{nobold|{{Code|czy_nie_opis {{=}} true}}}}, według funkcji{{dk}}
* {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów,
; W przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja:
* {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami.
----
: Te funkcje są wywoływane wewnątrz funkcji: {{LinkŚródtytuł|p.SpreparowanyWikikodStrony}}. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąć za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana. Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Strona, a jednocześnie uchwyt do bazy danych kodów zakodowanego tekstu, o nazwie modułu do rozwinięcia i zakodowania.
| 3 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _3 = Nazwa strony szablonowa, w postaci wywołaniowej szablonów.
| 4 = {{Code|inkludowana}} {{LinkPatrz|inkludowana}} | _4 = Zmienna, czy strona ma być interpretowana jako inkludowana.
| 5 = Zmienne funkcyjne: | nagłówek5 = tak
| 6 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _6 = Funkcja generująca zawartość, może być zmodyfikowana, na podstawie pełnej nazwy strony, używana w funkcji: jest to {{Code|__FUNKCJA3}} w: {{Code|{{sr|#FunkcjaIterajacaRozwijanegoSzablonu|p=Szablonowe}}}} {{Patrz|__FUNKCJA-FunkcjaIterajacaRozwijanegoSzablonu}}.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if((czy_niekodowane)and(__FUNKCJA))then
local wynik=__FUNKCJA(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow);
if(wynik)then
return wynik;
end;
end;
</syntaxhighlight>
| 7 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _7 = Funkcja do generowania zawartości, może być zmodyfikowana, według podanej jej wartości, używana w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|FUNKCJA2-KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, w postaci zmodyfikowanej, czyli w wersji: {{Code|__FUNKCJA2}},
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
szablon=__FUNKCJA2 and __FUNKCJA2(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or szablon;
</syntaxhighlight>
| 8 = Inne zmienne funkcyjne: | nagłówek8 = tak
| 9 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _9 = Inne operacje wykonywane na pobranym tekście.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_ANALIZA_SPISOWA}}
| 10 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _10 = Funkcja użyta do generowania tablicy bazy kodów.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY}}
}}
Funkcje {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}}, zostały już opisane w tym module, więc wystarczy opisać inne.
{{Hr}}
* Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|pelna_nazwa_szablonu}} | _1 = Pełna nazwa szablonu.
| 2 = {{Code|tabela_parametrow_szablonu}} | _2 = Tabela parametrów wywołania szablonu do rozwinięcia.
| 3 = {{Code|tabela_modyfikatorow}} | _3 = Tabela modyfikatorów danego wywołania szablonowego.
}}
{{Hr}}
* Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Zawartość elementu wikikodu według {{Code|{{m|Szablonowe}}}}.
| 2 = {{Code|obiekt}} {{Patrz|obiekt}} | _2 = Nazwa obiektu szablonowego, jak: {{Code|SZABLON}}.
| 3 = {{Code|kod}} {{Patrz|kod}} | _3 = Numer obiektu, typu: {{Code|obiekt}} {{LinkPatrz|obiekt}}.
| 4 = {{Code|tekst}} | _4 = Tekst całego artykułu.
| 5 = {{Code|numer_szablonu}} {{Patrz|numer_szablonu}} | _5 = Tabela numerów dla różnych obiektów w jednej tabeli.
| 6 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _6 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 7 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _7 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
== {{Śródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}{{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}} ==
Funkcja służy do ściągania zawartości stron z zawartością, a jeżeli zawartości nie ma, to ona zwraca wartość {{Code|nil}}.
Posiada własną walidacje nazwy stron, czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe według ściśle określonych sposobów.
Funkcja odpowiednio operuje na znacznikach wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''', tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znaczniki typu: {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
{{OpisParametrów
| 1 = Zmienne obiektowe: | nagłówek1 = tak
| 2 = {{Code|self}} {{Patrz|self}} | _2 = Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 3 = Zwykłe zmienne: | nagłówek3 = tak
| 4 = {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} | _4 = Nazwa strony, której liczymy zawartość, używając funkcji: {{LzLua|mw.title.makeTitle}}, strona może nie istnieć.
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local nazwa_strony_z_kodami_html=html_modul["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](nazwa_strony);
...
local czy_istnieje;
local techniczne_modul=require("Module:Techniczne");
uchwyt_strony,tekst_artykulu,czy_istnieje = techniczne_modul.CzyStronaIstniejeJejParametry(nazwa_strony_z_kodami_html,true);
</syntaxhighlight>
| 5 = {{Code|nazwa_strony2}} {{Patrz|nazwa_strony2}} | _5 = Uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej, przeciwnie brana jest nazwa: {{Code|nazwa_strony}}, jako uchwyt.
<syntaxhighlight lang="lua">
if(not szablon_nie_opis)then
if(not dokumentacja)then
local szablonowe_modul=require("Module:Szablonowe");
tekst_artykulu=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst_artykulu,nazwa_strony2 or nazwa_strony,nil,nil,nil,nil,nil,nil,nil,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
| 6 = {{Code|czy_noinclude}} {{Patrz|czy_noinclude}} | _6 = Jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka.
| 7 = Zmienne tablicowe: | nagłówek7 = tak
| 8 = {{Code|szablony_magiczne}} {{Patrz|szablony_magiczne}} | _8 = Tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej.
| 9 = Inne zmienne: | nagłówek9 = tak
| 10 = {{Code|dokumentacja}} {{Patrz|dokumentacja}} | _10 = Określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}}.
| 11 = {{Code|czy_szablon}} {{Patrz|czy_szablon}} | _11 = Gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania, jeśli: {{Code|czy_szablon}}, jest funkcją:
<syntaxhighlight lang="lua">
tekst_artykulu=czy_szablon(tekst_artykulu,czy_noinclude);
</syntaxhighlight>
| 12 = {{Code|nazwa_modulu_szablonu_opisu}} {{Patrz|nazwa_modulu_szablonu_opisu}} | _12 = Zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami '''{{lpg|HTML}}''' na znaki.
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
nazwa_strony_bez_kodow_html=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](nazwa_strony);
...
local tabela_nazw={};
if(szablony_magiczne)then
local nazwy_modul=require("Module:Nazwy");
szablony_magiczne["{{ROOTPAGENAME}}"]=szablony_magiczne["{{ROOTPAGENAME}}"] or nazwy_modul["NAZWAKORZENIASTRONY"](nazwa_modulu_szablonu_opisu or nazwa_strony_bez_kodow_html,tabela_nazw);
</syntaxhighlight>
| 13 = {{Code|szablon_nie_opis}} {{Patrz|szablon_nie_opis}} | _13 = Zmienna wskazująca, czy {{Code|nazwa strony}} {{LinkPatrz|nazwa strony}} wskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowany, używany wraz ze zmienną: {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}}.
| 14 = Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chcieliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:| nagłówek14 = tak
| 15 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} | _15 = Operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_ANALIZA_SPISOWA}}
| 16 = {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} | _16 = Funkcja operująca na komentarzach, przeciwnie jest używana funkcja: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}, gdzie:
<syntaxhighlight lang="lua">
local techniczne_modul=require("Module:Techniczne");
tekst_artykulu=__FUNKCJA_KOMENTARZE
and (__FUNKCJA_KOMENTARZE(tekst_artykulu))
or techniczne_modul.UsuwanieKomentarzowe(tekst_artykulu);
</syntaxhighlight>
| 17 = {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} | _17 = Funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów.
{{P|Przykład wywołania;}}
<syntaxhighlight lang="lua">
tekst_artykulu=__FUNKCJA_KONTROLNE and __FUNKCJA_KONTROLNE(tekst_artykulu) or tekst_artykulu;
</syntaxhighlight>
| 18 = {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} | _18 = Funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_analizy_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY}}
}}
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}}, operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} | _1 = Tekst do analizy, jak w funkcji nadrzędnej.
| 2 = {{Code|nazwa_modulu_szablonu_opisu}} {{LinkPatrz|nazwa_modulu_szablonu_opisu}} | _2 = Nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}.
| 3 = {{Code|nazwa_strony_bez_kodow_html}} {{Patrz|nazwa_strony_bez_kodow_html}} | _3 = Jest to nazwa strony: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, tylko z kodami '''{{lpg|HTML}}''' zamienionymi na ich odpowiedniki znakowe.
| 4 = {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}} | _4 = Tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej.
| 5 = {{Code|tabela_nazw}} {{Patrz|tabela_nazw}} | _5 = Tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, wewnątrz tej funkcji nadrzędnej.
}}
{{Hr}}
Funkcja: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}, ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica: {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt]}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul[obiekt]}}, uzyskana z: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, jest tablicą zawsze pustą, do niej dla każdego obiektu: {{Code|obiekt}} {{LinkPatrz|obiekt}}, przywiązana jest tablica, którą zapełniamy elementami, modyfikującego tablicę: {{Code|tablica}}. W funkcji zwracanej przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}, też modyfikujemy ją. Jak piszemy {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod metatabelki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} {{Patrz|__metatablica}}, to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Ten rozdział zawiera kolejność wywołań poszczególnych kroków w funkcji.
==== Poprawność pewnych nazw ====
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]|p=Html}}}}, która z: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}}.
==== Parametry uzyskanej strony ====
* Uzyskujemy: {{Code|nazwa_strony_z_kodami_html}}, z {{Code|nazwa_strony}}, na podstawie funkcji: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]|p=Html}}}}.
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry|p=Techniczne}}}}, używając parametru: {{Code|nazwa_strony_z_kodami_html}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}} {{Patrz|uchwyt strony}}, {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} i {{Code|czy_istnieje}} {{Patrz|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów.
==== Składniki preprocesora kodu mechanizmu: {{nobold|{{NS|l=tak|k=mw|w=tak}}}} ====
* Gdy {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli: {{Code|czy_noinclude}} {{LinkPatrz|czy_noinclude}}, przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie. Ze strony są usuwane pozostałości ze znaczników wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''' i znaczników jak {{Tag|templatedata}},
* Przeciwny wypadek: wtedy: {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}}, jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione.
==== Komentarze ====
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, a jeżeli one nie istnieją, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}.
===== Usuwanie pseudoszablonów i niektórych instrukcji warunkowych =====
* Ustawiane są zmienne w: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}} {{LinkPatrz|tabela_nazw}}. Do tego celu jest używana zmienna: {{Code|nazwa_modulu_szablonu_opisu}}, lub {{Code|nazwa_strony_bez_kodow_html}}.
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}} {{Patrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}, by usunąć różne instrukcje warunkowe.
==== Specjalne elementy zmieniające wikikod ====
* Uruchamiana jest, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana jest, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
==== Kodowanie bazy danych kodów {{nobold|{{Code|{{m|Szablonowe}}}}}} ====
* Jeśli: {{Code|szablon_nie_opis}} {{LinkPatrz|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
a3pr1rixptpext9hq3fc31rc679ksyt
558330
558329
2026-10-02T17:15:13Z
Persino
2851
/* {{Śródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}{{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}} */
558330
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|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.SpreparowanyWikikodStrony}}{{Code|p.SpreparowanyWikikodStrony}} ==
Funkcja ściągąjąca opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Funkcja w opisach szablonów, a w niej instrukcje warunkowe podczas kodowania są rozwijane przy pomocy funkcji: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}}, a normalnie, gdy wewnątrz instrukcji warunkowych nie ma klamerek w funkcji, w składowej funkcji, tzn.: {{LinkPatrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja korzysta bezpośrednio z funkcji: {{LinkŚródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana. Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję, np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:SpreparowanyWikikodStrony(nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 2 = {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} | _2 = Nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw.
| 3 = {{Code|nazwa_modulu_szablonowa}} {{Patrz|nazwa_modulu_szablonowa}} | _3 = Nazwa modułu w wersji szablonowej, w wersji wywołaniowej.
| 4 = {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} | _4 = Przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony.
| 5 = {{Code|inkludowana}} {{Patrz|inkludowana}} | _5 = Przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}} {{LinkPatrz|czy_noinclude}}.
| 6 = Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem: | nagłówek6 = tak
| 7 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-SpreparowanyWikikodStrony}} | _7 = Funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, po kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
tekst=__FUNKCJA(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,dokumentacja,czy_niezakodowana)
</syntaxhighlight>
| 8 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-SpreparowanyWikikodStrony}} | _8 = Jeśli: {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} {{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, odkodować od postaci zakodowanej, czyli do formy dokumentacji.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul)))then
</syntaxhighlight>
| 9 = {{Code|__FUNKCJA3}} {{Patrz|__FUNKCJA3-SpreparowanyWikikodStrony}} | _9 = Funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}}, czyli: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu,nazwa_modulu_szablonowa) or nil;
</syntaxhighlight>
| 10 = Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]|p=Szablonowe}}}} {{Patrz|UstalanieNazwyWywołania}}: | nagłówek10 = tak
| 11 = {{Code|__FUNKCJA4}} {{Patrz|__FUNKCJA4-SpreparowanyWikikodStrony}} | _11 = Funkcja, np. dekodująca nazwę szablonu.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if(__FUNKCJA4)then
nazwa_szablonu,powodzenie__FUNKCJA4(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
| 12 = {{Code|__FUNKCJA5}} {{Patrz|__FUNKCJA5-SpreparowanyWikikodStrony}} | _12 = Funkcja, np. rozwijająca nazwę szablonu.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
nazwa_szablonu=__FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
</syntaxhighlight>
| 13 = Inne: | nagłówek13 = tak
| 14 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _14 = Funkcja do modyfikacji tekstu pobranego ze strony.
{{Śródtekst|uchwyt=__FUNKCJA_ANALIZA_SPISOWA|tekst=
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
tekst_artykulu=__FUNKCJA_ANALIZA_SPISOWA and __FUNKCJA_ANALIZA_SPISOWA(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw) or tekst_artykulu;
</syntaxhighlight>
}}
| 15 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _15 = Funkcje do generowania tablicy bazy kodów.
{{Śródtekst|uchwyt=__FUNKCJA_PARAMETRY|tekst=
{{P|Przykład definicji:}}
<syntaxhighlight lang="lua">
function __FUNKCJA_PARAMETRY(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_element_juz_istnieje)
...
end;
end;
</syntaxhighlight>
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
local __FUNKCJA=__FUNKCJA_PARAMETRY(obiekt);
...
__FUNKCJA(tablica,klucz,wartosc_tablicy,false);
</syntaxhighlight>
}}
}}
Definicje funkcji: {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-UstalanieNazwyWywołania}} i {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-UstalanieNazwyWywołania}}, które są potrzebne do konstrukcji wywołania funkcji: {{LinkPatrz|UstalanieNazwyWywołania}}, uzyskiwania nazwy szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} i {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}}, definicje tych funkcji:
* {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Tablica danych bazy kodów zakodowanego tekstu.
| 5 = {{Code|dokumentacja}} | _5 = Jak w: {{LinkPatrz|dokumentacja}}.
| 6 = {{Code|czy_nie_opis}} {{Patrz|czy_nie_opis}} | _6 = Czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu_caly}} {{Patrz|tekst_artykulu_caly}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} {{LinkPatrz|__FUNKCJA3-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu,nazwa_modulu_szablonowa)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_modulu}} | _1 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 2 = {{Code|nazwa_modulu_szablonowa}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory,czy_z_kluczem]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} | _1 = Nazwa szablonu do rozwinięcia.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}}. | _5 = Tabela parametrów potrzebna do szybszego działania '''{{ld|StronicowyParser|Stronicowego parsera}}'''.
| 6 = Gdy tą funkcją jest: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}}, te zmienne bezpośrednio w: {{Code|__FUNKCJA4}}, nie występują, ale za to występują w tej podanej szczególnej przykładowej funkcji, tzn. argumenty: | komórka6 = tak
| 7 = {{Code|czy_uwzgledniac_modyfikatory}} {{Patrz|czy_uwzgledniac_modyfikatory}} | _7 = Czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}}.
| 8 = {{Code|czy_z_kluczem}} {{Patrz|czy_z_kluczem}} | _8 = Czy klucze, o wzorze: {{Code|<nowiki>^klucz$</nowiki>}}, lub {{Code|<nowiki>^klucz[1-9]%d*$</nowiki>}}.
}}
Jeżeli w funkcji {{LinkPatrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}} nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}} w przeciwnym wypadku zwracane jest nazwa szablonu i wartość {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} | _1 = Jak w: {{LinkPatrz|nazwa_szablonu}}. To jest nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}.
| 2 = {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} | _2 = Tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, to jest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}}, w przypadku: {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}.
| 3 = {{Code|nazwa_modulu}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 4 = {{Code|nazwa_modulu_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{LzLua|frame:preprocess}}, w korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, z której korzysta {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}, jeżeli korzystanej tutaj funkcja zrzuciła niepowodzenie, to pierwsza wartość zwrótcone to: {{Code|nil}}, druga: {{Code|false}}, w przeciwnym wypadku zwraca nazwę rozwiniętego szablonu i drugą wartość zrzuconą: {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąć, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice:
; Przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy{{dk}} {{nobold|{{Code|czy_niezakodowana {{=}} true}}}}, i {{nobold|{{Code|czy_nie_opis {{=}} true}}}}, według funkcji{{dk}}
* {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów,
; W przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja:
* {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami.
----
: Te funkcje są wywoływane wewnątrz funkcji: {{LinkŚródtytuł|p.SpreparowanyWikikodStrony}}. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąć za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana. Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Strona, a jednocześnie uchwyt do bazy danych kodów zakodowanego tekstu, o nazwie modułu do rozwinięcia i zakodowania.
| 3 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _3 = Nazwa strony szablonowa, w postaci wywołaniowej szablonów.
| 4 = {{Code|inkludowana}} {{LinkPatrz|inkludowana}} | _4 = Zmienna, czy strona ma być interpretowana jako inkludowana.
| 5 = Zmienne funkcyjne: | nagłówek5 = tak
| 6 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _6 = Funkcja generująca zawartość, może być zmodyfikowana, na podstawie pełnej nazwy strony, używana w funkcji: jest to {{Code|__FUNKCJA3}} w: {{Code|{{sr|#FunkcjaIterajacaRozwijanegoSzablonu|p=Szablonowe}}}} {{Patrz|__FUNKCJA-FunkcjaIterajacaRozwijanegoSzablonu}}.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if((czy_niekodowane)and(__FUNKCJA))then
local wynik=__FUNKCJA(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow);
if(wynik)then
return wynik;
end;
end;
</syntaxhighlight>
| 7 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _7 = Funkcja do generowania zawartości, może być zmodyfikowana, według podanej jej wartości, używana w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|FUNKCJA2-KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, w postaci zmodyfikowanej, czyli w wersji: {{Code|__FUNKCJA2}},
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
szablon=__FUNKCJA2 and __FUNKCJA2(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or szablon;
</syntaxhighlight>
| 8 = Inne zmienne funkcyjne: | nagłówek8 = tak
| 9 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _9 = Inne operacje wykonywane na pobranym tekście.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_ANALIZA_SPISOWA}}
| 10 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _10 = Funkcja użyta do generowania tablicy bazy kodów.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY}}
}}
Funkcje {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}}, zostały już opisane w tym module, więc wystarczy opisać inne.
{{Hr}}
* Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|pelna_nazwa_szablonu}} | _1 = Pełna nazwa szablonu.
| 2 = {{Code|tabela_parametrow_szablonu}} | _2 = Tabela parametrów wywołania szablonu do rozwinięcia.
| 3 = {{Code|tabela_modyfikatorow}} | _3 = Tabela modyfikatorów danego wywołania szablonowego.
}}
{{Hr}}
* Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Zawartość elementu wikikodu według {{Code|{{m|Szablonowe}}}}.
| 2 = {{Code|obiekt}} {{Patrz|obiekt}} | _2 = Nazwa obiektu szablonowego, jak: {{Code|SZABLON}}.
| 3 = {{Code|kod}} {{Patrz|kod}} | _3 = Numer obiektu, typu: {{Code|obiekt}} {{LinkPatrz|obiekt}}.
| 4 = {{Code|tekst}} | _4 = Tekst całego artykułu.
| 5 = {{Code|numer_szablonu}} {{Patrz|numer_szablonu}} | _5 = Tabela numerów dla różnych obiektów w jednej tabeli.
| 6 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _6 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 7 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _7 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
== {{Śródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}{{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}} ==
Funkcja służy do ściągania zawartości stron z zawartością, a jeżeli zawartości nie ma, to ona zwraca wartość {{Code|nil}}.
Posiada własną walidacje nazwy stron, czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe według ściśle określonych sposobów.
Funkcja odpowiednio operuje na znacznikach wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''', tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znaczniki typu: {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
{{OpisParametrów
| 1 = Zmienne obiektowe: | nagłówek1 = tak
| 2 = {{Code|self}} {{Patrz|self}} | _2 = Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 3 = Zwykłe zmienne: | nagłówek3 = tak
| 4 = {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} | _4 = Nazwa strony, której liczymy zawartość, używając funkcji: {{LzLua|mw.title.makeTitle}}, strona może nie istnieć.
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local nazwa_strony_z_kodami_html=html_modul["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](nazwa_strony);
...
local czy_istnieje;
local techniczne_modul=require("Module:Techniczne");
uchwyt_strony,tekst_artykulu,czy_istnieje = techniczne_modul.CzyStronaIstniejeJejParametry(nazwa_strony_z_kodami_html,true);
</syntaxhighlight>
| 5 = {{Code|nazwa_strony2}} {{Patrz|nazwa_strony2}} | _5 = Uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej, przeciwnie brana jest nazwa: {{Code|nazwa_strony}}, jako uchwyt.
<syntaxhighlight lang="lua">
if(not szablon_nie_opis)then
if(not dokumentacja)then
local szablonowe_modul=require("Module:Szablonowe");
tekst_artykulu=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst_artykulu,nazwa_strony2 or nazwa_strony,nil,nil,nil,nil,nil,nil,nil,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
| 6 = {{Code|czy_noinclude}} {{Patrz|czy_noinclude}} | _6 = Jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka.
| 7 = Zmienne tablicowe: | nagłówek7 = tak
| 8 = {{Code|szablony_magiczne}} {{Patrz|szablony_magiczne}} | _8 = Tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej.
| 9 = Inne zmienne: | nagłówek9 = tak
| 10 = {{Code|dokumentacja}} {{Patrz|dokumentacja}} | _10 = Określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}}.
| 11 = {{Code|czy_szablon}} {{Patrz|czy_szablon}} | _11 = Gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst, jeśli: {{Code|czy_szablon}}, jest funkcją, w postaci wywołania:
<syntaxhighlight lang="lua">
tekst_artykulu=czy_szablon(tekst_artykulu,czy_noinclude);
</syntaxhighlight>
| 12 = {{Code|nazwa_modulu_szablonu_opisu}} {{Patrz|nazwa_modulu_szablonu_opisu}} | _12 = Zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami '''{{lpg|HTML}}''' na znaki.
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
nazwa_strony_bez_kodow_html=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](nazwa_strony);
...
local tabela_nazw={};
if(szablony_magiczne)then
local nazwy_modul=require("Module:Nazwy");
szablony_magiczne["{{ROOTPAGENAME}}"]=szablony_magiczne["{{ROOTPAGENAME}}"] or nazwy_modul["NAZWAKORZENIASTRONY"](nazwa_modulu_szablonu_opisu or nazwa_strony_bez_kodow_html,tabela_nazw);
</syntaxhighlight>
| 13 = {{Code|szablon_nie_opis}} {{Patrz|szablon_nie_opis}} | _13 = Zmienna wskazująca, czy {{Code|nazwa strony}} {{LinkPatrz|nazwa strony}} wskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowany, używany wraz ze zmienną: {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}}.
| 14 = Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chcieliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:| nagłówek14 = tak
| 15 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} | _15 = Operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_ANALIZA_SPISOWA}}
| 16 = {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} | _16 = Funkcja operująca na komentarzach, przeciwnie jest używana funkcja: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}, gdzie:
<syntaxhighlight lang="lua">
local techniczne_modul=require("Module:Techniczne");
tekst_artykulu=__FUNKCJA_KOMENTARZE
and (__FUNKCJA_KOMENTARZE(tekst_artykulu))
or techniczne_modul.UsuwanieKomentarzowe(tekst_artykulu);
</syntaxhighlight>
| 17 = {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} | _17 = Funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów.
{{P|Przykład wywołania;}}
<syntaxhighlight lang="lua">
tekst_artykulu=__FUNKCJA_KONTROLNE and __FUNKCJA_KONTROLNE(tekst_artykulu) or tekst_artykulu;
</syntaxhighlight>
| 18 = {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} | _18 = Funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_analizy_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY}}
}}
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}}, operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} | _1 = Tekst do analizy, jak w funkcji nadrzędnej.
| 2 = {{Code|nazwa_modulu_szablonu_opisu}} {{LinkPatrz|nazwa_modulu_szablonu_opisu}} | _2 = Nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}.
| 3 = {{Code|nazwa_strony_bez_kodow_html}} {{Patrz|nazwa_strony_bez_kodow_html}} | _3 = Jest to nazwa strony: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, tylko z kodami '''{{lpg|HTML}}''' zamienionymi na ich odpowiedniki znakowe.
| 4 = {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}} | _4 = Tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej.
| 5 = {{Code|tabela_nazw}} {{Patrz|tabela_nazw}} | _5 = Tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, wewnątrz tej funkcji nadrzędnej.
}}
{{Hr}}
Funkcja: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}, ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica: {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt]}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul[obiekt]}}, uzyskana z: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, jest tablicą zawsze pustą, do niej dla każdego obiektu: {{Code|obiekt}} {{LinkPatrz|obiekt}}, przywiązana jest tablica, którą zapełniamy elementami, modyfikującego tablicę: {{Code|tablica}}. W funkcji zwracanej przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}, też modyfikujemy ją. Jak piszemy {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod metatabelki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} {{Patrz|__metatablica}}, to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Ten rozdział zawiera kolejność wywołań poszczególnych kroków w funkcji.
==== Poprawność pewnych nazw ====
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]|p=Html}}}}, która z: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}}.
==== Parametry uzyskanej strony ====
* Uzyskujemy: {{Code|nazwa_strony_z_kodami_html}}, z {{Code|nazwa_strony}}, na podstawie funkcji: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]|p=Html}}}}.
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry|p=Techniczne}}}}, używając parametru: {{Code|nazwa_strony_z_kodami_html}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}} {{Patrz|uchwyt strony}}, {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} i {{Code|czy_istnieje}} {{Patrz|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów.
==== Składniki preprocesora kodu mechanizmu: {{nobold|{{NS|l=tak|k=mw|w=tak}}}} ====
* Gdy {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli: {{Code|czy_noinclude}} {{LinkPatrz|czy_noinclude}}, przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie. Ze strony są usuwane pozostałości ze znaczników wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''' i znaczników jak {{Tag|templatedata}},
* Przeciwny wypadek: wtedy: {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}}, jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione.
==== Komentarze ====
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, a jeżeli one nie istnieją, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}.
===== Usuwanie pseudoszablonów i niektórych instrukcji warunkowych =====
* Ustawiane są zmienne w: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}} {{LinkPatrz|tabela_nazw}}. Do tego celu jest używana zmienna: {{Code|nazwa_modulu_szablonu_opisu}}, lub {{Code|nazwa_strony_bez_kodow_html}}.
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}} {{Patrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}, by usunąć różne instrukcje warunkowe.
==== Specjalne elementy zmieniające wikikod ====
* Uruchamiana jest, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana jest, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
==== Kodowanie bazy danych kodów {{nobold|{{Code|{{m|Szablonowe}}}}}} ====
* Jeśli: {{Code|szablon_nie_opis}} {{LinkPatrz|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
ff9mudk0ib4voc5unkheb8v6ftlcnt1
558331
558330
2026-10-02T17:25:55Z
Persino
2851
/* Kodowanie bazy danych kodów {{nobold|{{Code|{{m|Szablonowe}}}}}} */
558331
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|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.SpreparowanyWikikodStrony}}{{Code|p.SpreparowanyWikikodStrony}} ==
Funkcja ściągąjąca opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Funkcja w opisach szablonów, a w niej instrukcje warunkowe podczas kodowania są rozwijane przy pomocy funkcji: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}}, a normalnie, gdy wewnątrz instrukcji warunkowych nie ma klamerek w funkcji, w składowej funkcji, tzn.: {{LinkPatrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja korzysta bezpośrednio z funkcji: {{LinkŚródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana. Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję, np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:SpreparowanyWikikodStrony(nazwa_modulu,nazwa_modulu_szablonowa,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 2 = {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} | _2 = Nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw.
| 3 = {{Code|nazwa_modulu_szablonowa}} {{Patrz|nazwa_modulu_szablonowa}} | _3 = Nazwa modułu w wersji szablonowej, w wersji wywołaniowej.
| 4 = {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} | _4 = Przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony.
| 5 = {{Code|inkludowana}} {{Patrz|inkludowana}} | _5 = Przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}} {{LinkPatrz|czy_noinclude}}.
| 6 = Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem: | nagłówek6 = tak
| 7 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-SpreparowanyWikikodStrony}} | _7 = Funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, po kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
tekst=__FUNKCJA(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,dokumentacja,czy_niezakodowana)
</syntaxhighlight>
| 8 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-SpreparowanyWikikodStrony}} | _8 = Jeśli: {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} {{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, odkodować od postaci zakodowanej, czyli do formy dokumentacji.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul)))then
</syntaxhighlight>
| 9 = {{Code|__FUNKCJA3}} {{Patrz|__FUNKCJA3-SpreparowanyWikikodStrony}} | _9 = Funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}}, czyli: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu,nazwa_modulu_szablonowa) or nil;
</syntaxhighlight>
| 10 = Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]|p=Szablonowe}}}} {{Patrz|UstalanieNazwyWywołania}}: | nagłówek10 = tak
| 11 = {{Code|__FUNKCJA4}} {{Patrz|__FUNKCJA4-SpreparowanyWikikodStrony}} | _11 = Funkcja, np. dekodująca nazwę szablonu.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if(__FUNKCJA4)then
nazwa_szablonu,powodzenie__FUNKCJA4(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
| 12 = {{Code|__FUNKCJA5}} {{Patrz|__FUNKCJA5-SpreparowanyWikikodStrony}} | _12 = Funkcja, np. rozwijająca nazwę szablonu.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
nazwa_szablonu=__FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
</syntaxhighlight>
| 13 = Inne: | nagłówek13 = tak
| 14 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _14 = Funkcja do modyfikacji tekstu pobranego ze strony.
{{Śródtekst|uchwyt=__FUNKCJA_ANALIZA_SPISOWA|tekst=
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
tekst_artykulu=__FUNKCJA_ANALIZA_SPISOWA and __FUNKCJA_ANALIZA_SPISOWA(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw) or tekst_artykulu;
</syntaxhighlight>
}}
| 15 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _15 = Funkcje do generowania tablicy bazy kodów.
{{Śródtekst|uchwyt=__FUNKCJA_PARAMETRY|tekst=
{{P|Przykład definicji:}}
<syntaxhighlight lang="lua">
function __FUNKCJA_PARAMETRY(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_element_juz_istnieje)
...
end;
end;
</syntaxhighlight>
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
local __FUNKCJA=__FUNKCJA_PARAMETRY(obiekt);
...
__FUNKCJA(tablica,klucz,wartosc_tablicy,false);
</syntaxhighlight>
}}
}}
Definicje funkcji: {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-UstalanieNazwyWywołania}} i {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-UstalanieNazwyWywołania}}, które są potrzebne do konstrukcji wywołania funkcji: {{LinkPatrz|UstalanieNazwyWywołania}}, uzyskiwania nazwy szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} i {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}}, definicje tych funkcji:
* {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Tablica danych bazy kodów zakodowanego tekstu.
| 5 = {{Code|dokumentacja}} | _5 = Jak w: {{LinkPatrz|dokumentacja}}.
| 6 = {{Code|czy_nie_opis}} {{Patrz|czy_nie_opis}} | _6 = Czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu_caly}} {{Patrz|tekst_artykulu_caly}} | _1 = Przetwarzany tekst.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} {{LinkPatrz|__FUNKCJA3-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu,nazwa_modulu_szablonowa)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_modulu}} | _1 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 2 = {{Code|nazwa_modulu_szablonowa}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory,czy_z_kluczem]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} | _1 = Nazwa szablonu do rozwinięcia.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 3 = {{Code|nazwa_modulu_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}}. | _5 = Tabela parametrów potrzebna do szybszego działania '''{{ld|StronicowyParser|Stronicowego parsera}}'''.
| 6 = Gdy tą funkcją jest: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}}, te zmienne bezpośrednio w: {{Code|__FUNKCJA4}}, nie występują, ale za to występują w tej podanej szczególnej przykładowej funkcji, tzn. argumenty: | komórka6 = tak
| 7 = {{Code|czy_uwzgledniac_modyfikatory}} {{Patrz|czy_uwzgledniac_modyfikatory}} | _7 = Czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}}.
| 8 = {{Code|czy_z_kluczem}} {{Patrz|czy_z_kluczem}} | _8 = Czy klucze, o wzorze: {{Code|<nowiki>^klucz$</nowiki>}}, lub {{Code|<nowiki>^klucz[1-9]%d*$</nowiki>}}.
}}
Jeżeli w funkcji {{LinkPatrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}} nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}} w przeciwnym wypadku zwracane jest nazwa szablonu i wartość {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|nazwa_szablonu}} | _1 = Jak w: {{LinkPatrz|nazwa_szablonu}}. To jest nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}.
| 2 = {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} | _2 = Tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, to jest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}}, w przypadku: {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}.
| 3 = {{Code|nazwa_modulu}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu}}.
| 4 = {{Code|nazwa_modulu_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{LzLua|frame:preprocess}}, w korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, z której korzysta {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}, jeżeli korzystanej tutaj funkcja zrzuciła niepowodzenie, to pierwsza wartość zwrótcone to: {{Code|nil}}, druga: {{Code|false}}, w przeciwnym wypadku zwraca nazwę rozwiniętego szablonu i drugą wartość zrzuconą: {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąć, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice:
; Przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy{{dk}} {{nobold|{{Code|czy_niezakodowana {{=}} true}}}}, i {{nobold|{{Code|czy_nie_opis {{=}} true}}}}, według funkcji{{dk}}
* {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów,
; W przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja:
* {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami.
----
: Te funkcje są wywoływane wewnątrz funkcji: {{LinkŚródtytuł|p.SpreparowanyWikikodStrony}}. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąć za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{LinkPatrz|self}} | _1 = Parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana. Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Strona, a jednocześnie uchwyt do bazy danych kodów zakodowanego tekstu, o nazwie modułu do rozwinięcia i zakodowania.
| 3 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _3 = Nazwa strony szablonowa, w postaci wywołaniowej szablonów.
| 4 = {{Code|inkludowana}} {{LinkPatrz|inkludowana}} | _4 = Zmienna, czy strona ma być interpretowana jako inkludowana.
| 5 = Zmienne funkcyjne: | nagłówek5 = tak
| 6 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _6 = Funkcja generująca zawartość, może być zmodyfikowana, na podstawie pełnej nazwy strony, używana w funkcji: jest to {{Code|__FUNKCJA3}} w: {{Code|{{sr|#FunkcjaIterajacaRozwijanegoSzablonu|p=Szablonowe}}}} {{Patrz|__FUNKCJA-FunkcjaIterajacaRozwijanegoSzablonu}}.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
if((czy_niekodowane)and(__FUNKCJA))then
local wynik=__FUNKCJA(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow);
if(wynik)then
return wynik;
end;
end;
</syntaxhighlight>
| 7 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} | _7 = Funkcja do generowania zawartości, może być zmodyfikowana, według podanej jej wartości, używana w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|FUNKCJA2-KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, w postaci zmodyfikowanej, czyli w wersji: {{Code|__FUNKCJA2}},
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
szablon=__FUNKCJA2 and __FUNKCJA2(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or szablon;
</syntaxhighlight>
| 8 = Inne zmienne funkcyjne: | nagłówek8 = tak
| 9 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} | _9 = Inne operacje wykonywane na pobranym tekście.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_ANALIZA_SPISOWA}}
| 10 = {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} | _10 = Funkcja użyta do generowania tablicy bazy kodów.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY}}
}}
Funkcje {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}}, zostały już opisane w tym module, więc wystarczy opisać inne.
{{Hr}}
* Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|pelna_nazwa_szablonu}} | _1 = Pełna nazwa szablonu.
| 2 = {{Code|tabela_parametrow_szablonu}} | _2 = Tabela parametrów wywołania szablonu do rozwinięcia.
| 3 = {{Code|tabela_modyfikatorow}} | _3 = Tabela modyfikatorów danego wywołania szablonowego.
}}
{{Hr}}
* Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Zawartość elementu wikikodu według {{Code|{{m|Szablonowe}}}}.
| 2 = {{Code|obiekt}} {{Patrz|obiekt}} | _2 = Nazwa obiektu szablonowego, jak: {{Code|SZABLON}}.
| 3 = {{Code|kod}} {{Patrz|kod}} | _3 = Numer obiektu, typu: {{Code|obiekt}} {{LinkPatrz|obiekt}}.
| 4 = {{Code|tekst}} | _4 = Tekst całego artykułu.
| 5 = {{Code|numer_szablonu}} {{Patrz|numer_szablonu}} | _5 = Tabela numerów dla różnych obiektów w jednej tabeli.
| 6 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _6 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 7 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _7 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
== {{Śródtytuł|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}}{{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}} ==
Funkcja służy do ściągania zawartości stron z zawartością, a jeżeli zawartości nie ma, to ona zwraca wartość {{Code|nil}}.
Posiada własną walidacje nazwy stron, czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe według ściśle określonych sposobów.
Funkcja odpowiednio operuje na znacznikach wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''', tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znaczniki typu: {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
{{OpisParametrów
| 1 = Zmienne obiektowe: | nagłówek1 = tak
| 2 = {{Code|self}} {{Patrz|self}} | _2 = Zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie:
<Syntaxhighlight lang="lua">
tekst=p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
Gdzie zmienna: {{Code|p}} - to odpowiednia zmienna wywołaniowa modułowa nadana przez {{LzLua|require}}.
| 3 = Zwykłe zmienne: | nagłówek3 = tak
| 4 = {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} | _4 = Nazwa strony, której liczymy zawartość, używając funkcji: {{LzLua|mw.title.makeTitle}}, strona może nie istnieć.
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local nazwa_strony_z_kodami_html=html_modul["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](nazwa_strony);
...
local czy_istnieje;
local techniczne_modul=require("Module:Techniczne");
uchwyt_strony,tekst_artykulu,czy_istnieje = techniczne_modul.CzyStronaIstniejeJejParametry(nazwa_strony_z_kodami_html,true);
</syntaxhighlight>
| 5 = {{Code|nazwa_strony2}} {{Patrz|nazwa_strony2}} | _5 = Uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej, przeciwnie brana jest nazwa: {{Code|nazwa_strony}}, jako uchwyt.
<syntaxhighlight lang="lua">
if(not szablon_nie_opis)then
if(not dokumentacja)then
local szablonowe_modul=require("Module:Szablonowe");
tekst_artykulu=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst_artykulu,nazwa_strony2 or nazwa_strony,nil,nil,nil,nil,nil,nil,nil,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
| 6 = {{Code|czy_noinclude}} {{Patrz|czy_noinclude}} | _6 = Jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka.
| 7 = Zmienne tablicowe: | nagłówek7 = tak
| 8 = {{Code|szablony_magiczne}} {{Patrz|szablony_magiczne}} | _8 = Tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej.
| 9 = Inne zmienne: | nagłówek9 = tak
| 10 = {{Code|dokumentacja}} {{Patrz|dokumentacja}} | _10 = Określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}}.
| 11 = {{Code|czy_szablon}} {{Patrz|czy_szablon}} | _11 = Gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst, jeśli: {{Code|czy_szablon}}, jest funkcją, w postaci wywołania:
<syntaxhighlight lang="lua">
tekst_artykulu=czy_szablon(tekst_artykulu,czy_noinclude);
</syntaxhighlight>
| 12 = {{Code|nazwa_modulu_szablonu_opisu}} {{Patrz|nazwa_modulu_szablonu_opisu}} | _12 = Zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami '''{{lpg|HTML}}''' na znaki.
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
nazwa_strony_bez_kodow_html=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](nazwa_strony);
...
local tabela_nazw={};
if(szablony_magiczne)then
local nazwy_modul=require("Module:Nazwy");
szablony_magiczne["{{ROOTPAGENAME}}"]=szablony_magiczne["{{ROOTPAGENAME}}"] or nazwy_modul["NAZWAKORZENIASTRONY"](nazwa_modulu_szablonu_opisu or nazwa_strony_bez_kodow_html,tabela_nazw);
</syntaxhighlight>
| 13 = {{Code|szablon_nie_opis}} {{Patrz|szablon_nie_opis}} | _13 = Zmienna wskazująca, czy {{Code|nazwa strony}} {{LinkPatrz|nazwa strony}} wskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowany, używany wraz ze zmienną: {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}}.
| 14 = Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chcieliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:| nagłówek14 = tak
| 15 = {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} | _15 = Operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_ANALIZA_SPISOWA}}
| 16 = {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} | _16 = Funkcja operująca na komentarzach, przeciwnie jest używana funkcja: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}, gdzie:
<syntaxhighlight lang="lua">
local techniczne_modul=require("Module:Techniczne");
tekst_artykulu=__FUNKCJA_KOMENTARZE
and (__FUNKCJA_KOMENTARZE(tekst_artykulu))
or techniczne_modul.UsuwanieKomentarzowe(tekst_artykulu);
</syntaxhighlight>
| 17 = {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} | _17 = Funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów.
{{P|Przykład wywołania;}}
<syntaxhighlight lang="lua">
tekst_artykulu=__FUNKCJA_KONTROLNE and __FUNKCJA_KONTROLNE(tekst_artykulu) or tekst_artykulu;
</syntaxhighlight>
| 18 = {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} | _18 = Funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_analizy_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY}}
}}
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}}, operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} | _1 = Tekst do analizy, jak w funkcji nadrzędnej.
| 2 = {{Code|nazwa_modulu_szablonu_opisu}} {{LinkPatrz|nazwa_modulu_szablonu_opisu}} | _2 = Nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}.
| 3 = {{Code|nazwa_strony_bez_kodow_html}} {{Patrz|nazwa_strony_bez_kodow_html}} | _3 = Jest to nazwa strony: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, tylko z kodami '''{{lpg|HTML}}''' zamienionymi na ich odpowiedniki znakowe.
| 4 = {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}} | _4 = Tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej.
| 5 = {{Code|tabela_nazw}} {{Patrz|tabela_nazw}} | _5 = Tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, wewnątrz tej funkcji nadrzędnej.
}}
{{Hr}}
Funkcja: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}, ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica: {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt]}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul[obiekt]}}, uzyskana z: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, jest tablicą zawsze pustą, do niej dla każdego obiektu: {{Code|obiekt}} {{LinkPatrz|obiekt}}, przywiązana jest tablica, którą zapełniamy elementami, modyfikującego tablicę: {{Code|tablica}}. W funkcji zwracanej przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}, też modyfikujemy ją. Jak piszemy {{Code|tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_analizy_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod metatabelki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} {{Patrz|__metatablica}}, to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Ten rozdział zawiera kolejność wywołań poszczególnych kroków w funkcji.
==== Poprawność pewnych nazw ====
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]|p=Html}}}}, która z: {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}} {{LinkPatrz|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}}.
==== Parametry uzyskanej strony ====
* Uzyskujemy: {{Code|nazwa_strony_z_kodami_html}}, z {{Code|nazwa_strony}}, na podstawie funkcji: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]|p=Html}}}}.
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry|p=Techniczne}}}}, używając parametru: {{Code|nazwa_strony_z_kodami_html}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}} {{Patrz|uchwyt strony}}, {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}} i {{Code|czy_istnieje}} {{Patrz|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów.
==== Składniki preprocesora kodu mechanizmu: {{nobold|{{NS|l=tak|k=mw|w=tak}}}} ====
* Gdy {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli: {{Code|czy_noinclude}} {{LinkPatrz|czy_noinclude}}, przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie. Ze strony są usuwane pozostałości ze znaczników wbudowanych w '''mechanizm {{NS|l=tak|k=mw|w=tak}}''' i znaczników jak {{Tag|templatedata}},
* Przeciwny wypadek: wtedy: {{Code|czy_szablon}} {{LinkPatrz|czy_szablon}}, jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione.
==== Komentarze ====
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}} {{LinkPatrz|__FUNKCJA_KOMENTARZE}}, a jeżeli one nie istnieją, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}}.
===== Usuwanie pseudoszablonów i niektórych instrukcji warunkowych =====
* Ustawiane są zmienne w: {{Code|szablony_magiczne}} {{LinkPatrz|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}} {{LinkPatrz|tabela_nazw}}. Do tego celu jest używana zmienna: {{Code|nazwa_modulu_szablonu_opisu}}, lub {{Code|nazwa_strony_bez_kodow_html}}.
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}} {{Patrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}, by usunąć różne instrukcje warunkowe.
==== Specjalne elementy zmieniające wikikod ====
* Uruchamiana jest, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana jest, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}} {{LinkPatrz|__FUNKCJA_KONTROLNE}}.
==== Kodowanie bazy danych kodów {{nobold|{{Code|{{m|Szablonowe}}}}}} ====
* Jeśli: {{Code|szablon_nie_opis}} {{LinkPatrz|szablon_nie_opis}} {{=}} {{Code|false}}, i {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
incg2xbfh8slkgfu7xuv2nvvhja218d
Wikibooks:Moduły/StronicowyParser/SpisTreści/Tom II
4
63661
558340
558256
2026-10-02T19:00:07Z
Persino
2851
/* {{Śródtytuł|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}}{{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} */
558340
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SpisTreści}}|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.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}}{{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} ===
Funkcja sprawdzająca, czy na stronie z głównym spisem treści lub w innych spisach treści podanych w: {{s|Układ autonawigacji}} {{Patrz|Układ autonawigacji}}, na jednych ze stron: {{s|NawigacjaSpecjalna/Nawigacja/}} {{Patrz|NawigacjaSpecjalna/Nawigacja/}} (te ustawienia są wykorzystywane przez: {{s|Autonawigacja}} {{Patrz|Autonawigacja}}), dotyczącej danej książki, znajduje się artykuł o nazwie znajduje, z dokładnością do wielkości liter, artykuły o nazwach według tabeli: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}}} {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={
["spis treści"]=true,
["spis tresci"]=true,
["spis rzeczy"]=true,
};
</syntaxhighlight>
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku(tabela_artykulow)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tabela_artykulow}} | _1 = Tabela wielowymiarowa rozdziałów i do nich artykułów.
}}
Kopia tej tabeli jest połączona z metatabelką: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=StronicowyParser/obiekty}}}} {{Patrz|p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter}}, przy pomocy funkcji: {{LzLua|setmetatable}}.
Iterujemy dla elementach tabeli: {{Code|tabela_artykulow}} {{Patrz|tabela_artykulow}}, a póżniej sprawdzamy, czy artykuł znajduje się w dozwolonych rozdziałach jako artykuły książki: {{Code|tab_lista[2]}} {{Patrz|tab_lista[2]}}, iterując po jego elementach, wtedy jednych z jego wartości, o pewnym numerze, bierzemy element: {{Code|artykul_w_bazie_element}} {{Patrz|artykul_w_bazie_element}}, według kodu:
<syntaxhighlight lang="lua">
---- Bierzemy jego pierwszy element "tab_stare", bo: "artykul_w_bazie_element", jest tabelką;
local artykul_w_bazie=artykul_w_bazie_element[1];
---- Sprawdzamy, czy element, zawiera klucz o nazwie "["LINK"]=true";
local czy_table=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(artykul_w_bazie);
---- Wybieramy w zależnosci, czy to jest tabelka, czy nie bez tego: "["LINK"]=true";
artykul_w_bazie=czy_table and artykul_w_bazie[1] or artykul_w_bazie;
---- Jeżeli ten element jest tabelką i posiada: "["LINK"]=true", to zwracamy pierwszy element, a jeżeli nie to sam element;
local artykul_bez_naglowka_w_bazie=stronicowyparser_potrzebne_modul.TylkoNazwaStronyWoluminuZTabeliPublikacji(artykul_w_bazie);
</syntaxhighlight>
Powyższy kod, zawiera funkcje z: {{Code|{{ld2|StronicowyParser/Potrzebne}}}}, tzn.: {{Code|{{sr|#p.CzyTabelaStronyWoluminuSpisuRzeczy|p=StronicowyParser/Potrzebne}}}}, która sprawdza, czy element jest tabelka, i czy ma klucz: {{Code|LINK}}, wtedy zwraca wartość: {{Code|false}}, w przeciwnym wypadku, zrzuca wynik czy to jest owo (tabelka), i {{Code|{{sr|#p.TylkoNazwaStronyWoluminuZTabeliPublikacji|p=StronicowyParser/Potrzebne}}}}, który sprawdza, czy to jest tabelka, czy posiada klucz: "klucz", a jeżeli tak, to zwraca pierwszy element tej tabeli, a jeżeli nie, to zwraca to nawet, gdy by nie była tabelką, a jak jest nią, to nie posiada klucza: {{Code|LINK}}. Aby zrozumieć te funkcje skorzystaj z definicji: {{Code|tab_stare}} {{Patrz|tab_stare}}, na stronie: {{Code|{{lr|Moduły/StronicowyParser/SpisTreści/Tom I|SpisTreści - Tom I}}}}.
Następnie sprawdzamy, czy to jest ten spis treści zagwarantowany według: {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}, a jeżeli tak, to funkcja zrzucza wartość: {{Code|artykul_bez_naglowka_w_bazie}} {{Patrz|artykul_bez_naglowka_w_bazie}} - jest to nazwa artykułu spisu treści o określonej nazwie bez nagłówka, a jeżeli mimo to nie znaleziono nic, to nic nie zwraca.
=== {{Śródtytuł|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}}{{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} ===
==== Opis funkcji ====
Funkcja zrzuca wynik z jednego spisu rzeczy, którym jest strona główna książki, lub ewentualnie skojarzony z nią, spis, który jest artykuł o nazwie jednych z: {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}, z dokładnością do wielkości znaków. Funkcja też sprawdza stronę z {{s|Układ autonawigacji}}, czyli strony znajdujące się katalogu: {{s|NawigacjaSpecjalna/Nawigacja/}}, tam sprawdza, jakie spisy do niego należą i je liczy, też sprawdza jakie artykuły do niego należą. W ten sposób mamy utworzony spis treści, który po artykułach książki możemy nawigować za pomocą odpowiednich funkcji autonawigacji.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,czy_artykul_korzystany,__FUNKCJA_SPISU_RZECZY,__FUNKCJA_ZBIERANIA_DANYCH)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{Patrz|self}} | _1 = Zmienna obiektowa funkcji.
| 2 = {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} | _2 = Kolejno jak w: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''' i '''nazwa książki'''.
| 3 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _3 = {{Code|true}}, gdy artykuł dany jest korzystamy, czy aktualnie korzystamy z niego za pomocą przeglądarki.
| 4 = {{Code|__FUNKCJA_SPISU_RZECZY}} {{Patrz|__FUNKCJA_SPISU_RZECZY}} | _4 = Funkcja wykorzystywana w: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}, w module: {{Code|{{ld2|StronicowyParser/ZbieranieDanychStron}}}}, jest to funkcja do różnych celu, w tym przypadku służy, to przypisywania, na które wskazuje przekierowanie, danych z przekierowania do strony, którym jest to właśnie przekierowanie.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
__FUNKCJA_SPISU_RZECZY(tekst_rozwiniety_calego_artykulu_ref_spis,nazwa_przestrzeni_ref_spis,nazwa_przestrzeni_ksiazki_ref_spis,nazwa_ksiazki_ref_spis,nazwa_artykulu_ref_spis,tablica_analizy_obiektow_strony_dany_modul_ref_spis,tablica_danych_parametrow_szablonu_strony_ref_spis);
</syntaxhighlight>
Ta funkcja nie zwraca niczego.
| 5 = {{Code|__FUNKCJA_ZBIERANIA_DANYCH}} {{Patrz|__FUNKCJA_ZBIERANIA_DANYCH}} | _5 = Funkcja opisana w rozdziale: {{Code|{{sr|#p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy|p=StronicowyParser/SpisTreści/Tom I}}}}, w module: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}.
{{PobierzŚródttekst|uchwyt=__FUNKCJA_ZBIERANIA_DANYCH|nazwa artykułu=StronicowyParser/SpisTreści/Tom II}}
}}
==== Fukcje lokalne ====
===== {{Śródtytuł|Spis}}{{Code|Spis}} =====
Funkcja służy do ustawiania poszczególnych spisów treści, jeżeli książka ma ich kilka. Ona służy jedynie do jednego spisu, a nie wszystkich razem, tylko oddzielnie.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Spis(tablista_artykulow,spis_tresci,tab_inne_spisy,nazwa_glownego_spisu,numer)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tablista_artykulow}} {{Patrz|tablista_artykulow}} | _1 = Tabela rozdziałów i do nich artykułów.
| 2 = {{Code|spis_tresci}} {{Patrz|spis_tresci}} | _2 = Jeżeli strona nie jest przekierowaniem, to jest wtedy łańcuch znakowy opisujący dany spis, a jeżeli właśnie jest, wtedy jest to tablica, coś w rodzaju {{Code|<nowiki>{przekierowanie_spisu_tresci,spis_tresci,}</nowiki>}}:
| 3 = Wyjaśnienie: | nagłówek3 = tak
| 4 = {{Code|przekierowanie_spisu_tresci}} {{Patrz|przekierowanie_spisu_tresci}} | _4 = Strona spis treści, która jest jednocześnie przekierowaniem.
| 5 = {{Code|spis_treści}} | _5 = Jak w: {{LinkPatrz|spis_tresci}}, tylko, że tylko łańcuch znakowy, na który wskazuje przekierowanie.
| 6 = Inne parametry: | nagłówek6 = tak
| 7 = {{Code|tab_inne_spisy}} {{Patrz|tab_inne_spisy}} | _7 = Tabela innych spisów książki, jeżeli istnieją,
| 8 = {{Code|nazwa_glownego_spisu}} {{Patrz|nazwa_glownego_spisu}} | _8 = Nazwa głównego spisu treści, zwykle jest to strona główna książki.
| 9 = {{Code|numer}} {{Patrz|numer}} | _9 = Numer, który liczmy, do którego dodajemy jeden.
}}
Parametry zwracane:
<syntaxhighlight lang="lua">
return tablista_artykulow,tab_inne_spisy,numer;
</syntaxhighlight>
Opis parametrów zwracanych:
{{OpisParametrów
| 1 = {{Code|tablista_artykulow}} | _1 = Jak w: {{LinkPatrz|tablista_artykulow}}.
| 2 = {{Code|tab_inne_spisy}} | _2 = Jak w: {{LinkPatrz|tab_inne_spisy}}.
| 3 = {{Code|numer}} | _3 = Jak w: {{LinkPatrz|numer}}.
}}
Gdy zmienna: {{Code|tablista_artykulow}} {{LinkPatrz|tablista_artykulow}}, istnieje, i ma niepustą tablicę, wtedy ta funkcja wtedy faktycznie coś robi, w przeciwnym wypadku zwraca tylko wynik.
Liczmy spis treści, na który wskazuje przekierowanie, gdy strona nie jest nim, to sama strona ze wskazania:
<syntaxhighlight lang="lua">
local czy_spis_tresci_table=parametry_modul.TypeTable(spis_tresci);
local spis_tresci_strona=czy_spis_tresci_table and spis_tresci[1] or spis_tresci;
</syntaxhighlight>
Zmienna: {{Code|spis_tresci_strona}}, to jest nic innego jak: {{Code|przekierowanie_spisu_tresci}} {{LinkPatrz|przekierowanie_spisu_tresci}}, lub tylko jest łańcuchem znakowym, według: {{Code|spis_tresci}} {{LinkPatrz|spis_tresci}}.
Policzmy zmienną: {{Code|tab_element}} {{Patrz|tab_element}}:
<syntaxhighlight lang="lua">
local tab_element={[1]={((not spis_tresci) and "Główny spis treści" or ("Spis treści - "..spis_tresci_strona)),{((spis_tresci) and 1 or nil),nil,nil,},["spis"]={spis_tresci_strona or nazwa_glownego_spisu or "",numer}},[2]=nil,[3]=nil,};
</syntaxhighlight>
Jeżeli pierwszy rozdział danego spisu nie ma numeracji, tzn. wtedy liczymy element: {{Code|tablista_artykulow[1][1][2][1]}}, to wtedy jego pozycje artykularne: {{Code|numer > 1}}, zapisujemy na sam koniec w tablicy: {{Code|tab_element}} {{LinkPatrz|tab_element}}. Następnie usuwamy pierwszy rozdział z artykułami przy pomocy funkcji: {{LzLua|table.remove}}.
Poziomy rozdziałów powiększamy o jeden aż do napotkania pierwszego rozdziału centrowanego, wtedy przerywamy pętle.
Następnym podejściem jest dodanie przed pierwsza pozycją elementu: {{Code|tab_element}} {{LinkPatrz|tab_element}}, do tablicy: {{Code|tablista_artykulow}} {{LinkPatrz|tablista_artykulow}}}, przy pomocy funkcji: {{LzLua|table.insert}}.
Jeżeli spis treści: {{Code|spis_tresci}} {{LinkPatrz|spis_tresci}}, istnieje, wtedy robimy dalsze operacje. Jeżeli tablica: {{Code|tab_inne_spisy}} {{LinkPatrz|tab_inne_spisy}}, nie istnieje, to ją tworzymy, wtedy {{Code|spis_tresci}} {{LinkPatrz|spis_tresci}}, przy pomocy: {{LzLua|table.insert}}, dodajemy do: {{Code|tab_inne_spisy}} {{LinkPatrz|tab_inne_spisy}}. Następnie jeżeli nie istnieje element {{Code|tablista_artykulow[1][2]}} {{Patrz|tablista_artykulow[1][2]}}, związany artykułami należącymi do rozdziału, to go tworzymy, wtedy tworzymy element: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, w postaci:
<syntaxhighlight lang="lua">
local tab_stare={czy_spis_tresci_table and {spis_tresci_strona,nil,przekierowanie_strona} or spis_tresci,{0,"","",true,},"[[:"..pelna_nazwa_ksiazki.."/" ..spis_tresci_strona.."]]",false,};
</syntaxhighlight>
To: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, jest opisane w module: {{lr|Moduły/StronicowyParser/SpisTreści/Tom I|Spis treści - Tom I}}.
To dodajemy na pierwszą pozycję do zbioru artykułów, do elementu: {{LinkPatrz|tablista_artykulow[1][2]}}, na pierwszą pozycję, przy pomocy funkcji: {{LzLua|table.insert}}.
Następnym krokiem jest zwracanie przez funkcję zmiennych powyżej powiedzianych.
===== {{Śródtytuł|InneSpisy}}{{Code|InneSpisy}} =====
Funkcja służy do uzyskiwania elementów danego spisu, ustawiania go odpowiedniego i wstawianie go do ogólnego spisu opisujące wszystkie spisy w danej książce.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function InneSpisy(tablista_artykulow,tab_inne_spisy,spis_tresci,numer)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tablista_artykulow}} | _1 = Jak w: {{LinkPatrz|tablista_artykulow}}.
| 2 = {{Code|tab_inne_spisy}} | _2 = Jak w: {{LinkPatrz|tab_inne_spisy}}.
| 3 = {{Code|spis_tresci}} | _3 = Jak w: {{LinkPatrz|spis_tresci}}.
| 4 = {{Code|numer}} | _4 = Jak w: {{LinkPatrz|numer}}.
}}
Uzyskujemy elementy spisu z wywołania dla pojedynczego spisu treści:
<syntaxhighlight lang="lua">
local tablista_artykulow_iter,tablica_licencji,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,spis_tresci,false,nil,__FUNKCJA_ZBIERANIA_DANYCH);
</syntaxhighlight>
Jeżeli zmienna: {{Code|tablista_artykulow_iter}} {{Patrz|tablista_artykulow_iter}} istnieje i jest tablicą, to ją przetwarzamy przy pomocy funkcji: {{LinkŚródtytuł|InneSpisy}}, w sposób:
<syntaxhighlight lang="lua">
tablista_artykulow_iter,tab_inne_spisy,numer=Spis(tablista_artykulow_iter,(not przekierowanie_spisu_tresci)and spis_tresci or {przekierowanie_spisu_tresci,spis_tresci,},tab_inne_spisy,nil,numer);
</syntaxhighlight>
Tak otrzymanną zmienną: {{Code|tablista_artykulow_iter}} {{LinkPatrz|tablista_artykulow_iter}}, iterujemy po elementach wsadzając ją do tablicy na sam koniec: {{Code|tablista_artykulow}} {{LinkPatrz|tablista_artykulow}}, a jak tak tablica nie istnieje, to ją tworzymy z pustą tablicą, i wtedy wykonujemy tą operację. To wsadzanie wykonujemy za pomocą funkcji: {{LzLua|table.insert}}.
Na samym końcu zwracamy wiele elementów:
<syntaxhighlight lang="lua">
return tablista_artykulow,tab_inne_spisy,numer;
</syntaxhighlight>
===== {{Śródtytuł|SpisRzeczy}}{{Code|SpisRzeczy}} =====
Funkcja przygotowuje aktualny spis treści, by dodać do niego nowy spis, jeżeli on istnieje, jako artykuł w spisie o nazwach: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function SpisRzeczy(tabela_artykulow,tab_inne_spisy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tabela_artykulow}} | _1 = Jak w: {{LinkPatrz|tabela_artykulow}}.
| 2 = {{Code|tab_inne_spisy}} | _2 = Jak w: {{LinkPatrz|tab_inne_spisy}}.
}}
Uruchamiamy funkcję: {{LinkŚródtytuł|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}}, która zwraca wynik, który trzeba sprawdzić, czy istnieje, przed dalszymi operacjami, tzn. {{Code|artykul_spisu_rzeczy}} {{Patrz|artykul_spisu_rzeczy}}, uzyskując z aktualnej listy spis treści dla całej książki, jako jego zespołu, na podstawie jego dowiadujemy, ża taki omawiany spis istnieje, wtedy stary spis, czyli stronę główną podręcznika, przygotujemy do tego, do tego robimy funkcją: {{LinkŚródtytuł|Spis}}, wywołaniem, ale przed tymwywołaniem ustawiamy: {{Code|numer {{=}} 1}}, zatem:
<syntaxhighlight lang="lua">
tabela_artykulow,tab_inne_spisy,numer=Spis(tabela_artykulow,nil,tab_inne_spisy,"",numer);
</syntaxhighlight>
Następnym krokiem jest czytanie tego spisu przy pomocy wywołania: {{LinkŚródtytuł|InneSpisy}}, jako:
<syntaxhighlight lang="lua">
tabela_artykulow,tab_inne_spisy,numer=InneSpisy(tabela_artykulow,tab_inne_spisy,artykul_spisu_rzeczy,numer);
</syntaxhighlight>
Funkcja używa zmiennej uzyskanego wcześniej, tzn.: {{Code|artykul_spisu_rzeczy}} {{LinkPatrz|artykul_spisu_rzeczy}}, to jest to samo, co: {{Code|artykul_bez_naglowka_w_bazie}} {{LinkPatrz|artykul_bez_naglowka_w_bazie}}, uzyskanej z funkcji liczący taki spis według: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}, którym wartością jest nazwa artykułu bez nagłówka w bazie.
Wartościami zwracanymi przez funkcję dwie osobne zmienne zrzucane jednocześnie:
<syntaxhighlight lang="lua">
return tabela_artykulow,tab_inne_spisy;
</syntaxhighlight>
Jest to ogólna tabela wszystkich rozdziałów i do nich ich artykułów, i uzupełniona lista innych spisów treści.
===== {{Śródtytuł|IteratorSpisTresci}}{{Code|IteratorSpisTresci}} =====
Funkcja uruchamiająca iterator po spisach treści innych niż spis treści główny, jego definicja:
<syntaxhighlight lang="lua">
local IteratorSpisTresci=function()
local liczba=1;
return function()
local spis_tresci=tabela_parametrow_szablonu_uklad_autonawigacji["spis treści "..liczba];
liczba=liczba+1;
return spis_tresci;
end;
end;
</syntaxhighlight>
Funkcja wykorzystuje tablicę parametrów autonawigacji ze strony ściśle określonej z katalogu stron: {{Code|NawigacjaSpecjalna/Nawigacja/...}} {{LinkPatrz|NawigacjaSpecjalna/Nawigacja/}}, iteruje co jeden numer spisu treści, tzn.: {{Code|spis treści 1}}, {{Code|spis treści 2}},..., {{Code|spis treści N}}, gdzie {{Code|N}}, to największa liczba charakteryzująca dany spis treści. W samym iteratorze liczba: {{Code|liczba}} {{Patrz|liczba-IteratorSpisTresci}}, powiększa się co jeden, aż do zakończenia limitu spisów treści, tzn do najbliżeszej przerwy lub końca przy iteracji, bo na samym końcu iterator zrzuci wynik {{Code|nil}}.
===== {{Śródtytuł|IteratorFun}}{{Code|IteratorFun}} =====
Funkcja iteruje po stronach i ich nazwach, jakie mają być wyświetlane w linkach, generowane przez: {{Code|{{s|Autonawigacja}}}} {{LinkPatrz|Autonawigacja}}, ale na podstawie {{Code|{{s|Układ autonawigacji}}}} {{LinkPatrz|Układ autonawigacji}}, według jednych ze stron: {{Code|NawigacjaSpecjalna/Nawigacja/...}} {{LinkPatrz|NawigacjaSpecjalna/Nawigacja/}}, ustawień.
Definicja skrótowa funkcji i jego funnkcji zwracanej, która jest iteratorem:
<syntaxhighlight lang="lua">
local IteratorFun=function()
... ---- operacje robione przed uruchomieniem iteratora;
return function()
... ---- ciało iteratora
return strona,nazwa; ---- zwracane elementy;
end;
end;
</syntaxhighlight>
Definicja funkcji: {{Code|STRONA}} {{Patrz|STRONA}} i {{Code|NAZWA}} {{Patrz|NAZWA}}, są:
<syntaxhighlight lang="lua">
local STRONA=function(liczba)return liczba*2-1;end;
local NAZWA=function(liczba)return liczba*2;end;
</syntaxhighlight>
W iteratorze dostępna jest zmienna: {{Code|tabela_parametrow_szablonu_uklad_autonawigacji}} {{Patrz|tabela_parametrow_szablonu_uklad_autonawigacji}}, z którego uzyskujemy parametry, te wywołania są napisane w ciele iteratora, w sposób:
<syntaxhighlight lang="lua">
local strona=tabela_parametrow_szablonu_uklad_autonawigacji[STRONA(liczba)];
local nazwa=tabela_parametrow_szablonu_uklad_autonawigacji[NAZWA(liczba)];
</syntaxhighlight>
Iterację zaczynamy od {{Code|liczba}} {{Patrz|liczba-IteratorFun}} od jedynki, po uzyskaniu powyższych wartości, licznik (tą liczbę) powiększamy o jeden, a następnie zwracamy w iteratorze zmienne: {{Code|strona}} {{Patrz|strona}} i {{Code|nazwa}} {{Patrz|nazwa}}.
===== {{Śródtytuł|ZbieranieDanychStronZAutonawigacji}}{{Code|ZbieranieDanychStronZAutonawigacji}} =====
Jest to funkcja do zbierania danych z jednego ze ściśle określonej strony szablonu z: {{Code|NawigacjaSpecjalna/Nawigacja/...}} {{LinkPatrz|NawigacjaSpecjalna/Nawigacja/}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function ZbieranieDanychStronZAutonawigacji()...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = Brak parametrów. | komórka1 = tak
}}
Gdy parametr z iteracji iteratorem: {{Code|iter}}, z którego przy jego kolejnych wywołaniach otrzymujemy parametry: {{Code|strona}} {{LinkPatrz|strona}}, i {{Code|nazwa}} {{LinkPatrz|nazwa}}, dla: {{Code|strona}} {{LinkPatrz|strona}}, jest równy wartości odpowiadającej fałszywej, wtedy funkcja zakańcza pracę. W przeciwnym wypadku te parametry są dekodowane funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, z drugim parametrem: {{Code|true}}, ale nazwa jest dekodowana, gdy ona jest niepusta.
Gdy zmienna: {{Code|dodatkowe_artykuly}} {{LinkPatrz|dodatkowe_artykuly}}, nie istnieje, to wtedy ją tworzymy, inicjując ją pustą tablicą, oraz inicjujemy tabelę artykułów dodatkowych wykorzystując funkcję: {{LzLua|table.insert}}:
<syntaxhighlight lang="lua">
table.insert(tablista_artykulow,{[1]={"Dodatkowe artykuły",{1,nil,nil},["dodatkowe"]="tak",},[2]=nil,});
</syntaxhighlight>
Następnie liczymy parametr dla danego rozdziału, tzn. liczymy: {{Code|tabela_rozdzial_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}, według:
<syntaxhighlight lang="lua">
tabela_rozdzial_artykulow=tablista_artykulow[#tablista_artykulow];
</syntaxhighlight>
Następnie liczyny adres bezwzględny: {{Code|strona}} {{LinkPatrz|strona}} z funkcji: {{Code|{{sr|#p["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]|p=Techniczne}}}}, według wywołania, znająć dwa parametry: {{Code|strona}} {{LinkPatrz|strona}} i {{Code|pelna_nazwa_ksiazki}} {{Patrz|pelna_nazwa_ksiazki}}, czyli:
<syntaxhighlight lang="lua">
strona=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=strona,[2]=pelna_nazwa_ksiazki,};
</syntaxhighlight>
====== {{Śródtytuł|WsadzanieParametryDoTablicy}}{{Code|WsadzanieParametryDoTablicy}} ======
Jest to funkcja wsadzająca elementy do tablicy do funkcji: {{Code|{{sr|#WstawianieElementowychZarejestrowanychStronDoBazyWoluminu|p=StronicowyParser/SpisTreści/Tom I}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local WsadzanieParametryDoTablicy=function(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tabela_rozdzial_artykulow}} {{Patrz|tabela_rozdzial_artykulow}} | _1 = Tabela rozdziału i do niego artykułów.
| 2 = {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{Patrz|numer_rodzaju_artykulow_w_nie_podreczniku}} | _2 = Numer pozycji na którym element zostonie element {{LinkPatrz|tab_stare}} wstawiony.
| 3 = {{Code|tab_stare}} {{LinkPatrz|tab_stare}} | _3 = Wstawiany element.
}}
Jeżeli zmienna: {{Code|dodatkowe_artykuly}} {{Patrz|dodatkowe_artykuly}}, nie istnieje, to jest inicjowana tablicą pustą.
Liczymy adres strony na podstawie:
<syntaxhighlight lang="lua">
---- Jeżeli zmienna jest tablicą i nie ma klucza: "["LINK"]=true", wtedy przyjmuje wartość: true, w przeciwnym wypadku: false;
local czy_table_baza_artykulu=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(tab_stare[1]);
---- Nazwa artykułu lub adres strony, dla ktorej liczymy adres;
local adres=czy_table_baza_artykulu and tab_stare[1][1] or tab_stare[1];
</syntaxhighlight>
Liczymy, czy strona jest w podręczniku, czyli: {{Code|czy_w_podreczniku}} {{Patrz|czy_w_podreczniku}}, ze: {{Code|tab_stare[5]}} {{Patrz|tab_stare[5]}}, a następnie kod języka i projektu, kolejno: {{Code|kod_jezyka_koncowy}} {{Patrz|kod_jezyka_koncowy}}, i {{Code|kod_projektu_koncowy}} {{Patrz|kod_projektu_koncowy}}, jeżeli zmienna: {{Code|czy_table_baza_artykulu}} {{Patrz|czy_table_baza_artykulu}}, jest nie równa wartości prawdziwej, to te zmienne przyjmuje wartość {{Code|nil}}, w przeciwnym wypadku kolejno wartości: {{Code|tab_stare[1][5]}} i {{Code|tab_stare[1][6]}}.
Wsadzamy element do tablicy: {{Code|dodatkowe_artykuly}} {{LinkPatrz|dodatkowe_artykuly}}, przy pomocy funkcji: {{LzLua|table.insert}}, w sposób:
<syntaxhighlight lang="lua">
table.insert(dodatkowe_artykuly,{((adres) and (kod_jezyka_koncowy or kod_projektu_koncowy) and({adres,kod_jezyka_koncowy,kod_projektu_koncowy,}) or adres),nazwa,czy_w_podreczniku,});
</syntaxhighlight>
Póżniej wstawiamy element: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, do: {{Code|tabela_rozdzial_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}, na pozycję: {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, używając wywołania {{LzLua|table.insert}}, czyli:
<syntaxhighlight lang="lua">
table.insert(tabela_rozdzial_artykulow[numer_rodzaju_artykulow_w_nie_podreczniku],tab_stare);
</syntaxhighlight>
====== Dalszy opis funkcji nadrzędnej ======
Dalszym krokiem jest wsadzenie elementu do ogólnej tablicy, a tutaj do artykułu w danym rozdziale, robimy, mając przetwarzaną zmienną: {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}}, to według:
<syntaxhighlight lang="lua">
local numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy;
numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych=WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,WsadzanieParametryDoTablicy,...,...,true,{strona,nazwa,},...,...,...,"",...,...,tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji,tablica_danych_parametrow_szablonu_strony_uklad_autonawigacji,nil,nil,...,--[[]]"*","",false,"[[:"..strona..((parametry_modul.CzyTak(nazwa))and("|"..nazwa) or "").."]]");
</syntaxhighlight>
Powyżej użyto trójkropków: {{Code|...}}, bo te parametry są standardowe dla każdego wywołania.
Powyżej wstawianie odbyło się przy pomocy funkcji: {{LinkŚródtytuł|WsadzanieParametryDoTablicy}}, używając: {{Code|{{sr|#WstawianieElementowychZarejestrowanychStronDoBazyWoluminu|p=StronicowyParser/SpisTreści/Tom I}}}}, w której jest tworzone: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, który natomiast jest wsadzany do ogólnej tablicy rozdziałów i w nich artykułach na odpowiednią pozycję. W wstawianym elemencie ustawiamy stuczną listę z początkiem: {{Code|<nowiki>*</nowiki>}}, z numeracją pusta, i linią artykułu, którą jest link:
<syntaxhighlight lang="lua">
"[[:"..strona..((parametry_modul.CzyTak(nazwa))and("|"..nazwa) or "").."]]"
</syntaxhighlight>
A dalej należy zapoznać się z funkcją przetwarzającą dane przed wsadzeniem do ogólnej tablicy.
==== Dalszy opis funkcji głównej ====
Liczymy adres strony głównej podręcznika: {{Code|pelna_nazwa_ksiazki}} {{LinkPatrz|pelna_nazwa_ksiazki}}, z funkcji: {{Code|{{sr|#m["NazwaModułu"]|p=Nazwy/Tom III}}}}, i sprawdzamy, czy strona istnieje na podstawie funkcji: {{Code|{{sr|#p.PoliczZbiory|p=Techniczne}}}}. Jeśli strona istnieje, wtedy liczymy, czy istnieje jego przekierowanie z funkcji: {{Code|{{sr|#p.PrzekierowanieDoStrony|p=Techniczne}}}},a jeżeli istnieje jego przekierowanie, to wtedy wartość tej funkcją jest stroną na którą wskazuje to przekierowanie, oznaczmy tą zmienną: {{Code|strona_spisu_tresci}} {{Patrz|strona_spisu_tresci}}.
Jeżeli: {{Code|strona_spisu_tresci}} {{LinkPatrz|strona_spisu_tresci}}, istnieje, wtedy jego nazwę dekodujemy funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, z drugim parametrem {{Code|true}}.
Używając tabeli nazw, tzn.: {{Code|tabela_nazw}} {{Patrz|tabela_nazw}}, której przydzielamy wartość pustą, liczymy kolejno: {{Code|nazwa_przestrzeni2}} {{Patrz|nazwa_przestrzeni2}}, {{Code|nazwa_przestrzeni_ksiazki2}} {{Patrz|nazwa_przestrzeni_ksiazki2}} i {{Code|nazwa_ksiazki2}} {{Patrz|nazwa_ksiazki2}}, z następujących funkcji kolejno: {{Code|{{sr|#m.NAZWAPRZESTRZENI|p=Nazwy/Tom II}}}}, {{Code|{{sr|#m["NAZWAPRZESTRZENIKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, albo: {{Code|{{sr|#m["NAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, gdy: {{Code|nazwa_przestrzeni_ksiazki2}} {{LinkPatrz|nazwa_przestrzeni_ksiazki2}}, jest pusta, przeciwnie z: {{Code|{{sr|#m["SUBNAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}. Sprawdzamy, czy one pokrywają się kolejno z: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, i {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki}}, a jeżeli w całości, wtedy sprawdzamay, czy to z {{Code|2}} należą do przestrzeni nazw i niby-przestrzenu nazw książkowych. Przestrzenie ksiązkowe, to: {{Np|(main)|link=tak}}, {{Np|Wikijunior|link=tak}}, oraz {{Np|User|link=tak}}, w niby przestreni nazw: '''{{Np|User|link=tak}}:<użytkownik>/''', i {{Np|Project|link=tak}} w niby-przestrzeni nazw: '''{{Np|Project|link=tak}}:Brudnopis/<użytkownik>/''', jeżeli do tej przestrzeni nie należy, to funkcja kończy się z błędem (z wartością) {{Code|2}}, przeciwnie tworzona jest zmienna {{Code|adres_ksiazki_glownego_spisu_tresci}} {{Patrz|adres_ksiazki_glownego_spisu_tresci}}:
<syntaxhighlight lang="lua">
adres_ksiazki_glownego_spisu_tresci={nazwa_przestrzeni2,nazwa_przestrzeni_ksiazki2,nazwa_ksiazki2,};
</syntaxhighlight>
Także jest tam wywoływana funkcja: {{Code|__FUNKCJA_SPISU_RZECZY}} {{LinkPatrz|__FUNKCJA_SPISU_RZECZY}}, jeśli istnieje:
<syntaxhighlight lang="lua">
local wynik=__FUNKCJA_SPISU_RZECZY and __FUNKCJA_SPISU_RZECZY(nazwa_przestrzeni2,nazwa_przestrzeni_ksiazki2,nazwa_ksiazki2) or nil;
</syntaxhighlight>
Jeżeli ta funkcja nie istnieje, lub zwraca {{Code|nil}} lub nawet {{Code|1}}, wtedy funkcja zakańcza się z błędem: {{Code|1}}, przeciwnie na podstawie tego z {{Code|2}}, jest przyrównywanie tego temu bez tego, wtedy mamy nowe parametry nazw bez {{Code|2}}. I na podstawie tego liczymy nową nazwę: {{Code|pelna_nazwa_ksiazki}} {{LinkPatrz|pelna_nazwa_ksiazki}}.
Liczymy adres ustawień z: {{Code|NawigacjaSpecjalna/Nawigacja/...}} {{LinkPatrz|NawigacjaSpecjalna/Nawigacja/}}, i sprawdzamy, czy on ma przekierowanie z: {{Code|{{sr|#p.PrzekierowanieDoStrony|p=Techniczne}}}}, wtedy ma nowy adres, dalej liczymy jego kod źdrudłowy z funkcji: {{Code|{{sr|#p.WikikodStrony|p=Techniczne}}}}, przy pomocy funkcji:
<syntaxhighlight lang="lua">
local tekst=techniczne_modul.WikikodStrony{["przestrzeń"]="",["nazwa"]=adres_ustawien,};
</syntaxhighlight>
A jeżeli taka strona nie istnieje, wtedy: {{Code|tekst}}, przyjmuje wartość: {{Code|nil}}, wtedy wywołujemy kod pojedynczego spisu treści {{Patrz|pojedyncze_wywolanie}}, czyli strony głównej podręcznika (książki):
<syntaxhighlight lang="lua">
---- Zbieranie parametrów pojedynczego spisu (strony głównej strony jako spisu treści)
local tabela_artykulow,tabela_licencji_spisu_tresci,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"",czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH);
local tab_inne_spisy;
---- Sprawdzanie, czy dodatkowy spis treści istnieje , taki jak: "Spis treści", i przekształcanie tablic otrzymanych z poprzedniego wywołania;
tabela_artykulow,tab_inne_spisy=SpisRzeczy(tabela_artykulow,nil);
---- Zwracanie parametrów;
return tabela_artykulow,tabela_licencji_spisu_tresci,(not przekierowanie_spisu_tresci) and "" or {przekierowanie_spisu_tresci,"",},tab_inne_spisy,nil,adres_ksiazki_glownego_spisu_tresci;
</syntaxhighlight>
Przeciwnie kodujemy ten tekst: {{Code|tekst}} {{Patrz|tekst}}, przy pomocy pustej tabeli: {{Code|tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji}}. Co na podstawie liczmy tego parametry szablonu o: {{Code|obiekt}} {{=}} {{Code|SZABLON}}, w nim o nazwie: {{Code|{{sr|#p.uklad_autonawigacji|p=StronicowyParser/obiekty}}}}, czyli: {{Code|tabela_parametrow_szablonu_uklad_autonawigacji}} {{LinkPatrz|tabela_parametrow_szablonu_uklad_autonawigacji}}, również: {{Code|nazwa_szablonu_uklad_autonawigacji}} {{Patrz|nazwa_szablonu_uklad_autonawigacji}}, i {{Code|tabela_modyfikatorow_uklad_autonawigacji}} {{Patrz|tabela_modyfikatorow_uklad_autonawigacji}}, a także: {{Code|szablon_uklad_autonawigacji}} {{Patrz|szablon_uklad_autonawigacji}}, dalej przerywamy pętle. Jeżeli nie wykryto szablonu autonawigacji, wtedy zakańczamy funkcje jak w punkcie: {{LinkPatrz|pojedyncze_wywolanie}}. A jeżeli nie ma tabeli parametrów szablonu: {{Code|tabela_parametrow_szablonu_uklad_autonawigacji}} {{LinkPatrz|tabela_parametrow_szablonu_uklad_autonawigacji}}, to też podobnie.
A jeżeli chcemy liczyć manualnie, wtedy musimy powiedzieć:
<syntaxhighlight lang="lua">
local automat_manualny=tabela_parametrow_szablonu_uklad_autonawigacji["automat manualny"];
</syntaxhighlight>
Jeżeli wartość tej zmiennej: {{Code|automat_manualny}} {{Patrz|automat_manualny}}, jest nie {{Code|nil}}, i jest niepusta, to ze zmiennej: {{Code|spis treści}} {{Patrz|spis treści}}, liczmy z tego nazwę książki i ona musi się zgadzać ze zmienną: {{Code|pelna_nazwa_ksiazki}} {{LinkPatrz|pelna_nazwa_ksiazki}}, co po zgadzaniu, liczmy nazwę artykułu nazwy artykułu, w przeciwnym wypadku mamy do czynienia ze stroną główną podręcznika, wartość pusta będzie odpowiadała stronie głównej podręcznika, co na sam koniec liczymy:
<syntaxhighlight lang="lua">
---- Zbieranie parametrów pojedynczego o policzoej nazwie artykułu spisu;
local tabela_artykulow,tabela_licencji_spisu_tresci,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,sub_nazwa_spis_tresci,czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH);
---- Sprawdzanie, czy dodatkowy spis treści istnieje , taki jak: "Spis treści", i przekształcanie tablic otrzymanych z poprzedniego wywołania;
tabela_artykulow,tab_inne_spisy=SpisRzeczy(tabela_artykulow,nil);
---- Zwracanie parametrów;
return tabela_artykulow,tabela_licencji_spisu_tresci,(not przekierowanie_spisu_tresci) and sub_nazwa_spis_tresci or {przekierowanie_spisu_tresci,sub_nazwa_spis_tresci,},tab_inne_spisy,nil,adres_ksiazki_glownego_spisu_tresci;
</syntaxhighlight>
Gdy zmienna: {{Code|automat_manualny}} {{LinkPatrz|automat_manualny}}, jest pusta lub nie podana, wtedy następnym krokiem jest odkodowanie parametrów: {{Code|{{s|Układ autonawigacji}}}} {{LinkPatrz|Układ autonawigacji}}, przy pomocy: {{Code|tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji}}, i ich rozwinięcie funkcją: {{LzLua|frame:preprocess}}.
Ustawmy zmienną: {{Code|numer}} {{LinkPatrz|numer}} na wartość {{Code|1}}.
Liczymy zmienne: {{Code|bez spisów treści}} {{Patrz|bez spisów treści}}, i {{Code|bez analizy spisów treści}} {{Patrz|bez analizy spisów treści}}, tabeli parametrów: {{Code|tabela_parametrow_szablonu_uklad_autonawigacji}} {{LinkPatrz|tabela_parametrow_szablonu_uklad_autonawigacji}}, oraz sprawdzamy, czy one są niepuste.
Gdy zmienna: {{Code|bez spisów treści}} {{LinkPatrz|bez spisów treści}}, jest niepodana lub pusta, wtedy liczymy z klucza: {{Code|spis treści}} {{LinkPatrz|spis treści}}, ze zmiennej: {{Code|tabela_parametrow_szablonu_uklad_autonawigacji}} {{LinkPatrz|tabela_parametrow_szablonu_uklad_autonawigacji}}, a jeżeli ta zmienna istnieje, wtedy ją dekodujemy funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, z drugim parametrem {{Code|true}}, i liczymy jego adres bezwzględny z funkcji: {{Code|{{sr|#p["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]|p=Techniczne}}}}, mając względem, którego ma liczyć, tzn.: {{Code|pelna_nazwa_ksiazki}} {{LinkPatrz|pelna_nazwa_ksiazki}}.
Następnie sprawdzamy, czy w policzonym spisie nazwa ksiązki zgadza się z tą: {{Code|pelna_nazwa_ksiazki}} {{LinkPatrz|pelna_nazwa_ksiazki}}, a jeżeli się zgadza, to liczymy nazwę artylułu spisu treści, przeciwnie nazwa artykułu spisu treści ma wartość pustą, wartość pusta nazwy artykułu spisu treści odpowiada stronie głównej podręcznika. W innym wypadku, gdy zmienna: {{Code|bez spisów treści}} {{LinkPatrz|bez spisów treści}} jest niepusta, wtedy tylko uwzględniamy nazwę spisu treści jako stronę główną podręcznika. Tą zmienną jest: {{Code|nazwa_glownego_spisu}} {{LinkPatrz|nazwa_glownego_spisu}}.
Gdy zmienne: {{Code|bez spisów treści}} {{LinkPatrz|bez spisów treści}}, i {{Code|bez analizy spisów treści}} {{LinkPatrz|bez analizy spisów treści}}, są niepodane lub puste, wtedy liczymy pojedynczy artykuł będący spisem treści o nazwie: {{Code|nazwa_glownego_spisu}} {{LinkPatrz|nazwa_glownego_spisu}}, zatem tego wywołanie wygląda tak:
<syntaxhighlight lang="lua">
tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika,tabela_licencji_ksiazek_wedlug_strony_glownej_podrecznika,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_glownego_spisu,czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH);
</syntaxhighlight>
Napiszmy przemianowania zmiennych na: {{Code|tablista_artykulow}} {{LinkPatrz|tablista_artykulow}}, i {{Code|licencja}} {{Patrz|licencja}}, według:
<syntaxhighlight lang="lua">
tablista_artykulow=tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika;
licencja=tabela_licencji_ksiazek_wedlug_strony_glownej_podrecznika;
</syntaxhighlight>
Gdy zmienna: {{Code|przekierowanie_spisu_tresci}} {{LinkPatrz|przekierowanie_spisu_tresci}}, ma wartość odpowiadającej prawidziwej, czyli to pewien łańcuch znakowy, wtedy policzmy {{LinkPatrz|nazwa_glownego_spisu}} dla tego przekierowania:
<syntaxhighlight lang="lua">
nazwa_glownego_spisu={przekierowanie_spisu_tresci,nazwa_glownego_spisu,};
</syntaxhighlight>
Jeśli wartość: {{Code|tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika}} {{Patrz|tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika}}, jest {{Code|nil}}, lub {{Code|0}}, wtedy funkcja jest zakańczana w sposób:
<syntaxhighlight lang="lua">
return tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika;
</syntaxhighlight>
Lub przeciwnie, liczymy spis treści odpowiadającym wartością tabeli: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}, zatem to policzmy, czy tak jest, schematycznie:
<syntaxhighlight lang="lua">
---- Przygotowanie spisu do wielu spisów treści;
tablista_artykulow,tab_inne_spisy,numer=Spis(tablista_artykulow,nil,tab_inne_spisy,nazwa_glownego_spisu,numer);
---- Liczenie czy jest artykuł w spisie treści o nazwie typu: "Spis treści";
local artykul_spisu_rzeczy=p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku(tablista_artykulow);
if(artykul_spisu_rzeczy)then
---- Dodaje spis nowy do większego spisu, ten wykryty zaraz powyższą funkcją;
tabela_artykulow,tab_inne_spisy,numer=InneSpisy(tablista_artykulow,tab_inne_spisy,artykul_spisu_rzeczy,numer);
end;
</syntaxhighlight>
Uruchamiamy iterator: {{Code|iter}} {{Patrz|iter}}, z funkcji: {{LinkŚródtytuł|IteratorSpisTresci}}, bez parametrów, zdefiniowanej w tym bloku, co jest ta iteracja, wtedy możemy je iterować po spisie treści w sposób:
<syntaxhighlight lang="lua">
for spis_tresci in iter do
.... ---- ciało iterowanej pętli;
end;
</syntaxhighlight>
Każdy tak uzyskany: {{Code|spis_treści}} {{LinkPatrz|spis_treści}}, dekodujemy funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, następnie rozwijamy adres względny na bezwzględny względem korzenia drzewa przestrzeni nazw z funkcji: {{Code|{{sr|#p["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]|p=Techniczne}}}}, i dodajemy te spisy do głównego drzewa tablicy rozdziałów i ich artykułów przy pomocy funkcji: {{LinkŚródtytuł|InneSpisy}}, właśnie tak:
<syntaxhighlight lang="lua">
tablista_artykulow,tab_inne_spisy,numer=InneSpisy(tablista_artykulow,tab_inne_spisy,spis_tresci,numer);
</syntaxhighlight>
Uruchomimy inny iterator: {{Code|iter}} {{LinkPatrz|iter}}, z funkcji: {{LinkŚródtytuł|IteratorFun}}, wywołanej bezparametrowo, wtedy iterację możemy napisać wykorzystujac funkcję: {{LinkŚródtytuł|ZbieranieDanychStronZAutonawigacji}}, zdefiniowanej w tej pętli, działającą tak:
<syntaxhighlight lang="lua">
for strona,nazwa in iter do
... ---- definicja funkcji: ZbieranieDanychStronZAutonawigacji;
ZbieranieDanychStronZAutonawigacji();
end;
</syntaxhighlight>
Funkcja w nagłówku zwraca wielowartościowy, wtedy wynik na samym końcu zakończenia jej jest:
<syntaxhighlight lang="lua">
return tablista_artykulow,licencja,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,adres_ksiazki_glownego_spisu_tresci;
</syntaxhighlight>
; Opis zwracanych parametrów{{dk}}
{{OpisParametrów
| 1 = {{Code|tablista_artykulow}} | _1 = Jak w: {{LinkPatrz|tablista_artykulow}}.
| 2 = {{Code|licencja}} | _2 = Jak w: {{LinkPatrz|licencja}}.
| 3 = {{Code|nazwa_glownego_spisu}} | _3 = Jak w: {{LinkPatrz|nazwa_glownego_spisu}}.
| 4 = {{Code|tab_inne_spisy}} | _4 = Jak w: {{LinkPatrz|tab_inne_spisy}}.
| 5 = {{Code|dodatkowe_artykuly}} | _5 = Jak w: {{LinkPatrz|dodatkowe_artykuly}}.
| 6 = {{Code|adres_ksiazki_glownego_spisu_tresci}} | _6 = Jak w: {{LinkPatrz|adres_ksiazki_glownego_spisu_tresci}}.
}}
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
ahu7rf5rrtxwn6hia9kexbjkahoxtfu
558341
558340
2026-10-02T19:00:33Z
Persino
2851
/* Opis funkcji */
558341
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SpisTreści}}|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.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}}{{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} ===
Funkcja sprawdzająca, czy na stronie z głównym spisem treści lub w innych spisach treści podanych w: {{s|Układ autonawigacji}} {{Patrz|Układ autonawigacji}}, na jednych ze stron: {{s|NawigacjaSpecjalna/Nawigacja/}} {{Patrz|NawigacjaSpecjalna/Nawigacja/}} (te ustawienia są wykorzystywane przez: {{s|Autonawigacja}} {{Patrz|Autonawigacja}}), dotyczącej danej książki, znajduje się artykuł o nazwie znajduje, z dokładnością do wielkości liter, artykuły o nazwach według tabeli: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}}} {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={
["spis treści"]=true,
["spis tresci"]=true,
["spis rzeczy"]=true,
};
</syntaxhighlight>
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku(tabela_artykulow)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tabela_artykulow}} | _1 = Tabela wielowymiarowa rozdziałów i do nich artykułów.
}}
Kopia tej tabeli jest połączona z metatabelką: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=StronicowyParser/obiekty}}}} {{Patrz|p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter}}, przy pomocy funkcji: {{LzLua|setmetatable}}.
Iterujemy dla elementach tabeli: {{Code|tabela_artykulow}} {{Patrz|tabela_artykulow}}, a póżniej sprawdzamy, czy artykuł znajduje się w dozwolonych rozdziałach jako artykuły książki: {{Code|tab_lista[2]}} {{Patrz|tab_lista[2]}}, iterując po jego elementach, wtedy jednych z jego wartości, o pewnym numerze, bierzemy element: {{Code|artykul_w_bazie_element}} {{Patrz|artykul_w_bazie_element}}, według kodu:
<syntaxhighlight lang="lua">
---- Bierzemy jego pierwszy element "tab_stare", bo: "artykul_w_bazie_element", jest tabelką;
local artykul_w_bazie=artykul_w_bazie_element[1];
---- Sprawdzamy, czy element, zawiera klucz o nazwie "["LINK"]=true";
local czy_table=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(artykul_w_bazie);
---- Wybieramy w zależnosci, czy to jest tabelka, czy nie bez tego: "["LINK"]=true";
artykul_w_bazie=czy_table and artykul_w_bazie[1] or artykul_w_bazie;
---- Jeżeli ten element jest tabelką i posiada: "["LINK"]=true", to zwracamy pierwszy element, a jeżeli nie to sam element;
local artykul_bez_naglowka_w_bazie=stronicowyparser_potrzebne_modul.TylkoNazwaStronyWoluminuZTabeliPublikacji(artykul_w_bazie);
</syntaxhighlight>
Powyższy kod, zawiera funkcje z: {{Code|{{ld2|StronicowyParser/Potrzebne}}}}, tzn.: {{Code|{{sr|#p.CzyTabelaStronyWoluminuSpisuRzeczy|p=StronicowyParser/Potrzebne}}}}, która sprawdza, czy element jest tabelka, i czy ma klucz: {{Code|LINK}}, wtedy zwraca wartość: {{Code|false}}, w przeciwnym wypadku, zrzuca wynik czy to jest owo (tabelka), i {{Code|{{sr|#p.TylkoNazwaStronyWoluminuZTabeliPublikacji|p=StronicowyParser/Potrzebne}}}}, który sprawdza, czy to jest tabelka, czy posiada klucz: "klucz", a jeżeli tak, to zwraca pierwszy element tej tabeli, a jeżeli nie, to zwraca to nawet, gdy by nie była tabelką, a jak jest nią, to nie posiada klucza: {{Code|LINK}}. Aby zrozumieć te funkcje skorzystaj z definicji: {{Code|tab_stare}} {{Patrz|tab_stare}}, na stronie: {{Code|{{lr|Moduły/StronicowyParser/SpisTreści/Tom I|SpisTreści - Tom I}}}}.
Następnie sprawdzamy, czy to jest ten spis treści zagwarantowany według: {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}, a jeżeli tak, to funkcja zrzucza wartość: {{Code|artykul_bez_naglowka_w_bazie}} {{Patrz|artykul_bez_naglowka_w_bazie}} - jest to nazwa artykułu spisu treści o określonej nazwie bez nagłówka, a jeżeli mimo to nie znaleziono nic, to nic nie zwraca.
=== {{Śródtytuł|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}}{{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} ===
==== Opis funkcji ====
Funkcja zrzuca wynik z jednego spisu rzeczy, którym jest strona główna książki, lub ewentualnie skojarzony z nią, spis, który jest artykuł o nazwie jednych z: {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}, z dokładnością do wielkości znaków. Funkcja też sprawdza stronę z {{s|Układ autonawigacji}}, czyli strony znajdujące się katalogu: {{s|NawigacjaSpecjalna/Nawigacja/}}, tam sprawdza, jakie spisy do niego należą i je liczy, też sprawdza jakie artykuły do niego należą. W ten sposób mamy utworzony spis treści, który po artykułach książki możemy nawigować za pomocą odpowiednich funkcji autonawigacji.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,czy_artykul_korzystany,__FUNKCJA_SPISU_RZECZY,__FUNKCJA_ZBIERANIA_DANYCH)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{Patrz|self}} | _1 = Zmienna obiektowa funkcji.
| 2 = {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} | _2 = Kolejno jak w: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''' i '''nazwa książki'''.
| 3 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _3 = {{Code|true}}, gdy artykuł dany jest korzystamy, czy aktualnie korzystamy z niego za pomocą przeglądarki.
| 4 = {{Code|__FUNKCJA_SPISU_RZECZY}} {{Patrz|__FUNKCJA_SPISU_RZECZY}} | _4 = Funkcja wykorzystywana w: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}, w module: {{Code|{{ld2|StronicowyParser/ZbieranieDanychStron}}}}, jest to funkcja do różnych celu, w tym przypadku służy, to przypisywania, na które wskazuje przekierowanie, danych z przekierowania do strony, którym jest to właśnie przekierowanie.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
__FUNKCJA_SPISU_RZECZY(tekst_rozwiniety_calego_artykulu_ref_spis,nazwa_przestrzeni_ref_spis,nazwa_przestrzeni_ksiazki_ref_spis,nazwa_ksiazki_ref_spis,nazwa_artykulu_ref_spis,tablica_analizy_obiektow_strony_dany_modul_ref_spis,tablica_danych_parametrow_szablonu_strony_ref_spis);
</syntaxhighlight>
Ta funkcja nie zwraca niczego.
| 5 = {{Code|__FUNKCJA_ZBIERANIA_DANYCH}} {{Patrz|__FUNKCJA_ZBIERANIA_DANYCH}} | _5 = Funkcja opisana w rozdziale: {{Code|{{sr|#p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy|p=StronicowyParser/SpisTreści/Tom I}}}}, w module: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_ZBIERANIA_DANYCH|nazwa artykułu=StronicowyParser/SpisTreści/Tom II}}
}}
==== Fukcje lokalne ====
===== {{Śródtytuł|Spis}}{{Code|Spis}} =====
Funkcja służy do ustawiania poszczególnych spisów treści, jeżeli książka ma ich kilka. Ona służy jedynie do jednego spisu, a nie wszystkich razem, tylko oddzielnie.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Spis(tablista_artykulow,spis_tresci,tab_inne_spisy,nazwa_glownego_spisu,numer)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tablista_artykulow}} {{Patrz|tablista_artykulow}} | _1 = Tabela rozdziałów i do nich artykułów.
| 2 = {{Code|spis_tresci}} {{Patrz|spis_tresci}} | _2 = Jeżeli strona nie jest przekierowaniem, to jest wtedy łańcuch znakowy opisujący dany spis, a jeżeli właśnie jest, wtedy jest to tablica, coś w rodzaju {{Code|<nowiki>{przekierowanie_spisu_tresci,spis_tresci,}</nowiki>}}:
| 3 = Wyjaśnienie: | nagłówek3 = tak
| 4 = {{Code|przekierowanie_spisu_tresci}} {{Patrz|przekierowanie_spisu_tresci}} | _4 = Strona spis treści, która jest jednocześnie przekierowaniem.
| 5 = {{Code|spis_treści}} | _5 = Jak w: {{LinkPatrz|spis_tresci}}, tylko, że tylko łańcuch znakowy, na który wskazuje przekierowanie.
| 6 = Inne parametry: | nagłówek6 = tak
| 7 = {{Code|tab_inne_spisy}} {{Patrz|tab_inne_spisy}} | _7 = Tabela innych spisów książki, jeżeli istnieją,
| 8 = {{Code|nazwa_glownego_spisu}} {{Patrz|nazwa_glownego_spisu}} | _8 = Nazwa głównego spisu treści, zwykle jest to strona główna książki.
| 9 = {{Code|numer}} {{Patrz|numer}} | _9 = Numer, który liczmy, do którego dodajemy jeden.
}}
Parametry zwracane:
<syntaxhighlight lang="lua">
return tablista_artykulow,tab_inne_spisy,numer;
</syntaxhighlight>
Opis parametrów zwracanych:
{{OpisParametrów
| 1 = {{Code|tablista_artykulow}} | _1 = Jak w: {{LinkPatrz|tablista_artykulow}}.
| 2 = {{Code|tab_inne_spisy}} | _2 = Jak w: {{LinkPatrz|tab_inne_spisy}}.
| 3 = {{Code|numer}} | _3 = Jak w: {{LinkPatrz|numer}}.
}}
Gdy zmienna: {{Code|tablista_artykulow}} {{LinkPatrz|tablista_artykulow}}, istnieje, i ma niepustą tablicę, wtedy ta funkcja wtedy faktycznie coś robi, w przeciwnym wypadku zwraca tylko wynik.
Liczmy spis treści, na który wskazuje przekierowanie, gdy strona nie jest nim, to sama strona ze wskazania:
<syntaxhighlight lang="lua">
local czy_spis_tresci_table=parametry_modul.TypeTable(spis_tresci);
local spis_tresci_strona=czy_spis_tresci_table and spis_tresci[1] or spis_tresci;
</syntaxhighlight>
Zmienna: {{Code|spis_tresci_strona}}, to jest nic innego jak: {{Code|przekierowanie_spisu_tresci}} {{LinkPatrz|przekierowanie_spisu_tresci}}, lub tylko jest łańcuchem znakowym, według: {{Code|spis_tresci}} {{LinkPatrz|spis_tresci}}.
Policzmy zmienną: {{Code|tab_element}} {{Patrz|tab_element}}:
<syntaxhighlight lang="lua">
local tab_element={[1]={((not spis_tresci) and "Główny spis treści" or ("Spis treści - "..spis_tresci_strona)),{((spis_tresci) and 1 or nil),nil,nil,},["spis"]={spis_tresci_strona or nazwa_glownego_spisu or "",numer}},[2]=nil,[3]=nil,};
</syntaxhighlight>
Jeżeli pierwszy rozdział danego spisu nie ma numeracji, tzn. wtedy liczymy element: {{Code|tablista_artykulow[1][1][2][1]}}, to wtedy jego pozycje artykularne: {{Code|numer > 1}}, zapisujemy na sam koniec w tablicy: {{Code|tab_element}} {{LinkPatrz|tab_element}}. Następnie usuwamy pierwszy rozdział z artykułami przy pomocy funkcji: {{LzLua|table.remove}}.
Poziomy rozdziałów powiększamy o jeden aż do napotkania pierwszego rozdziału centrowanego, wtedy przerywamy pętle.
Następnym podejściem jest dodanie przed pierwsza pozycją elementu: {{Code|tab_element}} {{LinkPatrz|tab_element}}, do tablicy: {{Code|tablista_artykulow}} {{LinkPatrz|tablista_artykulow}}}, przy pomocy funkcji: {{LzLua|table.insert}}.
Jeżeli spis treści: {{Code|spis_tresci}} {{LinkPatrz|spis_tresci}}, istnieje, wtedy robimy dalsze operacje. Jeżeli tablica: {{Code|tab_inne_spisy}} {{LinkPatrz|tab_inne_spisy}}, nie istnieje, to ją tworzymy, wtedy {{Code|spis_tresci}} {{LinkPatrz|spis_tresci}}, przy pomocy: {{LzLua|table.insert}}, dodajemy do: {{Code|tab_inne_spisy}} {{LinkPatrz|tab_inne_spisy}}. Następnie jeżeli nie istnieje element {{Code|tablista_artykulow[1][2]}} {{Patrz|tablista_artykulow[1][2]}}, związany artykułami należącymi do rozdziału, to go tworzymy, wtedy tworzymy element: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, w postaci:
<syntaxhighlight lang="lua">
local tab_stare={czy_spis_tresci_table and {spis_tresci_strona,nil,przekierowanie_strona} or spis_tresci,{0,"","",true,},"[[:"..pelna_nazwa_ksiazki.."/" ..spis_tresci_strona.."]]",false,};
</syntaxhighlight>
To: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, jest opisane w module: {{lr|Moduły/StronicowyParser/SpisTreści/Tom I|Spis treści - Tom I}}.
To dodajemy na pierwszą pozycję do zbioru artykułów, do elementu: {{LinkPatrz|tablista_artykulow[1][2]}}, na pierwszą pozycję, przy pomocy funkcji: {{LzLua|table.insert}}.
Następnym krokiem jest zwracanie przez funkcję zmiennych powyżej powiedzianych.
===== {{Śródtytuł|InneSpisy}}{{Code|InneSpisy}} =====
Funkcja służy do uzyskiwania elementów danego spisu, ustawiania go odpowiedniego i wstawianie go do ogólnego spisu opisujące wszystkie spisy w danej książce.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function InneSpisy(tablista_artykulow,tab_inne_spisy,spis_tresci,numer)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tablista_artykulow}} | _1 = Jak w: {{LinkPatrz|tablista_artykulow}}.
| 2 = {{Code|tab_inne_spisy}} | _2 = Jak w: {{LinkPatrz|tab_inne_spisy}}.
| 3 = {{Code|spis_tresci}} | _3 = Jak w: {{LinkPatrz|spis_tresci}}.
| 4 = {{Code|numer}} | _4 = Jak w: {{LinkPatrz|numer}}.
}}
Uzyskujemy elementy spisu z wywołania dla pojedynczego spisu treści:
<syntaxhighlight lang="lua">
local tablista_artykulow_iter,tablica_licencji,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,spis_tresci,false,nil,__FUNKCJA_ZBIERANIA_DANYCH);
</syntaxhighlight>
Jeżeli zmienna: {{Code|tablista_artykulow_iter}} {{Patrz|tablista_artykulow_iter}} istnieje i jest tablicą, to ją przetwarzamy przy pomocy funkcji: {{LinkŚródtytuł|InneSpisy}}, w sposób:
<syntaxhighlight lang="lua">
tablista_artykulow_iter,tab_inne_spisy,numer=Spis(tablista_artykulow_iter,(not przekierowanie_spisu_tresci)and spis_tresci or {przekierowanie_spisu_tresci,spis_tresci,},tab_inne_spisy,nil,numer);
</syntaxhighlight>
Tak otrzymanną zmienną: {{Code|tablista_artykulow_iter}} {{LinkPatrz|tablista_artykulow_iter}}, iterujemy po elementach wsadzając ją do tablicy na sam koniec: {{Code|tablista_artykulow}} {{LinkPatrz|tablista_artykulow}}, a jak tak tablica nie istnieje, to ją tworzymy z pustą tablicą, i wtedy wykonujemy tą operację. To wsadzanie wykonujemy za pomocą funkcji: {{LzLua|table.insert}}.
Na samym końcu zwracamy wiele elementów:
<syntaxhighlight lang="lua">
return tablista_artykulow,tab_inne_spisy,numer;
</syntaxhighlight>
===== {{Śródtytuł|SpisRzeczy}}{{Code|SpisRzeczy}} =====
Funkcja przygotowuje aktualny spis treści, by dodać do niego nowy spis, jeżeli on istnieje, jako artykuł w spisie o nazwach: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function SpisRzeczy(tabela_artykulow,tab_inne_spisy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tabela_artykulow}} | _1 = Jak w: {{LinkPatrz|tabela_artykulow}}.
| 2 = {{Code|tab_inne_spisy}} | _2 = Jak w: {{LinkPatrz|tab_inne_spisy}}.
}}
Uruchamiamy funkcję: {{LinkŚródtytuł|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}}, która zwraca wynik, który trzeba sprawdzić, czy istnieje, przed dalszymi operacjami, tzn. {{Code|artykul_spisu_rzeczy}} {{Patrz|artykul_spisu_rzeczy}}, uzyskując z aktualnej listy spis treści dla całej książki, jako jego zespołu, na podstawie jego dowiadujemy, ża taki omawiany spis istnieje, wtedy stary spis, czyli stronę główną podręcznika, przygotujemy do tego, do tego robimy funkcją: {{LinkŚródtytuł|Spis}}, wywołaniem, ale przed tymwywołaniem ustawiamy: {{Code|numer {{=}} 1}}, zatem:
<syntaxhighlight lang="lua">
tabela_artykulow,tab_inne_spisy,numer=Spis(tabela_artykulow,nil,tab_inne_spisy,"",numer);
</syntaxhighlight>
Następnym krokiem jest czytanie tego spisu przy pomocy wywołania: {{LinkŚródtytuł|InneSpisy}}, jako:
<syntaxhighlight lang="lua">
tabela_artykulow,tab_inne_spisy,numer=InneSpisy(tabela_artykulow,tab_inne_spisy,artykul_spisu_rzeczy,numer);
</syntaxhighlight>
Funkcja używa zmiennej uzyskanego wcześniej, tzn.: {{Code|artykul_spisu_rzeczy}} {{LinkPatrz|artykul_spisu_rzeczy}}, to jest to samo, co: {{Code|artykul_bez_naglowka_w_bazie}} {{LinkPatrz|artykul_bez_naglowka_w_bazie}}, uzyskanej z funkcji liczący taki spis według: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}, którym wartością jest nazwa artykułu bez nagłówka w bazie.
Wartościami zwracanymi przez funkcję dwie osobne zmienne zrzucane jednocześnie:
<syntaxhighlight lang="lua">
return tabela_artykulow,tab_inne_spisy;
</syntaxhighlight>
Jest to ogólna tabela wszystkich rozdziałów i do nich ich artykułów, i uzupełniona lista innych spisów treści.
===== {{Śródtytuł|IteratorSpisTresci}}{{Code|IteratorSpisTresci}} =====
Funkcja uruchamiająca iterator po spisach treści innych niż spis treści główny, jego definicja:
<syntaxhighlight lang="lua">
local IteratorSpisTresci=function()
local liczba=1;
return function()
local spis_tresci=tabela_parametrow_szablonu_uklad_autonawigacji["spis treści "..liczba];
liczba=liczba+1;
return spis_tresci;
end;
end;
</syntaxhighlight>
Funkcja wykorzystuje tablicę parametrów autonawigacji ze strony ściśle określonej z katalogu stron: {{Code|NawigacjaSpecjalna/Nawigacja/...}} {{LinkPatrz|NawigacjaSpecjalna/Nawigacja/}}, iteruje co jeden numer spisu treści, tzn.: {{Code|spis treści 1}}, {{Code|spis treści 2}},..., {{Code|spis treści N}}, gdzie {{Code|N}}, to największa liczba charakteryzująca dany spis treści. W samym iteratorze liczba: {{Code|liczba}} {{Patrz|liczba-IteratorSpisTresci}}, powiększa się co jeden, aż do zakończenia limitu spisów treści, tzn do najbliżeszej przerwy lub końca przy iteracji, bo na samym końcu iterator zrzuci wynik {{Code|nil}}.
===== {{Śródtytuł|IteratorFun}}{{Code|IteratorFun}} =====
Funkcja iteruje po stronach i ich nazwach, jakie mają być wyświetlane w linkach, generowane przez: {{Code|{{s|Autonawigacja}}}} {{LinkPatrz|Autonawigacja}}, ale na podstawie {{Code|{{s|Układ autonawigacji}}}} {{LinkPatrz|Układ autonawigacji}}, według jednych ze stron: {{Code|NawigacjaSpecjalna/Nawigacja/...}} {{LinkPatrz|NawigacjaSpecjalna/Nawigacja/}}, ustawień.
Definicja skrótowa funkcji i jego funnkcji zwracanej, która jest iteratorem:
<syntaxhighlight lang="lua">
local IteratorFun=function()
... ---- operacje robione przed uruchomieniem iteratora;
return function()
... ---- ciało iteratora
return strona,nazwa; ---- zwracane elementy;
end;
end;
</syntaxhighlight>
Definicja funkcji: {{Code|STRONA}} {{Patrz|STRONA}} i {{Code|NAZWA}} {{Patrz|NAZWA}}, są:
<syntaxhighlight lang="lua">
local STRONA=function(liczba)return liczba*2-1;end;
local NAZWA=function(liczba)return liczba*2;end;
</syntaxhighlight>
W iteratorze dostępna jest zmienna: {{Code|tabela_parametrow_szablonu_uklad_autonawigacji}} {{Patrz|tabela_parametrow_szablonu_uklad_autonawigacji}}, z którego uzyskujemy parametry, te wywołania są napisane w ciele iteratora, w sposób:
<syntaxhighlight lang="lua">
local strona=tabela_parametrow_szablonu_uklad_autonawigacji[STRONA(liczba)];
local nazwa=tabela_parametrow_szablonu_uklad_autonawigacji[NAZWA(liczba)];
</syntaxhighlight>
Iterację zaczynamy od {{Code|liczba}} {{Patrz|liczba-IteratorFun}} od jedynki, po uzyskaniu powyższych wartości, licznik (tą liczbę) powiększamy o jeden, a następnie zwracamy w iteratorze zmienne: {{Code|strona}} {{Patrz|strona}} i {{Code|nazwa}} {{Patrz|nazwa}}.
===== {{Śródtytuł|ZbieranieDanychStronZAutonawigacji}}{{Code|ZbieranieDanychStronZAutonawigacji}} =====
Jest to funkcja do zbierania danych z jednego ze ściśle określonej strony szablonu z: {{Code|NawigacjaSpecjalna/Nawigacja/...}} {{LinkPatrz|NawigacjaSpecjalna/Nawigacja/}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function ZbieranieDanychStronZAutonawigacji()...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = Brak parametrów. | komórka1 = tak
}}
Gdy parametr z iteracji iteratorem: {{Code|iter}}, z którego przy jego kolejnych wywołaniach otrzymujemy parametry: {{Code|strona}} {{LinkPatrz|strona}}, i {{Code|nazwa}} {{LinkPatrz|nazwa}}, dla: {{Code|strona}} {{LinkPatrz|strona}}, jest równy wartości odpowiadającej fałszywej, wtedy funkcja zakańcza pracę. W przeciwnym wypadku te parametry są dekodowane funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, z drugim parametrem: {{Code|true}}, ale nazwa jest dekodowana, gdy ona jest niepusta.
Gdy zmienna: {{Code|dodatkowe_artykuly}} {{LinkPatrz|dodatkowe_artykuly}}, nie istnieje, to wtedy ją tworzymy, inicjując ją pustą tablicą, oraz inicjujemy tabelę artykułów dodatkowych wykorzystując funkcję: {{LzLua|table.insert}}:
<syntaxhighlight lang="lua">
table.insert(tablista_artykulow,{[1]={"Dodatkowe artykuły",{1,nil,nil},["dodatkowe"]="tak",},[2]=nil,});
</syntaxhighlight>
Następnie liczymy parametr dla danego rozdziału, tzn. liczymy: {{Code|tabela_rozdzial_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}, według:
<syntaxhighlight lang="lua">
tabela_rozdzial_artykulow=tablista_artykulow[#tablista_artykulow];
</syntaxhighlight>
Następnie liczyny adres bezwzględny: {{Code|strona}} {{LinkPatrz|strona}} z funkcji: {{Code|{{sr|#p["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]|p=Techniczne}}}}, według wywołania, znająć dwa parametry: {{Code|strona}} {{LinkPatrz|strona}} i {{Code|pelna_nazwa_ksiazki}} {{Patrz|pelna_nazwa_ksiazki}}, czyli:
<syntaxhighlight lang="lua">
strona=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=strona,[2]=pelna_nazwa_ksiazki,};
</syntaxhighlight>
====== {{Śródtytuł|WsadzanieParametryDoTablicy}}{{Code|WsadzanieParametryDoTablicy}} ======
Jest to funkcja wsadzająca elementy do tablicy do funkcji: {{Code|{{sr|#WstawianieElementowychZarejestrowanychStronDoBazyWoluminu|p=StronicowyParser/SpisTreści/Tom I}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local WsadzanieParametryDoTablicy=function(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tabela_rozdzial_artykulow}} {{Patrz|tabela_rozdzial_artykulow}} | _1 = Tabela rozdziału i do niego artykułów.
| 2 = {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{Patrz|numer_rodzaju_artykulow_w_nie_podreczniku}} | _2 = Numer pozycji na którym element zostonie element {{LinkPatrz|tab_stare}} wstawiony.
| 3 = {{Code|tab_stare}} {{LinkPatrz|tab_stare}} | _3 = Wstawiany element.
}}
Jeżeli zmienna: {{Code|dodatkowe_artykuly}} {{Patrz|dodatkowe_artykuly}}, nie istnieje, to jest inicjowana tablicą pustą.
Liczymy adres strony na podstawie:
<syntaxhighlight lang="lua">
---- Jeżeli zmienna jest tablicą i nie ma klucza: "["LINK"]=true", wtedy przyjmuje wartość: true, w przeciwnym wypadku: false;
local czy_table_baza_artykulu=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(tab_stare[1]);
---- Nazwa artykułu lub adres strony, dla ktorej liczymy adres;
local adres=czy_table_baza_artykulu and tab_stare[1][1] or tab_stare[1];
</syntaxhighlight>
Liczymy, czy strona jest w podręczniku, czyli: {{Code|czy_w_podreczniku}} {{Patrz|czy_w_podreczniku}}, ze: {{Code|tab_stare[5]}} {{Patrz|tab_stare[5]}}, a następnie kod języka i projektu, kolejno: {{Code|kod_jezyka_koncowy}} {{Patrz|kod_jezyka_koncowy}}, i {{Code|kod_projektu_koncowy}} {{Patrz|kod_projektu_koncowy}}, jeżeli zmienna: {{Code|czy_table_baza_artykulu}} {{Patrz|czy_table_baza_artykulu}}, jest nie równa wartości prawdziwej, to te zmienne przyjmuje wartość {{Code|nil}}, w przeciwnym wypadku kolejno wartości: {{Code|tab_stare[1][5]}} i {{Code|tab_stare[1][6]}}.
Wsadzamy element do tablicy: {{Code|dodatkowe_artykuly}} {{LinkPatrz|dodatkowe_artykuly}}, przy pomocy funkcji: {{LzLua|table.insert}}, w sposób:
<syntaxhighlight lang="lua">
table.insert(dodatkowe_artykuly,{((adres) and (kod_jezyka_koncowy or kod_projektu_koncowy) and({adres,kod_jezyka_koncowy,kod_projektu_koncowy,}) or adres),nazwa,czy_w_podreczniku,});
</syntaxhighlight>
Póżniej wstawiamy element: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, do: {{Code|tabela_rozdzial_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}, na pozycję: {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, używając wywołania {{LzLua|table.insert}}, czyli:
<syntaxhighlight lang="lua">
table.insert(tabela_rozdzial_artykulow[numer_rodzaju_artykulow_w_nie_podreczniku],tab_stare);
</syntaxhighlight>
====== Dalszy opis funkcji nadrzędnej ======
Dalszym krokiem jest wsadzenie elementu do ogólnej tablicy, a tutaj do artykułu w danym rozdziale, robimy, mając przetwarzaną zmienną: {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}}, to według:
<syntaxhighlight lang="lua">
local numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy;
numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych=WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,WsadzanieParametryDoTablicy,...,...,true,{strona,nazwa,},...,...,...,"",...,...,tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji,tablica_danych_parametrow_szablonu_strony_uklad_autonawigacji,nil,nil,...,--[[]]"*","",false,"[[:"..strona..((parametry_modul.CzyTak(nazwa))and("|"..nazwa) or "").."]]");
</syntaxhighlight>
Powyżej użyto trójkropków: {{Code|...}}, bo te parametry są standardowe dla każdego wywołania.
Powyżej wstawianie odbyło się przy pomocy funkcji: {{LinkŚródtytuł|WsadzanieParametryDoTablicy}}, używając: {{Code|{{sr|#WstawianieElementowychZarejestrowanychStronDoBazyWoluminu|p=StronicowyParser/SpisTreści/Tom I}}}}, w której jest tworzone: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, który natomiast jest wsadzany do ogólnej tablicy rozdziałów i w nich artykułach na odpowiednią pozycję. W wstawianym elemencie ustawiamy stuczną listę z początkiem: {{Code|<nowiki>*</nowiki>}}, z numeracją pusta, i linią artykułu, którą jest link:
<syntaxhighlight lang="lua">
"[[:"..strona..((parametry_modul.CzyTak(nazwa))and("|"..nazwa) or "").."]]"
</syntaxhighlight>
A dalej należy zapoznać się z funkcją przetwarzającą dane przed wsadzeniem do ogólnej tablicy.
==== Dalszy opis funkcji głównej ====
Liczymy adres strony głównej podręcznika: {{Code|pelna_nazwa_ksiazki}} {{LinkPatrz|pelna_nazwa_ksiazki}}, z funkcji: {{Code|{{sr|#m["NazwaModułu"]|p=Nazwy/Tom III}}}}, i sprawdzamy, czy strona istnieje na podstawie funkcji: {{Code|{{sr|#p.PoliczZbiory|p=Techniczne}}}}. Jeśli strona istnieje, wtedy liczymy, czy istnieje jego przekierowanie z funkcji: {{Code|{{sr|#p.PrzekierowanieDoStrony|p=Techniczne}}}},a jeżeli istnieje jego przekierowanie, to wtedy wartość tej funkcją jest stroną na którą wskazuje to przekierowanie, oznaczmy tą zmienną: {{Code|strona_spisu_tresci}} {{Patrz|strona_spisu_tresci}}.
Jeżeli: {{Code|strona_spisu_tresci}} {{LinkPatrz|strona_spisu_tresci}}, istnieje, wtedy jego nazwę dekodujemy funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, z drugim parametrem {{Code|true}}.
Używając tabeli nazw, tzn.: {{Code|tabela_nazw}} {{Patrz|tabela_nazw}}, której przydzielamy wartość pustą, liczymy kolejno: {{Code|nazwa_przestrzeni2}} {{Patrz|nazwa_przestrzeni2}}, {{Code|nazwa_przestrzeni_ksiazki2}} {{Patrz|nazwa_przestrzeni_ksiazki2}} i {{Code|nazwa_ksiazki2}} {{Patrz|nazwa_ksiazki2}}, z następujących funkcji kolejno: {{Code|{{sr|#m.NAZWAPRZESTRZENI|p=Nazwy/Tom II}}}}, {{Code|{{sr|#m["NAZWAPRZESTRZENIKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, albo: {{Code|{{sr|#m["NAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, gdy: {{Code|nazwa_przestrzeni_ksiazki2}} {{LinkPatrz|nazwa_przestrzeni_ksiazki2}}, jest pusta, przeciwnie z: {{Code|{{sr|#m["SUBNAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}. Sprawdzamy, czy one pokrywają się kolejno z: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, i {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki}}, a jeżeli w całości, wtedy sprawdzamay, czy to z {{Code|2}} należą do przestrzeni nazw i niby-przestrzenu nazw książkowych. Przestrzenie ksiązkowe, to: {{Np|(main)|link=tak}}, {{Np|Wikijunior|link=tak}}, oraz {{Np|User|link=tak}}, w niby przestreni nazw: '''{{Np|User|link=tak}}:<użytkownik>/''', i {{Np|Project|link=tak}} w niby-przestrzeni nazw: '''{{Np|Project|link=tak}}:Brudnopis/<użytkownik>/''', jeżeli do tej przestrzeni nie należy, to funkcja kończy się z błędem (z wartością) {{Code|2}}, przeciwnie tworzona jest zmienna {{Code|adres_ksiazki_glownego_spisu_tresci}} {{Patrz|adres_ksiazki_glownego_spisu_tresci}}:
<syntaxhighlight lang="lua">
adres_ksiazki_glownego_spisu_tresci={nazwa_przestrzeni2,nazwa_przestrzeni_ksiazki2,nazwa_ksiazki2,};
</syntaxhighlight>
Także jest tam wywoływana funkcja: {{Code|__FUNKCJA_SPISU_RZECZY}} {{LinkPatrz|__FUNKCJA_SPISU_RZECZY}}, jeśli istnieje:
<syntaxhighlight lang="lua">
local wynik=__FUNKCJA_SPISU_RZECZY and __FUNKCJA_SPISU_RZECZY(nazwa_przestrzeni2,nazwa_przestrzeni_ksiazki2,nazwa_ksiazki2) or nil;
</syntaxhighlight>
Jeżeli ta funkcja nie istnieje, lub zwraca {{Code|nil}} lub nawet {{Code|1}}, wtedy funkcja zakańcza się z błędem: {{Code|1}}, przeciwnie na podstawie tego z {{Code|2}}, jest przyrównywanie tego temu bez tego, wtedy mamy nowe parametry nazw bez {{Code|2}}. I na podstawie tego liczymy nową nazwę: {{Code|pelna_nazwa_ksiazki}} {{LinkPatrz|pelna_nazwa_ksiazki}}.
Liczymy adres ustawień z: {{Code|NawigacjaSpecjalna/Nawigacja/...}} {{LinkPatrz|NawigacjaSpecjalna/Nawigacja/}}, i sprawdzamy, czy on ma przekierowanie z: {{Code|{{sr|#p.PrzekierowanieDoStrony|p=Techniczne}}}}, wtedy ma nowy adres, dalej liczymy jego kod źdrudłowy z funkcji: {{Code|{{sr|#p.WikikodStrony|p=Techniczne}}}}, przy pomocy funkcji:
<syntaxhighlight lang="lua">
local tekst=techniczne_modul.WikikodStrony{["przestrzeń"]="",["nazwa"]=adres_ustawien,};
</syntaxhighlight>
A jeżeli taka strona nie istnieje, wtedy: {{Code|tekst}}, przyjmuje wartość: {{Code|nil}}, wtedy wywołujemy kod pojedynczego spisu treści {{Patrz|pojedyncze_wywolanie}}, czyli strony głównej podręcznika (książki):
<syntaxhighlight lang="lua">
---- Zbieranie parametrów pojedynczego spisu (strony głównej strony jako spisu treści)
local tabela_artykulow,tabela_licencji_spisu_tresci,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"",czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH);
local tab_inne_spisy;
---- Sprawdzanie, czy dodatkowy spis treści istnieje , taki jak: "Spis treści", i przekształcanie tablic otrzymanych z poprzedniego wywołania;
tabela_artykulow,tab_inne_spisy=SpisRzeczy(tabela_artykulow,nil);
---- Zwracanie parametrów;
return tabela_artykulow,tabela_licencji_spisu_tresci,(not przekierowanie_spisu_tresci) and "" or {przekierowanie_spisu_tresci,"",},tab_inne_spisy,nil,adres_ksiazki_glownego_spisu_tresci;
</syntaxhighlight>
Przeciwnie kodujemy ten tekst: {{Code|tekst}} {{Patrz|tekst}}, przy pomocy pustej tabeli: {{Code|tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji}}. Co na podstawie liczmy tego parametry szablonu o: {{Code|obiekt}} {{=}} {{Code|SZABLON}}, w nim o nazwie: {{Code|{{sr|#p.uklad_autonawigacji|p=StronicowyParser/obiekty}}}}, czyli: {{Code|tabela_parametrow_szablonu_uklad_autonawigacji}} {{LinkPatrz|tabela_parametrow_szablonu_uklad_autonawigacji}}, również: {{Code|nazwa_szablonu_uklad_autonawigacji}} {{Patrz|nazwa_szablonu_uklad_autonawigacji}}, i {{Code|tabela_modyfikatorow_uklad_autonawigacji}} {{Patrz|tabela_modyfikatorow_uklad_autonawigacji}}, a także: {{Code|szablon_uklad_autonawigacji}} {{Patrz|szablon_uklad_autonawigacji}}, dalej przerywamy pętle. Jeżeli nie wykryto szablonu autonawigacji, wtedy zakańczamy funkcje jak w punkcie: {{LinkPatrz|pojedyncze_wywolanie}}. A jeżeli nie ma tabeli parametrów szablonu: {{Code|tabela_parametrow_szablonu_uklad_autonawigacji}} {{LinkPatrz|tabela_parametrow_szablonu_uklad_autonawigacji}}, to też podobnie.
A jeżeli chcemy liczyć manualnie, wtedy musimy powiedzieć:
<syntaxhighlight lang="lua">
local automat_manualny=tabela_parametrow_szablonu_uklad_autonawigacji["automat manualny"];
</syntaxhighlight>
Jeżeli wartość tej zmiennej: {{Code|automat_manualny}} {{Patrz|automat_manualny}}, jest nie {{Code|nil}}, i jest niepusta, to ze zmiennej: {{Code|spis treści}} {{Patrz|spis treści}}, liczmy z tego nazwę książki i ona musi się zgadzać ze zmienną: {{Code|pelna_nazwa_ksiazki}} {{LinkPatrz|pelna_nazwa_ksiazki}}, co po zgadzaniu, liczmy nazwę artykułu nazwy artykułu, w przeciwnym wypadku mamy do czynienia ze stroną główną podręcznika, wartość pusta będzie odpowiadała stronie głównej podręcznika, co na sam koniec liczymy:
<syntaxhighlight lang="lua">
---- Zbieranie parametrów pojedynczego o policzoej nazwie artykułu spisu;
local tabela_artykulow,tabela_licencji_spisu_tresci,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,sub_nazwa_spis_tresci,czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH);
---- Sprawdzanie, czy dodatkowy spis treści istnieje , taki jak: "Spis treści", i przekształcanie tablic otrzymanych z poprzedniego wywołania;
tabela_artykulow,tab_inne_spisy=SpisRzeczy(tabela_artykulow,nil);
---- Zwracanie parametrów;
return tabela_artykulow,tabela_licencji_spisu_tresci,(not przekierowanie_spisu_tresci) and sub_nazwa_spis_tresci or {przekierowanie_spisu_tresci,sub_nazwa_spis_tresci,},tab_inne_spisy,nil,adres_ksiazki_glownego_spisu_tresci;
</syntaxhighlight>
Gdy zmienna: {{Code|automat_manualny}} {{LinkPatrz|automat_manualny}}, jest pusta lub nie podana, wtedy następnym krokiem jest odkodowanie parametrów: {{Code|{{s|Układ autonawigacji}}}} {{LinkPatrz|Układ autonawigacji}}, przy pomocy: {{Code|tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji}}, i ich rozwinięcie funkcją: {{LzLua|frame:preprocess}}.
Ustawmy zmienną: {{Code|numer}} {{LinkPatrz|numer}} na wartość {{Code|1}}.
Liczymy zmienne: {{Code|bez spisów treści}} {{Patrz|bez spisów treści}}, i {{Code|bez analizy spisów treści}} {{Patrz|bez analizy spisów treści}}, tabeli parametrów: {{Code|tabela_parametrow_szablonu_uklad_autonawigacji}} {{LinkPatrz|tabela_parametrow_szablonu_uklad_autonawigacji}}, oraz sprawdzamy, czy one są niepuste.
Gdy zmienna: {{Code|bez spisów treści}} {{LinkPatrz|bez spisów treści}}, jest niepodana lub pusta, wtedy liczymy z klucza: {{Code|spis treści}} {{LinkPatrz|spis treści}}, ze zmiennej: {{Code|tabela_parametrow_szablonu_uklad_autonawigacji}} {{LinkPatrz|tabela_parametrow_szablonu_uklad_autonawigacji}}, a jeżeli ta zmienna istnieje, wtedy ją dekodujemy funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, z drugim parametrem {{Code|true}}, i liczymy jego adres bezwzględny z funkcji: {{Code|{{sr|#p["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]|p=Techniczne}}}}, mając względem, którego ma liczyć, tzn.: {{Code|pelna_nazwa_ksiazki}} {{LinkPatrz|pelna_nazwa_ksiazki}}.
Następnie sprawdzamy, czy w policzonym spisie nazwa ksiązki zgadza się z tą: {{Code|pelna_nazwa_ksiazki}} {{LinkPatrz|pelna_nazwa_ksiazki}}, a jeżeli się zgadza, to liczymy nazwę artylułu spisu treści, przeciwnie nazwa artykułu spisu treści ma wartość pustą, wartość pusta nazwy artykułu spisu treści odpowiada stronie głównej podręcznika. W innym wypadku, gdy zmienna: {{Code|bez spisów treści}} {{LinkPatrz|bez spisów treści}} jest niepusta, wtedy tylko uwzględniamy nazwę spisu treści jako stronę główną podręcznika. Tą zmienną jest: {{Code|nazwa_glownego_spisu}} {{LinkPatrz|nazwa_glownego_spisu}}.
Gdy zmienne: {{Code|bez spisów treści}} {{LinkPatrz|bez spisów treści}}, i {{Code|bez analizy spisów treści}} {{LinkPatrz|bez analizy spisów treści}}, są niepodane lub puste, wtedy liczymy pojedynczy artykuł będący spisem treści o nazwie: {{Code|nazwa_glownego_spisu}} {{LinkPatrz|nazwa_glownego_spisu}}, zatem tego wywołanie wygląda tak:
<syntaxhighlight lang="lua">
tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika,tabela_licencji_ksiazek_wedlug_strony_glownej_podrecznika,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_glownego_spisu,czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH);
</syntaxhighlight>
Napiszmy przemianowania zmiennych na: {{Code|tablista_artykulow}} {{LinkPatrz|tablista_artykulow}}, i {{Code|licencja}} {{Patrz|licencja}}, według:
<syntaxhighlight lang="lua">
tablista_artykulow=tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika;
licencja=tabela_licencji_ksiazek_wedlug_strony_glownej_podrecznika;
</syntaxhighlight>
Gdy zmienna: {{Code|przekierowanie_spisu_tresci}} {{LinkPatrz|przekierowanie_spisu_tresci}}, ma wartość odpowiadającej prawidziwej, czyli to pewien łańcuch znakowy, wtedy policzmy {{LinkPatrz|nazwa_glownego_spisu}} dla tego przekierowania:
<syntaxhighlight lang="lua">
nazwa_glownego_spisu={przekierowanie_spisu_tresci,nazwa_glownego_spisu,};
</syntaxhighlight>
Jeśli wartość: {{Code|tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika}} {{Patrz|tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika}}, jest {{Code|nil}}, lub {{Code|0}}, wtedy funkcja jest zakańczana w sposób:
<syntaxhighlight lang="lua">
return tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika;
</syntaxhighlight>
Lub przeciwnie, liczymy spis treści odpowiadającym wartością tabeli: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}, zatem to policzmy, czy tak jest, schematycznie:
<syntaxhighlight lang="lua">
---- Przygotowanie spisu do wielu spisów treści;
tablista_artykulow,tab_inne_spisy,numer=Spis(tablista_artykulow,nil,tab_inne_spisy,nazwa_glownego_spisu,numer);
---- Liczenie czy jest artykuł w spisie treści o nazwie typu: "Spis treści";
local artykul_spisu_rzeczy=p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku(tablista_artykulow);
if(artykul_spisu_rzeczy)then
---- Dodaje spis nowy do większego spisu, ten wykryty zaraz powyższą funkcją;
tabela_artykulow,tab_inne_spisy,numer=InneSpisy(tablista_artykulow,tab_inne_spisy,artykul_spisu_rzeczy,numer);
end;
</syntaxhighlight>
Uruchamiamy iterator: {{Code|iter}} {{Patrz|iter}}, z funkcji: {{LinkŚródtytuł|IteratorSpisTresci}}, bez parametrów, zdefiniowanej w tym bloku, co jest ta iteracja, wtedy możemy je iterować po spisie treści w sposób:
<syntaxhighlight lang="lua">
for spis_tresci in iter do
.... ---- ciało iterowanej pętli;
end;
</syntaxhighlight>
Każdy tak uzyskany: {{Code|spis_treści}} {{LinkPatrz|spis_treści}}, dekodujemy funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, następnie rozwijamy adres względny na bezwzględny względem korzenia drzewa przestrzeni nazw z funkcji: {{Code|{{sr|#p["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]|p=Techniczne}}}}, i dodajemy te spisy do głównego drzewa tablicy rozdziałów i ich artykułów przy pomocy funkcji: {{LinkŚródtytuł|InneSpisy}}, właśnie tak:
<syntaxhighlight lang="lua">
tablista_artykulow,tab_inne_spisy,numer=InneSpisy(tablista_artykulow,tab_inne_spisy,spis_tresci,numer);
</syntaxhighlight>
Uruchomimy inny iterator: {{Code|iter}} {{LinkPatrz|iter}}, z funkcji: {{LinkŚródtytuł|IteratorFun}}, wywołanej bezparametrowo, wtedy iterację możemy napisać wykorzystujac funkcję: {{LinkŚródtytuł|ZbieranieDanychStronZAutonawigacji}}, zdefiniowanej w tej pętli, działającą tak:
<syntaxhighlight lang="lua">
for strona,nazwa in iter do
... ---- definicja funkcji: ZbieranieDanychStronZAutonawigacji;
ZbieranieDanychStronZAutonawigacji();
end;
</syntaxhighlight>
Funkcja w nagłówku zwraca wielowartościowy, wtedy wynik na samym końcu zakończenia jej jest:
<syntaxhighlight lang="lua">
return tablista_artykulow,licencja,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,adres_ksiazki_glownego_spisu_tresci;
</syntaxhighlight>
; Opis zwracanych parametrów{{dk}}
{{OpisParametrów
| 1 = {{Code|tablista_artykulow}} | _1 = Jak w: {{LinkPatrz|tablista_artykulow}}.
| 2 = {{Code|licencja}} | _2 = Jak w: {{LinkPatrz|licencja}}.
| 3 = {{Code|nazwa_glownego_spisu}} | _3 = Jak w: {{LinkPatrz|nazwa_glownego_spisu}}.
| 4 = {{Code|tab_inne_spisy}} | _4 = Jak w: {{LinkPatrz|tab_inne_spisy}}.
| 5 = {{Code|dodatkowe_artykuly}} | _5 = Jak w: {{LinkPatrz|dodatkowe_artykuly}}.
| 6 = {{Code|adres_ksiazki_glownego_spisu_tresci}} | _6 = Jak w: {{LinkPatrz|adres_ksiazki_glownego_spisu_tresci}}.
}}
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
77h475aims40mvtpbvn9iqhua39tmgq
558342
558341
2026-10-02T19:00:49Z
Persino
2851
/* Opis funkcji */
558342
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SpisTreści}}|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.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}}{{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} ===
Funkcja sprawdzająca, czy na stronie z głównym spisem treści lub w innych spisach treści podanych w: {{s|Układ autonawigacji}} {{Patrz|Układ autonawigacji}}, na jednych ze stron: {{s|NawigacjaSpecjalna/Nawigacja/}} {{Patrz|NawigacjaSpecjalna/Nawigacja/}} (te ustawienia są wykorzystywane przez: {{s|Autonawigacja}} {{Patrz|Autonawigacja}}), dotyczącej danej książki, znajduje się artykuł o nazwie znajduje, z dokładnością do wielkości liter, artykuły o nazwach według tabeli: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}}} {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={
["spis treści"]=true,
["spis tresci"]=true,
["spis rzeczy"]=true,
};
</syntaxhighlight>
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku(tabela_artykulow)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tabela_artykulow}} | _1 = Tabela wielowymiarowa rozdziałów i do nich artykułów.
}}
Kopia tej tabeli jest połączona z metatabelką: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=StronicowyParser/obiekty}}}} {{Patrz|p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter}}, przy pomocy funkcji: {{LzLua|setmetatable}}.
Iterujemy dla elementach tabeli: {{Code|tabela_artykulow}} {{Patrz|tabela_artykulow}}, a póżniej sprawdzamy, czy artykuł znajduje się w dozwolonych rozdziałach jako artykuły książki: {{Code|tab_lista[2]}} {{Patrz|tab_lista[2]}}, iterując po jego elementach, wtedy jednych z jego wartości, o pewnym numerze, bierzemy element: {{Code|artykul_w_bazie_element}} {{Patrz|artykul_w_bazie_element}}, według kodu:
<syntaxhighlight lang="lua">
---- Bierzemy jego pierwszy element "tab_stare", bo: "artykul_w_bazie_element", jest tabelką;
local artykul_w_bazie=artykul_w_bazie_element[1];
---- Sprawdzamy, czy element, zawiera klucz o nazwie "["LINK"]=true";
local czy_table=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(artykul_w_bazie);
---- Wybieramy w zależnosci, czy to jest tabelka, czy nie bez tego: "["LINK"]=true";
artykul_w_bazie=czy_table and artykul_w_bazie[1] or artykul_w_bazie;
---- Jeżeli ten element jest tabelką i posiada: "["LINK"]=true", to zwracamy pierwszy element, a jeżeli nie to sam element;
local artykul_bez_naglowka_w_bazie=stronicowyparser_potrzebne_modul.TylkoNazwaStronyWoluminuZTabeliPublikacji(artykul_w_bazie);
</syntaxhighlight>
Powyższy kod, zawiera funkcje z: {{Code|{{ld2|StronicowyParser/Potrzebne}}}}, tzn.: {{Code|{{sr|#p.CzyTabelaStronyWoluminuSpisuRzeczy|p=StronicowyParser/Potrzebne}}}}, która sprawdza, czy element jest tabelka, i czy ma klucz: {{Code|LINK}}, wtedy zwraca wartość: {{Code|false}}, w przeciwnym wypadku, zrzuca wynik czy to jest owo (tabelka), i {{Code|{{sr|#p.TylkoNazwaStronyWoluminuZTabeliPublikacji|p=StronicowyParser/Potrzebne}}}}, który sprawdza, czy to jest tabelka, czy posiada klucz: "klucz", a jeżeli tak, to zwraca pierwszy element tej tabeli, a jeżeli nie, to zwraca to nawet, gdy by nie była tabelką, a jak jest nią, to nie posiada klucza: {{Code|LINK}}. Aby zrozumieć te funkcje skorzystaj z definicji: {{Code|tab_stare}} {{Patrz|tab_stare}}, na stronie: {{Code|{{lr|Moduły/StronicowyParser/SpisTreści/Tom I|SpisTreści - Tom I}}}}.
Następnie sprawdzamy, czy to jest ten spis treści zagwarantowany według: {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}, a jeżeli tak, to funkcja zrzucza wartość: {{Code|artykul_bez_naglowka_w_bazie}} {{Patrz|artykul_bez_naglowka_w_bazie}} - jest to nazwa artykułu spisu treści o określonej nazwie bez nagłówka, a jeżeli mimo to nie znaleziono nic, to nic nie zwraca.
=== {{Śródtytuł|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}}{{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} ===
==== Opis funkcji ====
Funkcja zrzuca wynik z jednego spisu rzeczy, którym jest strona główna książki, lub ewentualnie skojarzony z nią, spis, który jest artykuł o nazwie jednych z: {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}, z dokładnością do wielkości znaków. Funkcja też sprawdza stronę z {{s|Układ autonawigacji}}, czyli strony znajdujące się katalogu: {{s|NawigacjaSpecjalna/Nawigacja/}}, tam sprawdza, jakie spisy do niego należą i je liczy, też sprawdza jakie artykuły do niego należą. W ten sposób mamy utworzony spis treści, który po artykułach książki możemy nawigować za pomocą odpowiednich funkcji autonawigacji.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,czy_artykul_korzystany,__FUNKCJA_SPISU_RZECZY,__FUNKCJA_ZBIERANIA_DANYCH)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{Patrz|self}} | _1 = Zmienna obiektowa funkcji.
| 2 = {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} | _2 = Kolejno jak w: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''' i '''nazwa książki'''.
| 3 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _3 = {{Code|true}}, gdy artykuł dany jest korzystamy, czy aktualnie korzystamy z niego za pomocą przeglądarki.
| 4 = {{Code|__FUNKCJA_SPISU_RZECZY}} {{Patrz|__FUNKCJA_SPISU_RZECZY}} | _4 = Funkcja wykorzystywana w: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}, w module: {{Code|{{ld2|StronicowyParser/ZbieranieDanychStron}}}}, jest to funkcja do różnych celu, w tym przypadku służy, to przypisywania, na które wskazuje przekierowanie, danych z przekierowania do strony, którym jest to właśnie przekierowanie.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
__FUNKCJA_SPISU_RZECZY(tekst_rozwiniety_calego_artykulu_ref_spis,nazwa_przestrzeni_ref_spis,nazwa_przestrzeni_ksiazki_ref_spis,nazwa_ksiazki_ref_spis,nazwa_artykulu_ref_spis,tablica_analizy_obiektow_strony_dany_modul_ref_spis,tablica_danych_parametrow_szablonu_strony_ref_spis);
</syntaxhighlight>
Ta funkcja nie zwraca niczego.
| 5 = {{Code|__FUNKCJA_ZBIERANIA_DANYCH}} {{Patrz|__FUNKCJA_ZBIERANIA_DANYCH}} | _5 = Funkcja opisana w rozdziale: {{Code|{{sr|#p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy|p=StronicowyParser/SpisTreści/Tom I}}}}, w module: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}.
{{PobierzŚródtekst|uchwyt=__FUNKCJA_ZBIERANIA_DANYCH|nazwa artykułu=StronicowyParser/SpisTreści/Tom I}}
}}
==== Fukcje lokalne ====
===== {{Śródtytuł|Spis}}{{Code|Spis}} =====
Funkcja służy do ustawiania poszczególnych spisów treści, jeżeli książka ma ich kilka. Ona służy jedynie do jednego spisu, a nie wszystkich razem, tylko oddzielnie.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Spis(tablista_artykulow,spis_tresci,tab_inne_spisy,nazwa_glownego_spisu,numer)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tablista_artykulow}} {{Patrz|tablista_artykulow}} | _1 = Tabela rozdziałów i do nich artykułów.
| 2 = {{Code|spis_tresci}} {{Patrz|spis_tresci}} | _2 = Jeżeli strona nie jest przekierowaniem, to jest wtedy łańcuch znakowy opisujący dany spis, a jeżeli właśnie jest, wtedy jest to tablica, coś w rodzaju {{Code|<nowiki>{przekierowanie_spisu_tresci,spis_tresci,}</nowiki>}}:
| 3 = Wyjaśnienie: | nagłówek3 = tak
| 4 = {{Code|przekierowanie_spisu_tresci}} {{Patrz|przekierowanie_spisu_tresci}} | _4 = Strona spis treści, która jest jednocześnie przekierowaniem.
| 5 = {{Code|spis_treści}} | _5 = Jak w: {{LinkPatrz|spis_tresci}}, tylko, że tylko łańcuch znakowy, na który wskazuje przekierowanie.
| 6 = Inne parametry: | nagłówek6 = tak
| 7 = {{Code|tab_inne_spisy}} {{Patrz|tab_inne_spisy}} | _7 = Tabela innych spisów książki, jeżeli istnieją,
| 8 = {{Code|nazwa_glownego_spisu}} {{Patrz|nazwa_glownego_spisu}} | _8 = Nazwa głównego spisu treści, zwykle jest to strona główna książki.
| 9 = {{Code|numer}} {{Patrz|numer}} | _9 = Numer, który liczmy, do którego dodajemy jeden.
}}
Parametry zwracane:
<syntaxhighlight lang="lua">
return tablista_artykulow,tab_inne_spisy,numer;
</syntaxhighlight>
Opis parametrów zwracanych:
{{OpisParametrów
| 1 = {{Code|tablista_artykulow}} | _1 = Jak w: {{LinkPatrz|tablista_artykulow}}.
| 2 = {{Code|tab_inne_spisy}} | _2 = Jak w: {{LinkPatrz|tab_inne_spisy}}.
| 3 = {{Code|numer}} | _3 = Jak w: {{LinkPatrz|numer}}.
}}
Gdy zmienna: {{Code|tablista_artykulow}} {{LinkPatrz|tablista_artykulow}}, istnieje, i ma niepustą tablicę, wtedy ta funkcja wtedy faktycznie coś robi, w przeciwnym wypadku zwraca tylko wynik.
Liczmy spis treści, na który wskazuje przekierowanie, gdy strona nie jest nim, to sama strona ze wskazania:
<syntaxhighlight lang="lua">
local czy_spis_tresci_table=parametry_modul.TypeTable(spis_tresci);
local spis_tresci_strona=czy_spis_tresci_table and spis_tresci[1] or spis_tresci;
</syntaxhighlight>
Zmienna: {{Code|spis_tresci_strona}}, to jest nic innego jak: {{Code|przekierowanie_spisu_tresci}} {{LinkPatrz|przekierowanie_spisu_tresci}}, lub tylko jest łańcuchem znakowym, według: {{Code|spis_tresci}} {{LinkPatrz|spis_tresci}}.
Policzmy zmienną: {{Code|tab_element}} {{Patrz|tab_element}}:
<syntaxhighlight lang="lua">
local tab_element={[1]={((not spis_tresci) and "Główny spis treści" or ("Spis treści - "..spis_tresci_strona)),{((spis_tresci) and 1 or nil),nil,nil,},["spis"]={spis_tresci_strona or nazwa_glownego_spisu or "",numer}},[2]=nil,[3]=nil,};
</syntaxhighlight>
Jeżeli pierwszy rozdział danego spisu nie ma numeracji, tzn. wtedy liczymy element: {{Code|tablista_artykulow[1][1][2][1]}}, to wtedy jego pozycje artykularne: {{Code|numer > 1}}, zapisujemy na sam koniec w tablicy: {{Code|tab_element}} {{LinkPatrz|tab_element}}. Następnie usuwamy pierwszy rozdział z artykułami przy pomocy funkcji: {{LzLua|table.remove}}.
Poziomy rozdziałów powiększamy o jeden aż do napotkania pierwszego rozdziału centrowanego, wtedy przerywamy pętle.
Następnym podejściem jest dodanie przed pierwsza pozycją elementu: {{Code|tab_element}} {{LinkPatrz|tab_element}}, do tablicy: {{Code|tablista_artykulow}} {{LinkPatrz|tablista_artykulow}}}, przy pomocy funkcji: {{LzLua|table.insert}}.
Jeżeli spis treści: {{Code|spis_tresci}} {{LinkPatrz|spis_tresci}}, istnieje, wtedy robimy dalsze operacje. Jeżeli tablica: {{Code|tab_inne_spisy}} {{LinkPatrz|tab_inne_spisy}}, nie istnieje, to ją tworzymy, wtedy {{Code|spis_tresci}} {{LinkPatrz|spis_tresci}}, przy pomocy: {{LzLua|table.insert}}, dodajemy do: {{Code|tab_inne_spisy}} {{LinkPatrz|tab_inne_spisy}}. Następnie jeżeli nie istnieje element {{Code|tablista_artykulow[1][2]}} {{Patrz|tablista_artykulow[1][2]}}, związany artykułami należącymi do rozdziału, to go tworzymy, wtedy tworzymy element: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, w postaci:
<syntaxhighlight lang="lua">
local tab_stare={czy_spis_tresci_table and {spis_tresci_strona,nil,przekierowanie_strona} or spis_tresci,{0,"","",true,},"[[:"..pelna_nazwa_ksiazki.."/" ..spis_tresci_strona.."]]",false,};
</syntaxhighlight>
To: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, jest opisane w module: {{lr|Moduły/StronicowyParser/SpisTreści/Tom I|Spis treści - Tom I}}.
To dodajemy na pierwszą pozycję do zbioru artykułów, do elementu: {{LinkPatrz|tablista_artykulow[1][2]}}, na pierwszą pozycję, przy pomocy funkcji: {{LzLua|table.insert}}.
Następnym krokiem jest zwracanie przez funkcję zmiennych powyżej powiedzianych.
===== {{Śródtytuł|InneSpisy}}{{Code|InneSpisy}} =====
Funkcja służy do uzyskiwania elementów danego spisu, ustawiania go odpowiedniego i wstawianie go do ogólnego spisu opisujące wszystkie spisy w danej książce.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function InneSpisy(tablista_artykulow,tab_inne_spisy,spis_tresci,numer)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tablista_artykulow}} | _1 = Jak w: {{LinkPatrz|tablista_artykulow}}.
| 2 = {{Code|tab_inne_spisy}} | _2 = Jak w: {{LinkPatrz|tab_inne_spisy}}.
| 3 = {{Code|spis_tresci}} | _3 = Jak w: {{LinkPatrz|spis_tresci}}.
| 4 = {{Code|numer}} | _4 = Jak w: {{LinkPatrz|numer}}.
}}
Uzyskujemy elementy spisu z wywołania dla pojedynczego spisu treści:
<syntaxhighlight lang="lua">
local tablista_artykulow_iter,tablica_licencji,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,spis_tresci,false,nil,__FUNKCJA_ZBIERANIA_DANYCH);
</syntaxhighlight>
Jeżeli zmienna: {{Code|tablista_artykulow_iter}} {{Patrz|tablista_artykulow_iter}} istnieje i jest tablicą, to ją przetwarzamy przy pomocy funkcji: {{LinkŚródtytuł|InneSpisy}}, w sposób:
<syntaxhighlight lang="lua">
tablista_artykulow_iter,tab_inne_spisy,numer=Spis(tablista_artykulow_iter,(not przekierowanie_spisu_tresci)and spis_tresci or {przekierowanie_spisu_tresci,spis_tresci,},tab_inne_spisy,nil,numer);
</syntaxhighlight>
Tak otrzymanną zmienną: {{Code|tablista_artykulow_iter}} {{LinkPatrz|tablista_artykulow_iter}}, iterujemy po elementach wsadzając ją do tablicy na sam koniec: {{Code|tablista_artykulow}} {{LinkPatrz|tablista_artykulow}}, a jak tak tablica nie istnieje, to ją tworzymy z pustą tablicą, i wtedy wykonujemy tą operację. To wsadzanie wykonujemy za pomocą funkcji: {{LzLua|table.insert}}.
Na samym końcu zwracamy wiele elementów:
<syntaxhighlight lang="lua">
return tablista_artykulow,tab_inne_spisy,numer;
</syntaxhighlight>
===== {{Śródtytuł|SpisRzeczy}}{{Code|SpisRzeczy}} =====
Funkcja przygotowuje aktualny spis treści, by dodać do niego nowy spis, jeżeli on istnieje, jako artykuł w spisie o nazwach: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function SpisRzeczy(tabela_artykulow,tab_inne_spisy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tabela_artykulow}} | _1 = Jak w: {{LinkPatrz|tabela_artykulow}}.
| 2 = {{Code|tab_inne_spisy}} | _2 = Jak w: {{LinkPatrz|tab_inne_spisy}}.
}}
Uruchamiamy funkcję: {{LinkŚródtytuł|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}}, która zwraca wynik, który trzeba sprawdzić, czy istnieje, przed dalszymi operacjami, tzn. {{Code|artykul_spisu_rzeczy}} {{Patrz|artykul_spisu_rzeczy}}, uzyskując z aktualnej listy spis treści dla całej książki, jako jego zespołu, na podstawie jego dowiadujemy, ża taki omawiany spis istnieje, wtedy stary spis, czyli stronę główną podręcznika, przygotujemy do tego, do tego robimy funkcją: {{LinkŚródtytuł|Spis}}, wywołaniem, ale przed tymwywołaniem ustawiamy: {{Code|numer {{=}} 1}}, zatem:
<syntaxhighlight lang="lua">
tabela_artykulow,tab_inne_spisy,numer=Spis(tabela_artykulow,nil,tab_inne_spisy,"",numer);
</syntaxhighlight>
Następnym krokiem jest czytanie tego spisu przy pomocy wywołania: {{LinkŚródtytuł|InneSpisy}}, jako:
<syntaxhighlight lang="lua">
tabela_artykulow,tab_inne_spisy,numer=InneSpisy(tabela_artykulow,tab_inne_spisy,artykul_spisu_rzeczy,numer);
</syntaxhighlight>
Funkcja używa zmiennej uzyskanego wcześniej, tzn.: {{Code|artykul_spisu_rzeczy}} {{LinkPatrz|artykul_spisu_rzeczy}}, to jest to samo, co: {{Code|artykul_bez_naglowka_w_bazie}} {{LinkPatrz|artykul_bez_naglowka_w_bazie}}, uzyskanej z funkcji liczący taki spis według: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}, którym wartością jest nazwa artykułu bez nagłówka w bazie.
Wartościami zwracanymi przez funkcję dwie osobne zmienne zrzucane jednocześnie:
<syntaxhighlight lang="lua">
return tabela_artykulow,tab_inne_spisy;
</syntaxhighlight>
Jest to ogólna tabela wszystkich rozdziałów i do nich ich artykułów, i uzupełniona lista innych spisów treści.
===== {{Śródtytuł|IteratorSpisTresci}}{{Code|IteratorSpisTresci}} =====
Funkcja uruchamiająca iterator po spisach treści innych niż spis treści główny, jego definicja:
<syntaxhighlight lang="lua">
local IteratorSpisTresci=function()
local liczba=1;
return function()
local spis_tresci=tabela_parametrow_szablonu_uklad_autonawigacji["spis treści "..liczba];
liczba=liczba+1;
return spis_tresci;
end;
end;
</syntaxhighlight>
Funkcja wykorzystuje tablicę parametrów autonawigacji ze strony ściśle określonej z katalogu stron: {{Code|NawigacjaSpecjalna/Nawigacja/...}} {{LinkPatrz|NawigacjaSpecjalna/Nawigacja/}}, iteruje co jeden numer spisu treści, tzn.: {{Code|spis treści 1}}, {{Code|spis treści 2}},..., {{Code|spis treści N}}, gdzie {{Code|N}}, to największa liczba charakteryzująca dany spis treści. W samym iteratorze liczba: {{Code|liczba}} {{Patrz|liczba-IteratorSpisTresci}}, powiększa się co jeden, aż do zakończenia limitu spisów treści, tzn do najbliżeszej przerwy lub końca przy iteracji, bo na samym końcu iterator zrzuci wynik {{Code|nil}}.
===== {{Śródtytuł|IteratorFun}}{{Code|IteratorFun}} =====
Funkcja iteruje po stronach i ich nazwach, jakie mają być wyświetlane w linkach, generowane przez: {{Code|{{s|Autonawigacja}}}} {{LinkPatrz|Autonawigacja}}, ale na podstawie {{Code|{{s|Układ autonawigacji}}}} {{LinkPatrz|Układ autonawigacji}}, według jednych ze stron: {{Code|NawigacjaSpecjalna/Nawigacja/...}} {{LinkPatrz|NawigacjaSpecjalna/Nawigacja/}}, ustawień.
Definicja skrótowa funkcji i jego funnkcji zwracanej, która jest iteratorem:
<syntaxhighlight lang="lua">
local IteratorFun=function()
... ---- operacje robione przed uruchomieniem iteratora;
return function()
... ---- ciało iteratora
return strona,nazwa; ---- zwracane elementy;
end;
end;
</syntaxhighlight>
Definicja funkcji: {{Code|STRONA}} {{Patrz|STRONA}} i {{Code|NAZWA}} {{Patrz|NAZWA}}, są:
<syntaxhighlight lang="lua">
local STRONA=function(liczba)return liczba*2-1;end;
local NAZWA=function(liczba)return liczba*2;end;
</syntaxhighlight>
W iteratorze dostępna jest zmienna: {{Code|tabela_parametrow_szablonu_uklad_autonawigacji}} {{Patrz|tabela_parametrow_szablonu_uklad_autonawigacji}}, z którego uzyskujemy parametry, te wywołania są napisane w ciele iteratora, w sposób:
<syntaxhighlight lang="lua">
local strona=tabela_parametrow_szablonu_uklad_autonawigacji[STRONA(liczba)];
local nazwa=tabela_parametrow_szablonu_uklad_autonawigacji[NAZWA(liczba)];
</syntaxhighlight>
Iterację zaczynamy od {{Code|liczba}} {{Patrz|liczba-IteratorFun}} od jedynki, po uzyskaniu powyższych wartości, licznik (tą liczbę) powiększamy o jeden, a następnie zwracamy w iteratorze zmienne: {{Code|strona}} {{Patrz|strona}} i {{Code|nazwa}} {{Patrz|nazwa}}.
===== {{Śródtytuł|ZbieranieDanychStronZAutonawigacji}}{{Code|ZbieranieDanychStronZAutonawigacji}} =====
Jest to funkcja do zbierania danych z jednego ze ściśle określonej strony szablonu z: {{Code|NawigacjaSpecjalna/Nawigacja/...}} {{LinkPatrz|NawigacjaSpecjalna/Nawigacja/}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function ZbieranieDanychStronZAutonawigacji()...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = Brak parametrów. | komórka1 = tak
}}
Gdy parametr z iteracji iteratorem: {{Code|iter}}, z którego przy jego kolejnych wywołaniach otrzymujemy parametry: {{Code|strona}} {{LinkPatrz|strona}}, i {{Code|nazwa}} {{LinkPatrz|nazwa}}, dla: {{Code|strona}} {{LinkPatrz|strona}}, jest równy wartości odpowiadającej fałszywej, wtedy funkcja zakańcza pracę. W przeciwnym wypadku te parametry są dekodowane funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, z drugim parametrem: {{Code|true}}, ale nazwa jest dekodowana, gdy ona jest niepusta.
Gdy zmienna: {{Code|dodatkowe_artykuly}} {{LinkPatrz|dodatkowe_artykuly}}, nie istnieje, to wtedy ją tworzymy, inicjując ją pustą tablicą, oraz inicjujemy tabelę artykułów dodatkowych wykorzystując funkcję: {{LzLua|table.insert}}:
<syntaxhighlight lang="lua">
table.insert(tablista_artykulow,{[1]={"Dodatkowe artykuły",{1,nil,nil},["dodatkowe"]="tak",},[2]=nil,});
</syntaxhighlight>
Następnie liczymy parametr dla danego rozdziału, tzn. liczymy: {{Code|tabela_rozdzial_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}, według:
<syntaxhighlight lang="lua">
tabela_rozdzial_artykulow=tablista_artykulow[#tablista_artykulow];
</syntaxhighlight>
Następnie liczyny adres bezwzględny: {{Code|strona}} {{LinkPatrz|strona}} z funkcji: {{Code|{{sr|#p["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]|p=Techniczne}}}}, według wywołania, znająć dwa parametry: {{Code|strona}} {{LinkPatrz|strona}} i {{Code|pelna_nazwa_ksiazki}} {{Patrz|pelna_nazwa_ksiazki}}, czyli:
<syntaxhighlight lang="lua">
strona=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=strona,[2]=pelna_nazwa_ksiazki,};
</syntaxhighlight>
====== {{Śródtytuł|WsadzanieParametryDoTablicy}}{{Code|WsadzanieParametryDoTablicy}} ======
Jest to funkcja wsadzająca elementy do tablicy do funkcji: {{Code|{{sr|#WstawianieElementowychZarejestrowanychStronDoBazyWoluminu|p=StronicowyParser/SpisTreści/Tom I}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local WsadzanieParametryDoTablicy=function(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tabela_rozdzial_artykulow}} {{Patrz|tabela_rozdzial_artykulow}} | _1 = Tabela rozdziału i do niego artykułów.
| 2 = {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{Patrz|numer_rodzaju_artykulow_w_nie_podreczniku}} | _2 = Numer pozycji na którym element zostonie element {{LinkPatrz|tab_stare}} wstawiony.
| 3 = {{Code|tab_stare}} {{LinkPatrz|tab_stare}} | _3 = Wstawiany element.
}}
Jeżeli zmienna: {{Code|dodatkowe_artykuly}} {{Patrz|dodatkowe_artykuly}}, nie istnieje, to jest inicjowana tablicą pustą.
Liczymy adres strony na podstawie:
<syntaxhighlight lang="lua">
---- Jeżeli zmienna jest tablicą i nie ma klucza: "["LINK"]=true", wtedy przyjmuje wartość: true, w przeciwnym wypadku: false;
local czy_table_baza_artykulu=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(tab_stare[1]);
---- Nazwa artykułu lub adres strony, dla ktorej liczymy adres;
local adres=czy_table_baza_artykulu and tab_stare[1][1] or tab_stare[1];
</syntaxhighlight>
Liczymy, czy strona jest w podręczniku, czyli: {{Code|czy_w_podreczniku}} {{Patrz|czy_w_podreczniku}}, ze: {{Code|tab_stare[5]}} {{Patrz|tab_stare[5]}}, a następnie kod języka i projektu, kolejno: {{Code|kod_jezyka_koncowy}} {{Patrz|kod_jezyka_koncowy}}, i {{Code|kod_projektu_koncowy}} {{Patrz|kod_projektu_koncowy}}, jeżeli zmienna: {{Code|czy_table_baza_artykulu}} {{Patrz|czy_table_baza_artykulu}}, jest nie równa wartości prawdziwej, to te zmienne przyjmuje wartość {{Code|nil}}, w przeciwnym wypadku kolejno wartości: {{Code|tab_stare[1][5]}} i {{Code|tab_stare[1][6]}}.
Wsadzamy element do tablicy: {{Code|dodatkowe_artykuly}} {{LinkPatrz|dodatkowe_artykuly}}, przy pomocy funkcji: {{LzLua|table.insert}}, w sposób:
<syntaxhighlight lang="lua">
table.insert(dodatkowe_artykuly,{((adres) and (kod_jezyka_koncowy or kod_projektu_koncowy) and({adres,kod_jezyka_koncowy,kod_projektu_koncowy,}) or adres),nazwa,czy_w_podreczniku,});
</syntaxhighlight>
Póżniej wstawiamy element: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, do: {{Code|tabela_rozdzial_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}, na pozycję: {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, używając wywołania {{LzLua|table.insert}}, czyli:
<syntaxhighlight lang="lua">
table.insert(tabela_rozdzial_artykulow[numer_rodzaju_artykulow_w_nie_podreczniku],tab_stare);
</syntaxhighlight>
====== Dalszy opis funkcji nadrzędnej ======
Dalszym krokiem jest wsadzenie elementu do ogólnej tablicy, a tutaj do artykułu w danym rozdziale, robimy, mając przetwarzaną zmienną: {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}}, to według:
<syntaxhighlight lang="lua">
local numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy;
numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych=WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,WsadzanieParametryDoTablicy,...,...,true,{strona,nazwa,},...,...,...,"",...,...,tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji,tablica_danych_parametrow_szablonu_strony_uklad_autonawigacji,nil,nil,...,--[[]]"*","",false,"[[:"..strona..((parametry_modul.CzyTak(nazwa))and("|"..nazwa) or "").."]]");
</syntaxhighlight>
Powyżej użyto trójkropków: {{Code|...}}, bo te parametry są standardowe dla każdego wywołania.
Powyżej wstawianie odbyło się przy pomocy funkcji: {{LinkŚródtytuł|WsadzanieParametryDoTablicy}}, używając: {{Code|{{sr|#WstawianieElementowychZarejestrowanychStronDoBazyWoluminu|p=StronicowyParser/SpisTreści/Tom I}}}}, w której jest tworzone: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, który natomiast jest wsadzany do ogólnej tablicy rozdziałów i w nich artykułach na odpowiednią pozycję. W wstawianym elemencie ustawiamy stuczną listę z początkiem: {{Code|<nowiki>*</nowiki>}}, z numeracją pusta, i linią artykułu, którą jest link:
<syntaxhighlight lang="lua">
"[[:"..strona..((parametry_modul.CzyTak(nazwa))and("|"..nazwa) or "").."]]"
</syntaxhighlight>
A dalej należy zapoznać się z funkcją przetwarzającą dane przed wsadzeniem do ogólnej tablicy.
==== Dalszy opis funkcji głównej ====
Liczymy adres strony głównej podręcznika: {{Code|pelna_nazwa_ksiazki}} {{LinkPatrz|pelna_nazwa_ksiazki}}, z funkcji: {{Code|{{sr|#m["NazwaModułu"]|p=Nazwy/Tom III}}}}, i sprawdzamy, czy strona istnieje na podstawie funkcji: {{Code|{{sr|#p.PoliczZbiory|p=Techniczne}}}}. Jeśli strona istnieje, wtedy liczymy, czy istnieje jego przekierowanie z funkcji: {{Code|{{sr|#p.PrzekierowanieDoStrony|p=Techniczne}}}},a jeżeli istnieje jego przekierowanie, to wtedy wartość tej funkcją jest stroną na którą wskazuje to przekierowanie, oznaczmy tą zmienną: {{Code|strona_spisu_tresci}} {{Patrz|strona_spisu_tresci}}.
Jeżeli: {{Code|strona_spisu_tresci}} {{LinkPatrz|strona_spisu_tresci}}, istnieje, wtedy jego nazwę dekodujemy funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, z drugim parametrem {{Code|true}}.
Używając tabeli nazw, tzn.: {{Code|tabela_nazw}} {{Patrz|tabela_nazw}}, której przydzielamy wartość pustą, liczymy kolejno: {{Code|nazwa_przestrzeni2}} {{Patrz|nazwa_przestrzeni2}}, {{Code|nazwa_przestrzeni_ksiazki2}} {{Patrz|nazwa_przestrzeni_ksiazki2}} i {{Code|nazwa_ksiazki2}} {{Patrz|nazwa_ksiazki2}}, z następujących funkcji kolejno: {{Code|{{sr|#m.NAZWAPRZESTRZENI|p=Nazwy/Tom II}}}}, {{Code|{{sr|#m["NAZWAPRZESTRZENIKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, albo: {{Code|{{sr|#m["NAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, gdy: {{Code|nazwa_przestrzeni_ksiazki2}} {{LinkPatrz|nazwa_przestrzeni_ksiazki2}}, jest pusta, przeciwnie z: {{Code|{{sr|#m["SUBNAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}. Sprawdzamy, czy one pokrywają się kolejno z: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, i {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki}}, a jeżeli w całości, wtedy sprawdzamay, czy to z {{Code|2}} należą do przestrzeni nazw i niby-przestrzenu nazw książkowych. Przestrzenie ksiązkowe, to: {{Np|(main)|link=tak}}, {{Np|Wikijunior|link=tak}}, oraz {{Np|User|link=tak}}, w niby przestreni nazw: '''{{Np|User|link=tak}}:<użytkownik>/''', i {{Np|Project|link=tak}} w niby-przestrzeni nazw: '''{{Np|Project|link=tak}}:Brudnopis/<użytkownik>/''', jeżeli do tej przestrzeni nie należy, to funkcja kończy się z błędem (z wartością) {{Code|2}}, przeciwnie tworzona jest zmienna {{Code|adres_ksiazki_glownego_spisu_tresci}} {{Patrz|adres_ksiazki_glownego_spisu_tresci}}:
<syntaxhighlight lang="lua">
adres_ksiazki_glownego_spisu_tresci={nazwa_przestrzeni2,nazwa_przestrzeni_ksiazki2,nazwa_ksiazki2,};
</syntaxhighlight>
Także jest tam wywoływana funkcja: {{Code|__FUNKCJA_SPISU_RZECZY}} {{LinkPatrz|__FUNKCJA_SPISU_RZECZY}}, jeśli istnieje:
<syntaxhighlight lang="lua">
local wynik=__FUNKCJA_SPISU_RZECZY and __FUNKCJA_SPISU_RZECZY(nazwa_przestrzeni2,nazwa_przestrzeni_ksiazki2,nazwa_ksiazki2) or nil;
</syntaxhighlight>
Jeżeli ta funkcja nie istnieje, lub zwraca {{Code|nil}} lub nawet {{Code|1}}, wtedy funkcja zakańcza się z błędem: {{Code|1}}, przeciwnie na podstawie tego z {{Code|2}}, jest przyrównywanie tego temu bez tego, wtedy mamy nowe parametry nazw bez {{Code|2}}. I na podstawie tego liczymy nową nazwę: {{Code|pelna_nazwa_ksiazki}} {{LinkPatrz|pelna_nazwa_ksiazki}}.
Liczymy adres ustawień z: {{Code|NawigacjaSpecjalna/Nawigacja/...}} {{LinkPatrz|NawigacjaSpecjalna/Nawigacja/}}, i sprawdzamy, czy on ma przekierowanie z: {{Code|{{sr|#p.PrzekierowanieDoStrony|p=Techniczne}}}}, wtedy ma nowy adres, dalej liczymy jego kod źdrudłowy z funkcji: {{Code|{{sr|#p.WikikodStrony|p=Techniczne}}}}, przy pomocy funkcji:
<syntaxhighlight lang="lua">
local tekst=techniczne_modul.WikikodStrony{["przestrzeń"]="",["nazwa"]=adres_ustawien,};
</syntaxhighlight>
A jeżeli taka strona nie istnieje, wtedy: {{Code|tekst}}, przyjmuje wartość: {{Code|nil}}, wtedy wywołujemy kod pojedynczego spisu treści {{Patrz|pojedyncze_wywolanie}}, czyli strony głównej podręcznika (książki):
<syntaxhighlight lang="lua">
---- Zbieranie parametrów pojedynczego spisu (strony głównej strony jako spisu treści)
local tabela_artykulow,tabela_licencji_spisu_tresci,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"",czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH);
local tab_inne_spisy;
---- Sprawdzanie, czy dodatkowy spis treści istnieje , taki jak: "Spis treści", i przekształcanie tablic otrzymanych z poprzedniego wywołania;
tabela_artykulow,tab_inne_spisy=SpisRzeczy(tabela_artykulow,nil);
---- Zwracanie parametrów;
return tabela_artykulow,tabela_licencji_spisu_tresci,(not przekierowanie_spisu_tresci) and "" or {przekierowanie_spisu_tresci,"",},tab_inne_spisy,nil,adres_ksiazki_glownego_spisu_tresci;
</syntaxhighlight>
Przeciwnie kodujemy ten tekst: {{Code|tekst}} {{Patrz|tekst}}, przy pomocy pustej tabeli: {{Code|tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji}}. Co na podstawie liczmy tego parametry szablonu o: {{Code|obiekt}} {{=}} {{Code|SZABLON}}, w nim o nazwie: {{Code|{{sr|#p.uklad_autonawigacji|p=StronicowyParser/obiekty}}}}, czyli: {{Code|tabela_parametrow_szablonu_uklad_autonawigacji}} {{LinkPatrz|tabela_parametrow_szablonu_uklad_autonawigacji}}, również: {{Code|nazwa_szablonu_uklad_autonawigacji}} {{Patrz|nazwa_szablonu_uklad_autonawigacji}}, i {{Code|tabela_modyfikatorow_uklad_autonawigacji}} {{Patrz|tabela_modyfikatorow_uklad_autonawigacji}}, a także: {{Code|szablon_uklad_autonawigacji}} {{Patrz|szablon_uklad_autonawigacji}}, dalej przerywamy pętle. Jeżeli nie wykryto szablonu autonawigacji, wtedy zakańczamy funkcje jak w punkcie: {{LinkPatrz|pojedyncze_wywolanie}}. A jeżeli nie ma tabeli parametrów szablonu: {{Code|tabela_parametrow_szablonu_uklad_autonawigacji}} {{LinkPatrz|tabela_parametrow_szablonu_uklad_autonawigacji}}, to też podobnie.
A jeżeli chcemy liczyć manualnie, wtedy musimy powiedzieć:
<syntaxhighlight lang="lua">
local automat_manualny=tabela_parametrow_szablonu_uklad_autonawigacji["automat manualny"];
</syntaxhighlight>
Jeżeli wartość tej zmiennej: {{Code|automat_manualny}} {{Patrz|automat_manualny}}, jest nie {{Code|nil}}, i jest niepusta, to ze zmiennej: {{Code|spis treści}} {{Patrz|spis treści}}, liczmy z tego nazwę książki i ona musi się zgadzać ze zmienną: {{Code|pelna_nazwa_ksiazki}} {{LinkPatrz|pelna_nazwa_ksiazki}}, co po zgadzaniu, liczmy nazwę artykułu nazwy artykułu, w przeciwnym wypadku mamy do czynienia ze stroną główną podręcznika, wartość pusta będzie odpowiadała stronie głównej podręcznika, co na sam koniec liczymy:
<syntaxhighlight lang="lua">
---- Zbieranie parametrów pojedynczego o policzoej nazwie artykułu spisu;
local tabela_artykulow,tabela_licencji_spisu_tresci,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,sub_nazwa_spis_tresci,czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH);
---- Sprawdzanie, czy dodatkowy spis treści istnieje , taki jak: "Spis treści", i przekształcanie tablic otrzymanych z poprzedniego wywołania;
tabela_artykulow,tab_inne_spisy=SpisRzeczy(tabela_artykulow,nil);
---- Zwracanie parametrów;
return tabela_artykulow,tabela_licencji_spisu_tresci,(not przekierowanie_spisu_tresci) and sub_nazwa_spis_tresci or {przekierowanie_spisu_tresci,sub_nazwa_spis_tresci,},tab_inne_spisy,nil,adres_ksiazki_glownego_spisu_tresci;
</syntaxhighlight>
Gdy zmienna: {{Code|automat_manualny}} {{LinkPatrz|automat_manualny}}, jest pusta lub nie podana, wtedy następnym krokiem jest odkodowanie parametrów: {{Code|{{s|Układ autonawigacji}}}} {{LinkPatrz|Układ autonawigacji}}, przy pomocy: {{Code|tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji}}, i ich rozwinięcie funkcją: {{LzLua|frame:preprocess}}.
Ustawmy zmienną: {{Code|numer}} {{LinkPatrz|numer}} na wartość {{Code|1}}.
Liczymy zmienne: {{Code|bez spisów treści}} {{Patrz|bez spisów treści}}, i {{Code|bez analizy spisów treści}} {{Patrz|bez analizy spisów treści}}, tabeli parametrów: {{Code|tabela_parametrow_szablonu_uklad_autonawigacji}} {{LinkPatrz|tabela_parametrow_szablonu_uklad_autonawigacji}}, oraz sprawdzamy, czy one są niepuste.
Gdy zmienna: {{Code|bez spisów treści}} {{LinkPatrz|bez spisów treści}}, jest niepodana lub pusta, wtedy liczymy z klucza: {{Code|spis treści}} {{LinkPatrz|spis treści}}, ze zmiennej: {{Code|tabela_parametrow_szablonu_uklad_autonawigacji}} {{LinkPatrz|tabela_parametrow_szablonu_uklad_autonawigacji}}, a jeżeli ta zmienna istnieje, wtedy ją dekodujemy funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, z drugim parametrem {{Code|true}}, i liczymy jego adres bezwzględny z funkcji: {{Code|{{sr|#p["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]|p=Techniczne}}}}, mając względem, którego ma liczyć, tzn.: {{Code|pelna_nazwa_ksiazki}} {{LinkPatrz|pelna_nazwa_ksiazki}}.
Następnie sprawdzamy, czy w policzonym spisie nazwa ksiązki zgadza się z tą: {{Code|pelna_nazwa_ksiazki}} {{LinkPatrz|pelna_nazwa_ksiazki}}, a jeżeli się zgadza, to liczymy nazwę artylułu spisu treści, przeciwnie nazwa artykułu spisu treści ma wartość pustą, wartość pusta nazwy artykułu spisu treści odpowiada stronie głównej podręcznika. W innym wypadku, gdy zmienna: {{Code|bez spisów treści}} {{LinkPatrz|bez spisów treści}} jest niepusta, wtedy tylko uwzględniamy nazwę spisu treści jako stronę główną podręcznika. Tą zmienną jest: {{Code|nazwa_glownego_spisu}} {{LinkPatrz|nazwa_glownego_spisu}}.
Gdy zmienne: {{Code|bez spisów treści}} {{LinkPatrz|bez spisów treści}}, i {{Code|bez analizy spisów treści}} {{LinkPatrz|bez analizy spisów treści}}, są niepodane lub puste, wtedy liczymy pojedynczy artykuł będący spisem treści o nazwie: {{Code|nazwa_glownego_spisu}} {{LinkPatrz|nazwa_glownego_spisu}}, zatem tego wywołanie wygląda tak:
<syntaxhighlight lang="lua">
tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika,tabela_licencji_ksiazek_wedlug_strony_glownej_podrecznika,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_glownego_spisu,czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH);
</syntaxhighlight>
Napiszmy przemianowania zmiennych na: {{Code|tablista_artykulow}} {{LinkPatrz|tablista_artykulow}}, i {{Code|licencja}} {{Patrz|licencja}}, według:
<syntaxhighlight lang="lua">
tablista_artykulow=tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika;
licencja=tabela_licencji_ksiazek_wedlug_strony_glownej_podrecznika;
</syntaxhighlight>
Gdy zmienna: {{Code|przekierowanie_spisu_tresci}} {{LinkPatrz|przekierowanie_spisu_tresci}}, ma wartość odpowiadającej prawidziwej, czyli to pewien łańcuch znakowy, wtedy policzmy {{LinkPatrz|nazwa_glownego_spisu}} dla tego przekierowania:
<syntaxhighlight lang="lua">
nazwa_glownego_spisu={przekierowanie_spisu_tresci,nazwa_glownego_spisu,};
</syntaxhighlight>
Jeśli wartość: {{Code|tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika}} {{Patrz|tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika}}, jest {{Code|nil}}, lub {{Code|0}}, wtedy funkcja jest zakańczana w sposób:
<syntaxhighlight lang="lua">
return tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika;
</syntaxhighlight>
Lub przeciwnie, liczymy spis treści odpowiadającym wartością tabeli: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}, zatem to policzmy, czy tak jest, schematycznie:
<syntaxhighlight lang="lua">
---- Przygotowanie spisu do wielu spisów treści;
tablista_artykulow,tab_inne_spisy,numer=Spis(tablista_artykulow,nil,tab_inne_spisy,nazwa_glownego_spisu,numer);
---- Liczenie czy jest artykuł w spisie treści o nazwie typu: "Spis treści";
local artykul_spisu_rzeczy=p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku(tablista_artykulow);
if(artykul_spisu_rzeczy)then
---- Dodaje spis nowy do większego spisu, ten wykryty zaraz powyższą funkcją;
tabela_artykulow,tab_inne_spisy,numer=InneSpisy(tablista_artykulow,tab_inne_spisy,artykul_spisu_rzeczy,numer);
end;
</syntaxhighlight>
Uruchamiamy iterator: {{Code|iter}} {{Patrz|iter}}, z funkcji: {{LinkŚródtytuł|IteratorSpisTresci}}, bez parametrów, zdefiniowanej w tym bloku, co jest ta iteracja, wtedy możemy je iterować po spisie treści w sposób:
<syntaxhighlight lang="lua">
for spis_tresci in iter do
.... ---- ciało iterowanej pętli;
end;
</syntaxhighlight>
Każdy tak uzyskany: {{Code|spis_treści}} {{LinkPatrz|spis_treści}}, dekodujemy funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, następnie rozwijamy adres względny na bezwzględny względem korzenia drzewa przestrzeni nazw z funkcji: {{Code|{{sr|#p["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]|p=Techniczne}}}}, i dodajemy te spisy do głównego drzewa tablicy rozdziałów i ich artykułów przy pomocy funkcji: {{LinkŚródtytuł|InneSpisy}}, właśnie tak:
<syntaxhighlight lang="lua">
tablista_artykulow,tab_inne_spisy,numer=InneSpisy(tablista_artykulow,tab_inne_spisy,spis_tresci,numer);
</syntaxhighlight>
Uruchomimy inny iterator: {{Code|iter}} {{LinkPatrz|iter}}, z funkcji: {{LinkŚródtytuł|IteratorFun}}, wywołanej bezparametrowo, wtedy iterację możemy napisać wykorzystujac funkcję: {{LinkŚródtytuł|ZbieranieDanychStronZAutonawigacji}}, zdefiniowanej w tej pętli, działającą tak:
<syntaxhighlight lang="lua">
for strona,nazwa in iter do
... ---- definicja funkcji: ZbieranieDanychStronZAutonawigacji;
ZbieranieDanychStronZAutonawigacji();
end;
</syntaxhighlight>
Funkcja w nagłówku zwraca wielowartościowy, wtedy wynik na samym końcu zakończenia jej jest:
<syntaxhighlight lang="lua">
return tablista_artykulow,licencja,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,adres_ksiazki_glownego_spisu_tresci;
</syntaxhighlight>
; Opis zwracanych parametrów{{dk}}
{{OpisParametrów
| 1 = {{Code|tablista_artykulow}} | _1 = Jak w: {{LinkPatrz|tablista_artykulow}}.
| 2 = {{Code|licencja}} | _2 = Jak w: {{LinkPatrz|licencja}}.
| 3 = {{Code|nazwa_glownego_spisu}} | _3 = Jak w: {{LinkPatrz|nazwa_glownego_spisu}}.
| 4 = {{Code|tab_inne_spisy}} | _4 = Jak w: {{LinkPatrz|tab_inne_spisy}}.
| 5 = {{Code|dodatkowe_artykuly}} | _5 = Jak w: {{LinkPatrz|dodatkowe_artykuly}}.
| 6 = {{Code|adres_ksiazki_glownego_spisu_tresci}} | _6 = Jak w: {{LinkPatrz|adres_ksiazki_glownego_spisu_tresci}}.
}}
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
50fldcmea13eyvzujein8k6o2bm41d4
558344
558342
2026-10-02T19:05:05Z
Persino
2851
/* Opis funkcji */
558344
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SpisTreści}}|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.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}}{{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} ===
Funkcja sprawdzająca, czy na stronie z głównym spisem treści lub w innych spisach treści podanych w: {{s|Układ autonawigacji}} {{Patrz|Układ autonawigacji}}, na jednych ze stron: {{s|NawigacjaSpecjalna/Nawigacja/}} {{Patrz|NawigacjaSpecjalna/Nawigacja/}} (te ustawienia są wykorzystywane przez: {{s|Autonawigacja}} {{Patrz|Autonawigacja}}), dotyczącej danej książki, znajduje się artykuł o nazwie znajduje, z dokładnością do wielkości liter, artykuły o nazwach według tabeli: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}}} {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={
["spis treści"]=true,
["spis tresci"]=true,
["spis rzeczy"]=true,
};
</syntaxhighlight>
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku(tabela_artykulow)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tabela_artykulow}} | _1 = Tabela wielowymiarowa rozdziałów i do nich artykułów.
}}
Kopia tej tabeli jest połączona z metatabelką: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=StronicowyParser/obiekty}}}} {{Patrz|p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter}}, przy pomocy funkcji: {{LzLua|setmetatable}}.
Iterujemy dla elementach tabeli: {{Code|tabela_artykulow}} {{Patrz|tabela_artykulow}}, a póżniej sprawdzamy, czy artykuł znajduje się w dozwolonych rozdziałach jako artykuły książki: {{Code|tab_lista[2]}} {{Patrz|tab_lista[2]}}, iterując po jego elementach, wtedy jednych z jego wartości, o pewnym numerze, bierzemy element: {{Code|artykul_w_bazie_element}} {{Patrz|artykul_w_bazie_element}}, według kodu:
<syntaxhighlight lang="lua">
---- Bierzemy jego pierwszy element "tab_stare", bo: "artykul_w_bazie_element", jest tabelką;
local artykul_w_bazie=artykul_w_bazie_element[1];
---- Sprawdzamy, czy element, zawiera klucz o nazwie "["LINK"]=true";
local czy_table=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(artykul_w_bazie);
---- Wybieramy w zależnosci, czy to jest tabelka, czy nie bez tego: "["LINK"]=true";
artykul_w_bazie=czy_table and artykul_w_bazie[1] or artykul_w_bazie;
---- Jeżeli ten element jest tabelką i posiada: "["LINK"]=true", to zwracamy pierwszy element, a jeżeli nie to sam element;
local artykul_bez_naglowka_w_bazie=stronicowyparser_potrzebne_modul.TylkoNazwaStronyWoluminuZTabeliPublikacji(artykul_w_bazie);
</syntaxhighlight>
Powyższy kod, zawiera funkcje z: {{Code|{{ld2|StronicowyParser/Potrzebne}}}}, tzn.: {{Code|{{sr|#p.CzyTabelaStronyWoluminuSpisuRzeczy|p=StronicowyParser/Potrzebne}}}}, która sprawdza, czy element jest tabelka, i czy ma klucz: {{Code|LINK}}, wtedy zwraca wartość: {{Code|false}}, w przeciwnym wypadku, zrzuca wynik czy to jest owo (tabelka), i {{Code|{{sr|#p.TylkoNazwaStronyWoluminuZTabeliPublikacji|p=StronicowyParser/Potrzebne}}}}, który sprawdza, czy to jest tabelka, czy posiada klucz: "klucz", a jeżeli tak, to zwraca pierwszy element tej tabeli, a jeżeli nie, to zwraca to nawet, gdy by nie była tabelką, a jak jest nią, to nie posiada klucza: {{Code|LINK}}. Aby zrozumieć te funkcje skorzystaj z definicji: {{Code|tab_stare}} {{Patrz|tab_stare}}, na stronie: {{Code|{{lr|Moduły/StronicowyParser/SpisTreści/Tom I|SpisTreści - Tom I}}}}.
Następnie sprawdzamy, czy to jest ten spis treści zagwarantowany według: {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}, a jeżeli tak, to funkcja zrzucza wartość: {{Code|artykul_bez_naglowka_w_bazie}} {{Patrz|artykul_bez_naglowka_w_bazie}} - jest to nazwa artykułu spisu treści o określonej nazwie bez nagłówka, a jeżeli mimo to nie znaleziono nic, to nic nie zwraca.
=== {{Śródtytuł|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}}{{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} ===
==== Opis funkcji ====
Funkcja zrzuca wynik z jednego spisu rzeczy, którym jest strona główna książki, lub ewentualnie skojarzony z nią, spis, który jest artykuł o nazwie jednych z: {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}, z dokładnością do wielkości znaków. Funkcja też sprawdza stronę z {{s|Układ autonawigacji}}, czyli strony znajdujące się katalogu: {{s|NawigacjaSpecjalna/Nawigacja/}}, tam sprawdza, jakie spisy do niego należą i je liczy, też sprawdza jakie artykuły do niego należą. W ten sposób mamy utworzony spis treści, który po artykułach książki możemy nawigować za pomocą odpowiednich funkcji autonawigacji.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,czy_artykul_korzystany,__FUNKCJA_SPISU_RZECZY,__FUNKCJA_ZBIERANIA_DANYCH)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{Patrz|self}} | _1 = Zmienna obiektowa funkcji.
| 2 = {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} | _2 = Kolejno jak w: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''' i '''nazwa książki'''.
| 3 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _3 = {{Code|true}}, gdy artykuł dany jest korzystamy, czy aktualnie korzystamy z niego za pomocą przeglądarki.
| 4 = {{Code|__FUNKCJA_SPISU_RZECZY}} {{Patrz|__FUNKCJA_SPISU_RZECZY}} | _4 = Funkcja wykorzystywana w: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}, w module: {{Code|{{ld2|StronicowyParser/ZbieranieDanychStron}}}}, jest to funkcja do różnych celu, w tym przypadku służy, to przypisywania, na które wskazuje przekierowanie, danych z przekierowania do strony, którym jest to właśnie przekierowanie.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
__FUNKCJA_SPISU_RZECZY(tekst_rozwiniety_calego_artykulu_ref_spis,nazwa_przestrzeni_ref_spis,nazwa_przestrzeni_ksiazki_ref_spis,nazwa_ksiazki_ref_spis,nazwa_artykulu_ref_spis,tablica_analizy_obiektow_strony_dany_modul_ref_spis,tablica_danych_parametrow_szablonu_strony_ref_spis);
</syntaxhighlight>
Ta funkcja nie zwraca niczego.
| 5 = {{Code|__FUNKCJA_ZBIERANIA_DANYCH}} {{Patrz|__FUNKCJA_ZBIERANIA_DANYCH}} | _5 = {{P|Funkcja opisana w rozdziale: {{Code|{{sr|#p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy|p=StronicowyParser/SpisTreści/Tom I}}}}, w module: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}.}}
{{PobierzŚródtekst|uchwyt=__FUNKCJA_ZBIERANIA_DANYCH|nazwa artykułu=StronicowyParser/SpisTreści/Tom I}}
}}
==== Fukcje lokalne ====
===== {{Śródtytuł|Spis}}{{Code|Spis}} =====
Funkcja służy do ustawiania poszczególnych spisów treści, jeżeli książka ma ich kilka. Ona służy jedynie do jednego spisu, a nie wszystkich razem, tylko oddzielnie.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Spis(tablista_artykulow,spis_tresci,tab_inne_spisy,nazwa_glownego_spisu,numer)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tablista_artykulow}} {{Patrz|tablista_artykulow}} | _1 = Tabela rozdziałów i do nich artykułów.
| 2 = {{Code|spis_tresci}} {{Patrz|spis_tresci}} | _2 = Jeżeli strona nie jest przekierowaniem, to jest wtedy łańcuch znakowy opisujący dany spis, a jeżeli właśnie jest, wtedy jest to tablica, coś w rodzaju {{Code|<nowiki>{przekierowanie_spisu_tresci,spis_tresci,}</nowiki>}}:
| 3 = Wyjaśnienie: | nagłówek3 = tak
| 4 = {{Code|przekierowanie_spisu_tresci}} {{Patrz|przekierowanie_spisu_tresci}} | _4 = Strona spis treści, która jest jednocześnie przekierowaniem.
| 5 = {{Code|spis_treści}} | _5 = Jak w: {{LinkPatrz|spis_tresci}}, tylko, że tylko łańcuch znakowy, na który wskazuje przekierowanie.
| 6 = Inne parametry: | nagłówek6 = tak
| 7 = {{Code|tab_inne_spisy}} {{Patrz|tab_inne_spisy}} | _7 = Tabela innych spisów książki, jeżeli istnieją,
| 8 = {{Code|nazwa_glownego_spisu}} {{Patrz|nazwa_glownego_spisu}} | _8 = Nazwa głównego spisu treści, zwykle jest to strona główna książki.
| 9 = {{Code|numer}} {{Patrz|numer}} | _9 = Numer, który liczmy, do którego dodajemy jeden.
}}
Parametry zwracane:
<syntaxhighlight lang="lua">
return tablista_artykulow,tab_inne_spisy,numer;
</syntaxhighlight>
Opis parametrów zwracanych:
{{OpisParametrów
| 1 = {{Code|tablista_artykulow}} | _1 = Jak w: {{LinkPatrz|tablista_artykulow}}.
| 2 = {{Code|tab_inne_spisy}} | _2 = Jak w: {{LinkPatrz|tab_inne_spisy}}.
| 3 = {{Code|numer}} | _3 = Jak w: {{LinkPatrz|numer}}.
}}
Gdy zmienna: {{Code|tablista_artykulow}} {{LinkPatrz|tablista_artykulow}}, istnieje, i ma niepustą tablicę, wtedy ta funkcja wtedy faktycznie coś robi, w przeciwnym wypadku zwraca tylko wynik.
Liczmy spis treści, na który wskazuje przekierowanie, gdy strona nie jest nim, to sama strona ze wskazania:
<syntaxhighlight lang="lua">
local czy_spis_tresci_table=parametry_modul.TypeTable(spis_tresci);
local spis_tresci_strona=czy_spis_tresci_table and spis_tresci[1] or spis_tresci;
</syntaxhighlight>
Zmienna: {{Code|spis_tresci_strona}}, to jest nic innego jak: {{Code|przekierowanie_spisu_tresci}} {{LinkPatrz|przekierowanie_spisu_tresci}}, lub tylko jest łańcuchem znakowym, według: {{Code|spis_tresci}} {{LinkPatrz|spis_tresci}}.
Policzmy zmienną: {{Code|tab_element}} {{Patrz|tab_element}}:
<syntaxhighlight lang="lua">
local tab_element={[1]={((not spis_tresci) and "Główny spis treści" or ("Spis treści - "..spis_tresci_strona)),{((spis_tresci) and 1 or nil),nil,nil,},["spis"]={spis_tresci_strona or nazwa_glownego_spisu or "",numer}},[2]=nil,[3]=nil,};
</syntaxhighlight>
Jeżeli pierwszy rozdział danego spisu nie ma numeracji, tzn. wtedy liczymy element: {{Code|tablista_artykulow[1][1][2][1]}}, to wtedy jego pozycje artykularne: {{Code|numer > 1}}, zapisujemy na sam koniec w tablicy: {{Code|tab_element}} {{LinkPatrz|tab_element}}. Następnie usuwamy pierwszy rozdział z artykułami przy pomocy funkcji: {{LzLua|table.remove}}.
Poziomy rozdziałów powiększamy o jeden aż do napotkania pierwszego rozdziału centrowanego, wtedy przerywamy pętle.
Następnym podejściem jest dodanie przed pierwsza pozycją elementu: {{Code|tab_element}} {{LinkPatrz|tab_element}}, do tablicy: {{Code|tablista_artykulow}} {{LinkPatrz|tablista_artykulow}}}, przy pomocy funkcji: {{LzLua|table.insert}}.
Jeżeli spis treści: {{Code|spis_tresci}} {{LinkPatrz|spis_tresci}}, istnieje, wtedy robimy dalsze operacje. Jeżeli tablica: {{Code|tab_inne_spisy}} {{LinkPatrz|tab_inne_spisy}}, nie istnieje, to ją tworzymy, wtedy {{Code|spis_tresci}} {{LinkPatrz|spis_tresci}}, przy pomocy: {{LzLua|table.insert}}, dodajemy do: {{Code|tab_inne_spisy}} {{LinkPatrz|tab_inne_spisy}}. Następnie jeżeli nie istnieje element {{Code|tablista_artykulow[1][2]}} {{Patrz|tablista_artykulow[1][2]}}, związany artykułami należącymi do rozdziału, to go tworzymy, wtedy tworzymy element: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, w postaci:
<syntaxhighlight lang="lua">
local tab_stare={czy_spis_tresci_table and {spis_tresci_strona,nil,przekierowanie_strona} or spis_tresci,{0,"","",true,},"[[:"..pelna_nazwa_ksiazki.."/" ..spis_tresci_strona.."]]",false,};
</syntaxhighlight>
To: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, jest opisane w module: {{lr|Moduły/StronicowyParser/SpisTreści/Tom I|Spis treści - Tom I}}.
To dodajemy na pierwszą pozycję do zbioru artykułów, do elementu: {{LinkPatrz|tablista_artykulow[1][2]}}, na pierwszą pozycję, przy pomocy funkcji: {{LzLua|table.insert}}.
Następnym krokiem jest zwracanie przez funkcję zmiennych powyżej powiedzianych.
===== {{Śródtytuł|InneSpisy}}{{Code|InneSpisy}} =====
Funkcja służy do uzyskiwania elementów danego spisu, ustawiania go odpowiedniego i wstawianie go do ogólnego spisu opisujące wszystkie spisy w danej książce.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function InneSpisy(tablista_artykulow,tab_inne_spisy,spis_tresci,numer)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tablista_artykulow}} | _1 = Jak w: {{LinkPatrz|tablista_artykulow}}.
| 2 = {{Code|tab_inne_spisy}} | _2 = Jak w: {{LinkPatrz|tab_inne_spisy}}.
| 3 = {{Code|spis_tresci}} | _3 = Jak w: {{LinkPatrz|spis_tresci}}.
| 4 = {{Code|numer}} | _4 = Jak w: {{LinkPatrz|numer}}.
}}
Uzyskujemy elementy spisu z wywołania dla pojedynczego spisu treści:
<syntaxhighlight lang="lua">
local tablista_artykulow_iter,tablica_licencji,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,spis_tresci,false,nil,__FUNKCJA_ZBIERANIA_DANYCH);
</syntaxhighlight>
Jeżeli zmienna: {{Code|tablista_artykulow_iter}} {{Patrz|tablista_artykulow_iter}} istnieje i jest tablicą, to ją przetwarzamy przy pomocy funkcji: {{LinkŚródtytuł|InneSpisy}}, w sposób:
<syntaxhighlight lang="lua">
tablista_artykulow_iter,tab_inne_spisy,numer=Spis(tablista_artykulow_iter,(not przekierowanie_spisu_tresci)and spis_tresci or {przekierowanie_spisu_tresci,spis_tresci,},tab_inne_spisy,nil,numer);
</syntaxhighlight>
Tak otrzymanną zmienną: {{Code|tablista_artykulow_iter}} {{LinkPatrz|tablista_artykulow_iter}}, iterujemy po elementach wsadzając ją do tablicy na sam koniec: {{Code|tablista_artykulow}} {{LinkPatrz|tablista_artykulow}}, a jak tak tablica nie istnieje, to ją tworzymy z pustą tablicą, i wtedy wykonujemy tą operację. To wsadzanie wykonujemy za pomocą funkcji: {{LzLua|table.insert}}.
Na samym końcu zwracamy wiele elementów:
<syntaxhighlight lang="lua">
return tablista_artykulow,tab_inne_spisy,numer;
</syntaxhighlight>
===== {{Śródtytuł|SpisRzeczy}}{{Code|SpisRzeczy}} =====
Funkcja przygotowuje aktualny spis treści, by dodać do niego nowy spis, jeżeli on istnieje, jako artykuł w spisie o nazwach: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function SpisRzeczy(tabela_artykulow,tab_inne_spisy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tabela_artykulow}} | _1 = Jak w: {{LinkPatrz|tabela_artykulow}}.
| 2 = {{Code|tab_inne_spisy}} | _2 = Jak w: {{LinkPatrz|tab_inne_spisy}}.
}}
Uruchamiamy funkcję: {{LinkŚródtytuł|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}}, która zwraca wynik, który trzeba sprawdzić, czy istnieje, przed dalszymi operacjami, tzn. {{Code|artykul_spisu_rzeczy}} {{Patrz|artykul_spisu_rzeczy}}, uzyskując z aktualnej listy spis treści dla całej książki, jako jego zespołu, na podstawie jego dowiadujemy, ża taki omawiany spis istnieje, wtedy stary spis, czyli stronę główną podręcznika, przygotujemy do tego, do tego robimy funkcją: {{LinkŚródtytuł|Spis}}, wywołaniem, ale przed tymwywołaniem ustawiamy: {{Code|numer {{=}} 1}}, zatem:
<syntaxhighlight lang="lua">
tabela_artykulow,tab_inne_spisy,numer=Spis(tabela_artykulow,nil,tab_inne_spisy,"",numer);
</syntaxhighlight>
Następnym krokiem jest czytanie tego spisu przy pomocy wywołania: {{LinkŚródtytuł|InneSpisy}}, jako:
<syntaxhighlight lang="lua">
tabela_artykulow,tab_inne_spisy,numer=InneSpisy(tabela_artykulow,tab_inne_spisy,artykul_spisu_rzeczy,numer);
</syntaxhighlight>
Funkcja używa zmiennej uzyskanego wcześniej, tzn.: {{Code|artykul_spisu_rzeczy}} {{LinkPatrz|artykul_spisu_rzeczy}}, to jest to samo, co: {{Code|artykul_bez_naglowka_w_bazie}} {{LinkPatrz|artykul_bez_naglowka_w_bazie}}, uzyskanej z funkcji liczący taki spis według: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}, którym wartością jest nazwa artykułu bez nagłówka w bazie.
Wartościami zwracanymi przez funkcję dwie osobne zmienne zrzucane jednocześnie:
<syntaxhighlight lang="lua">
return tabela_artykulow,tab_inne_spisy;
</syntaxhighlight>
Jest to ogólna tabela wszystkich rozdziałów i do nich ich artykułów, i uzupełniona lista innych spisów treści.
===== {{Śródtytuł|IteratorSpisTresci}}{{Code|IteratorSpisTresci}} =====
Funkcja uruchamiająca iterator po spisach treści innych niż spis treści główny, jego definicja:
<syntaxhighlight lang="lua">
local IteratorSpisTresci=function()
local liczba=1;
return function()
local spis_tresci=tabela_parametrow_szablonu_uklad_autonawigacji["spis treści "..liczba];
liczba=liczba+1;
return spis_tresci;
end;
end;
</syntaxhighlight>
Funkcja wykorzystuje tablicę parametrów autonawigacji ze strony ściśle określonej z katalogu stron: {{Code|NawigacjaSpecjalna/Nawigacja/...}} {{LinkPatrz|NawigacjaSpecjalna/Nawigacja/}}, iteruje co jeden numer spisu treści, tzn.: {{Code|spis treści 1}}, {{Code|spis treści 2}},..., {{Code|spis treści N}}, gdzie {{Code|N}}, to największa liczba charakteryzująca dany spis treści. W samym iteratorze liczba: {{Code|liczba}} {{Patrz|liczba-IteratorSpisTresci}}, powiększa się co jeden, aż do zakończenia limitu spisów treści, tzn do najbliżeszej przerwy lub końca przy iteracji, bo na samym końcu iterator zrzuci wynik {{Code|nil}}.
===== {{Śródtytuł|IteratorFun}}{{Code|IteratorFun}} =====
Funkcja iteruje po stronach i ich nazwach, jakie mają być wyświetlane w linkach, generowane przez: {{Code|{{s|Autonawigacja}}}} {{LinkPatrz|Autonawigacja}}, ale na podstawie {{Code|{{s|Układ autonawigacji}}}} {{LinkPatrz|Układ autonawigacji}}, według jednych ze stron: {{Code|NawigacjaSpecjalna/Nawigacja/...}} {{LinkPatrz|NawigacjaSpecjalna/Nawigacja/}}, ustawień.
Definicja skrótowa funkcji i jego funnkcji zwracanej, która jest iteratorem:
<syntaxhighlight lang="lua">
local IteratorFun=function()
... ---- operacje robione przed uruchomieniem iteratora;
return function()
... ---- ciało iteratora
return strona,nazwa; ---- zwracane elementy;
end;
end;
</syntaxhighlight>
Definicja funkcji: {{Code|STRONA}} {{Patrz|STRONA}} i {{Code|NAZWA}} {{Patrz|NAZWA}}, są:
<syntaxhighlight lang="lua">
local STRONA=function(liczba)return liczba*2-1;end;
local NAZWA=function(liczba)return liczba*2;end;
</syntaxhighlight>
W iteratorze dostępna jest zmienna: {{Code|tabela_parametrow_szablonu_uklad_autonawigacji}} {{Patrz|tabela_parametrow_szablonu_uklad_autonawigacji}}, z którego uzyskujemy parametry, te wywołania są napisane w ciele iteratora, w sposób:
<syntaxhighlight lang="lua">
local strona=tabela_parametrow_szablonu_uklad_autonawigacji[STRONA(liczba)];
local nazwa=tabela_parametrow_szablonu_uklad_autonawigacji[NAZWA(liczba)];
</syntaxhighlight>
Iterację zaczynamy od {{Code|liczba}} {{Patrz|liczba-IteratorFun}} od jedynki, po uzyskaniu powyższych wartości, licznik (tą liczbę) powiększamy o jeden, a następnie zwracamy w iteratorze zmienne: {{Code|strona}} {{Patrz|strona}} i {{Code|nazwa}} {{Patrz|nazwa}}.
===== {{Śródtytuł|ZbieranieDanychStronZAutonawigacji}}{{Code|ZbieranieDanychStronZAutonawigacji}} =====
Jest to funkcja do zbierania danych z jednego ze ściśle określonej strony szablonu z: {{Code|NawigacjaSpecjalna/Nawigacja/...}} {{LinkPatrz|NawigacjaSpecjalna/Nawigacja/}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function ZbieranieDanychStronZAutonawigacji()...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = Brak parametrów. | komórka1 = tak
}}
Gdy parametr z iteracji iteratorem: {{Code|iter}}, z którego przy jego kolejnych wywołaniach otrzymujemy parametry: {{Code|strona}} {{LinkPatrz|strona}}, i {{Code|nazwa}} {{LinkPatrz|nazwa}}, dla: {{Code|strona}} {{LinkPatrz|strona}}, jest równy wartości odpowiadającej fałszywej, wtedy funkcja zakańcza pracę. W przeciwnym wypadku te parametry są dekodowane funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, z drugim parametrem: {{Code|true}}, ale nazwa jest dekodowana, gdy ona jest niepusta.
Gdy zmienna: {{Code|dodatkowe_artykuly}} {{LinkPatrz|dodatkowe_artykuly}}, nie istnieje, to wtedy ją tworzymy, inicjując ją pustą tablicą, oraz inicjujemy tabelę artykułów dodatkowych wykorzystując funkcję: {{LzLua|table.insert}}:
<syntaxhighlight lang="lua">
table.insert(tablista_artykulow,{[1]={"Dodatkowe artykuły",{1,nil,nil},["dodatkowe"]="tak",},[2]=nil,});
</syntaxhighlight>
Następnie liczymy parametr dla danego rozdziału, tzn. liczymy: {{Code|tabela_rozdzial_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}, według:
<syntaxhighlight lang="lua">
tabela_rozdzial_artykulow=tablista_artykulow[#tablista_artykulow];
</syntaxhighlight>
Następnie liczyny adres bezwzględny: {{Code|strona}} {{LinkPatrz|strona}} z funkcji: {{Code|{{sr|#p["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]|p=Techniczne}}}}, według wywołania, znająć dwa parametry: {{Code|strona}} {{LinkPatrz|strona}} i {{Code|pelna_nazwa_ksiazki}} {{Patrz|pelna_nazwa_ksiazki}}, czyli:
<syntaxhighlight lang="lua">
strona=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=strona,[2]=pelna_nazwa_ksiazki,};
</syntaxhighlight>
====== {{Śródtytuł|WsadzanieParametryDoTablicy}}{{Code|WsadzanieParametryDoTablicy}} ======
Jest to funkcja wsadzająca elementy do tablicy do funkcji: {{Code|{{sr|#WstawianieElementowychZarejestrowanychStronDoBazyWoluminu|p=StronicowyParser/SpisTreści/Tom I}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local WsadzanieParametryDoTablicy=function(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tabela_rozdzial_artykulow}} {{Patrz|tabela_rozdzial_artykulow}} | _1 = Tabela rozdziału i do niego artykułów.
| 2 = {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{Patrz|numer_rodzaju_artykulow_w_nie_podreczniku}} | _2 = Numer pozycji na którym element zostonie element {{LinkPatrz|tab_stare}} wstawiony.
| 3 = {{Code|tab_stare}} {{LinkPatrz|tab_stare}} | _3 = Wstawiany element.
}}
Jeżeli zmienna: {{Code|dodatkowe_artykuly}} {{Patrz|dodatkowe_artykuly}}, nie istnieje, to jest inicjowana tablicą pustą.
Liczymy adres strony na podstawie:
<syntaxhighlight lang="lua">
---- Jeżeli zmienna jest tablicą i nie ma klucza: "["LINK"]=true", wtedy przyjmuje wartość: true, w przeciwnym wypadku: false;
local czy_table_baza_artykulu=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(tab_stare[1]);
---- Nazwa artykułu lub adres strony, dla ktorej liczymy adres;
local adres=czy_table_baza_artykulu and tab_stare[1][1] or tab_stare[1];
</syntaxhighlight>
Liczymy, czy strona jest w podręczniku, czyli: {{Code|czy_w_podreczniku}} {{Patrz|czy_w_podreczniku}}, ze: {{Code|tab_stare[5]}} {{Patrz|tab_stare[5]}}, a następnie kod języka i projektu, kolejno: {{Code|kod_jezyka_koncowy}} {{Patrz|kod_jezyka_koncowy}}, i {{Code|kod_projektu_koncowy}} {{Patrz|kod_projektu_koncowy}}, jeżeli zmienna: {{Code|czy_table_baza_artykulu}} {{Patrz|czy_table_baza_artykulu}}, jest nie równa wartości prawdziwej, to te zmienne przyjmuje wartość {{Code|nil}}, w przeciwnym wypadku kolejno wartości: {{Code|tab_stare[1][5]}} i {{Code|tab_stare[1][6]}}.
Wsadzamy element do tablicy: {{Code|dodatkowe_artykuly}} {{LinkPatrz|dodatkowe_artykuly}}, przy pomocy funkcji: {{LzLua|table.insert}}, w sposób:
<syntaxhighlight lang="lua">
table.insert(dodatkowe_artykuly,{((adres) and (kod_jezyka_koncowy or kod_projektu_koncowy) and({adres,kod_jezyka_koncowy,kod_projektu_koncowy,}) or adres),nazwa,czy_w_podreczniku,});
</syntaxhighlight>
Póżniej wstawiamy element: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, do: {{Code|tabela_rozdzial_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}, na pozycję: {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, używając wywołania {{LzLua|table.insert}}, czyli:
<syntaxhighlight lang="lua">
table.insert(tabela_rozdzial_artykulow[numer_rodzaju_artykulow_w_nie_podreczniku],tab_stare);
</syntaxhighlight>
====== Dalszy opis funkcji nadrzędnej ======
Dalszym krokiem jest wsadzenie elementu do ogólnej tablicy, a tutaj do artykułu w danym rozdziale, robimy, mając przetwarzaną zmienną: {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}}, to według:
<syntaxhighlight lang="lua">
local numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy;
numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych=WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,WsadzanieParametryDoTablicy,...,...,true,{strona,nazwa,},...,...,...,"",...,...,tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji,tablica_danych_parametrow_szablonu_strony_uklad_autonawigacji,nil,nil,...,--[[]]"*","",false,"[[:"..strona..((parametry_modul.CzyTak(nazwa))and("|"..nazwa) or "").."]]");
</syntaxhighlight>
Powyżej użyto trójkropków: {{Code|...}}, bo te parametry są standardowe dla każdego wywołania.
Powyżej wstawianie odbyło się przy pomocy funkcji: {{LinkŚródtytuł|WsadzanieParametryDoTablicy}}, używając: {{Code|{{sr|#WstawianieElementowychZarejestrowanychStronDoBazyWoluminu|p=StronicowyParser/SpisTreści/Tom I}}}}, w której jest tworzone: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, który natomiast jest wsadzany do ogólnej tablicy rozdziałów i w nich artykułach na odpowiednią pozycję. W wstawianym elemencie ustawiamy stuczną listę z początkiem: {{Code|<nowiki>*</nowiki>}}, z numeracją pusta, i linią artykułu, którą jest link:
<syntaxhighlight lang="lua">
"[[:"..strona..((parametry_modul.CzyTak(nazwa))and("|"..nazwa) or "").."]]"
</syntaxhighlight>
A dalej należy zapoznać się z funkcją przetwarzającą dane przed wsadzeniem do ogólnej tablicy.
==== Dalszy opis funkcji głównej ====
Liczymy adres strony głównej podręcznika: {{Code|pelna_nazwa_ksiazki}} {{LinkPatrz|pelna_nazwa_ksiazki}}, z funkcji: {{Code|{{sr|#m["NazwaModułu"]|p=Nazwy/Tom III}}}}, i sprawdzamy, czy strona istnieje na podstawie funkcji: {{Code|{{sr|#p.PoliczZbiory|p=Techniczne}}}}. Jeśli strona istnieje, wtedy liczymy, czy istnieje jego przekierowanie z funkcji: {{Code|{{sr|#p.PrzekierowanieDoStrony|p=Techniczne}}}},a jeżeli istnieje jego przekierowanie, to wtedy wartość tej funkcją jest stroną na którą wskazuje to przekierowanie, oznaczmy tą zmienną: {{Code|strona_spisu_tresci}} {{Patrz|strona_spisu_tresci}}.
Jeżeli: {{Code|strona_spisu_tresci}} {{LinkPatrz|strona_spisu_tresci}}, istnieje, wtedy jego nazwę dekodujemy funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, z drugim parametrem {{Code|true}}.
Używając tabeli nazw, tzn.: {{Code|tabela_nazw}} {{Patrz|tabela_nazw}}, której przydzielamy wartość pustą, liczymy kolejno: {{Code|nazwa_przestrzeni2}} {{Patrz|nazwa_przestrzeni2}}, {{Code|nazwa_przestrzeni_ksiazki2}} {{Patrz|nazwa_przestrzeni_ksiazki2}} i {{Code|nazwa_ksiazki2}} {{Patrz|nazwa_ksiazki2}}, z następujących funkcji kolejno: {{Code|{{sr|#m.NAZWAPRZESTRZENI|p=Nazwy/Tom II}}}}, {{Code|{{sr|#m["NAZWAPRZESTRZENIKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, albo: {{Code|{{sr|#m["NAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, gdy: {{Code|nazwa_przestrzeni_ksiazki2}} {{LinkPatrz|nazwa_przestrzeni_ksiazki2}}, jest pusta, przeciwnie z: {{Code|{{sr|#m["SUBNAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}. Sprawdzamy, czy one pokrywają się kolejno z: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, i {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki}}, a jeżeli w całości, wtedy sprawdzamay, czy to z {{Code|2}} należą do przestrzeni nazw i niby-przestrzenu nazw książkowych. Przestrzenie ksiązkowe, to: {{Np|(main)|link=tak}}, {{Np|Wikijunior|link=tak}}, oraz {{Np|User|link=tak}}, w niby przestreni nazw: '''{{Np|User|link=tak}}:<użytkownik>/''', i {{Np|Project|link=tak}} w niby-przestrzeni nazw: '''{{Np|Project|link=tak}}:Brudnopis/<użytkownik>/''', jeżeli do tej przestrzeni nie należy, to funkcja kończy się z błędem (z wartością) {{Code|2}}, przeciwnie tworzona jest zmienna {{Code|adres_ksiazki_glownego_spisu_tresci}} {{Patrz|adres_ksiazki_glownego_spisu_tresci}}:
<syntaxhighlight lang="lua">
adres_ksiazki_glownego_spisu_tresci={nazwa_przestrzeni2,nazwa_przestrzeni_ksiazki2,nazwa_ksiazki2,};
</syntaxhighlight>
Także jest tam wywoływana funkcja: {{Code|__FUNKCJA_SPISU_RZECZY}} {{LinkPatrz|__FUNKCJA_SPISU_RZECZY}}, jeśli istnieje:
<syntaxhighlight lang="lua">
local wynik=__FUNKCJA_SPISU_RZECZY and __FUNKCJA_SPISU_RZECZY(nazwa_przestrzeni2,nazwa_przestrzeni_ksiazki2,nazwa_ksiazki2) or nil;
</syntaxhighlight>
Jeżeli ta funkcja nie istnieje, lub zwraca {{Code|nil}} lub nawet {{Code|1}}, wtedy funkcja zakańcza się z błędem: {{Code|1}}, przeciwnie na podstawie tego z {{Code|2}}, jest przyrównywanie tego temu bez tego, wtedy mamy nowe parametry nazw bez {{Code|2}}. I na podstawie tego liczymy nową nazwę: {{Code|pelna_nazwa_ksiazki}} {{LinkPatrz|pelna_nazwa_ksiazki}}.
Liczymy adres ustawień z: {{Code|NawigacjaSpecjalna/Nawigacja/...}} {{LinkPatrz|NawigacjaSpecjalna/Nawigacja/}}, i sprawdzamy, czy on ma przekierowanie z: {{Code|{{sr|#p.PrzekierowanieDoStrony|p=Techniczne}}}}, wtedy ma nowy adres, dalej liczymy jego kod źdrudłowy z funkcji: {{Code|{{sr|#p.WikikodStrony|p=Techniczne}}}}, przy pomocy funkcji:
<syntaxhighlight lang="lua">
local tekst=techniczne_modul.WikikodStrony{["przestrzeń"]="",["nazwa"]=adres_ustawien,};
</syntaxhighlight>
A jeżeli taka strona nie istnieje, wtedy: {{Code|tekst}}, przyjmuje wartość: {{Code|nil}}, wtedy wywołujemy kod pojedynczego spisu treści {{Patrz|pojedyncze_wywolanie}}, czyli strony głównej podręcznika (książki):
<syntaxhighlight lang="lua">
---- Zbieranie parametrów pojedynczego spisu (strony głównej strony jako spisu treści)
local tabela_artykulow,tabela_licencji_spisu_tresci,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"",czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH);
local tab_inne_spisy;
---- Sprawdzanie, czy dodatkowy spis treści istnieje , taki jak: "Spis treści", i przekształcanie tablic otrzymanych z poprzedniego wywołania;
tabela_artykulow,tab_inne_spisy=SpisRzeczy(tabela_artykulow,nil);
---- Zwracanie parametrów;
return tabela_artykulow,tabela_licencji_spisu_tresci,(not przekierowanie_spisu_tresci) and "" or {przekierowanie_spisu_tresci,"",},tab_inne_spisy,nil,adres_ksiazki_glownego_spisu_tresci;
</syntaxhighlight>
Przeciwnie kodujemy ten tekst: {{Code|tekst}} {{Patrz|tekst}}, przy pomocy pustej tabeli: {{Code|tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji}}. Co na podstawie liczmy tego parametry szablonu o: {{Code|obiekt}} {{=}} {{Code|SZABLON}}, w nim o nazwie: {{Code|{{sr|#p.uklad_autonawigacji|p=StronicowyParser/obiekty}}}}, czyli: {{Code|tabela_parametrow_szablonu_uklad_autonawigacji}} {{LinkPatrz|tabela_parametrow_szablonu_uklad_autonawigacji}}, również: {{Code|nazwa_szablonu_uklad_autonawigacji}} {{Patrz|nazwa_szablonu_uklad_autonawigacji}}, i {{Code|tabela_modyfikatorow_uklad_autonawigacji}} {{Patrz|tabela_modyfikatorow_uklad_autonawigacji}}, a także: {{Code|szablon_uklad_autonawigacji}} {{Patrz|szablon_uklad_autonawigacji}}, dalej przerywamy pętle. Jeżeli nie wykryto szablonu autonawigacji, wtedy zakańczamy funkcje jak w punkcie: {{LinkPatrz|pojedyncze_wywolanie}}. A jeżeli nie ma tabeli parametrów szablonu: {{Code|tabela_parametrow_szablonu_uklad_autonawigacji}} {{LinkPatrz|tabela_parametrow_szablonu_uklad_autonawigacji}}, to też podobnie.
A jeżeli chcemy liczyć manualnie, wtedy musimy powiedzieć:
<syntaxhighlight lang="lua">
local automat_manualny=tabela_parametrow_szablonu_uklad_autonawigacji["automat manualny"];
</syntaxhighlight>
Jeżeli wartość tej zmiennej: {{Code|automat_manualny}} {{Patrz|automat_manualny}}, jest nie {{Code|nil}}, i jest niepusta, to ze zmiennej: {{Code|spis treści}} {{Patrz|spis treści}}, liczmy z tego nazwę książki i ona musi się zgadzać ze zmienną: {{Code|pelna_nazwa_ksiazki}} {{LinkPatrz|pelna_nazwa_ksiazki}}, co po zgadzaniu, liczmy nazwę artykułu nazwy artykułu, w przeciwnym wypadku mamy do czynienia ze stroną główną podręcznika, wartość pusta będzie odpowiadała stronie głównej podręcznika, co na sam koniec liczymy:
<syntaxhighlight lang="lua">
---- Zbieranie parametrów pojedynczego o policzoej nazwie artykułu spisu;
local tabela_artykulow,tabela_licencji_spisu_tresci,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,sub_nazwa_spis_tresci,czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH);
---- Sprawdzanie, czy dodatkowy spis treści istnieje , taki jak: "Spis treści", i przekształcanie tablic otrzymanych z poprzedniego wywołania;
tabela_artykulow,tab_inne_spisy=SpisRzeczy(tabela_artykulow,nil);
---- Zwracanie parametrów;
return tabela_artykulow,tabela_licencji_spisu_tresci,(not przekierowanie_spisu_tresci) and sub_nazwa_spis_tresci or {przekierowanie_spisu_tresci,sub_nazwa_spis_tresci,},tab_inne_spisy,nil,adres_ksiazki_glownego_spisu_tresci;
</syntaxhighlight>
Gdy zmienna: {{Code|automat_manualny}} {{LinkPatrz|automat_manualny}}, jest pusta lub nie podana, wtedy następnym krokiem jest odkodowanie parametrów: {{Code|{{s|Układ autonawigacji}}}} {{LinkPatrz|Układ autonawigacji}}, przy pomocy: {{Code|tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji}}, i ich rozwinięcie funkcją: {{LzLua|frame:preprocess}}.
Ustawmy zmienną: {{Code|numer}} {{LinkPatrz|numer}} na wartość {{Code|1}}.
Liczymy zmienne: {{Code|bez spisów treści}} {{Patrz|bez spisów treści}}, i {{Code|bez analizy spisów treści}} {{Patrz|bez analizy spisów treści}}, tabeli parametrów: {{Code|tabela_parametrow_szablonu_uklad_autonawigacji}} {{LinkPatrz|tabela_parametrow_szablonu_uklad_autonawigacji}}, oraz sprawdzamy, czy one są niepuste.
Gdy zmienna: {{Code|bez spisów treści}} {{LinkPatrz|bez spisów treści}}, jest niepodana lub pusta, wtedy liczymy z klucza: {{Code|spis treści}} {{LinkPatrz|spis treści}}, ze zmiennej: {{Code|tabela_parametrow_szablonu_uklad_autonawigacji}} {{LinkPatrz|tabela_parametrow_szablonu_uklad_autonawigacji}}, a jeżeli ta zmienna istnieje, wtedy ją dekodujemy funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, z drugim parametrem {{Code|true}}, i liczymy jego adres bezwzględny z funkcji: {{Code|{{sr|#p["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]|p=Techniczne}}}}, mając względem, którego ma liczyć, tzn.: {{Code|pelna_nazwa_ksiazki}} {{LinkPatrz|pelna_nazwa_ksiazki}}.
Następnie sprawdzamy, czy w policzonym spisie nazwa ksiązki zgadza się z tą: {{Code|pelna_nazwa_ksiazki}} {{LinkPatrz|pelna_nazwa_ksiazki}}, a jeżeli się zgadza, to liczymy nazwę artylułu spisu treści, przeciwnie nazwa artykułu spisu treści ma wartość pustą, wartość pusta nazwy artykułu spisu treści odpowiada stronie głównej podręcznika. W innym wypadku, gdy zmienna: {{Code|bez spisów treści}} {{LinkPatrz|bez spisów treści}} jest niepusta, wtedy tylko uwzględniamy nazwę spisu treści jako stronę główną podręcznika. Tą zmienną jest: {{Code|nazwa_glownego_spisu}} {{LinkPatrz|nazwa_glownego_spisu}}.
Gdy zmienne: {{Code|bez spisów treści}} {{LinkPatrz|bez spisów treści}}, i {{Code|bez analizy spisów treści}} {{LinkPatrz|bez analizy spisów treści}}, są niepodane lub puste, wtedy liczymy pojedynczy artykuł będący spisem treści o nazwie: {{Code|nazwa_glownego_spisu}} {{LinkPatrz|nazwa_glownego_spisu}}, zatem tego wywołanie wygląda tak:
<syntaxhighlight lang="lua">
tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika,tabela_licencji_ksiazek_wedlug_strony_glownej_podrecznika,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_glownego_spisu,czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH);
</syntaxhighlight>
Napiszmy przemianowania zmiennych na: {{Code|tablista_artykulow}} {{LinkPatrz|tablista_artykulow}}, i {{Code|licencja}} {{Patrz|licencja}}, według:
<syntaxhighlight lang="lua">
tablista_artykulow=tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika;
licencja=tabela_licencji_ksiazek_wedlug_strony_glownej_podrecznika;
</syntaxhighlight>
Gdy zmienna: {{Code|przekierowanie_spisu_tresci}} {{LinkPatrz|przekierowanie_spisu_tresci}}, ma wartość odpowiadającej prawidziwej, czyli to pewien łańcuch znakowy, wtedy policzmy {{LinkPatrz|nazwa_glownego_spisu}} dla tego przekierowania:
<syntaxhighlight lang="lua">
nazwa_glownego_spisu={przekierowanie_spisu_tresci,nazwa_glownego_spisu,};
</syntaxhighlight>
Jeśli wartość: {{Code|tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika}} {{Patrz|tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika}}, jest {{Code|nil}}, lub {{Code|0}}, wtedy funkcja jest zakańczana w sposób:
<syntaxhighlight lang="lua">
return tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika;
</syntaxhighlight>
Lub przeciwnie, liczymy spis treści odpowiadającym wartością tabeli: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}, zatem to policzmy, czy tak jest, schematycznie:
<syntaxhighlight lang="lua">
---- Przygotowanie spisu do wielu spisów treści;
tablista_artykulow,tab_inne_spisy,numer=Spis(tablista_artykulow,nil,tab_inne_spisy,nazwa_glownego_spisu,numer);
---- Liczenie czy jest artykuł w spisie treści o nazwie typu: "Spis treści";
local artykul_spisu_rzeczy=p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku(tablista_artykulow);
if(artykul_spisu_rzeczy)then
---- Dodaje spis nowy do większego spisu, ten wykryty zaraz powyższą funkcją;
tabela_artykulow,tab_inne_spisy,numer=InneSpisy(tablista_artykulow,tab_inne_spisy,artykul_spisu_rzeczy,numer);
end;
</syntaxhighlight>
Uruchamiamy iterator: {{Code|iter}} {{Patrz|iter}}, z funkcji: {{LinkŚródtytuł|IteratorSpisTresci}}, bez parametrów, zdefiniowanej w tym bloku, co jest ta iteracja, wtedy możemy je iterować po spisie treści w sposób:
<syntaxhighlight lang="lua">
for spis_tresci in iter do
.... ---- ciało iterowanej pętli;
end;
</syntaxhighlight>
Każdy tak uzyskany: {{Code|spis_treści}} {{LinkPatrz|spis_treści}}, dekodujemy funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, następnie rozwijamy adres względny na bezwzględny względem korzenia drzewa przestrzeni nazw z funkcji: {{Code|{{sr|#p["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]|p=Techniczne}}}}, i dodajemy te spisy do głównego drzewa tablicy rozdziałów i ich artykułów przy pomocy funkcji: {{LinkŚródtytuł|InneSpisy}}, właśnie tak:
<syntaxhighlight lang="lua">
tablista_artykulow,tab_inne_spisy,numer=InneSpisy(tablista_artykulow,tab_inne_spisy,spis_tresci,numer);
</syntaxhighlight>
Uruchomimy inny iterator: {{Code|iter}} {{LinkPatrz|iter}}, z funkcji: {{LinkŚródtytuł|IteratorFun}}, wywołanej bezparametrowo, wtedy iterację możemy napisać wykorzystujac funkcję: {{LinkŚródtytuł|ZbieranieDanychStronZAutonawigacji}}, zdefiniowanej w tej pętli, działającą tak:
<syntaxhighlight lang="lua">
for strona,nazwa in iter do
... ---- definicja funkcji: ZbieranieDanychStronZAutonawigacji;
ZbieranieDanychStronZAutonawigacji();
end;
</syntaxhighlight>
Funkcja w nagłówku zwraca wielowartościowy, wtedy wynik na samym końcu zakończenia jej jest:
<syntaxhighlight lang="lua">
return tablista_artykulow,licencja,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,adres_ksiazki_glownego_spisu_tresci;
</syntaxhighlight>
; Opis zwracanych parametrów{{dk}}
{{OpisParametrów
| 1 = {{Code|tablista_artykulow}} | _1 = Jak w: {{LinkPatrz|tablista_artykulow}}.
| 2 = {{Code|licencja}} | _2 = Jak w: {{LinkPatrz|licencja}}.
| 3 = {{Code|nazwa_glownego_spisu}} | _3 = Jak w: {{LinkPatrz|nazwa_glownego_spisu}}.
| 4 = {{Code|tab_inne_spisy}} | _4 = Jak w: {{LinkPatrz|tab_inne_spisy}}.
| 5 = {{Code|dodatkowe_artykuly}} | _5 = Jak w: {{LinkPatrz|dodatkowe_artykuly}}.
| 6 = {{Code|adres_ksiazki_glownego_spisu_tresci}} | _6 = Jak w: {{LinkPatrz|adres_ksiazki_glownego_spisu_tresci}}.
}}
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
eaq3e74aqvwbage2wig4timnmsrtmuw
558345
558344
2026-10-02T19:06:19Z
Persino
2851
/* Opis funkcji */
558345
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SpisTreści}}|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.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}}{{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} ===
Funkcja sprawdzająca, czy na stronie z głównym spisem treści lub w innych spisach treści podanych w: {{s|Układ autonawigacji}} {{Patrz|Układ autonawigacji}}, na jednych ze stron: {{s|NawigacjaSpecjalna/Nawigacja/}} {{Patrz|NawigacjaSpecjalna/Nawigacja/}} (te ustawienia są wykorzystywane przez: {{s|Autonawigacja}} {{Patrz|Autonawigacja}}), dotyczącej danej książki, znajduje się artykuł o nazwie znajduje, z dokładnością do wielkości liter, artykuły o nazwach według tabeli: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}}} {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={
["spis treści"]=true,
["spis tresci"]=true,
["spis rzeczy"]=true,
};
</syntaxhighlight>
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku(tabela_artykulow)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tabela_artykulow}} | _1 = Tabela wielowymiarowa rozdziałów i do nich artykułów.
}}
Kopia tej tabeli jest połączona z metatabelką: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=StronicowyParser/obiekty}}}} {{Patrz|p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter}}, przy pomocy funkcji: {{LzLua|setmetatable}}.
Iterujemy dla elementach tabeli: {{Code|tabela_artykulow}} {{Patrz|tabela_artykulow}}, a póżniej sprawdzamy, czy artykuł znajduje się w dozwolonych rozdziałach jako artykuły książki: {{Code|tab_lista[2]}} {{Patrz|tab_lista[2]}}, iterując po jego elementach, wtedy jednych z jego wartości, o pewnym numerze, bierzemy element: {{Code|artykul_w_bazie_element}} {{Patrz|artykul_w_bazie_element}}, według kodu:
<syntaxhighlight lang="lua">
---- Bierzemy jego pierwszy element "tab_stare", bo: "artykul_w_bazie_element", jest tabelką;
local artykul_w_bazie=artykul_w_bazie_element[1];
---- Sprawdzamy, czy element, zawiera klucz o nazwie "["LINK"]=true";
local czy_table=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(artykul_w_bazie);
---- Wybieramy w zależnosci, czy to jest tabelka, czy nie bez tego: "["LINK"]=true";
artykul_w_bazie=czy_table and artykul_w_bazie[1] or artykul_w_bazie;
---- Jeżeli ten element jest tabelką i posiada: "["LINK"]=true", to zwracamy pierwszy element, a jeżeli nie to sam element;
local artykul_bez_naglowka_w_bazie=stronicowyparser_potrzebne_modul.TylkoNazwaStronyWoluminuZTabeliPublikacji(artykul_w_bazie);
</syntaxhighlight>
Powyższy kod, zawiera funkcje z: {{Code|{{ld2|StronicowyParser/Potrzebne}}}}, tzn.: {{Code|{{sr|#p.CzyTabelaStronyWoluminuSpisuRzeczy|p=StronicowyParser/Potrzebne}}}}, która sprawdza, czy element jest tabelka, i czy ma klucz: {{Code|LINK}}, wtedy zwraca wartość: {{Code|false}}, w przeciwnym wypadku, zrzuca wynik czy to jest owo (tabelka), i {{Code|{{sr|#p.TylkoNazwaStronyWoluminuZTabeliPublikacji|p=StronicowyParser/Potrzebne}}}}, który sprawdza, czy to jest tabelka, czy posiada klucz: "klucz", a jeżeli tak, to zwraca pierwszy element tej tabeli, a jeżeli nie, to zwraca to nawet, gdy by nie była tabelką, a jak jest nią, to nie posiada klucza: {{Code|LINK}}. Aby zrozumieć te funkcje skorzystaj z definicji: {{Code|tab_stare}} {{Patrz|tab_stare}}, na stronie: {{Code|{{lr|Moduły/StronicowyParser/SpisTreści/Tom I|SpisTreści - Tom I}}}}.
Następnie sprawdzamy, czy to jest ten spis treści zagwarantowany według: {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}, a jeżeli tak, to funkcja zrzucza wartość: {{Code|artykul_bez_naglowka_w_bazie}} {{Patrz|artykul_bez_naglowka_w_bazie}} - jest to nazwa artykułu spisu treści o określonej nazwie bez nagłówka, a jeżeli mimo to nie znaleziono nic, to nic nie zwraca.
=== {{Śródtytuł|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}}{{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} ===
==== Opis funkcji ====
Funkcja zrzuca wynik z jednego spisu rzeczy, którym jest strona główna książki, lub ewentualnie skojarzony z nią, spis, który jest artykuł o nazwie jednych z: {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}, z dokładnością do wielkości znaków. Funkcja też sprawdza stronę z {{s|Układ autonawigacji}}, czyli strony znajdujące się katalogu: {{s|NawigacjaSpecjalna/Nawigacja/}}, tam sprawdza, jakie spisy do niego należą i je liczy, też sprawdza jakie artykuły do niego należą. W ten sposób mamy utworzony spis treści, który po artykułach książki możemy nawigować za pomocą odpowiednich funkcji autonawigacji.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,czy_artykul_korzystany,__FUNKCJA_SPISU_RZECZY,__FUNKCJA_ZBIERANIA_DANYCH)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{Patrz|self}} | _1 = Zmienna obiektowa funkcji.
| 2 = {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} | _2 = Kolejno jak w: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''' i '''nazwa książki'''.
| 3 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _3 = {{Code|true}}, gdy artykuł dany jest korzystamy, czy aktualnie korzystamy z niego za pomocą przeglądarki.
| 4 = {{Code|__FUNKCJA_SPISU_RZECZY}} {{Patrz|__FUNKCJA_SPISU_RZECZY}} | _4 =
{{Śródtekst|uchwyt=__FUNKCJA_SPISU_RZECZY|tekst=
Funkcja wykorzystywana w: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}, w module: {{Code|{{ld2|StronicowyParser/ZbieranieDanychStron}}}}, jest to funkcja do różnych celu, w tym przypadku służy, to przypisywania, na które wskazuje przekierowanie, danych z przekierowania do strony, którym jest to właśnie przekierowanie.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
__FUNKCJA_SPISU_RZECZY(tekst_rozwiniety_calego_artykulu_ref_spis,nazwa_przestrzeni_ref_spis,nazwa_przestrzeni_ksiazki_ref_spis,nazwa_ksiazki_ref_spis,nazwa_artykulu_ref_spis,tablica_analizy_obiektow_strony_dany_modul_ref_spis,tablica_danych_parametrow_szablonu_strony_ref_spis);
</syntaxhighlight>
Ta funkcja nie zwraca niczego.
}}
| 5 = {{Code|__FUNKCJA_ZBIERANIA_DANYCH}} {{Patrz|__FUNKCJA_ZBIERANIA_DANYCH}} | _5 = {{P|Funkcja opisana w rozdziale: {{Code|{{sr|#p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy|p=StronicowyParser/SpisTreści/Tom I}}}}, w module: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}.}}
{{PobierzŚródtekst|uchwyt=__FUNKCJA_ZBIERANIA_DANYCH|nazwa artykułu=StronicowyParser/SpisTreści/Tom I}}
}}
==== Fukcje lokalne ====
===== {{Śródtytuł|Spis}}{{Code|Spis}} =====
Funkcja służy do ustawiania poszczególnych spisów treści, jeżeli książka ma ich kilka. Ona służy jedynie do jednego spisu, a nie wszystkich razem, tylko oddzielnie.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Spis(tablista_artykulow,spis_tresci,tab_inne_spisy,nazwa_glownego_spisu,numer)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tablista_artykulow}} {{Patrz|tablista_artykulow}} | _1 = Tabela rozdziałów i do nich artykułów.
| 2 = {{Code|spis_tresci}} {{Patrz|spis_tresci}} | _2 = Jeżeli strona nie jest przekierowaniem, to jest wtedy łańcuch znakowy opisujący dany spis, a jeżeli właśnie jest, wtedy jest to tablica, coś w rodzaju {{Code|<nowiki>{przekierowanie_spisu_tresci,spis_tresci,}</nowiki>}}:
| 3 = Wyjaśnienie: | nagłówek3 = tak
| 4 = {{Code|przekierowanie_spisu_tresci}} {{Patrz|przekierowanie_spisu_tresci}} | _4 = Strona spis treści, która jest jednocześnie przekierowaniem.
| 5 = {{Code|spis_treści}} | _5 = Jak w: {{LinkPatrz|spis_tresci}}, tylko, że tylko łańcuch znakowy, na który wskazuje przekierowanie.
| 6 = Inne parametry: | nagłówek6 = tak
| 7 = {{Code|tab_inne_spisy}} {{Patrz|tab_inne_spisy}} | _7 = Tabela innych spisów książki, jeżeli istnieją,
| 8 = {{Code|nazwa_glownego_spisu}} {{Patrz|nazwa_glownego_spisu}} | _8 = Nazwa głównego spisu treści, zwykle jest to strona główna książki.
| 9 = {{Code|numer}} {{Patrz|numer}} | _9 = Numer, który liczmy, do którego dodajemy jeden.
}}
Parametry zwracane:
<syntaxhighlight lang="lua">
return tablista_artykulow,tab_inne_spisy,numer;
</syntaxhighlight>
Opis parametrów zwracanych:
{{OpisParametrów
| 1 = {{Code|tablista_artykulow}} | _1 = Jak w: {{LinkPatrz|tablista_artykulow}}.
| 2 = {{Code|tab_inne_spisy}} | _2 = Jak w: {{LinkPatrz|tab_inne_spisy}}.
| 3 = {{Code|numer}} | _3 = Jak w: {{LinkPatrz|numer}}.
}}
Gdy zmienna: {{Code|tablista_artykulow}} {{LinkPatrz|tablista_artykulow}}, istnieje, i ma niepustą tablicę, wtedy ta funkcja wtedy faktycznie coś robi, w przeciwnym wypadku zwraca tylko wynik.
Liczmy spis treści, na który wskazuje przekierowanie, gdy strona nie jest nim, to sama strona ze wskazania:
<syntaxhighlight lang="lua">
local czy_spis_tresci_table=parametry_modul.TypeTable(spis_tresci);
local spis_tresci_strona=czy_spis_tresci_table and spis_tresci[1] or spis_tresci;
</syntaxhighlight>
Zmienna: {{Code|spis_tresci_strona}}, to jest nic innego jak: {{Code|przekierowanie_spisu_tresci}} {{LinkPatrz|przekierowanie_spisu_tresci}}, lub tylko jest łańcuchem znakowym, według: {{Code|spis_tresci}} {{LinkPatrz|spis_tresci}}.
Policzmy zmienną: {{Code|tab_element}} {{Patrz|tab_element}}:
<syntaxhighlight lang="lua">
local tab_element={[1]={((not spis_tresci) and "Główny spis treści" or ("Spis treści - "..spis_tresci_strona)),{((spis_tresci) and 1 or nil),nil,nil,},["spis"]={spis_tresci_strona or nazwa_glownego_spisu or "",numer}},[2]=nil,[3]=nil,};
</syntaxhighlight>
Jeżeli pierwszy rozdział danego spisu nie ma numeracji, tzn. wtedy liczymy element: {{Code|tablista_artykulow[1][1][2][1]}}, to wtedy jego pozycje artykularne: {{Code|numer > 1}}, zapisujemy na sam koniec w tablicy: {{Code|tab_element}} {{LinkPatrz|tab_element}}. Następnie usuwamy pierwszy rozdział z artykułami przy pomocy funkcji: {{LzLua|table.remove}}.
Poziomy rozdziałów powiększamy o jeden aż do napotkania pierwszego rozdziału centrowanego, wtedy przerywamy pętle.
Następnym podejściem jest dodanie przed pierwsza pozycją elementu: {{Code|tab_element}} {{LinkPatrz|tab_element}}, do tablicy: {{Code|tablista_artykulow}} {{LinkPatrz|tablista_artykulow}}}, przy pomocy funkcji: {{LzLua|table.insert}}.
Jeżeli spis treści: {{Code|spis_tresci}} {{LinkPatrz|spis_tresci}}, istnieje, wtedy robimy dalsze operacje. Jeżeli tablica: {{Code|tab_inne_spisy}} {{LinkPatrz|tab_inne_spisy}}, nie istnieje, to ją tworzymy, wtedy {{Code|spis_tresci}} {{LinkPatrz|spis_tresci}}, przy pomocy: {{LzLua|table.insert}}, dodajemy do: {{Code|tab_inne_spisy}} {{LinkPatrz|tab_inne_spisy}}. Następnie jeżeli nie istnieje element {{Code|tablista_artykulow[1][2]}} {{Patrz|tablista_artykulow[1][2]}}, związany artykułami należącymi do rozdziału, to go tworzymy, wtedy tworzymy element: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, w postaci:
<syntaxhighlight lang="lua">
local tab_stare={czy_spis_tresci_table and {spis_tresci_strona,nil,przekierowanie_strona} or spis_tresci,{0,"","",true,},"[[:"..pelna_nazwa_ksiazki.."/" ..spis_tresci_strona.."]]",false,};
</syntaxhighlight>
To: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, jest opisane w module: {{lr|Moduły/StronicowyParser/SpisTreści/Tom I|Spis treści - Tom I}}.
To dodajemy na pierwszą pozycję do zbioru artykułów, do elementu: {{LinkPatrz|tablista_artykulow[1][2]}}, na pierwszą pozycję, przy pomocy funkcji: {{LzLua|table.insert}}.
Następnym krokiem jest zwracanie przez funkcję zmiennych powyżej powiedzianych.
===== {{Śródtytuł|InneSpisy}}{{Code|InneSpisy}} =====
Funkcja służy do uzyskiwania elementów danego spisu, ustawiania go odpowiedniego i wstawianie go do ogólnego spisu opisujące wszystkie spisy w danej książce.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function InneSpisy(tablista_artykulow,tab_inne_spisy,spis_tresci,numer)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tablista_artykulow}} | _1 = Jak w: {{LinkPatrz|tablista_artykulow}}.
| 2 = {{Code|tab_inne_spisy}} | _2 = Jak w: {{LinkPatrz|tab_inne_spisy}}.
| 3 = {{Code|spis_tresci}} | _3 = Jak w: {{LinkPatrz|spis_tresci}}.
| 4 = {{Code|numer}} | _4 = Jak w: {{LinkPatrz|numer}}.
}}
Uzyskujemy elementy spisu z wywołania dla pojedynczego spisu treści:
<syntaxhighlight lang="lua">
local tablista_artykulow_iter,tablica_licencji,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,spis_tresci,false,nil,__FUNKCJA_ZBIERANIA_DANYCH);
</syntaxhighlight>
Jeżeli zmienna: {{Code|tablista_artykulow_iter}} {{Patrz|tablista_artykulow_iter}} istnieje i jest tablicą, to ją przetwarzamy przy pomocy funkcji: {{LinkŚródtytuł|InneSpisy}}, w sposób:
<syntaxhighlight lang="lua">
tablista_artykulow_iter,tab_inne_spisy,numer=Spis(tablista_artykulow_iter,(not przekierowanie_spisu_tresci)and spis_tresci or {przekierowanie_spisu_tresci,spis_tresci,},tab_inne_spisy,nil,numer);
</syntaxhighlight>
Tak otrzymanną zmienną: {{Code|tablista_artykulow_iter}} {{LinkPatrz|tablista_artykulow_iter}}, iterujemy po elementach wsadzając ją do tablicy na sam koniec: {{Code|tablista_artykulow}} {{LinkPatrz|tablista_artykulow}}, a jak tak tablica nie istnieje, to ją tworzymy z pustą tablicą, i wtedy wykonujemy tą operację. To wsadzanie wykonujemy za pomocą funkcji: {{LzLua|table.insert}}.
Na samym końcu zwracamy wiele elementów:
<syntaxhighlight lang="lua">
return tablista_artykulow,tab_inne_spisy,numer;
</syntaxhighlight>
===== {{Śródtytuł|SpisRzeczy}}{{Code|SpisRzeczy}} =====
Funkcja przygotowuje aktualny spis treści, by dodać do niego nowy spis, jeżeli on istnieje, jako artykuł w spisie o nazwach: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function SpisRzeczy(tabela_artykulow,tab_inne_spisy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tabela_artykulow}} | _1 = Jak w: {{LinkPatrz|tabela_artykulow}}.
| 2 = {{Code|tab_inne_spisy}} | _2 = Jak w: {{LinkPatrz|tab_inne_spisy}}.
}}
Uruchamiamy funkcję: {{LinkŚródtytuł|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}}, która zwraca wynik, który trzeba sprawdzić, czy istnieje, przed dalszymi operacjami, tzn. {{Code|artykul_spisu_rzeczy}} {{Patrz|artykul_spisu_rzeczy}}, uzyskując z aktualnej listy spis treści dla całej książki, jako jego zespołu, na podstawie jego dowiadujemy, ża taki omawiany spis istnieje, wtedy stary spis, czyli stronę główną podręcznika, przygotujemy do tego, do tego robimy funkcją: {{LinkŚródtytuł|Spis}}, wywołaniem, ale przed tymwywołaniem ustawiamy: {{Code|numer {{=}} 1}}, zatem:
<syntaxhighlight lang="lua">
tabela_artykulow,tab_inne_spisy,numer=Spis(tabela_artykulow,nil,tab_inne_spisy,"",numer);
</syntaxhighlight>
Następnym krokiem jest czytanie tego spisu przy pomocy wywołania: {{LinkŚródtytuł|InneSpisy}}, jako:
<syntaxhighlight lang="lua">
tabela_artykulow,tab_inne_spisy,numer=InneSpisy(tabela_artykulow,tab_inne_spisy,artykul_spisu_rzeczy,numer);
</syntaxhighlight>
Funkcja używa zmiennej uzyskanego wcześniej, tzn.: {{Code|artykul_spisu_rzeczy}} {{LinkPatrz|artykul_spisu_rzeczy}}, to jest to samo, co: {{Code|artykul_bez_naglowka_w_bazie}} {{LinkPatrz|artykul_bez_naglowka_w_bazie}}, uzyskanej z funkcji liczący taki spis według: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}, którym wartością jest nazwa artykułu bez nagłówka w bazie.
Wartościami zwracanymi przez funkcję dwie osobne zmienne zrzucane jednocześnie:
<syntaxhighlight lang="lua">
return tabela_artykulow,tab_inne_spisy;
</syntaxhighlight>
Jest to ogólna tabela wszystkich rozdziałów i do nich ich artykułów, i uzupełniona lista innych spisów treści.
===== {{Śródtytuł|IteratorSpisTresci}}{{Code|IteratorSpisTresci}} =====
Funkcja uruchamiająca iterator po spisach treści innych niż spis treści główny, jego definicja:
<syntaxhighlight lang="lua">
local IteratorSpisTresci=function()
local liczba=1;
return function()
local spis_tresci=tabela_parametrow_szablonu_uklad_autonawigacji["spis treści "..liczba];
liczba=liczba+1;
return spis_tresci;
end;
end;
</syntaxhighlight>
Funkcja wykorzystuje tablicę parametrów autonawigacji ze strony ściśle określonej z katalogu stron: {{Code|NawigacjaSpecjalna/Nawigacja/...}} {{LinkPatrz|NawigacjaSpecjalna/Nawigacja/}}, iteruje co jeden numer spisu treści, tzn.: {{Code|spis treści 1}}, {{Code|spis treści 2}},..., {{Code|spis treści N}}, gdzie {{Code|N}}, to największa liczba charakteryzująca dany spis treści. W samym iteratorze liczba: {{Code|liczba}} {{Patrz|liczba-IteratorSpisTresci}}, powiększa się co jeden, aż do zakończenia limitu spisów treści, tzn do najbliżeszej przerwy lub końca przy iteracji, bo na samym końcu iterator zrzuci wynik {{Code|nil}}.
===== {{Śródtytuł|IteratorFun}}{{Code|IteratorFun}} =====
Funkcja iteruje po stronach i ich nazwach, jakie mają być wyświetlane w linkach, generowane przez: {{Code|{{s|Autonawigacja}}}} {{LinkPatrz|Autonawigacja}}, ale na podstawie {{Code|{{s|Układ autonawigacji}}}} {{LinkPatrz|Układ autonawigacji}}, według jednych ze stron: {{Code|NawigacjaSpecjalna/Nawigacja/...}} {{LinkPatrz|NawigacjaSpecjalna/Nawigacja/}}, ustawień.
Definicja skrótowa funkcji i jego funnkcji zwracanej, która jest iteratorem:
<syntaxhighlight lang="lua">
local IteratorFun=function()
... ---- operacje robione przed uruchomieniem iteratora;
return function()
... ---- ciało iteratora
return strona,nazwa; ---- zwracane elementy;
end;
end;
</syntaxhighlight>
Definicja funkcji: {{Code|STRONA}} {{Patrz|STRONA}} i {{Code|NAZWA}} {{Patrz|NAZWA}}, są:
<syntaxhighlight lang="lua">
local STRONA=function(liczba)return liczba*2-1;end;
local NAZWA=function(liczba)return liczba*2;end;
</syntaxhighlight>
W iteratorze dostępna jest zmienna: {{Code|tabela_parametrow_szablonu_uklad_autonawigacji}} {{Patrz|tabela_parametrow_szablonu_uklad_autonawigacji}}, z którego uzyskujemy parametry, te wywołania są napisane w ciele iteratora, w sposób:
<syntaxhighlight lang="lua">
local strona=tabela_parametrow_szablonu_uklad_autonawigacji[STRONA(liczba)];
local nazwa=tabela_parametrow_szablonu_uklad_autonawigacji[NAZWA(liczba)];
</syntaxhighlight>
Iterację zaczynamy od {{Code|liczba}} {{Patrz|liczba-IteratorFun}} od jedynki, po uzyskaniu powyższych wartości, licznik (tą liczbę) powiększamy o jeden, a następnie zwracamy w iteratorze zmienne: {{Code|strona}} {{Patrz|strona}} i {{Code|nazwa}} {{Patrz|nazwa}}.
===== {{Śródtytuł|ZbieranieDanychStronZAutonawigacji}}{{Code|ZbieranieDanychStronZAutonawigacji}} =====
Jest to funkcja do zbierania danych z jednego ze ściśle określonej strony szablonu z: {{Code|NawigacjaSpecjalna/Nawigacja/...}} {{LinkPatrz|NawigacjaSpecjalna/Nawigacja/}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function ZbieranieDanychStronZAutonawigacji()...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = Brak parametrów. | komórka1 = tak
}}
Gdy parametr z iteracji iteratorem: {{Code|iter}}, z którego przy jego kolejnych wywołaniach otrzymujemy parametry: {{Code|strona}} {{LinkPatrz|strona}}, i {{Code|nazwa}} {{LinkPatrz|nazwa}}, dla: {{Code|strona}} {{LinkPatrz|strona}}, jest równy wartości odpowiadającej fałszywej, wtedy funkcja zakańcza pracę. W przeciwnym wypadku te parametry są dekodowane funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, z drugim parametrem: {{Code|true}}, ale nazwa jest dekodowana, gdy ona jest niepusta.
Gdy zmienna: {{Code|dodatkowe_artykuly}} {{LinkPatrz|dodatkowe_artykuly}}, nie istnieje, to wtedy ją tworzymy, inicjując ją pustą tablicą, oraz inicjujemy tabelę artykułów dodatkowych wykorzystując funkcję: {{LzLua|table.insert}}:
<syntaxhighlight lang="lua">
table.insert(tablista_artykulow,{[1]={"Dodatkowe artykuły",{1,nil,nil},["dodatkowe"]="tak",},[2]=nil,});
</syntaxhighlight>
Następnie liczymy parametr dla danego rozdziału, tzn. liczymy: {{Code|tabela_rozdzial_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}, według:
<syntaxhighlight lang="lua">
tabela_rozdzial_artykulow=tablista_artykulow[#tablista_artykulow];
</syntaxhighlight>
Następnie liczyny adres bezwzględny: {{Code|strona}} {{LinkPatrz|strona}} z funkcji: {{Code|{{sr|#p["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]|p=Techniczne}}}}, według wywołania, znająć dwa parametry: {{Code|strona}} {{LinkPatrz|strona}} i {{Code|pelna_nazwa_ksiazki}} {{Patrz|pelna_nazwa_ksiazki}}, czyli:
<syntaxhighlight lang="lua">
strona=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=strona,[2]=pelna_nazwa_ksiazki,};
</syntaxhighlight>
====== {{Śródtytuł|WsadzanieParametryDoTablicy}}{{Code|WsadzanieParametryDoTablicy}} ======
Jest to funkcja wsadzająca elementy do tablicy do funkcji: {{Code|{{sr|#WstawianieElementowychZarejestrowanychStronDoBazyWoluminu|p=StronicowyParser/SpisTreści/Tom I}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local WsadzanieParametryDoTablicy=function(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tabela_rozdzial_artykulow}} {{Patrz|tabela_rozdzial_artykulow}} | _1 = Tabela rozdziału i do niego artykułów.
| 2 = {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{Patrz|numer_rodzaju_artykulow_w_nie_podreczniku}} | _2 = Numer pozycji na którym element zostonie element {{LinkPatrz|tab_stare}} wstawiony.
| 3 = {{Code|tab_stare}} {{LinkPatrz|tab_stare}} | _3 = Wstawiany element.
}}
Jeżeli zmienna: {{Code|dodatkowe_artykuly}} {{Patrz|dodatkowe_artykuly}}, nie istnieje, to jest inicjowana tablicą pustą.
Liczymy adres strony na podstawie:
<syntaxhighlight lang="lua">
---- Jeżeli zmienna jest tablicą i nie ma klucza: "["LINK"]=true", wtedy przyjmuje wartość: true, w przeciwnym wypadku: false;
local czy_table_baza_artykulu=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(tab_stare[1]);
---- Nazwa artykułu lub adres strony, dla ktorej liczymy adres;
local adres=czy_table_baza_artykulu and tab_stare[1][1] or tab_stare[1];
</syntaxhighlight>
Liczymy, czy strona jest w podręczniku, czyli: {{Code|czy_w_podreczniku}} {{Patrz|czy_w_podreczniku}}, ze: {{Code|tab_stare[5]}} {{Patrz|tab_stare[5]}}, a następnie kod języka i projektu, kolejno: {{Code|kod_jezyka_koncowy}} {{Patrz|kod_jezyka_koncowy}}, i {{Code|kod_projektu_koncowy}} {{Patrz|kod_projektu_koncowy}}, jeżeli zmienna: {{Code|czy_table_baza_artykulu}} {{Patrz|czy_table_baza_artykulu}}, jest nie równa wartości prawdziwej, to te zmienne przyjmuje wartość {{Code|nil}}, w przeciwnym wypadku kolejno wartości: {{Code|tab_stare[1][5]}} i {{Code|tab_stare[1][6]}}.
Wsadzamy element do tablicy: {{Code|dodatkowe_artykuly}} {{LinkPatrz|dodatkowe_artykuly}}, przy pomocy funkcji: {{LzLua|table.insert}}, w sposób:
<syntaxhighlight lang="lua">
table.insert(dodatkowe_artykuly,{((adres) and (kod_jezyka_koncowy or kod_projektu_koncowy) and({adres,kod_jezyka_koncowy,kod_projektu_koncowy,}) or adres),nazwa,czy_w_podreczniku,});
</syntaxhighlight>
Póżniej wstawiamy element: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, do: {{Code|tabela_rozdzial_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}, na pozycję: {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, używając wywołania {{LzLua|table.insert}}, czyli:
<syntaxhighlight lang="lua">
table.insert(tabela_rozdzial_artykulow[numer_rodzaju_artykulow_w_nie_podreczniku],tab_stare);
</syntaxhighlight>
====== Dalszy opis funkcji nadrzędnej ======
Dalszym krokiem jest wsadzenie elementu do ogólnej tablicy, a tutaj do artykułu w danym rozdziale, robimy, mając przetwarzaną zmienną: {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}}, to według:
<syntaxhighlight lang="lua">
local numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy;
numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych=WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,WsadzanieParametryDoTablicy,...,...,true,{strona,nazwa,},...,...,...,"",...,...,tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji,tablica_danych_parametrow_szablonu_strony_uklad_autonawigacji,nil,nil,...,--[[]]"*","",false,"[[:"..strona..((parametry_modul.CzyTak(nazwa))and("|"..nazwa) or "").."]]");
</syntaxhighlight>
Powyżej użyto trójkropków: {{Code|...}}, bo te parametry są standardowe dla każdego wywołania.
Powyżej wstawianie odbyło się przy pomocy funkcji: {{LinkŚródtytuł|WsadzanieParametryDoTablicy}}, używając: {{Code|{{sr|#WstawianieElementowychZarejestrowanychStronDoBazyWoluminu|p=StronicowyParser/SpisTreści/Tom I}}}}, w której jest tworzone: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, który natomiast jest wsadzany do ogólnej tablicy rozdziałów i w nich artykułach na odpowiednią pozycję. W wstawianym elemencie ustawiamy stuczną listę z początkiem: {{Code|<nowiki>*</nowiki>}}, z numeracją pusta, i linią artykułu, którą jest link:
<syntaxhighlight lang="lua">
"[[:"..strona..((parametry_modul.CzyTak(nazwa))and("|"..nazwa) or "").."]]"
</syntaxhighlight>
A dalej należy zapoznać się z funkcją przetwarzającą dane przed wsadzeniem do ogólnej tablicy.
==== Dalszy opis funkcji głównej ====
Liczymy adres strony głównej podręcznika: {{Code|pelna_nazwa_ksiazki}} {{LinkPatrz|pelna_nazwa_ksiazki}}, z funkcji: {{Code|{{sr|#m["NazwaModułu"]|p=Nazwy/Tom III}}}}, i sprawdzamy, czy strona istnieje na podstawie funkcji: {{Code|{{sr|#p.PoliczZbiory|p=Techniczne}}}}. Jeśli strona istnieje, wtedy liczymy, czy istnieje jego przekierowanie z funkcji: {{Code|{{sr|#p.PrzekierowanieDoStrony|p=Techniczne}}}},a jeżeli istnieje jego przekierowanie, to wtedy wartość tej funkcją jest stroną na którą wskazuje to przekierowanie, oznaczmy tą zmienną: {{Code|strona_spisu_tresci}} {{Patrz|strona_spisu_tresci}}.
Jeżeli: {{Code|strona_spisu_tresci}} {{LinkPatrz|strona_spisu_tresci}}, istnieje, wtedy jego nazwę dekodujemy funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, z drugim parametrem {{Code|true}}.
Używając tabeli nazw, tzn.: {{Code|tabela_nazw}} {{Patrz|tabela_nazw}}, której przydzielamy wartość pustą, liczymy kolejno: {{Code|nazwa_przestrzeni2}} {{Patrz|nazwa_przestrzeni2}}, {{Code|nazwa_przestrzeni_ksiazki2}} {{Patrz|nazwa_przestrzeni_ksiazki2}} i {{Code|nazwa_ksiazki2}} {{Patrz|nazwa_ksiazki2}}, z następujących funkcji kolejno: {{Code|{{sr|#m.NAZWAPRZESTRZENI|p=Nazwy/Tom II}}}}, {{Code|{{sr|#m["NAZWAPRZESTRZENIKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, albo: {{Code|{{sr|#m["NAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, gdy: {{Code|nazwa_przestrzeni_ksiazki2}} {{LinkPatrz|nazwa_przestrzeni_ksiazki2}}, jest pusta, przeciwnie z: {{Code|{{sr|#m["SUBNAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}. Sprawdzamy, czy one pokrywają się kolejno z: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, i {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki}}, a jeżeli w całości, wtedy sprawdzamay, czy to z {{Code|2}} należą do przestrzeni nazw i niby-przestrzenu nazw książkowych. Przestrzenie ksiązkowe, to: {{Np|(main)|link=tak}}, {{Np|Wikijunior|link=tak}}, oraz {{Np|User|link=tak}}, w niby przestreni nazw: '''{{Np|User|link=tak}}:<użytkownik>/''', i {{Np|Project|link=tak}} w niby-przestrzeni nazw: '''{{Np|Project|link=tak}}:Brudnopis/<użytkownik>/''', jeżeli do tej przestrzeni nie należy, to funkcja kończy się z błędem (z wartością) {{Code|2}}, przeciwnie tworzona jest zmienna {{Code|adres_ksiazki_glownego_spisu_tresci}} {{Patrz|adres_ksiazki_glownego_spisu_tresci}}:
<syntaxhighlight lang="lua">
adres_ksiazki_glownego_spisu_tresci={nazwa_przestrzeni2,nazwa_przestrzeni_ksiazki2,nazwa_ksiazki2,};
</syntaxhighlight>
Także jest tam wywoływana funkcja: {{Code|__FUNKCJA_SPISU_RZECZY}} {{LinkPatrz|__FUNKCJA_SPISU_RZECZY}}, jeśli istnieje:
<syntaxhighlight lang="lua">
local wynik=__FUNKCJA_SPISU_RZECZY and __FUNKCJA_SPISU_RZECZY(nazwa_przestrzeni2,nazwa_przestrzeni_ksiazki2,nazwa_ksiazki2) or nil;
</syntaxhighlight>
Jeżeli ta funkcja nie istnieje, lub zwraca {{Code|nil}} lub nawet {{Code|1}}, wtedy funkcja zakańcza się z błędem: {{Code|1}}, przeciwnie na podstawie tego z {{Code|2}}, jest przyrównywanie tego temu bez tego, wtedy mamy nowe parametry nazw bez {{Code|2}}. I na podstawie tego liczymy nową nazwę: {{Code|pelna_nazwa_ksiazki}} {{LinkPatrz|pelna_nazwa_ksiazki}}.
Liczymy adres ustawień z: {{Code|NawigacjaSpecjalna/Nawigacja/...}} {{LinkPatrz|NawigacjaSpecjalna/Nawigacja/}}, i sprawdzamy, czy on ma przekierowanie z: {{Code|{{sr|#p.PrzekierowanieDoStrony|p=Techniczne}}}}, wtedy ma nowy adres, dalej liczymy jego kod źdrudłowy z funkcji: {{Code|{{sr|#p.WikikodStrony|p=Techniczne}}}}, przy pomocy funkcji:
<syntaxhighlight lang="lua">
local tekst=techniczne_modul.WikikodStrony{["przestrzeń"]="",["nazwa"]=adres_ustawien,};
</syntaxhighlight>
A jeżeli taka strona nie istnieje, wtedy: {{Code|tekst}}, przyjmuje wartość: {{Code|nil}}, wtedy wywołujemy kod pojedynczego spisu treści {{Patrz|pojedyncze_wywolanie}}, czyli strony głównej podręcznika (książki):
<syntaxhighlight lang="lua">
---- Zbieranie parametrów pojedynczego spisu (strony głównej strony jako spisu treści)
local tabela_artykulow,tabela_licencji_spisu_tresci,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"",czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH);
local tab_inne_spisy;
---- Sprawdzanie, czy dodatkowy spis treści istnieje , taki jak: "Spis treści", i przekształcanie tablic otrzymanych z poprzedniego wywołania;
tabela_artykulow,tab_inne_spisy=SpisRzeczy(tabela_artykulow,nil);
---- Zwracanie parametrów;
return tabela_artykulow,tabela_licencji_spisu_tresci,(not przekierowanie_spisu_tresci) and "" or {przekierowanie_spisu_tresci,"",},tab_inne_spisy,nil,adres_ksiazki_glownego_spisu_tresci;
</syntaxhighlight>
Przeciwnie kodujemy ten tekst: {{Code|tekst}} {{Patrz|tekst}}, przy pomocy pustej tabeli: {{Code|tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji}}. Co na podstawie liczmy tego parametry szablonu o: {{Code|obiekt}} {{=}} {{Code|SZABLON}}, w nim o nazwie: {{Code|{{sr|#p.uklad_autonawigacji|p=StronicowyParser/obiekty}}}}, czyli: {{Code|tabela_parametrow_szablonu_uklad_autonawigacji}} {{LinkPatrz|tabela_parametrow_szablonu_uklad_autonawigacji}}, również: {{Code|nazwa_szablonu_uklad_autonawigacji}} {{Patrz|nazwa_szablonu_uklad_autonawigacji}}, i {{Code|tabela_modyfikatorow_uklad_autonawigacji}} {{Patrz|tabela_modyfikatorow_uklad_autonawigacji}}, a także: {{Code|szablon_uklad_autonawigacji}} {{Patrz|szablon_uklad_autonawigacji}}, dalej przerywamy pętle. Jeżeli nie wykryto szablonu autonawigacji, wtedy zakańczamy funkcje jak w punkcie: {{LinkPatrz|pojedyncze_wywolanie}}. A jeżeli nie ma tabeli parametrów szablonu: {{Code|tabela_parametrow_szablonu_uklad_autonawigacji}} {{LinkPatrz|tabela_parametrow_szablonu_uklad_autonawigacji}}, to też podobnie.
A jeżeli chcemy liczyć manualnie, wtedy musimy powiedzieć:
<syntaxhighlight lang="lua">
local automat_manualny=tabela_parametrow_szablonu_uklad_autonawigacji["automat manualny"];
</syntaxhighlight>
Jeżeli wartość tej zmiennej: {{Code|automat_manualny}} {{Patrz|automat_manualny}}, jest nie {{Code|nil}}, i jest niepusta, to ze zmiennej: {{Code|spis treści}} {{Patrz|spis treści}}, liczmy z tego nazwę książki i ona musi się zgadzać ze zmienną: {{Code|pelna_nazwa_ksiazki}} {{LinkPatrz|pelna_nazwa_ksiazki}}, co po zgadzaniu, liczmy nazwę artykułu nazwy artykułu, w przeciwnym wypadku mamy do czynienia ze stroną główną podręcznika, wartość pusta będzie odpowiadała stronie głównej podręcznika, co na sam koniec liczymy:
<syntaxhighlight lang="lua">
---- Zbieranie parametrów pojedynczego o policzoej nazwie artykułu spisu;
local tabela_artykulow,tabela_licencji_spisu_tresci,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,sub_nazwa_spis_tresci,czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH);
---- Sprawdzanie, czy dodatkowy spis treści istnieje , taki jak: "Spis treści", i przekształcanie tablic otrzymanych z poprzedniego wywołania;
tabela_artykulow,tab_inne_spisy=SpisRzeczy(tabela_artykulow,nil);
---- Zwracanie parametrów;
return tabela_artykulow,tabela_licencji_spisu_tresci,(not przekierowanie_spisu_tresci) and sub_nazwa_spis_tresci or {przekierowanie_spisu_tresci,sub_nazwa_spis_tresci,},tab_inne_spisy,nil,adres_ksiazki_glownego_spisu_tresci;
</syntaxhighlight>
Gdy zmienna: {{Code|automat_manualny}} {{LinkPatrz|automat_manualny}}, jest pusta lub nie podana, wtedy następnym krokiem jest odkodowanie parametrów: {{Code|{{s|Układ autonawigacji}}}} {{LinkPatrz|Układ autonawigacji}}, przy pomocy: {{Code|tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji}}, i ich rozwinięcie funkcją: {{LzLua|frame:preprocess}}.
Ustawmy zmienną: {{Code|numer}} {{LinkPatrz|numer}} na wartość {{Code|1}}.
Liczymy zmienne: {{Code|bez spisów treści}} {{Patrz|bez spisów treści}}, i {{Code|bez analizy spisów treści}} {{Patrz|bez analizy spisów treści}}, tabeli parametrów: {{Code|tabela_parametrow_szablonu_uklad_autonawigacji}} {{LinkPatrz|tabela_parametrow_szablonu_uklad_autonawigacji}}, oraz sprawdzamy, czy one są niepuste.
Gdy zmienna: {{Code|bez spisów treści}} {{LinkPatrz|bez spisów treści}}, jest niepodana lub pusta, wtedy liczymy z klucza: {{Code|spis treści}} {{LinkPatrz|spis treści}}, ze zmiennej: {{Code|tabela_parametrow_szablonu_uklad_autonawigacji}} {{LinkPatrz|tabela_parametrow_szablonu_uklad_autonawigacji}}, a jeżeli ta zmienna istnieje, wtedy ją dekodujemy funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, z drugim parametrem {{Code|true}}, i liczymy jego adres bezwzględny z funkcji: {{Code|{{sr|#p["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]|p=Techniczne}}}}, mając względem, którego ma liczyć, tzn.: {{Code|pelna_nazwa_ksiazki}} {{LinkPatrz|pelna_nazwa_ksiazki}}.
Następnie sprawdzamy, czy w policzonym spisie nazwa ksiązki zgadza się z tą: {{Code|pelna_nazwa_ksiazki}} {{LinkPatrz|pelna_nazwa_ksiazki}}, a jeżeli się zgadza, to liczymy nazwę artylułu spisu treści, przeciwnie nazwa artykułu spisu treści ma wartość pustą, wartość pusta nazwy artykułu spisu treści odpowiada stronie głównej podręcznika. W innym wypadku, gdy zmienna: {{Code|bez spisów treści}} {{LinkPatrz|bez spisów treści}} jest niepusta, wtedy tylko uwzględniamy nazwę spisu treści jako stronę główną podręcznika. Tą zmienną jest: {{Code|nazwa_glownego_spisu}} {{LinkPatrz|nazwa_glownego_spisu}}.
Gdy zmienne: {{Code|bez spisów treści}} {{LinkPatrz|bez spisów treści}}, i {{Code|bez analizy spisów treści}} {{LinkPatrz|bez analizy spisów treści}}, są niepodane lub puste, wtedy liczymy pojedynczy artykuł będący spisem treści o nazwie: {{Code|nazwa_glownego_spisu}} {{LinkPatrz|nazwa_glownego_spisu}}, zatem tego wywołanie wygląda tak:
<syntaxhighlight lang="lua">
tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika,tabela_licencji_ksiazek_wedlug_strony_glownej_podrecznika,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_glownego_spisu,czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH);
</syntaxhighlight>
Napiszmy przemianowania zmiennych na: {{Code|tablista_artykulow}} {{LinkPatrz|tablista_artykulow}}, i {{Code|licencja}} {{Patrz|licencja}}, według:
<syntaxhighlight lang="lua">
tablista_artykulow=tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika;
licencja=tabela_licencji_ksiazek_wedlug_strony_glownej_podrecznika;
</syntaxhighlight>
Gdy zmienna: {{Code|przekierowanie_spisu_tresci}} {{LinkPatrz|przekierowanie_spisu_tresci}}, ma wartość odpowiadającej prawidziwej, czyli to pewien łańcuch znakowy, wtedy policzmy {{LinkPatrz|nazwa_glownego_spisu}} dla tego przekierowania:
<syntaxhighlight lang="lua">
nazwa_glownego_spisu={przekierowanie_spisu_tresci,nazwa_glownego_spisu,};
</syntaxhighlight>
Jeśli wartość: {{Code|tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika}} {{Patrz|tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika}}, jest {{Code|nil}}, lub {{Code|0}}, wtedy funkcja jest zakańczana w sposób:
<syntaxhighlight lang="lua">
return tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika;
</syntaxhighlight>
Lub przeciwnie, liczymy spis treści odpowiadającym wartością tabeli: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}, zatem to policzmy, czy tak jest, schematycznie:
<syntaxhighlight lang="lua">
---- Przygotowanie spisu do wielu spisów treści;
tablista_artykulow,tab_inne_spisy,numer=Spis(tablista_artykulow,nil,tab_inne_spisy,nazwa_glownego_spisu,numer);
---- Liczenie czy jest artykuł w spisie treści o nazwie typu: "Spis treści";
local artykul_spisu_rzeczy=p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku(tablista_artykulow);
if(artykul_spisu_rzeczy)then
---- Dodaje spis nowy do większego spisu, ten wykryty zaraz powyższą funkcją;
tabela_artykulow,tab_inne_spisy,numer=InneSpisy(tablista_artykulow,tab_inne_spisy,artykul_spisu_rzeczy,numer);
end;
</syntaxhighlight>
Uruchamiamy iterator: {{Code|iter}} {{Patrz|iter}}, z funkcji: {{LinkŚródtytuł|IteratorSpisTresci}}, bez parametrów, zdefiniowanej w tym bloku, co jest ta iteracja, wtedy możemy je iterować po spisie treści w sposób:
<syntaxhighlight lang="lua">
for spis_tresci in iter do
.... ---- ciało iterowanej pętli;
end;
</syntaxhighlight>
Każdy tak uzyskany: {{Code|spis_treści}} {{LinkPatrz|spis_treści}}, dekodujemy funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, następnie rozwijamy adres względny na bezwzględny względem korzenia drzewa przestrzeni nazw z funkcji: {{Code|{{sr|#p["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]|p=Techniczne}}}}, i dodajemy te spisy do głównego drzewa tablicy rozdziałów i ich artykułów przy pomocy funkcji: {{LinkŚródtytuł|InneSpisy}}, właśnie tak:
<syntaxhighlight lang="lua">
tablista_artykulow,tab_inne_spisy,numer=InneSpisy(tablista_artykulow,tab_inne_spisy,spis_tresci,numer);
</syntaxhighlight>
Uruchomimy inny iterator: {{Code|iter}} {{LinkPatrz|iter}}, z funkcji: {{LinkŚródtytuł|IteratorFun}}, wywołanej bezparametrowo, wtedy iterację możemy napisać wykorzystujac funkcję: {{LinkŚródtytuł|ZbieranieDanychStronZAutonawigacji}}, zdefiniowanej w tej pętli, działającą tak:
<syntaxhighlight lang="lua">
for strona,nazwa in iter do
... ---- definicja funkcji: ZbieranieDanychStronZAutonawigacji;
ZbieranieDanychStronZAutonawigacji();
end;
</syntaxhighlight>
Funkcja w nagłówku zwraca wielowartościowy, wtedy wynik na samym końcu zakończenia jej jest:
<syntaxhighlight lang="lua">
return tablista_artykulow,licencja,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,adres_ksiazki_glownego_spisu_tresci;
</syntaxhighlight>
; Opis zwracanych parametrów{{dk}}
{{OpisParametrów
| 1 = {{Code|tablista_artykulow}} | _1 = Jak w: {{LinkPatrz|tablista_artykulow}}.
| 2 = {{Code|licencja}} | _2 = Jak w: {{LinkPatrz|licencja}}.
| 3 = {{Code|nazwa_glownego_spisu}} | _3 = Jak w: {{LinkPatrz|nazwa_glownego_spisu}}.
| 4 = {{Code|tab_inne_spisy}} | _4 = Jak w: {{LinkPatrz|tab_inne_spisy}}.
| 5 = {{Code|dodatkowe_artykuly}} | _5 = Jak w: {{LinkPatrz|dodatkowe_artykuly}}.
| 6 = {{Code|adres_ksiazki_glownego_spisu_tresci}} | _6 = Jak w: {{LinkPatrz|adres_ksiazki_glownego_spisu_tresci}}.
}}
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
sy85512f85lqxkrwb7gysj8p1085k6g
558346
558345
2026-10-02T19:12:08Z
Persino
2851
/* Opis funkcji */
558346
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SpisTreści}}|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.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}}{{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} ===
Funkcja sprawdzająca, czy na stronie z głównym spisem treści lub w innych spisach treści podanych w: {{s|Układ autonawigacji}} {{Patrz|Układ autonawigacji}}, na jednych ze stron: {{s|NawigacjaSpecjalna/Nawigacja/}} {{Patrz|NawigacjaSpecjalna/Nawigacja/}} (te ustawienia są wykorzystywane przez: {{s|Autonawigacja}} {{Patrz|Autonawigacja}}), dotyczącej danej książki, znajduje się artykuł o nazwie znajduje, z dokładnością do wielkości liter, artykuły o nazwach według tabeli: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}}} {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={
["spis treści"]=true,
["spis tresci"]=true,
["spis rzeczy"]=true,
};
</syntaxhighlight>
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku(tabela_artykulow)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tabela_artykulow}} | _1 = Tabela wielowymiarowa rozdziałów i do nich artykułów.
}}
Kopia tej tabeli jest połączona z metatabelką: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=StronicowyParser/obiekty}}}} {{Patrz|p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter}}, przy pomocy funkcji: {{LzLua|setmetatable}}.
Iterujemy dla elementach tabeli: {{Code|tabela_artykulow}} {{Patrz|tabela_artykulow}}, a póżniej sprawdzamy, czy artykuł znajduje się w dozwolonych rozdziałach jako artykuły książki: {{Code|tab_lista[2]}} {{Patrz|tab_lista[2]}}, iterując po jego elementach, wtedy jednych z jego wartości, o pewnym numerze, bierzemy element: {{Code|artykul_w_bazie_element}} {{Patrz|artykul_w_bazie_element}}, według kodu:
<syntaxhighlight lang="lua">
---- Bierzemy jego pierwszy element "tab_stare", bo: "artykul_w_bazie_element", jest tabelką;
local artykul_w_bazie=artykul_w_bazie_element[1];
---- Sprawdzamy, czy element, zawiera klucz o nazwie "["LINK"]=true";
local czy_table=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(artykul_w_bazie);
---- Wybieramy w zależnosci, czy to jest tabelka, czy nie bez tego: "["LINK"]=true";
artykul_w_bazie=czy_table and artykul_w_bazie[1] or artykul_w_bazie;
---- Jeżeli ten element jest tabelką i posiada: "["LINK"]=true", to zwracamy pierwszy element, a jeżeli nie to sam element;
local artykul_bez_naglowka_w_bazie=stronicowyparser_potrzebne_modul.TylkoNazwaStronyWoluminuZTabeliPublikacji(artykul_w_bazie);
</syntaxhighlight>
Powyższy kod, zawiera funkcje z: {{Code|{{ld2|StronicowyParser/Potrzebne}}}}, tzn.: {{Code|{{sr|#p.CzyTabelaStronyWoluminuSpisuRzeczy|p=StronicowyParser/Potrzebne}}}}, która sprawdza, czy element jest tabelka, i czy ma klucz: {{Code|LINK}}, wtedy zwraca wartość: {{Code|false}}, w przeciwnym wypadku, zrzuca wynik czy to jest owo (tabelka), i {{Code|{{sr|#p.TylkoNazwaStronyWoluminuZTabeliPublikacji|p=StronicowyParser/Potrzebne}}}}, który sprawdza, czy to jest tabelka, czy posiada klucz: "klucz", a jeżeli tak, to zwraca pierwszy element tej tabeli, a jeżeli nie, to zwraca to nawet, gdy by nie była tabelką, a jak jest nią, to nie posiada klucza: {{Code|LINK}}. Aby zrozumieć te funkcje skorzystaj z definicji: {{Code|tab_stare}} {{Patrz|tab_stare}}, na stronie: {{Code|{{lr|Moduły/StronicowyParser/SpisTreści/Tom I|SpisTreści - Tom I}}}}.
Następnie sprawdzamy, czy to jest ten spis treści zagwarantowany według: {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}, a jeżeli tak, to funkcja zrzucza wartość: {{Code|artykul_bez_naglowka_w_bazie}} {{Patrz|artykul_bez_naglowka_w_bazie}} - jest to nazwa artykułu spisu treści o określonej nazwie bez nagłówka, a jeżeli mimo to nie znaleziono nic, to nic nie zwraca.
=== {{Śródtytuł|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}}{{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} ===
==== Opis funkcji ====
Funkcja zrzuca wynik z jednego spisu rzeczy, którym jest strona główna książki, lub ewentualnie skojarzony z nią, spis, który jest artykuł o nazwie jednych z: {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}, z dokładnością do wielkości znaków. Funkcja też sprawdza stronę z {{s|Układ autonawigacji}}, czyli strony znajdujące się katalogu: {{s|NawigacjaSpecjalna/Nawigacja/}}, tam sprawdza, jakie spisy do niego należą i je liczy, też sprawdza jakie artykuły do niego należą. W ten sposób mamy utworzony spis treści, który po artykułach książki możemy nawigować za pomocą odpowiednich funkcji autonawigacji.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,czy_artykul_korzystany,__FUNKCJA_SPISU_RZECZY,__FUNKCJA_ZBIERANIA_DANYCH)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{Patrz|self}} | _1 = Zmienna obiektowa funkcji.
| 2 = {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} | _2 = Kolejno jak w: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''' i '''nazwa książki'''.
| 3 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _3 = {{Code|true}}, gdy artykuł dany jest korzystamy, czy aktualnie korzystamy z niego za pomocą przeglądarki.
| 4 = {{Code|__FUNKCJA_SPISU_RZECZY}} {{Patrz|__FUNKCJA_SPISU_RZECZY}} | _4 =
{{Śródtekst|uchwyt=__FUNKCJA_SPISU_RZECZY|tekst=
Funkcja wykorzystywana w: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}, w module: {{Code|{{ld2|StronicowyParser/ZbieranieDanychStron}}}}, jest to funkcja do różnych celu, w tym przypadku służy, to przypisywania, na które wskazuje przekierowanie, danych z przekierowania do strony, którym jest to właśnie przekierowanie.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
kod_sukcesu_lub_bledu=__FUNKCJA_SPISU_RZECZY(tekst_rozwiniety_calego_artykulu_ref_spis,nazwa_przestrzeni_ref_spis,nazwa_przestrzeni_ksiazki_ref_spis,nazwa_ksiazki_ref_spis,nazwa_artykulu_ref_spis,tablica_analizy_obiektow_strony_dany_modul_ref_spis,tablica_danych_parametrow_szablonu_strony_ref_spis);
</syntaxhighlight>
Ta funkcja nie zwraca niczego.
}}
| 5 = {{Code|__FUNKCJA_ZBIERANIA_DANYCH}} {{Patrz|__FUNKCJA_ZBIERANIA_DANYCH}} | _5 = {{P|Funkcja opisana w rozdziale: {{Code|{{sr|#p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy|p=StronicowyParser/SpisTreści/Tom I}}}}, w module: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}.}}
{{PobierzŚródtekst|uchwyt=__FUNKCJA_ZBIERANIA_DANYCH|nazwa artykułu=StronicowyParser/SpisTreści/Tom I}}
}}
==== Fukcje lokalne ====
===== {{Śródtytuł|Spis}}{{Code|Spis}} =====
Funkcja służy do ustawiania poszczególnych spisów treści, jeżeli książka ma ich kilka. Ona służy jedynie do jednego spisu, a nie wszystkich razem, tylko oddzielnie.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Spis(tablista_artykulow,spis_tresci,tab_inne_spisy,nazwa_glownego_spisu,numer)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tablista_artykulow}} {{Patrz|tablista_artykulow}} | _1 = Tabela rozdziałów i do nich artykułów.
| 2 = {{Code|spis_tresci}} {{Patrz|spis_tresci}} | _2 = Jeżeli strona nie jest przekierowaniem, to jest wtedy łańcuch znakowy opisujący dany spis, a jeżeli właśnie jest, wtedy jest to tablica, coś w rodzaju {{Code|<nowiki>{przekierowanie_spisu_tresci,spis_tresci,}</nowiki>}}:
| 3 = Wyjaśnienie: | nagłówek3 = tak
| 4 = {{Code|przekierowanie_spisu_tresci}} {{Patrz|przekierowanie_spisu_tresci}} | _4 = Strona spis treści, która jest jednocześnie przekierowaniem.
| 5 = {{Code|spis_treści}} | _5 = Jak w: {{LinkPatrz|spis_tresci}}, tylko, że tylko łańcuch znakowy, na który wskazuje przekierowanie.
| 6 = Inne parametry: | nagłówek6 = tak
| 7 = {{Code|tab_inne_spisy}} {{Patrz|tab_inne_spisy}} | _7 = Tabela innych spisów książki, jeżeli istnieją,
| 8 = {{Code|nazwa_glownego_spisu}} {{Patrz|nazwa_glownego_spisu}} | _8 = Nazwa głównego spisu treści, zwykle jest to strona główna książki.
| 9 = {{Code|numer}} {{Patrz|numer}} | _9 = Numer, który liczmy, do którego dodajemy jeden.
}}
Parametry zwracane:
<syntaxhighlight lang="lua">
return tablista_artykulow,tab_inne_spisy,numer;
</syntaxhighlight>
Opis parametrów zwracanych:
{{OpisParametrów
| 1 = {{Code|tablista_artykulow}} | _1 = Jak w: {{LinkPatrz|tablista_artykulow}}.
| 2 = {{Code|tab_inne_spisy}} | _2 = Jak w: {{LinkPatrz|tab_inne_spisy}}.
| 3 = {{Code|numer}} | _3 = Jak w: {{LinkPatrz|numer}}.
}}
Gdy zmienna: {{Code|tablista_artykulow}} {{LinkPatrz|tablista_artykulow}}, istnieje, i ma niepustą tablicę, wtedy ta funkcja wtedy faktycznie coś robi, w przeciwnym wypadku zwraca tylko wynik.
Liczmy spis treści, na który wskazuje przekierowanie, gdy strona nie jest nim, to sama strona ze wskazania:
<syntaxhighlight lang="lua">
local czy_spis_tresci_table=parametry_modul.TypeTable(spis_tresci);
local spis_tresci_strona=czy_spis_tresci_table and spis_tresci[1] or spis_tresci;
</syntaxhighlight>
Zmienna: {{Code|spis_tresci_strona}}, to jest nic innego jak: {{Code|przekierowanie_spisu_tresci}} {{LinkPatrz|przekierowanie_spisu_tresci}}, lub tylko jest łańcuchem znakowym, według: {{Code|spis_tresci}} {{LinkPatrz|spis_tresci}}.
Policzmy zmienną: {{Code|tab_element}} {{Patrz|tab_element}}:
<syntaxhighlight lang="lua">
local tab_element={[1]={((not spis_tresci) and "Główny spis treści" or ("Spis treści - "..spis_tresci_strona)),{((spis_tresci) and 1 or nil),nil,nil,},["spis"]={spis_tresci_strona or nazwa_glownego_spisu or "",numer}},[2]=nil,[3]=nil,};
</syntaxhighlight>
Jeżeli pierwszy rozdział danego spisu nie ma numeracji, tzn. wtedy liczymy element: {{Code|tablista_artykulow[1][1][2][1]}}, to wtedy jego pozycje artykularne: {{Code|numer > 1}}, zapisujemy na sam koniec w tablicy: {{Code|tab_element}} {{LinkPatrz|tab_element}}. Następnie usuwamy pierwszy rozdział z artykułami przy pomocy funkcji: {{LzLua|table.remove}}.
Poziomy rozdziałów powiększamy o jeden aż do napotkania pierwszego rozdziału centrowanego, wtedy przerywamy pętle.
Następnym podejściem jest dodanie przed pierwsza pozycją elementu: {{Code|tab_element}} {{LinkPatrz|tab_element}}, do tablicy: {{Code|tablista_artykulow}} {{LinkPatrz|tablista_artykulow}}}, przy pomocy funkcji: {{LzLua|table.insert}}.
Jeżeli spis treści: {{Code|spis_tresci}} {{LinkPatrz|spis_tresci}}, istnieje, wtedy robimy dalsze operacje. Jeżeli tablica: {{Code|tab_inne_spisy}} {{LinkPatrz|tab_inne_spisy}}, nie istnieje, to ją tworzymy, wtedy {{Code|spis_tresci}} {{LinkPatrz|spis_tresci}}, przy pomocy: {{LzLua|table.insert}}, dodajemy do: {{Code|tab_inne_spisy}} {{LinkPatrz|tab_inne_spisy}}. Następnie jeżeli nie istnieje element {{Code|tablista_artykulow[1][2]}} {{Patrz|tablista_artykulow[1][2]}}, związany artykułami należącymi do rozdziału, to go tworzymy, wtedy tworzymy element: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, w postaci:
<syntaxhighlight lang="lua">
local tab_stare={czy_spis_tresci_table and {spis_tresci_strona,nil,przekierowanie_strona} or spis_tresci,{0,"","",true,},"[[:"..pelna_nazwa_ksiazki.."/" ..spis_tresci_strona.."]]",false,};
</syntaxhighlight>
To: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, jest opisane w module: {{lr|Moduły/StronicowyParser/SpisTreści/Tom I|Spis treści - Tom I}}.
To dodajemy na pierwszą pozycję do zbioru artykułów, do elementu: {{LinkPatrz|tablista_artykulow[1][2]}}, na pierwszą pozycję, przy pomocy funkcji: {{LzLua|table.insert}}.
Następnym krokiem jest zwracanie przez funkcję zmiennych powyżej powiedzianych.
===== {{Śródtytuł|InneSpisy}}{{Code|InneSpisy}} =====
Funkcja służy do uzyskiwania elementów danego spisu, ustawiania go odpowiedniego i wstawianie go do ogólnego spisu opisujące wszystkie spisy w danej książce.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function InneSpisy(tablista_artykulow,tab_inne_spisy,spis_tresci,numer)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tablista_artykulow}} | _1 = Jak w: {{LinkPatrz|tablista_artykulow}}.
| 2 = {{Code|tab_inne_spisy}} | _2 = Jak w: {{LinkPatrz|tab_inne_spisy}}.
| 3 = {{Code|spis_tresci}} | _3 = Jak w: {{LinkPatrz|spis_tresci}}.
| 4 = {{Code|numer}} | _4 = Jak w: {{LinkPatrz|numer}}.
}}
Uzyskujemy elementy spisu z wywołania dla pojedynczego spisu treści:
<syntaxhighlight lang="lua">
local tablista_artykulow_iter,tablica_licencji,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,spis_tresci,false,nil,__FUNKCJA_ZBIERANIA_DANYCH);
</syntaxhighlight>
Jeżeli zmienna: {{Code|tablista_artykulow_iter}} {{Patrz|tablista_artykulow_iter}} istnieje i jest tablicą, to ją przetwarzamy przy pomocy funkcji: {{LinkŚródtytuł|InneSpisy}}, w sposób:
<syntaxhighlight lang="lua">
tablista_artykulow_iter,tab_inne_spisy,numer=Spis(tablista_artykulow_iter,(not przekierowanie_spisu_tresci)and spis_tresci or {przekierowanie_spisu_tresci,spis_tresci,},tab_inne_spisy,nil,numer);
</syntaxhighlight>
Tak otrzymanną zmienną: {{Code|tablista_artykulow_iter}} {{LinkPatrz|tablista_artykulow_iter}}, iterujemy po elementach wsadzając ją do tablicy na sam koniec: {{Code|tablista_artykulow}} {{LinkPatrz|tablista_artykulow}}, a jak tak tablica nie istnieje, to ją tworzymy z pustą tablicą, i wtedy wykonujemy tą operację. To wsadzanie wykonujemy za pomocą funkcji: {{LzLua|table.insert}}.
Na samym końcu zwracamy wiele elementów:
<syntaxhighlight lang="lua">
return tablista_artykulow,tab_inne_spisy,numer;
</syntaxhighlight>
===== {{Śródtytuł|SpisRzeczy}}{{Code|SpisRzeczy}} =====
Funkcja przygotowuje aktualny spis treści, by dodać do niego nowy spis, jeżeli on istnieje, jako artykuł w spisie o nazwach: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function SpisRzeczy(tabela_artykulow,tab_inne_spisy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tabela_artykulow}} | _1 = Jak w: {{LinkPatrz|tabela_artykulow}}.
| 2 = {{Code|tab_inne_spisy}} | _2 = Jak w: {{LinkPatrz|tab_inne_spisy}}.
}}
Uruchamiamy funkcję: {{LinkŚródtytuł|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}}, która zwraca wynik, który trzeba sprawdzić, czy istnieje, przed dalszymi operacjami, tzn. {{Code|artykul_spisu_rzeczy}} {{Patrz|artykul_spisu_rzeczy}}, uzyskując z aktualnej listy spis treści dla całej książki, jako jego zespołu, na podstawie jego dowiadujemy, ża taki omawiany spis istnieje, wtedy stary spis, czyli stronę główną podręcznika, przygotujemy do tego, do tego robimy funkcją: {{LinkŚródtytuł|Spis}}, wywołaniem, ale przed tymwywołaniem ustawiamy: {{Code|numer {{=}} 1}}, zatem:
<syntaxhighlight lang="lua">
tabela_artykulow,tab_inne_spisy,numer=Spis(tabela_artykulow,nil,tab_inne_spisy,"",numer);
</syntaxhighlight>
Następnym krokiem jest czytanie tego spisu przy pomocy wywołania: {{LinkŚródtytuł|InneSpisy}}, jako:
<syntaxhighlight lang="lua">
tabela_artykulow,tab_inne_spisy,numer=InneSpisy(tabela_artykulow,tab_inne_spisy,artykul_spisu_rzeczy,numer);
</syntaxhighlight>
Funkcja używa zmiennej uzyskanego wcześniej, tzn.: {{Code|artykul_spisu_rzeczy}} {{LinkPatrz|artykul_spisu_rzeczy}}, to jest to samo, co: {{Code|artykul_bez_naglowka_w_bazie}} {{LinkPatrz|artykul_bez_naglowka_w_bazie}}, uzyskanej z funkcji liczący taki spis według: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}, którym wartością jest nazwa artykułu bez nagłówka w bazie.
Wartościami zwracanymi przez funkcję dwie osobne zmienne zrzucane jednocześnie:
<syntaxhighlight lang="lua">
return tabela_artykulow,tab_inne_spisy;
</syntaxhighlight>
Jest to ogólna tabela wszystkich rozdziałów i do nich ich artykułów, i uzupełniona lista innych spisów treści.
===== {{Śródtytuł|IteratorSpisTresci}}{{Code|IteratorSpisTresci}} =====
Funkcja uruchamiająca iterator po spisach treści innych niż spis treści główny, jego definicja:
<syntaxhighlight lang="lua">
local IteratorSpisTresci=function()
local liczba=1;
return function()
local spis_tresci=tabela_parametrow_szablonu_uklad_autonawigacji["spis treści "..liczba];
liczba=liczba+1;
return spis_tresci;
end;
end;
</syntaxhighlight>
Funkcja wykorzystuje tablicę parametrów autonawigacji ze strony ściśle określonej z katalogu stron: {{Code|NawigacjaSpecjalna/Nawigacja/...}} {{LinkPatrz|NawigacjaSpecjalna/Nawigacja/}}, iteruje co jeden numer spisu treści, tzn.: {{Code|spis treści 1}}, {{Code|spis treści 2}},..., {{Code|spis treści N}}, gdzie {{Code|N}}, to największa liczba charakteryzująca dany spis treści. W samym iteratorze liczba: {{Code|liczba}} {{Patrz|liczba-IteratorSpisTresci}}, powiększa się co jeden, aż do zakończenia limitu spisów treści, tzn do najbliżeszej przerwy lub końca przy iteracji, bo na samym końcu iterator zrzuci wynik {{Code|nil}}.
===== {{Śródtytuł|IteratorFun}}{{Code|IteratorFun}} =====
Funkcja iteruje po stronach i ich nazwach, jakie mają być wyświetlane w linkach, generowane przez: {{Code|{{s|Autonawigacja}}}} {{LinkPatrz|Autonawigacja}}, ale na podstawie {{Code|{{s|Układ autonawigacji}}}} {{LinkPatrz|Układ autonawigacji}}, według jednych ze stron: {{Code|NawigacjaSpecjalna/Nawigacja/...}} {{LinkPatrz|NawigacjaSpecjalna/Nawigacja/}}, ustawień.
Definicja skrótowa funkcji i jego funnkcji zwracanej, która jest iteratorem:
<syntaxhighlight lang="lua">
local IteratorFun=function()
... ---- operacje robione przed uruchomieniem iteratora;
return function()
... ---- ciało iteratora
return strona,nazwa; ---- zwracane elementy;
end;
end;
</syntaxhighlight>
Definicja funkcji: {{Code|STRONA}} {{Patrz|STRONA}} i {{Code|NAZWA}} {{Patrz|NAZWA}}, są:
<syntaxhighlight lang="lua">
local STRONA=function(liczba)return liczba*2-1;end;
local NAZWA=function(liczba)return liczba*2;end;
</syntaxhighlight>
W iteratorze dostępna jest zmienna: {{Code|tabela_parametrow_szablonu_uklad_autonawigacji}} {{Patrz|tabela_parametrow_szablonu_uklad_autonawigacji}}, z którego uzyskujemy parametry, te wywołania są napisane w ciele iteratora, w sposób:
<syntaxhighlight lang="lua">
local strona=tabela_parametrow_szablonu_uklad_autonawigacji[STRONA(liczba)];
local nazwa=tabela_parametrow_szablonu_uklad_autonawigacji[NAZWA(liczba)];
</syntaxhighlight>
Iterację zaczynamy od {{Code|liczba}} {{Patrz|liczba-IteratorFun}} od jedynki, po uzyskaniu powyższych wartości, licznik (tą liczbę) powiększamy o jeden, a następnie zwracamy w iteratorze zmienne: {{Code|strona}} {{Patrz|strona}} i {{Code|nazwa}} {{Patrz|nazwa}}.
===== {{Śródtytuł|ZbieranieDanychStronZAutonawigacji}}{{Code|ZbieranieDanychStronZAutonawigacji}} =====
Jest to funkcja do zbierania danych z jednego ze ściśle określonej strony szablonu z: {{Code|NawigacjaSpecjalna/Nawigacja/...}} {{LinkPatrz|NawigacjaSpecjalna/Nawigacja/}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function ZbieranieDanychStronZAutonawigacji()...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = Brak parametrów. | komórka1 = tak
}}
Gdy parametr z iteracji iteratorem: {{Code|iter}}, z którego przy jego kolejnych wywołaniach otrzymujemy parametry: {{Code|strona}} {{LinkPatrz|strona}}, i {{Code|nazwa}} {{LinkPatrz|nazwa}}, dla: {{Code|strona}} {{LinkPatrz|strona}}, jest równy wartości odpowiadającej fałszywej, wtedy funkcja zakańcza pracę. W przeciwnym wypadku te parametry są dekodowane funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, z drugim parametrem: {{Code|true}}, ale nazwa jest dekodowana, gdy ona jest niepusta.
Gdy zmienna: {{Code|dodatkowe_artykuly}} {{LinkPatrz|dodatkowe_artykuly}}, nie istnieje, to wtedy ją tworzymy, inicjując ją pustą tablicą, oraz inicjujemy tabelę artykułów dodatkowych wykorzystując funkcję: {{LzLua|table.insert}}:
<syntaxhighlight lang="lua">
table.insert(tablista_artykulow,{[1]={"Dodatkowe artykuły",{1,nil,nil},["dodatkowe"]="tak",},[2]=nil,});
</syntaxhighlight>
Następnie liczymy parametr dla danego rozdziału, tzn. liczymy: {{Code|tabela_rozdzial_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}, według:
<syntaxhighlight lang="lua">
tabela_rozdzial_artykulow=tablista_artykulow[#tablista_artykulow];
</syntaxhighlight>
Następnie liczyny adres bezwzględny: {{Code|strona}} {{LinkPatrz|strona}} z funkcji: {{Code|{{sr|#p["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]|p=Techniczne}}}}, według wywołania, znająć dwa parametry: {{Code|strona}} {{LinkPatrz|strona}} i {{Code|pelna_nazwa_ksiazki}} {{Patrz|pelna_nazwa_ksiazki}}, czyli:
<syntaxhighlight lang="lua">
strona=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=strona,[2]=pelna_nazwa_ksiazki,};
</syntaxhighlight>
====== {{Śródtytuł|WsadzanieParametryDoTablicy}}{{Code|WsadzanieParametryDoTablicy}} ======
Jest to funkcja wsadzająca elementy do tablicy do funkcji: {{Code|{{sr|#WstawianieElementowychZarejestrowanychStronDoBazyWoluminu|p=StronicowyParser/SpisTreści/Tom I}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local WsadzanieParametryDoTablicy=function(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tabela_rozdzial_artykulow}} {{Patrz|tabela_rozdzial_artykulow}} | _1 = Tabela rozdziału i do niego artykułów.
| 2 = {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{Patrz|numer_rodzaju_artykulow_w_nie_podreczniku}} | _2 = Numer pozycji na którym element zostonie element {{LinkPatrz|tab_stare}} wstawiony.
| 3 = {{Code|tab_stare}} {{LinkPatrz|tab_stare}} | _3 = Wstawiany element.
}}
Jeżeli zmienna: {{Code|dodatkowe_artykuly}} {{Patrz|dodatkowe_artykuly}}, nie istnieje, to jest inicjowana tablicą pustą.
Liczymy adres strony na podstawie:
<syntaxhighlight lang="lua">
---- Jeżeli zmienna jest tablicą i nie ma klucza: "["LINK"]=true", wtedy przyjmuje wartość: true, w przeciwnym wypadku: false;
local czy_table_baza_artykulu=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(tab_stare[1]);
---- Nazwa artykułu lub adres strony, dla ktorej liczymy adres;
local adres=czy_table_baza_artykulu and tab_stare[1][1] or tab_stare[1];
</syntaxhighlight>
Liczymy, czy strona jest w podręczniku, czyli: {{Code|czy_w_podreczniku}} {{Patrz|czy_w_podreczniku}}, ze: {{Code|tab_stare[5]}} {{Patrz|tab_stare[5]}}, a następnie kod języka i projektu, kolejno: {{Code|kod_jezyka_koncowy}} {{Patrz|kod_jezyka_koncowy}}, i {{Code|kod_projektu_koncowy}} {{Patrz|kod_projektu_koncowy}}, jeżeli zmienna: {{Code|czy_table_baza_artykulu}} {{Patrz|czy_table_baza_artykulu}}, jest nie równa wartości prawdziwej, to te zmienne przyjmuje wartość {{Code|nil}}, w przeciwnym wypadku kolejno wartości: {{Code|tab_stare[1][5]}} i {{Code|tab_stare[1][6]}}.
Wsadzamy element do tablicy: {{Code|dodatkowe_artykuly}} {{LinkPatrz|dodatkowe_artykuly}}, przy pomocy funkcji: {{LzLua|table.insert}}, w sposób:
<syntaxhighlight lang="lua">
table.insert(dodatkowe_artykuly,{((adres) and (kod_jezyka_koncowy or kod_projektu_koncowy) and({adres,kod_jezyka_koncowy,kod_projektu_koncowy,}) or adres),nazwa,czy_w_podreczniku,});
</syntaxhighlight>
Póżniej wstawiamy element: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, do: {{Code|tabela_rozdzial_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}, na pozycję: {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, używając wywołania {{LzLua|table.insert}}, czyli:
<syntaxhighlight lang="lua">
table.insert(tabela_rozdzial_artykulow[numer_rodzaju_artykulow_w_nie_podreczniku],tab_stare);
</syntaxhighlight>
====== Dalszy opis funkcji nadrzędnej ======
Dalszym krokiem jest wsadzenie elementu do ogólnej tablicy, a tutaj do artykułu w danym rozdziale, robimy, mając przetwarzaną zmienną: {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}}, to według:
<syntaxhighlight lang="lua">
local numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy;
numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych=WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,WsadzanieParametryDoTablicy,...,...,true,{strona,nazwa,},...,...,...,"",...,...,tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji,tablica_danych_parametrow_szablonu_strony_uklad_autonawigacji,nil,nil,...,--[[]]"*","",false,"[[:"..strona..((parametry_modul.CzyTak(nazwa))and("|"..nazwa) or "").."]]");
</syntaxhighlight>
Powyżej użyto trójkropków: {{Code|...}}, bo te parametry są standardowe dla każdego wywołania.
Powyżej wstawianie odbyło się przy pomocy funkcji: {{LinkŚródtytuł|WsadzanieParametryDoTablicy}}, używając: {{Code|{{sr|#WstawianieElementowychZarejestrowanychStronDoBazyWoluminu|p=StronicowyParser/SpisTreści/Tom I}}}}, w której jest tworzone: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, który natomiast jest wsadzany do ogólnej tablicy rozdziałów i w nich artykułach na odpowiednią pozycję. W wstawianym elemencie ustawiamy stuczną listę z początkiem: {{Code|<nowiki>*</nowiki>}}, z numeracją pusta, i linią artykułu, którą jest link:
<syntaxhighlight lang="lua">
"[[:"..strona..((parametry_modul.CzyTak(nazwa))and("|"..nazwa) or "").."]]"
</syntaxhighlight>
A dalej należy zapoznać się z funkcją przetwarzającą dane przed wsadzeniem do ogólnej tablicy.
==== Dalszy opis funkcji głównej ====
Liczymy adres strony głównej podręcznika: {{Code|pelna_nazwa_ksiazki}} {{LinkPatrz|pelna_nazwa_ksiazki}}, z funkcji: {{Code|{{sr|#m["NazwaModułu"]|p=Nazwy/Tom III}}}}, i sprawdzamy, czy strona istnieje na podstawie funkcji: {{Code|{{sr|#p.PoliczZbiory|p=Techniczne}}}}. Jeśli strona istnieje, wtedy liczymy, czy istnieje jego przekierowanie z funkcji: {{Code|{{sr|#p.PrzekierowanieDoStrony|p=Techniczne}}}},a jeżeli istnieje jego przekierowanie, to wtedy wartość tej funkcją jest stroną na którą wskazuje to przekierowanie, oznaczmy tą zmienną: {{Code|strona_spisu_tresci}} {{Patrz|strona_spisu_tresci}}.
Jeżeli: {{Code|strona_spisu_tresci}} {{LinkPatrz|strona_spisu_tresci}}, istnieje, wtedy jego nazwę dekodujemy funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, z drugim parametrem {{Code|true}}.
Używając tabeli nazw, tzn.: {{Code|tabela_nazw}} {{Patrz|tabela_nazw}}, której przydzielamy wartość pustą, liczymy kolejno: {{Code|nazwa_przestrzeni2}} {{Patrz|nazwa_przestrzeni2}}, {{Code|nazwa_przestrzeni_ksiazki2}} {{Patrz|nazwa_przestrzeni_ksiazki2}} i {{Code|nazwa_ksiazki2}} {{Patrz|nazwa_ksiazki2}}, z następujących funkcji kolejno: {{Code|{{sr|#m.NAZWAPRZESTRZENI|p=Nazwy/Tom II}}}}, {{Code|{{sr|#m["NAZWAPRZESTRZENIKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, albo: {{Code|{{sr|#m["NAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, gdy: {{Code|nazwa_przestrzeni_ksiazki2}} {{LinkPatrz|nazwa_przestrzeni_ksiazki2}}, jest pusta, przeciwnie z: {{Code|{{sr|#m["SUBNAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}. Sprawdzamy, czy one pokrywają się kolejno z: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, i {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki}}, a jeżeli w całości, wtedy sprawdzamay, czy to z {{Code|2}} należą do przestrzeni nazw i niby-przestrzenu nazw książkowych. Przestrzenie ksiązkowe, to: {{Np|(main)|link=tak}}, {{Np|Wikijunior|link=tak}}, oraz {{Np|User|link=tak}}, w niby przestreni nazw: '''{{Np|User|link=tak}}:<użytkownik>/''', i {{Np|Project|link=tak}} w niby-przestrzeni nazw: '''{{Np|Project|link=tak}}:Brudnopis/<użytkownik>/''', jeżeli do tej przestrzeni nie należy, to funkcja kończy się z błędem (z wartością) {{Code|2}}, przeciwnie tworzona jest zmienna {{Code|adres_ksiazki_glownego_spisu_tresci}} {{Patrz|adres_ksiazki_glownego_spisu_tresci}}:
<syntaxhighlight lang="lua">
adres_ksiazki_glownego_spisu_tresci={nazwa_przestrzeni2,nazwa_przestrzeni_ksiazki2,nazwa_ksiazki2,};
</syntaxhighlight>
Także jest tam wywoływana funkcja: {{Code|__FUNKCJA_SPISU_RZECZY}} {{LinkPatrz|__FUNKCJA_SPISU_RZECZY}}, jeśli istnieje:
<syntaxhighlight lang="lua">
local wynik=__FUNKCJA_SPISU_RZECZY and __FUNKCJA_SPISU_RZECZY(nazwa_przestrzeni2,nazwa_przestrzeni_ksiazki2,nazwa_ksiazki2) or nil;
</syntaxhighlight>
Jeżeli ta funkcja nie istnieje, lub zwraca {{Code|nil}} lub nawet {{Code|1}}, wtedy funkcja zakańcza się z błędem: {{Code|1}}, przeciwnie na podstawie tego z {{Code|2}}, jest przyrównywanie tego temu bez tego, wtedy mamy nowe parametry nazw bez {{Code|2}}. I na podstawie tego liczymy nową nazwę: {{Code|pelna_nazwa_ksiazki}} {{LinkPatrz|pelna_nazwa_ksiazki}}.
Liczymy adres ustawień z: {{Code|NawigacjaSpecjalna/Nawigacja/...}} {{LinkPatrz|NawigacjaSpecjalna/Nawigacja/}}, i sprawdzamy, czy on ma przekierowanie z: {{Code|{{sr|#p.PrzekierowanieDoStrony|p=Techniczne}}}}, wtedy ma nowy adres, dalej liczymy jego kod źdrudłowy z funkcji: {{Code|{{sr|#p.WikikodStrony|p=Techniczne}}}}, przy pomocy funkcji:
<syntaxhighlight lang="lua">
local tekst=techniczne_modul.WikikodStrony{["przestrzeń"]="",["nazwa"]=adres_ustawien,};
</syntaxhighlight>
A jeżeli taka strona nie istnieje, wtedy: {{Code|tekst}}, przyjmuje wartość: {{Code|nil}}, wtedy wywołujemy kod pojedynczego spisu treści {{Patrz|pojedyncze_wywolanie}}, czyli strony głównej podręcznika (książki):
<syntaxhighlight lang="lua">
---- Zbieranie parametrów pojedynczego spisu (strony głównej strony jako spisu treści)
local tabela_artykulow,tabela_licencji_spisu_tresci,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"",czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH);
local tab_inne_spisy;
---- Sprawdzanie, czy dodatkowy spis treści istnieje , taki jak: "Spis treści", i przekształcanie tablic otrzymanych z poprzedniego wywołania;
tabela_artykulow,tab_inne_spisy=SpisRzeczy(tabela_artykulow,nil);
---- Zwracanie parametrów;
return tabela_artykulow,tabela_licencji_spisu_tresci,(not przekierowanie_spisu_tresci) and "" or {przekierowanie_spisu_tresci,"",},tab_inne_spisy,nil,adres_ksiazki_glownego_spisu_tresci;
</syntaxhighlight>
Przeciwnie kodujemy ten tekst: {{Code|tekst}} {{Patrz|tekst}}, przy pomocy pustej tabeli: {{Code|tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji}}. Co na podstawie liczmy tego parametry szablonu o: {{Code|obiekt}} {{=}} {{Code|SZABLON}}, w nim o nazwie: {{Code|{{sr|#p.uklad_autonawigacji|p=StronicowyParser/obiekty}}}}, czyli: {{Code|tabela_parametrow_szablonu_uklad_autonawigacji}} {{LinkPatrz|tabela_parametrow_szablonu_uklad_autonawigacji}}, również: {{Code|nazwa_szablonu_uklad_autonawigacji}} {{Patrz|nazwa_szablonu_uklad_autonawigacji}}, i {{Code|tabela_modyfikatorow_uklad_autonawigacji}} {{Patrz|tabela_modyfikatorow_uklad_autonawigacji}}, a także: {{Code|szablon_uklad_autonawigacji}} {{Patrz|szablon_uklad_autonawigacji}}, dalej przerywamy pętle. Jeżeli nie wykryto szablonu autonawigacji, wtedy zakańczamy funkcje jak w punkcie: {{LinkPatrz|pojedyncze_wywolanie}}. A jeżeli nie ma tabeli parametrów szablonu: {{Code|tabela_parametrow_szablonu_uklad_autonawigacji}} {{LinkPatrz|tabela_parametrow_szablonu_uklad_autonawigacji}}, to też podobnie.
A jeżeli chcemy liczyć manualnie, wtedy musimy powiedzieć:
<syntaxhighlight lang="lua">
local automat_manualny=tabela_parametrow_szablonu_uklad_autonawigacji["automat manualny"];
</syntaxhighlight>
Jeżeli wartość tej zmiennej: {{Code|automat_manualny}} {{Patrz|automat_manualny}}, jest nie {{Code|nil}}, i jest niepusta, to ze zmiennej: {{Code|spis treści}} {{Patrz|spis treści}}, liczmy z tego nazwę książki i ona musi się zgadzać ze zmienną: {{Code|pelna_nazwa_ksiazki}} {{LinkPatrz|pelna_nazwa_ksiazki}}, co po zgadzaniu, liczmy nazwę artykułu nazwy artykułu, w przeciwnym wypadku mamy do czynienia ze stroną główną podręcznika, wartość pusta będzie odpowiadała stronie głównej podręcznika, co na sam koniec liczymy:
<syntaxhighlight lang="lua">
---- Zbieranie parametrów pojedynczego o policzoej nazwie artykułu spisu;
local tabela_artykulow,tabela_licencji_spisu_tresci,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,sub_nazwa_spis_tresci,czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH);
---- Sprawdzanie, czy dodatkowy spis treści istnieje , taki jak: "Spis treści", i przekształcanie tablic otrzymanych z poprzedniego wywołania;
tabela_artykulow,tab_inne_spisy=SpisRzeczy(tabela_artykulow,nil);
---- Zwracanie parametrów;
return tabela_artykulow,tabela_licencji_spisu_tresci,(not przekierowanie_spisu_tresci) and sub_nazwa_spis_tresci or {przekierowanie_spisu_tresci,sub_nazwa_spis_tresci,},tab_inne_spisy,nil,adres_ksiazki_glownego_spisu_tresci;
</syntaxhighlight>
Gdy zmienna: {{Code|automat_manualny}} {{LinkPatrz|automat_manualny}}, jest pusta lub nie podana, wtedy następnym krokiem jest odkodowanie parametrów: {{Code|{{s|Układ autonawigacji}}}} {{LinkPatrz|Układ autonawigacji}}, przy pomocy: {{Code|tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji}}, i ich rozwinięcie funkcją: {{LzLua|frame:preprocess}}.
Ustawmy zmienną: {{Code|numer}} {{LinkPatrz|numer}} na wartość {{Code|1}}.
Liczymy zmienne: {{Code|bez spisów treści}} {{Patrz|bez spisów treści}}, i {{Code|bez analizy spisów treści}} {{Patrz|bez analizy spisów treści}}, tabeli parametrów: {{Code|tabela_parametrow_szablonu_uklad_autonawigacji}} {{LinkPatrz|tabela_parametrow_szablonu_uklad_autonawigacji}}, oraz sprawdzamy, czy one są niepuste.
Gdy zmienna: {{Code|bez spisów treści}} {{LinkPatrz|bez spisów treści}}, jest niepodana lub pusta, wtedy liczymy z klucza: {{Code|spis treści}} {{LinkPatrz|spis treści}}, ze zmiennej: {{Code|tabela_parametrow_szablonu_uklad_autonawigacji}} {{LinkPatrz|tabela_parametrow_szablonu_uklad_autonawigacji}}, a jeżeli ta zmienna istnieje, wtedy ją dekodujemy funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, z drugim parametrem {{Code|true}}, i liczymy jego adres bezwzględny z funkcji: {{Code|{{sr|#p["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]|p=Techniczne}}}}, mając względem, którego ma liczyć, tzn.: {{Code|pelna_nazwa_ksiazki}} {{LinkPatrz|pelna_nazwa_ksiazki}}.
Następnie sprawdzamy, czy w policzonym spisie nazwa ksiązki zgadza się z tą: {{Code|pelna_nazwa_ksiazki}} {{LinkPatrz|pelna_nazwa_ksiazki}}, a jeżeli się zgadza, to liczymy nazwę artylułu spisu treści, przeciwnie nazwa artykułu spisu treści ma wartość pustą, wartość pusta nazwy artykułu spisu treści odpowiada stronie głównej podręcznika. W innym wypadku, gdy zmienna: {{Code|bez spisów treści}} {{LinkPatrz|bez spisów treści}} jest niepusta, wtedy tylko uwzględniamy nazwę spisu treści jako stronę główną podręcznika. Tą zmienną jest: {{Code|nazwa_glownego_spisu}} {{LinkPatrz|nazwa_glownego_spisu}}.
Gdy zmienne: {{Code|bez spisów treści}} {{LinkPatrz|bez spisów treści}}, i {{Code|bez analizy spisów treści}} {{LinkPatrz|bez analizy spisów treści}}, są niepodane lub puste, wtedy liczymy pojedynczy artykuł będący spisem treści o nazwie: {{Code|nazwa_glownego_spisu}} {{LinkPatrz|nazwa_glownego_spisu}}, zatem tego wywołanie wygląda tak:
<syntaxhighlight lang="lua">
tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika,tabela_licencji_ksiazek_wedlug_strony_glownej_podrecznika,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_glownego_spisu,czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH);
</syntaxhighlight>
Napiszmy przemianowania zmiennych na: {{Code|tablista_artykulow}} {{LinkPatrz|tablista_artykulow}}, i {{Code|licencja}} {{Patrz|licencja}}, według:
<syntaxhighlight lang="lua">
tablista_artykulow=tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika;
licencja=tabela_licencji_ksiazek_wedlug_strony_glownej_podrecznika;
</syntaxhighlight>
Gdy zmienna: {{Code|przekierowanie_spisu_tresci}} {{LinkPatrz|przekierowanie_spisu_tresci}}, ma wartość odpowiadającej prawidziwej, czyli to pewien łańcuch znakowy, wtedy policzmy {{LinkPatrz|nazwa_glownego_spisu}} dla tego przekierowania:
<syntaxhighlight lang="lua">
nazwa_glownego_spisu={przekierowanie_spisu_tresci,nazwa_glownego_spisu,};
</syntaxhighlight>
Jeśli wartość: {{Code|tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika}} {{Patrz|tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika}}, jest {{Code|nil}}, lub {{Code|0}}, wtedy funkcja jest zakańczana w sposób:
<syntaxhighlight lang="lua">
return tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika;
</syntaxhighlight>
Lub przeciwnie, liczymy spis treści odpowiadającym wartością tabeli: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}, zatem to policzmy, czy tak jest, schematycznie:
<syntaxhighlight lang="lua">
---- Przygotowanie spisu do wielu spisów treści;
tablista_artykulow,tab_inne_spisy,numer=Spis(tablista_artykulow,nil,tab_inne_spisy,nazwa_glownego_spisu,numer);
---- Liczenie czy jest artykuł w spisie treści o nazwie typu: "Spis treści";
local artykul_spisu_rzeczy=p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku(tablista_artykulow);
if(artykul_spisu_rzeczy)then
---- Dodaje spis nowy do większego spisu, ten wykryty zaraz powyższą funkcją;
tabela_artykulow,tab_inne_spisy,numer=InneSpisy(tablista_artykulow,tab_inne_spisy,artykul_spisu_rzeczy,numer);
end;
</syntaxhighlight>
Uruchamiamy iterator: {{Code|iter}} {{Patrz|iter}}, z funkcji: {{LinkŚródtytuł|IteratorSpisTresci}}, bez parametrów, zdefiniowanej w tym bloku, co jest ta iteracja, wtedy możemy je iterować po spisie treści w sposób:
<syntaxhighlight lang="lua">
for spis_tresci in iter do
.... ---- ciało iterowanej pętli;
end;
</syntaxhighlight>
Każdy tak uzyskany: {{Code|spis_treści}} {{LinkPatrz|spis_treści}}, dekodujemy funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, następnie rozwijamy adres względny na bezwzględny względem korzenia drzewa przestrzeni nazw z funkcji: {{Code|{{sr|#p["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]|p=Techniczne}}}}, i dodajemy te spisy do głównego drzewa tablicy rozdziałów i ich artykułów przy pomocy funkcji: {{LinkŚródtytuł|InneSpisy}}, właśnie tak:
<syntaxhighlight lang="lua">
tablista_artykulow,tab_inne_spisy,numer=InneSpisy(tablista_artykulow,tab_inne_spisy,spis_tresci,numer);
</syntaxhighlight>
Uruchomimy inny iterator: {{Code|iter}} {{LinkPatrz|iter}}, z funkcji: {{LinkŚródtytuł|IteratorFun}}, wywołanej bezparametrowo, wtedy iterację możemy napisać wykorzystujac funkcję: {{LinkŚródtytuł|ZbieranieDanychStronZAutonawigacji}}, zdefiniowanej w tej pętli, działającą tak:
<syntaxhighlight lang="lua">
for strona,nazwa in iter do
... ---- definicja funkcji: ZbieranieDanychStronZAutonawigacji;
ZbieranieDanychStronZAutonawigacji();
end;
</syntaxhighlight>
Funkcja w nagłówku zwraca wielowartościowy, wtedy wynik na samym końcu zakończenia jej jest:
<syntaxhighlight lang="lua">
return tablista_artykulow,licencja,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,adres_ksiazki_glownego_spisu_tresci;
</syntaxhighlight>
; Opis zwracanych parametrów{{dk}}
{{OpisParametrów
| 1 = {{Code|tablista_artykulow}} | _1 = Jak w: {{LinkPatrz|tablista_artykulow}}.
| 2 = {{Code|licencja}} | _2 = Jak w: {{LinkPatrz|licencja}}.
| 3 = {{Code|nazwa_glownego_spisu}} | _3 = Jak w: {{LinkPatrz|nazwa_glownego_spisu}}.
| 4 = {{Code|tab_inne_spisy}} | _4 = Jak w: {{LinkPatrz|tab_inne_spisy}}.
| 5 = {{Code|dodatkowe_artykuly}} | _5 = Jak w: {{LinkPatrz|dodatkowe_artykuly}}.
| 6 = {{Code|adres_ksiazki_glownego_spisu_tresci}} | _6 = Jak w: {{LinkPatrz|adres_ksiazki_glownego_spisu_tresci}}.
}}
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
pamg616a46cumwhbnlg96d7vkhdpzz8
558348
558346
2026-10-02T19:19:17Z
Persino
2851
/* Opis funkcji */
558348
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SpisTreści}}|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.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}}{{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} ===
Funkcja sprawdzająca, czy na stronie z głównym spisem treści lub w innych spisach treści podanych w: {{s|Układ autonawigacji}} {{Patrz|Układ autonawigacji}}, na jednych ze stron: {{s|NawigacjaSpecjalna/Nawigacja/}} {{Patrz|NawigacjaSpecjalna/Nawigacja/}} (te ustawienia są wykorzystywane przez: {{s|Autonawigacja}} {{Patrz|Autonawigacja}}), dotyczącej danej książki, znajduje się artykuł o nazwie znajduje, z dokładnością do wielkości liter, artykuły o nazwach według tabeli: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}}} {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={
["spis treści"]=true,
["spis tresci"]=true,
["spis rzeczy"]=true,
};
</syntaxhighlight>
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku(tabela_artykulow)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tabela_artykulow}} | _1 = Tabela wielowymiarowa rozdziałów i do nich artykułów.
}}
Kopia tej tabeli jest połączona z metatabelką: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=StronicowyParser/obiekty}}}} {{Patrz|p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter}}, przy pomocy funkcji: {{LzLua|setmetatable}}.
Iterujemy dla elementach tabeli: {{Code|tabela_artykulow}} {{Patrz|tabela_artykulow}}, a póżniej sprawdzamy, czy artykuł znajduje się w dozwolonych rozdziałach jako artykuły książki: {{Code|tab_lista[2]}} {{Patrz|tab_lista[2]}}, iterując po jego elementach, wtedy jednych z jego wartości, o pewnym numerze, bierzemy element: {{Code|artykul_w_bazie_element}} {{Patrz|artykul_w_bazie_element}}, według kodu:
<syntaxhighlight lang="lua">
---- Bierzemy jego pierwszy element "tab_stare", bo: "artykul_w_bazie_element", jest tabelką;
local artykul_w_bazie=artykul_w_bazie_element[1];
---- Sprawdzamy, czy element, zawiera klucz o nazwie "["LINK"]=true";
local czy_table=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(artykul_w_bazie);
---- Wybieramy w zależnosci, czy to jest tabelka, czy nie bez tego: "["LINK"]=true";
artykul_w_bazie=czy_table and artykul_w_bazie[1] or artykul_w_bazie;
---- Jeżeli ten element jest tabelką i posiada: "["LINK"]=true", to zwracamy pierwszy element, a jeżeli nie to sam element;
local artykul_bez_naglowka_w_bazie=stronicowyparser_potrzebne_modul.TylkoNazwaStronyWoluminuZTabeliPublikacji(artykul_w_bazie);
</syntaxhighlight>
Powyższy kod, zawiera funkcje z: {{Code|{{ld2|StronicowyParser/Potrzebne}}}}, tzn.: {{Code|{{sr|#p.CzyTabelaStronyWoluminuSpisuRzeczy|p=StronicowyParser/Potrzebne}}}}, która sprawdza, czy element jest tabelka, i czy ma klucz: {{Code|LINK}}, wtedy zwraca wartość: {{Code|false}}, w przeciwnym wypadku, zrzuca wynik czy to jest owo (tabelka), i {{Code|{{sr|#p.TylkoNazwaStronyWoluminuZTabeliPublikacji|p=StronicowyParser/Potrzebne}}}}, który sprawdza, czy to jest tabelka, czy posiada klucz: "klucz", a jeżeli tak, to zwraca pierwszy element tej tabeli, a jeżeli nie, to zwraca to nawet, gdy by nie była tabelką, a jak jest nią, to nie posiada klucza: {{Code|LINK}}. Aby zrozumieć te funkcje skorzystaj z definicji: {{Code|tab_stare}} {{Patrz|tab_stare}}, na stronie: {{Code|{{lr|Moduły/StronicowyParser/SpisTreści/Tom I|SpisTreści - Tom I}}}}.
Następnie sprawdzamy, czy to jest ten spis treści zagwarantowany według: {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}, a jeżeli tak, to funkcja zrzucza wartość: {{Code|artykul_bez_naglowka_w_bazie}} {{Patrz|artykul_bez_naglowka_w_bazie}} - jest to nazwa artykułu spisu treści o określonej nazwie bez nagłówka, a jeżeli mimo to nie znaleziono nic, to nic nie zwraca.
=== {{Śródtytuł|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}}{{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} ===
==== Opis funkcji ====
Funkcja zrzuca wynik z jednego spisu rzeczy, którym jest strona główna książki, lub ewentualnie skojarzony z nią, spis, który jest artykuł o nazwie jednych z: {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}, z dokładnością do wielkości znaków. Funkcja też sprawdza stronę z {{s|Układ autonawigacji}}, czyli strony znajdujące się katalogu: {{s|NawigacjaSpecjalna/Nawigacja/}}, tam sprawdza, jakie spisy do niego należą i je liczy, też sprawdza jakie artykuły do niego należą. W ten sposób mamy utworzony spis treści, który po artykułach książki możemy nawigować za pomocą odpowiednich funkcji autonawigacji.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,czy_artykul_korzystany,__FUNKCJA_SPISU_RZECZY,__FUNKCJA_ZBIERANIA_DANYCH)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{Patrz|self}} | _1 = Zmienna obiektowa funkcji.
| 2 = {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} | _2 = Kolejno jak w: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''' i '''nazwa książki'''.
| 3 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _3 = {{Code|true}}, gdy artykuł dany jest korzystamy, czy aktualnie korzystamy z niego za pomocą przeglądarki.
| 4 = {{Code|__FUNKCJA_SPISU_RZECZY}} {{Patrz|__FUNKCJA_SPISU_RZECZY}} | _4 =
{{Śródtekst|bez preprocess=tak|uchwyt=__FUNKCJA_SPISU_RZECZY|tekst=
Funkcja wykorzystywana w: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}, w module: {{Code|{{ld2|StronicowyParser/ZbieranieDanychStron}}}}, jest to funkcja do różnych celu, w tym przypadku służy, to przypisywania, na które wskazuje przekierowanie, danych z przekierowania do strony, którym jest to właśnie przekierowanie.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
kod_sukcesu_lub_bledu=__FUNKCJA_SPISU_RZECZY(tekst_rozwiniety_calego_artykulu_ref_spis,nazwa_przestrzeni_ref_spis,nazwa_przestrzeni_ksiazki_ref_spis,nazwa_ksiazki_ref_spis,nazwa_artykulu_ref_spis,tablica_analizy_obiektow_strony_dany_modul_ref_spis,tablica_danych_parametrow_szablonu_strony_ref_spis);
</syntaxhighlight>
Ta funkcja nie zwraca niczego.
}}
| 5 = {{Code|__FUNKCJA_ZBIERANIA_DANYCH}} {{Patrz|__FUNKCJA_ZBIERANIA_DANYCH}} | _5 = {{P|Funkcja opisana w rozdziale: {{Code|{{sr|#p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy|p=StronicowyParser/SpisTreści/Tom I}}}}, w module: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}.}}
{{PobierzŚródtekst|uchwyt=__FUNKCJA_ZBIERANIA_DANYCH|nazwa artykułu=StronicowyParser/SpisTreści/Tom I}}
}}
==== Fukcje lokalne ====
===== {{Śródtytuł|Spis}}{{Code|Spis}} =====
Funkcja służy do ustawiania poszczególnych spisów treści, jeżeli książka ma ich kilka. Ona służy jedynie do jednego spisu, a nie wszystkich razem, tylko oddzielnie.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Spis(tablista_artykulow,spis_tresci,tab_inne_spisy,nazwa_glownego_spisu,numer)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tablista_artykulow}} {{Patrz|tablista_artykulow}} | _1 = Tabela rozdziałów i do nich artykułów.
| 2 = {{Code|spis_tresci}} {{Patrz|spis_tresci}} | _2 = Jeżeli strona nie jest przekierowaniem, to jest wtedy łańcuch znakowy opisujący dany spis, a jeżeli właśnie jest, wtedy jest to tablica, coś w rodzaju {{Code|<nowiki>{przekierowanie_spisu_tresci,spis_tresci,}</nowiki>}}:
| 3 = Wyjaśnienie: | nagłówek3 = tak
| 4 = {{Code|przekierowanie_spisu_tresci}} {{Patrz|przekierowanie_spisu_tresci}} | _4 = Strona spis treści, która jest jednocześnie przekierowaniem.
| 5 = {{Code|spis_treści}} | _5 = Jak w: {{LinkPatrz|spis_tresci}}, tylko, że tylko łańcuch znakowy, na który wskazuje przekierowanie.
| 6 = Inne parametry: | nagłówek6 = tak
| 7 = {{Code|tab_inne_spisy}} {{Patrz|tab_inne_spisy}} | _7 = Tabela innych spisów książki, jeżeli istnieją,
| 8 = {{Code|nazwa_glownego_spisu}} {{Patrz|nazwa_glownego_spisu}} | _8 = Nazwa głównego spisu treści, zwykle jest to strona główna książki.
| 9 = {{Code|numer}} {{Patrz|numer}} | _9 = Numer, który liczmy, do którego dodajemy jeden.
}}
Parametry zwracane:
<syntaxhighlight lang="lua">
return tablista_artykulow,tab_inne_spisy,numer;
</syntaxhighlight>
Opis parametrów zwracanych:
{{OpisParametrów
| 1 = {{Code|tablista_artykulow}} | _1 = Jak w: {{LinkPatrz|tablista_artykulow}}.
| 2 = {{Code|tab_inne_spisy}} | _2 = Jak w: {{LinkPatrz|tab_inne_spisy}}.
| 3 = {{Code|numer}} | _3 = Jak w: {{LinkPatrz|numer}}.
}}
Gdy zmienna: {{Code|tablista_artykulow}} {{LinkPatrz|tablista_artykulow}}, istnieje, i ma niepustą tablicę, wtedy ta funkcja wtedy faktycznie coś robi, w przeciwnym wypadku zwraca tylko wynik.
Liczmy spis treści, na który wskazuje przekierowanie, gdy strona nie jest nim, to sama strona ze wskazania:
<syntaxhighlight lang="lua">
local czy_spis_tresci_table=parametry_modul.TypeTable(spis_tresci);
local spis_tresci_strona=czy_spis_tresci_table and spis_tresci[1] or spis_tresci;
</syntaxhighlight>
Zmienna: {{Code|spis_tresci_strona}}, to jest nic innego jak: {{Code|przekierowanie_spisu_tresci}} {{LinkPatrz|przekierowanie_spisu_tresci}}, lub tylko jest łańcuchem znakowym, według: {{Code|spis_tresci}} {{LinkPatrz|spis_tresci}}.
Policzmy zmienną: {{Code|tab_element}} {{Patrz|tab_element}}:
<syntaxhighlight lang="lua">
local tab_element={[1]={((not spis_tresci) and "Główny spis treści" or ("Spis treści - "..spis_tresci_strona)),{((spis_tresci) and 1 or nil),nil,nil,},["spis"]={spis_tresci_strona or nazwa_glownego_spisu or "",numer}},[2]=nil,[3]=nil,};
</syntaxhighlight>
Jeżeli pierwszy rozdział danego spisu nie ma numeracji, tzn. wtedy liczymy element: {{Code|tablista_artykulow[1][1][2][1]}}, to wtedy jego pozycje artykularne: {{Code|numer > 1}}, zapisujemy na sam koniec w tablicy: {{Code|tab_element}} {{LinkPatrz|tab_element}}. Następnie usuwamy pierwszy rozdział z artykułami przy pomocy funkcji: {{LzLua|table.remove}}.
Poziomy rozdziałów powiększamy o jeden aż do napotkania pierwszego rozdziału centrowanego, wtedy przerywamy pętle.
Następnym podejściem jest dodanie przed pierwsza pozycją elementu: {{Code|tab_element}} {{LinkPatrz|tab_element}}, do tablicy: {{Code|tablista_artykulow}} {{LinkPatrz|tablista_artykulow}}}, przy pomocy funkcji: {{LzLua|table.insert}}.
Jeżeli spis treści: {{Code|spis_tresci}} {{LinkPatrz|spis_tresci}}, istnieje, wtedy robimy dalsze operacje. Jeżeli tablica: {{Code|tab_inne_spisy}} {{LinkPatrz|tab_inne_spisy}}, nie istnieje, to ją tworzymy, wtedy {{Code|spis_tresci}} {{LinkPatrz|spis_tresci}}, przy pomocy: {{LzLua|table.insert}}, dodajemy do: {{Code|tab_inne_spisy}} {{LinkPatrz|tab_inne_spisy}}. Następnie jeżeli nie istnieje element {{Code|tablista_artykulow[1][2]}} {{Patrz|tablista_artykulow[1][2]}}, związany artykułami należącymi do rozdziału, to go tworzymy, wtedy tworzymy element: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, w postaci:
<syntaxhighlight lang="lua">
local tab_stare={czy_spis_tresci_table and {spis_tresci_strona,nil,przekierowanie_strona} or spis_tresci,{0,"","",true,},"[[:"..pelna_nazwa_ksiazki.."/" ..spis_tresci_strona.."]]",false,};
</syntaxhighlight>
To: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, jest opisane w module: {{lr|Moduły/StronicowyParser/SpisTreści/Tom I|Spis treści - Tom I}}.
To dodajemy na pierwszą pozycję do zbioru artykułów, do elementu: {{LinkPatrz|tablista_artykulow[1][2]}}, na pierwszą pozycję, przy pomocy funkcji: {{LzLua|table.insert}}.
Następnym krokiem jest zwracanie przez funkcję zmiennych powyżej powiedzianych.
===== {{Śródtytuł|InneSpisy}}{{Code|InneSpisy}} =====
Funkcja służy do uzyskiwania elementów danego spisu, ustawiania go odpowiedniego i wstawianie go do ogólnego spisu opisujące wszystkie spisy w danej książce.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function InneSpisy(tablista_artykulow,tab_inne_spisy,spis_tresci,numer)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tablista_artykulow}} | _1 = Jak w: {{LinkPatrz|tablista_artykulow}}.
| 2 = {{Code|tab_inne_spisy}} | _2 = Jak w: {{LinkPatrz|tab_inne_spisy}}.
| 3 = {{Code|spis_tresci}} | _3 = Jak w: {{LinkPatrz|spis_tresci}}.
| 4 = {{Code|numer}} | _4 = Jak w: {{LinkPatrz|numer}}.
}}
Uzyskujemy elementy spisu z wywołania dla pojedynczego spisu treści:
<syntaxhighlight lang="lua">
local tablista_artykulow_iter,tablica_licencji,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,spis_tresci,false,nil,__FUNKCJA_ZBIERANIA_DANYCH);
</syntaxhighlight>
Jeżeli zmienna: {{Code|tablista_artykulow_iter}} {{Patrz|tablista_artykulow_iter}} istnieje i jest tablicą, to ją przetwarzamy przy pomocy funkcji: {{LinkŚródtytuł|InneSpisy}}, w sposób:
<syntaxhighlight lang="lua">
tablista_artykulow_iter,tab_inne_spisy,numer=Spis(tablista_artykulow_iter,(not przekierowanie_spisu_tresci)and spis_tresci or {przekierowanie_spisu_tresci,spis_tresci,},tab_inne_spisy,nil,numer);
</syntaxhighlight>
Tak otrzymanną zmienną: {{Code|tablista_artykulow_iter}} {{LinkPatrz|tablista_artykulow_iter}}, iterujemy po elementach wsadzając ją do tablicy na sam koniec: {{Code|tablista_artykulow}} {{LinkPatrz|tablista_artykulow}}, a jak tak tablica nie istnieje, to ją tworzymy z pustą tablicą, i wtedy wykonujemy tą operację. To wsadzanie wykonujemy za pomocą funkcji: {{LzLua|table.insert}}.
Na samym końcu zwracamy wiele elementów:
<syntaxhighlight lang="lua">
return tablista_artykulow,tab_inne_spisy,numer;
</syntaxhighlight>
===== {{Śródtytuł|SpisRzeczy}}{{Code|SpisRzeczy}} =====
Funkcja przygotowuje aktualny spis treści, by dodać do niego nowy spis, jeżeli on istnieje, jako artykuł w spisie o nazwach: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function SpisRzeczy(tabela_artykulow,tab_inne_spisy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tabela_artykulow}} | _1 = Jak w: {{LinkPatrz|tabela_artykulow}}.
| 2 = {{Code|tab_inne_spisy}} | _2 = Jak w: {{LinkPatrz|tab_inne_spisy}}.
}}
Uruchamiamy funkcję: {{LinkŚródtytuł|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}}, która zwraca wynik, który trzeba sprawdzić, czy istnieje, przed dalszymi operacjami, tzn. {{Code|artykul_spisu_rzeczy}} {{Patrz|artykul_spisu_rzeczy}}, uzyskując z aktualnej listy spis treści dla całej książki, jako jego zespołu, na podstawie jego dowiadujemy, ża taki omawiany spis istnieje, wtedy stary spis, czyli stronę główną podręcznika, przygotujemy do tego, do tego robimy funkcją: {{LinkŚródtytuł|Spis}}, wywołaniem, ale przed tymwywołaniem ustawiamy: {{Code|numer {{=}} 1}}, zatem:
<syntaxhighlight lang="lua">
tabela_artykulow,tab_inne_spisy,numer=Spis(tabela_artykulow,nil,tab_inne_spisy,"",numer);
</syntaxhighlight>
Następnym krokiem jest czytanie tego spisu przy pomocy wywołania: {{LinkŚródtytuł|InneSpisy}}, jako:
<syntaxhighlight lang="lua">
tabela_artykulow,tab_inne_spisy,numer=InneSpisy(tabela_artykulow,tab_inne_spisy,artykul_spisu_rzeczy,numer);
</syntaxhighlight>
Funkcja używa zmiennej uzyskanego wcześniej, tzn.: {{Code|artykul_spisu_rzeczy}} {{LinkPatrz|artykul_spisu_rzeczy}}, to jest to samo, co: {{Code|artykul_bez_naglowka_w_bazie}} {{LinkPatrz|artykul_bez_naglowka_w_bazie}}, uzyskanej z funkcji liczący taki spis według: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}, którym wartością jest nazwa artykułu bez nagłówka w bazie.
Wartościami zwracanymi przez funkcję dwie osobne zmienne zrzucane jednocześnie:
<syntaxhighlight lang="lua">
return tabela_artykulow,tab_inne_spisy;
</syntaxhighlight>
Jest to ogólna tabela wszystkich rozdziałów i do nich ich artykułów, i uzupełniona lista innych spisów treści.
===== {{Śródtytuł|IteratorSpisTresci}}{{Code|IteratorSpisTresci}} =====
Funkcja uruchamiająca iterator po spisach treści innych niż spis treści główny, jego definicja:
<syntaxhighlight lang="lua">
local IteratorSpisTresci=function()
local liczba=1;
return function()
local spis_tresci=tabela_parametrow_szablonu_uklad_autonawigacji["spis treści "..liczba];
liczba=liczba+1;
return spis_tresci;
end;
end;
</syntaxhighlight>
Funkcja wykorzystuje tablicę parametrów autonawigacji ze strony ściśle określonej z katalogu stron: {{Code|NawigacjaSpecjalna/Nawigacja/...}} {{LinkPatrz|NawigacjaSpecjalna/Nawigacja/}}, iteruje co jeden numer spisu treści, tzn.: {{Code|spis treści 1}}, {{Code|spis treści 2}},..., {{Code|spis treści N}}, gdzie {{Code|N}}, to największa liczba charakteryzująca dany spis treści. W samym iteratorze liczba: {{Code|liczba}} {{Patrz|liczba-IteratorSpisTresci}}, powiększa się co jeden, aż do zakończenia limitu spisów treści, tzn do najbliżeszej przerwy lub końca przy iteracji, bo na samym końcu iterator zrzuci wynik {{Code|nil}}.
===== {{Śródtytuł|IteratorFun}}{{Code|IteratorFun}} =====
Funkcja iteruje po stronach i ich nazwach, jakie mają być wyświetlane w linkach, generowane przez: {{Code|{{s|Autonawigacja}}}} {{LinkPatrz|Autonawigacja}}, ale na podstawie {{Code|{{s|Układ autonawigacji}}}} {{LinkPatrz|Układ autonawigacji}}, według jednych ze stron: {{Code|NawigacjaSpecjalna/Nawigacja/...}} {{LinkPatrz|NawigacjaSpecjalna/Nawigacja/}}, ustawień.
Definicja skrótowa funkcji i jego funnkcji zwracanej, która jest iteratorem:
<syntaxhighlight lang="lua">
local IteratorFun=function()
... ---- operacje robione przed uruchomieniem iteratora;
return function()
... ---- ciało iteratora
return strona,nazwa; ---- zwracane elementy;
end;
end;
</syntaxhighlight>
Definicja funkcji: {{Code|STRONA}} {{Patrz|STRONA}} i {{Code|NAZWA}} {{Patrz|NAZWA}}, są:
<syntaxhighlight lang="lua">
local STRONA=function(liczba)return liczba*2-1;end;
local NAZWA=function(liczba)return liczba*2;end;
</syntaxhighlight>
W iteratorze dostępna jest zmienna: {{Code|tabela_parametrow_szablonu_uklad_autonawigacji}} {{Patrz|tabela_parametrow_szablonu_uklad_autonawigacji}}, z którego uzyskujemy parametry, te wywołania są napisane w ciele iteratora, w sposób:
<syntaxhighlight lang="lua">
local strona=tabela_parametrow_szablonu_uklad_autonawigacji[STRONA(liczba)];
local nazwa=tabela_parametrow_szablonu_uklad_autonawigacji[NAZWA(liczba)];
</syntaxhighlight>
Iterację zaczynamy od {{Code|liczba}} {{Patrz|liczba-IteratorFun}} od jedynki, po uzyskaniu powyższych wartości, licznik (tą liczbę) powiększamy o jeden, a następnie zwracamy w iteratorze zmienne: {{Code|strona}} {{Patrz|strona}} i {{Code|nazwa}} {{Patrz|nazwa}}.
===== {{Śródtytuł|ZbieranieDanychStronZAutonawigacji}}{{Code|ZbieranieDanychStronZAutonawigacji}} =====
Jest to funkcja do zbierania danych z jednego ze ściśle określonej strony szablonu z: {{Code|NawigacjaSpecjalna/Nawigacja/...}} {{LinkPatrz|NawigacjaSpecjalna/Nawigacja/}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function ZbieranieDanychStronZAutonawigacji()...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = Brak parametrów. | komórka1 = tak
}}
Gdy parametr z iteracji iteratorem: {{Code|iter}}, z którego przy jego kolejnych wywołaniach otrzymujemy parametry: {{Code|strona}} {{LinkPatrz|strona}}, i {{Code|nazwa}} {{LinkPatrz|nazwa}}, dla: {{Code|strona}} {{LinkPatrz|strona}}, jest równy wartości odpowiadającej fałszywej, wtedy funkcja zakańcza pracę. W przeciwnym wypadku te parametry są dekodowane funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, z drugim parametrem: {{Code|true}}, ale nazwa jest dekodowana, gdy ona jest niepusta.
Gdy zmienna: {{Code|dodatkowe_artykuly}} {{LinkPatrz|dodatkowe_artykuly}}, nie istnieje, to wtedy ją tworzymy, inicjując ją pustą tablicą, oraz inicjujemy tabelę artykułów dodatkowych wykorzystując funkcję: {{LzLua|table.insert}}:
<syntaxhighlight lang="lua">
table.insert(tablista_artykulow,{[1]={"Dodatkowe artykuły",{1,nil,nil},["dodatkowe"]="tak",},[2]=nil,});
</syntaxhighlight>
Następnie liczymy parametr dla danego rozdziału, tzn. liczymy: {{Code|tabela_rozdzial_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}, według:
<syntaxhighlight lang="lua">
tabela_rozdzial_artykulow=tablista_artykulow[#tablista_artykulow];
</syntaxhighlight>
Następnie liczyny adres bezwzględny: {{Code|strona}} {{LinkPatrz|strona}} z funkcji: {{Code|{{sr|#p["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]|p=Techniczne}}}}, według wywołania, znająć dwa parametry: {{Code|strona}} {{LinkPatrz|strona}} i {{Code|pelna_nazwa_ksiazki}} {{Patrz|pelna_nazwa_ksiazki}}, czyli:
<syntaxhighlight lang="lua">
strona=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=strona,[2]=pelna_nazwa_ksiazki,};
</syntaxhighlight>
====== {{Śródtytuł|WsadzanieParametryDoTablicy}}{{Code|WsadzanieParametryDoTablicy}} ======
Jest to funkcja wsadzająca elementy do tablicy do funkcji: {{Code|{{sr|#WstawianieElementowychZarejestrowanychStronDoBazyWoluminu|p=StronicowyParser/SpisTreści/Tom I}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local WsadzanieParametryDoTablicy=function(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tabela_rozdzial_artykulow}} {{Patrz|tabela_rozdzial_artykulow}} | _1 = Tabela rozdziału i do niego artykułów.
| 2 = {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{Patrz|numer_rodzaju_artykulow_w_nie_podreczniku}} | _2 = Numer pozycji na którym element zostonie element {{LinkPatrz|tab_stare}} wstawiony.
| 3 = {{Code|tab_stare}} {{LinkPatrz|tab_stare}} | _3 = Wstawiany element.
}}
Jeżeli zmienna: {{Code|dodatkowe_artykuly}} {{Patrz|dodatkowe_artykuly}}, nie istnieje, to jest inicjowana tablicą pustą.
Liczymy adres strony na podstawie:
<syntaxhighlight lang="lua">
---- Jeżeli zmienna jest tablicą i nie ma klucza: "["LINK"]=true", wtedy przyjmuje wartość: true, w przeciwnym wypadku: false;
local czy_table_baza_artykulu=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(tab_stare[1]);
---- Nazwa artykułu lub adres strony, dla ktorej liczymy adres;
local adres=czy_table_baza_artykulu and tab_stare[1][1] or tab_stare[1];
</syntaxhighlight>
Liczymy, czy strona jest w podręczniku, czyli: {{Code|czy_w_podreczniku}} {{Patrz|czy_w_podreczniku}}, ze: {{Code|tab_stare[5]}} {{Patrz|tab_stare[5]}}, a następnie kod języka i projektu, kolejno: {{Code|kod_jezyka_koncowy}} {{Patrz|kod_jezyka_koncowy}}, i {{Code|kod_projektu_koncowy}} {{Patrz|kod_projektu_koncowy}}, jeżeli zmienna: {{Code|czy_table_baza_artykulu}} {{Patrz|czy_table_baza_artykulu}}, jest nie równa wartości prawdziwej, to te zmienne przyjmuje wartość {{Code|nil}}, w przeciwnym wypadku kolejno wartości: {{Code|tab_stare[1][5]}} i {{Code|tab_stare[1][6]}}.
Wsadzamy element do tablicy: {{Code|dodatkowe_artykuly}} {{LinkPatrz|dodatkowe_artykuly}}, przy pomocy funkcji: {{LzLua|table.insert}}, w sposób:
<syntaxhighlight lang="lua">
table.insert(dodatkowe_artykuly,{((adres) and (kod_jezyka_koncowy or kod_projektu_koncowy) and({adres,kod_jezyka_koncowy,kod_projektu_koncowy,}) or adres),nazwa,czy_w_podreczniku,});
</syntaxhighlight>
Póżniej wstawiamy element: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, do: {{Code|tabela_rozdzial_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}, na pozycję: {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, używając wywołania {{LzLua|table.insert}}, czyli:
<syntaxhighlight lang="lua">
table.insert(tabela_rozdzial_artykulow[numer_rodzaju_artykulow_w_nie_podreczniku],tab_stare);
</syntaxhighlight>
====== Dalszy opis funkcji nadrzędnej ======
Dalszym krokiem jest wsadzenie elementu do ogólnej tablicy, a tutaj do artykułu w danym rozdziale, robimy, mając przetwarzaną zmienną: {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}}, to według:
<syntaxhighlight lang="lua">
local numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy;
numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych=WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,WsadzanieParametryDoTablicy,...,...,true,{strona,nazwa,},...,...,...,"",...,...,tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji,tablica_danych_parametrow_szablonu_strony_uklad_autonawigacji,nil,nil,...,--[[]]"*","",false,"[[:"..strona..((parametry_modul.CzyTak(nazwa))and("|"..nazwa) or "").."]]");
</syntaxhighlight>
Powyżej użyto trójkropków: {{Code|...}}, bo te parametry są standardowe dla każdego wywołania.
Powyżej wstawianie odbyło się przy pomocy funkcji: {{LinkŚródtytuł|WsadzanieParametryDoTablicy}}, używając: {{Code|{{sr|#WstawianieElementowychZarejestrowanychStronDoBazyWoluminu|p=StronicowyParser/SpisTreści/Tom I}}}}, w której jest tworzone: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, który natomiast jest wsadzany do ogólnej tablicy rozdziałów i w nich artykułach na odpowiednią pozycję. W wstawianym elemencie ustawiamy stuczną listę z początkiem: {{Code|<nowiki>*</nowiki>}}, z numeracją pusta, i linią artykułu, którą jest link:
<syntaxhighlight lang="lua">
"[[:"..strona..((parametry_modul.CzyTak(nazwa))and("|"..nazwa) or "").."]]"
</syntaxhighlight>
A dalej należy zapoznać się z funkcją przetwarzającą dane przed wsadzeniem do ogólnej tablicy.
==== Dalszy opis funkcji głównej ====
Liczymy adres strony głównej podręcznika: {{Code|pelna_nazwa_ksiazki}} {{LinkPatrz|pelna_nazwa_ksiazki}}, z funkcji: {{Code|{{sr|#m["NazwaModułu"]|p=Nazwy/Tom III}}}}, i sprawdzamy, czy strona istnieje na podstawie funkcji: {{Code|{{sr|#p.PoliczZbiory|p=Techniczne}}}}. Jeśli strona istnieje, wtedy liczymy, czy istnieje jego przekierowanie z funkcji: {{Code|{{sr|#p.PrzekierowanieDoStrony|p=Techniczne}}}},a jeżeli istnieje jego przekierowanie, to wtedy wartość tej funkcją jest stroną na którą wskazuje to przekierowanie, oznaczmy tą zmienną: {{Code|strona_spisu_tresci}} {{Patrz|strona_spisu_tresci}}.
Jeżeli: {{Code|strona_spisu_tresci}} {{LinkPatrz|strona_spisu_tresci}}, istnieje, wtedy jego nazwę dekodujemy funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, z drugim parametrem {{Code|true}}.
Używając tabeli nazw, tzn.: {{Code|tabela_nazw}} {{Patrz|tabela_nazw}}, której przydzielamy wartość pustą, liczymy kolejno: {{Code|nazwa_przestrzeni2}} {{Patrz|nazwa_przestrzeni2}}, {{Code|nazwa_przestrzeni_ksiazki2}} {{Patrz|nazwa_przestrzeni_ksiazki2}} i {{Code|nazwa_ksiazki2}} {{Patrz|nazwa_ksiazki2}}, z następujących funkcji kolejno: {{Code|{{sr|#m.NAZWAPRZESTRZENI|p=Nazwy/Tom II}}}}, {{Code|{{sr|#m["NAZWAPRZESTRZENIKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, albo: {{Code|{{sr|#m["NAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, gdy: {{Code|nazwa_przestrzeni_ksiazki2}} {{LinkPatrz|nazwa_przestrzeni_ksiazki2}}, jest pusta, przeciwnie z: {{Code|{{sr|#m["SUBNAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}. Sprawdzamy, czy one pokrywają się kolejno z: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, i {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki}}, a jeżeli w całości, wtedy sprawdzamay, czy to z {{Code|2}} należą do przestrzeni nazw i niby-przestrzenu nazw książkowych. Przestrzenie ksiązkowe, to: {{Np|(main)|link=tak}}, {{Np|Wikijunior|link=tak}}, oraz {{Np|User|link=tak}}, w niby przestreni nazw: '''{{Np|User|link=tak}}:<użytkownik>/''', i {{Np|Project|link=tak}} w niby-przestrzeni nazw: '''{{Np|Project|link=tak}}:Brudnopis/<użytkownik>/''', jeżeli do tej przestrzeni nie należy, to funkcja kończy się z błędem (z wartością) {{Code|2}}, przeciwnie tworzona jest zmienna {{Code|adres_ksiazki_glownego_spisu_tresci}} {{Patrz|adres_ksiazki_glownego_spisu_tresci}}:
<syntaxhighlight lang="lua">
adres_ksiazki_glownego_spisu_tresci={nazwa_przestrzeni2,nazwa_przestrzeni_ksiazki2,nazwa_ksiazki2,};
</syntaxhighlight>
Także jest tam wywoływana funkcja: {{Code|__FUNKCJA_SPISU_RZECZY}} {{LinkPatrz|__FUNKCJA_SPISU_RZECZY}}, jeśli istnieje:
<syntaxhighlight lang="lua">
local wynik=__FUNKCJA_SPISU_RZECZY and __FUNKCJA_SPISU_RZECZY(nazwa_przestrzeni2,nazwa_przestrzeni_ksiazki2,nazwa_ksiazki2) or nil;
</syntaxhighlight>
Jeżeli ta funkcja nie istnieje, lub zwraca {{Code|nil}} lub nawet {{Code|1}}, wtedy funkcja zakańcza się z błędem: {{Code|1}}, przeciwnie na podstawie tego z {{Code|2}}, jest przyrównywanie tego temu bez tego, wtedy mamy nowe parametry nazw bez {{Code|2}}. I na podstawie tego liczymy nową nazwę: {{Code|pelna_nazwa_ksiazki}} {{LinkPatrz|pelna_nazwa_ksiazki}}.
Liczymy adres ustawień z: {{Code|NawigacjaSpecjalna/Nawigacja/...}} {{LinkPatrz|NawigacjaSpecjalna/Nawigacja/}}, i sprawdzamy, czy on ma przekierowanie z: {{Code|{{sr|#p.PrzekierowanieDoStrony|p=Techniczne}}}}, wtedy ma nowy adres, dalej liczymy jego kod źdrudłowy z funkcji: {{Code|{{sr|#p.WikikodStrony|p=Techniczne}}}}, przy pomocy funkcji:
<syntaxhighlight lang="lua">
local tekst=techniczne_modul.WikikodStrony{["przestrzeń"]="",["nazwa"]=adres_ustawien,};
</syntaxhighlight>
A jeżeli taka strona nie istnieje, wtedy: {{Code|tekst}}, przyjmuje wartość: {{Code|nil}}, wtedy wywołujemy kod pojedynczego spisu treści {{Patrz|pojedyncze_wywolanie}}, czyli strony głównej podręcznika (książki):
<syntaxhighlight lang="lua">
---- Zbieranie parametrów pojedynczego spisu (strony głównej strony jako spisu treści)
local tabela_artykulow,tabela_licencji_spisu_tresci,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"",czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH);
local tab_inne_spisy;
---- Sprawdzanie, czy dodatkowy spis treści istnieje , taki jak: "Spis treści", i przekształcanie tablic otrzymanych z poprzedniego wywołania;
tabela_artykulow,tab_inne_spisy=SpisRzeczy(tabela_artykulow,nil);
---- Zwracanie parametrów;
return tabela_artykulow,tabela_licencji_spisu_tresci,(not przekierowanie_spisu_tresci) and "" or {przekierowanie_spisu_tresci,"",},tab_inne_spisy,nil,adres_ksiazki_glownego_spisu_tresci;
</syntaxhighlight>
Przeciwnie kodujemy ten tekst: {{Code|tekst}} {{Patrz|tekst}}, przy pomocy pustej tabeli: {{Code|tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji}}. Co na podstawie liczmy tego parametry szablonu o: {{Code|obiekt}} {{=}} {{Code|SZABLON}}, w nim o nazwie: {{Code|{{sr|#p.uklad_autonawigacji|p=StronicowyParser/obiekty}}}}, czyli: {{Code|tabela_parametrow_szablonu_uklad_autonawigacji}} {{LinkPatrz|tabela_parametrow_szablonu_uklad_autonawigacji}}, również: {{Code|nazwa_szablonu_uklad_autonawigacji}} {{Patrz|nazwa_szablonu_uklad_autonawigacji}}, i {{Code|tabela_modyfikatorow_uklad_autonawigacji}} {{Patrz|tabela_modyfikatorow_uklad_autonawigacji}}, a także: {{Code|szablon_uklad_autonawigacji}} {{Patrz|szablon_uklad_autonawigacji}}, dalej przerywamy pętle. Jeżeli nie wykryto szablonu autonawigacji, wtedy zakańczamy funkcje jak w punkcie: {{LinkPatrz|pojedyncze_wywolanie}}. A jeżeli nie ma tabeli parametrów szablonu: {{Code|tabela_parametrow_szablonu_uklad_autonawigacji}} {{LinkPatrz|tabela_parametrow_szablonu_uklad_autonawigacji}}, to też podobnie.
A jeżeli chcemy liczyć manualnie, wtedy musimy powiedzieć:
<syntaxhighlight lang="lua">
local automat_manualny=tabela_parametrow_szablonu_uklad_autonawigacji["automat manualny"];
</syntaxhighlight>
Jeżeli wartość tej zmiennej: {{Code|automat_manualny}} {{Patrz|automat_manualny}}, jest nie {{Code|nil}}, i jest niepusta, to ze zmiennej: {{Code|spis treści}} {{Patrz|spis treści}}, liczmy z tego nazwę książki i ona musi się zgadzać ze zmienną: {{Code|pelna_nazwa_ksiazki}} {{LinkPatrz|pelna_nazwa_ksiazki}}, co po zgadzaniu, liczmy nazwę artykułu nazwy artykułu, w przeciwnym wypadku mamy do czynienia ze stroną główną podręcznika, wartość pusta będzie odpowiadała stronie głównej podręcznika, co na sam koniec liczymy:
<syntaxhighlight lang="lua">
---- Zbieranie parametrów pojedynczego o policzoej nazwie artykułu spisu;
local tabela_artykulow,tabela_licencji_spisu_tresci,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,sub_nazwa_spis_tresci,czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH);
---- Sprawdzanie, czy dodatkowy spis treści istnieje , taki jak: "Spis treści", i przekształcanie tablic otrzymanych z poprzedniego wywołania;
tabela_artykulow,tab_inne_spisy=SpisRzeczy(tabela_artykulow,nil);
---- Zwracanie parametrów;
return tabela_artykulow,tabela_licencji_spisu_tresci,(not przekierowanie_spisu_tresci) and sub_nazwa_spis_tresci or {przekierowanie_spisu_tresci,sub_nazwa_spis_tresci,},tab_inne_spisy,nil,adres_ksiazki_glownego_spisu_tresci;
</syntaxhighlight>
Gdy zmienna: {{Code|automat_manualny}} {{LinkPatrz|automat_manualny}}, jest pusta lub nie podana, wtedy następnym krokiem jest odkodowanie parametrów: {{Code|{{s|Układ autonawigacji}}}} {{LinkPatrz|Układ autonawigacji}}, przy pomocy: {{Code|tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji}}, i ich rozwinięcie funkcją: {{LzLua|frame:preprocess}}.
Ustawmy zmienną: {{Code|numer}} {{LinkPatrz|numer}} na wartość {{Code|1}}.
Liczymy zmienne: {{Code|bez spisów treści}} {{Patrz|bez spisów treści}}, i {{Code|bez analizy spisów treści}} {{Patrz|bez analizy spisów treści}}, tabeli parametrów: {{Code|tabela_parametrow_szablonu_uklad_autonawigacji}} {{LinkPatrz|tabela_parametrow_szablonu_uklad_autonawigacji}}, oraz sprawdzamy, czy one są niepuste.
Gdy zmienna: {{Code|bez spisów treści}} {{LinkPatrz|bez spisów treści}}, jest niepodana lub pusta, wtedy liczymy z klucza: {{Code|spis treści}} {{LinkPatrz|spis treści}}, ze zmiennej: {{Code|tabela_parametrow_szablonu_uklad_autonawigacji}} {{LinkPatrz|tabela_parametrow_szablonu_uklad_autonawigacji}}, a jeżeli ta zmienna istnieje, wtedy ją dekodujemy funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, z drugim parametrem {{Code|true}}, i liczymy jego adres bezwzględny z funkcji: {{Code|{{sr|#p["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]|p=Techniczne}}}}, mając względem, którego ma liczyć, tzn.: {{Code|pelna_nazwa_ksiazki}} {{LinkPatrz|pelna_nazwa_ksiazki}}.
Następnie sprawdzamy, czy w policzonym spisie nazwa ksiązki zgadza się z tą: {{Code|pelna_nazwa_ksiazki}} {{LinkPatrz|pelna_nazwa_ksiazki}}, a jeżeli się zgadza, to liczymy nazwę artylułu spisu treści, przeciwnie nazwa artykułu spisu treści ma wartość pustą, wartość pusta nazwy artykułu spisu treści odpowiada stronie głównej podręcznika. W innym wypadku, gdy zmienna: {{Code|bez spisów treści}} {{LinkPatrz|bez spisów treści}} jest niepusta, wtedy tylko uwzględniamy nazwę spisu treści jako stronę główną podręcznika. Tą zmienną jest: {{Code|nazwa_glownego_spisu}} {{LinkPatrz|nazwa_glownego_spisu}}.
Gdy zmienne: {{Code|bez spisów treści}} {{LinkPatrz|bez spisów treści}}, i {{Code|bez analizy spisów treści}} {{LinkPatrz|bez analizy spisów treści}}, są niepodane lub puste, wtedy liczymy pojedynczy artykuł będący spisem treści o nazwie: {{Code|nazwa_glownego_spisu}} {{LinkPatrz|nazwa_glownego_spisu}}, zatem tego wywołanie wygląda tak:
<syntaxhighlight lang="lua">
tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika,tabela_licencji_ksiazek_wedlug_strony_glownej_podrecznika,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_glownego_spisu,czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH);
</syntaxhighlight>
Napiszmy przemianowania zmiennych na: {{Code|tablista_artykulow}} {{LinkPatrz|tablista_artykulow}}, i {{Code|licencja}} {{Patrz|licencja}}, według:
<syntaxhighlight lang="lua">
tablista_artykulow=tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika;
licencja=tabela_licencji_ksiazek_wedlug_strony_glownej_podrecznika;
</syntaxhighlight>
Gdy zmienna: {{Code|przekierowanie_spisu_tresci}} {{LinkPatrz|przekierowanie_spisu_tresci}}, ma wartość odpowiadającej prawidziwej, czyli to pewien łańcuch znakowy, wtedy policzmy {{LinkPatrz|nazwa_glownego_spisu}} dla tego przekierowania:
<syntaxhighlight lang="lua">
nazwa_glownego_spisu={przekierowanie_spisu_tresci,nazwa_glownego_spisu,};
</syntaxhighlight>
Jeśli wartość: {{Code|tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika}} {{Patrz|tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika}}, jest {{Code|nil}}, lub {{Code|0}}, wtedy funkcja jest zakańczana w sposób:
<syntaxhighlight lang="lua">
return tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika;
</syntaxhighlight>
Lub przeciwnie, liczymy spis treści odpowiadającym wartością tabeli: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}, zatem to policzmy, czy tak jest, schematycznie:
<syntaxhighlight lang="lua">
---- Przygotowanie spisu do wielu spisów treści;
tablista_artykulow,tab_inne_spisy,numer=Spis(tablista_artykulow,nil,tab_inne_spisy,nazwa_glownego_spisu,numer);
---- Liczenie czy jest artykuł w spisie treści o nazwie typu: "Spis treści";
local artykul_spisu_rzeczy=p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku(tablista_artykulow);
if(artykul_spisu_rzeczy)then
---- Dodaje spis nowy do większego spisu, ten wykryty zaraz powyższą funkcją;
tabela_artykulow,tab_inne_spisy,numer=InneSpisy(tablista_artykulow,tab_inne_spisy,artykul_spisu_rzeczy,numer);
end;
</syntaxhighlight>
Uruchamiamy iterator: {{Code|iter}} {{Patrz|iter}}, z funkcji: {{LinkŚródtytuł|IteratorSpisTresci}}, bez parametrów, zdefiniowanej w tym bloku, co jest ta iteracja, wtedy możemy je iterować po spisie treści w sposób:
<syntaxhighlight lang="lua">
for spis_tresci in iter do
.... ---- ciało iterowanej pętli;
end;
</syntaxhighlight>
Każdy tak uzyskany: {{Code|spis_treści}} {{LinkPatrz|spis_treści}}, dekodujemy funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, następnie rozwijamy adres względny na bezwzględny względem korzenia drzewa przestrzeni nazw z funkcji: {{Code|{{sr|#p["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]|p=Techniczne}}}}, i dodajemy te spisy do głównego drzewa tablicy rozdziałów i ich artykułów przy pomocy funkcji: {{LinkŚródtytuł|InneSpisy}}, właśnie tak:
<syntaxhighlight lang="lua">
tablista_artykulow,tab_inne_spisy,numer=InneSpisy(tablista_artykulow,tab_inne_spisy,spis_tresci,numer);
</syntaxhighlight>
Uruchomimy inny iterator: {{Code|iter}} {{LinkPatrz|iter}}, z funkcji: {{LinkŚródtytuł|IteratorFun}}, wywołanej bezparametrowo, wtedy iterację możemy napisać wykorzystujac funkcję: {{LinkŚródtytuł|ZbieranieDanychStronZAutonawigacji}}, zdefiniowanej w tej pętli, działającą tak:
<syntaxhighlight lang="lua">
for strona,nazwa in iter do
... ---- definicja funkcji: ZbieranieDanychStronZAutonawigacji;
ZbieranieDanychStronZAutonawigacji();
end;
</syntaxhighlight>
Funkcja w nagłówku zwraca wielowartościowy, wtedy wynik na samym końcu zakończenia jej jest:
<syntaxhighlight lang="lua">
return tablista_artykulow,licencja,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,adres_ksiazki_glownego_spisu_tresci;
</syntaxhighlight>
; Opis zwracanych parametrów{{dk}}
{{OpisParametrów
| 1 = {{Code|tablista_artykulow}} | _1 = Jak w: {{LinkPatrz|tablista_artykulow}}.
| 2 = {{Code|licencja}} | _2 = Jak w: {{LinkPatrz|licencja}}.
| 3 = {{Code|nazwa_glownego_spisu}} | _3 = Jak w: {{LinkPatrz|nazwa_glownego_spisu}}.
| 4 = {{Code|tab_inne_spisy}} | _4 = Jak w: {{LinkPatrz|tab_inne_spisy}}.
| 5 = {{Code|dodatkowe_artykuly}} | _5 = Jak w: {{LinkPatrz|dodatkowe_artykuly}}.
| 6 = {{Code|adres_ksiazki_glownego_spisu_tresci}} | _6 = Jak w: {{LinkPatrz|adres_ksiazki_glownego_spisu_tresci}}.
}}
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
26r6nasj0fnn9mb51uaz158v8pv9hbk
Moduł:StronicowyParser/SzablonyTekstu
828
63668
558361
557771
2026-10-02T21:33:09Z
Persino
2851
558361
Scribunto
text/plain
local p={};
p.PreparowanieSzablonoweLinkoweSzablonuTekstu=function(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu,czy_bez_preprocess)
--if(true)then return tekst;end;
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local szablony_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane;
local numerowane_obiekty=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty;
local nienumerowane_obiekty_napisu_wprowadzenia_tekstu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu;
local nienumerowane_obiekty_tekstu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
----
tablica_analizy_obiektow_strony_dany_modul=tablica_analizy_obiektow_strony_dany_modul or __tablica_analizy_obiektow_strony_dany_modul;
tablica_danych_parametrow_szablonu_strony=tablica_danych_parametrow_szablonu_strony or __tablica_danych_parametrow_szablonu_strony;
----
local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
--if(true)then return nil,true;end;
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,__tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,
function(__tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(szablony_tekstu[nazwa_szablonu])then
local tekst=p.ParametrTekstowySzablonuTekstu(__tabela_parametrow_szablonu);
tabela_parametrow_szablonu=tabela_parametrow_szablonu or __tabela_parametrow_szablonu;
local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod)
if(obiekt=="ZMIENNA")then
local klucz=mw.ustring.match(szablon,"^%{%{%{%s*klucz(%d*)%s*%|.*%}%}%}$") or mw.ustring.match(szablon,"^%{%{%{%s*klucz(%d*)%s*%}%}%}$");
if(klucz)then
if((klucz=="")or(mw.ustring.match(klucz,"^[1-9]%d*$")))then
local wartosc_klucz=tabela_parametrow_szablonu["klucz"..klucz];
wartosc_klucz=wartosc_klucz and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(wartosc_klucz,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true,true) or wartosc_klucz;
if(wartosc_klucz)then return wartosc_klucz;end;
end;
end;
end;
return nil,true;
end);
local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,__tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(
(numerowane_obiekty[nazwa_szablonu])
or(nienumerowane_obiekty_napisu_wprowadzenia_tekstu[nazwa_szablonu])
or(nienumerowane_obiekty_tekstu[nazwa_szablonu])
)then
local uchwyt=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1];
local nazwa_artykulu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[2];
local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[3];
uchwyt=uchwyt and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(uchwyt,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true) or uchwyt;
nazwa_artykulu=nazwa_artykulu and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(nazwa_artykulu,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true) or nazwa_artykulu;
nazwa_ksiazki=nazwa_ksiazki and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(nazwa_ksiazki,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true) or nazwa_ksiazki;
tabela_parametrow_szablonu["uchwyt"]=uchwyt;tabela_parametrow_szablonu[1]=nil;
mw.log(nazwa_artykulu_tekstu,nazwa_modulu_ksiazki_tekstu,czy_bez_preprocess)
tabela_parametrow_szablonu["nazwa artykułu"]=nazwa_artykulu or (not czy_bez_preprocess)and nazwa_artykulu_tekstu or nil;tabela_parametrow_szablonu[2]=nil;
tabela_parametrow_szablonu["nazwa książki"]=nazwa_ksiazki or (not czy_bez_preprocess) and nazwa_modulu_ksiazki_tekstu or nil;tabela_parametrow_szablonu[3]=nil;
local szablon=szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,false);
__tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
__tablica_danych_parametrow_szablonu_strony[1][kod].parametry=nil;
end;
return nil;
end);
end;
return nil,true;
end);
end;
end);
end;
return nil,true;
end,nil,
function(szablon,obiekt,kod,poziom_iteracji,tekst)
if(poziom_iteracji>0)then
return nil;
end;
return szablon;
end);
return tekst;
end;
function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu)
local tekst=tabela_parametrow_szablonu["tekst"] or tabela_parametrow_szablonu["treść"] or tabela_parametrow_szablonu[1];
return tekst;
end;
function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu)
return tabela_parametrow_szablonu["bez preprocess"];
end;
function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2)
if(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end;
for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)do
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,pozycja);
end;
end;
end;
function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany)
if(not czy_artykul_korzystany)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{
{wartosc_elementu,lista_dwuelementowa,},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
{tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,},
});
else
if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{
{wartosc_elementu,lista_dwuelementowa,},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
{tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,},
});
end;
end;
function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)
local tablica_szablonu_tekstu;
if(czy_artykul_korzystany)then
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych;
else
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych;
end;
if(tablica_szablonu_tekstu)then
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local nazwa_obiektu_tekstu=pozycja[1][1];
local uchwyt_obiektu_tekstu=pozycja[1][2][1];
if((nazwa_obiektu_tekstu==nazwa_obiektu)and(uchwyt_obiektu_tekstu==uchwyt_obiektu))then
local dodatkowe_elementy=pozycja[2];
local czy_tak=false;
for _,pozycja_dodatkowe in ipairs(dodatkowe_elementy)do
if((pozycja_dodatkowe[1]==obiekt)and(pozycja_dodatkowe[2]==kod))then
czy_tak=true;
break;
end;
end;
if(not czy_tak)then
local tab_numer;
if(tablica_zmiennych)then
tab_numer={};
for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do
tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name];
end;
end;
table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer});
break;
end;
end;
end;
end;
end;
function p.UstawPobierzKorzystanie(tablica_zmiennych2)
if(tablica_zmiennych2.tablica_szablonu_tekstu_linkowe_korzystane)then
for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_linkowe_korzystane)do
if(not pozycja[3])then
pozycja[3]=true;
local nazwa_obiektu=pozycja[1][1];
local uchwyt_obiektu=pozycja[1][2];
local obiekt=pozycja[2][1];
local kod=pozycja[2][2];
p.UstawianiePobierz(nil,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,true);
end;
end;
end;
end;
function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane)
local __tablica_analizy_obiektow_strony_dany_modul=(pozycja[4] or{})[1] or tablica_analizy_obiektow_strony_dany_modul;
local __tablica_danych_parametrow_szablonu_strony=(pozycja[4] or {})[2] or tablica_danych_parametrow_szablonu_strony;
local __obiekt=(pozycja[3] or {})[2];
local __kod=(pozycja[3] or {})[3];
local __szablon=__tablica_analizy_obiektow_strony_dany_modul[__obiekt][__kod];
local szablonowe_modul=require("Module:Szablonowe");
local bez_preprocess=p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu);
local parametry_modul=require("Module:Parametry");
local czy_bez_preprocess=parametry_modul.CzyTak(bez_preprocess);
local nazwa_modulu_ksiazki_tekstu=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[3];
local nazwa_artykulu_tekstu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[2];
local tekst_szablon=p.PreparowanieSzablonoweLinkoweSzablonuTekstu(szablonowe_modul.NormaKoduKodowaniaTekstu(__obiekt,__kod),nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu,czy_bez_preprocess);
local __tabela_parametrow_szablonu=pozycja[3][1][1];
----
local tekst=p.ParametrTekstowySzablonuTekstu(__tabela_parametrow_szablonu);
if(tekst)then
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
----
local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
--local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul);
local tab_numer={};
local tab_tak={};
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod,poziom_iteracji,_,obiekt_rodzica,kod_rodzica,szablon_rodzica,_,_,poziom_iteracji_rodzica)
obiekt_rodzica=obiekt_rodzica or true;
kod_rodzica=kod_rodzica or true;
local tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica];
if(not tab_tak_obiekt_rodzica)then tab_tak[obiekt_rodzica]={};tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica]end;
local tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica];
if(not tab_tak_kod_rodzica)then tab_tak_obiekt_rodzica[kod_rodzica]={};tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica]end;
local czy_tak=tab_tak_kod_rodzica[obiekt];
tab_tak_kod_rodzica[obiekt]=true;
tab_numer[obiekt]=tab_numer[obiekt] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt);
local max_numer=tab_numer[obiekt];
local kod_temp=kod+max_numer;
--tablica_analizy_obiektow_strony_dany_modul[obiekt][kod_temp]=szablon;
local ile;
if(not czy_tak)then
szablon_rodzica,ile=mw.ustring.gsub(szablon_rodzica,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt),function(kod)
kod=tonumber(kod) or nil;
return szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod+max_numer);
end);
end;
local TempFunc=function(tablica_danych_parametrow_szablonu_strony,kod)
local tab_obiekt=tab_analiza[obiekt];
if(tab_obiekt)then
for _, wartosc in pairs(tab_obiekt)do
local tab_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc];
if(not tab_wartosc)then
tablica_danych_parametrow_szablonu_strony[wartosc]={};
end;
local stara_tabelka=(__tablica_danych_parametrow_szablonu_strony[wartosc] or {})[kod];
local nowa_tabelka=parametry_modul.TypeTable(stara_tabelka) and parametry_modul["KopiujRekurencyjnieTabelęElementów"](stara_tabelka) or stara_tabelka;
tablica_danych_parametrow_szablonu_strony[wartosc][kod_temp]=nowa_tabelka;
end;
end;
end;
TempFunc(tablica_danych_parametrow_szablonu_strony,kod);
if(poziom_iteracji>0)then
tab_numer[obiekt_rodzica]=tab_numer[obiekt_rodzica] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt_rodzica);
local max_numer_rodzica=tab_numer[obiekt_rodzica];
kod_rodzica=kod_rodzica+max_numer_rodzica;
end;
if(not czy_tak)then
return nil,szablon,obiekt,kod_temp,szablon_rodzica,obiekt_rodzica,kod_rodzica,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica;
else
return nil,szablon,obiekt,kod_temp,nil,nil,nil,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica;
end;
return;
end);
return tekst;
----
end;
return;
end;
function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych)
local function TempFunc(tablica_szablonu_tekstu,__funkcja,czy_korzystane)
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local tab_obiekty=pozycja[2];
for _,pozycja2 in ipairs(tab_obiekty)do
local __obiekt=pozycja2[1];
local __kod=pozycja2[2];
if((__obiekt==obiekt)and(__kod==kod))then
local szablon=__funkcja(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane);
if(szablon)then
tab_numer=pozycja2[3];
return szablon,tab_numer;
end;
return;
end;
end;
end;
end;
local szablon;local tab_numer;
if(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then
szablon,tab_numer=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,p.ZamienianiePobierzNaKod,true);
end;
if(not szablon)then
if(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then
szablon,tab_numer=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,p.ZamienianiePobierzNaKod,false);
end;
end;
if(szablon)then return szablon,tab_numer;end;
return nil;
end;
function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)
local tablica_szablonu_tekstu_korzystanych=tablica_zmiennych.tablica_szablonu_tekstu_korzystanych;
for _,pozycja in ipairs(tablica_szablonu_tekstu_korzystanych)do
local __obiekt=pozycja[3][2];
local __kod=pozycja[3][3];
if((obiekt==__obiekt)and(kod==__kod))then
local tabela_parametrow_szablonu=pozycja[3][1][1];
local tekst=p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu);
if(tekst)then return tekst;end;
return nil;
end;
end;
return nil;
end;
function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)
if((not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)and(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych))then return nil;end;
if(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then
local function TempFunc(tablica_szablonu_tekstu)
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local tab_pobierz=pozycja[2];
for _,value in ipairs(tab_pobierz)do
return true;
end;
end;
return nil;
end;
if((not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)and(not TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)))then return nil;end;
end;
local stronicowyparser_obiekty_modul=require("Module:StronicowyParser/obiekty");
local tab_pobierz_szablonu_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
local tab_szablony_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu;
local czy_pobierz=nil;
local szablonowe_modul=require("Module:Szablonowe");
local ___tabela_parametrow_szablonu;
tekst_rozwiniety_calego_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(czy_pobierz)then
szablon,tab_numer=p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,___tabela_parametrow_szablonu,tablica_zmiennych);
if(szablon)then
IterowaniePoElementachTekstu(szablon,tab_numer);
end;
else
szablon=p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych);
end;
if(szablon)then return szablon;end;
return nil;
end,nil,
function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
----
if(tab_pobierz_szablonu_tekstu[nazwa_szablonu])then
czy_pobierz=true;
___tabela_parametrow_szablonu=tabela_parametrow_szablonu;
return true;
elseif(tab_szablony_tekstu[nazwa_szablonu])then
czy_pobierz=false;
return true;
end;
return nil;
end);
if(wynik)then return wynik;end;
end;
return nil;
end);
return tekst_rozwiniety_calego_artykulu;
end;
return p;
23w89yi3b36mlw6kwvl0tauvfvvizhl
558362
558361
2026-10-02T21:37:18Z
Persino
2851
558362
Scribunto
text/plain
local p={};
p.PreparowanieSzablonoweLinkoweSzablonuTekstu=function(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu,czy_bez_preprocess)
--if(true)then return tekst;end;
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local szablony_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane;
local numerowane_obiekty=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty;
local nienumerowane_obiekty_napisu_wprowadzenia_tekstu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu;
local nienumerowane_obiekty_tekstu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
----
tablica_analizy_obiektow_strony_dany_modul=tablica_analizy_obiektow_strony_dany_modul or __tablica_analizy_obiektow_strony_dany_modul;
tablica_danych_parametrow_szablonu_strony=tablica_danych_parametrow_szablonu_strony or __tablica_danych_parametrow_szablonu_strony;
----
local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
--if(true)then return nil,true;end;
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,__tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,
function(__tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(szablony_tekstu[nazwa_szablonu])then
local tekst=p.ParametrTekstowySzablonuTekstu(__tabela_parametrow_szablonu);
tabela_parametrow_szablonu=tabela_parametrow_szablonu or __tabela_parametrow_szablonu;
local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod)
if(obiekt=="ZMIENNA")then
local klucz=mw.ustring.match(szablon,"^%{%{%{%s*klucz(%d*)%s*%|.*%}%}%}$") or mw.ustring.match(szablon,"^%{%{%{%s*klucz(%d*)%s*%}%}%}$");
if(klucz)then
if((klucz=="")or(mw.ustring.match(klucz,"^[1-9]%d*$")))then
local wartosc_klucz=tabela_parametrow_szablonu["klucz"..klucz];
wartosc_klucz=wartosc_klucz and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(wartosc_klucz,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true,true) or wartosc_klucz;
if(wartosc_klucz)then return wartosc_klucz;end;
end;
end;
end;
return nil,true;
end);
local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,__tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(
(numerowane_obiekty[nazwa_szablonu])
or(nienumerowane_obiekty_napisu_wprowadzenia_tekstu[nazwa_szablonu])
or(nienumerowane_obiekty_tekstu[nazwa_szablonu])
)then
local uchwyt=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1];
local nazwa_artykulu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[2];
local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[3];
uchwyt=uchwyt and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(uchwyt,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true) or uchwyt;
nazwa_artykulu=nazwa_artykulu and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(nazwa_artykulu,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true) or nazwa_artykulu;
nazwa_ksiazki=nazwa_ksiazki and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(nazwa_ksiazki,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true) or nazwa_ksiazki;
tabela_parametrow_szablonu["uchwyt"]=uchwyt;tabela_parametrow_szablonu[1]=nil;
tabela_parametrow_szablonu["nazwa artykułu"]=nazwa_artykulu or (not czy_bez_preprocess)and nazwa_artykulu_tekstu or nil;tabela_parametrow_szablonu[2]=nil;
tabela_parametrow_szablonu["nazwa książki"]=nazwa_ksiazki or (not czy_bez_preprocess) and nazwa_modulu_ksiazki_tekstu or nil;tabela_parametrow_szablonu[3]=nil;
local szablon=szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,false);
__tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
__tablica_danych_parametrow_szablonu_strony[1][kod].parametry=nil;
end;
return nil;
end);
end;
return nil,true;
end);
end;
end);
end;
return nil,true;
end,nil,
function(szablon,obiekt,kod,poziom_iteracji,tekst)
if(poziom_iteracji>0)then
return nil;
end;
return szablon;
end);
return tekst;
end;
function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu)
local tekst=tabela_parametrow_szablonu["tekst"] or tabela_parametrow_szablonu["treść"] or tabela_parametrow_szablonu[1];
return tekst;
end;
function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu)
return tabela_parametrow_szablonu["bez preprocess"];
end;
function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2)
if(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end;
for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)do
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,pozycja);
end;
end;
end;
function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany)
if(not czy_artykul_korzystany)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{
{wartosc_elementu,lista_dwuelementowa,},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
{tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,},
});
else
if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{
{wartosc_elementu,lista_dwuelementowa,},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
{tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,},
});
end;
end;
function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)
local tablica_szablonu_tekstu;
if(czy_artykul_korzystany)then
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych;
else
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych;
end;
if(tablica_szablonu_tekstu)then
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local nazwa_obiektu_tekstu=pozycja[1][1];
local uchwyt_obiektu_tekstu=pozycja[1][2][1];
if((nazwa_obiektu_tekstu==nazwa_obiektu)and(uchwyt_obiektu_tekstu==uchwyt_obiektu))then
local dodatkowe_elementy=pozycja[2];
local czy_tak=false;
for _,pozycja_dodatkowe in ipairs(dodatkowe_elementy)do
if((pozycja_dodatkowe[1]==obiekt)and(pozycja_dodatkowe[2]==kod))then
czy_tak=true;
break;
end;
end;
if(not czy_tak)then
local tab_numer;
if(tablica_zmiennych)then
tab_numer={};
for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do
tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name];
end;
end;
table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer});
break;
end;
end;
end;
end;
end;
function p.UstawPobierzKorzystanie(tablica_zmiennych2)
if(tablica_zmiennych2.tablica_szablonu_tekstu_linkowe_korzystane)then
for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_linkowe_korzystane)do
if(not pozycja[3])then
pozycja[3]=true;
local nazwa_obiektu=pozycja[1][1];
local uchwyt_obiektu=pozycja[1][2];
local obiekt=pozycja[2][1];
local kod=pozycja[2][2];
p.UstawianiePobierz(nil,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,true);
end;
end;
end;
end;
function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane)
local __tablica_analizy_obiektow_strony_dany_modul=(pozycja[4] or{})[1] or tablica_analizy_obiektow_strony_dany_modul;
local __tablica_danych_parametrow_szablonu_strony=(pozycja[4] or {})[2] or tablica_danych_parametrow_szablonu_strony;
local __obiekt=(pozycja[3] or {})[2];
local __kod=(pozycja[3] or {})[3];
local __szablon=__tablica_analizy_obiektow_strony_dany_modul[__obiekt][__kod];
local szablonowe_modul=require("Module:Szablonowe");
local bez_preprocess=p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu);
local parametry_modul=require("Module:Parametry");
local czy_bez_preprocess=parametry_modul.CzyTak(bez_preprocess);
local nazwa_modulu_ksiazki_tekstu=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[3];
local nazwa_artykulu_tekstu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[2];
local tekst_szablon=p.PreparowanieSzablonoweLinkoweSzablonuTekstu(szablonowe_modul.NormaKoduKodowaniaTekstu(__obiekt,__kod),nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu,czy_bez_preprocess);
local __tabela_parametrow_szablonu=pozycja[3][1][1];
----
local tekst=p.ParametrTekstowySzablonuTekstu(__tabela_parametrow_szablonu);
if(tekst)then
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
----
local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
--local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul);
local tab_numer={};
local tab_tak={};
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod,poziom_iteracji,_,obiekt_rodzica,kod_rodzica,szablon_rodzica,_,_,poziom_iteracji_rodzica)
obiekt_rodzica=obiekt_rodzica or true;
kod_rodzica=kod_rodzica or true;
local tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica];
if(not tab_tak_obiekt_rodzica)then tab_tak[obiekt_rodzica]={};tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica]end;
local tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica];
if(not tab_tak_kod_rodzica)then tab_tak_obiekt_rodzica[kod_rodzica]={};tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica]end;
local czy_tak=tab_tak_kod_rodzica[obiekt];
tab_tak_kod_rodzica[obiekt]=true;
tab_numer[obiekt]=tab_numer[obiekt] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt);
local max_numer=tab_numer[obiekt];
local kod_temp=kod+max_numer;
--tablica_analizy_obiektow_strony_dany_modul[obiekt][kod_temp]=szablon;
local ile;
if(not czy_tak)then
szablon_rodzica,ile=mw.ustring.gsub(szablon_rodzica,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt),function(kod)
kod=tonumber(kod) or nil;
return szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod+max_numer);
end);
end;
local TempFunc=function(tablica_danych_parametrow_szablonu_strony,kod)
local tab_obiekt=tab_analiza[obiekt];
if(tab_obiekt)then
for _, wartosc in pairs(tab_obiekt)do
local tab_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc];
if(not tab_wartosc)then
tablica_danych_parametrow_szablonu_strony[wartosc]={};
end;
local stara_tabelka=(__tablica_danych_parametrow_szablonu_strony[wartosc] or {})[kod];
local nowa_tabelka=parametry_modul.TypeTable(stara_tabelka) and parametry_modul["KopiujRekurencyjnieTabelęElementów"](stara_tabelka) or stara_tabelka;
tablica_danych_parametrow_szablonu_strony[wartosc][kod_temp]=nowa_tabelka;
end;
end;
end;
TempFunc(tablica_danych_parametrow_szablonu_strony,kod);
if(poziom_iteracji>0)then
tab_numer[obiekt_rodzica]=tab_numer[obiekt_rodzica] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt_rodzica);
local max_numer_rodzica=tab_numer[obiekt_rodzica];
kod_rodzica=kod_rodzica+max_numer_rodzica;
end;
if(not czy_tak)then
return nil,szablon,obiekt,kod_temp,szablon_rodzica,obiekt_rodzica,kod_rodzica,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica;
else
return nil,szablon,obiekt,kod_temp,nil,nil,nil,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica;
end;
return;
end);
return tekst;
----
end;
return;
end;
function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych)
local function TempFunc(tablica_szablonu_tekstu,__funkcja,czy_korzystane)
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local tab_obiekty=pozycja[2];
for _,pozycja2 in ipairs(tab_obiekty)do
local __obiekt=pozycja2[1];
local __kod=pozycja2[2];
if((__obiekt==obiekt)and(__kod==kod))then
local szablon=__funkcja(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane);
if(szablon)then
tab_numer=pozycja2[3];
return szablon,tab_numer;
end;
return;
end;
end;
end;
end;
local szablon;local tab_numer;
if(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then
szablon,tab_numer=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,p.ZamienianiePobierzNaKod,true);
end;
if(not szablon)then
if(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then
szablon,tab_numer=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,p.ZamienianiePobierzNaKod,false);
end;
end;
if(szablon)then return szablon,tab_numer;end;
return nil;
end;
function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)
local tablica_szablonu_tekstu_korzystanych=tablica_zmiennych.tablica_szablonu_tekstu_korzystanych;
for _,pozycja in ipairs(tablica_szablonu_tekstu_korzystanych)do
local __obiekt=pozycja[3][2];
local __kod=pozycja[3][3];
if((obiekt==__obiekt)and(kod==__kod))then
local tabela_parametrow_szablonu=pozycja[3][1][1];
local tekst=p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu);
if(tekst)then return tekst;end;
return nil;
end;
end;
return nil;
end;
function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)
if((not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)and(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych))then return nil;end;
if(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then
local function TempFunc(tablica_szablonu_tekstu)
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local tab_pobierz=pozycja[2];
for _,value in ipairs(tab_pobierz)do
return true;
end;
end;
return nil;
end;
if((not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)and(not TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)))then return nil;end;
end;
local stronicowyparser_obiekty_modul=require("Module:StronicowyParser/obiekty");
local tab_pobierz_szablonu_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
local tab_szablony_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu;
local czy_pobierz=nil;
local szablonowe_modul=require("Module:Szablonowe");
local ___tabela_parametrow_szablonu;
tekst_rozwiniety_calego_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(czy_pobierz)then
szablon,tab_numer=p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,___tabela_parametrow_szablonu,tablica_zmiennych);
if(szablon)then
IterowaniePoElementachTekstu(szablon,tab_numer);
end;
else
szablon=p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych);
end;
if(szablon)then return szablon;end;
return nil;
end,nil,
function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
----
if(tab_pobierz_szablonu_tekstu[nazwa_szablonu])then
czy_pobierz=true;
___tabela_parametrow_szablonu=tabela_parametrow_szablonu;
return true;
elseif(tab_szablony_tekstu[nazwa_szablonu])then
czy_pobierz=false;
return true;
end;
return nil;
end);
if(wynik)then return wynik;end;
end;
return nil;
end);
return tekst_rozwiniety_calego_artykulu;
end;
return p;
kbdfbmxrz347nri2ogjvn553j23xgvm
558364
558362
2026-10-02T21:51:32Z
Persino
2851
558364
Scribunto
text/plain
local p={};
p.PreparowanieSzablonoweLinkoweSzablonuTekstu=function(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu,czy_bez_preprocess)
--if(true)then return tekst;end;
mw.log(nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu,czy_bez_preprocess,"SSSS");
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local szablony_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane;
local numerowane_obiekty=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty;
local nienumerowane_obiekty_napisu_wprowadzenia_tekstu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu;
local nienumerowane_obiekty_tekstu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
----
tablica_analizy_obiektow_strony_dany_modul=tablica_analizy_obiektow_strony_dany_modul or __tablica_analizy_obiektow_strony_dany_modul;
tablica_danych_parametrow_szablonu_strony=tablica_danych_parametrow_szablonu_strony or __tablica_danych_parametrow_szablonu_strony;
----
local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
--if(true)then return nil,true;end;
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,__tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,
function(__tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(szablony_tekstu[nazwa_szablonu])then
local tekst=p.ParametrTekstowySzablonuTekstu(__tabela_parametrow_szablonu);
tabela_parametrow_szablonu=tabela_parametrow_szablonu or __tabela_parametrow_szablonu;
local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod)
if(obiekt=="ZMIENNA")then
local klucz=mw.ustring.match(szablon,"^%{%{%{%s*klucz(%d*)%s*%|.*%}%}%}$") or mw.ustring.match(szablon,"^%{%{%{%s*klucz(%d*)%s*%}%}%}$");
if(klucz)then
if((klucz=="")or(mw.ustring.match(klucz,"^[1-9]%d*$")))then
local wartosc_klucz=tabela_parametrow_szablonu["klucz"..klucz];
wartosc_klucz=wartosc_klucz and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(wartosc_klucz,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true,true) or wartosc_klucz;
if(wartosc_klucz)then return wartosc_klucz;end;
end;
end;
end;
return nil,true;
end);
local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,__tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(
(numerowane_obiekty[nazwa_szablonu])
or(nienumerowane_obiekty_napisu_wprowadzenia_tekstu[nazwa_szablonu])
or(nienumerowane_obiekty_tekstu[nazwa_szablonu])
)then
local uchwyt=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1];
local nazwa_artykulu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[2];
local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[3];
uchwyt=uchwyt and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(uchwyt,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true) or uchwyt;
nazwa_artykulu=nazwa_artykulu and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(nazwa_artykulu,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true) or nazwa_artykulu;
nazwa_ksiazki=nazwa_ksiazki and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(nazwa_ksiazki,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true) or nazwa_ksiazki;
tabela_parametrow_szablonu["uchwyt"]=uchwyt;tabela_parametrow_szablonu[1]=nil;
tabela_parametrow_szablonu["nazwa artykułu"]=nazwa_artykulu or (not czy_bez_preprocess)and nazwa_artykulu_tekstu or nil;tabela_parametrow_szablonu[2]=nil;
tabela_parametrow_szablonu["nazwa książki"]=nazwa_ksiazki or (not czy_bez_preprocess) and nazwa_modulu_ksiazki_tekstu or nil;tabela_parametrow_szablonu[3]=nil;
local szablon=szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,false);
__tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
__tablica_danych_parametrow_szablonu_strony[1][kod].parametry=nil;
end;
return nil;
end);
end;
return nil,true;
end);
end;
end);
end;
return nil,true;
end,nil,
function(szablon,obiekt,kod,poziom_iteracji,tekst)
if(poziom_iteracji>0)then
return nil;
end;
return szablon;
end);
return tekst;
end;
function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu)
local tekst=tabela_parametrow_szablonu["tekst"] or tabela_parametrow_szablonu["treść"] or tabela_parametrow_szablonu[1];
return tekst;
end;
function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu)
return tabela_parametrow_szablonu["bez preprocess"];
end;
function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2)
if(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end;
for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)do
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,pozycja);
end;
end;
end;
function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany)
if(not czy_artykul_korzystany)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{
{wartosc_elementu,lista_dwuelementowa,},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
{tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,},
});
else
if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{
{wartosc_elementu,lista_dwuelementowa,},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
{tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,},
});
end;
end;
function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)
local tablica_szablonu_tekstu;
if(czy_artykul_korzystany)then
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych;
else
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych;
end;
if(tablica_szablonu_tekstu)then
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local nazwa_obiektu_tekstu=pozycja[1][1];
local uchwyt_obiektu_tekstu=pozycja[1][2][1];
if((nazwa_obiektu_tekstu==nazwa_obiektu)and(uchwyt_obiektu_tekstu==uchwyt_obiektu))then
local dodatkowe_elementy=pozycja[2];
local czy_tak=false;
for _,pozycja_dodatkowe in ipairs(dodatkowe_elementy)do
if((pozycja_dodatkowe[1]==obiekt)and(pozycja_dodatkowe[2]==kod))then
czy_tak=true;
break;
end;
end;
if(not czy_tak)then
local tab_numer;
if(tablica_zmiennych)then
tab_numer={};
for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do
tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name];
end;
end;
table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer});
break;
end;
end;
end;
end;
end;
function p.UstawPobierzKorzystanie(tablica_zmiennych2)
if(tablica_zmiennych2.tablica_szablonu_tekstu_linkowe_korzystane)then
for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_linkowe_korzystane)do
if(not pozycja[3])then
pozycja[3]=true;
local nazwa_obiektu=pozycja[1][1];
local uchwyt_obiektu=pozycja[1][2];
local obiekt=pozycja[2][1];
local kod=pozycja[2][2];
p.UstawianiePobierz(nil,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,true);
end;
end;
end;
end;
function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane)
local __tablica_analizy_obiektow_strony_dany_modul=(pozycja[4] or{})[1] or tablica_analizy_obiektow_strony_dany_modul;
local __tablica_danych_parametrow_szablonu_strony=(pozycja[4] or {})[2] or tablica_danych_parametrow_szablonu_strony;
local __obiekt=(pozycja[3] or {})[2];
local __kod=(pozycja[3] or {})[3];
local __szablon=__tablica_analizy_obiektow_strony_dany_modul[__obiekt][__kod];
local szablonowe_modul=require("Module:Szablonowe");
local bez_preprocess=p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu);
local parametry_modul=require("Module:Parametry");
local czy_bez_preprocess=parametry_modul.CzyTak(bez_preprocess);
local nazwa_modulu_ksiazki_tekstu=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[3];
local nazwa_artykulu_tekstu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[2];
mw.log("SSS")
local tekst_szablon=p.PreparowanieSzablonoweLinkoweSzablonuTekstu(szablonowe_modul.NormaKoduKodowaniaTekstu(__obiekt,__kod),nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu,czy_bez_preprocess);
local __tabela_parametrow_szablonu=pozycja[3][1][1];
----
local tekst=p.ParametrTekstowySzablonuTekstu(__tabela_parametrow_szablonu);
if(tekst)then
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
----
local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
--local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul);
local tab_numer={};
local tab_tak={};
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod,poziom_iteracji,_,obiekt_rodzica,kod_rodzica,szablon_rodzica,_,_,poziom_iteracji_rodzica)
obiekt_rodzica=obiekt_rodzica or true;
kod_rodzica=kod_rodzica or true;
local tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica];
if(not tab_tak_obiekt_rodzica)then tab_tak[obiekt_rodzica]={};tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica]end;
local tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica];
if(not tab_tak_kod_rodzica)then tab_tak_obiekt_rodzica[kod_rodzica]={};tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica]end;
local czy_tak=tab_tak_kod_rodzica[obiekt];
tab_tak_kod_rodzica[obiekt]=true;
tab_numer[obiekt]=tab_numer[obiekt] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt);
local max_numer=tab_numer[obiekt];
local kod_temp=kod+max_numer;
--tablica_analizy_obiektow_strony_dany_modul[obiekt][kod_temp]=szablon;
local ile;
if(not czy_tak)then
szablon_rodzica,ile=mw.ustring.gsub(szablon_rodzica,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt),function(kod)
kod=tonumber(kod) or nil;
return szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod+max_numer);
end);
end;
local TempFunc=function(tablica_danych_parametrow_szablonu_strony,kod)
local tab_obiekt=tab_analiza[obiekt];
if(tab_obiekt)then
for _, wartosc in pairs(tab_obiekt)do
local tab_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc];
if(not tab_wartosc)then
tablica_danych_parametrow_szablonu_strony[wartosc]={};
end;
local stara_tabelka=(__tablica_danych_parametrow_szablonu_strony[wartosc] or {})[kod];
local nowa_tabelka=parametry_modul.TypeTable(stara_tabelka) and parametry_modul["KopiujRekurencyjnieTabelęElementów"](stara_tabelka) or stara_tabelka;
tablica_danych_parametrow_szablonu_strony[wartosc][kod_temp]=nowa_tabelka;
end;
end;
end;
TempFunc(tablica_danych_parametrow_szablonu_strony,kod);
if(poziom_iteracji>0)then
tab_numer[obiekt_rodzica]=tab_numer[obiekt_rodzica] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt_rodzica);
local max_numer_rodzica=tab_numer[obiekt_rodzica];
kod_rodzica=kod_rodzica+max_numer_rodzica;
end;
if(not czy_tak)then
return nil,szablon,obiekt,kod_temp,szablon_rodzica,obiekt_rodzica,kod_rodzica,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica;
else
return nil,szablon,obiekt,kod_temp,nil,nil,nil,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica;
end;
return;
end);
return tekst;
----
end;
return;
end;
function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych)
local function TempFunc(tablica_szablonu_tekstu,__funkcja,czy_korzystane)
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local tab_obiekty=pozycja[2];
for _,pozycja2 in ipairs(tab_obiekty)do
local __obiekt=pozycja2[1];
local __kod=pozycja2[2];
if((__obiekt==obiekt)and(__kod==kod))then
local szablon=__funkcja(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane);
if(szablon)then
tab_numer=pozycja2[3];
return szablon,tab_numer;
end;
return;
end;
end;
end;
end;
local szablon;local tab_numer;
if(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then
szablon,tab_numer=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,p.ZamienianiePobierzNaKod,true);
end;
if(not szablon)then
if(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then
szablon,tab_numer=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,p.ZamienianiePobierzNaKod,false);
end;
end;
if(szablon)then return szablon,tab_numer;end;
return nil;
end;
function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)
local tablica_szablonu_tekstu_korzystanych=tablica_zmiennych.tablica_szablonu_tekstu_korzystanych;
for _,pozycja in ipairs(tablica_szablonu_tekstu_korzystanych)do
local __obiekt=pozycja[3][2];
local __kod=pozycja[3][3];
if((obiekt==__obiekt)and(kod==__kod))then
local tabela_parametrow_szablonu=pozycja[3][1][1];
local tekst=p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu);
if(tekst)then return tekst;end;
return nil;
end;
end;
return nil;
end;
function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)
if((not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)and(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych))then return nil;end;
if(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then
local function TempFunc(tablica_szablonu_tekstu)
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local tab_pobierz=pozycja[2];
for _,value in ipairs(tab_pobierz)do
return true;
end;
end;
return nil;
end;
if((not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)and(not TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)))then return nil;end;
end;
local stronicowyparser_obiekty_modul=require("Module:StronicowyParser/obiekty");
local tab_pobierz_szablonu_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
local tab_szablony_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu;
local czy_pobierz=nil;
local szablonowe_modul=require("Module:Szablonowe");
local ___tabela_parametrow_szablonu;
tekst_rozwiniety_calego_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(czy_pobierz)then
szablon,tab_numer=p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,___tabela_parametrow_szablonu,tablica_zmiennych);
if(szablon)then
IterowaniePoElementachTekstu(szablon,tab_numer);
end;
else
szablon=p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych);
end;
if(szablon)then return szablon;end;
return nil;
end,nil,
function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
----
if(tab_pobierz_szablonu_tekstu[nazwa_szablonu])then
czy_pobierz=true;
___tabela_parametrow_szablonu=tabela_parametrow_szablonu;
return true;
elseif(tab_szablony_tekstu[nazwa_szablonu])then
czy_pobierz=false;
return true;
end;
return nil;
end);
if(wynik)then return wynik;end;
end;
return nil;
end);
return tekst_rozwiniety_calego_artykulu;
end;
return p;
kjq1kbfm0xh434qj1p3q2964u71hv11
558366
558364
2026-10-02T22:02:10Z
Persino
2851
558366
Scribunto
text/plain
local p={};
p.PreparowanieSzablonoweLinkoweSzablonuTekstu=function(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu,czy_bez_preprocess)
--if(true)then return tekst;end;
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local szablony_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane;
local numerowane_obiekty=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty;
local nienumerowane_obiekty_napisu_wprowadzenia_tekstu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu;
local nienumerowane_obiekty_tekstu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
----
tablica_analizy_obiektow_strony_dany_modul=tablica_analizy_obiektow_strony_dany_modul or __tablica_analizy_obiektow_strony_dany_modul;
tablica_danych_parametrow_szablonu_strony=tablica_danych_parametrow_szablonu_strony or __tablica_danych_parametrow_szablonu_strony;
----
local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
--if(true)then return nil,true;end;
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,__tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,
function(__tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(szablony_tekstu[nazwa_szablonu])then
local tekst=p.ParametrTekstowySzablonuTekstu(__tabela_parametrow_szablonu);
tabela_parametrow_szablonu=tabela_parametrow_szablonu or __tabela_parametrow_szablonu;
local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod)
if(obiekt=="ZMIENNA")then
local klucz=mw.ustring.match(szablon,"^%{%{%{%s*klucz(%d*)%s*%|.*%}%}%}$") or mw.ustring.match(szablon,"^%{%{%{%s*klucz(%d*)%s*%}%}%}$");
if(klucz)then
if((klucz=="")or(mw.ustring.match(klucz,"^[1-9]%d*$")))then
local wartosc_klucz=tabela_parametrow_szablonu["klucz"..klucz];
wartosc_klucz=wartosc_klucz and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(wartosc_klucz,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true,true) or wartosc_klucz;
if(wartosc_klucz)then return wartosc_klucz;end;
end;
end;
end;
return nil,true;
end);
local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,__tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(
(numerowane_obiekty[nazwa_szablonu])
or(nienumerowane_obiekty_napisu_wprowadzenia_tekstu[nazwa_szablonu])
or(nienumerowane_obiekty_tekstu[nazwa_szablonu])
)then
local uchwyt=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1];
local nazwa_artykulu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[2];
local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[3];
uchwyt=uchwyt and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(uchwyt,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true) or uchwyt;
nazwa_artykulu=nazwa_artykulu and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(nazwa_artykulu,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true) or nazwa_artykulu;
nazwa_ksiazki=nazwa_ksiazki and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(nazwa_ksiazki,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true) or nazwa_ksiazki;
tabela_parametrow_szablonu["uchwyt"]=uchwyt;tabela_parametrow_szablonu[1]=nil;
tabela_parametrow_szablonu["nazwa artykułu"]=nazwa_artykulu or (not czy_bez_preprocess)and nazwa_artykulu_tekstu or nil;tabela_parametrow_szablonu[2]=nil;
tabela_parametrow_szablonu["nazwa książki"]=nazwa_ksiazki or (not czy_bez_preprocess) and nazwa_modulu_ksiazki_tekstu or nil;tabela_parametrow_szablonu[3]=nil;
local szablon=szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,false);
__tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
__tablica_danych_parametrow_szablonu_strony[1][kod].parametry=nil;
end;
return nil;
end);
end;
return nil,true;
end);
end;
end);
end;
return nil,true;
end,nil,
function(szablon,obiekt,kod,poziom_iteracji,tekst)
if(poziom_iteracji>0)then
return nil;
end;
return szablon;
end);
return tekst;
end;
function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu)
local tekst=tabela_parametrow_szablonu["tekst"] or tabela_parametrow_szablonu["treść"] or tabela_parametrow_szablonu[1];
return tekst;
end;
function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu)
return tabela_parametrow_szablonu["bez preprocess"];
end;
function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2)
if(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end;
for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)do
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,pozycja);
end;
end;
end;
function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany)
if(not czy_artykul_korzystany)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{
{wartosc_elementu,lista_dwuelementowa,},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
{tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,},
});
else
if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{
{wartosc_elementu,lista_dwuelementowa,},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
{tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,},
});
end;
end;
function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)
local tablica_szablonu_tekstu;
if(czy_artykul_korzystany)then
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych;
else
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych;
end;
if(tablica_szablonu_tekstu)then
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local nazwa_obiektu_tekstu=pozycja[1][1];
local uchwyt_obiektu_tekstu=pozycja[1][2][1];
if((nazwa_obiektu_tekstu==nazwa_obiektu)and(uchwyt_obiektu_tekstu==uchwyt_obiektu))then
local dodatkowe_elementy=pozycja[2];
local czy_tak=false;
for _,pozycja_dodatkowe in ipairs(dodatkowe_elementy)do
if((pozycja_dodatkowe[1]==obiekt)and(pozycja_dodatkowe[2]==kod))then
czy_tak=true;
break;
end;
end;
if(not czy_tak)then
local tab_numer;
if(tablica_zmiennych)then
tab_numer={};
for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do
tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name];
end;
end;
table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer});
break;
end;
end;
end;
end;
end;
function p.UstawPobierzKorzystanie(tablica_zmiennych2)
if(tablica_zmiennych2.tablica_szablonu_tekstu_linkowe_korzystane)then
for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_linkowe_korzystane)do
if(not pozycja[3])then
pozycja[3]=true;
local nazwa_obiektu=pozycja[1][1];
local uchwyt_obiektu=pozycja[1][2];
local obiekt=pozycja[2][1];
local kod=pozycja[2][2];
p.UstawianiePobierz(nil,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,true);
end;
end;
end;
end;
function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane)
local __tablica_analizy_obiektow_strony_dany_modul=(pozycja[4] or{})[1] or tablica_analizy_obiektow_strony_dany_modul;
local __tablica_danych_parametrow_szablonu_strony=(pozycja[4] or {})[2] or tablica_danych_parametrow_szablonu_strony;
local __obiekt=(pozycja[3] or {})[2];
local __kod=(pozycja[3] or {})[3];
local __szablon=__tablica_analizy_obiektow_strony_dany_modul[__obiekt][__kod];
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local bez_preprocess=p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu);
local parametry_modul=require("Module:Parametry");
local czy_bez_preprocess=parametry_modul.CzyTak(bez_preprocess);
local nazwa_artykulu_tekstu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[2];
local nazwa_modulu_ksiazki_tekstu=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[3];
nazwa_artykulu_tekstu=nazwa_artykulu_tekstu and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(nazwa_artykulu_tekstu,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true,true) or nazwa_artykulu_tekstu;
nazwa_modulu_ksiazki_tekstu=nazwa_modulu_ksiazki_tekstu and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(nazwa_modulu_ksiazki_tekstu,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true,true) or nazwa_modulu_ksiazki_tekstu;
local tekst_szablon=p.PreparowanieSzablonoweLinkoweSzablonuTekstu(szablonowe_modul.NormaKoduKodowaniaTekstu(__obiekt,__kod),nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu,czy_bez_preprocess);
local __tabela_parametrow_szablonu=pozycja[3][1][1];
----
local tekst=p.ParametrTekstowySzablonuTekstu(__tabela_parametrow_szablonu);
if(tekst)then
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
----
local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
--local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul);
local tab_numer={};
local tab_tak={};
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod,poziom_iteracji,_,obiekt_rodzica,kod_rodzica,szablon_rodzica,_,_,poziom_iteracji_rodzica)
obiekt_rodzica=obiekt_rodzica or true;
kod_rodzica=kod_rodzica or true;
local tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica];
if(not tab_tak_obiekt_rodzica)then tab_tak[obiekt_rodzica]={};tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica]end;
local tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica];
if(not tab_tak_kod_rodzica)then tab_tak_obiekt_rodzica[kod_rodzica]={};tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica]end;
local czy_tak=tab_tak_kod_rodzica[obiekt];
tab_tak_kod_rodzica[obiekt]=true;
tab_numer[obiekt]=tab_numer[obiekt] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt);
local max_numer=tab_numer[obiekt];
local kod_temp=kod+max_numer;
--tablica_analizy_obiektow_strony_dany_modul[obiekt][kod_temp]=szablon;
local ile;
if(not czy_tak)then
szablon_rodzica,ile=mw.ustring.gsub(szablon_rodzica,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt),function(kod)
kod=tonumber(kod) or nil;
return szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod+max_numer);
end);
end;
local TempFunc=function(tablica_danych_parametrow_szablonu_strony,kod)
local tab_obiekt=tab_analiza[obiekt];
if(tab_obiekt)then
for _, wartosc in pairs(tab_obiekt)do
local tab_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc];
if(not tab_wartosc)then
tablica_danych_parametrow_szablonu_strony[wartosc]={};
end;
local stara_tabelka=(__tablica_danych_parametrow_szablonu_strony[wartosc] or {})[kod];
local nowa_tabelka=parametry_modul.TypeTable(stara_tabelka) and parametry_modul["KopiujRekurencyjnieTabelęElementów"](stara_tabelka) or stara_tabelka;
tablica_danych_parametrow_szablonu_strony[wartosc][kod_temp]=nowa_tabelka;
end;
end;
end;
TempFunc(tablica_danych_parametrow_szablonu_strony,kod);
if(poziom_iteracji>0)then
tab_numer[obiekt_rodzica]=tab_numer[obiekt_rodzica] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt_rodzica);
local max_numer_rodzica=tab_numer[obiekt_rodzica];
kod_rodzica=kod_rodzica+max_numer_rodzica;
end;
if(not czy_tak)then
return nil,szablon,obiekt,kod_temp,szablon_rodzica,obiekt_rodzica,kod_rodzica,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica;
else
return nil,szablon,obiekt,kod_temp,nil,nil,nil,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica;
end;
return;
end);
return tekst;
----
end;
return;
end;
function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych)
local function TempFunc(tablica_szablonu_tekstu,__funkcja,czy_korzystane)
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local tab_obiekty=pozycja[2];
for _,pozycja2 in ipairs(tab_obiekty)do
local __obiekt=pozycja2[1];
local __kod=pozycja2[2];
if((__obiekt==obiekt)and(__kod==kod))then
local szablon=__funkcja(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane);
if(szablon)then
tab_numer=pozycja2[3];
return szablon,tab_numer;
end;
return;
end;
end;
end;
end;
local szablon;local tab_numer;
if(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then
szablon,tab_numer=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,p.ZamienianiePobierzNaKod,true);
end;
if(not szablon)then
if(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then
szablon,tab_numer=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,p.ZamienianiePobierzNaKod,false);
end;
end;
if(szablon)then return szablon,tab_numer;end;
return nil;
end;
function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)
local tablica_szablonu_tekstu_korzystanych=tablica_zmiennych.tablica_szablonu_tekstu_korzystanych;
for _,pozycja in ipairs(tablica_szablonu_tekstu_korzystanych)do
local __obiekt=pozycja[3][2];
local __kod=pozycja[3][3];
if((obiekt==__obiekt)and(kod==__kod))then
local tabela_parametrow_szablonu=pozycja[3][1][1];
local tekst=p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu);
if(tekst)then return tekst;end;
return nil;
end;
end;
return nil;
end;
function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)
if((not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)and(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych))then return nil;end;
if(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then
local function TempFunc(tablica_szablonu_tekstu)
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local tab_pobierz=pozycja[2];
for _,value in ipairs(tab_pobierz)do
return true;
end;
end;
return nil;
end;
if((not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)and(not TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)))then return nil;end;
end;
local stronicowyparser_obiekty_modul=require("Module:StronicowyParser/obiekty");
local tab_pobierz_szablonu_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
local tab_szablony_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu;
local czy_pobierz=nil;
local szablonowe_modul=require("Module:Szablonowe");
local ___tabela_parametrow_szablonu;
tekst_rozwiniety_calego_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(czy_pobierz)then
szablon,tab_numer=p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,___tabela_parametrow_szablonu,tablica_zmiennych);
if(szablon)then
IterowaniePoElementachTekstu(szablon,tab_numer);
end;
else
szablon=p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych);
end;
if(szablon)then return szablon;end;
return nil;
end,nil,
function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
----
if(tab_pobierz_szablonu_tekstu[nazwa_szablonu])then
czy_pobierz=true;
___tabela_parametrow_szablonu=tabela_parametrow_szablonu;
return true;
elseif(tab_szablony_tekstu[nazwa_szablonu])then
czy_pobierz=false;
return true;
end;
return nil;
end);
if(wynik)then return wynik;end;
end;
return nil;
end);
return tekst_rozwiniety_calego_artykulu;
end;
return p;
akmvoeenf9tdey2c2k5ppin6yhlmkg3
558367
558366
2026-10-02T22:07:58Z
Persino
2851
558367
Scribunto
text/plain
local p={};
p.PreparowanieSzablonoweLinkoweSzablonuTekstu=function(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu,czy_bez_preprocess)
--if(true)then return tekst;end;
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local szablony_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane;
local numerowane_obiekty=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty;
local nienumerowane_obiekty_napisu_wprowadzenia_tekstu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu;
local nienumerowane_obiekty_tekstu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
----
tablica_analizy_obiektow_strony_dany_modul=tablica_analizy_obiektow_strony_dany_modul or __tablica_analizy_obiektow_strony_dany_modul;
tablica_danych_parametrow_szablonu_strony=tablica_danych_parametrow_szablonu_strony or __tablica_danych_parametrow_szablonu_strony;
----
local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
--if(true)then return nil,true;end;
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,__tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,
function(__tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(szablony_tekstu[nazwa_szablonu])then
local tekst=p.ParametrTekstowySzablonuTekstu(__tabela_parametrow_szablonu);
tabela_parametrow_szablonu=tabela_parametrow_szablonu or __tabela_parametrow_szablonu;
local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod)
if(obiekt=="ZMIENNA")then
local klucz=mw.ustring.match(szablon,"^%{%{%{%s*klucz(%d*)%s*%|.*%}%}%}$") or mw.ustring.match(szablon,"^%{%{%{%s*klucz(%d*)%s*%}%}%}$");
if(klucz)then
if((klucz=="")or(mw.ustring.match(klucz,"^[1-9]%d*$")))then
local wartosc_klucz=tabela_parametrow_szablonu["klucz"..klucz];
wartosc_klucz=wartosc_klucz and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(wartosc_klucz,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true,true) or wartosc_klucz;
if(wartosc_klucz)then return wartosc_klucz;end;
end;
end;
end;
return nil,true;
end);
local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,__tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(
(numerowane_obiekty[nazwa_szablonu])
or(nienumerowane_obiekty_napisu_wprowadzenia_tekstu[nazwa_szablonu])
or(nienumerowane_obiekty_tekstu[nazwa_szablonu])
)then
local uchwyt=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1];
local nazwa_artykulu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[2];
local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[3];
uchwyt=uchwyt and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(uchwyt,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true) or uchwyt;
nazwa_artykulu=nazwa_artykulu and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(nazwa_artykulu,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true) or nazwa_artykulu;
nazwa_ksiazki=nazwa_ksiazki and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(nazwa_ksiazki,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true) or nazwa_ksiazki;
tabela_parametrow_szablonu["uchwyt"]=uchwyt;tabela_parametrow_szablonu[1]=nil;
tabela_parametrow_szablonu["nazwa artykułu"]=nazwa_artykulu or (not czy_bez_preprocess)and nazwa_artykulu_tekstu or nil;tabela_parametrow_szablonu[2]=nil;
tabela_parametrow_szablonu["nazwa książki"]=nazwa_ksiazki or (not czy_bez_preprocess) and nazwa_modulu_ksiazki_tekstu or nil;tabela_parametrow_szablonu[3]=nil;
local szablon=szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,false);
__tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
__tablica_danych_parametrow_szablonu_strony[1][kod].parametry=nil;
end;
return nil;
end);
end;
return nil,true;
end);
end;
end);
end;
return nil,true;
end,nil,
function(szablon,obiekt,kod,poziom_iteracji,tekst)
if(poziom_iteracji>0)then
return nil;
end;
return szablon;
end);
return tekst;
end;
function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu)
local tekst=tabela_parametrow_szablonu["tekst"] or tabela_parametrow_szablonu["treść"] or tabela_parametrow_szablonu[1];
return tekst;
end;
function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu)
return tabela_parametrow_szablonu["bez preprocess"];
end;
function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2)
if(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end;
for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)do
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,pozycja);
end;
end;
end;
function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany)
if(not czy_artykul_korzystany)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{
{wartosc_elementu,lista_dwuelementowa,},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
{tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,},
});
else
if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{
{wartosc_elementu,lista_dwuelementowa,},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
{tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,},
});
end;
end;
function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)
local tablica_szablonu_tekstu;
if(czy_artykul_korzystany)then
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych;
else
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych;
end;
if(tablica_szablonu_tekstu)then
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local nazwa_obiektu_tekstu=pozycja[1][1];
local uchwyt_obiektu_tekstu=pozycja[1][2][1];
if((nazwa_obiektu_tekstu==nazwa_obiektu)and(uchwyt_obiektu_tekstu==uchwyt_obiektu))then
local dodatkowe_elementy=pozycja[2];
local czy_tak=false;
for _,pozycja_dodatkowe in ipairs(dodatkowe_elementy)do
if((pozycja_dodatkowe[1]==obiekt)and(pozycja_dodatkowe[2]==kod))then
czy_tak=true;
break;
end;
end;
if(not czy_tak)then
local tab_numer;
if(tablica_zmiennych)then
tab_numer={};
for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do
tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name];
end;
end;
table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer});
break;
end;
end;
end;
end;
end;
function p.UstawPobierzKorzystanie(tablica_zmiennych2)
if(tablica_zmiennych2.tablica_szablonu_tekstu_linkowe_korzystane)then
for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_linkowe_korzystane)do
if(not pozycja[3])then
pozycja[3]=true;
local nazwa_obiektu=pozycja[1][1];
local uchwyt_obiektu=pozycja[1][2];
local obiekt=pozycja[2][1];
local kod=pozycja[2][2];
p.UstawianiePobierz(nil,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,true);
end;
end;
end;
end;
function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane)
local __tablica_analizy_obiektow_strony_dany_modul=(pozycja[4] or{})[1] or tablica_analizy_obiektow_strony_dany_modul;
local __tablica_danych_parametrow_szablonu_strony=(pozycja[4] or {})[2] or tablica_danych_parametrow_szablonu_strony;
local __obiekt=(pozycja[3] or {})[2];
local __kod=(pozycja[3] or {})[3];
local __szablon=__tablica_analizy_obiektow_strony_dany_modul[__obiekt][__kod];
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local bez_preprocess=p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu);
local parametry_modul=require("Module:Parametry");
local czy_bez_preprocess=parametry_modul.CzyTak(bez_preprocess);
local nazwa_artykulu_tekstu;local nazwa_modulu_ksiazki_tekstu;
if(not czy_bez_preprocess)then
nazwa_artykulu_tekstu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[2];
nazwa_modulu_ksiazki_tekstu=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[3];
nazwa_artykulu_tekstu=nazwa_artykulu_tekstu and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(nazwa_artykulu_tekstu,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true,true) or nazwa_artykulu_tekstu;
nazwa_modulu_ksiazki_tekstu=nazwa_modulu_ksiazki_tekstu and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(nazwa_modulu_ksiazki_tekstu,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true,true) or nazwa_modulu_ksiazki_tekstu;
end;
local tekst_szablon=p.PreparowanieSzablonoweLinkoweSzablonuTekstu(szablonowe_modul.NormaKoduKodowaniaTekstu(__obiekt,__kod),nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu,czy_bez_preprocess);
local __tabela_parametrow_szablonu=pozycja[3][1][1];
----
local tekst=p.ParametrTekstowySzablonuTekstu(__tabela_parametrow_szablonu);
if(tekst)then
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
----
local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
--local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul);
local tab_numer={};
local tab_tak={};
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod,poziom_iteracji,_,obiekt_rodzica,kod_rodzica,szablon_rodzica,_,_,poziom_iteracji_rodzica)
obiekt_rodzica=obiekt_rodzica or true;
kod_rodzica=kod_rodzica or true;
local tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica];
if(not tab_tak_obiekt_rodzica)then tab_tak[obiekt_rodzica]={};tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica]end;
local tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica];
if(not tab_tak_kod_rodzica)then tab_tak_obiekt_rodzica[kod_rodzica]={};tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica]end;
local czy_tak=tab_tak_kod_rodzica[obiekt];
tab_tak_kod_rodzica[obiekt]=true;
tab_numer[obiekt]=tab_numer[obiekt] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt);
local max_numer=tab_numer[obiekt];
local kod_temp=kod+max_numer;
--tablica_analizy_obiektow_strony_dany_modul[obiekt][kod_temp]=szablon;
local ile;
if(not czy_tak)then
szablon_rodzica,ile=mw.ustring.gsub(szablon_rodzica,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt),function(kod)
kod=tonumber(kod) or nil;
return szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod+max_numer);
end);
end;
local TempFunc=function(tablica_danych_parametrow_szablonu_strony,kod)
local tab_obiekt=tab_analiza[obiekt];
if(tab_obiekt)then
for _, wartosc in pairs(tab_obiekt)do
local tab_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc];
if(not tab_wartosc)then
tablica_danych_parametrow_szablonu_strony[wartosc]={};
end;
local stara_tabelka=(__tablica_danych_parametrow_szablonu_strony[wartosc] or {})[kod];
local nowa_tabelka=parametry_modul.TypeTable(stara_tabelka) and parametry_modul["KopiujRekurencyjnieTabelęElementów"](stara_tabelka) or stara_tabelka;
tablica_danych_parametrow_szablonu_strony[wartosc][kod_temp]=nowa_tabelka;
end;
end;
end;
TempFunc(tablica_danych_parametrow_szablonu_strony,kod);
if(poziom_iteracji>0)then
tab_numer[obiekt_rodzica]=tab_numer[obiekt_rodzica] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt_rodzica);
local max_numer_rodzica=tab_numer[obiekt_rodzica];
kod_rodzica=kod_rodzica+max_numer_rodzica;
end;
if(not czy_tak)then
return nil,szablon,obiekt,kod_temp,szablon_rodzica,obiekt_rodzica,kod_rodzica,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica;
else
return nil,szablon,obiekt,kod_temp,nil,nil,nil,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica;
end;
return;
end);
return tekst;
----
end;
return;
end;
function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych)
local function TempFunc(tablica_szablonu_tekstu,__funkcja,czy_korzystane)
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local tab_obiekty=pozycja[2];
for _,pozycja2 in ipairs(tab_obiekty)do
local __obiekt=pozycja2[1];
local __kod=pozycja2[2];
if((__obiekt==obiekt)and(__kod==kod))then
local szablon=__funkcja(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane);
if(szablon)then
tab_numer=pozycja2[3];
return szablon,tab_numer;
end;
return;
end;
end;
end;
end;
local szablon;local tab_numer;
if(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then
szablon,tab_numer=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,p.ZamienianiePobierzNaKod,true);
end;
if(not szablon)then
if(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then
szablon,tab_numer=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,p.ZamienianiePobierzNaKod,false);
end;
end;
if(szablon)then return szablon,tab_numer;end;
return nil;
end;
function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)
local tablica_szablonu_tekstu_korzystanych=tablica_zmiennych.tablica_szablonu_tekstu_korzystanych;
for _,pozycja in ipairs(tablica_szablonu_tekstu_korzystanych)do
local __obiekt=pozycja[3][2];
local __kod=pozycja[3][3];
if((obiekt==__obiekt)and(kod==__kod))then
local tabela_parametrow_szablonu=pozycja[3][1][1];
local tekst=p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu);
if(tekst)then return tekst;end;
return nil;
end;
end;
return nil;
end;
function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)
if((not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)and(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych))then return nil;end;
if(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then
local function TempFunc(tablica_szablonu_tekstu)
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local tab_pobierz=pozycja[2];
for _,value in ipairs(tab_pobierz)do
return true;
end;
end;
return nil;
end;
if((not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)and(not TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)))then return nil;end;
end;
local stronicowyparser_obiekty_modul=require("Module:StronicowyParser/obiekty");
local tab_pobierz_szablonu_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
local tab_szablony_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu;
local czy_pobierz=nil;
local szablonowe_modul=require("Module:Szablonowe");
local ___tabela_parametrow_szablonu;
tekst_rozwiniety_calego_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(czy_pobierz)then
szablon,tab_numer=p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,___tabela_parametrow_szablonu,tablica_zmiennych);
if(szablon)then
IterowaniePoElementachTekstu(szablon,tab_numer);
end;
else
szablon=p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych);
end;
if(szablon)then return szablon;end;
return nil;
end,nil,
function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
----
if(tab_pobierz_szablonu_tekstu[nazwa_szablonu])then
czy_pobierz=true;
___tabela_parametrow_szablonu=tabela_parametrow_szablonu;
return true;
elseif(tab_szablony_tekstu[nazwa_szablonu])then
czy_pobierz=false;
return true;
end;
return nil;
end);
if(wynik)then return wynik;end;
end;
return nil;
end);
return tekst_rozwiniety_calego_artykulu;
end;
return p;
kxhekic258us8d3y1iu7nfgugvfvvb2
558369
558367
2026-10-02T22:50:27Z
Persino
2851
558369
Scribunto
text/plain
local p={};
p.PreparowanieSzablonoweLinkoweSzablonuTekstu=function(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu,czy_bez_preprocess)
--if(true)then return tekst;end;
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local szablony_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane;
local numerowane_obiekty=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty;
local nienumerowane_obiekty_napisu_wprowadzenia_tekstu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu;
local nienumerowane_obiekty_tekstu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
----
tablica_analizy_obiektow_strony_dany_modul=tablica_analizy_obiektow_strony_dany_modul or __tablica_analizy_obiektow_strony_dany_modul;
tablica_danych_parametrow_szablonu_strony=tablica_danych_parametrow_szablonu_strony or __tablica_danych_parametrow_szablonu_strony;
----
local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
--if(true)then return nil,true;end;
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,__tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,
function(__tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(szablony_tekstu[nazwa_szablonu])then
local tekst=p.ParametrTekstowySzablonuTekstu(__tabela_parametrow_szablonu);
local bez_preprocess=p.SzablonTekstuBezPreProcess(__tabela_parametrow_szablonu);
local czy_bez_preprocess=parametry_modul.CzyTak(bez_preprocess);
----
tabela_parametrow_szablonu=tabela_parametrow_szablonu or __tabela_parametrow_szablonu;
local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod)
if(obiekt=="ZMIENNA")then
local klucz=mw.ustring.match(szablon,"^%{%{%{%s*klucz(%d*)%s*%|.*%}%}%}$") or mw.ustring.match(szablon,"^%{%{%{%s*klucz(%d*)%s*%}%}%}$");
if(klucz)then
if((klucz=="")or(mw.ustring.match(klucz,"^[1-9]%d*$")))then
local wartosc_klucz=tabela_parametrow_szablonu["klucz"..klucz];
wartosc_klucz=wartosc_klucz and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(wartosc_klucz,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true,true) or wartosc_klucz;
if(wartosc_klucz)then return wartosc_klucz;end;
end;
end;
end;
return nil,true;
end);
local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,__tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(
(numerowane_obiekty[nazwa_szablonu])
or(nienumerowane_obiekty_napisu_wprowadzenia_tekstu[nazwa_szablonu])
or(nienumerowane_obiekty_tekstu[nazwa_szablonu])
)then
local uchwyt=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1];
local nazwa_artykulu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[2];
local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[3];
uchwyt=uchwyt and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(uchwyt,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true) or uchwyt;
nazwa_artykulu=nazwa_artykulu and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(nazwa_artykulu,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true) or nazwa_artykulu;
nazwa_ksiazki=nazwa_ksiazki and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(nazwa_ksiazki,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true) or nazwa_ksiazki;
tabela_parametrow_szablonu["uchwyt"]=uchwyt;tabela_parametrow_szablonu[1]=nil;
tabela_parametrow_szablonu["nazwa artykułu"]=nazwa_artykulu or (not czy_bez_preprocess)and nazwa_artykulu_tekstu or nil;tabela_parametrow_szablonu[2]=nil;
tabela_parametrow_szablonu["nazwa książki"]=nazwa_ksiazki or (not czy_bez_preprocess) and nazwa_modulu_ksiazki_tekstu or nil;tabela_parametrow_szablonu[3]=nil;
local szablon=szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,false);
__tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
__tablica_danych_parametrow_szablonu_strony[1][kod].parametry=nil;
end;
return nil;
end);
end;
return nil,true;
end);
end;
end);
end;
return nil,true;
end,nil,
function(szablon,obiekt,kod,poziom_iteracji,tekst)
if(poziom_iteracji>0)then
return nil;
end;
return szablon;
end);
return tekst;
end;
function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu)
local tekst=tabela_parametrow_szablonu["tekst"] or tabela_parametrow_szablonu["treść"] or tabela_parametrow_szablonu[1];
return tekst;
end;
function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu)
return tabela_parametrow_szablonu["bez preprocess"];
end;
function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2)
if(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end;
for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)do
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,pozycja);
end;
end;
end;
function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany)
if(not czy_artykul_korzystany)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{
{wartosc_elementu,lista_dwuelementowa,},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
{tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,},
});
else
if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{
{wartosc_elementu,lista_dwuelementowa,},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
{tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,},
});
end;
end;
function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)
local tablica_szablonu_tekstu;
if(czy_artykul_korzystany)then
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych;
else
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych;
end;
if(tablica_szablonu_tekstu)then
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local nazwa_obiektu_tekstu=pozycja[1][1];
local uchwyt_obiektu_tekstu=pozycja[1][2][1];
if((nazwa_obiektu_tekstu==nazwa_obiektu)and(uchwyt_obiektu_tekstu==uchwyt_obiektu))then
local dodatkowe_elementy=pozycja[2];
local czy_tak=false;
for _,pozycja_dodatkowe in ipairs(dodatkowe_elementy)do
if((pozycja_dodatkowe[1]==obiekt)and(pozycja_dodatkowe[2]==kod))then
czy_tak=true;
break;
end;
end;
if(not czy_tak)then
local tab_numer;
if(tablica_zmiennych)then
tab_numer={};
for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do
tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name];
end;
end;
table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer});
break;
end;
end;
end;
end;
end;
function p.UstawPobierzKorzystanie(tablica_zmiennych2)
if(tablica_zmiennych2.tablica_szablonu_tekstu_linkowe_korzystane)then
for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_linkowe_korzystane)do
if(not pozycja[3])then
pozycja[3]=true;
local nazwa_obiektu=pozycja[1][1];
local uchwyt_obiektu=pozycja[1][2];
local obiekt=pozycja[2][1];
local kod=pozycja[2][2];
p.UstawianiePobierz(nil,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,true);
end;
end;
end;
end;
function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane)
local __tablica_analizy_obiektow_strony_dany_modul=(pozycja[4] or{})[1] or tablica_analizy_obiektow_strony_dany_modul;
local __tablica_danych_parametrow_szablonu_strony=(pozycja[4] or {})[2] or tablica_danych_parametrow_szablonu_strony;
local __obiekt=(pozycja[3] or {})[2];
local __kod=(pozycja[3] or {})[3];
local __szablon=__tablica_analizy_obiektow_strony_dany_modul[__obiekt][__kod];
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local nazwa_artykulu_tekstu;local nazwa_modulu_ksiazki_tekstu;
nazwa_artykulu_tekstu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[2];
nazwa_modulu_ksiazki_tekstu=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[3];
nazwa_artykulu_tekstu=nazwa_artykulu_tekstu and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(nazwa_artykulu_tekstu,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true,true) or nazwa_artykulu_tekstu;
nazwa_modulu_ksiazki_tekstu=nazwa_modulu_ksiazki_tekstu and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(nazwa_modulu_ksiazki_tekstu,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true,true) or nazwa_modulu_ksiazki_tekstu;
local tekst_szablon=p.PreparowanieSzablonoweLinkoweSzablonuTekstu(szablonowe_modul.NormaKoduKodowaniaTekstu(__obiekt,__kod),nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu,czy_bez_preprocess);
local __tabela_parametrow_szablonu=pozycja[3][1][1];
----
local tekst=p.ParametrTekstowySzablonuTekstu(__tabela_parametrow_szablonu);
if(tekst)then
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
----
local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
--local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul);
local tab_numer={};
local tab_tak={};
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod,poziom_iteracji,_,obiekt_rodzica,kod_rodzica,szablon_rodzica,_,_,poziom_iteracji_rodzica)
obiekt_rodzica=obiekt_rodzica or true;
kod_rodzica=kod_rodzica or true;
local tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica];
if(not tab_tak_obiekt_rodzica)then tab_tak[obiekt_rodzica]={};tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica]end;
local tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica];
if(not tab_tak_kod_rodzica)then tab_tak_obiekt_rodzica[kod_rodzica]={};tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica]end;
local czy_tak=tab_tak_kod_rodzica[obiekt];
tab_tak_kod_rodzica[obiekt]=true;
tab_numer[obiekt]=tab_numer[obiekt] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt);
local max_numer=tab_numer[obiekt];
local kod_temp=kod+max_numer;
--tablica_analizy_obiektow_strony_dany_modul[obiekt][kod_temp]=szablon;
local ile;
if(not czy_tak)then
szablon_rodzica,ile=mw.ustring.gsub(szablon_rodzica,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt),function(kod)
kod=tonumber(kod) or nil;
return szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod+max_numer);
end);
end;
local TempFunc=function(tablica_danych_parametrow_szablonu_strony,kod)
local tab_obiekt=tab_analiza[obiekt];
if(tab_obiekt)then
for _, wartosc in pairs(tab_obiekt)do
local tab_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc];
if(not tab_wartosc)then
tablica_danych_parametrow_szablonu_strony[wartosc]={};
end;
local stara_tabelka=(__tablica_danych_parametrow_szablonu_strony[wartosc] or {})[kod];
local nowa_tabelka=parametry_modul.TypeTable(stara_tabelka) and parametry_modul["KopiujRekurencyjnieTabelęElementów"](stara_tabelka) or stara_tabelka;
tablica_danych_parametrow_szablonu_strony[wartosc][kod_temp]=nowa_tabelka;
end;
end;
end;
TempFunc(tablica_danych_parametrow_szablonu_strony,kod);
if(poziom_iteracji>0)then
tab_numer[obiekt_rodzica]=tab_numer[obiekt_rodzica] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt_rodzica);
local max_numer_rodzica=tab_numer[obiekt_rodzica];
kod_rodzica=kod_rodzica+max_numer_rodzica;
end;
if(not czy_tak)then
return nil,szablon,obiekt,kod_temp,szablon_rodzica,obiekt_rodzica,kod_rodzica,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica;
else
return nil,szablon,obiekt,kod_temp,nil,nil,nil,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica;
end;
return;
end);
return tekst;
----
end;
return;
end;
function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych)
local function TempFunc(tablica_szablonu_tekstu,__funkcja,czy_korzystane)
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local tab_obiekty=pozycja[2];
for _,pozycja2 in ipairs(tab_obiekty)do
local __obiekt=pozycja2[1];
local __kod=pozycja2[2];
if((__obiekt==obiekt)and(__kod==kod))then
local szablon=__funkcja(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane);
if(szablon)then
tab_numer=pozycja2[3];
return szablon,tab_numer;
end;
return;
end;
end;
end;
end;
local szablon;local tab_numer;
if(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then
szablon,tab_numer=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,p.ZamienianiePobierzNaKod,true);
end;
if(not szablon)then
if(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then
szablon,tab_numer=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,p.ZamienianiePobierzNaKod,false);
end;
end;
if(szablon)then return szablon,tab_numer;end;
return nil;
end;
function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)
local tablica_szablonu_tekstu_korzystanych=tablica_zmiennych.tablica_szablonu_tekstu_korzystanych;
for _,pozycja in ipairs(tablica_szablonu_tekstu_korzystanych)do
local __obiekt=pozycja[3][2];
local __kod=pozycja[3][3];
if((obiekt==__obiekt)and(kod==__kod))then
local tabela_parametrow_szablonu=pozycja[3][1][1];
local tekst=p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu);
if(tekst)then return tekst;end;
return nil;
end;
end;
return nil;
end;
function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)
if((not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)and(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych))then return nil;end;
if(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then
local function TempFunc(tablica_szablonu_tekstu)
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local tab_pobierz=pozycja[2];
for _,value in ipairs(tab_pobierz)do
return true;
end;
end;
return nil;
end;
if((not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)and(not TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)))then return nil;end;
end;
local stronicowyparser_obiekty_modul=require("Module:StronicowyParser/obiekty");
local tab_pobierz_szablonu_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
local tab_szablony_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu;
local czy_pobierz=nil;
local szablonowe_modul=require("Module:Szablonowe");
local ___tabela_parametrow_szablonu;
tekst_rozwiniety_calego_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(czy_pobierz)then
szablon,tab_numer=p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,___tabela_parametrow_szablonu,tablica_zmiennych);
if(szablon)then
IterowaniePoElementachTekstu(szablon,tab_numer);
end;
else
szablon=p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych);
end;
if(szablon)then return szablon;end;
return nil;
end,nil,
function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
----
if(tab_pobierz_szablonu_tekstu[nazwa_szablonu])then
czy_pobierz=true;
___tabela_parametrow_szablonu=tabela_parametrow_szablonu;
return true;
elseif(tab_szablony_tekstu[nazwa_szablonu])then
czy_pobierz=false;
return true;
end;
return nil;
end);
if(wynik)then return wynik;end;
end;
return nil;
end);
return tekst_rozwiniety_calego_artykulu;
end;
return p;
7wz9yz7jd6ysvf6icd7pw9yl7ohh5cm
558371
558369
2026-10-02T22:53:08Z
Persino
2851
558371
Scribunto
text/plain
local p={};
p.PreparowanieSzablonoweLinkoweSzablonuTekstu=function(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu)
--if(true)then return tekst;end;
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local szablony_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane;
local numerowane_obiekty=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty;
local nienumerowane_obiekty_napisu_wprowadzenia_tekstu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu;
local nienumerowane_obiekty_tekstu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
----
tablica_analizy_obiektow_strony_dany_modul=tablica_analizy_obiektow_strony_dany_modul or __tablica_analizy_obiektow_strony_dany_modul;
tablica_danych_parametrow_szablonu_strony=tablica_danych_parametrow_szablonu_strony or __tablica_danych_parametrow_szablonu_strony;
----
local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
--if(true)then return nil,true;end;
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,__tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,
function(__tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(szablony_tekstu[nazwa_szablonu])then
local tekst=p.ParametrTekstowySzablonuTekstu(__tabela_parametrow_szablonu);
local bez_preprocess=p.SzablonTekstuBezPreProcess(__tabela_parametrow_szablonu);
local czy_bez_preprocess=parametry_modul.CzyTak(bez_preprocess);
----
tabela_parametrow_szablonu=tabela_parametrow_szablonu or __tabela_parametrow_szablonu;
local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod)
if(obiekt=="ZMIENNA")then
local klucz=mw.ustring.match(szablon,"^%{%{%{%s*klucz(%d*)%s*%|.*%}%}%}$") or mw.ustring.match(szablon,"^%{%{%{%s*klucz(%d*)%s*%}%}%}$");
if(klucz)then
if((klucz=="")or(mw.ustring.match(klucz,"^[1-9]%d*$")))then
local wartosc_klucz=tabela_parametrow_szablonu["klucz"..klucz];
wartosc_klucz=wartosc_klucz and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(wartosc_klucz,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true,true) or wartosc_klucz;
if(wartosc_klucz)then return wartosc_klucz;end;
end;
end;
end;
return nil,true;
end);
local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,__tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(
(numerowane_obiekty[nazwa_szablonu])
or(nienumerowane_obiekty_napisu_wprowadzenia_tekstu[nazwa_szablonu])
or(nienumerowane_obiekty_tekstu[nazwa_szablonu])
)then
local uchwyt=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1];
local nazwa_artykulu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[2];
local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[3];
uchwyt=uchwyt and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(uchwyt,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true) or uchwyt;
nazwa_artykulu=nazwa_artykulu and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(nazwa_artykulu,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true) or nazwa_artykulu;
nazwa_ksiazki=nazwa_ksiazki and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(nazwa_ksiazki,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true) or nazwa_ksiazki;
tabela_parametrow_szablonu["uchwyt"]=uchwyt;tabela_parametrow_szablonu[1]=nil;
tabela_parametrow_szablonu["nazwa artykułu"]=nazwa_artykulu or (not czy_bez_preprocess)and nazwa_artykulu_tekstu or nil;tabela_parametrow_szablonu[2]=nil;
tabela_parametrow_szablonu["nazwa książki"]=nazwa_ksiazki or (not czy_bez_preprocess) and nazwa_modulu_ksiazki_tekstu or nil;tabela_parametrow_szablonu[3]=nil;
local szablon=szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,false);
__tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
__tablica_danych_parametrow_szablonu_strony[1][kod].parametry=nil;
end;
return nil;
end);
end;
return nil,true;
end);
end;
end);
end;
return nil,true;
end,nil,
function(szablon,obiekt,kod,poziom_iteracji,tekst)
if(poziom_iteracji>0)then
return nil;
end;
return szablon;
end);
return tekst;
end;
function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu)
local tekst=tabela_parametrow_szablonu["tekst"] or tabela_parametrow_szablonu["treść"] or tabela_parametrow_szablonu[1];
return tekst;
end;
function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu)
return tabela_parametrow_szablonu["bez preprocess"];
end;
function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2)
if(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end;
for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)do
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,pozycja);
end;
end;
end;
function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany)
if(not czy_artykul_korzystany)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{
{wartosc_elementu,lista_dwuelementowa,},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
{tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,},
});
else
if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{
{wartosc_elementu,lista_dwuelementowa,},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
{tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,},
});
end;
end;
function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)
local tablica_szablonu_tekstu;
if(czy_artykul_korzystany)then
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych;
else
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych;
end;
if(tablica_szablonu_tekstu)then
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local nazwa_obiektu_tekstu=pozycja[1][1];
local uchwyt_obiektu_tekstu=pozycja[1][2][1];
if((nazwa_obiektu_tekstu==nazwa_obiektu)and(uchwyt_obiektu_tekstu==uchwyt_obiektu))then
local dodatkowe_elementy=pozycja[2];
local czy_tak=false;
for _,pozycja_dodatkowe in ipairs(dodatkowe_elementy)do
if((pozycja_dodatkowe[1]==obiekt)and(pozycja_dodatkowe[2]==kod))then
czy_tak=true;
break;
end;
end;
if(not czy_tak)then
local tab_numer;
if(tablica_zmiennych)then
tab_numer={};
for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do
tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name];
end;
end;
table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer});
break;
end;
end;
end;
end;
end;
function p.UstawPobierzKorzystanie(tablica_zmiennych2)
if(tablica_zmiennych2.tablica_szablonu_tekstu_linkowe_korzystane)then
for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_linkowe_korzystane)do
if(not pozycja[3])then
pozycja[3]=true;
local nazwa_obiektu=pozycja[1][1];
local uchwyt_obiektu=pozycja[1][2];
local obiekt=pozycja[2][1];
local kod=pozycja[2][2];
p.UstawianiePobierz(nil,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,true);
end;
end;
end;
end;
function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane)
local __tablica_analizy_obiektow_strony_dany_modul=(pozycja[4] or{})[1] or tablica_analizy_obiektow_strony_dany_modul;
local __tablica_danych_parametrow_szablonu_strony=(pozycja[4] or {})[2] or tablica_danych_parametrow_szablonu_strony;
local __obiekt=(pozycja[3] or {})[2];
local __kod=(pozycja[3] or {})[3];
local __szablon=__tablica_analizy_obiektow_strony_dany_modul[__obiekt][__kod];
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local nazwa_artykulu_tekstu;local nazwa_modulu_ksiazki_tekstu;
nazwa_artykulu_tekstu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[2];
nazwa_modulu_ksiazki_tekstu=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[3];
nazwa_artykulu_tekstu=nazwa_artykulu_tekstu and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(nazwa_artykulu_tekstu,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true,true) or nazwa_artykulu_tekstu;
nazwa_modulu_ksiazki_tekstu=nazwa_modulu_ksiazki_tekstu and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(nazwa_modulu_ksiazki_tekstu,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true,true) or nazwa_modulu_ksiazki_tekstu;
local tekst_szablon=p.PreparowanieSzablonoweLinkoweSzablonuTekstu(szablonowe_modul.NormaKoduKodowaniaTekstu(__obiekt,__kod),nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu);
local __tabela_parametrow_szablonu=pozycja[3][1][1];
----
local tekst=p.ParametrTekstowySzablonuTekstu(__tabela_parametrow_szablonu);
if(tekst)then
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
----
local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
--local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul);
local tab_numer={};
local tab_tak={};
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod,poziom_iteracji,_,obiekt_rodzica,kod_rodzica,szablon_rodzica,_,_,poziom_iteracji_rodzica)
obiekt_rodzica=obiekt_rodzica or true;
kod_rodzica=kod_rodzica or true;
local tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica];
if(not tab_tak_obiekt_rodzica)then tab_tak[obiekt_rodzica]={};tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica]end;
local tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica];
if(not tab_tak_kod_rodzica)then tab_tak_obiekt_rodzica[kod_rodzica]={};tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica]end;
local czy_tak=tab_tak_kod_rodzica[obiekt];
tab_tak_kod_rodzica[obiekt]=true;
tab_numer[obiekt]=tab_numer[obiekt] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt);
local max_numer=tab_numer[obiekt];
local kod_temp=kod+max_numer;
--tablica_analizy_obiektow_strony_dany_modul[obiekt][kod_temp]=szablon;
local ile;
if(not czy_tak)then
szablon_rodzica,ile=mw.ustring.gsub(szablon_rodzica,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt),function(kod)
kod=tonumber(kod) or nil;
return szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod+max_numer);
end);
end;
local TempFunc=function(tablica_danych_parametrow_szablonu_strony,kod)
local tab_obiekt=tab_analiza[obiekt];
if(tab_obiekt)then
for _, wartosc in pairs(tab_obiekt)do
local tab_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc];
if(not tab_wartosc)then
tablica_danych_parametrow_szablonu_strony[wartosc]={};
end;
local stara_tabelka=(__tablica_danych_parametrow_szablonu_strony[wartosc] or {})[kod];
local nowa_tabelka=parametry_modul.TypeTable(stara_tabelka) and parametry_modul["KopiujRekurencyjnieTabelęElementów"](stara_tabelka) or stara_tabelka;
tablica_danych_parametrow_szablonu_strony[wartosc][kod_temp]=nowa_tabelka;
end;
end;
end;
TempFunc(tablica_danych_parametrow_szablonu_strony,kod);
if(poziom_iteracji>0)then
tab_numer[obiekt_rodzica]=tab_numer[obiekt_rodzica] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt_rodzica);
local max_numer_rodzica=tab_numer[obiekt_rodzica];
kod_rodzica=kod_rodzica+max_numer_rodzica;
end;
if(not czy_tak)then
return nil,szablon,obiekt,kod_temp,szablon_rodzica,obiekt_rodzica,kod_rodzica,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica;
else
return nil,szablon,obiekt,kod_temp,nil,nil,nil,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica;
end;
return;
end);
return tekst;
----
end;
return;
end;
function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych)
local function TempFunc(tablica_szablonu_tekstu,__funkcja,czy_korzystane)
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local tab_obiekty=pozycja[2];
for _,pozycja2 in ipairs(tab_obiekty)do
local __obiekt=pozycja2[1];
local __kod=pozycja2[2];
if((__obiekt==obiekt)and(__kod==kod))then
local szablon=__funkcja(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane);
if(szablon)then
tab_numer=pozycja2[3];
return szablon,tab_numer;
end;
return;
end;
end;
end;
end;
local szablon;local tab_numer;
if(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then
szablon,tab_numer=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,p.ZamienianiePobierzNaKod,true);
end;
if(not szablon)then
if(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then
szablon,tab_numer=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,p.ZamienianiePobierzNaKod,false);
end;
end;
if(szablon)then return szablon,tab_numer;end;
return nil;
end;
function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)
local tablica_szablonu_tekstu_korzystanych=tablica_zmiennych.tablica_szablonu_tekstu_korzystanych;
for _,pozycja in ipairs(tablica_szablonu_tekstu_korzystanych)do
local __obiekt=pozycja[3][2];
local __kod=pozycja[3][3];
if((obiekt==__obiekt)and(kod==__kod))then
local tabela_parametrow_szablonu=pozycja[3][1][1];
local tekst=p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu);
if(tekst)then return tekst;end;
return nil;
end;
end;
return nil;
end;
function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)
if((not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)and(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych))then return nil;end;
if(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then
local function TempFunc(tablica_szablonu_tekstu)
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local tab_pobierz=pozycja[2];
for _,value in ipairs(tab_pobierz)do
return true;
end;
end;
return nil;
end;
if((not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)and(not TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)))then return nil;end;
end;
local stronicowyparser_obiekty_modul=require("Module:StronicowyParser/obiekty");
local tab_pobierz_szablonu_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
local tab_szablony_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu;
local czy_pobierz=nil;
local szablonowe_modul=require("Module:Szablonowe");
local ___tabela_parametrow_szablonu;
tekst_rozwiniety_calego_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(czy_pobierz)then
szablon,tab_numer=p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,___tabela_parametrow_szablonu,tablica_zmiennych);
if(szablon)then
IterowaniePoElementachTekstu(szablon,tab_numer);
end;
else
szablon=p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych);
end;
if(szablon)then return szablon;end;
return nil;
end,nil,
function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
----
if(tab_pobierz_szablonu_tekstu[nazwa_szablonu])then
czy_pobierz=true;
___tabela_parametrow_szablonu=tabela_parametrow_szablonu;
return true;
elseif(tab_szablony_tekstu[nazwa_szablonu])then
czy_pobierz=false;
return true;
end;
return nil;
end);
if(wynik)then return wynik;end;
end;
return nil;
end);
return tekst_rozwiniety_calego_artykulu;
end;
return p;
mv4k6uqa6wuwxhbzt13dhc0ne4lv58k
558375
558371
2026-10-02T23:05:56Z
Persino
2851
558375
Scribunto
text/plain
local p={};
p.PreparowanieSzablonoweLinkoweSzablonuTekstu=function(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu)
--if(true)then return tekst;end;
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local szablony_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane;
local numerowane_obiekty=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty;
local nienumerowane_obiekty_napisu_wprowadzenia_tekstu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu;
local nienumerowane_obiekty_tekstu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
----
tablica_analizy_obiektow_strony_dany_modul=tablica_analizy_obiektow_strony_dany_modul or __tablica_analizy_obiektow_strony_dany_modul;
tablica_danych_parametrow_szablonu_strony=tablica_danych_parametrow_szablonu_strony or __tablica_danych_parametrow_szablonu_strony;
----
local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
--if(true)then return nil,true;end;
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,__tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,
function(__tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(szablony_tekstu[nazwa_szablonu])then
local tekst=p.ParametrTekstowySzablonuTekstu(__tabela_parametrow_szablonu);
local bez_preprocess=p.SzablonTekstuBezPreProcess(__tabela_parametrow_szablonu);
local czy_bez_preprocess=parametry_modul.CzyTak(bez_preprocess);
----
tabela_parametrow_szablonu=tabela_parametrow_szablonu or __tabela_parametrow_szablonu;
local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod)
if(obiekt=="ZMIENNA")then
local klucz=mw.ustring.match(szablon,"^%{%{%{%s*klucz(%d*)%s*%|.*%}%}%}$") or mw.ustring.match(szablon,"^%{%{%{%s*klucz(%d*)%s*%}%}%}$");
if(klucz)then
if((klucz=="")or(mw.ustring.match(klucz,"^[1-9]%d*$")))then
local wartosc_klucz=tabela_parametrow_szablonu["klucz"..klucz];
wartosc_klucz=wartosc_klucz and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(wartosc_klucz,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true,true) or wartosc_klucz;
if(wartosc_klucz)then return wartosc_klucz;end;
end;
end;
end;
return nil,true;
end);
local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,__tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(
(numerowane_obiekty[nazwa_szablonu])
or(nienumerowane_obiekty_napisu_wprowadzenia_tekstu[nazwa_szablonu])
or(nienumerowane_obiekty_tekstu[nazwa_szablonu])
)then
local uchwyt=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1];
local nazwa_artykulu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[2];
local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[3];
uchwyt=uchwyt and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(uchwyt,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true) or uchwyt;
nazwa_artykulu=nazwa_artykulu and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(nazwa_artykulu,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true) or nazwa_artykulu;
nazwa_ksiazki=nazwa_ksiazki and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(nazwa_ksiazki,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true) or nazwa_ksiazki;
tabela_parametrow_szablonu["uchwyt"]=uchwyt;tabela_parametrow_szablonu[1]=nil;
tabela_parametrow_szablonu["nazwa artykułu"]=nazwa_artykulu or (not czy_bez_preprocess)and nazwa_artykulu_tekstu or nil;tabela_parametrow_szablonu[2]=nil;
tabela_parametrow_szablonu["nazwa książki"]=nazwa_ksiazki or (not czy_bez_preprocess) and nazwa_modulu_ksiazki_tekstu or nil;tabela_parametrow_szablonu[3]=nil;
local szablon=szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,false);
__tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
__tablica_danych_parametrow_szablonu_strony[1][kod].parametry=nil;
end;
return nil;
end);
end;
return nil,true;
end);
end;
end);
end;
return nil,true;
end,nil,
function(szablon,obiekt,kod,poziom_iteracji,tekst)
if(poziom_iteracji>0)then
return nil;
end;
return szablon;
end);
return tekst;
end;
function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu)
local tekst=tabela_parametrow_szablonu["tekst"] or tabela_parametrow_szablonu["treść"] or tabela_parametrow_szablonu[1];
return tekst;
end;
function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu)
return tabela_parametrow_szablonu["bez preprocess"];
end;
function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2)
if(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end;
for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)do
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,pozycja);
end;
end;
end;
function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany)
if(not czy_artykul_korzystany)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{
{wartosc_elementu,lista_dwuelementowa,},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
{tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,},
});
else
if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{
{wartosc_elementu,lista_dwuelementowa,},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
{tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,},
});
end;
end;
function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)
local tablica_szablonu_tekstu;
if(czy_artykul_korzystany)then
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych;
else
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych;
end;
if(tablica_szablonu_tekstu)then
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local nazwa_obiektu_tekstu=pozycja[1][1];
local uchwyt_obiektu_tekstu=pozycja[1][2][1];
if((nazwa_obiektu_tekstu==nazwa_obiektu)and(uchwyt_obiektu_tekstu==uchwyt_obiektu))then
local dodatkowe_elementy=pozycja[2];
local czy_tak=false;
for _,pozycja_dodatkowe in ipairs(dodatkowe_elementy)do
if((pozycja_dodatkowe[1]==obiekt)and(pozycja_dodatkowe[2]==kod))then
czy_tak=true;
break;
end;
end;
if(not czy_tak)then
local tab_numer;
if(tablica_zmiennych)then
tab_numer={};
for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do
tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name];
end;
end;
table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer});
break;
end;
end;
end;
end;
end;
function p.UstawPobierzKorzystanie(tablica_zmiennych2)
if(tablica_zmiennych2.tablica_szablonu_tekstu_linkowe_korzystane)then
for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_linkowe_korzystane)do
if(not pozycja[3])then
pozycja[3]=true;
local nazwa_obiektu=pozycja[1][1];
local uchwyt_obiektu=pozycja[1][2];
local obiekt=pozycja[2][1];
local kod=pozycja[2][2];
p.UstawianiePobierz(nil,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,true);
end;
end;
end;
end;
function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane)
local __tablica_analizy_obiektow_strony_dany_modul=(pozycja[4] or{})[1] or tablica_analizy_obiektow_strony_dany_modul;
local __tablica_danych_parametrow_szablonu_strony=(pozycja[4] or {})[2] or tablica_danych_parametrow_szablonu_strony;
local __obiekt=(pozycja[3] or {})[2];
local __kod=(pozycja[3] or {})[3];
local __szablon=__tablica_analizy_obiektow_strony_dany_modul[__obiekt][__kod];
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local nazwa_artykulu_tekstu;local nazwa_modulu_ksiazki_tekstu;
nazwa_artykulu_tekstu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[2];
nazwa_modulu_ksiazki_tekstu=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[3];
local tekst_szablon=p.PreparowanieSzablonoweLinkoweSzablonuTekstu(szablonowe_modul.NormaKoduKodowaniaTekstu(__obiekt,__kod),nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu);
local __tabela_parametrow_szablonu=pozycja[3][1][1];
----
local tekst=p.ParametrTekstowySzablonuTekstu(__tabela_parametrow_szablonu);
if(tekst)then
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
----
local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
--local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul);
local tab_numer={};
local tab_tak={};
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod,poziom_iteracji,_,obiekt_rodzica,kod_rodzica,szablon_rodzica,_,_,poziom_iteracji_rodzica)
obiekt_rodzica=obiekt_rodzica or true;
kod_rodzica=kod_rodzica or true;
local tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica];
if(not tab_tak_obiekt_rodzica)then tab_tak[obiekt_rodzica]={};tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica]end;
local tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica];
if(not tab_tak_kod_rodzica)then tab_tak_obiekt_rodzica[kod_rodzica]={};tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica]end;
local czy_tak=tab_tak_kod_rodzica[obiekt];
tab_tak_kod_rodzica[obiekt]=true;
tab_numer[obiekt]=tab_numer[obiekt] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt);
local max_numer=tab_numer[obiekt];
local kod_temp=kod+max_numer;
--tablica_analizy_obiektow_strony_dany_modul[obiekt][kod_temp]=szablon;
local ile;
if(not czy_tak)then
szablon_rodzica,ile=mw.ustring.gsub(szablon_rodzica,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt),function(kod)
kod=tonumber(kod) or nil;
return szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod+max_numer);
end);
end;
local TempFunc=function(tablica_danych_parametrow_szablonu_strony,kod)
local tab_obiekt=tab_analiza[obiekt];
if(tab_obiekt)then
for _, wartosc in pairs(tab_obiekt)do
local tab_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc];
if(not tab_wartosc)then
tablica_danych_parametrow_szablonu_strony[wartosc]={};
end;
local stara_tabelka=(__tablica_danych_parametrow_szablonu_strony[wartosc] or {})[kod];
local nowa_tabelka=parametry_modul.TypeTable(stara_tabelka) and parametry_modul["KopiujRekurencyjnieTabelęElementów"](stara_tabelka) or stara_tabelka;
tablica_danych_parametrow_szablonu_strony[wartosc][kod_temp]=nowa_tabelka;
end;
end;
end;
TempFunc(tablica_danych_parametrow_szablonu_strony,kod);
if(poziom_iteracji>0)then
tab_numer[obiekt_rodzica]=tab_numer[obiekt_rodzica] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt_rodzica);
local max_numer_rodzica=tab_numer[obiekt_rodzica];
kod_rodzica=kod_rodzica+max_numer_rodzica;
end;
if(not czy_tak)then
return nil,szablon,obiekt,kod_temp,szablon_rodzica,obiekt_rodzica,kod_rodzica,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica;
else
return nil,szablon,obiekt,kod_temp,nil,nil,nil,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica;
end;
return;
end);
return tekst;
----
end;
return;
end;
function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych)
local function TempFunc(tablica_szablonu_tekstu,__funkcja,czy_korzystane)
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local tab_obiekty=pozycja[2];
for _,pozycja2 in ipairs(tab_obiekty)do
local __obiekt=pozycja2[1];
local __kod=pozycja2[2];
if((__obiekt==obiekt)and(__kod==kod))then
local szablon=__funkcja(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane);
if(szablon)then
tab_numer=pozycja2[3];
return szablon,tab_numer;
end;
return;
end;
end;
end;
end;
local szablon;local tab_numer;
if(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then
szablon,tab_numer=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,p.ZamienianiePobierzNaKod,true);
end;
if(not szablon)then
if(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then
szablon,tab_numer=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,p.ZamienianiePobierzNaKod,false);
end;
end;
if(szablon)then return szablon,tab_numer;end;
return nil;
end;
function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)
local tablica_szablonu_tekstu_korzystanych=tablica_zmiennych.tablica_szablonu_tekstu_korzystanych;
for _,pozycja in ipairs(tablica_szablonu_tekstu_korzystanych)do
local __obiekt=pozycja[3][2];
local __kod=pozycja[3][3];
if((obiekt==__obiekt)and(kod==__kod))then
local tabela_parametrow_szablonu=pozycja[3][1][1];
local tekst=p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu);
if(tekst)then return tekst;end;
return nil;
end;
end;
return nil;
end;
function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)
if((not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)and(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych))then return nil;end;
if(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then
local function TempFunc(tablica_szablonu_tekstu)
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local tab_pobierz=pozycja[2];
for _,value in ipairs(tab_pobierz)do
return true;
end;
end;
return nil;
end;
if((not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)and(not TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)))then return nil;end;
end;
local stronicowyparser_obiekty_modul=require("Module:StronicowyParser/obiekty");
local tab_pobierz_szablonu_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
local tab_szablony_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu;
local czy_pobierz=nil;
local szablonowe_modul=require("Module:Szablonowe");
local ___tabela_parametrow_szablonu;
tekst_rozwiniety_calego_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(czy_pobierz)then
szablon,tab_numer=p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,___tabela_parametrow_szablonu,tablica_zmiennych);
if(szablon)then
IterowaniePoElementachTekstu(szablon,tab_numer);
end;
else
szablon=p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych);
end;
if(szablon)then return szablon;end;
return nil;
end,nil,
function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
----
if(tab_pobierz_szablonu_tekstu[nazwa_szablonu])then
czy_pobierz=true;
___tabela_parametrow_szablonu=tabela_parametrow_szablonu;
return true;
elseif(tab_szablony_tekstu[nazwa_szablonu])then
czy_pobierz=false;
return true;
end;
return nil;
end);
if(wynik)then return wynik;end;
end;
return nil;
end);
return tekst_rozwiniety_calego_artykulu;
end;
return p;
6qhistgvz3tn5he5l9629qn8qnyh42d
558378
558375
2026-10-02T23:17:05Z
Persino
2851
558378
Scribunto
text/plain
local p={};
p.PreparowanieSzablonoweLinkoweSzablonuTekstu=function(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu)
--if(true)then return tekst;end;
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local szablony_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane;
local numerowane_obiekty=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty;
local nienumerowane_obiekty_napisu_wprowadzenia_tekstu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu;
local nienumerowane_obiekty_tekstu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
----
tablica_analizy_obiektow_strony_dany_modul=tablica_analizy_obiektow_strony_dany_modul or __tablica_analizy_obiektow_strony_dany_modul;
tablica_danych_parametrow_szablonu_strony=tablica_danych_parametrow_szablonu_strony or __tablica_danych_parametrow_szablonu_strony;
----
local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
--if(true)then return nil,true;end;
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,__tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,
function(__tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(szablony_tekstu[nazwa_szablonu])then
local tekst=p.ParametrTekstowySzablonuTekstu(__tabela_parametrow_szablonu);
local bez_preprocess=p.SzablonTekstuBezPreProcess(__tabela_parametrow_szablonu);
local czy_bez_preprocess=parametry_modul.CzyTak(bez_preprocess);
----
tabela_parametrow_szablonu=tabela_parametrow_szablonu or __tabela_parametrow_szablonu;
local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod)
if(obiekt=="ZMIENNA")then
local klucz=mw.ustring.match(szablon,"^%{%{%{%s*klucz(%d*)%s*%|.*%}%}%}$") or mw.ustring.match(szablon,"^%{%{%{%s*klucz(%d*)%s*%}%}%}$");
if(klucz)then
if((klucz=="")or(mw.ustring.match(klucz,"^[1-9]%d*$")))then
local wartosc_klucz=tabela_parametrow_szablonu["klucz"..klucz];
wartosc_klucz=wartosc_klucz and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(wartosc_klucz,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true,true) or wartosc_klucz;
if(wartosc_klucz)then return wartosc_klucz;end;
end;
end;
end;
return nil,true;
end);
local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,__tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(
(numerowane_obiekty[nazwa_szablonu])
or(nienumerowane_obiekty_napisu_wprowadzenia_tekstu[nazwa_szablonu])
or(nienumerowane_obiekty_tekstu[nazwa_szablonu])
)then
local uchwyt=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1];
local nazwa_artykulu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[2];
local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[3];
uchwyt=uchwyt and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(uchwyt,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true) or uchwyt;
nazwa_artykulu=nazwa_artykulu and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(nazwa_artykulu,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true) or nazwa_artykulu;
nazwa_ksiazki=nazwa_ksiazki and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(nazwa_ksiazki,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true) or nazwa_ksiazki;
tabela_parametrow_szablonu["uchwyt"]=uchwyt;tabela_parametrow_szablonu[1]=nil;
tabela_parametrow_szablonu["nazwa artykułu"]=nazwa_artykulu or (not czy_bez_preprocess)and nazwa_artykulu_tekstu or nil;tabela_parametrow_szablonu[2]=nil;
tabela_parametrow_szablonu["nazwa książki"]=nazwa_ksiazki or (not czy_bez_preprocess) and nazwa_modulu_ksiazki_tekstu or nil;tabela_parametrow_szablonu[3]=nil;
local szablon=szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,false);
__tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
__tablica_danych_parametrow_szablonu_strony[1][kod].parametry=nil;
end;
return nil;
end);
end;
return nil,true;
end);
end;
end);
end;
return nil,true;
end,nil,
function(szablon,obiekt,kod,poziom_iteracji,tekst)
if(poziom_iteracji>0)then
return nil;
end;
return szablon;
end);
return tekst;
end;
function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu)
local tekst=tabela_parametrow_szablonu["tekst"] or tabela_parametrow_szablonu["treść"] or tabela_parametrow_szablonu[1];
return tekst;
end;
function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu)
return tabela_parametrow_szablonu["bez preprocess"];
end;
function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2)
if(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end;
for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)do
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,pozycja);
end;
end;
end;
function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany)
if(not czy_artykul_korzystany)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{
{wartosc_elementu,lista_dwuelementowa,},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
{tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,},
});
else
if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{
{wartosc_elementu,lista_dwuelementowa,},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
{tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,},
});
end;
end;
function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)
local tablica_szablonu_tekstu;
if(czy_artykul_korzystany)then
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych;
else
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych;
end;
if(tablica_szablonu_tekstu)then
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local nazwa_obiektu_tekstu=pozycja[1][1];
local uchwyt_obiektu_tekstu=pozycja[1][2][1];
if((nazwa_obiektu_tekstu==nazwa_obiektu)and(uchwyt_obiektu_tekstu==uchwyt_obiektu))then
local dodatkowe_elementy=pozycja[2];
local czy_tak=false;
for _,pozycja_dodatkowe in ipairs(dodatkowe_elementy)do
if((pozycja_dodatkowe[1]==obiekt)and(pozycja_dodatkowe[2]==kod))then
czy_tak=true;
break;
end;
end;
if(not czy_tak)then
local tab_numer;
if(tablica_zmiennych)then
tab_numer={};
for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do
tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name];
end;
end;
table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer});
break;
end;
end;
end;
end;
end;
function p.UstawPobierzKorzystanie(tablica_zmiennych2)
if(tablica_zmiennych2.tablica_szablonu_tekstu_linkowe_korzystane)then
for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_linkowe_korzystane)do
if(not pozycja[3])then
pozycja[3]=true;
local nazwa_obiektu=pozycja[1][1];
local uchwyt_obiektu=pozycja[1][2];
local obiekt=pozycja[2][1];
local kod=pozycja[2][2];
p.UstawianiePobierz(nil,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,true);
end;
end;
end;
end;
function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane)
local __tablica_analizy_obiektow_strony_dany_modul=(pozycja[4] or{})[1] or tablica_analizy_obiektow_strony_dany_modul;
local __tablica_danych_parametrow_szablonu_strony=(pozycja[4] or {})[2] or tablica_danych_parametrow_szablonu_strony;
local __obiekt=(pozycja[3] or {})[2];
local __kod=(pozycja[3] or {})[3];
local __szablon=__tablica_analizy_obiektow_strony_dany_modul[__obiekt][__kod];
local szablonowe_modul=require("Module:Szablonowe");
local nazwa_artykulu_tekstu;local nazwa_modulu_ksiazki_tekstu;
nazwa_artykulu_tekstu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[2];
nazwa_modulu_ksiazki_tekstu=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[3];
local tekst_szablon=p.PreparowanieSzablonoweLinkoweSzablonuTekstu(szablonowe_modul.NormaKoduKodowaniaTekstu(__obiekt,__kod),nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu);
local __tabela_parametrow_szablonu=pozycja[3][1][1];
----
local tekst=p.ParametrTekstowySzablonuTekstu(__tabela_parametrow_szablonu);
if(tekst)then
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
----
local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
--local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul);
local tab_numer={};
local tab_tak={};
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod,poziom_iteracji,_,obiekt_rodzica,kod_rodzica,szablon_rodzica,_,_,poziom_iteracji_rodzica)
obiekt_rodzica=obiekt_rodzica or true;
kod_rodzica=kod_rodzica or true;
local tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica];
if(not tab_tak_obiekt_rodzica)then tab_tak[obiekt_rodzica]={};tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica]end;
local tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica];
if(not tab_tak_kod_rodzica)then tab_tak_obiekt_rodzica[kod_rodzica]={};tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica]end;
local czy_tak=tab_tak_kod_rodzica[obiekt];
tab_tak_kod_rodzica[obiekt]=true;
tab_numer[obiekt]=tab_numer[obiekt] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt);
local max_numer=tab_numer[obiekt];
local kod_temp=kod+max_numer;
--tablica_analizy_obiektow_strony_dany_modul[obiekt][kod_temp]=szablon;
local ile;
if(not czy_tak)then
szablon_rodzica,ile=mw.ustring.gsub(szablon_rodzica,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt),function(kod)
kod=tonumber(kod) or nil;
return szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod+max_numer);
end);
end;
local TempFunc=function(tablica_danych_parametrow_szablonu_strony,kod)
local tab_obiekt=tab_analiza[obiekt];
if(tab_obiekt)then
for _, wartosc in pairs(tab_obiekt)do
local tab_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc];
if(not tab_wartosc)then
tablica_danych_parametrow_szablonu_strony[wartosc]={};
end;
local stara_tabelka=(__tablica_danych_parametrow_szablonu_strony[wartosc] or {})[kod];
local nowa_tabelka=parametry_modul.TypeTable(stara_tabelka) and parametry_modul["KopiujRekurencyjnieTabelęElementów"](stara_tabelka) or stara_tabelka;
tablica_danych_parametrow_szablonu_strony[wartosc][kod_temp]=nowa_tabelka;
end;
end;
end;
TempFunc(tablica_danych_parametrow_szablonu_strony,kod);
if(poziom_iteracji>0)then
tab_numer[obiekt_rodzica]=tab_numer[obiekt_rodzica] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt_rodzica);
local max_numer_rodzica=tab_numer[obiekt_rodzica];
kod_rodzica=kod_rodzica+max_numer_rodzica;
end;
if(not czy_tak)then
return nil,szablon,obiekt,kod_temp,szablon_rodzica,obiekt_rodzica,kod_rodzica,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica;
else
return nil,szablon,obiekt,kod_temp,nil,nil,nil,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica;
end;
return;
end);
return tekst;
----
end;
return;
end;
function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych)
local function TempFunc(tablica_szablonu_tekstu,__funkcja,czy_korzystane)
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local tab_obiekty=pozycja[2];
for _,pozycja2 in ipairs(tab_obiekty)do
local __obiekt=pozycja2[1];
local __kod=pozycja2[2];
if((__obiekt==obiekt)and(__kod==kod))then
local szablon=__funkcja(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane);
if(szablon)then
tab_numer=pozycja2[3];
return szablon,tab_numer;
end;
return;
end;
end;
end;
end;
local szablon;local tab_numer;
if(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then
szablon,tab_numer=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,p.ZamienianiePobierzNaKod,true);
end;
if(not szablon)then
if(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then
szablon,tab_numer=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,p.ZamienianiePobierzNaKod,false);
end;
end;
if(szablon)then return szablon,tab_numer;end;
return nil;
end;
function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)
local tablica_szablonu_tekstu_korzystanych=tablica_zmiennych.tablica_szablonu_tekstu_korzystanych;
for _,pozycja in ipairs(tablica_szablonu_tekstu_korzystanych)do
local __obiekt=pozycja[3][2];
local __kod=pozycja[3][3];
if((obiekt==__obiekt)and(kod==__kod))then
local tabela_parametrow_szablonu=pozycja[3][1][1];
local tekst=p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu);
if(tekst)then return tekst;end;
return nil;
end;
end;
return nil;
end;
function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)
if((not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)and(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych))then return nil;end;
if(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then
local function TempFunc(tablica_szablonu_tekstu)
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local tab_pobierz=pozycja[2];
for _,value in ipairs(tab_pobierz)do
return true;
end;
end;
return nil;
end;
if((not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)and(not TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)))then return nil;end;
end;
local stronicowyparser_obiekty_modul=require("Module:StronicowyParser/obiekty");
local tab_pobierz_szablonu_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
local tab_szablony_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu;
local czy_pobierz=nil;
local szablonowe_modul=require("Module:Szablonowe");
local ___tabela_parametrow_szablonu;
tekst_rozwiniety_calego_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(czy_pobierz)then
szablon,tab_numer=p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,___tabela_parametrow_szablonu,tablica_zmiennych);
if(szablon)then
IterowaniePoElementachTekstu(szablon,tab_numer);
end;
else
szablon=p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych);
end;
if(szablon)then return szablon;end;
return nil;
end,nil,
function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
----
if(tab_pobierz_szablonu_tekstu[nazwa_szablonu])then
czy_pobierz=true;
___tabela_parametrow_szablonu=tabela_parametrow_szablonu;
return true;
elseif(tab_szablony_tekstu[nazwa_szablonu])then
czy_pobierz=false;
return true;
end;
return nil;
end);
if(wynik)then return wynik;end;
end;
return nil;
end);
return tekst_rozwiniety_calego_artykulu;
end;
return p;
65592fok77v5if0d0n9yep048mj4d7f
558391
558378
2026-10-03T08:34:57Z
Persino
2851
558391
Scribunto
text/plain
local p={};
p.PreparowanieSzablonoweLinkoweSzablonuTekstu=function(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu)
--if(true)then return tekst;end;
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local szablony_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane;
local numerowane_obiekty=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty;
local nienumerowane_obiekty_napisu_wprowadzenia_tekstu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu;
local nienumerowane_obiekty_tekstu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
----
tablica_analizy_obiektow_strony_dany_modul=tablica_analizy_obiektow_strony_dany_modul or __tablica_analizy_obiektow_strony_dany_modul;
tablica_danych_parametrow_szablonu_strony=tablica_danych_parametrow_szablonu_strony or __tablica_danych_parametrow_szablonu_strony;
----
local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
--if(true)then return nil,true;end;
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,__tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,
function(__tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(szablony_tekstu[nazwa_szablonu])then
local tekst=p.ParametrTekstowySzablonuTekstu(__tabela_parametrow_szablonu);
local bez_preprocess=p.SzablonTekstuBezPreProcess(__tabela_parametrow_szablonu);
local czy_bez_preprocess=parametry_modul.CzyTak(bez_preprocess);
----
tabela_parametrow_szablonu=tabela_parametrow_szablonu or __tabela_parametrow_szablonu;
local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod)
if(obiekt=="ZMIENNA")then
local klucz=mw.ustring.match(szablon,"^%{%{%{%s*klucz(%d*)%s*%|.*%}%}%}$") or mw.ustring.match(szablon,"^%{%{%{%s*klucz(%d*)%s*%}%}%}$");
if(klucz)then
if((klucz=="")or(mw.ustring.match(klucz,"^[1-9]%d*$")))then
local wartosc_klucz=tabela_parametrow_szablonu["klucz"..klucz];
wartosc_klucz=wartosc_klucz and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(wartosc_klucz,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true,true) or wartosc_klucz;
if(wartosc_klucz)then return wartosc_klucz;end;
end;
end;
end;
return nil,true;
end);
local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,__tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(
(numerowane_obiekty[nazwa_szablonu])
or(nienumerowane_obiekty_napisu_wprowadzenia_tekstu[nazwa_szablonu])
or(nienumerowane_obiekty_tekstu[nazwa_szablonu])
)then
local uchwyt=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1];
local nazwa_artykulu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[2];
local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[3];
local status;
if(uchwyt)then
local uchwyt_tekstu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(uchwyt,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true);
status=status or uchwyt_tekstu;
uchwyt=uchwyt_tekstu or uchwyt;
end;
if(nazwa_artykulu)then
local nazwa_artykulu_tekstu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(nazwa_artykulu,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true);
status=status or nazwa_artykulu_tekstu;
nazwa_artykulu=nazwa_artykulu_tekstu or nazwa_artykulu;
end;
if(nazwa_ksiazki)then
local nazwa_ksiazki_tekstu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(nazwa_ksiazki,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true);
status=status or nazwa_ksiazki_tekstu;
nazwa_ksiazki=nazwa_ksiazki_tekstu or nazwa_ksiazki;
end;
if(status)then
tabela_parametrow_szablonu["uchwyt"]=uchwyt;tabela_parametrow_szablonu[1]=nil;
tabela_parametrow_szablonu["nazwa artykułu"]=nazwa_artykulu or (not czy_bez_preprocess)and nazwa_artykulu_tekstu or nil;tabela_parametrow_szablonu[2]=nil;
tabela_parametrow_szablonu["nazwa książki"]=nazwa_ksiazki or (not czy_bez_preprocess) and nazwa_modulu_ksiazki_tekstu or nil;tabela_parametrow_szablonu[3]=nil;
local szablon=szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,false);
__tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
__tablica_danych_parametrow_szablonu_strony[1][kod].parametry=nil;
end;
end;
return nil;
end);
end;
return nil,true;
end);
end;
end);
end;
return nil,true;
end,nil,
function(szablon,obiekt,kod,poziom_iteracji,tekst)
if(poziom_iteracji>0)then
return nil;
end;
return szablon;
end);
return tekst;
end;
function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu)
local tekst=tabela_parametrow_szablonu["tekst"] or tabela_parametrow_szablonu["treść"] or tabela_parametrow_szablonu[1];
return tekst;
end;
function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu)
return tabela_parametrow_szablonu["bez preprocess"];
end;
function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2)
if(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end;
for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)do
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,pozycja);
end;
end;
end;
function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany)
if(not czy_artykul_korzystany)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{
{wartosc_elementu,lista_dwuelementowa,},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
{tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,},
});
else
if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{
{wartosc_elementu,lista_dwuelementowa,},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
{tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,},
});
end;
end;
function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)
local tablica_szablonu_tekstu;
if(czy_artykul_korzystany)then
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych;
else
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych;
end;
if(tablica_szablonu_tekstu)then
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local nazwa_obiektu_tekstu=pozycja[1][1];
local uchwyt_obiektu_tekstu=pozycja[1][2][1];
if((nazwa_obiektu_tekstu==nazwa_obiektu)and(uchwyt_obiektu_tekstu==uchwyt_obiektu))then
local dodatkowe_elementy=pozycja[2];
local czy_tak=false;
for _,pozycja_dodatkowe in ipairs(dodatkowe_elementy)do
if((pozycja_dodatkowe[1]==obiekt)and(pozycja_dodatkowe[2]==kod))then
czy_tak=true;
break;
end;
end;
if(not czy_tak)then
local tab_numer;
if(tablica_zmiennych)then
tab_numer={};
for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do
tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name];
end;
end;
table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer});
break;
end;
end;
end;
end;
end;
function p.UstawPobierzKorzystanie(tablica_zmiennych2)
if(tablica_zmiennych2.tablica_szablonu_tekstu_linkowe_korzystane)then
for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_linkowe_korzystane)do
if(not pozycja[3])then
pozycja[3]=true;
local nazwa_obiektu=pozycja[1][1];
local uchwyt_obiektu=pozycja[1][2];
local obiekt=pozycja[2][1];
local kod=pozycja[2][2];
p.UstawianiePobierz(nil,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,true);
end;
end;
end;
end;
function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane)
local __tablica_analizy_obiektow_strony_dany_modul=(pozycja[4] or{})[1] or tablica_analizy_obiektow_strony_dany_modul;
local __tablica_danych_parametrow_szablonu_strony=(pozycja[4] or {})[2] or tablica_danych_parametrow_szablonu_strony;
local __obiekt=(pozycja[3] or {})[2];
local __kod=(pozycja[3] or {})[3];
local __szablon=__tablica_analizy_obiektow_strony_dany_modul[__obiekt][__kod];
local szablonowe_modul=require("Module:Szablonowe");
local nazwa_artykulu_tekstu;local nazwa_modulu_ksiazki_tekstu;
nazwa_artykulu_tekstu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[2];
nazwa_modulu_ksiazki_tekstu=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[3];
local tekst_szablon=p.PreparowanieSzablonoweLinkoweSzablonuTekstu(szablonowe_modul.NormaKoduKodowaniaTekstu(__obiekt,__kod),nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu);
local __tabela_parametrow_szablonu=pozycja[3][1][1];
----
local tekst=p.ParametrTekstowySzablonuTekstu(__tabela_parametrow_szablonu);
if(tekst)then
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
----
local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
--local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul);
local tab_numer={};
local tab_tak={};
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod,poziom_iteracji,_,obiekt_rodzica,kod_rodzica,szablon_rodzica,_,_,poziom_iteracji_rodzica)
obiekt_rodzica=obiekt_rodzica or true;
kod_rodzica=kod_rodzica or true;
local tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica];
if(not tab_tak_obiekt_rodzica)then tab_tak[obiekt_rodzica]={};tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica]end;
local tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica];
if(not tab_tak_kod_rodzica)then tab_tak_obiekt_rodzica[kod_rodzica]={};tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica]end;
local czy_tak=tab_tak_kod_rodzica[obiekt];
tab_tak_kod_rodzica[obiekt]=true;
tab_numer[obiekt]=tab_numer[obiekt] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt);
local max_numer=tab_numer[obiekt];
local kod_temp=kod+max_numer;
--tablica_analizy_obiektow_strony_dany_modul[obiekt][kod_temp]=szablon;
local ile;
if(not czy_tak)then
szablon_rodzica,ile=mw.ustring.gsub(szablon_rodzica,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt),function(kod)
kod=tonumber(kod) or nil;
return szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod+max_numer);
end);
end;
local TempFunc=function(tablica_danych_parametrow_szablonu_strony,kod)
local tab_obiekt=tab_analiza[obiekt];
if(tab_obiekt)then
for _, wartosc in pairs(tab_obiekt)do
local tab_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc];
if(not tab_wartosc)then
tablica_danych_parametrow_szablonu_strony[wartosc]={};
end;
local stara_tabelka=(__tablica_danych_parametrow_szablonu_strony[wartosc] or {})[kod];
local nowa_tabelka=parametry_modul.TypeTable(stara_tabelka) and parametry_modul["KopiujRekurencyjnieTabelęElementów"](stara_tabelka) or stara_tabelka;
tablica_danych_parametrow_szablonu_strony[wartosc][kod_temp]=nowa_tabelka;
end;
end;
end;
TempFunc(tablica_danych_parametrow_szablonu_strony,kod);
if(poziom_iteracji>0)then
tab_numer[obiekt_rodzica]=tab_numer[obiekt_rodzica] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt_rodzica);
local max_numer_rodzica=tab_numer[obiekt_rodzica];
kod_rodzica=kod_rodzica+max_numer_rodzica;
end;
if(not czy_tak)then
return nil,szablon,obiekt,kod_temp,szablon_rodzica,obiekt_rodzica,kod_rodzica,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica;
else
return nil,szablon,obiekt,kod_temp,nil,nil,nil,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica;
end;
return;
end);
return tekst;
----
end;
return;
end;
function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych)
local function TempFunc(tablica_szablonu_tekstu,__funkcja,czy_korzystane)
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local tab_obiekty=pozycja[2];
for _,pozycja2 in ipairs(tab_obiekty)do
local __obiekt=pozycja2[1];
local __kod=pozycja2[2];
if((__obiekt==obiekt)and(__kod==kod))then
local szablon=__funkcja(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane);
if(szablon)then
tab_numer=pozycja2[3];
return szablon,tab_numer;
end;
return;
end;
end;
end;
end;
local szablon;local tab_numer;
if(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then
szablon,tab_numer=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,p.ZamienianiePobierzNaKod,true);
end;
if(not szablon)then
if(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then
szablon,tab_numer=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,p.ZamienianiePobierzNaKod,false);
end;
end;
if(szablon)then return szablon,tab_numer;end;
return nil;
end;
function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)
local tablica_szablonu_tekstu_korzystanych=tablica_zmiennych.tablica_szablonu_tekstu_korzystanych;
for _,pozycja in ipairs(tablica_szablonu_tekstu_korzystanych)do
local __obiekt=pozycja[3][2];
local __kod=pozycja[3][3];
if((obiekt==__obiekt)and(kod==__kod))then
local tabela_parametrow_szablonu=pozycja[3][1][1];
local tekst=p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu);
if(tekst)then return tekst;end;
return nil;
end;
end;
return nil;
end;
function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)
if((not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)and(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych))then return nil;end;
if(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then
local function TempFunc(tablica_szablonu_tekstu)
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local tab_pobierz=pozycja[2];
for _,value in ipairs(tab_pobierz)do
return true;
end;
end;
return nil;
end;
if((not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)and(not TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)))then return nil;end;
end;
local stronicowyparser_obiekty_modul=require("Module:StronicowyParser/obiekty");
local tab_pobierz_szablonu_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
local tab_szablony_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu;
local czy_pobierz=nil;
local szablonowe_modul=require("Module:Szablonowe");
local ___tabela_parametrow_szablonu;
tekst_rozwiniety_calego_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(czy_pobierz)then
szablon,tab_numer=p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,___tabela_parametrow_szablonu,tablica_zmiennych);
if(szablon)then
IterowaniePoElementachTekstu(szablon,tab_numer);
end;
else
szablon=p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych);
end;
if(szablon)then return szablon;end;
return nil;
end,nil,
function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
----
if(tab_pobierz_szablonu_tekstu[nazwa_szablonu])then
czy_pobierz=true;
___tabela_parametrow_szablonu=tabela_parametrow_szablonu;
return true;
elseif(tab_szablony_tekstu[nazwa_szablonu])then
czy_pobierz=false;
return true;
end;
return nil;
end);
if(wynik)then return wynik;end;
end;
return nil;
end);
return tekst_rozwiniety_calego_artykulu;
end;
return p;
gs52tsp0hvps79pvkts87s7wd36wib2
558392
558391
2026-10-03T09:35:31Z
Persino
2851
558392
Scribunto
text/plain
local p={};
p.PreparowanieSzablonoweLinkoweSzablonuTekstu=function(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu)
--if(true)then return tekst;end;
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local szablony_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane;
local numerowane_obiekty=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty;
local nienumerowane_obiekty_napisu_wprowadzenia_tekstu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu;
local nienumerowane_obiekty_tekstu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
----
tablica_analizy_obiektow_strony_dany_modul=tablica_analizy_obiektow_strony_dany_modul or __tablica_analizy_obiektow_strony_dany_modul;
tablica_danych_parametrow_szablonu_strony=tablica_danych_parametrow_szablonu_strony or __tablica_danych_parametrow_szablonu_strony;
----
local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
--if(true)then return nil,true;end;
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,__tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,
function(__tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(szablony_tekstu[nazwa_szablonu])then
local tekst=p.ParametrTekstowySzablonuTekstu(__tabela_parametrow_szablonu);
local bez_preprocess=p.SzablonTekstuBezPreProcess(__tabela_parametrow_szablonu);
local czy_bez_preprocess=parametry_modul.CzyTak(bez_preprocess);
----
tabela_parametrow_szablonu=tabela_parametrow_szablonu or __tabela_parametrow_szablonu;
local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod)
if(obiekt=="ZMIENNA")then
local klucz=mw.ustring.match(szablon,"^%{%{%{%s*klucz(%d*)%s*%|.*%}%}%}$") or mw.ustring.match(szablon,"^%{%{%{%s*klucz(%d*)%s*%}%}%}$");
if(klucz)then
if((klucz=="")or(mw.ustring.match(klucz,"^[1-9]%d*$")))then
local wartosc_klucz=tabela_parametrow_szablonu["klucz"..klucz];
wartosc_klucz=wartosc_klucz and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(wartosc_klucz,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true,true) or wartosc_klucz;
if(wartosc_klucz)then return wartosc_klucz;end;
end;
end;
end;
return nil,true;
end);
local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,__tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(
(numerowane_obiekty[nazwa_szablonu])
or(nienumerowane_obiekty_napisu_wprowadzenia_tekstu[nazwa_szablonu])
or(nienumerowane_obiekty_tekstu[nazwa_szablonu])
)then
local uchwyt=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1];
local nazwa_artykulu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[2];
local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[3];
local status;
if(uchwyt)then
local __uchwyt_tekstu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(uchwyt,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true);
status=status or __uchwyt_tekstu;
uchwyt=__uchwyt_tekstu or uchwyt;
end;
if(nazwa_artykulu)then
local __nazwa_artykulu_tekstu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(nazwa_artykulu,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true);
status=status or __nazwa_artykulu_tekstu;
nazwa_artykulu=__nazwa_artykulu_tekstu or nazwa_artykulu;
end;
if(nazwa_ksiazki)then
local __nazwa_ksiazki_tekstu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(nazwa_ksiazki,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true);
status=status or __nazwa_ksiazki_tekstu;
nazwa_ksiazki=__nazwa_ksiazki_tekstu or nazwa_ksiazki;
end;
if(
(status)
or(
(not czy_bez_preprocess)
and(((not nazwa_artykulu)and(nazwa_artykulu_tekstu))or((not nazwa_ksiazki)and(nazwa_modulu_ksiazki_tekstu)))
)
)then
tabela_parametrow_szablonu["uchwyt"]=uchwyt;tabela_parametrow_szablonu[1]=nil;
tabela_parametrow_szablonu["nazwa artykułu"]=nazwa_artykulu or (not czy_bez_preprocess)and nazwa_artykulu_tekstu or nil;tabela_parametrow_szablonu[2]=nil;
tabela_parametrow_szablonu["nazwa książki"]=nazwa_ksiazki or (not czy_bez_preprocess) and nazwa_modulu_ksiazki_tekstu or nil;tabela_parametrow_szablonu[3]=nil;
local szablon=szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,false);
__tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
__tablica_danych_parametrow_szablonu_strony[1][kod].parametry=nil;
end;
end;
return nil;
end);
end;
return nil,true;
end);
end;
end);
end;
return nil,true;
end,nil,
function(szablon,obiekt,kod,poziom_iteracji,tekst)
if(poziom_iteracji>0)then
return nil;
end;
return szablon;
end);
return tekst;
end;
function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu)
local tekst=tabela_parametrow_szablonu["tekst"] or tabela_parametrow_szablonu["treść"] or tabela_parametrow_szablonu[1];
return tekst;
end;
function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu)
return tabela_parametrow_szablonu["bez preprocess"];
end;
function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2)
if(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end;
for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)do
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,pozycja);
end;
end;
end;
function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany)
if(not czy_artykul_korzystany)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{
{wartosc_elementu,lista_dwuelementowa,},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
{tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,},
});
else
if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{
{wartosc_elementu,lista_dwuelementowa,},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
{tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,},
});
end;
end;
function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)
local tablica_szablonu_tekstu;
if(czy_artykul_korzystany)then
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych;
else
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych;
end;
if(tablica_szablonu_tekstu)then
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local nazwa_obiektu_tekstu=pozycja[1][1];
local uchwyt_obiektu_tekstu=pozycja[1][2][1];
if((nazwa_obiektu_tekstu==nazwa_obiektu)and(uchwyt_obiektu_tekstu==uchwyt_obiektu))then
local dodatkowe_elementy=pozycja[2];
local czy_tak=false;
for _,pozycja_dodatkowe in ipairs(dodatkowe_elementy)do
if((pozycja_dodatkowe[1]==obiekt)and(pozycja_dodatkowe[2]==kod))then
czy_tak=true;
break;
end;
end;
if(not czy_tak)then
local tab_numer;
if(tablica_zmiennych)then
tab_numer={};
for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do
tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name];
end;
end;
table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer});
break;
end;
end;
end;
end;
end;
function p.UstawPobierzKorzystanie(tablica_zmiennych2)
if(tablica_zmiennych2.tablica_szablonu_tekstu_linkowe_korzystane)then
for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_linkowe_korzystane)do
if(not pozycja[3])then
pozycja[3]=true;
local nazwa_obiektu=pozycja[1][1];
local uchwyt_obiektu=pozycja[1][2];
local obiekt=pozycja[2][1];
local kod=pozycja[2][2];
p.UstawianiePobierz(nil,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,true);
end;
end;
end;
end;
function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane)
local __tablica_analizy_obiektow_strony_dany_modul=(pozycja[4] or{})[1] or tablica_analizy_obiektow_strony_dany_modul;
local __tablica_danych_parametrow_szablonu_strony=(pozycja[4] or {})[2] or tablica_danych_parametrow_szablonu_strony;
local __obiekt=(pozycja[3] or {})[2];
local __kod=(pozycja[3] or {})[3];
local __szablon=__tablica_analizy_obiektow_strony_dany_modul[__obiekt][__kod];
local szablonowe_modul=require("Module:Szablonowe");
local nazwa_artykulu_tekstu;local nazwa_modulu_ksiazki_tekstu;
nazwa_artykulu_tekstu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[2];
nazwa_modulu_ksiazki_tekstu=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[3];
local tekst_szablon=p.PreparowanieSzablonoweLinkoweSzablonuTekstu(szablonowe_modul.NormaKoduKodowaniaTekstu(__obiekt,__kod),nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu);
local __tabela_parametrow_szablonu=pozycja[3][1][1];
----
local tekst=p.ParametrTekstowySzablonuTekstu(__tabela_parametrow_szablonu);
if(tekst)then
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
----
local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
--local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul);
local tab_numer={};
local tab_tak={};
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod,poziom_iteracji,_,obiekt_rodzica,kod_rodzica,szablon_rodzica,_,_,poziom_iteracji_rodzica)
obiekt_rodzica=obiekt_rodzica or true;
kod_rodzica=kod_rodzica or true;
local tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica];
if(not tab_tak_obiekt_rodzica)then tab_tak[obiekt_rodzica]={};tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica]end;
local tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica];
if(not tab_tak_kod_rodzica)then tab_tak_obiekt_rodzica[kod_rodzica]={};tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica]end;
local czy_tak=tab_tak_kod_rodzica[obiekt];
tab_tak_kod_rodzica[obiekt]=true;
tab_numer[obiekt]=tab_numer[obiekt] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt);
local max_numer=tab_numer[obiekt];
local kod_temp=kod+max_numer;
--tablica_analizy_obiektow_strony_dany_modul[obiekt][kod_temp]=szablon;
local ile;
if(not czy_tak)then
szablon_rodzica,ile=mw.ustring.gsub(szablon_rodzica,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt),function(kod)
kod=tonumber(kod) or nil;
return szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod+max_numer);
end);
end;
local TempFunc=function(tablica_danych_parametrow_szablonu_strony,kod)
local tab_obiekt=tab_analiza[obiekt];
if(tab_obiekt)then
for _, wartosc in pairs(tab_obiekt)do
local tab_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc];
if(not tab_wartosc)then
tablica_danych_parametrow_szablonu_strony[wartosc]={};
end;
local stara_tabelka=(__tablica_danych_parametrow_szablonu_strony[wartosc] or {})[kod];
local nowa_tabelka=parametry_modul.TypeTable(stara_tabelka) and parametry_modul["KopiujRekurencyjnieTabelęElementów"](stara_tabelka) or stara_tabelka;
tablica_danych_parametrow_szablonu_strony[wartosc][kod_temp]=nowa_tabelka;
end;
end;
end;
TempFunc(tablica_danych_parametrow_szablonu_strony,kod);
if(poziom_iteracji>0)then
tab_numer[obiekt_rodzica]=tab_numer[obiekt_rodzica] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt_rodzica);
local max_numer_rodzica=tab_numer[obiekt_rodzica];
kod_rodzica=kod_rodzica+max_numer_rodzica;
end;
if(not czy_tak)then
return nil,szablon,obiekt,kod_temp,szablon_rodzica,obiekt_rodzica,kod_rodzica,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica;
else
return nil,szablon,obiekt,kod_temp,nil,nil,nil,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica;
end;
return;
end);
return tekst;
----
end;
return;
end;
function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych)
local function TempFunc(tablica_szablonu_tekstu,__funkcja,czy_korzystane)
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local tab_obiekty=pozycja[2];
for _,pozycja2 in ipairs(tab_obiekty)do
local __obiekt=pozycja2[1];
local __kod=pozycja2[2];
if((__obiekt==obiekt)and(__kod==kod))then
local szablon=__funkcja(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane);
if(szablon)then
tab_numer=pozycja2[3];
return szablon,tab_numer;
end;
return;
end;
end;
end;
end;
local szablon;local tab_numer;
if(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then
szablon,tab_numer=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,p.ZamienianiePobierzNaKod,true);
end;
if(not szablon)then
if(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then
szablon,tab_numer=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,p.ZamienianiePobierzNaKod,false);
end;
end;
if(szablon)then return szablon,tab_numer;end;
return nil;
end;
function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)
local tablica_szablonu_tekstu_korzystanych=tablica_zmiennych.tablica_szablonu_tekstu_korzystanych;
for _,pozycja in ipairs(tablica_szablonu_tekstu_korzystanych)do
local __obiekt=pozycja[3][2];
local __kod=pozycja[3][3];
if((obiekt==__obiekt)and(kod==__kod))then
local tabela_parametrow_szablonu=pozycja[3][1][1];
local tekst=p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu);
if(tekst)then return tekst;end;
return nil;
end;
end;
return nil;
end;
function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)
if((not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)and(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych))then return nil;end;
if(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then
local function TempFunc(tablica_szablonu_tekstu)
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local tab_pobierz=pozycja[2];
for _,value in ipairs(tab_pobierz)do
return true;
end;
end;
return nil;
end;
if((not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)and(not TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)))then return nil;end;
end;
local stronicowyparser_obiekty_modul=require("Module:StronicowyParser/obiekty");
local tab_pobierz_szablonu_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
local tab_szablony_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu;
local czy_pobierz=nil;
local szablonowe_modul=require("Module:Szablonowe");
local ___tabela_parametrow_szablonu;
tekst_rozwiniety_calego_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(czy_pobierz)then
szablon,tab_numer=p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,___tabela_parametrow_szablonu,tablica_zmiennych);
if(szablon)then
IterowaniePoElementachTekstu(szablon,tab_numer);
end;
else
szablon=p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych);
end;
if(szablon)then return szablon;end;
return nil;
end,nil,
function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
----
if(tab_pobierz_szablonu_tekstu[nazwa_szablonu])then
czy_pobierz=true;
___tabela_parametrow_szablonu=tabela_parametrow_szablonu;
return true;
elseif(tab_szablony_tekstu[nazwa_szablonu])then
czy_pobierz=false;
return true;
end;
return nil;
end);
if(wynik)then return wynik;end;
end;
return nil;
end);
return tekst_rozwiniety_calego_artykulu;
end;
return p;
62qp1wyhfe0xf5lly4raza8ti3i8j15
558396
558392
2026-10-03T09:53:14Z
Persino
2851
558396
Scribunto
text/plain
local p={};
p.PreparowanieSzablonoweLinkoweSzablonuTekstu=function(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu)
--if(true)then return tekst;end;
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local szablony_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane;
local numerowane_obiekty=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty;
local nienumerowane_obiekty_napisu_wprowadzenia_tekstu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu;
local nienumerowane_obiekty_tekstu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
----
tablica_analizy_obiektow_strony_dany_modul=tablica_analizy_obiektow_strony_dany_modul or __tablica_analizy_obiektow_strony_dany_modul;
tablica_danych_parametrow_szablonu_strony=tablica_danych_parametrow_szablonu_strony or __tablica_danych_parametrow_szablonu_strony;
----
local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
--if(true)then return nil,true;end;
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,__tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,
function(__tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(szablony_tekstu[nazwa_szablonu])then
local tekst=p.ParametrTekstowySzablonuTekstu(__tabela_parametrow_szablonu);
local bez_preprocess=p.SzablonTekstuBezPreProcess(__tabela_parametrow_szablonu);
local czy_bez_preprocess=parametry_modul.CzyTak(bez_preprocess);
----
tabela_parametrow_szablonu=tabela_parametrow_szablonu or __tabela_parametrow_szablonu;
local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod)
if(obiekt=="ZMIENNA")then
local klucz=mw.ustring.match(szablon,"^%{%{%{%s*klucz(%d*)%s*%|.*%}%}%}$") or mw.ustring.match(szablon,"^%{%{%{%s*klucz(%d*)%s*%}%}%}$");
if(klucz)then
if((klucz=="")or(mw.ustring.match(klucz,"^[1-9]%d*$")))then
local wartosc_klucz=tabela_parametrow_szablonu["klucz"..klucz];
wartosc_klucz=wartosc_klucz and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(wartosc_klucz,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true,true) or wartosc_klucz;
if(wartosc_klucz)then return wartosc_klucz;end;
end;
end;
end;
return nil,true;
end);
local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,__tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(
(numerowane_obiekty[nazwa_szablonu])
or(nienumerowane_obiekty_napisu_wprowadzenia_tekstu[nazwa_szablonu])
or(nienumerowane_obiekty_tekstu[nazwa_szablonu])
)then
local uchwyt=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1];
local nazwa_artykulu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[2];
local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[3];
local status;
if(uchwyt)then
local __uchwyt_tekstu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(uchwyt,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true);
status=status or __uchwyt_tekstu;
uchwyt=__uchwyt_tekstu or uchwyt;
end;
if(nazwa_artykulu)then
local __nazwa_artykulu_tekstu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(nazwa_artykulu,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true);
status=status or __nazwa_artykulu_tekstu;
nazwa_artykulu=__nazwa_artykulu_tekstu or nazwa_artykulu;
end;
if(nazwa_ksiazki)then
local __nazwa_ksiazki_tekstu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(nazwa_ksiazki,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true);
status=status or __nazwa_ksiazki_tekstu;
nazwa_ksiazki=__nazwa_ksiazki_tekstu or nazwa_ksiazki;
end;
--[[if(
(status)
or(
(not czy_bez_preprocess)
and(((not nazwa_artykulu)and(nazwa_artykulu_tekstu))or((not nazwa_ksiazki)and(nazwa_modulu_ksiazki_tekstu)))
)
)then]]
tabela_parametrow_szablonu["uchwyt"]=uchwyt;tabela_parametrow_szablonu[1]=nil;
tabela_parametrow_szablonu["nazwa artykułu"]=nazwa_artykulu or (not czy_bez_preprocess)and nazwa_artykulu_tekstu or nil;tabela_parametrow_szablonu[2]=nil;
tabela_parametrow_szablonu["nazwa książki"]=nazwa_ksiazki or (not czy_bez_preprocess) and nazwa_modulu_ksiazki_tekstu or nil;tabela_parametrow_szablonu[3]=nil;
local szablon=szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,false);
__tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
__tablica_danych_parametrow_szablonu_strony[1][kod].parametry=nil;
--[[end;]]
end;
return nil;
end);
end;
return nil,true;
end);
end;
end);
end;
return nil,true;
end,nil,
function(szablon,obiekt,kod,poziom_iteracji,tekst)
if(poziom_iteracji>0)then
return nil;
end;
return szablon;
end);
return tekst;
end;
function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu)
local tekst=tabela_parametrow_szablonu["tekst"] or tabela_parametrow_szablonu["treść"] or tabela_parametrow_szablonu[1];
return tekst;
end;
function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu)
return tabela_parametrow_szablonu["bez preprocess"];
end;
function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2)
if(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end;
for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)do
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,pozycja);
end;
end;
end;
function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany)
if(not czy_artykul_korzystany)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{
{wartosc_elementu,lista_dwuelementowa,},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
{tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,},
});
else
if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{
{wartosc_elementu,lista_dwuelementowa,},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
{tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,},
});
end;
end;
function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)
local tablica_szablonu_tekstu;
if(czy_artykul_korzystany)then
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych;
else
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych;
end;
if(tablica_szablonu_tekstu)then
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local nazwa_obiektu_tekstu=pozycja[1][1];
local uchwyt_obiektu_tekstu=pozycja[1][2][1];
if((nazwa_obiektu_tekstu==nazwa_obiektu)and(uchwyt_obiektu_tekstu==uchwyt_obiektu))then
local dodatkowe_elementy=pozycja[2];
local czy_tak=false;
for _,pozycja_dodatkowe in ipairs(dodatkowe_elementy)do
if((pozycja_dodatkowe[1]==obiekt)and(pozycja_dodatkowe[2]==kod))then
czy_tak=true;
break;
end;
end;
if(not czy_tak)then
local tab_numer;
if(tablica_zmiennych)then
tab_numer={};
for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do
tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name];
end;
end;
table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer});
break;
end;
end;
end;
end;
end;
function p.UstawPobierzKorzystanie(tablica_zmiennych2)
if(tablica_zmiennych2.tablica_szablonu_tekstu_linkowe_korzystane)then
for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_linkowe_korzystane)do
if(not pozycja[3])then
pozycja[3]=true;
local nazwa_obiektu=pozycja[1][1];
local uchwyt_obiektu=pozycja[1][2];
local obiekt=pozycja[2][1];
local kod=pozycja[2][2];
p.UstawianiePobierz(nil,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,true);
end;
end;
end;
end;
function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane)
local __tablica_analizy_obiektow_strony_dany_modul=(pozycja[4] or{})[1] or tablica_analizy_obiektow_strony_dany_modul;
local __tablica_danych_parametrow_szablonu_strony=(pozycja[4] or {})[2] or tablica_danych_parametrow_szablonu_strony;
local __obiekt=(pozycja[3] or {})[2];
local __kod=(pozycja[3] or {})[3];
local __szablon=__tablica_analizy_obiektow_strony_dany_modul[__obiekt][__kod];
local szablonowe_modul=require("Module:Szablonowe");
local nazwa_artykulu_tekstu;local nazwa_modulu_ksiazki_tekstu;
nazwa_artykulu_tekstu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[2];
nazwa_modulu_ksiazki_tekstu=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[3];
local parametry_modul=require("Module:Parametry");
local __tablica_analizy_obiektow_strony_dany_modul=parametry_modul["KopiujRekurencyjnieTabelęElementów"](__tablica_analizy_obiektow_strony_dany_modul);
local __tablica_danych_parametrow_szablonu_strony=parametry_modul["KopiujRekurencyjnieTabelęElementów"](__tablica_danych_parametrow_szablonu_strony);
local tekst_szablon=p.PreparowanieSzablonoweLinkoweSzablonuTekstu(szablonowe_modul.NormaKoduKodowaniaTekstu(__obiekt,__kod),nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu);
local __tabela_parametrow_szablonu=pozycja[3][1][1];
----
local tekst=p.ParametrTekstowySzablonuTekstu(__tabela_parametrow_szablonu);
if(tekst)then
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
----
local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
--local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul);
local tab_numer={};
local tab_tak={};
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod,poziom_iteracji,_,obiekt_rodzica,kod_rodzica,szablon_rodzica,_,_,poziom_iteracji_rodzica)
obiekt_rodzica=obiekt_rodzica or true;
kod_rodzica=kod_rodzica or true;
local tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica];
if(not tab_tak_obiekt_rodzica)then tab_tak[obiekt_rodzica]={};tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica]end;
local tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica];
if(not tab_tak_kod_rodzica)then tab_tak_obiekt_rodzica[kod_rodzica]={};tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica]end;
local czy_tak=tab_tak_kod_rodzica[obiekt];
tab_tak_kod_rodzica[obiekt]=true;
tab_numer[obiekt]=tab_numer[obiekt] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt);
local max_numer=tab_numer[obiekt];
local kod_temp=kod+max_numer;
--tablica_analizy_obiektow_strony_dany_modul[obiekt][kod_temp]=szablon;
local ile;
if(not czy_tak)then
szablon_rodzica,ile=mw.ustring.gsub(szablon_rodzica,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt),function(kod)
kod=tonumber(kod) or nil;
return szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod+max_numer);
end);
end;
local TempFunc=function(tablica_danych_parametrow_szablonu_strony,kod)
local tab_obiekt=tab_analiza[obiekt];
if(tab_obiekt)then
for _, wartosc in pairs(tab_obiekt)do
local tab_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc];
if(not tab_wartosc)then
tablica_danych_parametrow_szablonu_strony[wartosc]={};
end;
local stara_tabelka=(__tablica_danych_parametrow_szablonu_strony[wartosc] or {})[kod];
local nowa_tabelka=parametry_modul.TypeTable(stara_tabelka) and parametry_modul["KopiujRekurencyjnieTabelęElementów"](stara_tabelka) or stara_tabelka;
tablica_danych_parametrow_szablonu_strony[wartosc][kod_temp]=nowa_tabelka;
end;
end;
end;
TempFunc(tablica_danych_parametrow_szablonu_strony,kod);
if(poziom_iteracji>0)then
tab_numer[obiekt_rodzica]=tab_numer[obiekt_rodzica] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt_rodzica);
local max_numer_rodzica=tab_numer[obiekt_rodzica];
kod_rodzica=kod_rodzica+max_numer_rodzica;
end;
if(not czy_tak)then
return nil,szablon,obiekt,kod_temp,szablon_rodzica,obiekt_rodzica,kod_rodzica,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica;
else
return nil,szablon,obiekt,kod_temp,nil,nil,nil,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica;
end;
return;
end);
return tekst;
----
end;
return;
end;
function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych)
local function TempFunc(tablica_szablonu_tekstu,__funkcja,czy_korzystane)
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local tab_obiekty=pozycja[2];
for _,pozycja2 in ipairs(tab_obiekty)do
local __obiekt=pozycja2[1];
local __kod=pozycja2[2];
if((__obiekt==obiekt)and(__kod==kod))then
local szablon=__funkcja(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane);
if(szablon)then
tab_numer=pozycja2[3];
return szablon,tab_numer;
end;
return;
end;
end;
end;
end;
local szablon;local tab_numer;
if(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then
szablon,tab_numer=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,p.ZamienianiePobierzNaKod,true);
end;
if(not szablon)then
if(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then
szablon,tab_numer=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,p.ZamienianiePobierzNaKod,false);
end;
end;
if(szablon)then return szablon,tab_numer;end;
return nil;
end;
function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)
local tablica_szablonu_tekstu_korzystanych=tablica_zmiennych.tablica_szablonu_tekstu_korzystanych;
for _,pozycja in ipairs(tablica_szablonu_tekstu_korzystanych)do
local __obiekt=pozycja[3][2];
local __kod=pozycja[3][3];
if((obiekt==__obiekt)and(kod==__kod))then
local tabela_parametrow_szablonu=pozycja[3][1][1];
local tekst=p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu);
if(tekst)then return tekst;end;
return nil;
end;
end;
return nil;
end;
function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)
if((not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)and(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych))then return nil;end;
if(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then
local function TempFunc(tablica_szablonu_tekstu)
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local tab_pobierz=pozycja[2];
for _,value in ipairs(tab_pobierz)do
return true;
end;
end;
return nil;
end;
if((not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)and(not TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)))then return nil;end;
end;
local stronicowyparser_obiekty_modul=require("Module:StronicowyParser/obiekty");
local tab_pobierz_szablonu_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
local tab_szablony_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu;
local czy_pobierz=nil;
local szablonowe_modul=require("Module:Szablonowe");
local ___tabela_parametrow_szablonu;
tekst_rozwiniety_calego_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(czy_pobierz)then
szablon,tab_numer=p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,___tabela_parametrow_szablonu,tablica_zmiennych);
if(szablon)then
IterowaniePoElementachTekstu(szablon,tab_numer);
end;
else
szablon=p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych);
end;
if(szablon)then return szablon;end;
return nil;
end,nil,
function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
----
if(tab_pobierz_szablonu_tekstu[nazwa_szablonu])then
czy_pobierz=true;
___tabela_parametrow_szablonu=tabela_parametrow_szablonu;
return true;
elseif(tab_szablony_tekstu[nazwa_szablonu])then
czy_pobierz=false;
return true;
end;
return nil;
end);
if(wynik)then return wynik;end;
end;
return nil;
end);
return tekst_rozwiniety_calego_artykulu;
end;
return p;
kiplb9xwfkwbcicw96h77g9nnjqaios
558404
558396
2026-10-03T11:08:33Z
Persino
2851
558404
Scribunto
text/plain
local p={};
p["KopiujRekurencyjnieTabelęElementów"]=function(szablon,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local szablonowe_modul=require("Module:Szablonowe");
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul);
local __tablica_analizy_obiektow_strony_dany_modul={};
local __tablica_danych_parametrow_szablonu_strony={};
local szablonowe_dane_modul=require("Module:Szablonowe/dane");
local function TemFunc(tab_co)
local __metatablica={};
szablonowe_dane_modul.MetaTabelkaSzablonowe(__metatablica);
setmetatable(tab_co,__metatablica);
end;
for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do
__tablica_analizy_obiektow_strony_dany_modul[obiekt]={};
TemFunc(__tablica_analizy_obiektow_strony_dany_modul[obiekt]);
end;
for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do
__tablica_analizy_obiektow_strony_dany_modul[obiekt]={};
TemFunc(__tablica_analizy_obiektow_strony_dany_modul[obiekt]);
end;
for szablon,obiekt,kod in iterator do
__tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
end;
return __tablica_analizy_obiektow_strony_dany_modul;
end;
p.PreparowanieSzablonoweLinkoweSzablonuTekstu=function(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu)
--if(true)then return tekst;end;
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local szablony_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane;
local numerowane_obiekty=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty;
local nienumerowane_obiekty_napisu_wprowadzenia_tekstu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu;
local nienumerowane_obiekty_tekstu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
----
tablica_analizy_obiektow_strony_dany_modul=tablica_analizy_obiektow_strony_dany_modul or __tablica_analizy_obiektow_strony_dany_modul;
tablica_danych_parametrow_szablonu_strony=tablica_danych_parametrow_szablonu_strony or __tablica_danych_parametrow_szablonu_strony;
----
local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
--if(true)then return nil,true;end;
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,__tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,
function(__tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(szablony_tekstu[nazwa_szablonu])then
local tekst=p.ParametrTekstowySzablonuTekstu(__tabela_parametrow_szablonu);
local bez_preprocess=p.SzablonTekstuBezPreProcess(__tabela_parametrow_szablonu);
local czy_bez_preprocess=parametry_modul.CzyTak(bez_preprocess);
----
tabela_parametrow_szablonu=tabela_parametrow_szablonu or __tabela_parametrow_szablonu;
local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod)
if(obiekt=="ZMIENNA")then
local klucz=mw.ustring.match(szablon,"^%{%{%{%s*klucz(%d*)%s*%|.*%}%}%}$") or mw.ustring.match(szablon,"^%{%{%{%s*klucz(%d*)%s*%}%}%}$");
if(klucz)then
if((klucz=="")or(mw.ustring.match(klucz,"^[1-9]%d*$")))then
local wartosc_klucz=tabela_parametrow_szablonu["klucz"..klucz];
wartosc_klucz=wartosc_klucz and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(wartosc_klucz,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true,true) or wartosc_klucz;
if(wartosc_klucz)then return wartosc_klucz;end;
end;
end;
end;
return nil,true;
end);
local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,__tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(
(numerowane_obiekty[nazwa_szablonu])
or(nienumerowane_obiekty_napisu_wprowadzenia_tekstu[nazwa_szablonu])
or(nienumerowane_obiekty_tekstu[nazwa_szablonu])
)then
local uchwyt=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1];
local nazwa_artykulu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[2];
local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[3];
local status;
if(uchwyt)then
local __uchwyt_tekstu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(uchwyt,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true);
status=status or __uchwyt_tekstu;
uchwyt=__uchwyt_tekstu or uchwyt;
end;
if(nazwa_artykulu)then
local __nazwa_artykulu_tekstu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(nazwa_artykulu,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true);
status=status or __nazwa_artykulu_tekstu;
nazwa_artykulu=__nazwa_artykulu_tekstu or nazwa_artykulu;
end;
if(nazwa_ksiazki)then
local __nazwa_ksiazki_tekstu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(nazwa_ksiazki,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true);
status=status or __nazwa_ksiazki_tekstu;
nazwa_ksiazki=__nazwa_ksiazki_tekstu or nazwa_ksiazki;
end;
--[[if(
(status)
or(
(not czy_bez_preprocess)
and(((not nazwa_artykulu)and(nazwa_artykulu_tekstu))or((not nazwa_ksiazki)and(nazwa_modulu_ksiazki_tekstu)))
)
)then]]
tabela_parametrow_szablonu["uchwyt"]=uchwyt;tabela_parametrow_szablonu[1]=nil;
tabela_parametrow_szablonu["nazwa artykułu"]=nazwa_artykulu or (not czy_bez_preprocess)and nazwa_artykulu_tekstu or nil;tabela_parametrow_szablonu[2]=nil;
tabela_parametrow_szablonu["nazwa książki"]=nazwa_ksiazki or (not czy_bez_preprocess) and nazwa_modulu_ksiazki_tekstu or nil;tabela_parametrow_szablonu[3]=nil;
local szablon=szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,false);
__tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
__tablica_danych_parametrow_szablonu_strony[1][kod].parametry=nil;
--[[end;]]
end;
return nil;
end);
end;
return nil,true;
end);
end;
end);
end;
return nil,true;
end,nil,
function(szablon,obiekt,kod,poziom_iteracji,tekst)
if(poziom_iteracji>0)then
return nil;
end;
return szablon;
end);
return tekst;
end;
function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu)
local tekst=tabela_parametrow_szablonu["tekst"] or tabela_parametrow_szablonu["treść"] or tabela_parametrow_szablonu[1];
return tekst;
end;
function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu)
return tabela_parametrow_szablonu["bez preprocess"];
end;
function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2)
if(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end;
for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)do
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,pozycja);
end;
end;
end;
function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany)
if(not czy_artykul_korzystany)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{
{wartosc_elementu,lista_dwuelementowa,},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
{tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,},
});
else
if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{
{wartosc_elementu,lista_dwuelementowa,},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
{tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,},
});
end;
end;
function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)
local tablica_szablonu_tekstu;
if(czy_artykul_korzystany)then
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych;
else
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych;
end;
if(tablica_szablonu_tekstu)then
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local nazwa_obiektu_tekstu=pozycja[1][1];
local uchwyt_obiektu_tekstu=pozycja[1][2][1];
if((nazwa_obiektu_tekstu==nazwa_obiektu)and(uchwyt_obiektu_tekstu==uchwyt_obiektu))then
local dodatkowe_elementy=pozycja[2];
local czy_tak=false;
for _,pozycja_dodatkowe in ipairs(dodatkowe_elementy)do
if((pozycja_dodatkowe[1]==obiekt)and(pozycja_dodatkowe[2]==kod))then
czy_tak=true;
break;
end;
end;
if(not czy_tak)then
local tab_numer;
if(tablica_zmiennych)then
tab_numer={};
for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do
tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name];
end;
end;
table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer});
break;
end;
end;
end;
end;
end;
function p.UstawPobierzKorzystanie(tablica_zmiennych2)
if(tablica_zmiennych2.tablica_szablonu_tekstu_linkowe_korzystane)then
for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_linkowe_korzystane)do
if(not pozycja[3])then
pozycja[3]=true;
local nazwa_obiektu=pozycja[1][1];
local uchwyt_obiektu=pozycja[1][2];
local obiekt=pozycja[2][1];
local kod=pozycja[2][2];
p.UstawianiePobierz(nil,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,true);
end;
end;
end;
end;
function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane)
local __tablica_analizy_obiektow_strony_dany_modul=(pozycja[4] or{})[1] or tablica_analizy_obiektow_strony_dany_modul;
local __tablica_danych_parametrow_szablonu_strony=(pozycja[4] or {})[2] or tablica_danych_parametrow_szablonu_strony;
local __obiekt=(pozycja[3] or {})[2];
local __kod=(pozycja[3] or {})[3];
local __szablon=__tablica_analizy_obiektow_strony_dany_modul[__obiekt][__kod];
local szablonowe_modul=require("Module:Szablonowe");
local nazwa_artykulu_tekstu;local nazwa_modulu_ksiazki_tekstu;
nazwa_artykulu_tekstu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[2];
nazwa_modulu_ksiazki_tekstu=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[3];
local parametry_modul=require("Module:Parametry");
local __tablica_analizy_obiektow_strony_dany_modul=parametry_modul["KopiujRekurencyjnieTabelęElementów"](__tablica_analizy_obiektow_strony_dany_modul);
local __tablica_danych_parametrow_szablonu_strony=parametry_modul["KopiujRekurencyjnieTabelęElementów"](__tablica_danych_parametrow_szablonu_strony);
local tekst_szablon=p.PreparowanieSzablonoweLinkoweSzablonuTekstu(szablonowe_modul.NormaKoduKodowaniaTekstu(__obiekt,__kod),nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu);
local __tabela_parametrow_szablonu=pozycja[3][1][1];
----
local tekst=p.ParametrTekstowySzablonuTekstu(__tabela_parametrow_szablonu);
if(tekst)then
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
----
local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
--local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul);
local tab_numer={};
local tab_tak={};
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod,poziom_iteracji,_,obiekt_rodzica,kod_rodzica,szablon_rodzica,_,_,poziom_iteracji_rodzica)
obiekt_rodzica=obiekt_rodzica or true;
kod_rodzica=kod_rodzica or true;
local tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica];
if(not tab_tak_obiekt_rodzica)then tab_tak[obiekt_rodzica]={};tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica]end;
local tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica];
if(not tab_tak_kod_rodzica)then tab_tak_obiekt_rodzica[kod_rodzica]={};tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica]end;
local czy_tak=tab_tak_kod_rodzica[obiekt];
tab_tak_kod_rodzica[obiekt]=true;
tab_numer[obiekt]=tab_numer[obiekt] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt);
local max_numer=tab_numer[obiekt];
local kod_temp=kod+max_numer;
--tablica_analizy_obiektow_strony_dany_modul[obiekt][kod_temp]=szablon;
local ile;
if(not czy_tak)then
szablon_rodzica,ile=mw.ustring.gsub(szablon_rodzica,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt),function(kod)
kod=tonumber(kod) or nil;
return szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod+max_numer);
end);
end;
local TempFunc=function(tablica_danych_parametrow_szablonu_strony,kod)
local tab_obiekt=tab_analiza[obiekt];
if(tab_obiekt)then
for _, wartosc in pairs(tab_obiekt)do
local tab_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc];
if(not tab_wartosc)then
tablica_danych_parametrow_szablonu_strony[wartosc]={};
end;
local stara_tabelka=(__tablica_danych_parametrow_szablonu_strony[wartosc] or {})[kod];
local nowa_tabelka=parametry_modul.TypeTable(stara_tabelka) and parametry_modul["KopiujRekurencyjnieTabelęElementów"](stara_tabelka) or stara_tabelka;
tablica_danych_parametrow_szablonu_strony[wartosc][kod_temp]=nowa_tabelka;
end;
end;
end;
TempFunc(tablica_danych_parametrow_szablonu_strony,kod);
if(poziom_iteracji>0)then
tab_numer[obiekt_rodzica]=tab_numer[obiekt_rodzica] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt_rodzica);
local max_numer_rodzica=tab_numer[obiekt_rodzica];
kod_rodzica=kod_rodzica+max_numer_rodzica;
end;
if(not czy_tak)then
return nil,szablon,obiekt,kod_temp,szablon_rodzica,obiekt_rodzica,kod_rodzica,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica;
else
return nil,szablon,obiekt,kod_temp,nil,nil,nil,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica;
end;
return;
end);
return tekst;
----
end;
return;
end;
function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych)
local function TempFunc(tablica_szablonu_tekstu,__funkcja,czy_korzystane)
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local tab_obiekty=pozycja[2];
for _,pozycja2 in ipairs(tab_obiekty)do
local __obiekt=pozycja2[1];
local __kod=pozycja2[2];
if((__obiekt==obiekt)and(__kod==kod))then
local szablon=__funkcja(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane);
if(szablon)then
tab_numer=pozycja2[3];
return szablon,tab_numer;
end;
return;
end;
end;
end;
end;
local szablon;local tab_numer;
if(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then
szablon,tab_numer=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,p.ZamienianiePobierzNaKod,true);
end;
if(not szablon)then
if(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then
szablon,tab_numer=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,p.ZamienianiePobierzNaKod,false);
end;
end;
if(szablon)then return szablon,tab_numer;end;
return nil;
end;
function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)
local tablica_szablonu_tekstu_korzystanych=tablica_zmiennych.tablica_szablonu_tekstu_korzystanych;
for _,pozycja in ipairs(tablica_szablonu_tekstu_korzystanych)do
local __obiekt=pozycja[3][2];
local __kod=pozycja[3][3];
if((obiekt==__obiekt)and(kod==__kod))then
local tabela_parametrow_szablonu=pozycja[3][1][1];
local tekst=p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu);
if(tekst)then return tekst;end;
return nil;
end;
end;
return nil;
end;
function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)
if((not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)and(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych))then return nil;end;
if(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then
local function TempFunc(tablica_szablonu_tekstu)
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local tab_pobierz=pozycja[2];
for _,value in ipairs(tab_pobierz)do
return true;
end;
end;
return nil;
end;
if((not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)and(not TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)))then return nil;end;
end;
local stronicowyparser_obiekty_modul=require("Module:StronicowyParser/obiekty");
local tab_pobierz_szablonu_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
local tab_szablony_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu;
local czy_pobierz=nil;
local szablonowe_modul=require("Module:Szablonowe");
local ___tabela_parametrow_szablonu;
tekst_rozwiniety_calego_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(czy_pobierz)then
szablon,tab_numer=p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,___tabela_parametrow_szablonu,tablica_zmiennych);
if(szablon)then
IterowaniePoElementachTekstu(szablon,tab_numer);
end;
else
szablon=p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych);
end;
if(szablon)then return szablon;end;
return nil;
end,nil,
function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
----
if(tab_pobierz_szablonu_tekstu[nazwa_szablonu])then
czy_pobierz=true;
___tabela_parametrow_szablonu=tabela_parametrow_szablonu;
return true;
elseif(tab_szablony_tekstu[nazwa_szablonu])then
czy_pobierz=false;
return true;
end;
return nil;
end);
if(wynik)then return wynik;end;
end;
return nil;
end);
return tekst_rozwiniety_calego_artykulu;
end;
return p;
0mnqkcut4pumofsppfxx5azylb3royu
558405
558404
2026-10-03T11:22:29Z
Persino
2851
558405
Scribunto
text/plain
local p={};
p["KopiujRekurencyjnieTabelęElementówSzablonuTekstu"]=function(szablon,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local szablonowe_modul=require("Module:Szablonowe");
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul);
local __tablica_analizy_obiektow_strony_dany_modul={};
local __tablica_danych_parametrow_szablonu_strony={};
local szablonowe_dane_modul=require("Module:Szablonowe/dane");
local function TemFunc(tab_co)
local __metatablica={};
szablonowe_dane_modul.MetaTabelkaSzablonowe(__metatablica);
setmetatable(tab_co,__metatablica);
end;
for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do
__tablica_analizy_obiektow_strony_dany_modul[obiekt]={};
TemFunc(__tablica_analizy_obiektow_strony_dany_modul[obiekt]);
end;
for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do
__tablica_analizy_obiektow_strony_dany_modul[obiekt]={};
TemFunc(__tablica_analizy_obiektow_strony_dany_modul[obiekt]);
end;
local parametry_modul=require("Module:Parametry");
local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
for szablon,obiekt,kod in iterator do
__tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
local tab_obiekt=tab_analiza[obiekt];
if(tab_obiekt)then
for _,wartosc in pairs(tab_obiekt)do
local tab_element_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc];
if(tab_element_wartosc)then
if(not __tablica_danych_parametrow_szablonu_strony[wartosc])then
__tablica_danych_parametrow_szablonu_strony[wartosc]={};
end;
local tab_elements_kod=tablica_danych_parametrow_szablonu_strony[wartosc][kod];
if(parametry_modul.TypeTable(tab_elements_kod))then
__tablica_danych_parametrow_szablonu_strony[wartosc][kod]=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tab_elements_kod);
else
__tablica_danych_parametrow_szablonu_strony[wartosc][kod]=tab_elements_kod;
end;
end;
end;
end;
end;
return __tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony;
end;
p.PreparowanieSzablonoweLinkoweSzablonuTekstu=function(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu)
--if(true)then return tekst;end;
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local szablony_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane;
local numerowane_obiekty=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty;
local nienumerowane_obiekty_napisu_wprowadzenia_tekstu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu;
local nienumerowane_obiekty_tekstu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
----
tablica_analizy_obiektow_strony_dany_modul=tablica_analizy_obiektow_strony_dany_modul or __tablica_analizy_obiektow_strony_dany_modul;
tablica_danych_parametrow_szablonu_strony=tablica_danych_parametrow_szablonu_strony or __tablica_danych_parametrow_szablonu_strony;
----
local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
--if(true)then return nil,true;end;
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,__tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,
function(__tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(szablony_tekstu[nazwa_szablonu])then
local tekst=p.ParametrTekstowySzablonuTekstu(__tabela_parametrow_szablonu);
local bez_preprocess=p.SzablonTekstuBezPreProcess(__tabela_parametrow_szablonu);
local czy_bez_preprocess=parametry_modul.CzyTak(bez_preprocess);
----
tabela_parametrow_szablonu=tabela_parametrow_szablonu or __tabela_parametrow_szablonu;
local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod)
if(obiekt=="ZMIENNA")then
local klucz=mw.ustring.match(szablon,"^%{%{%{%s*klucz(%d*)%s*%|.*%}%}%}$") or mw.ustring.match(szablon,"^%{%{%{%s*klucz(%d*)%s*%}%}%}$");
if(klucz)then
if((klucz=="")or(mw.ustring.match(klucz,"^[1-9]%d*$")))then
local wartosc_klucz=tabela_parametrow_szablonu["klucz"..klucz];
wartosc_klucz=wartosc_klucz and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(wartosc_klucz,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true,true) or wartosc_klucz;
if(wartosc_klucz)then return wartosc_klucz;end;
end;
end;
end;
return nil,true;
end);
local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,__tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(
(numerowane_obiekty[nazwa_szablonu])
or(nienumerowane_obiekty_napisu_wprowadzenia_tekstu[nazwa_szablonu])
or(nienumerowane_obiekty_tekstu[nazwa_szablonu])
)then
local uchwyt=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1];
local nazwa_artykulu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[2];
local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[3];
local status;
if(uchwyt)then
local __uchwyt_tekstu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(uchwyt,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true);
status=status or __uchwyt_tekstu;
uchwyt=__uchwyt_tekstu or uchwyt;
end;
if(nazwa_artykulu)then
local __nazwa_artykulu_tekstu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(nazwa_artykulu,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true);
status=status or __nazwa_artykulu_tekstu;
nazwa_artykulu=__nazwa_artykulu_tekstu or nazwa_artykulu;
end;
if(nazwa_ksiazki)then
local __nazwa_ksiazki_tekstu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(nazwa_ksiazki,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true);
status=status or __nazwa_ksiazki_tekstu;
nazwa_ksiazki=__nazwa_ksiazki_tekstu or nazwa_ksiazki;
end;
--[[if(
(status)
or(
(not czy_bez_preprocess)
and(((not nazwa_artykulu)and(nazwa_artykulu_tekstu))or((not nazwa_ksiazki)and(nazwa_modulu_ksiazki_tekstu)))
)
)then]]
tabela_parametrow_szablonu["uchwyt"]=uchwyt;tabela_parametrow_szablonu[1]=nil;
tabela_parametrow_szablonu["nazwa artykułu"]=nazwa_artykulu or (not czy_bez_preprocess)and nazwa_artykulu_tekstu or nil;tabela_parametrow_szablonu[2]=nil;
tabela_parametrow_szablonu["nazwa książki"]=nazwa_ksiazki or (not czy_bez_preprocess) and nazwa_modulu_ksiazki_tekstu or nil;tabela_parametrow_szablonu[3]=nil;
local szablon=szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,false);
__tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
__tablica_danych_parametrow_szablonu_strony[1][kod].parametry=nil;
--[[end;]]
end;
return nil;
end);
end;
return nil,true;
end);
end;
end);
end;
return nil,true;
end,nil,
function(szablon,obiekt,kod,poziom_iteracji,tekst)
if(poziom_iteracji>0)then
return nil;
end;
return szablon;
end);
return tekst;
end;
function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu)
local tekst=tabela_parametrow_szablonu["tekst"] or tabela_parametrow_szablonu["treść"] or tabela_parametrow_szablonu[1];
return tekst;
end;
function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu)
return tabela_parametrow_szablonu["bez preprocess"];
end;
function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2)
if(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end;
for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)do
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,pozycja);
end;
end;
end;
function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany)
if(not czy_artykul_korzystany)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{
{wartosc_elementu,lista_dwuelementowa,},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
{tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,},
});
else
if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{
{wartosc_elementu,lista_dwuelementowa,},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
{tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,},
});
end;
end;
function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)
local tablica_szablonu_tekstu;
if(czy_artykul_korzystany)then
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych;
else
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych;
end;
if(tablica_szablonu_tekstu)then
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local nazwa_obiektu_tekstu=pozycja[1][1];
local uchwyt_obiektu_tekstu=pozycja[1][2][1];
if((nazwa_obiektu_tekstu==nazwa_obiektu)and(uchwyt_obiektu_tekstu==uchwyt_obiektu))then
local dodatkowe_elementy=pozycja[2];
local czy_tak=false;
for _,pozycja_dodatkowe in ipairs(dodatkowe_elementy)do
if((pozycja_dodatkowe[1]==obiekt)and(pozycja_dodatkowe[2]==kod))then
czy_tak=true;
break;
end;
end;
if(not czy_tak)then
local tab_numer;
if(tablica_zmiennych)then
tab_numer={};
for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do
tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name];
end;
end;
table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer});
break;
end;
end;
end;
end;
end;
function p.UstawPobierzKorzystanie(tablica_zmiennych2)
if(tablica_zmiennych2.tablica_szablonu_tekstu_linkowe_korzystane)then
for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_linkowe_korzystane)do
if(not pozycja[3])then
pozycja[3]=true;
local nazwa_obiektu=pozycja[1][1];
local uchwyt_obiektu=pozycja[1][2];
local obiekt=pozycja[2][1];
local kod=pozycja[2][2];
p.UstawianiePobierz(nil,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,true);
end;
end;
end;
end;
function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane)
local __tablica_analizy_obiektow_strony_dany_modul=(pozycja[4] or{})[1] or tablica_analizy_obiektow_strony_dany_modul;
local __tablica_danych_parametrow_szablonu_strony=(pozycja[4] or {})[2] or tablica_danych_parametrow_szablonu_strony;
local __obiekt=(pozycja[3] or {})[2];
local __kod=(pozycja[3] or {})[3];
local __szablon=__tablica_analizy_obiektow_strony_dany_modul[__obiekt][__kod];
local szablonowe_modul=require("Module:Szablonowe");
local nazwa_artykulu_tekstu;local nazwa_modulu_ksiazki_tekstu;
nazwa_artykulu_tekstu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[2];
nazwa_modulu_ksiazki_tekstu=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[3];
local parametry_modul=require("Module:Parametry");
local __tablica_analizy_obiektow_strony_dany_modul=parametry_modul["KopiujRekurencyjnieTabelęElementów"](__tablica_analizy_obiektow_strony_dany_modul);
local __tablica_danych_parametrow_szablonu_strony=parametry_modul["KopiujRekurencyjnieTabelęElementów"](__tablica_danych_parametrow_szablonu_strony);
local tekst_szablon=p.PreparowanieSzablonoweLinkoweSzablonuTekstu(szablonowe_modul.NormaKoduKodowaniaTekstu(__obiekt,__kod),nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu);
local __tabela_parametrow_szablonu=pozycja[3][1][1];
----
local tekst=p.ParametrTekstowySzablonuTekstu(__tabela_parametrow_szablonu);
if(tekst)then
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
----
local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
--local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul);
local tab_numer={};
local tab_tak={};
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod,poziom_iteracji,_,obiekt_rodzica,kod_rodzica,szablon_rodzica,_,_,poziom_iteracji_rodzica)
obiekt_rodzica=obiekt_rodzica or true;
kod_rodzica=kod_rodzica or true;
local tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica];
if(not tab_tak_obiekt_rodzica)then tab_tak[obiekt_rodzica]={};tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica]end;
local tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica];
if(not tab_tak_kod_rodzica)then tab_tak_obiekt_rodzica[kod_rodzica]={};tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica]end;
local czy_tak=tab_tak_kod_rodzica[obiekt];
tab_tak_kod_rodzica[obiekt]=true;
tab_numer[obiekt]=tab_numer[obiekt] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt);
local max_numer=tab_numer[obiekt];
local kod_temp=kod+max_numer;
--tablica_analizy_obiektow_strony_dany_modul[obiekt][kod_temp]=szablon;
local ile;
if(not czy_tak)then
szablon_rodzica,ile=mw.ustring.gsub(szablon_rodzica,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt),function(kod)
kod=tonumber(kod) or nil;
return szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod+max_numer);
end);
end;
local TempFunc=function(tablica_danych_parametrow_szablonu_strony,kod)
local tab_obiekt=tab_analiza[obiekt];
if(tab_obiekt)then
for _, wartosc in pairs(tab_obiekt)do
local tab_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc];
if(not tab_wartosc)then
tablica_danych_parametrow_szablonu_strony[wartosc]={};
end;
local stara_tabelka=(__tablica_danych_parametrow_szablonu_strony[wartosc] or {})[kod];
local nowa_tabelka=parametry_modul.TypeTable(stara_tabelka) and parametry_modul["KopiujRekurencyjnieTabelęElementów"](stara_tabelka) or stara_tabelka;
tablica_danych_parametrow_szablonu_strony[wartosc][kod_temp]=nowa_tabelka;
end;
end;
end;
TempFunc(tablica_danych_parametrow_szablonu_strony,kod);
if(poziom_iteracji>0)then
tab_numer[obiekt_rodzica]=tab_numer[obiekt_rodzica] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt_rodzica);
local max_numer_rodzica=tab_numer[obiekt_rodzica];
kod_rodzica=kod_rodzica+max_numer_rodzica;
end;
if(not czy_tak)then
return nil,szablon,obiekt,kod_temp,szablon_rodzica,obiekt_rodzica,kod_rodzica,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica;
else
return nil,szablon,obiekt,kod_temp,nil,nil,nil,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica;
end;
return;
end);
return tekst;
----
end;
return;
end;
function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych)
local function TempFunc(tablica_szablonu_tekstu,__funkcja,czy_korzystane)
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local tab_obiekty=pozycja[2];
for _,pozycja2 in ipairs(tab_obiekty)do
local __obiekt=pozycja2[1];
local __kod=pozycja2[2];
if((__obiekt==obiekt)and(__kod==kod))then
local szablon=__funkcja(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane);
if(szablon)then
tab_numer=pozycja2[3];
return szablon,tab_numer;
end;
return;
end;
end;
end;
end;
local szablon;local tab_numer;
if(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then
szablon,tab_numer=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,p.ZamienianiePobierzNaKod,true);
end;
if(not szablon)then
if(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then
szablon,tab_numer=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,p.ZamienianiePobierzNaKod,false);
end;
end;
if(szablon)then return szablon,tab_numer;end;
return nil;
end;
function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)
local tablica_szablonu_tekstu_korzystanych=tablica_zmiennych.tablica_szablonu_tekstu_korzystanych;
for _,pozycja in ipairs(tablica_szablonu_tekstu_korzystanych)do
local __obiekt=pozycja[3][2];
local __kod=pozycja[3][3];
if((obiekt==__obiekt)and(kod==__kod))then
local tabela_parametrow_szablonu=pozycja[3][1][1];
local tekst=p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu);
if(tekst)then return tekst;end;
return nil;
end;
end;
return nil;
end;
function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)
if((not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)and(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych))then return nil;end;
if(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then
local function TempFunc(tablica_szablonu_tekstu)
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local tab_pobierz=pozycja[2];
for _,value in ipairs(tab_pobierz)do
return true;
end;
end;
return nil;
end;
if((not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)and(not TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)))then return nil;end;
end;
local stronicowyparser_obiekty_modul=require("Module:StronicowyParser/obiekty");
local tab_pobierz_szablonu_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
local tab_szablony_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu;
local czy_pobierz=nil;
local szablonowe_modul=require("Module:Szablonowe");
local ___tabela_parametrow_szablonu;
tekst_rozwiniety_calego_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(czy_pobierz)then
szablon,tab_numer=p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,___tabela_parametrow_szablonu,tablica_zmiennych);
if(szablon)then
IterowaniePoElementachTekstu(szablon,tab_numer);
end;
else
szablon=p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych);
end;
if(szablon)then return szablon;end;
return nil;
end,nil,
function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
----
if(tab_pobierz_szablonu_tekstu[nazwa_szablonu])then
czy_pobierz=true;
___tabela_parametrow_szablonu=tabela_parametrow_szablonu;
return true;
elseif(tab_szablony_tekstu[nazwa_szablonu])then
czy_pobierz=false;
return true;
end;
return nil;
end);
if(wynik)then return wynik;end;
end;
return nil;
end);
return tekst_rozwiniety_calego_artykulu;
end;
return p;
s4nv6xtc687qnups6qh27rhtli19lvm
558406
558405
2026-10-03T11:24:47Z
Persino
2851
558406
Scribunto
text/plain
local p={};
p["KopiujRekurencyjnieTabelęElementówSzablonuTekstu"]=function(szablon,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local szablonowe_modul=require("Module:Szablonowe");
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul);
local __tablica_analizy_obiektow_strony_dany_modul={};
local __tablica_danych_parametrow_szablonu_strony={};
local szablonowe_dane_modul=require("Module:Szablonowe/dane");
local function TemFunc(tab_co)
local __metatablica={};
szablonowe_dane_modul.MetaTabelkaSzablonowe(__metatablica);
setmetatable(tab_co,__metatablica);
end;
for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do
__tablica_analizy_obiektow_strony_dany_modul[obiekt]={};
TemFunc(__tablica_analizy_obiektow_strony_dany_modul[obiekt]);
end;
for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do
__tablica_analizy_obiektow_strony_dany_modul[obiekt]={};
TemFunc(__tablica_analizy_obiektow_strony_dany_modul[obiekt]);
end;
local parametry_modul=require("Module:Parametry");
local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
for szablon,obiekt,kod in iterator do
__tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
local tab_obiekt=tab_analiza[obiekt];
if(tab_obiekt)then
for _,wartosc in pairs(tab_obiekt)do
local tab_element_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc];
if(tab_element_wartosc)then
local tab_elements_kod=tablica_danych_parametrow_szablonu_strony[wartosc][kod];
if(tab_elements_kod)then
if(not __tablica_danych_parametrow_szablonu_strony[wartosc])then
__tablica_danych_parametrow_szablonu_strony[wartosc]={};
end;
if(parametry_modul.TypeTable(tab_elements_kod))then
__tablica_danych_parametrow_szablonu_strony[wartosc][kod]=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tab_elements_kod);
else
__tablica_danych_parametrow_szablonu_strony[wartosc][kod]=tab_elements_kod;
end;
end;
end;
end;
end;
end;
return __tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony;
end;
p.PreparowanieSzablonoweLinkoweSzablonuTekstu=function(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu)
--if(true)then return tekst;end;
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local szablony_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane;
local numerowane_obiekty=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty;
local nienumerowane_obiekty_napisu_wprowadzenia_tekstu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu;
local nienumerowane_obiekty_tekstu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
----
tablica_analizy_obiektow_strony_dany_modul=tablica_analizy_obiektow_strony_dany_modul or __tablica_analizy_obiektow_strony_dany_modul;
tablica_danych_parametrow_szablonu_strony=tablica_danych_parametrow_szablonu_strony or __tablica_danych_parametrow_szablonu_strony;
----
local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
--if(true)then return nil,true;end;
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,__tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,
function(__tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(szablony_tekstu[nazwa_szablonu])then
local tekst=p.ParametrTekstowySzablonuTekstu(__tabela_parametrow_szablonu);
local bez_preprocess=p.SzablonTekstuBezPreProcess(__tabela_parametrow_szablonu);
local czy_bez_preprocess=parametry_modul.CzyTak(bez_preprocess);
----
tabela_parametrow_szablonu=tabela_parametrow_szablonu or __tabela_parametrow_szablonu;
local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod)
if(obiekt=="ZMIENNA")then
local klucz=mw.ustring.match(szablon,"^%{%{%{%s*klucz(%d*)%s*%|.*%}%}%}$") or mw.ustring.match(szablon,"^%{%{%{%s*klucz(%d*)%s*%}%}%}$");
if(klucz)then
if((klucz=="")or(mw.ustring.match(klucz,"^[1-9]%d*$")))then
local wartosc_klucz=tabela_parametrow_szablonu["klucz"..klucz];
wartosc_klucz=wartosc_klucz and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(wartosc_klucz,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true,true) or wartosc_klucz;
if(wartosc_klucz)then return wartosc_klucz;end;
end;
end;
end;
return nil,true;
end);
local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,__tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(
(numerowane_obiekty[nazwa_szablonu])
or(nienumerowane_obiekty_napisu_wprowadzenia_tekstu[nazwa_szablonu])
or(nienumerowane_obiekty_tekstu[nazwa_szablonu])
)then
local uchwyt=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1];
local nazwa_artykulu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[2];
local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[3];
local status;
if(uchwyt)then
local __uchwyt_tekstu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(uchwyt,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true);
status=status or __uchwyt_tekstu;
uchwyt=__uchwyt_tekstu or uchwyt;
end;
if(nazwa_artykulu)then
local __nazwa_artykulu_tekstu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(nazwa_artykulu,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true);
status=status or __nazwa_artykulu_tekstu;
nazwa_artykulu=__nazwa_artykulu_tekstu or nazwa_artykulu;
end;
if(nazwa_ksiazki)then
local __nazwa_ksiazki_tekstu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(nazwa_ksiazki,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true);
status=status or __nazwa_ksiazki_tekstu;
nazwa_ksiazki=__nazwa_ksiazki_tekstu or nazwa_ksiazki;
end;
--[[if(
(status)
or(
(not czy_bez_preprocess)
and(((not nazwa_artykulu)and(nazwa_artykulu_tekstu))or((not nazwa_ksiazki)and(nazwa_modulu_ksiazki_tekstu)))
)
)then]]
tabela_parametrow_szablonu["uchwyt"]=uchwyt;tabela_parametrow_szablonu[1]=nil;
tabela_parametrow_szablonu["nazwa artykułu"]=nazwa_artykulu or (not czy_bez_preprocess)and nazwa_artykulu_tekstu or nil;tabela_parametrow_szablonu[2]=nil;
tabela_parametrow_szablonu["nazwa książki"]=nazwa_ksiazki or (not czy_bez_preprocess) and nazwa_modulu_ksiazki_tekstu or nil;tabela_parametrow_szablonu[3]=nil;
local szablon=szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,false);
__tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
__tablica_danych_parametrow_szablonu_strony[1][kod].parametry=nil;
--[[end;]]
end;
return nil;
end);
end;
return nil,true;
end);
end;
end);
end;
return nil,true;
end,nil,
function(szablon,obiekt,kod,poziom_iteracji,tekst)
if(poziom_iteracji>0)then
return nil;
end;
return szablon;
end);
return tekst;
end;
function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu)
local tekst=tabela_parametrow_szablonu["tekst"] or tabela_parametrow_szablonu["treść"] or tabela_parametrow_szablonu[1];
return tekst;
end;
function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu)
return tabela_parametrow_szablonu["bez preprocess"];
end;
function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2)
if(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end;
for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)do
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,pozycja);
end;
end;
end;
function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany)
if(not czy_artykul_korzystany)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{
{wartosc_elementu,lista_dwuelementowa,},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
{tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,},
});
else
if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{
{wartosc_elementu,lista_dwuelementowa,},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
{tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,},
});
end;
end;
function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)
local tablica_szablonu_tekstu;
if(czy_artykul_korzystany)then
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych;
else
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych;
end;
if(tablica_szablonu_tekstu)then
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local nazwa_obiektu_tekstu=pozycja[1][1];
local uchwyt_obiektu_tekstu=pozycja[1][2][1];
if((nazwa_obiektu_tekstu==nazwa_obiektu)and(uchwyt_obiektu_tekstu==uchwyt_obiektu))then
local dodatkowe_elementy=pozycja[2];
local czy_tak=false;
for _,pozycja_dodatkowe in ipairs(dodatkowe_elementy)do
if((pozycja_dodatkowe[1]==obiekt)and(pozycja_dodatkowe[2]==kod))then
czy_tak=true;
break;
end;
end;
if(not czy_tak)then
local tab_numer;
if(tablica_zmiennych)then
tab_numer={};
for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do
tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name];
end;
end;
table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer});
break;
end;
end;
end;
end;
end;
function p.UstawPobierzKorzystanie(tablica_zmiennych2)
if(tablica_zmiennych2.tablica_szablonu_tekstu_linkowe_korzystane)then
for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_linkowe_korzystane)do
if(not pozycja[3])then
pozycja[3]=true;
local nazwa_obiektu=pozycja[1][1];
local uchwyt_obiektu=pozycja[1][2];
local obiekt=pozycja[2][1];
local kod=pozycja[2][2];
p.UstawianiePobierz(nil,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,true);
end;
end;
end;
end;
function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane)
local __tablica_analizy_obiektow_strony_dany_modul=(pozycja[4] or{})[1] or tablica_analizy_obiektow_strony_dany_modul;
local __tablica_danych_parametrow_szablonu_strony=(pozycja[4] or {})[2] or tablica_danych_parametrow_szablonu_strony;
local __obiekt=(pozycja[3] or {})[2];
local __kod=(pozycja[3] or {})[3];
local __szablon=__tablica_analizy_obiektow_strony_dany_modul[__obiekt][__kod];
local szablonowe_modul=require("Module:Szablonowe");
local nazwa_artykulu_tekstu;local nazwa_modulu_ksiazki_tekstu;
nazwa_artykulu_tekstu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[2];
nazwa_modulu_ksiazki_tekstu=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[3];
local parametry_modul=require("Module:Parametry");
local __tablica_analizy_obiektow_strony_dany_modul=parametry_modul["KopiujRekurencyjnieTabelęElementów"](__tablica_analizy_obiektow_strony_dany_modul);
local __tablica_danych_parametrow_szablonu_strony=parametry_modul["KopiujRekurencyjnieTabelęElementów"](__tablica_danych_parametrow_szablonu_strony);
local tekst_szablon=p.PreparowanieSzablonoweLinkoweSzablonuTekstu(szablonowe_modul.NormaKoduKodowaniaTekstu(__obiekt,__kod),nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu);
local __tabela_parametrow_szablonu=pozycja[3][1][1];
----
local tekst=p.ParametrTekstowySzablonuTekstu(__tabela_parametrow_szablonu);
if(tekst)then
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
----
local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
--local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul);
local tab_numer={};
local tab_tak={};
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod,poziom_iteracji,_,obiekt_rodzica,kod_rodzica,szablon_rodzica,_,_,poziom_iteracji_rodzica)
obiekt_rodzica=obiekt_rodzica or true;
kod_rodzica=kod_rodzica or true;
local tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica];
if(not tab_tak_obiekt_rodzica)then tab_tak[obiekt_rodzica]={};tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica]end;
local tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica];
if(not tab_tak_kod_rodzica)then tab_tak_obiekt_rodzica[kod_rodzica]={};tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica]end;
local czy_tak=tab_tak_kod_rodzica[obiekt];
tab_tak_kod_rodzica[obiekt]=true;
tab_numer[obiekt]=tab_numer[obiekt] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt);
local max_numer=tab_numer[obiekt];
local kod_temp=kod+max_numer;
--tablica_analizy_obiektow_strony_dany_modul[obiekt][kod_temp]=szablon;
local ile;
if(not czy_tak)then
szablon_rodzica,ile=mw.ustring.gsub(szablon_rodzica,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt),function(kod)
kod=tonumber(kod) or nil;
return szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod+max_numer);
end);
end;
local TempFunc=function(tablica_danych_parametrow_szablonu_strony,kod)
local tab_obiekt=tab_analiza[obiekt];
if(tab_obiekt)then
for _, wartosc in pairs(tab_obiekt)do
local tab_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc];
if(not tab_wartosc)then
tablica_danych_parametrow_szablonu_strony[wartosc]={};
end;
local stara_tabelka=(__tablica_danych_parametrow_szablonu_strony[wartosc] or {})[kod];
local nowa_tabelka=parametry_modul.TypeTable(stara_tabelka) and parametry_modul["KopiujRekurencyjnieTabelęElementów"](stara_tabelka) or stara_tabelka;
tablica_danych_parametrow_szablonu_strony[wartosc][kod_temp]=nowa_tabelka;
end;
end;
end;
TempFunc(tablica_danych_parametrow_szablonu_strony,kod);
if(poziom_iteracji>0)then
tab_numer[obiekt_rodzica]=tab_numer[obiekt_rodzica] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt_rodzica);
local max_numer_rodzica=tab_numer[obiekt_rodzica];
kod_rodzica=kod_rodzica+max_numer_rodzica;
end;
if(not czy_tak)then
return nil,szablon,obiekt,kod_temp,szablon_rodzica,obiekt_rodzica,kod_rodzica,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica;
else
return nil,szablon,obiekt,kod_temp,nil,nil,nil,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica;
end;
return;
end);
return tekst;
----
end;
return;
end;
function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych)
local function TempFunc(tablica_szablonu_tekstu,__funkcja,czy_korzystane)
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local tab_obiekty=pozycja[2];
for _,pozycja2 in ipairs(tab_obiekty)do
local __obiekt=pozycja2[1];
local __kod=pozycja2[2];
if((__obiekt==obiekt)and(__kod==kod))then
local szablon=__funkcja(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane);
if(szablon)then
tab_numer=pozycja2[3];
return szablon,tab_numer;
end;
return;
end;
end;
end;
end;
local szablon;local tab_numer;
if(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then
szablon,tab_numer=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,p.ZamienianiePobierzNaKod,true);
end;
if(not szablon)then
if(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then
szablon,tab_numer=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,p.ZamienianiePobierzNaKod,false);
end;
end;
if(szablon)then return szablon,tab_numer;end;
return nil;
end;
function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)
local tablica_szablonu_tekstu_korzystanych=tablica_zmiennych.tablica_szablonu_tekstu_korzystanych;
for _,pozycja in ipairs(tablica_szablonu_tekstu_korzystanych)do
local __obiekt=pozycja[3][2];
local __kod=pozycja[3][3];
if((obiekt==__obiekt)and(kod==__kod))then
local tabela_parametrow_szablonu=pozycja[3][1][1];
local tekst=p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu);
if(tekst)then return tekst;end;
return nil;
end;
end;
return nil;
end;
function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)
if((not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)and(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych))then return nil;end;
if(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then
local function TempFunc(tablica_szablonu_tekstu)
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local tab_pobierz=pozycja[2];
for _,value in ipairs(tab_pobierz)do
return true;
end;
end;
return nil;
end;
if((not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)and(not TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)))then return nil;end;
end;
local stronicowyparser_obiekty_modul=require("Module:StronicowyParser/obiekty");
local tab_pobierz_szablonu_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
local tab_szablony_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu;
local czy_pobierz=nil;
local szablonowe_modul=require("Module:Szablonowe");
local ___tabela_parametrow_szablonu;
tekst_rozwiniety_calego_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(czy_pobierz)then
szablon,tab_numer=p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,___tabela_parametrow_szablonu,tablica_zmiennych);
if(szablon)then
IterowaniePoElementachTekstu(szablon,tab_numer);
end;
else
szablon=p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych);
end;
if(szablon)then return szablon;end;
return nil;
end,nil,
function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
----
if(tab_pobierz_szablonu_tekstu[nazwa_szablonu])then
czy_pobierz=true;
___tabela_parametrow_szablonu=tabela_parametrow_szablonu;
return true;
elseif(tab_szablony_tekstu[nazwa_szablonu])then
czy_pobierz=false;
return true;
end;
return nil;
end);
if(wynik)then return wynik;end;
end;
return nil;
end);
return tekst_rozwiniety_calego_artykulu;
end;
return p;
7bntsevkvxjdghlfzc9k1isvprltj79
558407
558406
2026-10-03T11:29:40Z
Persino
2851
558407
Scribunto
text/plain
local p={};
p["KopiujRekurencyjnieTabelęElementówSzablonuTekstu"]=function(szablon,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local szablonowe_modul=require("Module:Szablonowe");
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul);
local __tablica_analizy_obiektow_strony_dany_modul={};
local __tablica_danych_parametrow_szablonu_strony={};
local szablonowe_dane_modul=require("Module:Szablonowe/dane");
local function TemFunc(tab_co)
local __metatablica={};
szablonowe_dane_modul.MetaTabelkaSzablonowe(__metatablica);
setmetatable(tab_co,__metatablica);
end;
for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do
__tablica_analizy_obiektow_strony_dany_modul[obiekt]={};
TemFunc(__tablica_analizy_obiektow_strony_dany_modul[obiekt]);
end;
for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do
__tablica_analizy_obiektow_strony_dany_modul[obiekt]={};
TemFunc(__tablica_analizy_obiektow_strony_dany_modul[obiekt]);
end;
local parametry_modul=require("Module:Parametry");
local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
for szablon,obiekt,kod in iterator do
__tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
local tab_obiekt=tab_analiza[obiekt];
if(tab_obiekt)then
for _,wartosc in pairs(tab_obiekt)do
local tab_element_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc];
if(tab_element_wartosc)then
local tab_elements_kod=tablica_danych_parametrow_szablonu_strony[wartosc][kod];
if(tab_elements_kod)then
if(not __tablica_danych_parametrow_szablonu_strony[wartosc])then
__tablica_danych_parametrow_szablonu_strony[wartosc]={};
end;
if(parametry_modul.TypeTable(tab_elements_kod))then
__tablica_danych_parametrow_szablonu_strony[wartosc][kod]=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tab_elements_kod);
else
__tablica_danych_parametrow_szablonu_strony[wartosc][kod]=tab_elements_kod;
end;
end;
end;
end;
end;
end;
return __tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony;
end;
p.PreparowanieSzablonoweLinkoweSzablonuTekstu=function(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu)
--if(true)then return tekst;end;
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local szablony_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane;
local numerowane_obiekty=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty;
local nienumerowane_obiekty_napisu_wprowadzenia_tekstu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu;
local nienumerowane_obiekty_tekstu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
----
tablica_analizy_obiektow_strony_dany_modul=tablica_analizy_obiektow_strony_dany_modul or __tablica_analizy_obiektow_strony_dany_modul;
tablica_danych_parametrow_szablonu_strony=tablica_danych_parametrow_szablonu_strony or __tablica_danych_parametrow_szablonu_strony;
----
local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
--if(true)then return nil,true;end;
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,__tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,
function(__tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(szablony_tekstu[nazwa_szablonu])then
local tekst=p.ParametrTekstowySzablonuTekstu(__tabela_parametrow_szablonu);
local bez_preprocess=p.SzablonTekstuBezPreProcess(__tabela_parametrow_szablonu);
local czy_bez_preprocess=parametry_modul.CzyTak(bez_preprocess);
----
tabela_parametrow_szablonu=tabela_parametrow_szablonu or __tabela_parametrow_szablonu;
local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod)
if(obiekt=="ZMIENNA")then
local klucz=mw.ustring.match(szablon,"^%{%{%{%s*klucz(%d*)%s*%|.*%}%}%}$") or mw.ustring.match(szablon,"^%{%{%{%s*klucz(%d*)%s*%}%}%}$");
if(klucz)then
if((klucz=="")or(mw.ustring.match(klucz,"^[1-9]%d*$")))then
local wartosc_klucz=tabela_parametrow_szablonu["klucz"..klucz];
wartosc_klucz=wartosc_klucz and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(wartosc_klucz,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true,true) or wartosc_klucz;
if(wartosc_klucz)then return wartosc_klucz;end;
end;
end;
end;
return nil,true;
end);
local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,__tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(
(numerowane_obiekty[nazwa_szablonu])
or(nienumerowane_obiekty_napisu_wprowadzenia_tekstu[nazwa_szablonu])
or(nienumerowane_obiekty_tekstu[nazwa_szablonu])
)then
local uchwyt=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1];
local nazwa_artykulu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[2];
local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[3];
local status;
if(uchwyt)then
local __uchwyt_tekstu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(uchwyt,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true);
status=status or __uchwyt_tekstu;
uchwyt=__uchwyt_tekstu or uchwyt;
end;
if(nazwa_artykulu)then
local __nazwa_artykulu_tekstu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(nazwa_artykulu,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true);
status=status or __nazwa_artykulu_tekstu;
nazwa_artykulu=__nazwa_artykulu_tekstu or nazwa_artykulu;
end;
if(nazwa_ksiazki)then
local __nazwa_ksiazki_tekstu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(nazwa_ksiazki,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true);
status=status or __nazwa_ksiazki_tekstu;
nazwa_ksiazki=__nazwa_ksiazki_tekstu or nazwa_ksiazki;
end;
--[[if(
(status)
or(
(not czy_bez_preprocess)
and(((not nazwa_artykulu)and(nazwa_artykulu_tekstu))or((not nazwa_ksiazki)and(nazwa_modulu_ksiazki_tekstu)))
)
)then]]
tabela_parametrow_szablonu["uchwyt"]=uchwyt;tabela_parametrow_szablonu[1]=nil;
tabela_parametrow_szablonu["nazwa artykułu"]=nazwa_artykulu or (not czy_bez_preprocess)and nazwa_artykulu_tekstu or nil;tabela_parametrow_szablonu[2]=nil;
tabela_parametrow_szablonu["nazwa książki"]=nazwa_ksiazki or (not czy_bez_preprocess) and nazwa_modulu_ksiazki_tekstu or nil;tabela_parametrow_szablonu[3]=nil;
local szablon=szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,false);
__tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
__tablica_danych_parametrow_szablonu_strony[1][kod].parametry=nil;
--[[end;]]
end;
return nil;
end);
end;
return nil,true;
end);
end;
end);
end;
return nil,true;
end,nil,
function(szablon,obiekt,kod,poziom_iteracji,tekst)
if(poziom_iteracji>0)then
return nil;
end;
return szablon;
end);
return tekst;
end;
function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu)
local tekst=tabela_parametrow_szablonu["tekst"] or tabela_parametrow_szablonu["treść"] or tabela_parametrow_szablonu[1];
return tekst;
end;
function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu)
return tabela_parametrow_szablonu["bez preprocess"];
end;
function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2)
if(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end;
for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)do
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,pozycja);
end;
end;
end;
function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany)
if(not czy_artykul_korzystany)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{
{wartosc_elementu,lista_dwuelementowa,},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
{tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,},
});
else
if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{
{wartosc_elementu,lista_dwuelementowa,},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
{tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,},
});
end;
end;
function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)
local tablica_szablonu_tekstu;
if(czy_artykul_korzystany)then
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych;
else
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych;
end;
if(tablica_szablonu_tekstu)then
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local nazwa_obiektu_tekstu=pozycja[1][1];
local uchwyt_obiektu_tekstu=pozycja[1][2][1];
if((nazwa_obiektu_tekstu==nazwa_obiektu)and(uchwyt_obiektu_tekstu==uchwyt_obiektu))then
local dodatkowe_elementy=pozycja[2];
local czy_tak=false;
for _,pozycja_dodatkowe in ipairs(dodatkowe_elementy)do
if((pozycja_dodatkowe[1]==obiekt)and(pozycja_dodatkowe[2]==kod))then
czy_tak=true;
break;
end;
end;
if(not czy_tak)then
local tab_numer;
if(tablica_zmiennych)then
tab_numer={};
for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do
tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name];
end;
end;
table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer});
break;
end;
end;
end;
end;
end;
function p.UstawPobierzKorzystanie(tablica_zmiennych2)
if(tablica_zmiennych2.tablica_szablonu_tekstu_linkowe_korzystane)then
for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_linkowe_korzystane)do
if(not pozycja[3])then
pozycja[3]=true;
local nazwa_obiektu=pozycja[1][1];
local uchwyt_obiektu=pozycja[1][2];
local obiekt=pozycja[2][1];
local kod=pozycja[2][2];
p.UstawianiePobierz(nil,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,true);
end;
end;
end;
end;
function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane)
local __tablica_analizy_obiektow_strony_dany_modul=(pozycja[4] or{})[1] or tablica_analizy_obiektow_strony_dany_modul;
local __tablica_danych_parametrow_szablonu_strony=(pozycja[4] or {})[2] or tablica_danych_parametrow_szablonu_strony;
local __obiekt=(pozycja[3] or {})[2];
local __kod=(pozycja[3] or {})[3];
local __szablon=__tablica_analizy_obiektow_strony_dany_modul[__obiekt][__kod];
local szablonowe_modul=require("Module:Szablonowe");
local nazwa_artykulu_tekstu;local nazwa_modulu_ksiazki_tekstu;
nazwa_artykulu_tekstu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[2];
nazwa_modulu_ksiazki_tekstu=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[3];
local parametry_modul=require("Module:Parametry");
local __tablica_analizy_obiektow_strony_dany_modul=parametry_modul["KopiujRekurencyjnieTabelęElementów"](__tablica_analizy_obiektow_strony_dany_modul);
local __tablica_danych_parametrow_szablonu_strony=parametry_modul["KopiujRekurencyjnieTabelęElementów"](__tablica_danych_parametrow_szablonu_strony);
local tekst_szablon=p.PreparowanieSzablonoweLinkoweSzablonuTekstu(szablonowe_modul.NormaKoduKodowaniaTekstu(__obiekt,__kod),nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu);
local __tabela_parametrow_szablonu=pozycja[3][1][1];
----
local tekst=p.ParametrTekstowySzablonuTekstu(__tabela_parametrow_szablonu);
if(tekst)then
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
----
local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
--local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul);
local tab_numer={};
local tab_tak={};
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod,poziom_iteracji,_,obiekt_rodzica,kod_rodzica,szablon_rodzica,_,_,poziom_iteracji_rodzica)
obiekt_rodzica=obiekt_rodzica or true;
kod_rodzica=kod_rodzica or true;
local tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica];
if(not tab_tak_obiekt_rodzica)then tab_tak[obiekt_rodzica]={};tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica]end;
local tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica];
if(not tab_tak_kod_rodzica)then tab_tak_obiekt_rodzica[kod_rodzica]={};tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica]end;
local czy_tak=tab_tak_kod_rodzica[obiekt];
tab_tak_kod_rodzica[obiekt]=true;
tab_numer[obiekt]=tab_numer[obiekt] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt);
local max_numer=tab_numer[obiekt];
local kod_temp=kod+max_numer;
--tablica_analizy_obiektow_strony_dany_modul[obiekt][kod_temp]=szablon;
local ile;
if(not czy_tak)then
szablon_rodzica,ile=mw.ustring.gsub(szablon_rodzica,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt),function(kod)
kod=tonumber(kod) or nil;
return szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod+max_numer);
end);
end;
local TempFunc=function(tablica_danych_parametrow_szablonu_strony,kod)
local tab_obiekt=tab_analiza[obiekt];
if(tab_obiekt)then
for _, wartosc in pairs(tab_obiekt)do
local tab_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc];
if(not tab_wartosc)then
tablica_danych_parametrow_szablonu_strony[wartosc]={};
end;
local stara_tabelka=(__tablica_danych_parametrow_szablonu_strony[wartosc] or {})[kod];
local nowa_tabelka=parametry_modul.TypeTable(stara_tabelka) and parametry_modul["KopiujRekurencyjnieTabelęElementów"](stara_tabelka) or stara_tabelka;
tablica_danych_parametrow_szablonu_strony[wartosc][kod_temp]=nowa_tabelka;
end;
end;
end;
TempFunc(tablica_danych_parametrow_szablonu_strony,kod);
if(poziom_iteracji>0)then
tab_numer[obiekt_rodzica]=tab_numer[obiekt_rodzica] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt_rodzica);
local max_numer_rodzica=tab_numer[obiekt_rodzica];
kod_rodzica=kod_rodzica+max_numer_rodzica;
end;
if(not czy_tak)then
return nil,szablon,obiekt,kod_temp,szablon_rodzica,obiekt_rodzica,kod_rodzica,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica;
else
return nil,szablon,obiekt,kod_temp,nil,nil,nil,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica;
end;
return;
end);
return tekst;
----
end;
return;
end;
function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych)
local function TempFunc(tablica_szablonu_tekstu,__funkcja,czy_korzystane)
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local tab_obiekty=pozycja[2];
for _,pozycja2 in ipairs(tab_obiekty)do
local __obiekt=pozycja2[1];
local __kod=pozycja2[2];
if((__obiekt==obiekt)and(__kod==kod))then
local szablon=__funkcja(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane);
if(szablon)then
tab_numer=pozycja2[3];
return szablon,tab_numer;
end;
return;
end;
end;
end;
end;
local szablon;local tab_numer;
if(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then
szablon,tab_numer=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,p.ZamienianiePobierzNaKod,true);
end;
if(not szablon)then
if(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then
szablon,tab_numer=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,p.ZamienianiePobierzNaKod,false);
end;
end;
if(szablon)then return szablon,tab_numer;end;
return nil;
end;
function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)
local tablica_szablonu_tekstu_korzystanych=tablica_zmiennych.tablica_szablonu_tekstu_korzystanych;
for _,pozycja in ipairs(tablica_szablonu_tekstu_korzystanych)do
local __obiekt=pozycja[3][2];
local __kod=pozycja[3][3];
if((obiekt==__obiekt)and(kod==__kod))then
local tabela_parametrow_szablonu=pozycja[3][1][1];
local tekst=p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu);
if(tekst)then return tekst;end;
return nil;
end;
end;
return nil;
end;
function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)
if((not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)and(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych))then return nil;end;
if(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then
local function TempFunc(tablica_szablonu_tekstu)
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local tab_pobierz=pozycja[2];
for _,value in ipairs(tab_pobierz)do
return true;
end;
end;
return nil;
end;
if((not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)and(not TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)))then return nil;end;
end;
local stronicowyparser_obiekty_modul=require("Module:StronicowyParser/obiekty");
local tab_pobierz_szablonu_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
local tab_szablony_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu;
local czy_pobierz=nil;
local szablonowe_modul=require("Module:Szablonowe");
local ___tabela_parametrow_szablonu;
tekst_rozwiniety_calego_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(czy_pobierz)then
szablon,tab_numer=p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,___tabela_parametrow_szablonu,tablica_zmiennych);
if(szablon)then
IterowaniePoElementachTekstu(szablon,tab_numer);
end;
else
szablon=p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych);
end;
if(szablon)then return szablon;end;
return nil;
end,nil,
function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
----
if(tab_pobierz_szablonu_tekstu[nazwa_szablonu])then
czy_pobierz=true;
___tabela_parametrow_szablonu=tabela_parametrow_szablonu;
return true;
elseif(tab_szablony_tekstu[nazwa_szablonu])then
czy_pobierz=false;
return true;
end;
return nil;
end);
if(wynik)then return wynik;end;
end;
return nil;
end);
return tekst_rozwiniety_calego_artykulu;
end;
return p;
qvyadf0lueim639vh8uj53byubunjlm
558409
558407
2026-10-03T11:34:44Z
Persino
2851
558409
Scribunto
text/plain
local p={};
p["KopiujRekurencyjnieTabelęElementówSzablonuTekstu"]=function(szablon,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local szablonowe_modul=require("Module:Szablonowe");
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul);
local __tablica_analizy_obiektow_strony_dany_modul={};
local __tablica_danych_parametrow_szablonu_strony={};
local szablonowe_potrzebne_modul=require("Module:Szablonowe/Potrzebne");
local function TemFunc(tab_co)
local __metatablica={};
szablonowe_potrzebne_modul.MetaTabelkaSzablonowe(__metatablica);
setmetatable(tab_co,__metatablica);
end;
local szablonowe_dane_modul=require("Module:Szablonowe/dane");
for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do
__tablica_analizy_obiektow_strony_dany_modul[obiekt]={};
TemFunc(__tablica_analizy_obiektow_strony_dany_modul[obiekt]);
end;
for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do
__tablica_analizy_obiektow_strony_dany_modul[obiekt]={};
TemFunc(__tablica_analizy_obiektow_strony_dany_modul[obiekt]);
end;
local parametry_modul=require("Module:Parametry");
local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
for szablon,obiekt,kod in iterator do
__tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
local tab_obiekt=tab_analiza[obiekt];
if(tab_obiekt)then
for _,wartosc in pairs(tab_obiekt)do
local tab_element_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc];
if(tab_element_wartosc)then
local tab_elements_kod=tablica_danych_parametrow_szablonu_strony[wartosc][kod];
if(tab_elements_kod)then
if(not __tablica_danych_parametrow_szablonu_strony[wartosc])then
__tablica_danych_parametrow_szablonu_strony[wartosc]={};
end;
if(parametry_modul.TypeTable(tab_elements_kod))then
__tablica_danych_parametrow_szablonu_strony[wartosc][kod]=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tab_elements_kod);
else
__tablica_danych_parametrow_szablonu_strony[wartosc][kod]=tab_elements_kod;
end;
end;
end;
end;
end;
end;
return __tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony;
end;
p.PreparowanieSzablonoweLinkoweSzablonuTekstu=function(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu)
--if(true)then return tekst;end;
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local szablony_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane;
local numerowane_obiekty=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty;
local nienumerowane_obiekty_napisu_wprowadzenia_tekstu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu;
local nienumerowane_obiekty_tekstu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
----
tablica_analizy_obiektow_strony_dany_modul=tablica_analizy_obiektow_strony_dany_modul or __tablica_analizy_obiektow_strony_dany_modul;
tablica_danych_parametrow_szablonu_strony=tablica_danych_parametrow_szablonu_strony or __tablica_danych_parametrow_szablonu_strony;
----
local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
--if(true)then return nil,true;end;
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,__tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,
function(__tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(szablony_tekstu[nazwa_szablonu])then
local tekst=p.ParametrTekstowySzablonuTekstu(__tabela_parametrow_szablonu);
local bez_preprocess=p.SzablonTekstuBezPreProcess(__tabela_parametrow_szablonu);
local czy_bez_preprocess=parametry_modul.CzyTak(bez_preprocess);
----
tabela_parametrow_szablonu=tabela_parametrow_szablonu or __tabela_parametrow_szablonu;
local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod)
if(obiekt=="ZMIENNA")then
local klucz=mw.ustring.match(szablon,"^%{%{%{%s*klucz(%d*)%s*%|.*%}%}%}$") or mw.ustring.match(szablon,"^%{%{%{%s*klucz(%d*)%s*%}%}%}$");
if(klucz)then
if((klucz=="")or(mw.ustring.match(klucz,"^[1-9]%d*$")))then
local wartosc_klucz=tabela_parametrow_szablonu["klucz"..klucz];
wartosc_klucz=wartosc_klucz and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(wartosc_klucz,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true,true) or wartosc_klucz;
if(wartosc_klucz)then return wartosc_klucz;end;
end;
end;
end;
return nil,true;
end);
local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,__tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(
(numerowane_obiekty[nazwa_szablonu])
or(nienumerowane_obiekty_napisu_wprowadzenia_tekstu[nazwa_szablonu])
or(nienumerowane_obiekty_tekstu[nazwa_szablonu])
)then
local uchwyt=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1];
local nazwa_artykulu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[2];
local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[3];
local status;
if(uchwyt)then
local __uchwyt_tekstu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(uchwyt,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true);
status=status or __uchwyt_tekstu;
uchwyt=__uchwyt_tekstu or uchwyt;
end;
if(nazwa_artykulu)then
local __nazwa_artykulu_tekstu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(nazwa_artykulu,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true);
status=status or __nazwa_artykulu_tekstu;
nazwa_artykulu=__nazwa_artykulu_tekstu or nazwa_artykulu;
end;
if(nazwa_ksiazki)then
local __nazwa_ksiazki_tekstu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(nazwa_ksiazki,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true);
status=status or __nazwa_ksiazki_tekstu;
nazwa_ksiazki=__nazwa_ksiazki_tekstu or nazwa_ksiazki;
end;
--[[if(
(status)
or(
(not czy_bez_preprocess)
and(((not nazwa_artykulu)and(nazwa_artykulu_tekstu))or((not nazwa_ksiazki)and(nazwa_modulu_ksiazki_tekstu)))
)
)then]]
tabela_parametrow_szablonu["uchwyt"]=uchwyt;tabela_parametrow_szablonu[1]=nil;
tabela_parametrow_szablonu["nazwa artykułu"]=nazwa_artykulu or (not czy_bez_preprocess)and nazwa_artykulu_tekstu or nil;tabela_parametrow_szablonu[2]=nil;
tabela_parametrow_szablonu["nazwa książki"]=nazwa_ksiazki or (not czy_bez_preprocess) and nazwa_modulu_ksiazki_tekstu or nil;tabela_parametrow_szablonu[3]=nil;
local szablon=szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,false);
__tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
__tablica_danych_parametrow_szablonu_strony[1][kod].parametry=nil;
--[[end;]]
end;
return nil;
end);
end;
return nil,true;
end);
end;
end);
end;
return nil,true;
end,nil,
function(szablon,obiekt,kod,poziom_iteracji,tekst)
if(poziom_iteracji>0)then
return nil;
end;
return szablon;
end);
return tekst;
end;
function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu)
local tekst=tabela_parametrow_szablonu["tekst"] or tabela_parametrow_szablonu["treść"] or tabela_parametrow_szablonu[1];
return tekst;
end;
function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu)
return tabela_parametrow_szablonu["bez preprocess"];
end;
function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2)
if(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end;
for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)do
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,pozycja);
end;
end;
end;
function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany)
if(not czy_artykul_korzystany)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{
{wartosc_elementu,lista_dwuelementowa,},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
{tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,},
});
else
if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{
{wartosc_elementu,lista_dwuelementowa,},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
{tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,},
});
end;
end;
function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)
local tablica_szablonu_tekstu;
if(czy_artykul_korzystany)then
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych;
else
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych;
end;
if(tablica_szablonu_tekstu)then
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local nazwa_obiektu_tekstu=pozycja[1][1];
local uchwyt_obiektu_tekstu=pozycja[1][2][1];
if((nazwa_obiektu_tekstu==nazwa_obiektu)and(uchwyt_obiektu_tekstu==uchwyt_obiektu))then
local dodatkowe_elementy=pozycja[2];
local czy_tak=false;
for _,pozycja_dodatkowe in ipairs(dodatkowe_elementy)do
if((pozycja_dodatkowe[1]==obiekt)and(pozycja_dodatkowe[2]==kod))then
czy_tak=true;
break;
end;
end;
if(not czy_tak)then
local tab_numer;
if(tablica_zmiennych)then
tab_numer={};
for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do
tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name];
end;
end;
table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer});
break;
end;
end;
end;
end;
end;
function p.UstawPobierzKorzystanie(tablica_zmiennych2)
if(tablica_zmiennych2.tablica_szablonu_tekstu_linkowe_korzystane)then
for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_linkowe_korzystane)do
if(not pozycja[3])then
pozycja[3]=true;
local nazwa_obiektu=pozycja[1][1];
local uchwyt_obiektu=pozycja[1][2];
local obiekt=pozycja[2][1];
local kod=pozycja[2][2];
p.UstawianiePobierz(nil,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,true);
end;
end;
end;
end;
function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane)
local __tablica_analizy_obiektow_strony_dany_modul=(pozycja[4] or{})[1] or tablica_analizy_obiektow_strony_dany_modul;
local __tablica_danych_parametrow_szablonu_strony=(pozycja[4] or {})[2] or tablica_danych_parametrow_szablonu_strony;
local __obiekt=(pozycja[3] or {})[2];
local __kod=(pozycja[3] or {})[3];
local __szablon=__tablica_analizy_obiektow_strony_dany_modul[__obiekt][__kod];
local szablonowe_modul=require("Module:Szablonowe");
local nazwa_artykulu_tekstu;local nazwa_modulu_ksiazki_tekstu;
nazwa_artykulu_tekstu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[2];
nazwa_modulu_ksiazki_tekstu=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[3];
local parametry_modul=require("Module:Parametry");
local __tablica_analizy_obiektow_strony_dany_modul=parametry_modul["KopiujRekurencyjnieTabelęElementów"](__tablica_analizy_obiektow_strony_dany_modul);
local __tablica_danych_parametrow_szablonu_strony=parametry_modul["KopiujRekurencyjnieTabelęElementów"](__tablica_danych_parametrow_szablonu_strony);
local tekst_szablon=p.PreparowanieSzablonoweLinkoweSzablonuTekstu(szablonowe_modul.NormaKoduKodowaniaTekstu(__obiekt,__kod),nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu);
local __tabela_parametrow_szablonu=pozycja[3][1][1];
----
local tekst=p.ParametrTekstowySzablonuTekstu(__tabela_parametrow_szablonu);
if(tekst)then
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
----
local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
--local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul);
local tab_numer={};
local tab_tak={};
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod,poziom_iteracji,_,obiekt_rodzica,kod_rodzica,szablon_rodzica,_,_,poziom_iteracji_rodzica)
obiekt_rodzica=obiekt_rodzica or true;
kod_rodzica=kod_rodzica or true;
local tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica];
if(not tab_tak_obiekt_rodzica)then tab_tak[obiekt_rodzica]={};tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica]end;
local tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica];
if(not tab_tak_kod_rodzica)then tab_tak_obiekt_rodzica[kod_rodzica]={};tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica]end;
local czy_tak=tab_tak_kod_rodzica[obiekt];
tab_tak_kod_rodzica[obiekt]=true;
tab_numer[obiekt]=tab_numer[obiekt] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt);
local max_numer=tab_numer[obiekt];
local kod_temp=kod+max_numer;
--tablica_analizy_obiektow_strony_dany_modul[obiekt][kod_temp]=szablon;
local ile;
if(not czy_tak)then
szablon_rodzica,ile=mw.ustring.gsub(szablon_rodzica,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt),function(kod)
kod=tonumber(kod) or nil;
return szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod+max_numer);
end);
end;
local TempFunc=function(tablica_danych_parametrow_szablonu_strony,kod)
local tab_obiekt=tab_analiza[obiekt];
if(tab_obiekt)then
for _, wartosc in pairs(tab_obiekt)do
local tab_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc];
if(not tab_wartosc)then
tablica_danych_parametrow_szablonu_strony[wartosc]={};
end;
local stara_tabelka=(__tablica_danych_parametrow_szablonu_strony[wartosc] or {})[kod];
local nowa_tabelka=parametry_modul.TypeTable(stara_tabelka) and parametry_modul["KopiujRekurencyjnieTabelęElementów"](stara_tabelka) or stara_tabelka;
tablica_danych_parametrow_szablonu_strony[wartosc][kod_temp]=nowa_tabelka;
end;
end;
end;
TempFunc(tablica_danych_parametrow_szablonu_strony,kod);
if(poziom_iteracji>0)then
tab_numer[obiekt_rodzica]=tab_numer[obiekt_rodzica] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt_rodzica);
local max_numer_rodzica=tab_numer[obiekt_rodzica];
kod_rodzica=kod_rodzica+max_numer_rodzica;
end;
if(not czy_tak)then
return nil,szablon,obiekt,kod_temp,szablon_rodzica,obiekt_rodzica,kod_rodzica,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica;
else
return nil,szablon,obiekt,kod_temp,nil,nil,nil,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica;
end;
return;
end);
return tekst;
----
end;
return;
end;
function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych)
local function TempFunc(tablica_szablonu_tekstu,__funkcja,czy_korzystane)
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local tab_obiekty=pozycja[2];
for _,pozycja2 in ipairs(tab_obiekty)do
local __obiekt=pozycja2[1];
local __kod=pozycja2[2];
if((__obiekt==obiekt)and(__kod==kod))then
local szablon=__funkcja(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane);
if(szablon)then
tab_numer=pozycja2[3];
return szablon,tab_numer;
end;
return;
end;
end;
end;
end;
local szablon;local tab_numer;
if(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then
szablon,tab_numer=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,p.ZamienianiePobierzNaKod,true);
end;
if(not szablon)then
if(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then
szablon,tab_numer=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,p.ZamienianiePobierzNaKod,false);
end;
end;
if(szablon)then return szablon,tab_numer;end;
return nil;
end;
function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)
local tablica_szablonu_tekstu_korzystanych=tablica_zmiennych.tablica_szablonu_tekstu_korzystanych;
for _,pozycja in ipairs(tablica_szablonu_tekstu_korzystanych)do
local __obiekt=pozycja[3][2];
local __kod=pozycja[3][3];
if((obiekt==__obiekt)and(kod==__kod))then
local tabela_parametrow_szablonu=pozycja[3][1][1];
local tekst=p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu);
if(tekst)then return tekst;end;
return nil;
end;
end;
return nil;
end;
function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)
if((not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)and(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych))then return nil;end;
if(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then
local function TempFunc(tablica_szablonu_tekstu)
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local tab_pobierz=pozycja[2];
for _,value in ipairs(tab_pobierz)do
return true;
end;
end;
return nil;
end;
if((not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)and(not TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)))then return nil;end;
end;
local stronicowyparser_obiekty_modul=require("Module:StronicowyParser/obiekty");
local tab_pobierz_szablonu_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
local tab_szablony_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu;
local czy_pobierz=nil;
local szablonowe_modul=require("Module:Szablonowe");
local ___tabela_parametrow_szablonu;
tekst_rozwiniety_calego_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(czy_pobierz)then
szablon,tab_numer=p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,___tabela_parametrow_szablonu,tablica_zmiennych);
if(szablon)then
IterowaniePoElementachTekstu(szablon,tab_numer);
end;
else
szablon=p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych);
end;
if(szablon)then return szablon;end;
return nil;
end,nil,
function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
----
if(tab_pobierz_szablonu_tekstu[nazwa_szablonu])then
czy_pobierz=true;
___tabela_parametrow_szablonu=tabela_parametrow_szablonu;
return true;
elseif(tab_szablony_tekstu[nazwa_szablonu])then
czy_pobierz=false;
return true;
end;
return nil;
end);
if(wynik)then return wynik;end;
end;
return nil;
end);
return tekst_rozwiniety_calego_artykulu;
end;
return p;
210856lugdr5pa5rw8fbios4zmly7ux
558411
558409
2026-10-03T11:38:34Z
Persino
2851
558411
Scribunto
text/plain
local p={};
p["KopiujRekurencyjnieTabelęElementówSzablonuTekstu"]=function(szablon,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
if(true)then
local parametry_modul=require("Module:Parametry");
local tablica_analizy_obiektow_strony_dany_modul_stare=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_analizy_obiektow_strony_dany_modul);
local tablica_danych_parametrow_szablonu_strony_stare=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_danych_parametrow_szablonu_strony);
return tablica_analizy_obiektow_strony_dany_modul_stare,tablica_danych_parametrow_szablonu_strony_stare;
end;
local szablonowe_modul=require("Module:Szablonowe");
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul);
local __tablica_analizy_obiektow_strony_dany_modul={};
local __tablica_danych_parametrow_szablonu_strony={};
local szablonowe_potrzebne_modul=require("Module:Szablonowe/Potrzebne");
local function TemFunc(tab_co)
local __metatablica={};
szablonowe_potrzebne_modul.MetaTabelkaSzablonowe(__metatablica);
setmetatable(tab_co,__metatablica);
end;
local szablonowe_dane_modul=require("Module:Szablonowe/dane");
for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do
__tablica_analizy_obiektow_strony_dany_modul[obiekt]={};
TemFunc(__tablica_analizy_obiektow_strony_dany_modul[obiekt]);
end;
for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do
__tablica_analizy_obiektow_strony_dany_modul[obiekt]={};
TemFunc(__tablica_analizy_obiektow_strony_dany_modul[obiekt]);
end;
local parametry_modul=require("Module:Parametry");
local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
for szablon,obiekt,kod in iterator do
__tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
local tab_obiekt=tab_analiza[obiekt];
if(tab_obiekt)then
for _,wartosc in pairs(tab_obiekt)do
local tab_element_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc];
if(tab_element_wartosc)then
local tab_elements_kod=tablica_danych_parametrow_szablonu_strony[wartosc][kod];
if(tab_elements_kod)then
if(not __tablica_danych_parametrow_szablonu_strony[wartosc])then
__tablica_danych_parametrow_szablonu_strony[wartosc]={};
end;
if(parametry_modul.TypeTable(tab_elements_kod))then
__tablica_danych_parametrow_szablonu_strony[wartosc][kod]=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tab_elements_kod);
else
__tablica_danych_parametrow_szablonu_strony[wartosc][kod]=tab_elements_kod;
end;
end;
end;
end;
end;
end;
return __tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony;
end;
p.PreparowanieSzablonoweLinkoweSzablonuTekstu=function(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu)
--if(true)then return tekst;end;
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local szablony_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane;
local numerowane_obiekty=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty;
local nienumerowane_obiekty_napisu_wprowadzenia_tekstu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu;
local nienumerowane_obiekty_tekstu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
----
tablica_analizy_obiektow_strony_dany_modul=tablica_analizy_obiektow_strony_dany_modul or __tablica_analizy_obiektow_strony_dany_modul;
tablica_danych_parametrow_szablonu_strony=tablica_danych_parametrow_szablonu_strony or __tablica_danych_parametrow_szablonu_strony;
----
local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
--if(true)then return nil,true;end;
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,__tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,
function(__tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(szablony_tekstu[nazwa_szablonu])then
local tekst=p.ParametrTekstowySzablonuTekstu(__tabela_parametrow_szablonu);
local bez_preprocess=p.SzablonTekstuBezPreProcess(__tabela_parametrow_szablonu);
local czy_bez_preprocess=parametry_modul.CzyTak(bez_preprocess);
----
tabela_parametrow_szablonu=tabela_parametrow_szablonu or __tabela_parametrow_szablonu;
local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod)
if(obiekt=="ZMIENNA")then
local klucz=mw.ustring.match(szablon,"^%{%{%{%s*klucz(%d*)%s*%|.*%}%}%}$") or mw.ustring.match(szablon,"^%{%{%{%s*klucz(%d*)%s*%}%}%}$");
if(klucz)then
if((klucz=="")or(mw.ustring.match(klucz,"^[1-9]%d*$")))then
local wartosc_klucz=tabela_parametrow_szablonu["klucz"..klucz];
wartosc_klucz=wartosc_klucz and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(wartosc_klucz,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true,true) or wartosc_klucz;
if(wartosc_klucz)then return wartosc_klucz;end;
end;
end;
end;
return nil,true;
end);
local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,__tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(
(numerowane_obiekty[nazwa_szablonu])
or(nienumerowane_obiekty_napisu_wprowadzenia_tekstu[nazwa_szablonu])
or(nienumerowane_obiekty_tekstu[nazwa_szablonu])
)then
local uchwyt=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1];
local nazwa_artykulu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[2];
local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[3];
local status;
if(uchwyt)then
local __uchwyt_tekstu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(uchwyt,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true);
status=status or __uchwyt_tekstu;
uchwyt=__uchwyt_tekstu or uchwyt;
end;
if(nazwa_artykulu)then
local __nazwa_artykulu_tekstu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(nazwa_artykulu,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true);
status=status or __nazwa_artykulu_tekstu;
nazwa_artykulu=__nazwa_artykulu_tekstu or nazwa_artykulu;
end;
if(nazwa_ksiazki)then
local __nazwa_ksiazki_tekstu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(nazwa_ksiazki,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true);
status=status or __nazwa_ksiazki_tekstu;
nazwa_ksiazki=__nazwa_ksiazki_tekstu or nazwa_ksiazki;
end;
--[[if(
(status)
or(
(not czy_bez_preprocess)
and(((not nazwa_artykulu)and(nazwa_artykulu_tekstu))or((not nazwa_ksiazki)and(nazwa_modulu_ksiazki_tekstu)))
)
)then]]
tabela_parametrow_szablonu["uchwyt"]=uchwyt;tabela_parametrow_szablonu[1]=nil;
tabela_parametrow_szablonu["nazwa artykułu"]=nazwa_artykulu or (not czy_bez_preprocess)and nazwa_artykulu_tekstu or nil;tabela_parametrow_szablonu[2]=nil;
tabela_parametrow_szablonu["nazwa książki"]=nazwa_ksiazki or (not czy_bez_preprocess) and nazwa_modulu_ksiazki_tekstu or nil;tabela_parametrow_szablonu[3]=nil;
local szablon=szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,false);
__tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
__tablica_danych_parametrow_szablonu_strony[1][kod].parametry=nil;
--[[end;]]
end;
return nil;
end);
end;
return nil,true;
end);
end;
end);
end;
return nil,true;
end,nil,
function(szablon,obiekt,kod,poziom_iteracji,tekst)
if(poziom_iteracji>0)then
return nil;
end;
return szablon;
end);
return tekst;
end;
function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu)
local tekst=tabela_parametrow_szablonu["tekst"] or tabela_parametrow_szablonu["treść"] or tabela_parametrow_szablonu[1];
return tekst;
end;
function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu)
return tabela_parametrow_szablonu["bez preprocess"];
end;
function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2)
if(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end;
for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)do
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,pozycja);
end;
end;
end;
function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany)
if(not czy_artykul_korzystany)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{
{wartosc_elementu,lista_dwuelementowa,},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
{tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,},
});
else
if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{
{wartosc_elementu,lista_dwuelementowa,},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
{tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,},
});
end;
end;
function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)
local tablica_szablonu_tekstu;
if(czy_artykul_korzystany)then
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych;
else
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych;
end;
if(tablica_szablonu_tekstu)then
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local nazwa_obiektu_tekstu=pozycja[1][1];
local uchwyt_obiektu_tekstu=pozycja[1][2][1];
if((nazwa_obiektu_tekstu==nazwa_obiektu)and(uchwyt_obiektu_tekstu==uchwyt_obiektu))then
local dodatkowe_elementy=pozycja[2];
local czy_tak=false;
for _,pozycja_dodatkowe in ipairs(dodatkowe_elementy)do
if((pozycja_dodatkowe[1]==obiekt)and(pozycja_dodatkowe[2]==kod))then
czy_tak=true;
break;
end;
end;
if(not czy_tak)then
local tab_numer;
if(tablica_zmiennych)then
tab_numer={};
for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do
tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name];
end;
end;
table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer});
break;
end;
end;
end;
end;
end;
function p.UstawPobierzKorzystanie(tablica_zmiennych2)
if(tablica_zmiennych2.tablica_szablonu_tekstu_linkowe_korzystane)then
for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_linkowe_korzystane)do
if(not pozycja[3])then
pozycja[3]=true;
local nazwa_obiektu=pozycja[1][1];
local uchwyt_obiektu=pozycja[1][2];
local obiekt=pozycja[2][1];
local kod=pozycja[2][2];
p.UstawianiePobierz(nil,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,true);
end;
end;
end;
end;
function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane)
local __tablica_analizy_obiektow_strony_dany_modul=(pozycja[4] or{})[1] or tablica_analizy_obiektow_strony_dany_modul;
local __tablica_danych_parametrow_szablonu_strony=(pozycja[4] or {})[2] or tablica_danych_parametrow_szablonu_strony;
local __obiekt=(pozycja[3] or {})[2];
local __kod=(pozycja[3] or {})[3];
local __szablon=__tablica_analizy_obiektow_strony_dany_modul[__obiekt][__kod];
local szablonowe_modul=require("Module:Szablonowe");
local nazwa_artykulu_tekstu;local nazwa_modulu_ksiazki_tekstu;
nazwa_artykulu_tekstu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[2];
nazwa_modulu_ksiazki_tekstu=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[3];
local parametry_modul=require("Module:Parametry");
local __tablica_analizy_obiektow_strony_dany_modul=parametry_modul["KopiujRekurencyjnieTabelęElementów"](__tablica_analizy_obiektow_strony_dany_modul);
local __tablica_danych_parametrow_szablonu_strony=parametry_modul["KopiujRekurencyjnieTabelęElementów"](__tablica_danych_parametrow_szablonu_strony);
local tekst_szablon=p.PreparowanieSzablonoweLinkoweSzablonuTekstu(szablonowe_modul.NormaKoduKodowaniaTekstu(__obiekt,__kod),nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu);
local __tabela_parametrow_szablonu=pozycja[3][1][1];
----
local tekst=p.ParametrTekstowySzablonuTekstu(__tabela_parametrow_szablonu);
if(tekst)then
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
----
local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
--local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul);
local tab_numer={};
local tab_tak={};
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod,poziom_iteracji,_,obiekt_rodzica,kod_rodzica,szablon_rodzica,_,_,poziom_iteracji_rodzica)
obiekt_rodzica=obiekt_rodzica or true;
kod_rodzica=kod_rodzica or true;
local tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica];
if(not tab_tak_obiekt_rodzica)then tab_tak[obiekt_rodzica]={};tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica]end;
local tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica];
if(not tab_tak_kod_rodzica)then tab_tak_obiekt_rodzica[kod_rodzica]={};tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica]end;
local czy_tak=tab_tak_kod_rodzica[obiekt];
tab_tak_kod_rodzica[obiekt]=true;
tab_numer[obiekt]=tab_numer[obiekt] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt);
local max_numer=tab_numer[obiekt];
local kod_temp=kod+max_numer;
--tablica_analizy_obiektow_strony_dany_modul[obiekt][kod_temp]=szablon;
local ile;
if(not czy_tak)then
szablon_rodzica,ile=mw.ustring.gsub(szablon_rodzica,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt),function(kod)
kod=tonumber(kod) or nil;
return szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod+max_numer);
end);
end;
local TempFunc=function(tablica_danych_parametrow_szablonu_strony,kod)
local tab_obiekt=tab_analiza[obiekt];
if(tab_obiekt)then
for _, wartosc in pairs(tab_obiekt)do
local tab_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc];
if(not tab_wartosc)then
tablica_danych_parametrow_szablonu_strony[wartosc]={};
end;
local stara_tabelka=(__tablica_danych_parametrow_szablonu_strony[wartosc] or {})[kod];
local nowa_tabelka=parametry_modul.TypeTable(stara_tabelka) and parametry_modul["KopiujRekurencyjnieTabelęElementów"](stara_tabelka) or stara_tabelka;
tablica_danych_parametrow_szablonu_strony[wartosc][kod_temp]=nowa_tabelka;
end;
end;
end;
TempFunc(tablica_danych_parametrow_szablonu_strony,kod);
if(poziom_iteracji>0)then
tab_numer[obiekt_rodzica]=tab_numer[obiekt_rodzica] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt_rodzica);
local max_numer_rodzica=tab_numer[obiekt_rodzica];
kod_rodzica=kod_rodzica+max_numer_rodzica;
end;
if(not czy_tak)then
return nil,szablon,obiekt,kod_temp,szablon_rodzica,obiekt_rodzica,kod_rodzica,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica;
else
return nil,szablon,obiekt,kod_temp,nil,nil,nil,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica;
end;
return;
end);
return tekst;
----
end;
return;
end;
function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych)
local function TempFunc(tablica_szablonu_tekstu,__funkcja,czy_korzystane)
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local tab_obiekty=pozycja[2];
for _,pozycja2 in ipairs(tab_obiekty)do
local __obiekt=pozycja2[1];
local __kod=pozycja2[2];
if((__obiekt==obiekt)and(__kod==kod))then
local szablon=__funkcja(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane);
if(szablon)then
tab_numer=pozycja2[3];
return szablon,tab_numer;
end;
return;
end;
end;
end;
end;
local szablon;local tab_numer;
if(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then
szablon,tab_numer=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,p.ZamienianiePobierzNaKod,true);
end;
if(not szablon)then
if(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then
szablon,tab_numer=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,p.ZamienianiePobierzNaKod,false);
end;
end;
if(szablon)then return szablon,tab_numer;end;
return nil;
end;
function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)
local tablica_szablonu_tekstu_korzystanych=tablica_zmiennych.tablica_szablonu_tekstu_korzystanych;
for _,pozycja in ipairs(tablica_szablonu_tekstu_korzystanych)do
local __obiekt=pozycja[3][2];
local __kod=pozycja[3][3];
if((obiekt==__obiekt)and(kod==__kod))then
local tabela_parametrow_szablonu=pozycja[3][1][1];
local tekst=p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu);
if(tekst)then return tekst;end;
return nil;
end;
end;
return nil;
end;
function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)
if((not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)and(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych))then return nil;end;
if(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then
local function TempFunc(tablica_szablonu_tekstu)
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local tab_pobierz=pozycja[2];
for _,value in ipairs(tab_pobierz)do
return true;
end;
end;
return nil;
end;
if((not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)and(not TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)))then return nil;end;
end;
local stronicowyparser_obiekty_modul=require("Module:StronicowyParser/obiekty");
local tab_pobierz_szablonu_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
local tab_szablony_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu;
local czy_pobierz=nil;
local szablonowe_modul=require("Module:Szablonowe");
local ___tabela_parametrow_szablonu;
tekst_rozwiniety_calego_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(czy_pobierz)then
szablon,tab_numer=p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,___tabela_parametrow_szablonu,tablica_zmiennych);
if(szablon)then
IterowaniePoElementachTekstu(szablon,tab_numer);
end;
else
szablon=p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych);
end;
if(szablon)then return szablon;end;
return nil;
end,nil,
function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
----
if(tab_pobierz_szablonu_tekstu[nazwa_szablonu])then
czy_pobierz=true;
___tabela_parametrow_szablonu=tabela_parametrow_szablonu;
return true;
elseif(tab_szablony_tekstu[nazwa_szablonu])then
czy_pobierz=false;
return true;
end;
return nil;
end);
if(wynik)then return wynik;end;
end;
return nil;
end);
return tekst_rozwiniety_calego_artykulu;
end;
return p;
anjhjyw6766yj32lvb0pgjn7a24igvk
Wikibooks:Moduły/StronicowyParser/SzablonyTekstu
4
63669
558386
557785
2026-10-03T01:18:48Z
Persino
2851
/* {{Śródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}{{Code|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}} */
558386
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SzablonyTekstu}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Ten moduł służy do obsługi szablonów: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}.
* Szablony typu: {{Code|Śródtekst}} {{Patrz|Śródtekst}}, to są: {{s|Śródtekst}}.
** {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - to jest typ obiektu i jego numer szablonów typu: nie {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}.
* Szablony typu: {{Code|Pobierz}} {{Patrz|Pobierz}}, to są: {{s|PobierzŚródtekst}}.
** {{Code|Pobierz: obiekt}} {{Patrz|Pobierz: obiekt}} i {{Code|Pobierz: kod}} {{Patrz|Pobierz: kod}} - to jest typ obiektu i jego numer szablonów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}.
Szablony: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}, mają walidację błędów, więc mogą, oprócz parametrów standardowych, przyjmować zmienne o kluczach odpowiednio: {{Code|klucz}} (lub {{Code|klucz1}}), {{Code|klucz2}}, {{Code|klucz3}}, ..., itd.. Tych parametrów może być dowolna liczba, ale mogą być pomiędzy nimi przerwy.
; Zbieranie elementów typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, na stronie bieżącej, jak i dołączonej{{dk}}
'''{{ld|StronicowyParser|Stronicowy parser}}''' jak napotka szablon {{s|Śródtekst}}, to generuje tworzenie następujących tablic: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{Patrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, dla tych szablonów w artykule niekorzystanej, lub korzystanej według: {{Code|tablica_szablonu_tekstu_korzystanych}} {{Patrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, jako {{ZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}:
<syntaxhighlight lang="lua">
if(not czy_artykul_korzystany)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{
{wartosc_elementu,lista_dwuelementowa,},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
{tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,},
});
else
if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{
{wartosc_elementu,lista_dwuelementowa,},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
{tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,},
});
end;
</syntaxhighlight>
* Teb powyższy kod, to nic innego jak część definicji fukcji: {{LinkŚródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}, używaną do stawiaia tego, gdy napotkano szablony tytu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}.
; Strony niebieżące - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}} na stronie bieżącej, które odwołują się właśnie do tej niebieżącej{{dk}}
Drugi element wsadzanej tablicy za pomocą {{LzLua|table.insert}}, jest to nic innego, jak tablica zawierająca następne tablice, gdy tam jakiś element się pojawi, a ta operacja jest robina przez funkcję {{LinkŚródtytuł|p.UstawianiePobierz}} {{ZobaczTeż|p.UstawianiePobierz}}:
<syntaxhighlight lang="lua">
local tablica_szablonu_tekstu;
if(czy_artykul_korzystany)then
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych;
else
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych;
end;
if(tablica_szablonu_tekstu)then
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
...
local dodatkowe_elementy=pozycja[2];
...
if(not czy_tak)then
local tab_numer;
if(tablica_zmiennych)then
tab_numer={};
for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do
tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name];
end;
end;
table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer});
break;
</syntaxhighlight>
* gdzie: tabela: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}}, będąca podtabelą tabeli: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, to nic innego, jak zbiór tablic mniejszych dla posczególnych obiektów, tutaj nazwanych kluczami: {{Code|name}}, w tych mniejszych mieszczą się pojedyncze tabele, ktore pierwszym elementem jest uchwyt, a drugim jest sam tekst szablonu typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}.
* Tą funkcję używamy do zbierania informacji o inne stronie, dołączonej do aktualnej, w wyniku uruchomienia szablonu linku lub pobierania.
; Strony bieżące korzystane - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, które odwołują się do niej{{dk}}
Funkcja natomiast: {{LinkŚródtytuł|p.UstawianiePobierz}}, jest uruchamiana przez funkcję: {{LinkŚródtytuł|p.UstawPobierzKorzystanie}}, dla modułu bieżącego, która zbiera odpowiednie elementy pobierania (szablony typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}) w tablicach linkowych (pobierania) {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, to są tablice, aktualnej - bieżącej, strony, ta tablica jest tworzona sposobem, ale nie w tej funkcji, ta funkcja jedynie z tego korzysta, a ten kod poniżej jest używany, gdzie indziej w kodzie {{ZobaczTeż|p.LinkowanieFinalizowaniePrac}}:
<syntaxhighlight lang="lua">
if(czy_pobierz)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then
tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={};
end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},});
end;
</syntaxhighlight>
W tej tablicy mieszczą się informację, co do poszczególnych obiektów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jak: {{s|PobierzŚródtekst}}.
----
; Inne{{dk}}
Z tych tabel korzysta, nie tylko, szablon: {{s|Śródtekst}}, ale też i: {{s|PobierzŚródtekst}}, przy pomocy oprogramowania modułu: {{m|StronicowyParser}}, czy: {{m|StronicowyParser/}}.
== {{Śródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}{{Code|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}} ==
Funkcja służy do zastępowania parametrów, w szablonie typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, w zmiennych parametru: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}} lub {{Code|1}} {{LinkPatrz|1}}, w jego wartości, argumentów typu o wzorze ogólnym: {{Code|<nowiki>klucz%d*</nowiki>}} {{Patrz|klucz%d*}}, na odpowiednie wartości, ustawiane przez szablon w rodzaju: {{s|PobierzŚródtekst}} {{LinkPatrz|Pobierz}}, występujących w parametrach w wywołaniach jego szablonu lub bezpośrednio w tym pierwszym.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PreparowanieSzablonoweLinkoweSzablonuTekstu(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} {{Patrz|tekst-kod}} | _1 = Jest to kod bazy: {{Code|{{m|Szablonowe}}}}, o odpowiednim formacie,którego poszczególne elementy dzieci i potomków są modyfikowane.
| 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa strony w formacie wykonywalnym szablonów, względem innych przestrzeni.
| 3 = Parametry szablonu typu: {{s|Śródtekst}}, rodzaju: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}: | nagłówek3 = tak
| 4 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|stare__tablica_analizy_obiektow_strony_dany_modul}} | _4 = Baza danych szablonowa stworzona specjalnie dla szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, który jest dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tą funkcję.
| 5 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|stare___tablica_danych_parametrow_szablonu_strony}} | _5 = Tabela paremetrów rozwinieć bazy: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|stare__tablica_analizy_obiektow_strony_dany_modul}}, dzięki któremu uzyskuje się przyszybszenie stronicowego parsera. Jest ona dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tę funkcję.
| 6 = Parametry szablonu typu: {{s|PobierzŚródtekst}}, rodzaju: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla strony bieżącej: | nagłówek6 = tak
| 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. Jest to tabela parametrów szablonu.
| 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Jest to tablica bazy kodów parsowania: '''{{ld|Szablonowe|w bibliotece parsowania dowolnego wikikodu mechanizmu MediaWiki}}'''.
| 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Jest to baza parametrów rozwinieć, jak: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|stare___tablica_danych_parametrow_szablonu_strony}}, ale dla: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 10 = {{Code|nazwa_modulu_ksiazki_tekstu}} {{Patrz|nazwa_modulu_ksiazki_tekstu}} | _10 = Nazwa książki danej strony, jeśli istnieje, na którą wskazuje szablon typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, na odpowiedni szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}.
| 11 = {{Code|nazwa_artykulu_tekstu}} {{Patrz|nazwa_artykulu_tekstu}} | _11 = Nazwa artykułu danej strony, jeśli istnieje, na którą wskazuje szablon typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, na odpowiedni szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}.
}}
Zweacane parametry:
{{OpisParametrów
| 1 = Zwraca to samo, co jest tym: {{Code|tekst}} {{LinkPatrz|tekst-kod}} | komórka1 = tak
}}
== {{Śródtytuł|p.ParametrTekstowySzablonuTekstu}}{{Code|p.ParametrTekstowySzablonuTekstu}} ==
Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, tekstu o nazwie pierwszy z kolei, który istnieje, więc: {{Code|tekst}} {{Patrz|tekst}}, {{Code|treść}} {{Patrz|treść}} lub {{Code|1}} {{Patrz|1}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca:
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o różnych parametrach nazwanych lub nienazwanych.
}}
== {{Śródtytuł|p.SzablonTekstuBezPreProcess}}{{Code|p.SzablonTekstuBezPreProcess}} ==
Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, o nazwie {{Code|bez preprocess}} {{Patrz|bez preprocess}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca:
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o parametrach nazwanych lub nienazwanych.
}}
== {{Śródtytuł|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}}{{Code|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}} ==
Funkcja elementy tablicy: {{Code|tablica_zmiennych2}} {{Patrz|tablica_zmiennych2}}, przypisuje tablicy: {{Code|tablica_zmiennych}} {{Patrz|tablica_zmiennych}}, czyli do tego pierwszego dodaje elementy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, do tablicy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a jeżeli ta tablica nie istnieje, to jest tworzona:
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}, jest to tablica dla strony niekorzystanej.
| 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}, jest to tablica dla strony korzystanej, aktualnej strony, która jest wyświetlana na ekranie.
}}
== {{Śródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}{{Code|p.DodawanieDoBazyStronySzablonuTekstu}} ==
Szablon dodający elementy do tablicy bazy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, lub {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, tzn. do tablicy: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, jest równy wartości fałszywej, przeciwnie do: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tej samej tablicy co poprzednio. Te elementy są dodawane według następującego kodu: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}} lub {{LinkPatrz|tablica_zmiennych2}}.
| 2 = {{Code|wartosc_elementu}} {{Patrz|wartosc_elementu}} | _2 = Rodzaj elementu, jak: {{Code|Śródtekst}} {{Patrz|rodzaj: Śródtekst}}, dla jednego z szablonów tekstu.
| 3 = {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} | _3 = Tablica elementu tablicy zbierającej dane, element posiada tylko pierwszy element, który jest uchwytem.
| 4 = {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}} | _4 = Obiekt i kod, szablonu typu {{s|Śródtekst}} {{LinkPatrz|Śródtekst}} w tekście zakodowanym.
| 5 = {{Code|tabela_parametrow_szablonu}} | _5 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}.
| 6 = {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} | _6 = Nazwa szablonu tekstu, typu, dla {{LinkPatrz|Śródtekst}}.
| 7 = {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} | _7 = Tablica modyfikatorów uruchmienia szablonu {{LinkPatrz|Śródtekst}}.
| 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Tablica bazy kodów modułu {{m|Szablonowe}}.
| 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _9 = Tablica rozkładu na czynniki pierwsze, elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 10 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _10 = Przyjmuje wartość: {{Code|true}}, gdy artykuł jest taki sam, jak strona w przeglądarce.
}}
Tablica jako drugi element dodawanej tablicy w kodzie: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}, to są tam podtablice, które są tablicami składających się z obiektu i kodu elementu {{s|PobierzŚródtekst}} {{Patrz|PobierzŚródtekst}}, tych podtablic może być wiele dla różnych tych.
== {{Śródtytuł|p.UstawianiePobierz}}{{Code|p.UstawianiePobierz}} ==
Funkcja dodaje do danego elementu typu: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, utworzonego na podstawie obiektów nie typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, w postaci tablicy utworzonego z trzech elementów, tzn.: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}, a trzeci element tablicy jest numerkiem nazwanym, ile w danym elemencie było wtedy aktualnie elementów przed wywołaniem szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla zmiennych w tablicach: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. Ten element służy do wstawiania innych elementów do tablic nazwanych uchwytów oraz ich numerków (dla elementów numerowanych) lub nie, aby przesunąc od pewnego momentu ich zawartości do przodu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}.
| 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}.
| 3 = {{Code|obiekt}} {{LinkPatrz|Pobierz: obiekt}} | _3 = Obiekt, jak: {{LinkPatrz|rodzaj: Śródtekst}}, obiektu typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}.
| 4 = {{Code|kod}} {{LinkPatrz|Pobierz: kod}} | _4 = Numer danego obiektu typu {{LinkPatrz|Pobierz}}.
| 5 = {{Code|nazwa_obiektu}} {{Patrz|nazwa_obiektu}} | _5 = Nazwa danego obiektu {{LinkPatrz|Śródtekst}}.
| 6 = {{Code|uchwyt_obiektu}} {{Patrz|uchwyt_obiektu}} | _6 = Unikalny uchwyt danego obiektu {{LinkPatrz|Śródtekst}}.
| 7 = {{Code|czy_artykul_korzystany}} | _7 = Jak w: {{LinkPatrz|czy_artykul_korzystany}}.
}}
Gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, przyjmuje wartość {{Code|true}}, wtedy jest używana tablica: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tej samej tablicy, co poprzednio, ale dla elementów typu: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, na podstawie tego w ten sposób jest tworzona pewna tablica, te elementy są dodawane do drugiej podtablicy w tablicy dodawanej w {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}.
== {{Śródtytuł|p.UstawPobierzKorzystanie}}{{Code|p.UstawPobierzKorzystanie}} ==
Funkcja na podstawie stworzonych elementów w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{Patrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, która składa się z tablic numerowanych, gdzie w każdej takiej jego tablicy są dwie podtablice, te elementy są zbierane dla: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, pierwsza taka podtablica jest tablicą numerowaną z: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu}}, i {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu}}, a druga taka podtablica jest z: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UstawPobierzKorzystanie(tablica_zmiennych2)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tablica_zmiennych2}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych2}}.
}}
Na podstawie każdego takich elementów numerowanych w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, jest uruchamiana funkcja: {{LinkŚródtytuł|p.UstawianiePobierz}}, dla pierwszego parametru z wartością {{Code|nil}}, drugim: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, i dalszymi.
== {{Śródtytuł|p.ZamienianiePobierzNaKod}}{{Code|p.ZamienianiePobierzNaKod}} ==
Funkcja na podstawie parametru {{ZobaczTeż|tekst}}: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, występujących w tabeli: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, zdefiniowanych jako tablica: {{Code|<nowiki>pozycja[3][1][1]</nowiki>}}.
Modyfikuje też element: {{ZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}}, zapisany w bazie szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, tzn.: {{Code|<nowiki>(pozycja[4] or {})[1]</nowiki>}} (baza kodów bazy dla danego szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}), a jeśli ona nie istnieje, to: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}} (baza kodów strony bieżącej), i {{Code|<nowiki>(pozycja[4] or {})[2]</nowiki>}} (baza parametrów danych obiektów dla szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}), a jeśli ona nie istnieje, to: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}} (baza parametrów strony bieżącej), ale zwykle istnieją te pierwsze, aby wyświetlić zamieniony, czyli zmodyfikowany, element, ewentualnie ze zmodyfikowaną kolejno bazą danych kodów i parametrów strony bieżącej.
Funkcja do szybszego działania wykorzystuje tabelę: {{Code|(pozycja[4] or {})[2]}} lub {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="Lua">
function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|obiekt}} | _1 = Jak w: {{LinkPatrz|Pobierz: obiekt}}.
| 2 = {{Code|kod}} | _2 = Jak w: {{LinkPatrz|Pobierz: kod}}.
| 3 = {{Code|pozycja}} | _3 = Dany element numerowany, który przedstawia pozycję dla elementów typu: {{LinkPatrz|Śródtekst}}, ze strony szablonów rodzaju: {{Code|Śródtekst}}{{LinkPatrz|Śródtekst}}, lub {{Code|Pobierz}} {{LinkPatrz|Pobierz}}.
| 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
| 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}.
| 8 = {{Code|czy_korzystane}} {{Patrz|czy_korzystane}} | _8 = Czy wykorzystawane elementy są typu: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy ta wartość przyjmuje wartość {{Code|true}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}.
}}
Funkcja wykorzystuje do modyfikacji funkcję: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, ona seryjnie modyfikuje całe elementy tekstu {{LinkZobaczTeż|tekst}} lub elementy bazy {{LinkZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}} o pewnych dwuwymiarowych nazwach, co do kodów bazy. Element tekstu do modyfikacji jest uzyskiwany z funkcji: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, jeżeli ten tekst istnieje, a gdy nie, to funkcja nie zwraca żadnej wartości, a jak jest, to ten tekst, ze zmodyfikowaną tabelą bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, też ze zmodyfikowaną tabelą parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
== {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuPobierz}} ==
Funkcja zastępuje swoje odwołanie uchwytowe dla elementu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, szablonu typu: {{s|PobierzŚródtekst}}, przetransformowanym tekstem z szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}: o tych samych uchwytach z elementów typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jeżeli jest jeden tam taki uchwyt dla tego elementu, na odpowiedniej stronie nie otoczonej znacznikami: {{Tag|includeonly}}, '''mechanizmu: {{NS|l=tak|k=mw|w=tak|pk=d}}'''.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Treści obiektu typu: {{LinkPatrz|Pobierz}}.
| 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|Pobierz: obiekt}}.
| 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|Pobierz: kod}}.
| 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
| 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}.
| 8 = {{Code|tablica_zmiennych}} | _8 = Jak w: {{LinkPatrz|tablica_zmiennych}}.
}}
Funkcja wykorzystuje funkcję: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na bieżącej stronie, lub {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na stronie niebieżącej, obie tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a także funkcję: {{LinkŚródtytuł|p.ZamienianiePobierzNaKod}}, który zamienia ten obiekt: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, pobierania na odpowiedni wikikod do działania z szablonu tekstu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Jeżeli funkcja nie wykrywała w ramach aktualnej strony elementu typu nie {{LinkPatrz|Pobierz}} swojego odpowiednika względem tej pierwszej tablicy, to szuka je w ramach tej niekaktualnej względem tej drugiej, a jeżeli funkcja znalazła taki swój odpowiednik, to go zwraca, a jeżeli nie, to zwraca wartość {{Code|nil}}.
== {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} ==
Szablon zastępuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jej zawartością tekstową: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, jeśli istnieje, w odpowiedni sposób.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}.
| 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}.
| 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod}}.
| 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
| 7 = {{Code|tablica_zmiennych}} | _7 = Jak w: {{LinkPatrz|tablica_zmiennych}}.
}}
Funkcja do swojego działania wykorzystuje tabelę: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, by dało się to zastąpienie wykonać. Funkcja do swojego działania potrzebuje: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, który pobiera tekst z tego szablonu, i zamieniąc go typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, ale nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, właśnie na to.
== {{Śródtytuł|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}}{{Code|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}} ==
Funkcje elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, i typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, zastępuje je zawartością kolejno z odpowiednich szablonów pierwszego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}} (tutaj z siebie samego pobiera tekst, i zastępują siebie właśnie tym), i drugiego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jej zawartością, oczywiście, biorąc zawartość tekstowa z: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jest właśnie tam ustawiana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _1 = tekst, na którym operujemy, modyfikując odpowiednio jego kody, dotyczące tych dwóch szablonów,
| 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa w formacie szablonowym strony danej, nie tylko szablonów, w wywołaniach szablonowych.
| 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
| 5 = {{Code|tablica_zmiennych}} | _5 = Jak w: {{LinkPatrz|tablica_zmiennych}}.
| 6 = {{Code|IterowaniePoElementachTekstu}} {{Patrz|IterowaniePoElementachTekstu}} | _6 = Iterator po elementach kodów szablonowych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} i związaną z nim: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
}}
Funkcja wykorzystuje odpowiednio tablice: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - tablica o szablonach {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}} na stronach niebieżących, i {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - a tutaj bieżących, obie tablicy są podtabelami tabeli wyższej (nadrzędnej: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, są używane do szybkiego zakończeniu funkcji, gdy by takich tam obiektów nie było, w tekście. Są one używane do zastąpienia ich zawartością z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}.
Funkcja do swojego działania wykorzystuje funkcje: {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}} - gdy mamy szablony typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, i {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} - jeśli używamy elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Aby wykorzystać te funkcje, uruchamiana jest najpierw: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, to zastąpienia tego typu szanlonów odpowiednią zawartością z tych zmiennych.
Funkcja do sprawdzania, czy są tego typu szablony z dwóch, rewiduje, czy one są pierwszego typu, czy drugiego, aby dało się je zastąpić wartością wikikodu ze zmiennej z szablonów {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, to wykorzystuje do tego typu tabele: {{Code|{{sr|#p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu}}, dla obiektów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, a: {{Code|{{sr|#p.szablony_stronicowego_parsera.szablony_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowego_parsera.szablony_tekstu}}, dla obiektu typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, ale: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
jrietkofboojgl5sp09kad6u1m74bq5
558387
558386
2026-10-03T01:22:36Z
Persino
2851
/* {{Śródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}{{Code|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}} */
558387
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SzablonyTekstu}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Ten moduł służy do obsługi szablonów: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}.
* Szablony typu: {{Code|Śródtekst}} {{Patrz|Śródtekst}}, to są: {{s|Śródtekst}}.
** {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - to jest typ obiektu i jego numer szablonów typu: nie {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}.
* Szablony typu: {{Code|Pobierz}} {{Patrz|Pobierz}}, to są: {{s|PobierzŚródtekst}}.
** {{Code|Pobierz: obiekt}} {{Patrz|Pobierz: obiekt}} i {{Code|Pobierz: kod}} {{Patrz|Pobierz: kod}} - to jest typ obiektu i jego numer szablonów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}.
Szablony: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}, mają walidację błędów, więc mogą, oprócz parametrów standardowych, przyjmować zmienne o kluczach odpowiednio: {{Code|klucz}} (lub {{Code|klucz1}}), {{Code|klucz2}}, {{Code|klucz3}}, ..., itd.. Tych parametrów może być dowolna liczba, ale mogą być pomiędzy nimi przerwy.
; Zbieranie elementów typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, na stronie bieżącej, jak i dołączonej{{dk}}
'''{{ld|StronicowyParser|Stronicowy parser}}''' jak napotka szablon {{s|Śródtekst}}, to generuje tworzenie następujących tablic: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{Patrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, dla tych szablonów w artykule niekorzystanej, lub korzystanej według: {{Code|tablica_szablonu_tekstu_korzystanych}} {{Patrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, jako {{ZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}:
<syntaxhighlight lang="lua">
if(not czy_artykul_korzystany)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{
{wartosc_elementu,lista_dwuelementowa,},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
{tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,},
});
else
if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{
{wartosc_elementu,lista_dwuelementowa,},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
{tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,},
});
end;
</syntaxhighlight>
* Teb powyższy kod, to nic innego jak część definicji fukcji: {{LinkŚródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}, używaną do stawiaia tego, gdy napotkano szablony tytu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}.
; Strony niebieżące - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}} na stronie bieżącej, które odwołują się właśnie do tej niebieżącej{{dk}}
Drugi element wsadzanej tablicy za pomocą {{LzLua|table.insert}}, jest to nic innego, jak tablica zawierająca następne tablice, gdy tam jakiś element się pojawi, a ta operacja jest robina przez funkcję {{LinkŚródtytuł|p.UstawianiePobierz}} {{ZobaczTeż|p.UstawianiePobierz}}:
<syntaxhighlight lang="lua">
local tablica_szablonu_tekstu;
if(czy_artykul_korzystany)then
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych;
else
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych;
end;
if(tablica_szablonu_tekstu)then
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
...
local dodatkowe_elementy=pozycja[2];
...
if(not czy_tak)then
local tab_numer;
if(tablica_zmiennych)then
tab_numer={};
for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do
tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name];
end;
end;
table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer});
break;
</syntaxhighlight>
* gdzie: tabela: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}}, będąca podtabelą tabeli: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, to nic innego, jak zbiór tablic mniejszych dla posczególnych obiektów, tutaj nazwanych kluczami: {{Code|name}}, w tych mniejszych mieszczą się pojedyncze tabele, ktore pierwszym elementem jest uchwyt, a drugim jest sam tekst szablonu typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}.
* Tą funkcję używamy do zbierania informacji o inne stronie, dołączonej do aktualnej, w wyniku uruchomienia szablonu linku lub pobierania.
; Strony bieżące korzystane - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, które odwołują się do niej{{dk}}
Funkcja natomiast: {{LinkŚródtytuł|p.UstawianiePobierz}}, jest uruchamiana przez funkcję: {{LinkŚródtytuł|p.UstawPobierzKorzystanie}}, dla modułu bieżącego, która zbiera odpowiednie elementy pobierania (szablony typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}) w tablicach linkowych (pobierania) {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, to są tablice, aktualnej - bieżącej, strony, ta tablica jest tworzona sposobem, ale nie w tej funkcji, ta funkcja jedynie z tego korzysta, a ten kod poniżej jest używany, gdzie indziej w kodzie {{ZobaczTeż|p.LinkowanieFinalizowaniePrac}}:
<syntaxhighlight lang="lua">
if(czy_pobierz)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then
tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={};
end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},});
end;
</syntaxhighlight>
W tej tablicy mieszczą się informację, co do poszczególnych obiektów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jak: {{s|PobierzŚródtekst}}.
----
; Inne{{dk}}
Z tych tabel korzysta, nie tylko, szablon: {{s|Śródtekst}}, ale też i: {{s|PobierzŚródtekst}}, przy pomocy oprogramowania modułu: {{m|StronicowyParser}}, czy: {{m|StronicowyParser/}}.
== {{Śródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}{{Code|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}} ==
Funkcja służy do zastępowania parametrów, w szablonie typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, w zmiennych parametru: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}} lub {{Code|1}} {{LinkPatrz|1}}, w jego wartości, argumentów typu o wzorze ogólnym: {{Code|<nowiki>klucz%d*</nowiki>}} {{Patrz|klucz%d*}}, na odpowiednie wartości, ustawiane przez szablon w rodzaju: {{s|PobierzŚródtekst}} {{LinkPatrz|Pobierz}}, występujących w parametrach w wywołaniach jego szablonu lub bezpośrednio w tym pierwszym.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PreparowanieSzablonoweLinkoweSzablonuTekstu(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} {{Patrz|tekst-kod}} | _1 = Jest to kod bazy: {{Code|{{m|Szablonowe}}}}, o odpowiednim formacie,którego poszczególne elementy dzieci i potomków są modyfikowane.
| 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa strony w formacie wykonywalnym szablonów, względem innych przestrzeni.
| 3 = Parametry szablonu typu: {{s|Śródtekst}}, rodzaju: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}: | nagłówek3 = tak
| 4 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|stare__tablica_analizy_obiektow_strony_dany_modul}} | _4 = Baza danych szablonowa stworzona specjalnie dla szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, który jest dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tą funkcję.
| 5 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|stare___tablica_danych_parametrow_szablonu_strony}} | _5 = Tabela paremetrów rozwinieć bazy: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|stare__tablica_analizy_obiektow_strony_dany_modul}}, dzięki któremu uzyskuje się przyszybszenie stronicowego parsera. Jest ona dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tę funkcję.
| 6 = Parametry szablonu typu: {{s|PobierzŚródtekst}}, rodzaju: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla strony bieżącej: | nagłówek6 = tak
| 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. Jest to tabela parametrów szablonu.
| 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Jest to tablica bazy kodów parsowania: '''{{ld|Szablonowe|w bibliotece parsowania dowolnego wikikodu mechanizmu MediaWiki}}'''.
| 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Jest to baza parametrów rozwinieć, jak: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|stare___tablica_danych_parametrow_szablonu_strony}}, ale dla: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 10 = Nazwy danej książki danej strony, jeśli poszczególne istnieją, na którą wskazuje szablon typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, na odpowiedni szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}: | komórka10 = tak
| 11 = {{Code|nazwa_modulu_ksiazki_tekstu}} {{Patrz|nazwa_modulu_ksiazki_tekstu}} | _11 = Pełna nazwa książki danej strony, lub ewentualnie w niektórych przypadkach bez przestrzeni nazw.
| 12 = {{Code|nazwa_artykulu_tekstu}} {{Patrz|nazwa_artykulu_tekstu}} | _12 = Nazwa książkowa artykułu danej strony.
}}
Zweacane parametry:
{{OpisParametrów
| 1 = Zwraca to samo, co jest tym: {{Code|tekst}} {{LinkPatrz|tekst-kod}} | komórka1 = tak
}}
== {{Śródtytuł|p.ParametrTekstowySzablonuTekstu}}{{Code|p.ParametrTekstowySzablonuTekstu}} ==
Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, tekstu o nazwie pierwszy z kolei, który istnieje, więc: {{Code|tekst}} {{Patrz|tekst}}, {{Code|treść}} {{Patrz|treść}} lub {{Code|1}} {{Patrz|1}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca:
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o różnych parametrach nazwanych lub nienazwanych.
}}
== {{Śródtytuł|p.SzablonTekstuBezPreProcess}}{{Code|p.SzablonTekstuBezPreProcess}} ==
Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, o nazwie {{Code|bez preprocess}} {{Patrz|bez preprocess}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca:
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o parametrach nazwanych lub nienazwanych.
}}
== {{Śródtytuł|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}}{{Code|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}} ==
Funkcja elementy tablicy: {{Code|tablica_zmiennych2}} {{Patrz|tablica_zmiennych2}}, przypisuje tablicy: {{Code|tablica_zmiennych}} {{Patrz|tablica_zmiennych}}, czyli do tego pierwszego dodaje elementy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, do tablicy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a jeżeli ta tablica nie istnieje, to jest tworzona:
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}, jest to tablica dla strony niekorzystanej.
| 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}, jest to tablica dla strony korzystanej, aktualnej strony, która jest wyświetlana na ekranie.
}}
== {{Śródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}{{Code|p.DodawanieDoBazyStronySzablonuTekstu}} ==
Szablon dodający elementy do tablicy bazy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, lub {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, tzn. do tablicy: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, jest równy wartości fałszywej, przeciwnie do: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tej samej tablicy co poprzednio. Te elementy są dodawane według następującego kodu: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}} lub {{LinkPatrz|tablica_zmiennych2}}.
| 2 = {{Code|wartosc_elementu}} {{Patrz|wartosc_elementu}} | _2 = Rodzaj elementu, jak: {{Code|Śródtekst}} {{Patrz|rodzaj: Śródtekst}}, dla jednego z szablonów tekstu.
| 3 = {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} | _3 = Tablica elementu tablicy zbierającej dane, element posiada tylko pierwszy element, który jest uchwytem.
| 4 = {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}} | _4 = Obiekt i kod, szablonu typu {{s|Śródtekst}} {{LinkPatrz|Śródtekst}} w tekście zakodowanym.
| 5 = {{Code|tabela_parametrow_szablonu}} | _5 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}.
| 6 = {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} | _6 = Nazwa szablonu tekstu, typu, dla {{LinkPatrz|Śródtekst}}.
| 7 = {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} | _7 = Tablica modyfikatorów uruchmienia szablonu {{LinkPatrz|Śródtekst}}.
| 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Tablica bazy kodów modułu {{m|Szablonowe}}.
| 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _9 = Tablica rozkładu na czynniki pierwsze, elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 10 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _10 = Przyjmuje wartość: {{Code|true}}, gdy artykuł jest taki sam, jak strona w przeglądarce.
}}
Tablica jako drugi element dodawanej tablicy w kodzie: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}, to są tam podtablice, które są tablicami składających się z obiektu i kodu elementu {{s|PobierzŚródtekst}} {{Patrz|PobierzŚródtekst}}, tych podtablic może być wiele dla różnych tych.
== {{Śródtytuł|p.UstawianiePobierz}}{{Code|p.UstawianiePobierz}} ==
Funkcja dodaje do danego elementu typu: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, utworzonego na podstawie obiektów nie typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, w postaci tablicy utworzonego z trzech elementów, tzn.: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}, a trzeci element tablicy jest numerkiem nazwanym, ile w danym elemencie było wtedy aktualnie elementów przed wywołaniem szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla zmiennych w tablicach: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. Ten element służy do wstawiania innych elementów do tablic nazwanych uchwytów oraz ich numerków (dla elementów numerowanych) lub nie, aby przesunąc od pewnego momentu ich zawartości do przodu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}.
| 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}.
| 3 = {{Code|obiekt}} {{LinkPatrz|Pobierz: obiekt}} | _3 = Obiekt, jak: {{LinkPatrz|rodzaj: Śródtekst}}, obiektu typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}.
| 4 = {{Code|kod}} {{LinkPatrz|Pobierz: kod}} | _4 = Numer danego obiektu typu {{LinkPatrz|Pobierz}}.
| 5 = {{Code|nazwa_obiektu}} {{Patrz|nazwa_obiektu}} | _5 = Nazwa danego obiektu {{LinkPatrz|Śródtekst}}.
| 6 = {{Code|uchwyt_obiektu}} {{Patrz|uchwyt_obiektu}} | _6 = Unikalny uchwyt danego obiektu {{LinkPatrz|Śródtekst}}.
| 7 = {{Code|czy_artykul_korzystany}} | _7 = Jak w: {{LinkPatrz|czy_artykul_korzystany}}.
}}
Gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, przyjmuje wartość {{Code|true}}, wtedy jest używana tablica: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tej samej tablicy, co poprzednio, ale dla elementów typu: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, na podstawie tego w ten sposób jest tworzona pewna tablica, te elementy są dodawane do drugiej podtablicy w tablicy dodawanej w {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}.
== {{Śródtytuł|p.UstawPobierzKorzystanie}}{{Code|p.UstawPobierzKorzystanie}} ==
Funkcja na podstawie stworzonych elementów w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{Patrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, która składa się z tablic numerowanych, gdzie w każdej takiej jego tablicy są dwie podtablice, te elementy są zbierane dla: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, pierwsza taka podtablica jest tablicą numerowaną z: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu}}, i {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu}}, a druga taka podtablica jest z: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UstawPobierzKorzystanie(tablica_zmiennych2)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tablica_zmiennych2}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych2}}.
}}
Na podstawie każdego takich elementów numerowanych w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, jest uruchamiana funkcja: {{LinkŚródtytuł|p.UstawianiePobierz}}, dla pierwszego parametru z wartością {{Code|nil}}, drugim: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, i dalszymi.
== {{Śródtytuł|p.ZamienianiePobierzNaKod}}{{Code|p.ZamienianiePobierzNaKod}} ==
Funkcja na podstawie parametru {{ZobaczTeż|tekst}}: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, występujących w tabeli: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, zdefiniowanych jako tablica: {{Code|<nowiki>pozycja[3][1][1]</nowiki>}}.
Modyfikuje też element: {{ZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}}, zapisany w bazie szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, tzn.: {{Code|<nowiki>(pozycja[4] or {})[1]</nowiki>}} (baza kodów bazy dla danego szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}), a jeśli ona nie istnieje, to: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}} (baza kodów strony bieżącej), i {{Code|<nowiki>(pozycja[4] or {})[2]</nowiki>}} (baza parametrów danych obiektów dla szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}), a jeśli ona nie istnieje, to: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}} (baza parametrów strony bieżącej), ale zwykle istnieją te pierwsze, aby wyświetlić zamieniony, czyli zmodyfikowany, element, ewentualnie ze zmodyfikowaną kolejno bazą danych kodów i parametrów strony bieżącej.
Funkcja do szybszego działania wykorzystuje tabelę: {{Code|(pozycja[4] or {})[2]}} lub {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="Lua">
function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|obiekt}} | _1 = Jak w: {{LinkPatrz|Pobierz: obiekt}}.
| 2 = {{Code|kod}} | _2 = Jak w: {{LinkPatrz|Pobierz: kod}}.
| 3 = {{Code|pozycja}} | _3 = Dany element numerowany, który przedstawia pozycję dla elementów typu: {{LinkPatrz|Śródtekst}}, ze strony szablonów rodzaju: {{Code|Śródtekst}}{{LinkPatrz|Śródtekst}}, lub {{Code|Pobierz}} {{LinkPatrz|Pobierz}}.
| 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
| 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}.
| 8 = {{Code|czy_korzystane}} {{Patrz|czy_korzystane}} | _8 = Czy wykorzystawane elementy są typu: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy ta wartość przyjmuje wartość {{Code|true}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}.
}}
Funkcja wykorzystuje do modyfikacji funkcję: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, ona seryjnie modyfikuje całe elementy tekstu {{LinkZobaczTeż|tekst}} lub elementy bazy {{LinkZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}} o pewnych dwuwymiarowych nazwach, co do kodów bazy. Element tekstu do modyfikacji jest uzyskiwany z funkcji: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, jeżeli ten tekst istnieje, a gdy nie, to funkcja nie zwraca żadnej wartości, a jak jest, to ten tekst, ze zmodyfikowaną tabelą bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, też ze zmodyfikowaną tabelą parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
== {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuPobierz}} ==
Funkcja zastępuje swoje odwołanie uchwytowe dla elementu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, szablonu typu: {{s|PobierzŚródtekst}}, przetransformowanym tekstem z szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}: o tych samych uchwytach z elementów typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jeżeli jest jeden tam taki uchwyt dla tego elementu, na odpowiedniej stronie nie otoczonej znacznikami: {{Tag|includeonly}}, '''mechanizmu: {{NS|l=tak|k=mw|w=tak|pk=d}}'''.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Treści obiektu typu: {{LinkPatrz|Pobierz}}.
| 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|Pobierz: obiekt}}.
| 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|Pobierz: kod}}.
| 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
| 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}.
| 8 = {{Code|tablica_zmiennych}} | _8 = Jak w: {{LinkPatrz|tablica_zmiennych}}.
}}
Funkcja wykorzystuje funkcję: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na bieżącej stronie, lub {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na stronie niebieżącej, obie tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a także funkcję: {{LinkŚródtytuł|p.ZamienianiePobierzNaKod}}, który zamienia ten obiekt: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, pobierania na odpowiedni wikikod do działania z szablonu tekstu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Jeżeli funkcja nie wykrywała w ramach aktualnej strony elementu typu nie {{LinkPatrz|Pobierz}} swojego odpowiednika względem tej pierwszej tablicy, to szuka je w ramach tej niekaktualnej względem tej drugiej, a jeżeli funkcja znalazła taki swój odpowiednik, to go zwraca, a jeżeli nie, to zwraca wartość {{Code|nil}}.
== {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} ==
Szablon zastępuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jej zawartością tekstową: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, jeśli istnieje, w odpowiedni sposób.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}.
| 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}.
| 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod}}.
| 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
| 7 = {{Code|tablica_zmiennych}} | _7 = Jak w: {{LinkPatrz|tablica_zmiennych}}.
}}
Funkcja do swojego działania wykorzystuje tabelę: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, by dało się to zastąpienie wykonać. Funkcja do swojego działania potrzebuje: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, który pobiera tekst z tego szablonu, i zamieniąc go typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, ale nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, właśnie na to.
== {{Śródtytuł|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}}{{Code|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}} ==
Funkcje elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, i typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, zastępuje je zawartością kolejno z odpowiednich szablonów pierwszego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}} (tutaj z siebie samego pobiera tekst, i zastępują siebie właśnie tym), i drugiego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jej zawartością, oczywiście, biorąc zawartość tekstowa z: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jest właśnie tam ustawiana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _1 = tekst, na którym operujemy, modyfikując odpowiednio jego kody, dotyczące tych dwóch szablonów,
| 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa w formacie szablonowym strony danej, nie tylko szablonów, w wywołaniach szablonowych.
| 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
| 5 = {{Code|tablica_zmiennych}} | _5 = Jak w: {{LinkPatrz|tablica_zmiennych}}.
| 6 = {{Code|IterowaniePoElementachTekstu}} {{Patrz|IterowaniePoElementachTekstu}} | _6 = Iterator po elementach kodów szablonowych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} i związaną z nim: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
}}
Funkcja wykorzystuje odpowiednio tablice: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - tablica o szablonach {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}} na stronach niebieżących, i {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - a tutaj bieżących, obie tablicy są podtabelami tabeli wyższej (nadrzędnej: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, są używane do szybkiego zakończeniu funkcji, gdy by takich tam obiektów nie było, w tekście. Są one używane do zastąpienia ich zawartością z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}.
Funkcja do swojego działania wykorzystuje funkcje: {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}} - gdy mamy szablony typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, i {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} - jeśli używamy elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Aby wykorzystać te funkcje, uruchamiana jest najpierw: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, to zastąpienia tego typu szanlonów odpowiednią zawartością z tych zmiennych.
Funkcja do sprawdzania, czy są tego typu szablony z dwóch, rewiduje, czy one są pierwszego typu, czy drugiego, aby dało się je zastąpić wartością wikikodu ze zmiennej z szablonów {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, to wykorzystuje do tego typu tabele: {{Code|{{sr|#p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu}}, dla obiektów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, a: {{Code|{{sr|#p.szablony_stronicowego_parsera.szablony_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowego_parsera.szablony_tekstu}}, dla obiektu typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, ale: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
6pux82mg3vxg6rv0ytiypx1r9y9kzct
558388
558387
2026-10-03T01:23:10Z
Persino
2851
/* {{Śródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}{{Code|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}} */
558388
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SzablonyTekstu}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Ten moduł służy do obsługi szablonów: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}.
* Szablony typu: {{Code|Śródtekst}} {{Patrz|Śródtekst}}, to są: {{s|Śródtekst}}.
** {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - to jest typ obiektu i jego numer szablonów typu: nie {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}.
* Szablony typu: {{Code|Pobierz}} {{Patrz|Pobierz}}, to są: {{s|PobierzŚródtekst}}.
** {{Code|Pobierz: obiekt}} {{Patrz|Pobierz: obiekt}} i {{Code|Pobierz: kod}} {{Patrz|Pobierz: kod}} - to jest typ obiektu i jego numer szablonów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}.
Szablony: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}, mają walidację błędów, więc mogą, oprócz parametrów standardowych, przyjmować zmienne o kluczach odpowiednio: {{Code|klucz}} (lub {{Code|klucz1}}), {{Code|klucz2}}, {{Code|klucz3}}, ..., itd.. Tych parametrów może być dowolna liczba, ale mogą być pomiędzy nimi przerwy.
; Zbieranie elementów typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, na stronie bieżącej, jak i dołączonej{{dk}}
'''{{ld|StronicowyParser|Stronicowy parser}}''' jak napotka szablon {{s|Śródtekst}}, to generuje tworzenie następujących tablic: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{Patrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, dla tych szablonów w artykule niekorzystanej, lub korzystanej według: {{Code|tablica_szablonu_tekstu_korzystanych}} {{Patrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, jako {{ZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}:
<syntaxhighlight lang="lua">
if(not czy_artykul_korzystany)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{
{wartosc_elementu,lista_dwuelementowa,},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
{tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,},
});
else
if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{
{wartosc_elementu,lista_dwuelementowa,},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
{tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,},
});
end;
</syntaxhighlight>
* Teb powyższy kod, to nic innego jak część definicji fukcji: {{LinkŚródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}, używaną do stawiaia tego, gdy napotkano szablony tytu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}.
; Strony niebieżące - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}} na stronie bieżącej, które odwołują się właśnie do tej niebieżącej{{dk}}
Drugi element wsadzanej tablicy za pomocą {{LzLua|table.insert}}, jest to nic innego, jak tablica zawierająca następne tablice, gdy tam jakiś element się pojawi, a ta operacja jest robina przez funkcję {{LinkŚródtytuł|p.UstawianiePobierz}} {{ZobaczTeż|p.UstawianiePobierz}}:
<syntaxhighlight lang="lua">
local tablica_szablonu_tekstu;
if(czy_artykul_korzystany)then
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych;
else
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych;
end;
if(tablica_szablonu_tekstu)then
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
...
local dodatkowe_elementy=pozycja[2];
...
if(not czy_tak)then
local tab_numer;
if(tablica_zmiennych)then
tab_numer={};
for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do
tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name];
end;
end;
table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer});
break;
</syntaxhighlight>
* gdzie: tabela: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}}, będąca podtabelą tabeli: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, to nic innego, jak zbiór tablic mniejszych dla posczególnych obiektów, tutaj nazwanych kluczami: {{Code|name}}, w tych mniejszych mieszczą się pojedyncze tabele, ktore pierwszym elementem jest uchwyt, a drugim jest sam tekst szablonu typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}.
* Tą funkcję używamy do zbierania informacji o inne stronie, dołączonej do aktualnej, w wyniku uruchomienia szablonu linku lub pobierania.
; Strony bieżące korzystane - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, które odwołują się do niej{{dk}}
Funkcja natomiast: {{LinkŚródtytuł|p.UstawianiePobierz}}, jest uruchamiana przez funkcję: {{LinkŚródtytuł|p.UstawPobierzKorzystanie}}, dla modułu bieżącego, która zbiera odpowiednie elementy pobierania (szablony typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}) w tablicach linkowych (pobierania) {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, to są tablice, aktualnej - bieżącej, strony, ta tablica jest tworzona sposobem, ale nie w tej funkcji, ta funkcja jedynie z tego korzysta, a ten kod poniżej jest używany, gdzie indziej w kodzie {{ZobaczTeż|p.LinkowanieFinalizowaniePrac}}:
<syntaxhighlight lang="lua">
if(czy_pobierz)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then
tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={};
end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},});
end;
</syntaxhighlight>
W tej tablicy mieszczą się informację, co do poszczególnych obiektów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jak: {{s|PobierzŚródtekst}}.
----
; Inne{{dk}}
Z tych tabel korzysta, nie tylko, szablon: {{s|Śródtekst}}, ale też i: {{s|PobierzŚródtekst}}, przy pomocy oprogramowania modułu: {{m|StronicowyParser}}, czy: {{m|StronicowyParser/}}.
== {{Śródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}{{Code|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}} ==
Funkcja służy do zastępowania parametrów, w szablonie typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, w zmiennych parametru: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}} lub {{Code|1}} {{LinkPatrz|1}}, w jego wartości, argumentów typu o wzorze ogólnym: {{Code|<nowiki>klucz%d*</nowiki>}} {{Patrz|klucz%d*}}, na odpowiednie wartości, ustawiane przez szablon w rodzaju: {{s|PobierzŚródtekst}} {{LinkPatrz|Pobierz}}, występujących w parametrach w wywołaniach jego szablonu lub bezpośrednio w tym pierwszym.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PreparowanieSzablonoweLinkoweSzablonuTekstu(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} {{Patrz|tekst-kod}} | _1 = Jest to kod bazy: {{Code|{{m|Szablonowe}}}}, o odpowiednim formacie,którego poszczególne elementy dzieci i potomków są modyfikowane.
| 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa strony w formacie wykonywalnym szablonów, względem innych przestrzeni.
| 3 = Parametry szablonu typu: {{s|Śródtekst}}, rodzaju: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}: | nagłówek3 = tak
| 4 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|stare__tablica_analizy_obiektow_strony_dany_modul}} | _4 = Baza danych szablonowa stworzona specjalnie dla szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, który jest dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tą funkcję.
| 5 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|stare___tablica_danych_parametrow_szablonu_strony}} | _5 = Tabela paremetrów rozwinieć bazy: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|stare__tablica_analizy_obiektow_strony_dany_modul}}, dzięki któremu uzyskuje się przyszybszenie stronicowego parsera. Jest ona dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tę funkcję.
| 6 = Parametry szablonu typu: {{s|PobierzŚródtekst}}, rodzaju: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla strony bieżącej: | nagłówek6 = tak
| 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. Jest to tabela parametrów szablonu.
| 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Jest to tablica bazy kodów parsowania: '''{{ld|Szablonowe|w bibliotece parsowania dowolnego wikikodu mechanizmu MediaWiki}}'''.
| 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Jest to baza parametrów rozwinieć, jak: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|stare___tablica_danych_parametrow_szablonu_strony}}, ale dla: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 10 = Nazwy danej książki danej strony, jeśli poszczególne istnieją, na którą wskazuje szablon typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, na odpowiedni szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}: | nagłówek10 = tak
| 11 = {{Code|nazwa_modulu_ksiazki_tekstu}} {{Patrz|nazwa_modulu_ksiazki_tekstu}} | _11 = Pełna nazwa książki danej strony, lub ewentualnie w niektórych przypadkach bez przestrzeni nazw.
| 12 = {{Code|nazwa_artykulu_tekstu}} {{Patrz|nazwa_artykulu_tekstu}} | _12 = Nazwa książkowa artykułu danej strony.
}}
Zweacane parametry:
{{OpisParametrów
| 1 = Zwraca to samo, co jest tym: {{Code|tekst}} {{LinkPatrz|tekst-kod}} | komórka1 = tak
}}
== {{Śródtytuł|p.ParametrTekstowySzablonuTekstu}}{{Code|p.ParametrTekstowySzablonuTekstu}} ==
Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, tekstu o nazwie pierwszy z kolei, który istnieje, więc: {{Code|tekst}} {{Patrz|tekst}}, {{Code|treść}} {{Patrz|treść}} lub {{Code|1}} {{Patrz|1}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca:
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o różnych parametrach nazwanych lub nienazwanych.
}}
== {{Śródtytuł|p.SzablonTekstuBezPreProcess}}{{Code|p.SzablonTekstuBezPreProcess}} ==
Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, o nazwie {{Code|bez preprocess}} {{Patrz|bez preprocess}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca:
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o parametrach nazwanych lub nienazwanych.
}}
== {{Śródtytuł|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}}{{Code|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}} ==
Funkcja elementy tablicy: {{Code|tablica_zmiennych2}} {{Patrz|tablica_zmiennych2}}, przypisuje tablicy: {{Code|tablica_zmiennych}} {{Patrz|tablica_zmiennych}}, czyli do tego pierwszego dodaje elementy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, do tablicy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a jeżeli ta tablica nie istnieje, to jest tworzona:
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}, jest to tablica dla strony niekorzystanej.
| 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}, jest to tablica dla strony korzystanej, aktualnej strony, która jest wyświetlana na ekranie.
}}
== {{Śródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}{{Code|p.DodawanieDoBazyStronySzablonuTekstu}} ==
Szablon dodający elementy do tablicy bazy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, lub {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, tzn. do tablicy: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, jest równy wartości fałszywej, przeciwnie do: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tej samej tablicy co poprzednio. Te elementy są dodawane według następującego kodu: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}} lub {{LinkPatrz|tablica_zmiennych2}}.
| 2 = {{Code|wartosc_elementu}} {{Patrz|wartosc_elementu}} | _2 = Rodzaj elementu, jak: {{Code|Śródtekst}} {{Patrz|rodzaj: Śródtekst}}, dla jednego z szablonów tekstu.
| 3 = {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} | _3 = Tablica elementu tablicy zbierającej dane, element posiada tylko pierwszy element, który jest uchwytem.
| 4 = {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}} | _4 = Obiekt i kod, szablonu typu {{s|Śródtekst}} {{LinkPatrz|Śródtekst}} w tekście zakodowanym.
| 5 = {{Code|tabela_parametrow_szablonu}} | _5 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}.
| 6 = {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} | _6 = Nazwa szablonu tekstu, typu, dla {{LinkPatrz|Śródtekst}}.
| 7 = {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} | _7 = Tablica modyfikatorów uruchmienia szablonu {{LinkPatrz|Śródtekst}}.
| 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Tablica bazy kodów modułu {{m|Szablonowe}}.
| 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _9 = Tablica rozkładu na czynniki pierwsze, elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 10 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _10 = Przyjmuje wartość: {{Code|true}}, gdy artykuł jest taki sam, jak strona w przeglądarce.
}}
Tablica jako drugi element dodawanej tablicy w kodzie: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}, to są tam podtablice, które są tablicami składających się z obiektu i kodu elementu {{s|PobierzŚródtekst}} {{Patrz|PobierzŚródtekst}}, tych podtablic może być wiele dla różnych tych.
== {{Śródtytuł|p.UstawianiePobierz}}{{Code|p.UstawianiePobierz}} ==
Funkcja dodaje do danego elementu typu: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, utworzonego na podstawie obiektów nie typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, w postaci tablicy utworzonego z trzech elementów, tzn.: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}, a trzeci element tablicy jest numerkiem nazwanym, ile w danym elemencie było wtedy aktualnie elementów przed wywołaniem szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla zmiennych w tablicach: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. Ten element służy do wstawiania innych elementów do tablic nazwanych uchwytów oraz ich numerków (dla elementów numerowanych) lub nie, aby przesunąc od pewnego momentu ich zawartości do przodu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}.
| 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}.
| 3 = {{Code|obiekt}} {{LinkPatrz|Pobierz: obiekt}} | _3 = Obiekt, jak: {{LinkPatrz|rodzaj: Śródtekst}}, obiektu typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}.
| 4 = {{Code|kod}} {{LinkPatrz|Pobierz: kod}} | _4 = Numer danego obiektu typu {{LinkPatrz|Pobierz}}.
| 5 = {{Code|nazwa_obiektu}} {{Patrz|nazwa_obiektu}} | _5 = Nazwa danego obiektu {{LinkPatrz|Śródtekst}}.
| 6 = {{Code|uchwyt_obiektu}} {{Patrz|uchwyt_obiektu}} | _6 = Unikalny uchwyt danego obiektu {{LinkPatrz|Śródtekst}}.
| 7 = {{Code|czy_artykul_korzystany}} | _7 = Jak w: {{LinkPatrz|czy_artykul_korzystany}}.
}}
Gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, przyjmuje wartość {{Code|true}}, wtedy jest używana tablica: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tej samej tablicy, co poprzednio, ale dla elementów typu: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, na podstawie tego w ten sposób jest tworzona pewna tablica, te elementy są dodawane do drugiej podtablicy w tablicy dodawanej w {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}.
== {{Śródtytuł|p.UstawPobierzKorzystanie}}{{Code|p.UstawPobierzKorzystanie}} ==
Funkcja na podstawie stworzonych elementów w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{Patrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, która składa się z tablic numerowanych, gdzie w każdej takiej jego tablicy są dwie podtablice, te elementy są zbierane dla: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, pierwsza taka podtablica jest tablicą numerowaną z: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu}}, i {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu}}, a druga taka podtablica jest z: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UstawPobierzKorzystanie(tablica_zmiennych2)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tablica_zmiennych2}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych2}}.
}}
Na podstawie każdego takich elementów numerowanych w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, jest uruchamiana funkcja: {{LinkŚródtytuł|p.UstawianiePobierz}}, dla pierwszego parametru z wartością {{Code|nil}}, drugim: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, i dalszymi.
== {{Śródtytuł|p.ZamienianiePobierzNaKod}}{{Code|p.ZamienianiePobierzNaKod}} ==
Funkcja na podstawie parametru {{ZobaczTeż|tekst}}: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, występujących w tabeli: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, zdefiniowanych jako tablica: {{Code|<nowiki>pozycja[3][1][1]</nowiki>}}.
Modyfikuje też element: {{ZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}}, zapisany w bazie szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, tzn.: {{Code|<nowiki>(pozycja[4] or {})[1]</nowiki>}} (baza kodów bazy dla danego szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}), a jeśli ona nie istnieje, to: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}} (baza kodów strony bieżącej), i {{Code|<nowiki>(pozycja[4] or {})[2]</nowiki>}} (baza parametrów danych obiektów dla szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}), a jeśli ona nie istnieje, to: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}} (baza parametrów strony bieżącej), ale zwykle istnieją te pierwsze, aby wyświetlić zamieniony, czyli zmodyfikowany, element, ewentualnie ze zmodyfikowaną kolejno bazą danych kodów i parametrów strony bieżącej.
Funkcja do szybszego działania wykorzystuje tabelę: {{Code|(pozycja[4] or {})[2]}} lub {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="Lua">
function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|obiekt}} | _1 = Jak w: {{LinkPatrz|Pobierz: obiekt}}.
| 2 = {{Code|kod}} | _2 = Jak w: {{LinkPatrz|Pobierz: kod}}.
| 3 = {{Code|pozycja}} | _3 = Dany element numerowany, który przedstawia pozycję dla elementów typu: {{LinkPatrz|Śródtekst}}, ze strony szablonów rodzaju: {{Code|Śródtekst}}{{LinkPatrz|Śródtekst}}, lub {{Code|Pobierz}} {{LinkPatrz|Pobierz}}.
| 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
| 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}.
| 8 = {{Code|czy_korzystane}} {{Patrz|czy_korzystane}} | _8 = Czy wykorzystawane elementy są typu: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy ta wartość przyjmuje wartość {{Code|true}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}.
}}
Funkcja wykorzystuje do modyfikacji funkcję: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, ona seryjnie modyfikuje całe elementy tekstu {{LinkZobaczTeż|tekst}} lub elementy bazy {{LinkZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}} o pewnych dwuwymiarowych nazwach, co do kodów bazy. Element tekstu do modyfikacji jest uzyskiwany z funkcji: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, jeżeli ten tekst istnieje, a gdy nie, to funkcja nie zwraca żadnej wartości, a jak jest, to ten tekst, ze zmodyfikowaną tabelą bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, też ze zmodyfikowaną tabelą parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
== {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuPobierz}} ==
Funkcja zastępuje swoje odwołanie uchwytowe dla elementu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, szablonu typu: {{s|PobierzŚródtekst}}, przetransformowanym tekstem z szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}: o tych samych uchwytach z elementów typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jeżeli jest jeden tam taki uchwyt dla tego elementu, na odpowiedniej stronie nie otoczonej znacznikami: {{Tag|includeonly}}, '''mechanizmu: {{NS|l=tak|k=mw|w=tak|pk=d}}'''.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Treści obiektu typu: {{LinkPatrz|Pobierz}}.
| 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|Pobierz: obiekt}}.
| 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|Pobierz: kod}}.
| 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
| 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}.
| 8 = {{Code|tablica_zmiennych}} | _8 = Jak w: {{LinkPatrz|tablica_zmiennych}}.
}}
Funkcja wykorzystuje funkcję: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na bieżącej stronie, lub {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na stronie niebieżącej, obie tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a także funkcję: {{LinkŚródtytuł|p.ZamienianiePobierzNaKod}}, który zamienia ten obiekt: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, pobierania na odpowiedni wikikod do działania z szablonu tekstu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Jeżeli funkcja nie wykrywała w ramach aktualnej strony elementu typu nie {{LinkPatrz|Pobierz}} swojego odpowiednika względem tej pierwszej tablicy, to szuka je w ramach tej niekaktualnej względem tej drugiej, a jeżeli funkcja znalazła taki swój odpowiednik, to go zwraca, a jeżeli nie, to zwraca wartość {{Code|nil}}.
== {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} ==
Szablon zastępuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jej zawartością tekstową: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, jeśli istnieje, w odpowiedni sposób.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}.
| 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}.
| 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod}}.
| 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
| 7 = {{Code|tablica_zmiennych}} | _7 = Jak w: {{LinkPatrz|tablica_zmiennych}}.
}}
Funkcja do swojego działania wykorzystuje tabelę: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, by dało się to zastąpienie wykonać. Funkcja do swojego działania potrzebuje: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, który pobiera tekst z tego szablonu, i zamieniąc go typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, ale nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, właśnie na to.
== {{Śródtytuł|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}}{{Code|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}} ==
Funkcje elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, i typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, zastępuje je zawartością kolejno z odpowiednich szablonów pierwszego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}} (tutaj z siebie samego pobiera tekst, i zastępują siebie właśnie tym), i drugiego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jej zawartością, oczywiście, biorąc zawartość tekstowa z: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jest właśnie tam ustawiana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _1 = tekst, na którym operujemy, modyfikując odpowiednio jego kody, dotyczące tych dwóch szablonów,
| 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa w formacie szablonowym strony danej, nie tylko szablonów, w wywołaniach szablonowych.
| 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
| 5 = {{Code|tablica_zmiennych}} | _5 = Jak w: {{LinkPatrz|tablica_zmiennych}}.
| 6 = {{Code|IterowaniePoElementachTekstu}} {{Patrz|IterowaniePoElementachTekstu}} | _6 = Iterator po elementach kodów szablonowych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} i związaną z nim: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
}}
Funkcja wykorzystuje odpowiednio tablice: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - tablica o szablonach {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}} na stronach niebieżących, i {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - a tutaj bieżących, obie tablicy są podtabelami tabeli wyższej (nadrzędnej: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, są używane do szybkiego zakończeniu funkcji, gdy by takich tam obiektów nie było, w tekście. Są one używane do zastąpienia ich zawartością z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}.
Funkcja do swojego działania wykorzystuje funkcje: {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}} - gdy mamy szablony typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, i {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} - jeśli używamy elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Aby wykorzystać te funkcje, uruchamiana jest najpierw: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, to zastąpienia tego typu szanlonów odpowiednią zawartością z tych zmiennych.
Funkcja do sprawdzania, czy są tego typu szablony z dwóch, rewiduje, czy one są pierwszego typu, czy drugiego, aby dało się je zastąpić wartością wikikodu ze zmiennej z szablonów {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, to wykorzystuje do tego typu tabele: {{Code|{{sr|#p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu}}, dla obiektów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, a: {{Code|{{sr|#p.szablony_stronicowego_parsera.szablony_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowego_parsera.szablony_tekstu}}, dla obiektu typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, ale: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
75dy1wunyasx8qtafeg5vkl9booamsv
558389
558388
2026-10-03T01:34:02Z
Persino
2851
/* {{Śródtytuł|p.ZamienianiePobierzNaKod}}{{Code|p.ZamienianiePobierzNaKod}} */
558389
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SzablonyTekstu}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Ten moduł służy do obsługi szablonów: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}.
* Szablony typu: {{Code|Śródtekst}} {{Patrz|Śródtekst}}, to są: {{s|Śródtekst}}.
** {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - to jest typ obiektu i jego numer szablonów typu: nie {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}.
* Szablony typu: {{Code|Pobierz}} {{Patrz|Pobierz}}, to są: {{s|PobierzŚródtekst}}.
** {{Code|Pobierz: obiekt}} {{Patrz|Pobierz: obiekt}} i {{Code|Pobierz: kod}} {{Patrz|Pobierz: kod}} - to jest typ obiektu i jego numer szablonów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}.
Szablony: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}, mają walidację błędów, więc mogą, oprócz parametrów standardowych, przyjmować zmienne o kluczach odpowiednio: {{Code|klucz}} (lub {{Code|klucz1}}), {{Code|klucz2}}, {{Code|klucz3}}, ..., itd.. Tych parametrów może być dowolna liczba, ale mogą być pomiędzy nimi przerwy.
; Zbieranie elementów typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, na stronie bieżącej, jak i dołączonej{{dk}}
'''{{ld|StronicowyParser|Stronicowy parser}}''' jak napotka szablon {{s|Śródtekst}}, to generuje tworzenie następujących tablic: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{Patrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, dla tych szablonów w artykule niekorzystanej, lub korzystanej według: {{Code|tablica_szablonu_tekstu_korzystanych}} {{Patrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, jako {{ZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}:
<syntaxhighlight lang="lua">
if(not czy_artykul_korzystany)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{
{wartosc_elementu,lista_dwuelementowa,},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
{tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,},
});
else
if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{
{wartosc_elementu,lista_dwuelementowa,},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
{tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,},
});
end;
</syntaxhighlight>
* Teb powyższy kod, to nic innego jak część definicji fukcji: {{LinkŚródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}, używaną do stawiaia tego, gdy napotkano szablony tytu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}.
; Strony niebieżące - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}} na stronie bieżącej, które odwołują się właśnie do tej niebieżącej{{dk}}
Drugi element wsadzanej tablicy za pomocą {{LzLua|table.insert}}, jest to nic innego, jak tablica zawierająca następne tablice, gdy tam jakiś element się pojawi, a ta operacja jest robina przez funkcję {{LinkŚródtytuł|p.UstawianiePobierz}} {{ZobaczTeż|p.UstawianiePobierz}}:
<syntaxhighlight lang="lua">
local tablica_szablonu_tekstu;
if(czy_artykul_korzystany)then
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych;
else
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych;
end;
if(tablica_szablonu_tekstu)then
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
...
local dodatkowe_elementy=pozycja[2];
...
if(not czy_tak)then
local tab_numer;
if(tablica_zmiennych)then
tab_numer={};
for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do
tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name];
end;
end;
table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer});
break;
</syntaxhighlight>
* gdzie: tabela: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}}, będąca podtabelą tabeli: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, to nic innego, jak zbiór tablic mniejszych dla posczególnych obiektów, tutaj nazwanych kluczami: {{Code|name}}, w tych mniejszych mieszczą się pojedyncze tabele, ktore pierwszym elementem jest uchwyt, a drugim jest sam tekst szablonu typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}.
* Tą funkcję używamy do zbierania informacji o inne stronie, dołączonej do aktualnej, w wyniku uruchomienia szablonu linku lub pobierania.
; Strony bieżące korzystane - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, które odwołują się do niej{{dk}}
Funkcja natomiast: {{LinkŚródtytuł|p.UstawianiePobierz}}, jest uruchamiana przez funkcję: {{LinkŚródtytuł|p.UstawPobierzKorzystanie}}, dla modułu bieżącego, która zbiera odpowiednie elementy pobierania (szablony typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}) w tablicach linkowych (pobierania) {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, to są tablice, aktualnej - bieżącej, strony, ta tablica jest tworzona sposobem, ale nie w tej funkcji, ta funkcja jedynie z tego korzysta, a ten kod poniżej jest używany, gdzie indziej w kodzie {{ZobaczTeż|p.LinkowanieFinalizowaniePrac}}:
<syntaxhighlight lang="lua">
if(czy_pobierz)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then
tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={};
end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},});
end;
</syntaxhighlight>
W tej tablicy mieszczą się informację, co do poszczególnych obiektów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jak: {{s|PobierzŚródtekst}}.
----
; Inne{{dk}}
Z tych tabel korzysta, nie tylko, szablon: {{s|Śródtekst}}, ale też i: {{s|PobierzŚródtekst}}, przy pomocy oprogramowania modułu: {{m|StronicowyParser}}, czy: {{m|StronicowyParser/}}.
== {{Śródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}{{Code|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}} ==
Funkcja służy do zastępowania parametrów, w szablonie typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, w zmiennych parametru: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}} lub {{Code|1}} {{LinkPatrz|1}}, w jego wartości, argumentów typu o wzorze ogólnym: {{Code|<nowiki>klucz%d*</nowiki>}} {{Patrz|klucz%d*}}, na odpowiednie wartości, ustawiane przez szablon w rodzaju: {{s|PobierzŚródtekst}} {{LinkPatrz|Pobierz}}, występujących w parametrach w wywołaniach jego szablonu lub bezpośrednio w tym pierwszym.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PreparowanieSzablonoweLinkoweSzablonuTekstu(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} {{Patrz|tekst-kod}} | _1 = Jest to kod bazy: {{Code|{{m|Szablonowe}}}}, o odpowiednim formacie,którego poszczególne elementy dzieci i potomków są modyfikowane.
| 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa strony w formacie wykonywalnym szablonów, względem innych przestrzeni.
| 3 = Parametry szablonu typu: {{s|Śródtekst}}, rodzaju: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}: | nagłówek3 = tak
| 4 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|stare__tablica_analizy_obiektow_strony_dany_modul}} | _4 = Baza danych szablonowa stworzona specjalnie dla szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, który jest dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tą funkcję.
| 5 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|stare___tablica_danych_parametrow_szablonu_strony}} | _5 = Tabela paremetrów rozwinieć bazy: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|stare__tablica_analizy_obiektow_strony_dany_modul}}, dzięki któremu uzyskuje się przyszybszenie stronicowego parsera. Jest ona dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tę funkcję.
| 6 = Parametry szablonu typu: {{s|PobierzŚródtekst}}, rodzaju: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla strony bieżącej: | nagłówek6 = tak
| 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. Jest to tabela parametrów szablonu.
| 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Jest to tablica bazy kodów parsowania: '''{{ld|Szablonowe|w bibliotece parsowania dowolnego wikikodu mechanizmu MediaWiki}}'''.
| 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Jest to baza parametrów rozwinieć, jak: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|stare___tablica_danych_parametrow_szablonu_strony}}, ale dla: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 10 = Nazwy danej książki danej strony, jeśli poszczególne istnieją, na którą wskazuje szablon typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, na odpowiedni szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}: | nagłówek10 = tak
| 11 = {{Code|nazwa_modulu_ksiazki_tekstu}} {{Patrz|nazwa_modulu_ksiazki_tekstu}} | _11 = Pełna nazwa książki danej strony, lub ewentualnie w niektórych przypadkach bez przestrzeni nazw.
| 12 = {{Code|nazwa_artykulu_tekstu}} {{Patrz|nazwa_artykulu_tekstu}} | _12 = Nazwa książkowa artykułu danej strony.
}}
Zweacane parametry:
{{OpisParametrów
| 1 = Zwraca to samo, co jest tym: {{Code|tekst}} {{LinkPatrz|tekst-kod}} | komórka1 = tak
}}
== {{Śródtytuł|p.ParametrTekstowySzablonuTekstu}}{{Code|p.ParametrTekstowySzablonuTekstu}} ==
Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, tekstu o nazwie pierwszy z kolei, który istnieje, więc: {{Code|tekst}} {{Patrz|tekst}}, {{Code|treść}} {{Patrz|treść}} lub {{Code|1}} {{Patrz|1}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca:
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o różnych parametrach nazwanych lub nienazwanych.
}}
== {{Śródtytuł|p.SzablonTekstuBezPreProcess}}{{Code|p.SzablonTekstuBezPreProcess}} ==
Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, o nazwie {{Code|bez preprocess}} {{Patrz|bez preprocess}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca:
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o parametrach nazwanych lub nienazwanych.
}}
== {{Śródtytuł|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}}{{Code|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}} ==
Funkcja elementy tablicy: {{Code|tablica_zmiennych2}} {{Patrz|tablica_zmiennych2}}, przypisuje tablicy: {{Code|tablica_zmiennych}} {{Patrz|tablica_zmiennych}}, czyli do tego pierwszego dodaje elementy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, do tablicy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a jeżeli ta tablica nie istnieje, to jest tworzona:
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}, jest to tablica dla strony niekorzystanej.
| 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}, jest to tablica dla strony korzystanej, aktualnej strony, która jest wyświetlana na ekranie.
}}
== {{Śródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}{{Code|p.DodawanieDoBazyStronySzablonuTekstu}} ==
Szablon dodający elementy do tablicy bazy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, lub {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, tzn. do tablicy: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, jest równy wartości fałszywej, przeciwnie do: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tej samej tablicy co poprzednio. Te elementy są dodawane według następującego kodu: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}} lub {{LinkPatrz|tablica_zmiennych2}}.
| 2 = {{Code|wartosc_elementu}} {{Patrz|wartosc_elementu}} | _2 = Rodzaj elementu, jak: {{Code|Śródtekst}} {{Patrz|rodzaj: Śródtekst}}, dla jednego z szablonów tekstu.
| 3 = {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} | _3 = Tablica elementu tablicy zbierającej dane, element posiada tylko pierwszy element, który jest uchwytem.
| 4 = {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}} | _4 = Obiekt i kod, szablonu typu {{s|Śródtekst}} {{LinkPatrz|Śródtekst}} w tekście zakodowanym.
| 5 = {{Code|tabela_parametrow_szablonu}} | _5 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}.
| 6 = {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} | _6 = Nazwa szablonu tekstu, typu, dla {{LinkPatrz|Śródtekst}}.
| 7 = {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} | _7 = Tablica modyfikatorów uruchmienia szablonu {{LinkPatrz|Śródtekst}}.
| 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Tablica bazy kodów modułu {{m|Szablonowe}}.
| 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _9 = Tablica rozkładu na czynniki pierwsze, elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 10 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _10 = Przyjmuje wartość: {{Code|true}}, gdy artykuł jest taki sam, jak strona w przeglądarce.
}}
Tablica jako drugi element dodawanej tablicy w kodzie: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}, to są tam podtablice, które są tablicami składających się z obiektu i kodu elementu {{s|PobierzŚródtekst}} {{Patrz|PobierzŚródtekst}}, tych podtablic może być wiele dla różnych tych.
== {{Śródtytuł|p.UstawianiePobierz}}{{Code|p.UstawianiePobierz}} ==
Funkcja dodaje do danego elementu typu: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, utworzonego na podstawie obiektów nie typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, w postaci tablicy utworzonego z trzech elementów, tzn.: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}, a trzeci element tablicy jest numerkiem nazwanym, ile w danym elemencie było wtedy aktualnie elementów przed wywołaniem szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla zmiennych w tablicach: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. Ten element służy do wstawiania innych elementów do tablic nazwanych uchwytów oraz ich numerków (dla elementów numerowanych) lub nie, aby przesunąc od pewnego momentu ich zawartości do przodu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}.
| 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}.
| 3 = {{Code|obiekt}} {{LinkPatrz|Pobierz: obiekt}} | _3 = Obiekt, jak: {{LinkPatrz|rodzaj: Śródtekst}}, obiektu typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}.
| 4 = {{Code|kod}} {{LinkPatrz|Pobierz: kod}} | _4 = Numer danego obiektu typu {{LinkPatrz|Pobierz}}.
| 5 = {{Code|nazwa_obiektu}} {{Patrz|nazwa_obiektu}} | _5 = Nazwa danego obiektu {{LinkPatrz|Śródtekst}}.
| 6 = {{Code|uchwyt_obiektu}} {{Patrz|uchwyt_obiektu}} | _6 = Unikalny uchwyt danego obiektu {{LinkPatrz|Śródtekst}}.
| 7 = {{Code|czy_artykul_korzystany}} | _7 = Jak w: {{LinkPatrz|czy_artykul_korzystany}}.
}}
Gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, przyjmuje wartość {{Code|true}}, wtedy jest używana tablica: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tej samej tablicy, co poprzednio, ale dla elementów typu: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, na podstawie tego w ten sposób jest tworzona pewna tablica, te elementy są dodawane do drugiej podtablicy w tablicy dodawanej w {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}.
== {{Śródtytuł|p.UstawPobierzKorzystanie}}{{Code|p.UstawPobierzKorzystanie}} ==
Funkcja na podstawie stworzonych elementów w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{Patrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, która składa się z tablic numerowanych, gdzie w każdej takiej jego tablicy są dwie podtablice, te elementy są zbierane dla: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, pierwsza taka podtablica jest tablicą numerowaną z: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu}}, i {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu}}, a druga taka podtablica jest z: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UstawPobierzKorzystanie(tablica_zmiennych2)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tablica_zmiennych2}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych2}}.
}}
Na podstawie każdego takich elementów numerowanych w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, jest uruchamiana funkcja: {{LinkŚródtytuł|p.UstawianiePobierz}}, dla pierwszego parametru z wartością {{Code|nil}}, drugim: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, i dalszymi.
== {{Śródtytuł|p.ZamienianiePobierzNaKod}}{{Code|p.ZamienianiePobierzNaKod}} ==
Funkcja na podstawie parametru {{ZobaczTeż|tekst}}: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, występujących w tabeli: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, zdefiniowanych jako tablica: {{Code|<nowiki>pozycja[3][1][1]</nowiki>}}.
Modyfikuje też element: {{ZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}}, zapisany w bazie szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, tzn.: {{Code|<nowiki>(pozycja[4] or {})[1]</nowiki>}} (baza kodów bazy dla danego szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}), a jeśli ona nie istnieje, to: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}} (baza kodów strony bieżącej), i {{Code|<nowiki>(pozycja[4] or {})[2]</nowiki>}} (baza parametrów danych obiektów dla szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}), a jeśli ona nie istnieje, to: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}} (baza parametrów strony bieżącej), ale zwykle istnieją te pierwsze, aby wyświetlić zamieniony, czyli zmodyfikowany, element, ewentualnie ze zmodyfikowaną kolejno bazą danych kodów i parametrów strony bieżącej.
Funkcja do szybszego działania wykorzystuje tabelę: {{Code|(pozycja[4] or {})[2]}} lub {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
Funkcja przyszykowuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, względem parametrów, wskazującego na niego, szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, do dalszej analizy przez: '''{{ld|StronicowyParser|Stronnicowy Parser}}''', to jest robione przy pomocy: {{LinkŚródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="Lua">
function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|obiekt}} | _1 = Jak w: {{LinkPatrz|Pobierz: obiekt}}.
| 2 = {{Code|kod}} | _2 = Jak w: {{LinkPatrz|Pobierz: kod}}.
| 3 = {{Code|pozycja}} | _3 = Dany element numerowany, który przedstawia pozycję dla elementów typu: {{LinkPatrz|Śródtekst}}, ze strony szablonów rodzaju: {{Code|Śródtekst}}{{LinkPatrz|Śródtekst}}, lub {{Code|Pobierz}} {{LinkPatrz|Pobierz}}.
| 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
| 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}.
| 8 = {{Code|czy_korzystane}} {{Patrz|czy_korzystane}} | _8 = Czy wykorzystawane elementy są typu: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy ta wartość przyjmuje wartość {{Code|true}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}.
}}
Funkcja wykorzystuje do modyfikacji funkcję: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, ona seryjnie modyfikuje całe elementy tekstu {{LinkZobaczTeż|tekst}} lub elementy bazy {{LinkZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}} o pewnych dwuwymiarowych nazwach, co do kodów bazy. Element tekstu do modyfikacji jest uzyskiwany z funkcji: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, jeżeli ten tekst istnieje, a gdy nie, to funkcja nie zwraca żadnej wartości, a jak jest, to ten tekst, ze zmodyfikowaną tabelą bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, też ze zmodyfikowaną tabelą parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
== {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuPobierz}} ==
Funkcja zastępuje swoje odwołanie uchwytowe dla elementu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, szablonu typu: {{s|PobierzŚródtekst}}, przetransformowanym tekstem z szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}: o tych samych uchwytach z elementów typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jeżeli jest jeden tam taki uchwyt dla tego elementu, na odpowiedniej stronie nie otoczonej znacznikami: {{Tag|includeonly}}, '''mechanizmu: {{NS|l=tak|k=mw|w=tak|pk=d}}'''.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Treści obiektu typu: {{LinkPatrz|Pobierz}}.
| 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|Pobierz: obiekt}}.
| 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|Pobierz: kod}}.
| 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
| 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}.
| 8 = {{Code|tablica_zmiennych}} | _8 = Jak w: {{LinkPatrz|tablica_zmiennych}}.
}}
Funkcja wykorzystuje funkcję: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na bieżącej stronie, lub {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na stronie niebieżącej, obie tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a także funkcję: {{LinkŚródtytuł|p.ZamienianiePobierzNaKod}}, który zamienia ten obiekt: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, pobierania na odpowiedni wikikod do działania z szablonu tekstu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Jeżeli funkcja nie wykrywała w ramach aktualnej strony elementu typu nie {{LinkPatrz|Pobierz}} swojego odpowiednika względem tej pierwszej tablicy, to szuka je w ramach tej niekaktualnej względem tej drugiej, a jeżeli funkcja znalazła taki swój odpowiednik, to go zwraca, a jeżeli nie, to zwraca wartość {{Code|nil}}.
== {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} ==
Szablon zastępuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jej zawartością tekstową: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, jeśli istnieje, w odpowiedni sposób.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}.
| 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}.
| 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod}}.
| 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
| 7 = {{Code|tablica_zmiennych}} | _7 = Jak w: {{LinkPatrz|tablica_zmiennych}}.
}}
Funkcja do swojego działania wykorzystuje tabelę: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, by dało się to zastąpienie wykonać. Funkcja do swojego działania potrzebuje: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, który pobiera tekst z tego szablonu, i zamieniąc go typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, ale nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, właśnie na to.
== {{Śródtytuł|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}}{{Code|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}} ==
Funkcje elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, i typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, zastępuje je zawartością kolejno z odpowiednich szablonów pierwszego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}} (tutaj z siebie samego pobiera tekst, i zastępują siebie właśnie tym), i drugiego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jej zawartością, oczywiście, biorąc zawartość tekstowa z: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jest właśnie tam ustawiana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _1 = tekst, na którym operujemy, modyfikując odpowiednio jego kody, dotyczące tych dwóch szablonów,
| 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa w formacie szablonowym strony danej, nie tylko szablonów, w wywołaniach szablonowych.
| 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
| 5 = {{Code|tablica_zmiennych}} | _5 = Jak w: {{LinkPatrz|tablica_zmiennych}}.
| 6 = {{Code|IterowaniePoElementachTekstu}} {{Patrz|IterowaniePoElementachTekstu}} | _6 = Iterator po elementach kodów szablonowych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} i związaną z nim: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
}}
Funkcja wykorzystuje odpowiednio tablice: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - tablica o szablonach {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}} na stronach niebieżących, i {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - a tutaj bieżących, obie tablicy są podtabelami tabeli wyższej (nadrzędnej: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, są używane do szybkiego zakończeniu funkcji, gdy by takich tam obiektów nie było, w tekście. Są one używane do zastąpienia ich zawartością z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}.
Funkcja do swojego działania wykorzystuje funkcje: {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}} - gdy mamy szablony typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, i {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} - jeśli używamy elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Aby wykorzystać te funkcje, uruchamiana jest najpierw: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, to zastąpienia tego typu szanlonów odpowiednią zawartością z tych zmiennych.
Funkcja do sprawdzania, czy są tego typu szablony z dwóch, rewiduje, czy one są pierwszego typu, czy drugiego, aby dało się je zastąpić wartością wikikodu ze zmiennej z szablonów {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, to wykorzystuje do tego typu tabele: {{Code|{{sr|#p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu}}, dla obiektów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, a: {{Code|{{sr|#p.szablony_stronicowego_parsera.szablony_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowego_parsera.szablony_tekstu}}, dla obiektu typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, ale: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
mkznjerj93he2brwqmf7dgud75x3w8i
558397
558389
2026-10-03T10:17:48Z
Persino
2851
/* {{Śródtytuł|p.ZamienianiePobierzNaKod}}{{Code|p.ZamienianiePobierzNaKod}} */
558397
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SzablonyTekstu}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Ten moduł służy do obsługi szablonów: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}.
* Szablony typu: {{Code|Śródtekst}} {{Patrz|Śródtekst}}, to są: {{s|Śródtekst}}.
** {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - to jest typ obiektu i jego numer szablonów typu: nie {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}.
* Szablony typu: {{Code|Pobierz}} {{Patrz|Pobierz}}, to są: {{s|PobierzŚródtekst}}.
** {{Code|Pobierz: obiekt}} {{Patrz|Pobierz: obiekt}} i {{Code|Pobierz: kod}} {{Patrz|Pobierz: kod}} - to jest typ obiektu i jego numer szablonów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}.
Szablony: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}, mają walidację błędów, więc mogą, oprócz parametrów standardowych, przyjmować zmienne o kluczach odpowiednio: {{Code|klucz}} (lub {{Code|klucz1}}), {{Code|klucz2}}, {{Code|klucz3}}, ..., itd.. Tych parametrów może być dowolna liczba, ale mogą być pomiędzy nimi przerwy.
; Zbieranie elementów typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, na stronie bieżącej, jak i dołączonej{{dk}}
'''{{ld|StronicowyParser|Stronicowy parser}}''' jak napotka szablon {{s|Śródtekst}}, to generuje tworzenie następujących tablic: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{Patrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, dla tych szablonów w artykule niekorzystanej, lub korzystanej według: {{Code|tablica_szablonu_tekstu_korzystanych}} {{Patrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, jako {{ZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}:
<syntaxhighlight lang="lua">
if(not czy_artykul_korzystany)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{
{wartosc_elementu,lista_dwuelementowa,},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
{tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,},
});
else
if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{
{wartosc_elementu,lista_dwuelementowa,},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
{tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,},
});
end;
</syntaxhighlight>
* Teb powyższy kod, to nic innego jak część definicji fukcji: {{LinkŚródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}, używaną do stawiaia tego, gdy napotkano szablony tytu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}.
; Strony niebieżące - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}} na stronie bieżącej, które odwołują się właśnie do tej niebieżącej{{dk}}
Drugi element wsadzanej tablicy za pomocą {{LzLua|table.insert}}, jest to nic innego, jak tablica zawierająca następne tablice, gdy tam jakiś element się pojawi, a ta operacja jest robina przez funkcję {{LinkŚródtytuł|p.UstawianiePobierz}} {{ZobaczTeż|p.UstawianiePobierz}}:
<syntaxhighlight lang="lua">
local tablica_szablonu_tekstu;
if(czy_artykul_korzystany)then
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych;
else
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych;
end;
if(tablica_szablonu_tekstu)then
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
...
local dodatkowe_elementy=pozycja[2];
...
if(not czy_tak)then
local tab_numer;
if(tablica_zmiennych)then
tab_numer={};
for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do
tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name];
end;
end;
table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer});
break;
</syntaxhighlight>
* gdzie: tabela: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}}, będąca podtabelą tabeli: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, to nic innego, jak zbiór tablic mniejszych dla posczególnych obiektów, tutaj nazwanych kluczami: {{Code|name}}, w tych mniejszych mieszczą się pojedyncze tabele, ktore pierwszym elementem jest uchwyt, a drugim jest sam tekst szablonu typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}.
* Tą funkcję używamy do zbierania informacji o inne stronie, dołączonej do aktualnej, w wyniku uruchomienia szablonu linku lub pobierania.
; Strony bieżące korzystane - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, które odwołują się do niej{{dk}}
Funkcja natomiast: {{LinkŚródtytuł|p.UstawianiePobierz}}, jest uruchamiana przez funkcję: {{LinkŚródtytuł|p.UstawPobierzKorzystanie}}, dla modułu bieżącego, która zbiera odpowiednie elementy pobierania (szablony typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}) w tablicach linkowych (pobierania) {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, to są tablice, aktualnej - bieżącej, strony, ta tablica jest tworzona sposobem, ale nie w tej funkcji, ta funkcja jedynie z tego korzysta, a ten kod poniżej jest używany, gdzie indziej w kodzie {{ZobaczTeż|p.LinkowanieFinalizowaniePrac}}:
<syntaxhighlight lang="lua">
if(czy_pobierz)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then
tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={};
end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},});
end;
</syntaxhighlight>
W tej tablicy mieszczą się informację, co do poszczególnych obiektów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jak: {{s|PobierzŚródtekst}}.
----
; Inne{{dk}}
Z tych tabel korzysta, nie tylko, szablon: {{s|Śródtekst}}, ale też i: {{s|PobierzŚródtekst}}, przy pomocy oprogramowania modułu: {{m|StronicowyParser}}, czy: {{m|StronicowyParser/}}.
== {{Śródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}{{Code|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}} ==
Funkcja służy do zastępowania parametrów, w szablonie typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, w zmiennych parametru: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}} lub {{Code|1}} {{LinkPatrz|1}}, w jego wartości, argumentów typu o wzorze ogólnym: {{Code|<nowiki>klucz%d*</nowiki>}} {{Patrz|klucz%d*}}, na odpowiednie wartości, ustawiane przez szablon w rodzaju: {{s|PobierzŚródtekst}} {{LinkPatrz|Pobierz}}, występujących w parametrach w wywołaniach jego szablonu lub bezpośrednio w tym pierwszym.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PreparowanieSzablonoweLinkoweSzablonuTekstu(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} {{Patrz|tekst-kod}} | _1 = Jest to kod bazy: {{Code|{{m|Szablonowe}}}}, o odpowiednim formacie,którego poszczególne elementy dzieci i potomków są modyfikowane.
| 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa strony w formacie wykonywalnym szablonów, względem innych przestrzeni.
| 3 = Parametry szablonu typu: {{s|Śródtekst}}, rodzaju: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}: | nagłówek3 = tak
| 4 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|stare__tablica_analizy_obiektow_strony_dany_modul}} | _4 = Baza danych szablonowa stworzona specjalnie dla szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, który jest dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tą funkcję.
| 5 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|stare___tablica_danych_parametrow_szablonu_strony}} | _5 = Tabela paremetrów rozwinieć bazy: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|stare__tablica_analizy_obiektow_strony_dany_modul}}, dzięki któremu uzyskuje się przyszybszenie stronicowego parsera. Jest ona dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tę funkcję.
| 6 = Parametry szablonu typu: {{s|PobierzŚródtekst}}, rodzaju: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla strony bieżącej: | nagłówek6 = tak
| 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. Jest to tabela parametrów szablonu.
| 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Jest to tablica bazy kodów parsowania: '''{{ld|Szablonowe|w bibliotece parsowania dowolnego wikikodu mechanizmu MediaWiki}}'''.
| 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Jest to baza parametrów rozwinieć, jak: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|stare___tablica_danych_parametrow_szablonu_strony}}, ale dla: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 10 = Nazwy danej książki danej strony, jeśli poszczególne istnieją, na którą wskazuje szablon typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, na odpowiedni szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}: | nagłówek10 = tak
| 11 = {{Code|nazwa_modulu_ksiazki_tekstu}} {{Patrz|nazwa_modulu_ksiazki_tekstu}} | _11 = Pełna nazwa książki danej strony, lub ewentualnie w niektórych przypadkach bez przestrzeni nazw.
| 12 = {{Code|nazwa_artykulu_tekstu}} {{Patrz|nazwa_artykulu_tekstu}} | _12 = Nazwa książkowa artykułu danej strony.
}}
Zweacane parametry:
{{OpisParametrów
| 1 = Zwraca to samo, co jest tym: {{Code|tekst}} {{LinkPatrz|tekst-kod}} | komórka1 = tak
}}
== {{Śródtytuł|p.ParametrTekstowySzablonuTekstu}}{{Code|p.ParametrTekstowySzablonuTekstu}} ==
Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, tekstu o nazwie pierwszy z kolei, który istnieje, więc: {{Code|tekst}} {{Patrz|tekst}}, {{Code|treść}} {{Patrz|treść}} lub {{Code|1}} {{Patrz|1}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca:
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o różnych parametrach nazwanych lub nienazwanych.
}}
== {{Śródtytuł|p.SzablonTekstuBezPreProcess}}{{Code|p.SzablonTekstuBezPreProcess}} ==
Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, o nazwie {{Code|bez preprocess}} {{Patrz|bez preprocess}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca:
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o parametrach nazwanych lub nienazwanych.
}}
== {{Śródtytuł|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}}{{Code|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}} ==
Funkcja elementy tablicy: {{Code|tablica_zmiennych2}} {{Patrz|tablica_zmiennych2}}, przypisuje tablicy: {{Code|tablica_zmiennych}} {{Patrz|tablica_zmiennych}}, czyli do tego pierwszego dodaje elementy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, do tablicy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a jeżeli ta tablica nie istnieje, to jest tworzona:
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}, jest to tablica dla strony niekorzystanej.
| 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}, jest to tablica dla strony korzystanej, aktualnej strony, która jest wyświetlana na ekranie.
}}
== {{Śródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}{{Code|p.DodawanieDoBazyStronySzablonuTekstu}} ==
Szablon dodający elementy do tablicy bazy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, lub {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, tzn. do tablicy: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, jest równy wartości fałszywej, przeciwnie do: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tej samej tablicy co poprzednio. Te elementy są dodawane według następującego kodu: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}} lub {{LinkPatrz|tablica_zmiennych2}}.
| 2 = {{Code|wartosc_elementu}} {{Patrz|wartosc_elementu}} | _2 = Rodzaj elementu, jak: {{Code|Śródtekst}} {{Patrz|rodzaj: Śródtekst}}, dla jednego z szablonów tekstu.
| 3 = {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} | _3 = Tablica elementu tablicy zbierającej dane, element posiada tylko pierwszy element, który jest uchwytem.
| 4 = {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}} | _4 = Obiekt i kod, szablonu typu {{s|Śródtekst}} {{LinkPatrz|Śródtekst}} w tekście zakodowanym.
| 5 = {{Code|tabela_parametrow_szablonu}} | _5 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}.
| 6 = {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} | _6 = Nazwa szablonu tekstu, typu, dla {{LinkPatrz|Śródtekst}}.
| 7 = {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} | _7 = Tablica modyfikatorów uruchmienia szablonu {{LinkPatrz|Śródtekst}}.
| 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Tablica bazy kodów modułu {{m|Szablonowe}}.
| 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _9 = Tablica rozkładu na czynniki pierwsze, elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 10 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _10 = Przyjmuje wartość: {{Code|true}}, gdy artykuł jest taki sam, jak strona w przeglądarce.
}}
Tablica jako drugi element dodawanej tablicy w kodzie: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}, to są tam podtablice, które są tablicami składających się z obiektu i kodu elementu {{s|PobierzŚródtekst}} {{Patrz|PobierzŚródtekst}}, tych podtablic może być wiele dla różnych tych.
== {{Śródtytuł|p.UstawianiePobierz}}{{Code|p.UstawianiePobierz}} ==
Funkcja dodaje do danego elementu typu: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, utworzonego na podstawie obiektów nie typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, w postaci tablicy utworzonego z trzech elementów, tzn.: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}, a trzeci element tablicy jest numerkiem nazwanym, ile w danym elemencie było wtedy aktualnie elementów przed wywołaniem szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla zmiennych w tablicach: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. Ten element służy do wstawiania innych elementów do tablic nazwanych uchwytów oraz ich numerków (dla elementów numerowanych) lub nie, aby przesunąc od pewnego momentu ich zawartości do przodu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}.
| 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}.
| 3 = {{Code|obiekt}} {{LinkPatrz|Pobierz: obiekt}} | _3 = Obiekt, jak: {{LinkPatrz|rodzaj: Śródtekst}}, obiektu typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}.
| 4 = {{Code|kod}} {{LinkPatrz|Pobierz: kod}} | _4 = Numer danego obiektu typu {{LinkPatrz|Pobierz}}.
| 5 = {{Code|nazwa_obiektu}} {{Patrz|nazwa_obiektu}} | _5 = Nazwa danego obiektu {{LinkPatrz|Śródtekst}}.
| 6 = {{Code|uchwyt_obiektu}} {{Patrz|uchwyt_obiektu}} | _6 = Unikalny uchwyt danego obiektu {{LinkPatrz|Śródtekst}}.
| 7 = {{Code|czy_artykul_korzystany}} | _7 = Jak w: {{LinkPatrz|czy_artykul_korzystany}}.
}}
Gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, przyjmuje wartość {{Code|true}}, wtedy jest używana tablica: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tej samej tablicy, co poprzednio, ale dla elementów typu: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, na podstawie tego w ten sposób jest tworzona pewna tablica, te elementy są dodawane do drugiej podtablicy w tablicy dodawanej w {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}.
== {{Śródtytuł|p.UstawPobierzKorzystanie}}{{Code|p.UstawPobierzKorzystanie}} ==
Funkcja na podstawie stworzonych elementów w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{Patrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, która składa się z tablic numerowanych, gdzie w każdej takiej jego tablicy są dwie podtablice, te elementy są zbierane dla: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, pierwsza taka podtablica jest tablicą numerowaną z: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu}}, i {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu}}, a druga taka podtablica jest z: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UstawPobierzKorzystanie(tablica_zmiennych2)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tablica_zmiennych2}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych2}}.
}}
Na podstawie każdego takich elementów numerowanych w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, jest uruchamiana funkcja: {{LinkŚródtytuł|p.UstawianiePobierz}}, dla pierwszego parametru z wartością {{Code|nil}}, drugim: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, i dalszymi.
== {{Śródtytuł|p.ZamienianiePobierzNaKod}}{{Code|p.ZamienianiePobierzNaKod}} ==
Funkcja na podstawie parametru {{ZobaczTeż|tekst}}: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, występujących w tabeli: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, zdefiniowanych jako tablica: {{Code|<nowiki>pozycja[3][1][1]</nowiki>}}.
Modyfikuje też elementy zapisane w bazie szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}:
* Zdefiniujmy, że to: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|__tablica_analizy_obiektow_strony_dany_modul}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[1]</nowiki>}} (baza kodów bazy zakodowanego tekstu), a jeśli ona nie istnieje, to: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}} (baza kodów strony bieżącej).
* Zdefiniujmy, że to: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|__tablica_danych_parametrow_szablonu_strony}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[2]</nowiki>}} (baza parametrów danych obiektów dla szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}), a jeśli ona nie istnieje, to: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}} (baza parametrów strony bieżącej).
: Ale to zwykle istnieją te poszczególne pierwsze, aby wyświetlić zamieniony, czyli zmodyfikowany, element, ewentualnie ze zmodyfikowaną kolejno bazą danych kodów i parametrów strony bieżącej.
Funkcja do szybszego działania wykorzystuje tabelę: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony}} i {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
Funkcja robi kopię: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|__tablica_analizy_obiektow_strony_dany_modul}}, i {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|__tablica_danych_parametrow_szablonu_strony}}, dla każdego wywołania szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, aby było możeliwe jego analizowanie względem różnych wywołań tego szablonu do tego samego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, o pewnym uchwycie na danej stronie.
Funkcja przyszykowuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, względem parametrów, wskazującego na niego, szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, do dalszej analizy przez: '''{{ld|StronicowyParser|Stronnicowy Parser}}''', to jest robione przy pomocy: {{LinkŚródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="Lua">
function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|obiekt}} | _1 = Jak w: {{LinkPatrz|Pobierz: obiekt}}.
| 2 = {{Code|kod}} | _2 = Jak w: {{LinkPatrz|Pobierz: kod}}.
| 3 = {{Code|pozycja}} | _3 = Dany element numerowany, który przedstawia pozycję dla elementów typu: {{LinkPatrz|Śródtekst}}, ze strony szablonów rodzaju: {{Code|Śródtekst}}{{LinkPatrz|Śródtekst}}, lub {{Code|Pobierz}} {{LinkPatrz|Pobierz}}.
| 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
| 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}.
| 8 = {{Code|czy_korzystane}} {{Patrz|czy_korzystane}} | _8 = Czy wykorzystawane elementy są typu: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy ta wartość przyjmuje wartość {{Code|true}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}.
}}
Funkcja wykorzystuje do modyfikacji funkcję: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, ona seryjnie modyfikuje całe elementy tekstu {{LinkZobaczTeż|tekst}} lub elementy bazy {{LinkZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}} o pewnych dwuwymiarowych nazwach, co do kodów bazy. Element tekstu do modyfikacji jest uzyskiwany z funkcji: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, jeżeli ten tekst istnieje, a gdy nie, to funkcja nie zwraca żadnej wartości, a jak jest, to ten tekst, ze zmodyfikowaną tabelą bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, też ze zmodyfikowaną tabelą parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
== {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuPobierz}} ==
Funkcja zastępuje swoje odwołanie uchwytowe dla elementu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, szablonu typu: {{s|PobierzŚródtekst}}, przetransformowanym tekstem z szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}: o tych samych uchwytach z elementów typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jeżeli jest jeden tam taki uchwyt dla tego elementu, na odpowiedniej stronie nie otoczonej znacznikami: {{Tag|includeonly}}, '''mechanizmu: {{NS|l=tak|k=mw|w=tak|pk=d}}'''.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Treści obiektu typu: {{LinkPatrz|Pobierz}}.
| 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|Pobierz: obiekt}}.
| 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|Pobierz: kod}}.
| 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
| 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}.
| 8 = {{Code|tablica_zmiennych}} | _8 = Jak w: {{LinkPatrz|tablica_zmiennych}}.
}}
Funkcja wykorzystuje funkcję: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na bieżącej stronie, lub {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na stronie niebieżącej, obie tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a także funkcję: {{LinkŚródtytuł|p.ZamienianiePobierzNaKod}}, który zamienia ten obiekt: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, pobierania na odpowiedni wikikod do działania z szablonu tekstu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Jeżeli funkcja nie wykrywała w ramach aktualnej strony elementu typu nie {{LinkPatrz|Pobierz}} swojego odpowiednika względem tej pierwszej tablicy, to szuka je w ramach tej niekaktualnej względem tej drugiej, a jeżeli funkcja znalazła taki swój odpowiednik, to go zwraca, a jeżeli nie, to zwraca wartość {{Code|nil}}.
== {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} ==
Szablon zastępuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jej zawartością tekstową: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, jeśli istnieje, w odpowiedni sposób.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}.
| 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}.
| 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod}}.
| 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
| 7 = {{Code|tablica_zmiennych}} | _7 = Jak w: {{LinkPatrz|tablica_zmiennych}}.
}}
Funkcja do swojego działania wykorzystuje tabelę: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, by dało się to zastąpienie wykonać. Funkcja do swojego działania potrzebuje: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, który pobiera tekst z tego szablonu, i zamieniąc go typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, ale nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, właśnie na to.
== {{Śródtytuł|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}}{{Code|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}} ==
Funkcje elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, i typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, zastępuje je zawartością kolejno z odpowiednich szablonów pierwszego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}} (tutaj z siebie samego pobiera tekst, i zastępują siebie właśnie tym), i drugiego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jej zawartością, oczywiście, biorąc zawartość tekstowa z: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jest właśnie tam ustawiana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _1 = tekst, na którym operujemy, modyfikując odpowiednio jego kody, dotyczące tych dwóch szablonów,
| 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa w formacie szablonowym strony danej, nie tylko szablonów, w wywołaniach szablonowych.
| 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
| 5 = {{Code|tablica_zmiennych}} | _5 = Jak w: {{LinkPatrz|tablica_zmiennych}}.
| 6 = {{Code|IterowaniePoElementachTekstu}} {{Patrz|IterowaniePoElementachTekstu}} | _6 = Iterator po elementach kodów szablonowych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} i związaną z nim: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
}}
Funkcja wykorzystuje odpowiednio tablice: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - tablica o szablonach {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}} na stronach niebieżących, i {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - a tutaj bieżących, obie tablicy są podtabelami tabeli wyższej (nadrzędnej: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, są używane do szybkiego zakończeniu funkcji, gdy by takich tam obiektów nie było, w tekście. Są one używane do zastąpienia ich zawartością z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}.
Funkcja do swojego działania wykorzystuje funkcje: {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}} - gdy mamy szablony typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, i {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} - jeśli używamy elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Aby wykorzystać te funkcje, uruchamiana jest najpierw: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, to zastąpienia tego typu szanlonów odpowiednią zawartością z tych zmiennych.
Funkcja do sprawdzania, czy są tego typu szablony z dwóch, rewiduje, czy one są pierwszego typu, czy drugiego, aby dało się je zastąpić wartością wikikodu ze zmiennej z szablonów {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, to wykorzystuje do tego typu tabele: {{Code|{{sr|#p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu}}, dla obiektów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, a: {{Code|{{sr|#p.szablony_stronicowego_parsera.szablony_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowego_parsera.szablony_tekstu}}, dla obiektu typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, ale: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
lips4amte5ssccwsujrgdbk6eumytaw
558398
558397
2026-10-03T10:19:33Z
Persino
2851
/* {{Śródtytuł|p.ZamienianiePobierzNaKod}}{{Code|p.ZamienianiePobierzNaKod}} */
558398
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SzablonyTekstu}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Ten moduł służy do obsługi szablonów: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}.
* Szablony typu: {{Code|Śródtekst}} {{Patrz|Śródtekst}}, to są: {{s|Śródtekst}}.
** {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - to jest typ obiektu i jego numer szablonów typu: nie {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}.
* Szablony typu: {{Code|Pobierz}} {{Patrz|Pobierz}}, to są: {{s|PobierzŚródtekst}}.
** {{Code|Pobierz: obiekt}} {{Patrz|Pobierz: obiekt}} i {{Code|Pobierz: kod}} {{Patrz|Pobierz: kod}} - to jest typ obiektu i jego numer szablonów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}.
Szablony: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}, mają walidację błędów, więc mogą, oprócz parametrów standardowych, przyjmować zmienne o kluczach odpowiednio: {{Code|klucz}} (lub {{Code|klucz1}}), {{Code|klucz2}}, {{Code|klucz3}}, ..., itd.. Tych parametrów może być dowolna liczba, ale mogą być pomiędzy nimi przerwy.
; Zbieranie elementów typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, na stronie bieżącej, jak i dołączonej{{dk}}
'''{{ld|StronicowyParser|Stronicowy parser}}''' jak napotka szablon {{s|Śródtekst}}, to generuje tworzenie następujących tablic: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{Patrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, dla tych szablonów w artykule niekorzystanej, lub korzystanej według: {{Code|tablica_szablonu_tekstu_korzystanych}} {{Patrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, jako {{ZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}:
<syntaxhighlight lang="lua">
if(not czy_artykul_korzystany)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{
{wartosc_elementu,lista_dwuelementowa,},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
{tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,},
});
else
if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{
{wartosc_elementu,lista_dwuelementowa,},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
{tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,},
});
end;
</syntaxhighlight>
* Teb powyższy kod, to nic innego jak część definicji fukcji: {{LinkŚródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}, używaną do stawiaia tego, gdy napotkano szablony tytu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}.
; Strony niebieżące - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}} na stronie bieżącej, które odwołują się właśnie do tej niebieżącej{{dk}}
Drugi element wsadzanej tablicy za pomocą {{LzLua|table.insert}}, jest to nic innego, jak tablica zawierająca następne tablice, gdy tam jakiś element się pojawi, a ta operacja jest robina przez funkcję {{LinkŚródtytuł|p.UstawianiePobierz}} {{ZobaczTeż|p.UstawianiePobierz}}:
<syntaxhighlight lang="lua">
local tablica_szablonu_tekstu;
if(czy_artykul_korzystany)then
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych;
else
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych;
end;
if(tablica_szablonu_tekstu)then
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
...
local dodatkowe_elementy=pozycja[2];
...
if(not czy_tak)then
local tab_numer;
if(tablica_zmiennych)then
tab_numer={};
for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do
tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name];
end;
end;
table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer});
break;
</syntaxhighlight>
* gdzie: tabela: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}}, będąca podtabelą tabeli: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, to nic innego, jak zbiór tablic mniejszych dla posczególnych obiektów, tutaj nazwanych kluczami: {{Code|name}}, w tych mniejszych mieszczą się pojedyncze tabele, ktore pierwszym elementem jest uchwyt, a drugim jest sam tekst szablonu typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}.
* Tą funkcję używamy do zbierania informacji o inne stronie, dołączonej do aktualnej, w wyniku uruchomienia szablonu linku lub pobierania.
; Strony bieżące korzystane - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, które odwołują się do niej{{dk}}
Funkcja natomiast: {{LinkŚródtytuł|p.UstawianiePobierz}}, jest uruchamiana przez funkcję: {{LinkŚródtytuł|p.UstawPobierzKorzystanie}}, dla modułu bieżącego, która zbiera odpowiednie elementy pobierania (szablony typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}) w tablicach linkowych (pobierania) {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, to są tablice, aktualnej - bieżącej, strony, ta tablica jest tworzona sposobem, ale nie w tej funkcji, ta funkcja jedynie z tego korzysta, a ten kod poniżej jest używany, gdzie indziej w kodzie {{ZobaczTeż|p.LinkowanieFinalizowaniePrac}}:
<syntaxhighlight lang="lua">
if(czy_pobierz)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then
tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={};
end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},});
end;
</syntaxhighlight>
W tej tablicy mieszczą się informację, co do poszczególnych obiektów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jak: {{s|PobierzŚródtekst}}.
----
; Inne{{dk}}
Z tych tabel korzysta, nie tylko, szablon: {{s|Śródtekst}}, ale też i: {{s|PobierzŚródtekst}}, przy pomocy oprogramowania modułu: {{m|StronicowyParser}}, czy: {{m|StronicowyParser/}}.
== {{Śródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}{{Code|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}} ==
Funkcja służy do zastępowania parametrów, w szablonie typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, w zmiennych parametru: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}} lub {{Code|1}} {{LinkPatrz|1}}, w jego wartości, argumentów typu o wzorze ogólnym: {{Code|<nowiki>klucz%d*</nowiki>}} {{Patrz|klucz%d*}}, na odpowiednie wartości, ustawiane przez szablon w rodzaju: {{s|PobierzŚródtekst}} {{LinkPatrz|Pobierz}}, występujących w parametrach w wywołaniach jego szablonu lub bezpośrednio w tym pierwszym.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PreparowanieSzablonoweLinkoweSzablonuTekstu(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} {{Patrz|tekst-kod}} | _1 = Jest to kod bazy: {{Code|{{m|Szablonowe}}}}, o odpowiednim formacie,którego poszczególne elementy dzieci i potomków są modyfikowane.
| 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa strony w formacie wykonywalnym szablonów, względem innych przestrzeni.
| 3 = Parametry szablonu typu: {{s|Śródtekst}}, rodzaju: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}: | nagłówek3 = tak
| 4 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|stare__tablica_analizy_obiektow_strony_dany_modul}} | _4 = Baza danych szablonowa stworzona specjalnie dla szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, który jest dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tą funkcję.
| 5 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|stare___tablica_danych_parametrow_szablonu_strony}} | _5 = Tabela paremetrów rozwinieć bazy: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|stare__tablica_analizy_obiektow_strony_dany_modul}}, dzięki któremu uzyskuje się przyszybszenie stronicowego parsera. Jest ona dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tę funkcję.
| 6 = Parametry szablonu typu: {{s|PobierzŚródtekst}}, rodzaju: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla strony bieżącej: | nagłówek6 = tak
| 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. Jest to tabela parametrów szablonu.
| 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Jest to tablica bazy kodów parsowania: '''{{ld|Szablonowe|w bibliotece parsowania dowolnego wikikodu mechanizmu MediaWiki}}'''.
| 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Jest to baza parametrów rozwinieć, jak: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|stare___tablica_danych_parametrow_szablonu_strony}}, ale dla: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 10 = Nazwy danej książki danej strony, jeśli poszczególne istnieją, na którą wskazuje szablon typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, na odpowiedni szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}: | nagłówek10 = tak
| 11 = {{Code|nazwa_modulu_ksiazki_tekstu}} {{Patrz|nazwa_modulu_ksiazki_tekstu}} | _11 = Pełna nazwa książki danej strony, lub ewentualnie w niektórych przypadkach bez przestrzeni nazw.
| 12 = {{Code|nazwa_artykulu_tekstu}} {{Patrz|nazwa_artykulu_tekstu}} | _12 = Nazwa książkowa artykułu danej strony.
}}
Zweacane parametry:
{{OpisParametrów
| 1 = Zwraca to samo, co jest tym: {{Code|tekst}} {{LinkPatrz|tekst-kod}} | komórka1 = tak
}}
== {{Śródtytuł|p.ParametrTekstowySzablonuTekstu}}{{Code|p.ParametrTekstowySzablonuTekstu}} ==
Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, tekstu o nazwie pierwszy z kolei, który istnieje, więc: {{Code|tekst}} {{Patrz|tekst}}, {{Code|treść}} {{Patrz|treść}} lub {{Code|1}} {{Patrz|1}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca:
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o różnych parametrach nazwanych lub nienazwanych.
}}
== {{Śródtytuł|p.SzablonTekstuBezPreProcess}}{{Code|p.SzablonTekstuBezPreProcess}} ==
Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, o nazwie {{Code|bez preprocess}} {{Patrz|bez preprocess}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca:
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o parametrach nazwanych lub nienazwanych.
}}
== {{Śródtytuł|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}}{{Code|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}} ==
Funkcja elementy tablicy: {{Code|tablica_zmiennych2}} {{Patrz|tablica_zmiennych2}}, przypisuje tablicy: {{Code|tablica_zmiennych}} {{Patrz|tablica_zmiennych}}, czyli do tego pierwszego dodaje elementy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, do tablicy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a jeżeli ta tablica nie istnieje, to jest tworzona:
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}, jest to tablica dla strony niekorzystanej.
| 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}, jest to tablica dla strony korzystanej, aktualnej strony, która jest wyświetlana na ekranie.
}}
== {{Śródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}{{Code|p.DodawanieDoBazyStronySzablonuTekstu}} ==
Szablon dodający elementy do tablicy bazy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, lub {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, tzn. do tablicy: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, jest równy wartości fałszywej, przeciwnie do: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tej samej tablicy co poprzednio. Te elementy są dodawane według następującego kodu: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}} lub {{LinkPatrz|tablica_zmiennych2}}.
| 2 = {{Code|wartosc_elementu}} {{Patrz|wartosc_elementu}} | _2 = Rodzaj elementu, jak: {{Code|Śródtekst}} {{Patrz|rodzaj: Śródtekst}}, dla jednego z szablonów tekstu.
| 3 = {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} | _3 = Tablica elementu tablicy zbierającej dane, element posiada tylko pierwszy element, który jest uchwytem.
| 4 = {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}} | _4 = Obiekt i kod, szablonu typu {{s|Śródtekst}} {{LinkPatrz|Śródtekst}} w tekście zakodowanym.
| 5 = {{Code|tabela_parametrow_szablonu}} | _5 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}.
| 6 = {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} | _6 = Nazwa szablonu tekstu, typu, dla {{LinkPatrz|Śródtekst}}.
| 7 = {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} | _7 = Tablica modyfikatorów uruchmienia szablonu {{LinkPatrz|Śródtekst}}.
| 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Tablica bazy kodów modułu {{m|Szablonowe}}.
| 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _9 = Tablica rozkładu na czynniki pierwsze, elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 10 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _10 = Przyjmuje wartość: {{Code|true}}, gdy artykuł jest taki sam, jak strona w przeglądarce.
}}
Tablica jako drugi element dodawanej tablicy w kodzie: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}, to są tam podtablice, które są tablicami składających się z obiektu i kodu elementu {{s|PobierzŚródtekst}} {{Patrz|PobierzŚródtekst}}, tych podtablic może być wiele dla różnych tych.
== {{Śródtytuł|p.UstawianiePobierz}}{{Code|p.UstawianiePobierz}} ==
Funkcja dodaje do danego elementu typu: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, utworzonego na podstawie obiektów nie typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, w postaci tablicy utworzonego z trzech elementów, tzn.: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}, a trzeci element tablicy jest numerkiem nazwanym, ile w danym elemencie było wtedy aktualnie elementów przed wywołaniem szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla zmiennych w tablicach: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. Ten element służy do wstawiania innych elementów do tablic nazwanych uchwytów oraz ich numerków (dla elementów numerowanych) lub nie, aby przesunąc od pewnego momentu ich zawartości do przodu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}.
| 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}.
| 3 = {{Code|obiekt}} {{LinkPatrz|Pobierz: obiekt}} | _3 = Obiekt, jak: {{LinkPatrz|rodzaj: Śródtekst}}, obiektu typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}.
| 4 = {{Code|kod}} {{LinkPatrz|Pobierz: kod}} | _4 = Numer danego obiektu typu {{LinkPatrz|Pobierz}}.
| 5 = {{Code|nazwa_obiektu}} {{Patrz|nazwa_obiektu}} | _5 = Nazwa danego obiektu {{LinkPatrz|Śródtekst}}.
| 6 = {{Code|uchwyt_obiektu}} {{Patrz|uchwyt_obiektu}} | _6 = Unikalny uchwyt danego obiektu {{LinkPatrz|Śródtekst}}.
| 7 = {{Code|czy_artykul_korzystany}} | _7 = Jak w: {{LinkPatrz|czy_artykul_korzystany}}.
}}
Gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, przyjmuje wartość {{Code|true}}, wtedy jest używana tablica: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tej samej tablicy, co poprzednio, ale dla elementów typu: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, na podstawie tego w ten sposób jest tworzona pewna tablica, te elementy są dodawane do drugiej podtablicy w tablicy dodawanej w {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}.
== {{Śródtytuł|p.UstawPobierzKorzystanie}}{{Code|p.UstawPobierzKorzystanie}} ==
Funkcja na podstawie stworzonych elementów w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{Patrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, która składa się z tablic numerowanych, gdzie w każdej takiej jego tablicy są dwie podtablice, te elementy są zbierane dla: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, pierwsza taka podtablica jest tablicą numerowaną z: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu}}, i {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu}}, a druga taka podtablica jest z: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UstawPobierzKorzystanie(tablica_zmiennych2)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tablica_zmiennych2}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych2}}.
}}
Na podstawie każdego takich elementów numerowanych w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, jest uruchamiana funkcja: {{LinkŚródtytuł|p.UstawianiePobierz}}, dla pierwszego parametru z wartością {{Code|nil}}, drugim: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, i dalszymi.
== {{Śródtytuł|p.ZamienianiePobierzNaKod}}{{Code|p.ZamienianiePobierzNaKod}} ==
Funkcja na podstawie parametru {{ZobaczTeż|tekst}}: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, występujących w tabeli: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, zdefiniowanych jako tablica: {{Code|<nowiki>pozycja[3][1][1]</nowiki>}}.
Modyfikuje też elementy zapisane w bazie szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}:
* Zdefiniujmy, że to: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[1]</nowiki>}} (baza kodów bazy zakodowanego tekstu), a jeśli ona nie istnieje, to: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}} (baza kodów strony bieżącej).
* Zdefiniujmy, że to: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[2]</nowiki>}} (baza parametrów danych obiektów dla szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}), a jeśli ona nie istnieje, to: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}} (baza parametrów strony bieżącej).
: Ale to zwykle istnieją te poszczególne pierwsze, aby wyświetlić zamieniony, czyli zmodyfikowany, element, ewentualnie ze zmodyfikowaną kolejno bazą danych kodów i parametrów strony bieżącej.
Funkcja do szybszego działania wykorzystuje tabelę: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}} i {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony-Śródtekst}}.
Funkcja robi kopię: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|__tablica_analizy_obiektow_strony_dany_modul}}, i {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|__tablica_danych_parametrow_szablonu_strony}}, dla każdego wywołania szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, aby było możeliwe jego analizowanie względem różnych wywołań tego szablonu do tego samego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, o pewnym uchwycie na danej stronie.
Funkcja przyszykowuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, względem parametrów, wskazującego na niego, szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, do dalszej analizy przez: '''{{ld|StronicowyParser|Stronnicowy Parser}}''', to jest robione przy pomocy: {{LinkŚródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="Lua">
function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|obiekt}} | _1 = Jak w: {{LinkPatrz|Pobierz: obiekt}}.
| 2 = {{Code|kod}} | _2 = Jak w: {{LinkPatrz|Pobierz: kod}}.
| 3 = {{Code|pozycja}} | _3 = Dany element numerowany, który przedstawia pozycję dla elementów typu: {{LinkPatrz|Śródtekst}}, ze strony szablonów rodzaju: {{Code|Śródtekst}}{{LinkPatrz|Śródtekst}}, lub {{Code|Pobierz}} {{LinkPatrz|Pobierz}}.
| 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
| 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}.
| 8 = {{Code|czy_korzystane}} {{Patrz|czy_korzystane}} | _8 = Czy wykorzystawane elementy są typu: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy ta wartość przyjmuje wartość {{Code|true}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}.
}}
Funkcja wykorzystuje do modyfikacji funkcję: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, ona seryjnie modyfikuje całe elementy tekstu {{LinkZobaczTeż|tekst}} lub elementy bazy {{LinkZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}} o pewnych dwuwymiarowych nazwach, co do kodów bazy. Element tekstu do modyfikacji jest uzyskiwany z funkcji: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, jeżeli ten tekst istnieje, a gdy nie, to funkcja nie zwraca żadnej wartości, a jak jest, to ten tekst, ze zmodyfikowaną tabelą bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, też ze zmodyfikowaną tabelą parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
== {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuPobierz}} ==
Funkcja zastępuje swoje odwołanie uchwytowe dla elementu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, szablonu typu: {{s|PobierzŚródtekst}}, przetransformowanym tekstem z szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}: o tych samych uchwytach z elementów typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jeżeli jest jeden tam taki uchwyt dla tego elementu, na odpowiedniej stronie nie otoczonej znacznikami: {{Tag|includeonly}}, '''mechanizmu: {{NS|l=tak|k=mw|w=tak|pk=d}}'''.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Treści obiektu typu: {{LinkPatrz|Pobierz}}.
| 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|Pobierz: obiekt}}.
| 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|Pobierz: kod}}.
| 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
| 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}.
| 8 = {{Code|tablica_zmiennych}} | _8 = Jak w: {{LinkPatrz|tablica_zmiennych}}.
}}
Funkcja wykorzystuje funkcję: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na bieżącej stronie, lub {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na stronie niebieżącej, obie tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a także funkcję: {{LinkŚródtytuł|p.ZamienianiePobierzNaKod}}, który zamienia ten obiekt: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, pobierania na odpowiedni wikikod do działania z szablonu tekstu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Jeżeli funkcja nie wykrywała w ramach aktualnej strony elementu typu nie {{LinkPatrz|Pobierz}} swojego odpowiednika względem tej pierwszej tablicy, to szuka je w ramach tej niekaktualnej względem tej drugiej, a jeżeli funkcja znalazła taki swój odpowiednik, to go zwraca, a jeżeli nie, to zwraca wartość {{Code|nil}}.
== {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} ==
Szablon zastępuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jej zawartością tekstową: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, jeśli istnieje, w odpowiedni sposób.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}.
| 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}.
| 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod}}.
| 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
| 7 = {{Code|tablica_zmiennych}} | _7 = Jak w: {{LinkPatrz|tablica_zmiennych}}.
}}
Funkcja do swojego działania wykorzystuje tabelę: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, by dało się to zastąpienie wykonać. Funkcja do swojego działania potrzebuje: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, który pobiera tekst z tego szablonu, i zamieniąc go typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, ale nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, właśnie na to.
== {{Śródtytuł|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}}{{Code|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}} ==
Funkcje elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, i typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, zastępuje je zawartością kolejno z odpowiednich szablonów pierwszego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}} (tutaj z siebie samego pobiera tekst, i zastępują siebie właśnie tym), i drugiego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jej zawartością, oczywiście, biorąc zawartość tekstowa z: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jest właśnie tam ustawiana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _1 = tekst, na którym operujemy, modyfikując odpowiednio jego kody, dotyczące tych dwóch szablonów,
| 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa w formacie szablonowym strony danej, nie tylko szablonów, w wywołaniach szablonowych.
| 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
| 5 = {{Code|tablica_zmiennych}} | _5 = Jak w: {{LinkPatrz|tablica_zmiennych}}.
| 6 = {{Code|IterowaniePoElementachTekstu}} {{Patrz|IterowaniePoElementachTekstu}} | _6 = Iterator po elementach kodów szablonowych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} i związaną z nim: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
}}
Funkcja wykorzystuje odpowiednio tablice: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - tablica o szablonach {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}} na stronach niebieżących, i {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - a tutaj bieżących, obie tablicy są podtabelami tabeli wyższej (nadrzędnej: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, są używane do szybkiego zakończeniu funkcji, gdy by takich tam obiektów nie było, w tekście. Są one używane do zastąpienia ich zawartością z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}.
Funkcja do swojego działania wykorzystuje funkcje: {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}} - gdy mamy szablony typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, i {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} - jeśli używamy elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Aby wykorzystać te funkcje, uruchamiana jest najpierw: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, to zastąpienia tego typu szanlonów odpowiednią zawartością z tych zmiennych.
Funkcja do sprawdzania, czy są tego typu szablony z dwóch, rewiduje, czy one są pierwszego typu, czy drugiego, aby dało się je zastąpić wartością wikikodu ze zmiennej z szablonów {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, to wykorzystuje do tego typu tabele: {{Code|{{sr|#p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu}}, dla obiektów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, a: {{Code|{{sr|#p.szablony_stronicowego_parsera.szablony_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowego_parsera.szablony_tekstu}}, dla obiektu typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, ale: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
gvaylqyuqv34a9c6evx6vihs7mtwn9e
558399
558398
2026-10-03T10:20:47Z
Persino
2851
/* {{Śródtytuł|p.ZamienianiePobierzNaKod}}{{Code|p.ZamienianiePobierzNaKod}} */
558399
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SzablonyTekstu}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Ten moduł służy do obsługi szablonów: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}.
* Szablony typu: {{Code|Śródtekst}} {{Patrz|Śródtekst}}, to są: {{s|Śródtekst}}.
** {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - to jest typ obiektu i jego numer szablonów typu: nie {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}.
* Szablony typu: {{Code|Pobierz}} {{Patrz|Pobierz}}, to są: {{s|PobierzŚródtekst}}.
** {{Code|Pobierz: obiekt}} {{Patrz|Pobierz: obiekt}} i {{Code|Pobierz: kod}} {{Patrz|Pobierz: kod}} - to jest typ obiektu i jego numer szablonów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}.
Szablony: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}, mają walidację błędów, więc mogą, oprócz parametrów standardowych, przyjmować zmienne o kluczach odpowiednio: {{Code|klucz}} (lub {{Code|klucz1}}), {{Code|klucz2}}, {{Code|klucz3}}, ..., itd.. Tych parametrów może być dowolna liczba, ale mogą być pomiędzy nimi przerwy.
; Zbieranie elementów typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, na stronie bieżącej, jak i dołączonej{{dk}}
'''{{ld|StronicowyParser|Stronicowy parser}}''' jak napotka szablon {{s|Śródtekst}}, to generuje tworzenie następujących tablic: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{Patrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, dla tych szablonów w artykule niekorzystanej, lub korzystanej według: {{Code|tablica_szablonu_tekstu_korzystanych}} {{Patrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, jako {{ZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}:
<syntaxhighlight lang="lua">
if(not czy_artykul_korzystany)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{
{wartosc_elementu,lista_dwuelementowa,},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
{tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,},
});
else
if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{
{wartosc_elementu,lista_dwuelementowa,},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
{tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,},
});
end;
</syntaxhighlight>
* Teb powyższy kod, to nic innego jak część definicji fukcji: {{LinkŚródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}, używaną do stawiaia tego, gdy napotkano szablony tytu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}.
; Strony niebieżące - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}} na stronie bieżącej, które odwołują się właśnie do tej niebieżącej{{dk}}
Drugi element wsadzanej tablicy za pomocą {{LzLua|table.insert}}, jest to nic innego, jak tablica zawierająca następne tablice, gdy tam jakiś element się pojawi, a ta operacja jest robina przez funkcję {{LinkŚródtytuł|p.UstawianiePobierz}} {{ZobaczTeż|p.UstawianiePobierz}}:
<syntaxhighlight lang="lua">
local tablica_szablonu_tekstu;
if(czy_artykul_korzystany)then
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych;
else
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych;
end;
if(tablica_szablonu_tekstu)then
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
...
local dodatkowe_elementy=pozycja[2];
...
if(not czy_tak)then
local tab_numer;
if(tablica_zmiennych)then
tab_numer={};
for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do
tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name];
end;
end;
table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer});
break;
</syntaxhighlight>
* gdzie: tabela: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}}, będąca podtabelą tabeli: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, to nic innego, jak zbiór tablic mniejszych dla posczególnych obiektów, tutaj nazwanych kluczami: {{Code|name}}, w tych mniejszych mieszczą się pojedyncze tabele, ktore pierwszym elementem jest uchwyt, a drugim jest sam tekst szablonu typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}.
* Tą funkcję używamy do zbierania informacji o inne stronie, dołączonej do aktualnej, w wyniku uruchomienia szablonu linku lub pobierania.
; Strony bieżące korzystane - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, które odwołują się do niej{{dk}}
Funkcja natomiast: {{LinkŚródtytuł|p.UstawianiePobierz}}, jest uruchamiana przez funkcję: {{LinkŚródtytuł|p.UstawPobierzKorzystanie}}, dla modułu bieżącego, która zbiera odpowiednie elementy pobierania (szablony typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}) w tablicach linkowych (pobierania) {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, to są tablice, aktualnej - bieżącej, strony, ta tablica jest tworzona sposobem, ale nie w tej funkcji, ta funkcja jedynie z tego korzysta, a ten kod poniżej jest używany, gdzie indziej w kodzie {{ZobaczTeż|p.LinkowanieFinalizowaniePrac}}:
<syntaxhighlight lang="lua">
if(czy_pobierz)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then
tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={};
end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},});
end;
</syntaxhighlight>
W tej tablicy mieszczą się informację, co do poszczególnych obiektów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jak: {{s|PobierzŚródtekst}}.
----
; Inne{{dk}}
Z tych tabel korzysta, nie tylko, szablon: {{s|Śródtekst}}, ale też i: {{s|PobierzŚródtekst}}, przy pomocy oprogramowania modułu: {{m|StronicowyParser}}, czy: {{m|StronicowyParser/}}.
== {{Śródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}{{Code|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}} ==
Funkcja służy do zastępowania parametrów, w szablonie typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, w zmiennych parametru: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}} lub {{Code|1}} {{LinkPatrz|1}}, w jego wartości, argumentów typu o wzorze ogólnym: {{Code|<nowiki>klucz%d*</nowiki>}} {{Patrz|klucz%d*}}, na odpowiednie wartości, ustawiane przez szablon w rodzaju: {{s|PobierzŚródtekst}} {{LinkPatrz|Pobierz}}, występujących w parametrach w wywołaniach jego szablonu lub bezpośrednio w tym pierwszym.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PreparowanieSzablonoweLinkoweSzablonuTekstu(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} {{Patrz|tekst-kod}} | _1 = Jest to kod bazy: {{Code|{{m|Szablonowe}}}}, o odpowiednim formacie,którego poszczególne elementy dzieci i potomków są modyfikowane.
| 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa strony w formacie wykonywalnym szablonów, względem innych przestrzeni.
| 3 = Parametry szablonu typu: {{s|Śródtekst}}, rodzaju: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}: | nagłówek3 = tak
| 4 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|stare__tablica_analizy_obiektow_strony_dany_modul}} | _4 = Baza danych szablonowa stworzona specjalnie dla szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, który jest dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tą funkcję.
| 5 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|stare___tablica_danych_parametrow_szablonu_strony}} | _5 = Tabela paremetrów rozwinieć bazy: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|stare__tablica_analizy_obiektow_strony_dany_modul}}, dzięki któremu uzyskuje się przyszybszenie stronicowego parsera. Jest ona dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tę funkcję.
| 6 = Parametry szablonu typu: {{s|PobierzŚródtekst}}, rodzaju: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla strony bieżącej: | nagłówek6 = tak
| 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. Jest to tabela parametrów szablonu.
| 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Jest to tablica bazy kodów parsowania: '''{{ld|Szablonowe|w bibliotece parsowania dowolnego wikikodu mechanizmu MediaWiki}}'''.
| 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Jest to baza parametrów rozwinieć, jak: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|stare___tablica_danych_parametrow_szablonu_strony}}, ale dla: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 10 = Nazwy danej książki danej strony, jeśli poszczególne istnieją, na którą wskazuje szablon typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, na odpowiedni szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}: | nagłówek10 = tak
| 11 = {{Code|nazwa_modulu_ksiazki_tekstu}} {{Patrz|nazwa_modulu_ksiazki_tekstu}} | _11 = Pełna nazwa książki danej strony, lub ewentualnie w niektórych przypadkach bez przestrzeni nazw.
| 12 = {{Code|nazwa_artykulu_tekstu}} {{Patrz|nazwa_artykulu_tekstu}} | _12 = Nazwa książkowa artykułu danej strony.
}}
Zweacane parametry:
{{OpisParametrów
| 1 = Zwraca to samo, co jest tym: {{Code|tekst}} {{LinkPatrz|tekst-kod}} | komórka1 = tak
}}
== {{Śródtytuł|p.ParametrTekstowySzablonuTekstu}}{{Code|p.ParametrTekstowySzablonuTekstu}} ==
Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, tekstu o nazwie pierwszy z kolei, który istnieje, więc: {{Code|tekst}} {{Patrz|tekst}}, {{Code|treść}} {{Patrz|treść}} lub {{Code|1}} {{Patrz|1}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca:
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o różnych parametrach nazwanych lub nienazwanych.
}}
== {{Śródtytuł|p.SzablonTekstuBezPreProcess}}{{Code|p.SzablonTekstuBezPreProcess}} ==
Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, o nazwie {{Code|bez preprocess}} {{Patrz|bez preprocess}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca:
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o parametrach nazwanych lub nienazwanych.
}}
== {{Śródtytuł|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}}{{Code|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}} ==
Funkcja elementy tablicy: {{Code|tablica_zmiennych2}} {{Patrz|tablica_zmiennych2}}, przypisuje tablicy: {{Code|tablica_zmiennych}} {{Patrz|tablica_zmiennych}}, czyli do tego pierwszego dodaje elementy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, do tablicy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a jeżeli ta tablica nie istnieje, to jest tworzona:
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}, jest to tablica dla strony niekorzystanej.
| 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}, jest to tablica dla strony korzystanej, aktualnej strony, która jest wyświetlana na ekranie.
}}
== {{Śródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}{{Code|p.DodawanieDoBazyStronySzablonuTekstu}} ==
Szablon dodający elementy do tablicy bazy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, lub {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, tzn. do tablicy: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, jest równy wartości fałszywej, przeciwnie do: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tej samej tablicy co poprzednio. Te elementy są dodawane według następującego kodu: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}} lub {{LinkPatrz|tablica_zmiennych2}}.
| 2 = {{Code|wartosc_elementu}} {{Patrz|wartosc_elementu}} | _2 = Rodzaj elementu, jak: {{Code|Śródtekst}} {{Patrz|rodzaj: Śródtekst}}, dla jednego z szablonów tekstu.
| 3 = {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} | _3 = Tablica elementu tablicy zbierającej dane, element posiada tylko pierwszy element, który jest uchwytem.
| 4 = {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}} | _4 = Obiekt i kod, szablonu typu {{s|Śródtekst}} {{LinkPatrz|Śródtekst}} w tekście zakodowanym.
| 5 = {{Code|tabela_parametrow_szablonu}} | _5 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}.
| 6 = {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} | _6 = Nazwa szablonu tekstu, typu, dla {{LinkPatrz|Śródtekst}}.
| 7 = {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} | _7 = Tablica modyfikatorów uruchmienia szablonu {{LinkPatrz|Śródtekst}}.
| 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Tablica bazy kodów modułu {{m|Szablonowe}}.
| 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _9 = Tablica rozkładu na czynniki pierwsze, elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 10 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _10 = Przyjmuje wartość: {{Code|true}}, gdy artykuł jest taki sam, jak strona w przeglądarce.
}}
Tablica jako drugi element dodawanej tablicy w kodzie: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}, to są tam podtablice, które są tablicami składających się z obiektu i kodu elementu {{s|PobierzŚródtekst}} {{Patrz|PobierzŚródtekst}}, tych podtablic może być wiele dla różnych tych.
== {{Śródtytuł|p.UstawianiePobierz}}{{Code|p.UstawianiePobierz}} ==
Funkcja dodaje do danego elementu typu: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, utworzonego na podstawie obiektów nie typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, w postaci tablicy utworzonego z trzech elementów, tzn.: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}, a trzeci element tablicy jest numerkiem nazwanym, ile w danym elemencie było wtedy aktualnie elementów przed wywołaniem szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla zmiennych w tablicach: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. Ten element służy do wstawiania innych elementów do tablic nazwanych uchwytów oraz ich numerków (dla elementów numerowanych) lub nie, aby przesunąc od pewnego momentu ich zawartości do przodu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}.
| 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}.
| 3 = {{Code|obiekt}} {{LinkPatrz|Pobierz: obiekt}} | _3 = Obiekt, jak: {{LinkPatrz|rodzaj: Śródtekst}}, obiektu typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}.
| 4 = {{Code|kod}} {{LinkPatrz|Pobierz: kod}} | _4 = Numer danego obiektu typu {{LinkPatrz|Pobierz}}.
| 5 = {{Code|nazwa_obiektu}} {{Patrz|nazwa_obiektu}} | _5 = Nazwa danego obiektu {{LinkPatrz|Śródtekst}}.
| 6 = {{Code|uchwyt_obiektu}} {{Patrz|uchwyt_obiektu}} | _6 = Unikalny uchwyt danego obiektu {{LinkPatrz|Śródtekst}}.
| 7 = {{Code|czy_artykul_korzystany}} | _7 = Jak w: {{LinkPatrz|czy_artykul_korzystany}}.
}}
Gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, przyjmuje wartość {{Code|true}}, wtedy jest używana tablica: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tej samej tablicy, co poprzednio, ale dla elementów typu: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, na podstawie tego w ten sposób jest tworzona pewna tablica, te elementy są dodawane do drugiej podtablicy w tablicy dodawanej w {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}.
== {{Śródtytuł|p.UstawPobierzKorzystanie}}{{Code|p.UstawPobierzKorzystanie}} ==
Funkcja na podstawie stworzonych elementów w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{Patrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, która składa się z tablic numerowanych, gdzie w każdej takiej jego tablicy są dwie podtablice, te elementy są zbierane dla: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, pierwsza taka podtablica jest tablicą numerowaną z: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu}}, i {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu}}, a druga taka podtablica jest z: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UstawPobierzKorzystanie(tablica_zmiennych2)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tablica_zmiennych2}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych2}}.
}}
Na podstawie każdego takich elementów numerowanych w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, jest uruchamiana funkcja: {{LinkŚródtytuł|p.UstawianiePobierz}}, dla pierwszego parametru z wartością {{Code|nil}}, drugim: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, i dalszymi.
== {{Śródtytuł|p.ZamienianiePobierzNaKod}}{{Code|p.ZamienianiePobierzNaKod}} ==
Funkcja na podstawie parametru {{ZobaczTeż|tekst}}: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, występujących w tabeli: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, zdefiniowanych jako tablica: {{Code|<nowiki>pozycja[3][1][1]</nowiki>}}.
Modyfikuje też elementy zapisane w bazie szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}:
* Zdefiniujmy, że to: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[1]</nowiki>}} (baza kodów bazy zakodowanego tekstu), a jeśli ona nie istnieje, to: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}} (baza kodów strony bieżącej).
* Zdefiniujmy, że to: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[2]</nowiki>}} (baza parametrów danych obiektów dla szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}), a jeśli ona nie istnieje, to: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}} (baza parametrów strony bieżącej).
: Ale to zwykle istnieją te poszczególne pierwsze, aby wyświetlić zamieniony, czyli zmodyfikowany, element, ewentualnie ze zmodyfikowaną kolejno bazą danych kodów i parametrów strony bieżącej.
Funkcja do szybszego działania wykorzystuje tabelę: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}} i {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony-Śródtekst}}.
Funkcja robi kopię: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, i {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, dla każdego wywołania szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, aby było możeliwe jego analizowanie względem różnych wywołań tego szablonu do tego samego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, o pewnym uchwycie na danej stronie.
Funkcja przyszykowuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, względem parametrów, wskazującego na niego, szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, do dalszej analizy przez: '''{{ld|StronicowyParser|Stronnicowy Parser}}''', to jest robione przy pomocy: {{LinkŚródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="Lua">
function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|obiekt}} | _1 = Jak w: {{LinkPatrz|Pobierz: obiekt}}.
| 2 = {{Code|kod}} | _2 = Jak w: {{LinkPatrz|Pobierz: kod}}.
| 3 = {{Code|pozycja}} | _3 = Dany element numerowany, który przedstawia pozycję dla elementów typu: {{LinkPatrz|Śródtekst}}, ze strony szablonów rodzaju: {{Code|Śródtekst}}{{LinkPatrz|Śródtekst}}, lub {{Code|Pobierz}} {{LinkPatrz|Pobierz}}.
| 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
| 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}.
| 8 = {{Code|czy_korzystane}} {{Patrz|czy_korzystane}} | _8 = Czy wykorzystawane elementy są typu: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy ta wartość przyjmuje wartość {{Code|true}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}.
}}
Funkcja wykorzystuje do modyfikacji funkcję: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, ona seryjnie modyfikuje całe elementy tekstu {{LinkZobaczTeż|tekst}} lub elementy bazy {{LinkZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}} o pewnych dwuwymiarowych nazwach, co do kodów bazy. Element tekstu do modyfikacji jest uzyskiwany z funkcji: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, jeżeli ten tekst istnieje, a gdy nie, to funkcja nie zwraca żadnej wartości, a jak jest, to ten tekst, ze zmodyfikowaną tabelą bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, też ze zmodyfikowaną tabelą parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
== {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuPobierz}} ==
Funkcja zastępuje swoje odwołanie uchwytowe dla elementu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, szablonu typu: {{s|PobierzŚródtekst}}, przetransformowanym tekstem z szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}: o tych samych uchwytach z elementów typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jeżeli jest jeden tam taki uchwyt dla tego elementu, na odpowiedniej stronie nie otoczonej znacznikami: {{Tag|includeonly}}, '''mechanizmu: {{NS|l=tak|k=mw|w=tak|pk=d}}'''.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Treści obiektu typu: {{LinkPatrz|Pobierz}}.
| 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|Pobierz: obiekt}}.
| 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|Pobierz: kod}}.
| 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
| 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}.
| 8 = {{Code|tablica_zmiennych}} | _8 = Jak w: {{LinkPatrz|tablica_zmiennych}}.
}}
Funkcja wykorzystuje funkcję: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na bieżącej stronie, lub {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na stronie niebieżącej, obie tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a także funkcję: {{LinkŚródtytuł|p.ZamienianiePobierzNaKod}}, który zamienia ten obiekt: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, pobierania na odpowiedni wikikod do działania z szablonu tekstu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Jeżeli funkcja nie wykrywała w ramach aktualnej strony elementu typu nie {{LinkPatrz|Pobierz}} swojego odpowiednika względem tej pierwszej tablicy, to szuka je w ramach tej niekaktualnej względem tej drugiej, a jeżeli funkcja znalazła taki swój odpowiednik, to go zwraca, a jeżeli nie, to zwraca wartość {{Code|nil}}.
== {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} ==
Szablon zastępuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jej zawartością tekstową: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, jeśli istnieje, w odpowiedni sposób.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}.
| 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}.
| 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod}}.
| 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
| 7 = {{Code|tablica_zmiennych}} | _7 = Jak w: {{LinkPatrz|tablica_zmiennych}}.
}}
Funkcja do swojego działania wykorzystuje tabelę: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, by dało się to zastąpienie wykonać. Funkcja do swojego działania potrzebuje: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, który pobiera tekst z tego szablonu, i zamieniąc go typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, ale nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, właśnie na to.
== {{Śródtytuł|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}}{{Code|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}} ==
Funkcje elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, i typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, zastępuje je zawartością kolejno z odpowiednich szablonów pierwszego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}} (tutaj z siebie samego pobiera tekst, i zastępują siebie właśnie tym), i drugiego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jej zawartością, oczywiście, biorąc zawartość tekstowa z: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jest właśnie tam ustawiana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _1 = tekst, na którym operujemy, modyfikując odpowiednio jego kody, dotyczące tych dwóch szablonów,
| 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa w formacie szablonowym strony danej, nie tylko szablonów, w wywołaniach szablonowych.
| 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
| 5 = {{Code|tablica_zmiennych}} | _5 = Jak w: {{LinkPatrz|tablica_zmiennych}}.
| 6 = {{Code|IterowaniePoElementachTekstu}} {{Patrz|IterowaniePoElementachTekstu}} | _6 = Iterator po elementach kodów szablonowych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} i związaną z nim: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
}}
Funkcja wykorzystuje odpowiednio tablice: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - tablica o szablonach {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}} na stronach niebieżących, i {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - a tutaj bieżących, obie tablicy są podtabelami tabeli wyższej (nadrzędnej: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, są używane do szybkiego zakończeniu funkcji, gdy by takich tam obiektów nie było, w tekście. Są one używane do zastąpienia ich zawartością z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}.
Funkcja do swojego działania wykorzystuje funkcje: {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}} - gdy mamy szablony typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, i {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} - jeśli używamy elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Aby wykorzystać te funkcje, uruchamiana jest najpierw: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, to zastąpienia tego typu szanlonów odpowiednią zawartością z tych zmiennych.
Funkcja do sprawdzania, czy są tego typu szablony z dwóch, rewiduje, czy one są pierwszego typu, czy drugiego, aby dało się je zastąpić wartością wikikodu ze zmiennej z szablonów {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, to wykorzystuje do tego typu tabele: {{Code|{{sr|#p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu}}, dla obiektów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, a: {{Code|{{sr|#p.szablony_stronicowego_parsera.szablony_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowego_parsera.szablony_tekstu}}, dla obiektu typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, ale: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
trned78vsx33c3gar5uor6gk33rpkin
558400
558399
2026-10-03T10:21:51Z
Persino
2851
/* {{Śródtytuł|p.ZamienianiePobierzNaKod}}{{Code|p.ZamienianiePobierzNaKod}} */
558400
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SzablonyTekstu}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Ten moduł służy do obsługi szablonów: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}.
* Szablony typu: {{Code|Śródtekst}} {{Patrz|Śródtekst}}, to są: {{s|Śródtekst}}.
** {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - to jest typ obiektu i jego numer szablonów typu: nie {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}.
* Szablony typu: {{Code|Pobierz}} {{Patrz|Pobierz}}, to są: {{s|PobierzŚródtekst}}.
** {{Code|Pobierz: obiekt}} {{Patrz|Pobierz: obiekt}} i {{Code|Pobierz: kod}} {{Patrz|Pobierz: kod}} - to jest typ obiektu i jego numer szablonów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}.
Szablony: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}, mają walidację błędów, więc mogą, oprócz parametrów standardowych, przyjmować zmienne o kluczach odpowiednio: {{Code|klucz}} (lub {{Code|klucz1}}), {{Code|klucz2}}, {{Code|klucz3}}, ..., itd.. Tych parametrów może być dowolna liczba, ale mogą być pomiędzy nimi przerwy.
; Zbieranie elementów typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, na stronie bieżącej, jak i dołączonej{{dk}}
'''{{ld|StronicowyParser|Stronicowy parser}}''' jak napotka szablon {{s|Śródtekst}}, to generuje tworzenie następujących tablic: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{Patrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, dla tych szablonów w artykule niekorzystanej, lub korzystanej według: {{Code|tablica_szablonu_tekstu_korzystanych}} {{Patrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, jako {{ZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}:
<syntaxhighlight lang="lua">
if(not czy_artykul_korzystany)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{
{wartosc_elementu,lista_dwuelementowa,},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
{tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,},
});
else
if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{
{wartosc_elementu,lista_dwuelementowa,},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
{tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,},
});
end;
</syntaxhighlight>
* Teb powyższy kod, to nic innego jak część definicji fukcji: {{LinkŚródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}, używaną do stawiaia tego, gdy napotkano szablony tytu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}.
; Strony niebieżące - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}} na stronie bieżącej, które odwołują się właśnie do tej niebieżącej{{dk}}
Drugi element wsadzanej tablicy za pomocą {{LzLua|table.insert}}, jest to nic innego, jak tablica zawierająca następne tablice, gdy tam jakiś element się pojawi, a ta operacja jest robina przez funkcję {{LinkŚródtytuł|p.UstawianiePobierz}} {{ZobaczTeż|p.UstawianiePobierz}}:
<syntaxhighlight lang="lua">
local tablica_szablonu_tekstu;
if(czy_artykul_korzystany)then
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych;
else
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych;
end;
if(tablica_szablonu_tekstu)then
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
...
local dodatkowe_elementy=pozycja[2];
...
if(not czy_tak)then
local tab_numer;
if(tablica_zmiennych)then
tab_numer={};
for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do
tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name];
end;
end;
table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer});
break;
</syntaxhighlight>
* gdzie: tabela: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}}, będąca podtabelą tabeli: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, to nic innego, jak zbiór tablic mniejszych dla posczególnych obiektów, tutaj nazwanych kluczami: {{Code|name}}, w tych mniejszych mieszczą się pojedyncze tabele, ktore pierwszym elementem jest uchwyt, a drugim jest sam tekst szablonu typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}.
* Tą funkcję używamy do zbierania informacji o inne stronie, dołączonej do aktualnej, w wyniku uruchomienia szablonu linku lub pobierania.
; Strony bieżące korzystane - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, które odwołują się do niej{{dk}}
Funkcja natomiast: {{LinkŚródtytuł|p.UstawianiePobierz}}, jest uruchamiana przez funkcję: {{LinkŚródtytuł|p.UstawPobierzKorzystanie}}, dla modułu bieżącego, która zbiera odpowiednie elementy pobierania (szablony typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}) w tablicach linkowych (pobierania) {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, to są tablice, aktualnej - bieżącej, strony, ta tablica jest tworzona sposobem, ale nie w tej funkcji, ta funkcja jedynie z tego korzysta, a ten kod poniżej jest używany, gdzie indziej w kodzie {{ZobaczTeż|p.LinkowanieFinalizowaniePrac}}:
<syntaxhighlight lang="lua">
if(czy_pobierz)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then
tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={};
end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},});
end;
</syntaxhighlight>
W tej tablicy mieszczą się informację, co do poszczególnych obiektów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jak: {{s|PobierzŚródtekst}}.
----
; Inne{{dk}}
Z tych tabel korzysta, nie tylko, szablon: {{s|Śródtekst}}, ale też i: {{s|PobierzŚródtekst}}, przy pomocy oprogramowania modułu: {{m|StronicowyParser}}, czy: {{m|StronicowyParser/}}.
== {{Śródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}{{Code|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}} ==
Funkcja służy do zastępowania parametrów, w szablonie typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, w zmiennych parametru: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}} lub {{Code|1}} {{LinkPatrz|1}}, w jego wartości, argumentów typu o wzorze ogólnym: {{Code|<nowiki>klucz%d*</nowiki>}} {{Patrz|klucz%d*}}, na odpowiednie wartości, ustawiane przez szablon w rodzaju: {{s|PobierzŚródtekst}} {{LinkPatrz|Pobierz}}, występujących w parametrach w wywołaniach jego szablonu lub bezpośrednio w tym pierwszym.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PreparowanieSzablonoweLinkoweSzablonuTekstu(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} {{Patrz|tekst-kod}} | _1 = Jest to kod bazy: {{Code|{{m|Szablonowe}}}}, o odpowiednim formacie,którego poszczególne elementy dzieci i potomków są modyfikowane.
| 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa strony w formacie wykonywalnym szablonów, względem innych przestrzeni.
| 3 = Parametry szablonu typu: {{s|Śródtekst}}, rodzaju: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}: | nagłówek3 = tak
| 4 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|stare__tablica_analizy_obiektow_strony_dany_modul}} | _4 = Baza danych szablonowa stworzona specjalnie dla szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, który jest dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tą funkcję.
| 5 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|stare___tablica_danych_parametrow_szablonu_strony}} | _5 = Tabela paremetrów rozwinieć bazy: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|stare__tablica_analizy_obiektow_strony_dany_modul}}, dzięki któremu uzyskuje się przyszybszenie stronicowego parsera. Jest ona dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tę funkcję.
| 6 = Parametry szablonu typu: {{s|PobierzŚródtekst}}, rodzaju: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla strony bieżącej: | nagłówek6 = tak
| 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. Jest to tabela parametrów szablonu.
| 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Jest to tablica bazy kodów parsowania: '''{{ld|Szablonowe|w bibliotece parsowania dowolnego wikikodu mechanizmu MediaWiki}}'''.
| 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Jest to baza parametrów rozwinieć, jak: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|stare___tablica_danych_parametrow_szablonu_strony}}, ale dla: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 10 = Nazwy danej książki danej strony, jeśli poszczególne istnieją, na którą wskazuje szablon typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, na odpowiedni szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}: | nagłówek10 = tak
| 11 = {{Code|nazwa_modulu_ksiazki_tekstu}} {{Patrz|nazwa_modulu_ksiazki_tekstu}} | _11 = Pełna nazwa książki danej strony, lub ewentualnie w niektórych przypadkach bez przestrzeni nazw.
| 12 = {{Code|nazwa_artykulu_tekstu}} {{Patrz|nazwa_artykulu_tekstu}} | _12 = Nazwa książkowa artykułu danej strony.
}}
Zweacane parametry:
{{OpisParametrów
| 1 = Zwraca to samo, co jest tym: {{Code|tekst}} {{LinkPatrz|tekst-kod}} | komórka1 = tak
}}
== {{Śródtytuł|p.ParametrTekstowySzablonuTekstu}}{{Code|p.ParametrTekstowySzablonuTekstu}} ==
Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, tekstu o nazwie pierwszy z kolei, który istnieje, więc: {{Code|tekst}} {{Patrz|tekst}}, {{Code|treść}} {{Patrz|treść}} lub {{Code|1}} {{Patrz|1}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca:
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o różnych parametrach nazwanych lub nienazwanych.
}}
== {{Śródtytuł|p.SzablonTekstuBezPreProcess}}{{Code|p.SzablonTekstuBezPreProcess}} ==
Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, o nazwie {{Code|bez preprocess}} {{Patrz|bez preprocess}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca:
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o parametrach nazwanych lub nienazwanych.
}}
== {{Śródtytuł|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}}{{Code|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}} ==
Funkcja elementy tablicy: {{Code|tablica_zmiennych2}} {{Patrz|tablica_zmiennych2}}, przypisuje tablicy: {{Code|tablica_zmiennych}} {{Patrz|tablica_zmiennych}}, czyli do tego pierwszego dodaje elementy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, do tablicy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a jeżeli ta tablica nie istnieje, to jest tworzona:
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}, jest to tablica dla strony niekorzystanej.
| 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}, jest to tablica dla strony korzystanej, aktualnej strony, która jest wyświetlana na ekranie.
}}
== {{Śródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}{{Code|p.DodawanieDoBazyStronySzablonuTekstu}} ==
Szablon dodający elementy do tablicy bazy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, lub {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, tzn. do tablicy: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, jest równy wartości fałszywej, przeciwnie do: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tej samej tablicy co poprzednio. Te elementy są dodawane według następującego kodu: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}} lub {{LinkPatrz|tablica_zmiennych2}}.
| 2 = {{Code|wartosc_elementu}} {{Patrz|wartosc_elementu}} | _2 = Rodzaj elementu, jak: {{Code|Śródtekst}} {{Patrz|rodzaj: Śródtekst}}, dla jednego z szablonów tekstu.
| 3 = {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} | _3 = Tablica elementu tablicy zbierającej dane, element posiada tylko pierwszy element, który jest uchwytem.
| 4 = {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}} | _4 = Obiekt i kod, szablonu typu {{s|Śródtekst}} {{LinkPatrz|Śródtekst}} w tekście zakodowanym.
| 5 = {{Code|tabela_parametrow_szablonu}} | _5 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}.
| 6 = {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} | _6 = Nazwa szablonu tekstu, typu, dla {{LinkPatrz|Śródtekst}}.
| 7 = {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} | _7 = Tablica modyfikatorów uruchmienia szablonu {{LinkPatrz|Śródtekst}}.
| 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Tablica bazy kodów modułu {{m|Szablonowe}}.
| 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _9 = Tablica rozkładu na czynniki pierwsze, elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 10 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _10 = Przyjmuje wartość: {{Code|true}}, gdy artykuł jest taki sam, jak strona w przeglądarce.
}}
Tablica jako drugi element dodawanej tablicy w kodzie: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}, to są tam podtablice, które są tablicami składających się z obiektu i kodu elementu {{s|PobierzŚródtekst}} {{Patrz|PobierzŚródtekst}}, tych podtablic może być wiele dla różnych tych.
== {{Śródtytuł|p.UstawianiePobierz}}{{Code|p.UstawianiePobierz}} ==
Funkcja dodaje do danego elementu typu: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, utworzonego na podstawie obiektów nie typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, w postaci tablicy utworzonego z trzech elementów, tzn.: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}, a trzeci element tablicy jest numerkiem nazwanym, ile w danym elemencie było wtedy aktualnie elementów przed wywołaniem szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla zmiennych w tablicach: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. Ten element służy do wstawiania innych elementów do tablic nazwanych uchwytów oraz ich numerków (dla elementów numerowanych) lub nie, aby przesunąc od pewnego momentu ich zawartości do przodu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}.
| 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}.
| 3 = {{Code|obiekt}} {{LinkPatrz|Pobierz: obiekt}} | _3 = Obiekt, jak: {{LinkPatrz|rodzaj: Śródtekst}}, obiektu typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}.
| 4 = {{Code|kod}} {{LinkPatrz|Pobierz: kod}} | _4 = Numer danego obiektu typu {{LinkPatrz|Pobierz}}.
| 5 = {{Code|nazwa_obiektu}} {{Patrz|nazwa_obiektu}} | _5 = Nazwa danego obiektu {{LinkPatrz|Śródtekst}}.
| 6 = {{Code|uchwyt_obiektu}} {{Patrz|uchwyt_obiektu}} | _6 = Unikalny uchwyt danego obiektu {{LinkPatrz|Śródtekst}}.
| 7 = {{Code|czy_artykul_korzystany}} | _7 = Jak w: {{LinkPatrz|czy_artykul_korzystany}}.
}}
Gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, przyjmuje wartość {{Code|true}}, wtedy jest używana tablica: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tej samej tablicy, co poprzednio, ale dla elementów typu: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, na podstawie tego w ten sposób jest tworzona pewna tablica, te elementy są dodawane do drugiej podtablicy w tablicy dodawanej w {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}.
== {{Śródtytuł|p.UstawPobierzKorzystanie}}{{Code|p.UstawPobierzKorzystanie}} ==
Funkcja na podstawie stworzonych elementów w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{Patrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, która składa się z tablic numerowanych, gdzie w każdej takiej jego tablicy są dwie podtablice, te elementy są zbierane dla: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, pierwsza taka podtablica jest tablicą numerowaną z: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu}}, i {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu}}, a druga taka podtablica jest z: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UstawPobierzKorzystanie(tablica_zmiennych2)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tablica_zmiennych2}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych2}}.
}}
Na podstawie każdego takich elementów numerowanych w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, jest uruchamiana funkcja: {{LinkŚródtytuł|p.UstawianiePobierz}}, dla pierwszego parametru z wartością {{Code|nil}}, drugim: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, i dalszymi.
== {{Śródtytuł|p.ZamienianiePobierzNaKod}}{{Code|p.ZamienianiePobierzNaKod}} ==
Funkcja na podstawie parametru {{ZobaczTeż|tekst}}: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, występujących w tabeli: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, zdefiniowanych jako tablica: {{Code|<nowiki>pozycja[3][1][1]</nowiki>}}.
Modyfikuje też elementy zapisane w bazie szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}:
* Zdefiniujmy, że to: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[1]</nowiki>}} (baza kodów bazy zakodowanego tekstu), a jeśli ona nie istnieje, to: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}} (baza kodów strony bieżącej).
* Zdefiniujmy, że to: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[2]</nowiki>}} (baza parametrów danych obiektów dla szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}), a jeśli ona nie istnieje, to: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}} (baza parametrów strony bieżącej).
: Ale to zwykle istnieją te poszczególne pierwsze, aby wyświetlić zamieniony, czyli zmodyfikowany, element, ewentualnie ze zmodyfikowaną kolejno bazą danych kodów i parametrów strony bieżącej.
Funkcja do szybszego działania wykorzystuje tabelę: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}} i {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony-Śródtekst}}.
Funkcja robi kopię: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, i {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, dla każdego wywołania szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, aby było możeliwe jego analizowanie względem różnych wywołań tego szablonu do tego samego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, o pewnym uchwycie na danej stronie.
Funkcja przyszykowuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, względem parametrów, wskazującego na niego, szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, do dalszej analizy przez: '''{{ld|StronicowyParser|Stronnicowy Parser}}''', to jest robione przy pomocy: {{LinkŚródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="Lua">
function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|obiekt}} | _1 = Jak w: {{LinkPatrz|Pobierz: obiekt}}.
| 2 = {{Code|kod}} | _2 = Jak w: {{LinkPatrz|Pobierz: kod}}.
| 3 = {{Code|pozycja}} | _3 = Dany element numerowany, który przedstawia pozycję dla elementów typu: {{LinkPatrz|Śródtekst}}, ze strony szablonów rodzaju: {{Code|Śródtekst}}{{LinkPatrz|Śródtekst}}, lub {{Code|Pobierz}} {{LinkPatrz|Pobierz}}.
| 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
| 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}.
| 8 = {{Code|czy_korzystane}} {{Patrz|czy_korzystane}} | _8 = Czy wykorzystawane elementy są typu: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy ta wartość przyjmuje wartość {{Code|true}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}.
}}
Funkcja wykorzystuje do modyfikacji funkcję: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, ona seryjnie modyfikuje całe elementy tekstu {{LinkZobaczTeż|tekst}} lub elementy bazy {{LinkZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}} o pewnych dwuwymiarowych nazwach, co do kodów bazy. Element tekstu do modyfikacji jest uzyskiwany z funkcji: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, jeżeli ten tekst istnieje, a gdy nie, to funkcja nie zwraca żadnej wartości, a jak jest, to ten tekst, ze zmodyfikowaną tabelą bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, też ze zmodyfikowaną tabelą parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
== {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuPobierz}} ==
Funkcja zastępuje swoje odwołanie uchwytowe dla elementu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, szablonu typu: {{s|PobierzŚródtekst}}, przetransformowanym tekstem z szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}: o tych samych uchwytach z elementów typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jeżeli jest jeden tam taki uchwyt dla tego elementu, na odpowiedniej stronie nie otoczonej znacznikami: {{Tag|includeonly}}, '''mechanizmu: {{NS|l=tak|k=mw|w=tak|pk=d}}'''.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Treści obiektu typu: {{LinkPatrz|Pobierz}}.
| 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|Pobierz: obiekt}}.
| 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|Pobierz: kod}}.
| 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
| 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}.
| 8 = {{Code|tablica_zmiennych}} | _8 = Jak w: {{LinkPatrz|tablica_zmiennych}}.
}}
Funkcja wykorzystuje funkcję: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na bieżącej stronie, lub {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na stronie niebieżącej, obie tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a także funkcję: {{LinkŚródtytuł|p.ZamienianiePobierzNaKod}}, który zamienia ten obiekt: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, pobierania na odpowiedni wikikod do działania z szablonu tekstu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Jeżeli funkcja nie wykrywała w ramach aktualnej strony elementu typu nie {{LinkPatrz|Pobierz}} swojego odpowiednika względem tej pierwszej tablicy, to szuka je w ramach tej niekaktualnej względem tej drugiej, a jeżeli funkcja znalazła taki swój odpowiednik, to go zwraca, a jeżeli nie, to zwraca wartość {{Code|nil}}.
== {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} ==
Szablon zastępuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jej zawartością tekstową: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, jeśli istnieje, w odpowiedni sposób.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}.
| 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}.
| 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod}}.
| 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
| 7 = {{Code|tablica_zmiennych}} | _7 = Jak w: {{LinkPatrz|tablica_zmiennych}}.
}}
Funkcja do swojego działania wykorzystuje tabelę: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, by dało się to zastąpienie wykonać. Funkcja do swojego działania potrzebuje: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, który pobiera tekst z tego szablonu, i zamieniąc go typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, ale nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, właśnie na to.
== {{Śródtytuł|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}}{{Code|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}} ==
Funkcje elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, i typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, zastępuje je zawartością kolejno z odpowiednich szablonów pierwszego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}} (tutaj z siebie samego pobiera tekst, i zastępują siebie właśnie tym), i drugiego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jej zawartością, oczywiście, biorąc zawartość tekstowa z: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jest właśnie tam ustawiana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _1 = tekst, na którym operujemy, modyfikując odpowiednio jego kody, dotyczące tych dwóch szablonów,
| 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa w formacie szablonowym strony danej, nie tylko szablonów, w wywołaniach szablonowych.
| 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
| 5 = {{Code|tablica_zmiennych}} | _5 = Jak w: {{LinkPatrz|tablica_zmiennych}}.
| 6 = {{Code|IterowaniePoElementachTekstu}} {{Patrz|IterowaniePoElementachTekstu}} | _6 = Iterator po elementach kodów szablonowych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} i związaną z nim: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
}}
Funkcja wykorzystuje odpowiednio tablice: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - tablica o szablonach {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}} na stronach niebieżących, i {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - a tutaj bieżących, obie tablicy są podtabelami tabeli wyższej (nadrzędnej: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, są używane do szybkiego zakończeniu funkcji, gdy by takich tam obiektów nie było, w tekście. Są one używane do zastąpienia ich zawartością z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}.
Funkcja do swojego działania wykorzystuje funkcje: {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}} - gdy mamy szablony typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, i {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} - jeśli używamy elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Aby wykorzystać te funkcje, uruchamiana jest najpierw: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, to zastąpienia tego typu szanlonów odpowiednią zawartością z tych zmiennych.
Funkcja do sprawdzania, czy są tego typu szablony z dwóch, rewiduje, czy one są pierwszego typu, czy drugiego, aby dało się je zastąpić wartością wikikodu ze zmiennej z szablonów {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, to wykorzystuje do tego typu tabele: {{Code|{{sr|#p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu}}, dla obiektów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, a: {{Code|{{sr|#p.szablony_stronicowego_parsera.szablony_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowego_parsera.szablony_tekstu}}, dla obiektu typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, ale: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
jz4jm0mqfqoa4zaww0tan6stqxrxkb9
558401
558400
2026-10-03T10:23:48Z
Persino
2851
/* {{Śródtytuł|p.ZamienianiePobierzNaKod}}{{Code|p.ZamienianiePobierzNaKod}} */
558401
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SzablonyTekstu}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Ten moduł służy do obsługi szablonów: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}.
* Szablony typu: {{Code|Śródtekst}} {{Patrz|Śródtekst}}, to są: {{s|Śródtekst}}.
** {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - to jest typ obiektu i jego numer szablonów typu: nie {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}.
* Szablony typu: {{Code|Pobierz}} {{Patrz|Pobierz}}, to są: {{s|PobierzŚródtekst}}.
** {{Code|Pobierz: obiekt}} {{Patrz|Pobierz: obiekt}} i {{Code|Pobierz: kod}} {{Patrz|Pobierz: kod}} - to jest typ obiektu i jego numer szablonów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}.
Szablony: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}, mają walidację błędów, więc mogą, oprócz parametrów standardowych, przyjmować zmienne o kluczach odpowiednio: {{Code|klucz}} (lub {{Code|klucz1}}), {{Code|klucz2}}, {{Code|klucz3}}, ..., itd.. Tych parametrów może być dowolna liczba, ale mogą być pomiędzy nimi przerwy.
; Zbieranie elementów typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, na stronie bieżącej, jak i dołączonej{{dk}}
'''{{ld|StronicowyParser|Stronicowy parser}}''' jak napotka szablon {{s|Śródtekst}}, to generuje tworzenie następujących tablic: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{Patrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, dla tych szablonów w artykule niekorzystanej, lub korzystanej według: {{Code|tablica_szablonu_tekstu_korzystanych}} {{Patrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, jako {{ZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}:
<syntaxhighlight lang="lua">
if(not czy_artykul_korzystany)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{
{wartosc_elementu,lista_dwuelementowa,},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
{tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,},
});
else
if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{
{wartosc_elementu,lista_dwuelementowa,},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
{tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,},
});
end;
</syntaxhighlight>
* Teb powyższy kod, to nic innego jak część definicji fukcji: {{LinkŚródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}, używaną do stawiaia tego, gdy napotkano szablony tytu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}.
; Strony niebieżące - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}} na stronie bieżącej, które odwołują się właśnie do tej niebieżącej{{dk}}
Drugi element wsadzanej tablicy za pomocą {{LzLua|table.insert}}, jest to nic innego, jak tablica zawierająca następne tablice, gdy tam jakiś element się pojawi, a ta operacja jest robina przez funkcję {{LinkŚródtytuł|p.UstawianiePobierz}} {{ZobaczTeż|p.UstawianiePobierz}}:
<syntaxhighlight lang="lua">
local tablica_szablonu_tekstu;
if(czy_artykul_korzystany)then
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych;
else
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych;
end;
if(tablica_szablonu_tekstu)then
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
...
local dodatkowe_elementy=pozycja[2];
...
if(not czy_tak)then
local tab_numer;
if(tablica_zmiennych)then
tab_numer={};
for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do
tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name];
end;
end;
table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer});
break;
</syntaxhighlight>
* gdzie: tabela: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}}, będąca podtabelą tabeli: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, to nic innego, jak zbiór tablic mniejszych dla posczególnych obiektów, tutaj nazwanych kluczami: {{Code|name}}, w tych mniejszych mieszczą się pojedyncze tabele, ktore pierwszym elementem jest uchwyt, a drugim jest sam tekst szablonu typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}.
* Tą funkcję używamy do zbierania informacji o inne stronie, dołączonej do aktualnej, w wyniku uruchomienia szablonu linku lub pobierania.
; Strony bieżące korzystane - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, które odwołują się do niej{{dk}}
Funkcja natomiast: {{LinkŚródtytuł|p.UstawianiePobierz}}, jest uruchamiana przez funkcję: {{LinkŚródtytuł|p.UstawPobierzKorzystanie}}, dla modułu bieżącego, która zbiera odpowiednie elementy pobierania (szablony typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}) w tablicach linkowych (pobierania) {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, to są tablice, aktualnej - bieżącej, strony, ta tablica jest tworzona sposobem, ale nie w tej funkcji, ta funkcja jedynie z tego korzysta, a ten kod poniżej jest używany, gdzie indziej w kodzie {{ZobaczTeż|p.LinkowanieFinalizowaniePrac}}:
<syntaxhighlight lang="lua">
if(czy_pobierz)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then
tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={};
end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},});
end;
</syntaxhighlight>
W tej tablicy mieszczą się informację, co do poszczególnych obiektów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jak: {{s|PobierzŚródtekst}}.
----
; Inne{{dk}}
Z tych tabel korzysta, nie tylko, szablon: {{s|Śródtekst}}, ale też i: {{s|PobierzŚródtekst}}, przy pomocy oprogramowania modułu: {{m|StronicowyParser}}, czy: {{m|StronicowyParser/}}.
== {{Śródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}{{Code|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}} ==
Funkcja służy do zastępowania parametrów, w szablonie typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, w zmiennych parametru: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}} lub {{Code|1}} {{LinkPatrz|1}}, w jego wartości, argumentów typu o wzorze ogólnym: {{Code|<nowiki>klucz%d*</nowiki>}} {{Patrz|klucz%d*}}, na odpowiednie wartości, ustawiane przez szablon w rodzaju: {{s|PobierzŚródtekst}} {{LinkPatrz|Pobierz}}, występujących w parametrach w wywołaniach jego szablonu lub bezpośrednio w tym pierwszym.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PreparowanieSzablonoweLinkoweSzablonuTekstu(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} {{Patrz|tekst-kod}} | _1 = Jest to kod bazy: {{Code|{{m|Szablonowe}}}}, o odpowiednim formacie,którego poszczególne elementy dzieci i potomków są modyfikowane.
| 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa strony w formacie wykonywalnym szablonów, względem innych przestrzeni.
| 3 = Parametry szablonu typu: {{s|Śródtekst}}, rodzaju: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}: | nagłówek3 = tak
| 4 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|stare__tablica_analizy_obiektow_strony_dany_modul}} | _4 = Baza danych szablonowa stworzona specjalnie dla szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, który jest dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tą funkcję.
| 5 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|stare___tablica_danych_parametrow_szablonu_strony}} | _5 = Tabela paremetrów rozwinieć bazy: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|stare__tablica_analizy_obiektow_strony_dany_modul}}, dzięki któremu uzyskuje się przyszybszenie stronicowego parsera. Jest ona dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tę funkcję.
| 6 = Parametry szablonu typu: {{s|PobierzŚródtekst}}, rodzaju: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla strony bieżącej: | nagłówek6 = tak
| 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. Jest to tabela parametrów szablonu.
| 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Jest to tablica bazy kodów parsowania: '''{{ld|Szablonowe|w bibliotece parsowania dowolnego wikikodu mechanizmu MediaWiki}}'''.
| 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Jest to baza parametrów rozwinieć, jak: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|stare___tablica_danych_parametrow_szablonu_strony}}, ale dla: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 10 = Nazwy danej książki danej strony, jeśli poszczególne istnieją, na którą wskazuje szablon typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, na odpowiedni szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}: | nagłówek10 = tak
| 11 = {{Code|nazwa_modulu_ksiazki_tekstu}} {{Patrz|nazwa_modulu_ksiazki_tekstu}} | _11 = Pełna nazwa książki danej strony, lub ewentualnie w niektórych przypadkach bez przestrzeni nazw.
| 12 = {{Code|nazwa_artykulu_tekstu}} {{Patrz|nazwa_artykulu_tekstu}} | _12 = Nazwa książkowa artykułu danej strony.
}}
Zweacane parametry:
{{OpisParametrów
| 1 = Zwraca to samo, co jest tym: {{Code|tekst}} {{LinkPatrz|tekst-kod}} | komórka1 = tak
}}
== {{Śródtytuł|p.ParametrTekstowySzablonuTekstu}}{{Code|p.ParametrTekstowySzablonuTekstu}} ==
Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, tekstu o nazwie pierwszy z kolei, który istnieje, więc: {{Code|tekst}} {{Patrz|tekst}}, {{Code|treść}} {{Patrz|treść}} lub {{Code|1}} {{Patrz|1}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca:
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o różnych parametrach nazwanych lub nienazwanych.
}}
== {{Śródtytuł|p.SzablonTekstuBezPreProcess}}{{Code|p.SzablonTekstuBezPreProcess}} ==
Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, o nazwie {{Code|bez preprocess}} {{Patrz|bez preprocess}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca:
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o parametrach nazwanych lub nienazwanych.
}}
== {{Śródtytuł|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}}{{Code|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}} ==
Funkcja elementy tablicy: {{Code|tablica_zmiennych2}} {{Patrz|tablica_zmiennych2}}, przypisuje tablicy: {{Code|tablica_zmiennych}} {{Patrz|tablica_zmiennych}}, czyli do tego pierwszego dodaje elementy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, do tablicy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a jeżeli ta tablica nie istnieje, to jest tworzona:
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}, jest to tablica dla strony niekorzystanej.
| 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}, jest to tablica dla strony korzystanej, aktualnej strony, która jest wyświetlana na ekranie.
}}
== {{Śródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}{{Code|p.DodawanieDoBazyStronySzablonuTekstu}} ==
Szablon dodający elementy do tablicy bazy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, lub {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, tzn. do tablicy: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, jest równy wartości fałszywej, przeciwnie do: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tej samej tablicy co poprzednio. Te elementy są dodawane według następującego kodu: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}} lub {{LinkPatrz|tablica_zmiennych2}}.
| 2 = {{Code|wartosc_elementu}} {{Patrz|wartosc_elementu}} | _2 = Rodzaj elementu, jak: {{Code|Śródtekst}} {{Patrz|rodzaj: Śródtekst}}, dla jednego z szablonów tekstu.
| 3 = {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} | _3 = Tablica elementu tablicy zbierającej dane, element posiada tylko pierwszy element, który jest uchwytem.
| 4 = {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}} | _4 = Obiekt i kod, szablonu typu {{s|Śródtekst}} {{LinkPatrz|Śródtekst}} w tekście zakodowanym.
| 5 = {{Code|tabela_parametrow_szablonu}} | _5 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}.
| 6 = {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} | _6 = Nazwa szablonu tekstu, typu, dla {{LinkPatrz|Śródtekst}}.
| 7 = {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} | _7 = Tablica modyfikatorów uruchmienia szablonu {{LinkPatrz|Śródtekst}}.
| 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Tablica bazy kodów modułu {{m|Szablonowe}}.
| 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _9 = Tablica rozkładu na czynniki pierwsze, elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 10 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _10 = Przyjmuje wartość: {{Code|true}}, gdy artykuł jest taki sam, jak strona w przeglądarce.
}}
Tablica jako drugi element dodawanej tablicy w kodzie: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}, to są tam podtablice, które są tablicami składających się z obiektu i kodu elementu {{s|PobierzŚródtekst}} {{Patrz|PobierzŚródtekst}}, tych podtablic może być wiele dla różnych tych.
== {{Śródtytuł|p.UstawianiePobierz}}{{Code|p.UstawianiePobierz}} ==
Funkcja dodaje do danego elementu typu: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, utworzonego na podstawie obiektów nie typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, w postaci tablicy utworzonego z trzech elementów, tzn.: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}, a trzeci element tablicy jest numerkiem nazwanym, ile w danym elemencie było wtedy aktualnie elementów przed wywołaniem szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla zmiennych w tablicach: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. Ten element służy do wstawiania innych elementów do tablic nazwanych uchwytów oraz ich numerków (dla elementów numerowanych) lub nie, aby przesunąc od pewnego momentu ich zawartości do przodu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}.
| 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}.
| 3 = {{Code|obiekt}} {{LinkPatrz|Pobierz: obiekt}} | _3 = Obiekt, jak: {{LinkPatrz|rodzaj: Śródtekst}}, obiektu typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}.
| 4 = {{Code|kod}} {{LinkPatrz|Pobierz: kod}} | _4 = Numer danego obiektu typu {{LinkPatrz|Pobierz}}.
| 5 = {{Code|nazwa_obiektu}} {{Patrz|nazwa_obiektu}} | _5 = Nazwa danego obiektu {{LinkPatrz|Śródtekst}}.
| 6 = {{Code|uchwyt_obiektu}} {{Patrz|uchwyt_obiektu}} | _6 = Unikalny uchwyt danego obiektu {{LinkPatrz|Śródtekst}}.
| 7 = {{Code|czy_artykul_korzystany}} | _7 = Jak w: {{LinkPatrz|czy_artykul_korzystany}}.
}}
Gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, przyjmuje wartość {{Code|true}}, wtedy jest używana tablica: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tej samej tablicy, co poprzednio, ale dla elementów typu: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, na podstawie tego w ten sposób jest tworzona pewna tablica, te elementy są dodawane do drugiej podtablicy w tablicy dodawanej w {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}.
== {{Śródtytuł|p.UstawPobierzKorzystanie}}{{Code|p.UstawPobierzKorzystanie}} ==
Funkcja na podstawie stworzonych elementów w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{Patrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, która składa się z tablic numerowanych, gdzie w każdej takiej jego tablicy są dwie podtablice, te elementy są zbierane dla: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, pierwsza taka podtablica jest tablicą numerowaną z: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu}}, i {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu}}, a druga taka podtablica jest z: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UstawPobierzKorzystanie(tablica_zmiennych2)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tablica_zmiennych2}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych2}}.
}}
Na podstawie każdego takich elementów numerowanych w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, jest uruchamiana funkcja: {{LinkŚródtytuł|p.UstawianiePobierz}}, dla pierwszego parametru z wartością {{Code|nil}}, drugim: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, i dalszymi.
== {{Śródtytuł|p.ZamienianiePobierzNaKod}}{{Code|p.ZamienianiePobierzNaKod}} ==
Funkcja na podstawie parametru {{ZobaczTeż|tekst}}: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, występujących w tabeli: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, zdefiniowanych jako tablica: {{Code|<nowiki>pozycja[3][1][1]</nowiki>}}.
Modyfikuje też elementy zapisane w bazie szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, takie {{ZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}}:
* Zdefiniujmy, że to: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[1]</nowiki>}} (baza kodów bazy zakodowanego tekstu), a jeśli ona nie istnieje, to: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}} (baza kodów strony bieżącej).
* Zdefiniujmy, że to: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[2]</nowiki>}} (baza parametrów danych obiektów dla szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}), a jeśli ona nie istnieje, to: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}} (baza parametrów strony bieżącej).
: Ale to zwykle istnieją te poszczególne pierwsze, aby wyświetlić zamieniony, czyli zmodyfikowany, element, ewentualnie ze zmodyfikowaną kolejno bazą danych kodów i parametrów strony bieżącej.
Funkcja do szybszego działania wykorzystuje tabelę: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}} i {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony-Śródtekst}}.
Funkcja robi kopię: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, i {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, dla każdego wywołania szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, aby było możeliwe jego analizowanie względem różnych wywołań tego szablonu do tego samego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, o pewnym uchwycie na danej stronie.
Funkcja przyszykowuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, względem parametrów, wskazującego na niego, szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, do dalszej analizy przez: '''{{ld|StronicowyParser|Stronnicowy Parser}}''', to jest robione przy pomocy: {{LinkŚródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="Lua">
function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|obiekt}} | _1 = Jak w: {{LinkPatrz|Pobierz: obiekt}}.
| 2 = {{Code|kod}} | _2 = Jak w: {{LinkPatrz|Pobierz: kod}}.
| 3 = {{Code|pozycja}} | _3 = Dany element numerowany, który przedstawia pozycję dla elementów typu: {{LinkPatrz|Śródtekst}}, ze strony szablonów rodzaju: {{Code|Śródtekst}}{{LinkPatrz|Śródtekst}}, lub {{Code|Pobierz}} {{LinkPatrz|Pobierz}}.
| 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
| 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}.
| 8 = {{Code|czy_korzystane}} {{Patrz|czy_korzystane}} | _8 = Czy wykorzystawane elementy są typu: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy ta wartość przyjmuje wartość {{Code|true}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}.
}}
Funkcja wykorzystuje do modyfikacji funkcję: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, ona seryjnie modyfikuje całe elementy tekstu {{LinkZobaczTeż|tekst}} lub elementy bazy {{LinkZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}} o pewnych dwuwymiarowych nazwach, co do kodów bazy. Element tekstu do modyfikacji jest uzyskiwany z funkcji: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, jeżeli ten tekst istnieje, a gdy nie, to funkcja nie zwraca żadnej wartości, a jak jest, to ten tekst, ze zmodyfikowaną tabelą bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, też ze zmodyfikowaną tabelą parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
== {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuPobierz}} ==
Funkcja zastępuje swoje odwołanie uchwytowe dla elementu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, szablonu typu: {{s|PobierzŚródtekst}}, przetransformowanym tekstem z szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}: o tych samych uchwytach z elementów typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jeżeli jest jeden tam taki uchwyt dla tego elementu, na odpowiedniej stronie nie otoczonej znacznikami: {{Tag|includeonly}}, '''mechanizmu: {{NS|l=tak|k=mw|w=tak|pk=d}}'''.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Treści obiektu typu: {{LinkPatrz|Pobierz}}.
| 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|Pobierz: obiekt}}.
| 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|Pobierz: kod}}.
| 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
| 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}.
| 8 = {{Code|tablica_zmiennych}} | _8 = Jak w: {{LinkPatrz|tablica_zmiennych}}.
}}
Funkcja wykorzystuje funkcję: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na bieżącej stronie, lub {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na stronie niebieżącej, obie tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a także funkcję: {{LinkŚródtytuł|p.ZamienianiePobierzNaKod}}, który zamienia ten obiekt: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, pobierania na odpowiedni wikikod do działania z szablonu tekstu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Jeżeli funkcja nie wykrywała w ramach aktualnej strony elementu typu nie {{LinkPatrz|Pobierz}} swojego odpowiednika względem tej pierwszej tablicy, to szuka je w ramach tej niekaktualnej względem tej drugiej, a jeżeli funkcja znalazła taki swój odpowiednik, to go zwraca, a jeżeli nie, to zwraca wartość {{Code|nil}}.
== {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} ==
Szablon zastępuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jej zawartością tekstową: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, jeśli istnieje, w odpowiedni sposób.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}.
| 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}.
| 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod}}.
| 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
| 7 = {{Code|tablica_zmiennych}} | _7 = Jak w: {{LinkPatrz|tablica_zmiennych}}.
}}
Funkcja do swojego działania wykorzystuje tabelę: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, by dało się to zastąpienie wykonać. Funkcja do swojego działania potrzebuje: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, który pobiera tekst z tego szablonu, i zamieniąc go typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, ale nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, właśnie na to.
== {{Śródtytuł|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}}{{Code|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}} ==
Funkcje elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, i typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, zastępuje je zawartością kolejno z odpowiednich szablonów pierwszego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}} (tutaj z siebie samego pobiera tekst, i zastępują siebie właśnie tym), i drugiego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jej zawartością, oczywiście, biorąc zawartość tekstowa z: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jest właśnie tam ustawiana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _1 = tekst, na którym operujemy, modyfikując odpowiednio jego kody, dotyczące tych dwóch szablonów,
| 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa w formacie szablonowym strony danej, nie tylko szablonów, w wywołaniach szablonowych.
| 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
| 5 = {{Code|tablica_zmiennych}} | _5 = Jak w: {{LinkPatrz|tablica_zmiennych}}.
| 6 = {{Code|IterowaniePoElementachTekstu}} {{Patrz|IterowaniePoElementachTekstu}} | _6 = Iterator po elementach kodów szablonowych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} i związaną z nim: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
}}
Funkcja wykorzystuje odpowiednio tablice: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - tablica o szablonach {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}} na stronach niebieżących, i {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - a tutaj bieżących, obie tablicy są podtabelami tabeli wyższej (nadrzędnej: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, są używane do szybkiego zakończeniu funkcji, gdy by takich tam obiektów nie było, w tekście. Są one używane do zastąpienia ich zawartością z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}.
Funkcja do swojego działania wykorzystuje funkcje: {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}} - gdy mamy szablony typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, i {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} - jeśli używamy elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Aby wykorzystać te funkcje, uruchamiana jest najpierw: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, to zastąpienia tego typu szanlonów odpowiednią zawartością z tych zmiennych.
Funkcja do sprawdzania, czy są tego typu szablony z dwóch, rewiduje, czy one są pierwszego typu, czy drugiego, aby dało się je zastąpić wartością wikikodu ze zmiennej z szablonów {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, to wykorzystuje do tego typu tabele: {{Code|{{sr|#p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu}}, dla obiektów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, a: {{Code|{{sr|#p.szablony_stronicowego_parsera.szablony_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowego_parsera.szablony_tekstu}}, dla obiektu typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, ale: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
h4xwabdwc002p0ljlbmaef9bqvysn7p
558402
558401
2026-10-03T10:24:26Z
Persino
2851
/* {{Śródtytuł|p.ZamienianiePobierzNaKod}}{{Code|p.ZamienianiePobierzNaKod}} */
558402
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SzablonyTekstu}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Ten moduł służy do obsługi szablonów: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}.
* Szablony typu: {{Code|Śródtekst}} {{Patrz|Śródtekst}}, to są: {{s|Śródtekst}}.
** {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - to jest typ obiektu i jego numer szablonów typu: nie {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}.
* Szablony typu: {{Code|Pobierz}} {{Patrz|Pobierz}}, to są: {{s|PobierzŚródtekst}}.
** {{Code|Pobierz: obiekt}} {{Patrz|Pobierz: obiekt}} i {{Code|Pobierz: kod}} {{Patrz|Pobierz: kod}} - to jest typ obiektu i jego numer szablonów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}.
Szablony: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}, mają walidację błędów, więc mogą, oprócz parametrów standardowych, przyjmować zmienne o kluczach odpowiednio: {{Code|klucz}} (lub {{Code|klucz1}}), {{Code|klucz2}}, {{Code|klucz3}}, ..., itd.. Tych parametrów może być dowolna liczba, ale mogą być pomiędzy nimi przerwy.
; Zbieranie elementów typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, na stronie bieżącej, jak i dołączonej{{dk}}
'''{{ld|StronicowyParser|Stronicowy parser}}''' jak napotka szablon {{s|Śródtekst}}, to generuje tworzenie następujących tablic: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{Patrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, dla tych szablonów w artykule niekorzystanej, lub korzystanej według: {{Code|tablica_szablonu_tekstu_korzystanych}} {{Patrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, jako {{ZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}:
<syntaxhighlight lang="lua">
if(not czy_artykul_korzystany)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{
{wartosc_elementu,lista_dwuelementowa,},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
{tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,},
});
else
if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{
{wartosc_elementu,lista_dwuelementowa,},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
{tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,},
});
end;
</syntaxhighlight>
* Teb powyższy kod, to nic innego jak część definicji fukcji: {{LinkŚródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}, używaną do stawiaia tego, gdy napotkano szablony tytu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}.
; Strony niebieżące - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}} na stronie bieżącej, które odwołują się właśnie do tej niebieżącej{{dk}}
Drugi element wsadzanej tablicy za pomocą {{LzLua|table.insert}}, jest to nic innego, jak tablica zawierająca następne tablice, gdy tam jakiś element się pojawi, a ta operacja jest robina przez funkcję {{LinkŚródtytuł|p.UstawianiePobierz}} {{ZobaczTeż|p.UstawianiePobierz}}:
<syntaxhighlight lang="lua">
local tablica_szablonu_tekstu;
if(czy_artykul_korzystany)then
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych;
else
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych;
end;
if(tablica_szablonu_tekstu)then
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
...
local dodatkowe_elementy=pozycja[2];
...
if(not czy_tak)then
local tab_numer;
if(tablica_zmiennych)then
tab_numer={};
for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do
tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name];
end;
end;
table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer});
break;
</syntaxhighlight>
* gdzie: tabela: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}}, będąca podtabelą tabeli: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, to nic innego, jak zbiór tablic mniejszych dla posczególnych obiektów, tutaj nazwanych kluczami: {{Code|name}}, w tych mniejszych mieszczą się pojedyncze tabele, ktore pierwszym elementem jest uchwyt, a drugim jest sam tekst szablonu typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}.
* Tą funkcję używamy do zbierania informacji o inne stronie, dołączonej do aktualnej, w wyniku uruchomienia szablonu linku lub pobierania.
; Strony bieżące korzystane - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, które odwołują się do niej{{dk}}
Funkcja natomiast: {{LinkŚródtytuł|p.UstawianiePobierz}}, jest uruchamiana przez funkcję: {{LinkŚródtytuł|p.UstawPobierzKorzystanie}}, dla modułu bieżącego, która zbiera odpowiednie elementy pobierania (szablony typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}) w tablicach linkowych (pobierania) {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, to są tablice, aktualnej - bieżącej, strony, ta tablica jest tworzona sposobem, ale nie w tej funkcji, ta funkcja jedynie z tego korzysta, a ten kod poniżej jest używany, gdzie indziej w kodzie {{ZobaczTeż|p.LinkowanieFinalizowaniePrac}}:
<syntaxhighlight lang="lua">
if(czy_pobierz)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then
tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={};
end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},});
end;
</syntaxhighlight>
W tej tablicy mieszczą się informację, co do poszczególnych obiektów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jak: {{s|PobierzŚródtekst}}.
----
; Inne{{dk}}
Z tych tabel korzysta, nie tylko, szablon: {{s|Śródtekst}}, ale też i: {{s|PobierzŚródtekst}}, przy pomocy oprogramowania modułu: {{m|StronicowyParser}}, czy: {{m|StronicowyParser/}}.
== {{Śródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}{{Code|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}} ==
Funkcja służy do zastępowania parametrów, w szablonie typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, w zmiennych parametru: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}} lub {{Code|1}} {{LinkPatrz|1}}, w jego wartości, argumentów typu o wzorze ogólnym: {{Code|<nowiki>klucz%d*</nowiki>}} {{Patrz|klucz%d*}}, na odpowiednie wartości, ustawiane przez szablon w rodzaju: {{s|PobierzŚródtekst}} {{LinkPatrz|Pobierz}}, występujących w parametrach w wywołaniach jego szablonu lub bezpośrednio w tym pierwszym.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PreparowanieSzablonoweLinkoweSzablonuTekstu(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} {{Patrz|tekst-kod}} | _1 = Jest to kod bazy: {{Code|{{m|Szablonowe}}}}, o odpowiednim formacie,którego poszczególne elementy dzieci i potomków są modyfikowane.
| 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa strony w formacie wykonywalnym szablonów, względem innych przestrzeni.
| 3 = Parametry szablonu typu: {{s|Śródtekst}}, rodzaju: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}: | nagłówek3 = tak
| 4 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|stare__tablica_analizy_obiektow_strony_dany_modul}} | _4 = Baza danych szablonowa stworzona specjalnie dla szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, który jest dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tą funkcję.
| 5 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|stare___tablica_danych_parametrow_szablonu_strony}} | _5 = Tabela paremetrów rozwinieć bazy: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|stare__tablica_analizy_obiektow_strony_dany_modul}}, dzięki któremu uzyskuje się przyszybszenie stronicowego parsera. Jest ona dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tę funkcję.
| 6 = Parametry szablonu typu: {{s|PobierzŚródtekst}}, rodzaju: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla strony bieżącej: | nagłówek6 = tak
| 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. Jest to tabela parametrów szablonu.
| 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Jest to tablica bazy kodów parsowania: '''{{ld|Szablonowe|w bibliotece parsowania dowolnego wikikodu mechanizmu MediaWiki}}'''.
| 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Jest to baza parametrów rozwinieć, jak: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|stare___tablica_danych_parametrow_szablonu_strony}}, ale dla: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 10 = Nazwy danej książki danej strony, jeśli poszczególne istnieją, na którą wskazuje szablon typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, na odpowiedni szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}: | nagłówek10 = tak
| 11 = {{Code|nazwa_modulu_ksiazki_tekstu}} {{Patrz|nazwa_modulu_ksiazki_tekstu}} | _11 = Pełna nazwa książki danej strony, lub ewentualnie w niektórych przypadkach bez przestrzeni nazw.
| 12 = {{Code|nazwa_artykulu_tekstu}} {{Patrz|nazwa_artykulu_tekstu}} | _12 = Nazwa książkowa artykułu danej strony.
}}
Zweacane parametry:
{{OpisParametrów
| 1 = Zwraca to samo, co jest tym: {{Code|tekst}} {{LinkPatrz|tekst-kod}} | komórka1 = tak
}}
== {{Śródtytuł|p.ParametrTekstowySzablonuTekstu}}{{Code|p.ParametrTekstowySzablonuTekstu}} ==
Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, tekstu o nazwie pierwszy z kolei, który istnieje, więc: {{Code|tekst}} {{Patrz|tekst}}, {{Code|treść}} {{Patrz|treść}} lub {{Code|1}} {{Patrz|1}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca:
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o różnych parametrach nazwanych lub nienazwanych.
}}
== {{Śródtytuł|p.SzablonTekstuBezPreProcess}}{{Code|p.SzablonTekstuBezPreProcess}} ==
Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, o nazwie {{Code|bez preprocess}} {{Patrz|bez preprocess}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca:
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o parametrach nazwanych lub nienazwanych.
}}
== {{Śródtytuł|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}}{{Code|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}} ==
Funkcja elementy tablicy: {{Code|tablica_zmiennych2}} {{Patrz|tablica_zmiennych2}}, przypisuje tablicy: {{Code|tablica_zmiennych}} {{Patrz|tablica_zmiennych}}, czyli do tego pierwszego dodaje elementy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, do tablicy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a jeżeli ta tablica nie istnieje, to jest tworzona:
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}, jest to tablica dla strony niekorzystanej.
| 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}, jest to tablica dla strony korzystanej, aktualnej strony, która jest wyświetlana na ekranie.
}}
== {{Śródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}{{Code|p.DodawanieDoBazyStronySzablonuTekstu}} ==
Szablon dodający elementy do tablicy bazy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, lub {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, tzn. do tablicy: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, jest równy wartości fałszywej, przeciwnie do: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tej samej tablicy co poprzednio. Te elementy są dodawane według następującego kodu: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}} lub {{LinkPatrz|tablica_zmiennych2}}.
| 2 = {{Code|wartosc_elementu}} {{Patrz|wartosc_elementu}} | _2 = Rodzaj elementu, jak: {{Code|Śródtekst}} {{Patrz|rodzaj: Śródtekst}}, dla jednego z szablonów tekstu.
| 3 = {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} | _3 = Tablica elementu tablicy zbierającej dane, element posiada tylko pierwszy element, który jest uchwytem.
| 4 = {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}} | _4 = Obiekt i kod, szablonu typu {{s|Śródtekst}} {{LinkPatrz|Śródtekst}} w tekście zakodowanym.
| 5 = {{Code|tabela_parametrow_szablonu}} | _5 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}.
| 6 = {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} | _6 = Nazwa szablonu tekstu, typu, dla {{LinkPatrz|Śródtekst}}.
| 7 = {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} | _7 = Tablica modyfikatorów uruchmienia szablonu {{LinkPatrz|Śródtekst}}.
| 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Tablica bazy kodów modułu {{m|Szablonowe}}.
| 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _9 = Tablica rozkładu na czynniki pierwsze, elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 10 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _10 = Przyjmuje wartość: {{Code|true}}, gdy artykuł jest taki sam, jak strona w przeglądarce.
}}
Tablica jako drugi element dodawanej tablicy w kodzie: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}, to są tam podtablice, które są tablicami składających się z obiektu i kodu elementu {{s|PobierzŚródtekst}} {{Patrz|PobierzŚródtekst}}, tych podtablic może być wiele dla różnych tych.
== {{Śródtytuł|p.UstawianiePobierz}}{{Code|p.UstawianiePobierz}} ==
Funkcja dodaje do danego elementu typu: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, utworzonego na podstawie obiektów nie typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, w postaci tablicy utworzonego z trzech elementów, tzn.: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}, a trzeci element tablicy jest numerkiem nazwanym, ile w danym elemencie było wtedy aktualnie elementów przed wywołaniem szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla zmiennych w tablicach: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. Ten element służy do wstawiania innych elementów do tablic nazwanych uchwytów oraz ich numerków (dla elementów numerowanych) lub nie, aby przesunąc od pewnego momentu ich zawartości do przodu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}.
| 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}.
| 3 = {{Code|obiekt}} {{LinkPatrz|Pobierz: obiekt}} | _3 = Obiekt, jak: {{LinkPatrz|rodzaj: Śródtekst}}, obiektu typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}.
| 4 = {{Code|kod}} {{LinkPatrz|Pobierz: kod}} | _4 = Numer danego obiektu typu {{LinkPatrz|Pobierz}}.
| 5 = {{Code|nazwa_obiektu}} {{Patrz|nazwa_obiektu}} | _5 = Nazwa danego obiektu {{LinkPatrz|Śródtekst}}.
| 6 = {{Code|uchwyt_obiektu}} {{Patrz|uchwyt_obiektu}} | _6 = Unikalny uchwyt danego obiektu {{LinkPatrz|Śródtekst}}.
| 7 = {{Code|czy_artykul_korzystany}} | _7 = Jak w: {{LinkPatrz|czy_artykul_korzystany}}.
}}
Gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, przyjmuje wartość {{Code|true}}, wtedy jest używana tablica: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tej samej tablicy, co poprzednio, ale dla elementów typu: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, na podstawie tego w ten sposób jest tworzona pewna tablica, te elementy są dodawane do drugiej podtablicy w tablicy dodawanej w {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}.
== {{Śródtytuł|p.UstawPobierzKorzystanie}}{{Code|p.UstawPobierzKorzystanie}} ==
Funkcja na podstawie stworzonych elementów w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{Patrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, która składa się z tablic numerowanych, gdzie w każdej takiej jego tablicy są dwie podtablice, te elementy są zbierane dla: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, pierwsza taka podtablica jest tablicą numerowaną z: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu}}, i {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu}}, a druga taka podtablica jest z: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UstawPobierzKorzystanie(tablica_zmiennych2)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tablica_zmiennych2}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych2}}.
}}
Na podstawie każdego takich elementów numerowanych w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, jest uruchamiana funkcja: {{LinkŚródtytuł|p.UstawianiePobierz}}, dla pierwszego parametru z wartością {{Code|nil}}, drugim: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, i dalszymi.
== {{Śródtytuł|p.ZamienianiePobierzNaKod}}{{Code|p.ZamienianiePobierzNaKod}} ==
Funkcja na podstawie parametru {{ZobaczTeż|tekst}}: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, występujących w tabeli: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, zdefiniowanych jako tablica: {{Code|<nowiki>pozycja[3][1][1]</nowiki>}}.
Modyfikuje też elementy zapisane w bazie szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, takie {{ZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}}:
* Zdefiniujmy, że to: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[1]</nowiki>}} (baza kodów bazy zakodowanego tekstu), a jeśli ona nie istnieje, to: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}} (baza kodów strony bieżącej).
* Zdefiniujmy, że to: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[2]</nowiki>}} (baza parametrów danych obiektów dla szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}), a jeśli ona nie istnieje, to: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}} (baza parametrów strony bieżącej).
: Ale to zwykle istnieją te poszczególne pierwsze, aby wyświetlić zamieniony, czyli zmodyfikowany, element, ewentualnie ze zmodyfikowaną kolejno bazą danych kodów i parametrów strony bieżącej.
----
Funkcja do szybszego działania wykorzystuje tabelę: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}} i {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony-Śródtekst}}.
Funkcja robi kopię: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, i {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, dla każdego wywołania szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, aby było możeliwe jego analizowanie względem różnych wywołań tego szablonu do tego samego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, o pewnym uchwycie na danej stronie.
Funkcja przyszykowuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, względem parametrów, wskazującego na niego, szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, do dalszej analizy przez: '''{{ld|StronicowyParser|Stronnicowy Parser}}''', to jest robione przy pomocy: {{LinkŚródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="Lua">
function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|obiekt}} | _1 = Jak w: {{LinkPatrz|Pobierz: obiekt}}.
| 2 = {{Code|kod}} | _2 = Jak w: {{LinkPatrz|Pobierz: kod}}.
| 3 = {{Code|pozycja}} | _3 = Dany element numerowany, który przedstawia pozycję dla elementów typu: {{LinkPatrz|Śródtekst}}, ze strony szablonów rodzaju: {{Code|Śródtekst}}{{LinkPatrz|Śródtekst}}, lub {{Code|Pobierz}} {{LinkPatrz|Pobierz}}.
| 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
| 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}.
| 8 = {{Code|czy_korzystane}} {{Patrz|czy_korzystane}} | _8 = Czy wykorzystawane elementy są typu: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy ta wartość przyjmuje wartość {{Code|true}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}.
}}
Funkcja wykorzystuje do modyfikacji funkcję: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, ona seryjnie modyfikuje całe elementy tekstu {{LinkZobaczTeż|tekst}} lub elementy bazy {{LinkZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}} o pewnych dwuwymiarowych nazwach, co do kodów bazy. Element tekstu do modyfikacji jest uzyskiwany z funkcji: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, jeżeli ten tekst istnieje, a gdy nie, to funkcja nie zwraca żadnej wartości, a jak jest, to ten tekst, ze zmodyfikowaną tabelą bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, też ze zmodyfikowaną tabelą parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
== {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuPobierz}} ==
Funkcja zastępuje swoje odwołanie uchwytowe dla elementu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, szablonu typu: {{s|PobierzŚródtekst}}, przetransformowanym tekstem z szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}: o tych samych uchwytach z elementów typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jeżeli jest jeden tam taki uchwyt dla tego elementu, na odpowiedniej stronie nie otoczonej znacznikami: {{Tag|includeonly}}, '''mechanizmu: {{NS|l=tak|k=mw|w=tak|pk=d}}'''.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Treści obiektu typu: {{LinkPatrz|Pobierz}}.
| 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|Pobierz: obiekt}}.
| 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|Pobierz: kod}}.
| 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
| 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}.
| 8 = {{Code|tablica_zmiennych}} | _8 = Jak w: {{LinkPatrz|tablica_zmiennych}}.
}}
Funkcja wykorzystuje funkcję: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na bieżącej stronie, lub {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na stronie niebieżącej, obie tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a także funkcję: {{LinkŚródtytuł|p.ZamienianiePobierzNaKod}}, który zamienia ten obiekt: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, pobierania na odpowiedni wikikod do działania z szablonu tekstu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Jeżeli funkcja nie wykrywała w ramach aktualnej strony elementu typu nie {{LinkPatrz|Pobierz}} swojego odpowiednika względem tej pierwszej tablicy, to szuka je w ramach tej niekaktualnej względem tej drugiej, a jeżeli funkcja znalazła taki swój odpowiednik, to go zwraca, a jeżeli nie, to zwraca wartość {{Code|nil}}.
== {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} ==
Szablon zastępuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jej zawartością tekstową: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, jeśli istnieje, w odpowiedni sposób.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}.
| 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}.
| 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod}}.
| 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
| 7 = {{Code|tablica_zmiennych}} | _7 = Jak w: {{LinkPatrz|tablica_zmiennych}}.
}}
Funkcja do swojego działania wykorzystuje tabelę: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, by dało się to zastąpienie wykonać. Funkcja do swojego działania potrzebuje: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, który pobiera tekst z tego szablonu, i zamieniąc go typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, ale nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, właśnie na to.
== {{Śródtytuł|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}}{{Code|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}} ==
Funkcje elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, i typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, zastępuje je zawartością kolejno z odpowiednich szablonów pierwszego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}} (tutaj z siebie samego pobiera tekst, i zastępują siebie właśnie tym), i drugiego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jej zawartością, oczywiście, biorąc zawartość tekstowa z: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jest właśnie tam ustawiana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _1 = tekst, na którym operujemy, modyfikując odpowiednio jego kody, dotyczące tych dwóch szablonów,
| 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa w formacie szablonowym strony danej, nie tylko szablonów, w wywołaniach szablonowych.
| 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
| 5 = {{Code|tablica_zmiennych}} | _5 = Jak w: {{LinkPatrz|tablica_zmiennych}}.
| 6 = {{Code|IterowaniePoElementachTekstu}} {{Patrz|IterowaniePoElementachTekstu}} | _6 = Iterator po elementach kodów szablonowych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} i związaną z nim: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
}}
Funkcja wykorzystuje odpowiednio tablice: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - tablica o szablonach {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}} na stronach niebieżących, i {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - a tutaj bieżących, obie tablicy są podtabelami tabeli wyższej (nadrzędnej: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, są używane do szybkiego zakończeniu funkcji, gdy by takich tam obiektów nie było, w tekście. Są one używane do zastąpienia ich zawartością z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}.
Funkcja do swojego działania wykorzystuje funkcje: {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}} - gdy mamy szablony typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, i {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} - jeśli używamy elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Aby wykorzystać te funkcje, uruchamiana jest najpierw: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, to zastąpienia tego typu szanlonów odpowiednią zawartością z tych zmiennych.
Funkcja do sprawdzania, czy są tego typu szablony z dwóch, rewiduje, czy one są pierwszego typu, czy drugiego, aby dało się je zastąpić wartością wikikodu ze zmiennej z szablonów {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, to wykorzystuje do tego typu tabele: {{Code|{{sr|#p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu}}, dla obiektów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, a: {{Code|{{sr|#p.szablony_stronicowego_parsera.szablony_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowego_parsera.szablony_tekstu}}, dla obiektu typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, ale: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
jb3rg1uru8os49ipdio186wk15d4745
558403
558402
2026-10-03T10:25:42Z
Persino
2851
/* {{Śródtytuł|p.ZamienianiePobierzNaKod}}{{Code|p.ZamienianiePobierzNaKod}} */
558403
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SzablonyTekstu}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Ten moduł służy do obsługi szablonów: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}.
* Szablony typu: {{Code|Śródtekst}} {{Patrz|Śródtekst}}, to są: {{s|Śródtekst}}.
** {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - to jest typ obiektu i jego numer szablonów typu: nie {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}.
* Szablony typu: {{Code|Pobierz}} {{Patrz|Pobierz}}, to są: {{s|PobierzŚródtekst}}.
** {{Code|Pobierz: obiekt}} {{Patrz|Pobierz: obiekt}} i {{Code|Pobierz: kod}} {{Patrz|Pobierz: kod}} - to jest typ obiektu i jego numer szablonów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}.
Szablony: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}, mają walidację błędów, więc mogą, oprócz parametrów standardowych, przyjmować zmienne o kluczach odpowiednio: {{Code|klucz}} (lub {{Code|klucz1}}), {{Code|klucz2}}, {{Code|klucz3}}, ..., itd.. Tych parametrów może być dowolna liczba, ale mogą być pomiędzy nimi przerwy.
; Zbieranie elementów typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, na stronie bieżącej, jak i dołączonej{{dk}}
'''{{ld|StronicowyParser|Stronicowy parser}}''' jak napotka szablon {{s|Śródtekst}}, to generuje tworzenie następujących tablic: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{Patrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, dla tych szablonów w artykule niekorzystanej, lub korzystanej według: {{Code|tablica_szablonu_tekstu_korzystanych}} {{Patrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, jako {{ZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}:
<syntaxhighlight lang="lua">
if(not czy_artykul_korzystany)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{
{wartosc_elementu,lista_dwuelementowa,},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
{tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,},
});
else
if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{
{wartosc_elementu,lista_dwuelementowa,},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
{tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,},
});
end;
</syntaxhighlight>
* Teb powyższy kod, to nic innego jak część definicji fukcji: {{LinkŚródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}, używaną do stawiaia tego, gdy napotkano szablony tytu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}.
; Strony niebieżące - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}} na stronie bieżącej, które odwołują się właśnie do tej niebieżącej{{dk}}
Drugi element wsadzanej tablicy za pomocą {{LzLua|table.insert}}, jest to nic innego, jak tablica zawierająca następne tablice, gdy tam jakiś element się pojawi, a ta operacja jest robina przez funkcję {{LinkŚródtytuł|p.UstawianiePobierz}} {{ZobaczTeż|p.UstawianiePobierz}}:
<syntaxhighlight lang="lua">
local tablica_szablonu_tekstu;
if(czy_artykul_korzystany)then
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych;
else
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych;
end;
if(tablica_szablonu_tekstu)then
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
...
local dodatkowe_elementy=pozycja[2];
...
if(not czy_tak)then
local tab_numer;
if(tablica_zmiennych)then
tab_numer={};
for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do
tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name];
end;
end;
table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer});
break;
</syntaxhighlight>
* gdzie: tabela: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}}, będąca podtabelą tabeli: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, to nic innego, jak zbiór tablic mniejszych dla posczególnych obiektów, tutaj nazwanych kluczami: {{Code|name}}, w tych mniejszych mieszczą się pojedyncze tabele, ktore pierwszym elementem jest uchwyt, a drugim jest sam tekst szablonu typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}.
* Tą funkcję używamy do zbierania informacji o inne stronie, dołączonej do aktualnej, w wyniku uruchomienia szablonu linku lub pobierania.
; Strony bieżące korzystane - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, które odwołują się do niej{{dk}}
Funkcja natomiast: {{LinkŚródtytuł|p.UstawianiePobierz}}, jest uruchamiana przez funkcję: {{LinkŚródtytuł|p.UstawPobierzKorzystanie}}, dla modułu bieżącego, która zbiera odpowiednie elementy pobierania (szablony typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}) w tablicach linkowych (pobierania) {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, to są tablice, aktualnej - bieżącej, strony, ta tablica jest tworzona sposobem, ale nie w tej funkcji, ta funkcja jedynie z tego korzysta, a ten kod poniżej jest używany, gdzie indziej w kodzie {{ZobaczTeż|p.LinkowanieFinalizowaniePrac}}:
<syntaxhighlight lang="lua">
if(czy_pobierz)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then
tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={};
end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},});
end;
</syntaxhighlight>
W tej tablicy mieszczą się informację, co do poszczególnych obiektów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jak: {{s|PobierzŚródtekst}}.
----
; Inne{{dk}}
Z tych tabel korzysta, nie tylko, szablon: {{s|Śródtekst}}, ale też i: {{s|PobierzŚródtekst}}, przy pomocy oprogramowania modułu: {{m|StronicowyParser}}, czy: {{m|StronicowyParser/}}.
== {{Śródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}{{Code|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}} ==
Funkcja służy do zastępowania parametrów, w szablonie typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, w zmiennych parametru: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}} lub {{Code|1}} {{LinkPatrz|1}}, w jego wartości, argumentów typu o wzorze ogólnym: {{Code|<nowiki>klucz%d*</nowiki>}} {{Patrz|klucz%d*}}, na odpowiednie wartości, ustawiane przez szablon w rodzaju: {{s|PobierzŚródtekst}} {{LinkPatrz|Pobierz}}, występujących w parametrach w wywołaniach jego szablonu lub bezpośrednio w tym pierwszym.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PreparowanieSzablonoweLinkoweSzablonuTekstu(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} {{Patrz|tekst-kod}} | _1 = Jest to kod bazy: {{Code|{{m|Szablonowe}}}}, o odpowiednim formacie,którego poszczególne elementy dzieci i potomków są modyfikowane.
| 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa strony w formacie wykonywalnym szablonów, względem innych przestrzeni.
| 3 = Parametry szablonu typu: {{s|Śródtekst}}, rodzaju: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}: | nagłówek3 = tak
| 4 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|stare__tablica_analizy_obiektow_strony_dany_modul}} | _4 = Baza danych szablonowa stworzona specjalnie dla szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, który jest dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tą funkcję.
| 5 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|stare___tablica_danych_parametrow_szablonu_strony}} | _5 = Tabela paremetrów rozwinieć bazy: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|stare__tablica_analizy_obiektow_strony_dany_modul}}, dzięki któremu uzyskuje się przyszybszenie stronicowego parsera. Jest ona dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tę funkcję.
| 6 = Parametry szablonu typu: {{s|PobierzŚródtekst}}, rodzaju: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla strony bieżącej: | nagłówek6 = tak
| 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. Jest to tabela parametrów szablonu.
| 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Jest to tablica bazy kodów parsowania: '''{{ld|Szablonowe|w bibliotece parsowania dowolnego wikikodu mechanizmu MediaWiki}}'''.
| 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Jest to baza parametrów rozwinieć, jak: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|stare___tablica_danych_parametrow_szablonu_strony}}, ale dla: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 10 = Nazwy danej książki danej strony, jeśli poszczególne istnieją, na którą wskazuje szablon typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, na odpowiedni szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}: | nagłówek10 = tak
| 11 = {{Code|nazwa_modulu_ksiazki_tekstu}} {{Patrz|nazwa_modulu_ksiazki_tekstu}} | _11 = Pełna nazwa książki danej strony, lub ewentualnie w niektórych przypadkach bez przestrzeni nazw.
| 12 = {{Code|nazwa_artykulu_tekstu}} {{Patrz|nazwa_artykulu_tekstu}} | _12 = Nazwa książkowa artykułu danej strony.
}}
Zweacane parametry:
{{OpisParametrów
| 1 = Zwraca to samo, co jest tym: {{Code|tekst}} {{LinkPatrz|tekst-kod}} | komórka1 = tak
}}
== {{Śródtytuł|p.ParametrTekstowySzablonuTekstu}}{{Code|p.ParametrTekstowySzablonuTekstu}} ==
Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, tekstu o nazwie pierwszy z kolei, który istnieje, więc: {{Code|tekst}} {{Patrz|tekst}}, {{Code|treść}} {{Patrz|treść}} lub {{Code|1}} {{Patrz|1}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca:
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o różnych parametrach nazwanych lub nienazwanych.
}}
== {{Śródtytuł|p.SzablonTekstuBezPreProcess}}{{Code|p.SzablonTekstuBezPreProcess}} ==
Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, o nazwie {{Code|bez preprocess}} {{Patrz|bez preprocess}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca:
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o parametrach nazwanych lub nienazwanych.
}}
== {{Śródtytuł|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}}{{Code|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}} ==
Funkcja elementy tablicy: {{Code|tablica_zmiennych2}} {{Patrz|tablica_zmiennych2}}, przypisuje tablicy: {{Code|tablica_zmiennych}} {{Patrz|tablica_zmiennych}}, czyli do tego pierwszego dodaje elementy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, do tablicy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a jeżeli ta tablica nie istnieje, to jest tworzona:
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}, jest to tablica dla strony niekorzystanej.
| 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}, jest to tablica dla strony korzystanej, aktualnej strony, która jest wyświetlana na ekranie.
}}
== {{Śródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}{{Code|p.DodawanieDoBazyStronySzablonuTekstu}} ==
Szablon dodający elementy do tablicy bazy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, lub {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, tzn. do tablicy: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, jest równy wartości fałszywej, przeciwnie do: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tej samej tablicy co poprzednio. Te elementy są dodawane według następującego kodu: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}} lub {{LinkPatrz|tablica_zmiennych2}}.
| 2 = {{Code|wartosc_elementu}} {{Patrz|wartosc_elementu}} | _2 = Rodzaj elementu, jak: {{Code|Śródtekst}} {{Patrz|rodzaj: Śródtekst}}, dla jednego z szablonów tekstu.
| 3 = {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} | _3 = Tablica elementu tablicy zbierającej dane, element posiada tylko pierwszy element, który jest uchwytem.
| 4 = {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}} | _4 = Obiekt i kod, szablonu typu {{s|Śródtekst}} {{LinkPatrz|Śródtekst}} w tekście zakodowanym.
| 5 = {{Code|tabela_parametrow_szablonu}} | _5 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}.
| 6 = {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} | _6 = Nazwa szablonu tekstu, typu, dla {{LinkPatrz|Śródtekst}}.
| 7 = {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} | _7 = Tablica modyfikatorów uruchmienia szablonu {{LinkPatrz|Śródtekst}}.
| 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Tablica bazy kodów modułu {{m|Szablonowe}}.
| 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _9 = Tablica rozkładu na czynniki pierwsze, elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 10 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _10 = Przyjmuje wartość: {{Code|true}}, gdy artykuł jest taki sam, jak strona w przeglądarce.
}}
Tablica jako drugi element dodawanej tablicy w kodzie: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}, to są tam podtablice, które są tablicami składających się z obiektu i kodu elementu {{s|PobierzŚródtekst}} {{Patrz|PobierzŚródtekst}}, tych podtablic może być wiele dla różnych tych.
== {{Śródtytuł|p.UstawianiePobierz}}{{Code|p.UstawianiePobierz}} ==
Funkcja dodaje do danego elementu typu: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, utworzonego na podstawie obiektów nie typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, w postaci tablicy utworzonego z trzech elementów, tzn.: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}, a trzeci element tablicy jest numerkiem nazwanym, ile w danym elemencie było wtedy aktualnie elementów przed wywołaniem szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla zmiennych w tablicach: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. Ten element służy do wstawiania innych elementów do tablic nazwanych uchwytów oraz ich numerków (dla elementów numerowanych) lub nie, aby przesunąc od pewnego momentu ich zawartości do przodu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}.
| 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}.
| 3 = {{Code|obiekt}} {{LinkPatrz|Pobierz: obiekt}} | _3 = Obiekt, jak: {{LinkPatrz|rodzaj: Śródtekst}}, obiektu typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}.
| 4 = {{Code|kod}} {{LinkPatrz|Pobierz: kod}} | _4 = Numer danego obiektu typu {{LinkPatrz|Pobierz}}.
| 5 = {{Code|nazwa_obiektu}} {{Patrz|nazwa_obiektu}} | _5 = Nazwa danego obiektu {{LinkPatrz|Śródtekst}}.
| 6 = {{Code|uchwyt_obiektu}} {{Patrz|uchwyt_obiektu}} | _6 = Unikalny uchwyt danego obiektu {{LinkPatrz|Śródtekst}}.
| 7 = {{Code|czy_artykul_korzystany}} | _7 = Jak w: {{LinkPatrz|czy_artykul_korzystany}}.
}}
Gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, przyjmuje wartość {{Code|true}}, wtedy jest używana tablica: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tej samej tablicy, co poprzednio, ale dla elementów typu: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, na podstawie tego w ten sposób jest tworzona pewna tablica, te elementy są dodawane do drugiej podtablicy w tablicy dodawanej w {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}.
== {{Śródtytuł|p.UstawPobierzKorzystanie}}{{Code|p.UstawPobierzKorzystanie}} ==
Funkcja na podstawie stworzonych elementów w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{Patrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, która składa się z tablic numerowanych, gdzie w każdej takiej jego tablicy są dwie podtablice, te elementy są zbierane dla: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, pierwsza taka podtablica jest tablicą numerowaną z: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu}}, i {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu}}, a druga taka podtablica jest z: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UstawPobierzKorzystanie(tablica_zmiennych2)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tablica_zmiennych2}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych2}}.
}}
Na podstawie każdego takich elementów numerowanych w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, jest uruchamiana funkcja: {{LinkŚródtytuł|p.UstawianiePobierz}}, dla pierwszego parametru z wartością {{Code|nil}}, drugim: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, i dalszymi.
== {{Śródtytuł|p.ZamienianiePobierzNaKod}}{{Code|p.ZamienianiePobierzNaKod}} ==
Funkcja na podstawie parametru {{ZobaczTeż|tekst}}: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, występujących w tabeli: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, zdefiniowanych jako tablica: {{Code|<nowiki>pozycja[3][1][1]</nowiki>}}.
Modyfikuje też elementy zapisane w bazie szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, takie {{ZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}}:
* Zdefiniujmy, że to: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[1]</nowiki>}} (baza kodów bazy zakodowanego tekstu), a jeśli ona nie istnieje, to: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}} (baza kodów strony bieżącej).
* Zdefiniujmy, że to: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[2]</nowiki>}} (baza parametrów danych obiektów dla szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}), a jeśli ona nie istnieje, to: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}} (baza parametrów strony bieżącej).
: Ale to zwykle istnieją te poszczególne pierwsze, aby wyświetlić zamieniony, czyli zmodyfikowany, element, ewentualnie ze zmodyfikowaną kolejno bazą danych kodów i parametrów strony bieżącej.
----
Funkcja do szybszego działania wykorzystuje tabelę: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}} i {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony-Śródtekst}}.
Funkcja robi kopię: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, i {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, dla każdego wywołania szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, aby było możliwe jego analizowanie względem różnych wywołań tego szablonu do tego samego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, o pewnym uchwycie na danej stronie.
Funkcja przyszykowuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, względem parametrów, wskazującego na niego, szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, do dalszej analizy przez: '''{{ld|StronicowyParser|Stronnicowy Parser}}''', to jest robione przy pomocy: {{LinkŚródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="Lua">
function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|obiekt}} | _1 = Jak w: {{LinkPatrz|Pobierz: obiekt}}.
| 2 = {{Code|kod}} | _2 = Jak w: {{LinkPatrz|Pobierz: kod}}.
| 3 = {{Code|pozycja}} | _3 = Dany element numerowany, który przedstawia pozycję dla elementów typu: {{LinkPatrz|Śródtekst}}, ze strony szablonów rodzaju: {{Code|Śródtekst}}{{LinkPatrz|Śródtekst}}, lub {{Code|Pobierz}} {{LinkPatrz|Pobierz}}.
| 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
| 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}.
| 8 = {{Code|czy_korzystane}} {{Patrz|czy_korzystane}} | _8 = Czy wykorzystawane elementy są typu: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy ta wartość przyjmuje wartość {{Code|true}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}.
}}
Funkcja wykorzystuje do modyfikacji funkcję: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, ona seryjnie modyfikuje całe elementy tekstu {{LinkZobaczTeż|tekst}} lub elementy bazy {{LinkZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}} o pewnych dwuwymiarowych nazwach, co do kodów bazy. Element tekstu do modyfikacji jest uzyskiwany z funkcji: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, jeżeli ten tekst istnieje, a gdy nie, to funkcja nie zwraca żadnej wartości, a jak jest, to ten tekst, ze zmodyfikowaną tabelą bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, też ze zmodyfikowaną tabelą parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
== {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuPobierz}} ==
Funkcja zastępuje swoje odwołanie uchwytowe dla elementu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, szablonu typu: {{s|PobierzŚródtekst}}, przetransformowanym tekstem z szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}: o tych samych uchwytach z elementów typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jeżeli jest jeden tam taki uchwyt dla tego elementu, na odpowiedniej stronie nie otoczonej znacznikami: {{Tag|includeonly}}, '''mechanizmu: {{NS|l=tak|k=mw|w=tak|pk=d}}'''.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Treści obiektu typu: {{LinkPatrz|Pobierz}}.
| 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|Pobierz: obiekt}}.
| 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|Pobierz: kod}}.
| 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
| 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}.
| 8 = {{Code|tablica_zmiennych}} | _8 = Jak w: {{LinkPatrz|tablica_zmiennych}}.
}}
Funkcja wykorzystuje funkcję: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na bieżącej stronie, lub {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na stronie niebieżącej, obie tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a także funkcję: {{LinkŚródtytuł|p.ZamienianiePobierzNaKod}}, który zamienia ten obiekt: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, pobierania na odpowiedni wikikod do działania z szablonu tekstu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Jeżeli funkcja nie wykrywała w ramach aktualnej strony elementu typu nie {{LinkPatrz|Pobierz}} swojego odpowiednika względem tej pierwszej tablicy, to szuka je w ramach tej niekaktualnej względem tej drugiej, a jeżeli funkcja znalazła taki swój odpowiednik, to go zwraca, a jeżeli nie, to zwraca wartość {{Code|nil}}.
== {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} ==
Szablon zastępuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jej zawartością tekstową: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, jeśli istnieje, w odpowiedni sposób.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}.
| 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}.
| 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod}}.
| 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
| 7 = {{Code|tablica_zmiennych}} | _7 = Jak w: {{LinkPatrz|tablica_zmiennych}}.
}}
Funkcja do swojego działania wykorzystuje tabelę: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, by dało się to zastąpienie wykonać. Funkcja do swojego działania potrzebuje: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, który pobiera tekst z tego szablonu, i zamieniąc go typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, ale nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, właśnie na to.
== {{Śródtytuł|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}}{{Code|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}} ==
Funkcje elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, i typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, zastępuje je zawartością kolejno z odpowiednich szablonów pierwszego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}} (tutaj z siebie samego pobiera tekst, i zastępują siebie właśnie tym), i drugiego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jej zawartością, oczywiście, biorąc zawartość tekstowa z: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jest właśnie tam ustawiana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _1 = tekst, na którym operujemy, modyfikując odpowiednio jego kody, dotyczące tych dwóch szablonów,
| 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa w formacie szablonowym strony danej, nie tylko szablonów, w wywołaniach szablonowych.
| 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
| 5 = {{Code|tablica_zmiennych}} | _5 = Jak w: {{LinkPatrz|tablica_zmiennych}}.
| 6 = {{Code|IterowaniePoElementachTekstu}} {{Patrz|IterowaniePoElementachTekstu}} | _6 = Iterator po elementach kodów szablonowych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} i związaną z nim: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
}}
Funkcja wykorzystuje odpowiednio tablice: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - tablica o szablonach {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}} na stronach niebieżących, i {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - a tutaj bieżących, obie tablicy są podtabelami tabeli wyższej (nadrzędnej: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, są używane do szybkiego zakończeniu funkcji, gdy by takich tam obiektów nie było, w tekście. Są one używane do zastąpienia ich zawartością z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}.
Funkcja do swojego działania wykorzystuje funkcje: {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}} - gdy mamy szablony typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, i {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} - jeśli używamy elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Aby wykorzystać te funkcje, uruchamiana jest najpierw: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, to zastąpienia tego typu szanlonów odpowiednią zawartością z tych zmiennych.
Funkcja do sprawdzania, czy są tego typu szablony z dwóch, rewiduje, czy one są pierwszego typu, czy drugiego, aby dało się je zastąpić wartością wikikodu ze zmiennej z szablonów {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, to wykorzystuje do tego typu tabele: {{Code|{{sr|#p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu}}, dla obiektów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, a: {{Code|{{sr|#p.szablony_stronicowego_parsera.szablony_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowego_parsera.szablony_tekstu}}, dla obiektu typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, ale: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
2nrk40o0e9e4mxgjodv1jai0y9or3qg
Wikibooks:Moduły/StronicowyParser/Rozdziały/Tom V/Część I
4
63907
558332
558121
2026-10-02T18:31:45Z
Persino
2851
/* {{Śródtytuł|p.IterTekst}}{{Code|p.IterTekst}} */
558332
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}}
== {{Śródtytuł|p.IterTekst}}{{Code|p.IterTekst}} ==
Funkcja zwraca iterator, która jest funkcją, z zerową listą parametrów, a on zwraca napis wprowadzenia tekstu i jego tekst rozdziału wraz z innymi parametrami charakteryzujący ten rozdział.
Przed uruchomieniem iteratora, gdy tekst jest zakodowany, funkcja modyfikuje nagłówki i ich zawartości rozdziałów, upraszczając je na maksimum do ich zmodyfikowanej zawartości jego elementy, zostawiając jedynie zakodowane, to co wskazuje na odpowiednie linki wewnętrzne i zewnętrzne, nawet te inteligentne, w tych linkach wszystko jest zakodowane.
Funkcja upraszcza kolejne linie łącząc je odpowiednio między sobą, bez linii, z którymi się nie da się tego zrobic, do tego służy: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}.
Funkcja z całego zmodyfikowanego rozdziału wydziela spis treści z linkami, nawet inteligentnymi, korzystając z funkcji: {{Code|__FUNKCJA_ANALIZA_SPISU}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, aby dało się z niego wydzielić treściwe rozdziały i artykuły, bez tych zbędnych, aby za pomocą innych funkcji dało się to wszystko poprawnie ponumerować, bez numerowania tego, co jest nie potrzebne.
Ten zwracany iterator ma funkcję, czy rozważać, tylko rozdziały dodatnie równaniowe, czy również dodatnie nierównaniowe (centrowane szablonowo, czy znaczniowo), ujemne (będące częścią pozycji listy) i zerowe (nie są tymi wcześniejszymi), do tego służy zmienna: {{Code|czy_inne_rozdzialy_analizowac}} {{LinkPatrz|czy_inne_rozdzialy_analizowac}}. Ta funkcja za każdym razem uruchomienia tego zwraca inną linie charakteryzująca całą linię rozdziału, i jego wnętrze, i nazwę rozdziału, także zwraca inne parametry, charakteryzujące nagłówek.
* Iterator zwraca {{Code|nil}}, gdy nie znalazł dalej żadnego innego dalszego rozdziału, lub od razu też tą wartość, gdy w całym tekście nie ma żadnego jakikolwiek tego.
Oprócz iteratora funkcja w nagłówku zwraca drugi argument, jako zmodyfikowany tekst, wstępnie przygotowany do dalszej analizy, aby dało się na nim ładnie operować.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_inne_rozdzialy_analizowac,czy_dalej_rozwazac_zakodowane,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU)
...
return function()
....
return naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
end,tekst_rozwiniety_calego_artykulu;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _1 = Jak w: {{LinkPatrz|tekst|StronicowyParser/Rozdziały}}, ale nie musi być tak: {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, jeśli tekst jest zakodowany, w przeciwnym wypadku nie jest, tylko ten tekst jest zawartością danej strony.
| 2 = Nazwy strony danego określonego spisu: | nagłówek2 = tak
| 3 = {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Rozdziały}}, {{Code|nazwa_przestrzeni_ksiazki}} | _3 = Jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}}, {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}}, {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}}.
| 4 = {{Code|czy_inne_rozdzialy_analizowac}} {{Patrz|czy_inne_rozdzialy_analizowac}} | _4 = Czy ma tylko uwzględniać rozdziały, nie tylko, dodatnie równaniowe,.
| 5 = {{Code|czy_dalej_rozwazac_zakodowane}} {{Patrz|czy_dalej_rozwazac_zakodowane}} | _5 = czy tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, ma być zakodowany, a jeśli jest taki, to są robione operacje na liniach, i wydzielonany jest tekst spisu treści z całego tego tekstu
| 6 = Tablice wynikłe z zakodowanych zmiennych: | nagłówek6 = tak
| 7 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _7 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}.
| 8 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _8 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}, {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}}.
| 9 = Funkcje iteratora tekstu napisu wprowadzenia tekstu i ich tekstów rozdziałów:|nagłówek9 = tak
| 10 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA}} | _10 = Funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adresu szablonu, określa i zwraca jego zawartość.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
str=__FUNKCJA(pelna_nazwa_szablonu,tabela_modyfikatorow);
</syntaxhighlight>
| 11 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2}} | _11 = Funkcja operująca na przygotowanej zawartości napisu wprowadzenia tekstu i tekście napisu wprowadzenia tekstu (rozdziału).
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
tekst_rozwiniety_calego_artykulu=__FUNKCJA2 and __FUNKCJA2(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or tekst_rozwiniety_calego_artykulu;
</syntaxhighlight>
| 12 = {{Code|__FUNKCJA_ANALIZA_SPISU}} {{Patrz|__FUNKCJA_ANALIZA_SPISU}} | _12 = Funkcja do analizy i modyfikacji tekstu, może zwracać wartość nilową, przed samym wydzieleniem spisu treści, jeżeli pewna funkcja w niej zwróci ściśle określoną wartość, która to właśnie powoduje, że ta właściwa część tej funkcji nie jest uruchamiana, ta inna część funkcja bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia właściwego spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: {{LinkŚródtytuł|p.IterTekst}}, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: {{Code|{{sr|SpisTreści|p=StronicowyParser}}}}, co jest uwidocznione w module: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}. Jeśli ta funkcja nie istnieje, lub zwraca wartość nilową, to ta zmienna {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} nie zmienia się, w przeciwnym wypadku, ta ona przyjmuje wartość zwróconą z tej funkcji.
{{P|Przykład wywołania:}}
<syntaxhighlight lang="lua">
tekst_rozwiniety_calego_artykulu=__FUNKCJA_ANALIZA_SPISU and __FUNKCJA_ANALIZA_SPISU(tekst_rozwiniety_calego_;artykulu,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or tekst_rozwiniety_calego_artykulu;
</syntaxhighlight>
}}
Parametry funkcji zwracanej:
{{OpisParametrów
| 1 = Funkcja nie przyjmuje żadnych parametrów. | komórka1 = tak
}}
Jednoczesne parametry zwracane przez funkcję zwracaną:
{{OpisParametrów
| 1 = {{Code|naglowek_tab_aktualnego_rozdzialu}} {{Patrz|naglowek_tab_aktualnego_rozdzialu}} | _1 = To jest tablica numerowana dwuelementowa, którego pierwszym elementem jest nagłówek rozdziału, a druga jest całą jego linią.
| 2 = {{Code|str}} {{Patrz|str}} | _2 = Tekst napisu wprowadzenia tekstu (zawartość rozdziału).
| 3 = {{Code|poziom_aktualnego_rozdzialu}} {{Patrz|poziom_aktualnego_rozdzialu}} | _3 = Poziom aktualnego rozdziału.
| 4 = {{Code|poczatek_aktualnego_rozdzialu}} {{Patrz|poczatek_aktualnego_rozdzialu}} | _4 = Przedrostek aktualnego rozdzialu, dotyczy list, zaczynających się na: {{Code|<nowiki>[;%*:#]</nowiki>}}, {{Code|nil}}, gdy nie ma takiego rozdziału.
| 5 = {{Code|numeracja_aktualnego_rozdzialu}} {{Patrz|numeracja_aktualnego_rozdzialu}} | _5 = Numeracja aktualnego rozdziału, numeracja jest na podczątku rozdziału, a właściwy rozdział dalej, gdy nie ma numeracji, wtedy numeracja jest ciągiem pustym, lub {{Code|nil}}.
| 6 = {{Code|czy_rozdzial_aktualny_centrowany}} {{Patrz|czy_rozdzial_aktualny_centrowany}} | _6 = Przedstawia, czy rozdział jest rozdziałem dodatnim centrowanym znacznikowym lub szablonowym.
}}
=== Wykorzystywane tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ===
Te tablice są zdefiniowane w: {{Code|{{ld2|StronicowyParser/obiekty}}}}.
==== Szablony i znaczniki, wyróżniające linie, które są rozdziałami ====
Pierwszą tablicą jest {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}} słążaca do wskazania rozdziałów centrowanych. A ich odpowiedniki w postaci znacznikowych nagłówków są w: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
==== Szablony, projektów i tekstów, usuwane z tekstu ====
Szablony, które są usuwane z tekstu są zdefiniowane w {{Patrz|p.szablony_do_usuwania_z_tekstu}}:
<syntaxhighlight lang="lua">
p.szablony_do_usuwania_z_tekstu={
--- szablony książkowe umieszczane na stronie głównej podręcznika
["Kolekcja"]=true,
["TODO"]=true,
["Wersja do druku"]=true,
--- szablony typowo linkowe
["Dane tekstu"]=true,
--- szablony linkowania do innych projektow
["MediaWiki"]=true,
["Wikipedia"]=true,
["Wikipedia kat"]=true,
["Wikipedia2"]=true,
["Commons"]=true,
["Commons ilustr kat"]=true,
["Commonsall"]=true,
["Commonscat"]=true,
["Wikiatlas"]=true,
["Wikicytaty"]=true,
["Wikicytaty przysłowia"]=true,
["Inkubator"]=true,
["Meta"]=true,
["Wikinews"]=true,
["Wikinewscat"]=true,
["Wikinewsy"]=true,
["Portal Wikinews"]=true,
["Wikisłownik"]=true,
["Wikisłownik-cat"]=true,
["Wikimedia"]=true,
["Multiwmpl"]=true,
["Wikipodróże"]=true,
["Wikispecies"]=true,
["Multisource"]=true,
["Wikiźródła"]=true,
["Wikiźródła autor"]=true,
["Wikiźródła kat"]=true,
["Wikiźródła kuch kat"]=true,
["Wikiźródła krótki"]=true,
["Wikisource-lang"]=true,
};
</syntaxhighlight>
Ona jest opisana w: {{Code|{{sr|#p.szablony_do_usuwania_z_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia ona szablony projektów zdefiniowane na stronie {{s|MediaWiki}}.
Aby w końcowych rozważaniach w napisie wprowadzenia tekstu i tekście rozdziału, aby były bez nich, by analiza tekstu przebiegała bezproblemowo, by z niego dało się wykryć poszczególne rozdziały linie i w nich artykuły, a także w liniach w nierozdziałach, wykryć artykuły w nich.
==== Szablony, z których z których zostawiane są tylko zawartości ====
Z rozważanego tekstu są usuwane elementy przy pomocy tablicy: {{LinkPatrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|StronicowyParser/Rozdziały/Tom III}}, która jest wykorzystywana przez funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}.
==== Inne szablony usuwane z tekstu ====
Tą tablicą, opisana w: {{Code|{{sr|#p.szablony_bez_generowania_napisowego|p=StronicowyParser/obiekty}}}}, jest o definicji {{Patrz|p.szablony_bez_generowania_napisowego}}:
<syntaxhighlight lang="lua">
p.szablony_bez_generowania_napisowego={
["Status"]=true,
};
</syntaxhighlight>
Przedstawia ona treści, szablony o pewnych nazwach, które z tworzącymi ich wywołaniami są usuwane z rozważanego tekstu. Są to szablony, które nie generują napisów wprowadzenia tekstu.
Inną tablicą, która przedstawia elementy do usuwania z tekstu, czyli o szablony o jakiś nazwach, opisana w: {{Code|{{sr|#p.szablony_nie_typowo_linkowe|p=StronicowyParser/obiekty}}}}, mającą określenie {{Patrz|p.szablony_nie_typowo_linkowe}}:
<syntaxhighlight lang="lua">
p.szablony_nie_typowo_linkowe={
["Plik"]=true,
["Kategoria"]=true,
["Kategorie"]=true,
["Wolumin"]=true,
["SortWolumin"]=true,
["SortKuchWolumin"]=true,
};
</syntaxhighlight>
Są to nazwy szablonów istniejących, którego na podstawie tego można stworzyć wywołania zawarte w tekście, które należy usunąć z niego. Są to szablony, które nie generują linków do artykułów jakiegoś podręcznika.
==== Znaczniki szablonowe ====
Definicję, jakie szablony uznać za znaczniki szablonowe, jest napisane w {{Patrz|p.znaczniki_szablonowe}}:
<syntaxhighlight lang="lua">
p.znaczniki_szablonowe={
["Znacznik"]=1,
["Div"]=1,
["Code"]=1,
["Tt"]=1,
["P"]=1,
["Sub"]=1,
["Sup"]=1,
["Span"]=1,
["Bdo"]=1,
["Small"]=1,
["Big"]=1,
["Strong"]=1,
};
</syntaxhighlight>
Opisana jest w: {{Code|{{sr|#p.znaczniki_szablonowe|p=StronicowyParser/obiekty}}}}. Są to odpowiedniki znaczników {{Strong|HTML}}, one po rozwinięciu właście to tworzą. One są usuwane odpowiednio z tekstu, tzn. ich zawartości sa pozostawiane, numer tego przedstawia, numer parametru tych szablonów, wartość tabeli o kluczu równym nazwie tego szablonu, to jest właśnie to.
==== Szablony generujące poziomy o dowolnym poziomie ====
Definicję szablonów generujące dowolny poziom napisu wprowadzenia tekstu jest {{Patrz|p.szablony_sztucznego_wprowadzenia_tekstu}}:
<syntaxhighlight lang="lua">
p.szablony_sztucznego_wprowadzenia_tekstu={
["HNumer"]=1,
};
</syntaxhighlight>
Opisana w: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia szablony, która sztucznie generuje niemożliwe poziomy napisów wprowadzenia tekstu. Zawartością tego szablonu o numerze stojącego przy wartości elementów w tej tablicy, jest poziom dodatni o dowolnym poziomie, nie tylko {{Code|<nowiki>0 < pozim <= 6</nowiki>}}, ale też i: {{Code|<nowiki>poziom>6</nowiki>}}.
==== Magiczne derektywy ====
Z tekstu są usuwane magiczne derektywy zdefiniowane w tablicy: {{Code|{{sr|#p.magiczne_derektywy|p=StronicowyParser/obiekty}}}}, ich definicja {{Patrz|p.magiczne_derektywy}}:
<syntaxhighlight lang="lua">
p.magiczne_derektywy={
["TOC"]=true,
["NOTOC"]=true,
["NOEDITSECTION"]=true,
};
</syntaxhighlight>
==== Napisy wprowadzenia tekstu, spisu treści lub spisu rzeczy, wykrywane funkcję ====
Napisy typu: {{Code|Spis treści}} lub {{Code|Spis rzeczy}}, które są wykrywane przez funkcję są zdefiniowane w {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={
["spis treści"]=true,
["spis tresci"]=true,
["spis rzeczy"]=true,
};
</syntaxhighlight>
Aby elementy tej tablicy w odpowiednich rozdziałach w całości wykryć, należy użyć metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}. Ta tablica jest opisana w: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}}.
==== Artykuły nieartykularne (okładki) ====
Aby funkcja wykryła artykuły, które uznać za nieartykularne, nie za zwykłe artykuły, należy użyć wyrażeń regularnych zdefiniowanych w tablicy {{Patrz|p.artykularne_niespisowe}}:
<syntaxhighlight lang="lua">
p.artykularne_niespisowe={
[1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$",
--[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$",
};
</syntaxhighlight>
Ta tablica jest opisana w: {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}}. Ona powoduje, że elementy tego typu nie będą wykrywane w spisie artykułów danego podręcznika, bo np. przedstawiają one okładki tego typu, no bo jak uznać okładki za artykuły.
=== Przykłady ===
Przykładowe użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
local __FUNKCJA_PARAMETRY=nil;
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
return nil;
end;
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_modyfikatorow)
... ---- Funkcja aktualnie nieużywana;
local szablonowe_modul=require("Module:Szablonowe");
if(not szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow))then return nil;end;
---
pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu;
local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true);
return tekst;
end;
local __FUNKCJA2=function(str,pelna_nazwa_strony,tablica_analizy_obiektow_strony_dany_modul,czy_naglowek)
...
return str;
end;
local __FUNKCJA_ANALIZA_SPISU=function(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local stronicowyparser_analizaspisu_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local tekst=stronicowyparser_analizaspisu_modul.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
return tekst;
end;
local iterator,tekst_rozwiniety_calego_artykulu=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,true,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU);
---- iterator - iterator;
---- tekst_rozwiniety_calego_artykulu - tekst zakodowany maksymalnie zmodyfikowany przyszykowany do dalszej analizy;
local parsuj_rozdzialami=nil;
for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do
... --- Gdy tekst ma rozdziały iterowalne;
if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end
end;
if(not parsuj_rozdzialami)then
... ---- Gdy tekst nie ma rozdziałów iterowalnych;
end;
</syntaxhighlight>
=== Opis dalszy funkcji ===
Liczymy nazwę spisu bez nazwy przestrzeni szablonowej: {{Code|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}} {{Patrz|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}}, i nazwę szablonową tej strony: {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. W tej ostatniej uwzględniamy również możliwą przestrzeń główną, w której tej ostatniej uwzględniamy sam dwukropek {{Code|:}}, lub inną.
Definiujemy funkcje: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} (usuwa odpowiednie elementy z tabeli parametrów przeanalizowanych z: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}, na podstawie {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}) i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}} (usuwa elementy z: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, bazy danych skonstrułowanych dzięki: {{Code|{{m|Szablonowe}}}}), oraz do nich potrzebne zmienne.
Funkcja decyduje, czy wybrać blok z sekcji: {{Code|czy_dalej_rozwazac_zakodowane}} {{LinkPatrz|czy_dalej_rozwazac_zakodowane}} - czyli czy główny tekst: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowany, czy nie - wtedy nie, gdy to wybieramy kolejno, to ta zmienna przyjmuje wartość {{Code|true}}, w innym wypadku ona odpowiada wartości odpowiadającej fałszywej.
==== Kod z sekcją: {{Code|czy_dalej_rozwazac_zakodowane}} ====
Opis funkcji według tej sekcji dotyczy, gdy zmienna: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowana.
===== Definicje potrzebnych funkcji do opisu działającego kodu =====
Przedstawiamy tutaj definicję lokalnych funkcji.
====== {{Śródtytuł|UsuwanieNowychLiniiZnacznikowe}}{{Code|UsuwanieNowychLiniiZnacznikowe}} ======
Funkcja służy do modyfikacji tekstu tylko ze znacznikami języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''', takich jak: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''': {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonów '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function UsuwanieNowychLiniiZnacznikowe(szablon)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} | _1 = Tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, który jest elementem tabeli bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, modułu: {{Code|{{m|Szablonowe}}}}.
}}
Funkcja korzysta z funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}.
Funkcja nie zmienia poziomu zakodowania tekstu, tzn. ona służy jedynie do {{ZobaczTeż|elementy usuwane nowe linie}} znajdowania znaczników: {{Tag|br|pojedynczy}} i {{Tag|hr|pojedynczy}}, oraz szablonów: {{Code|{{s|Br}}}} i {{Code|{{s|Hr}}}}, w nim, i zamieniania ich na jedną spację (odstęp).
Funkcja zwraca tak zmodyfikowany tekst, podany jako pierwszy parametr funkcji. Sprawdza, czy one wystąpiły przy {{Code|poziom_iteracji}} {{=}} {{Code|0}}, jeżeli występują, to ta funkcja zwraca drugi wynik w postaci wartości: {{Code|true}}, przeciwnie ta wartość jest: {{Code|nil}}.
====== {{Śródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}{{Code|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}} ======
Funkcja usuwa elementy, zagnieżdzone, linie charakteryzujące rozdziały - napisy wprowadzenia tekstu, które są znacznikami języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' wraz zawartością i atrybutami, takich jak {{ZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}}: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''' {{ZobaczTeż|nagłówki}}: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonami '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, zastępując je odpowiednimi ich zawartościami, pozostawiając jedną główną nową linię z szablonem lub znacznikiem, centrowania, czy znacznikiem nagłówków: {{LinkZobaczTeż|nagłówki}}, linii, którą jest on charakteryzujący się wnętrzem: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, rodzajem obiektu, dostępne obiekty to: {{Code|SZABLON}} i {{Code|ZNACZNIK}}, i jego numerem: {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu=function(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|szablon-obiekt-kod}}:
{{OpisParametrów
| 1 = {{Code|szablon}} | _1 = Tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, lub jego elementy bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}.
| 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}.
| 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod|StronicowyParser/Rozdziały}}.
}}
Funkcja korzysta z funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}.
Te linie mogą być oznaczone szablonami: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, lub znacznikami: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
Funkcja zwraca tak zmodyfikowany tekst {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, z drugim parametrem {{Code|true}}, jeżeli zagnieżdzone napisy wprowadzenia tekstu wystąpiły, przeciwnie jest zwracany ten sam tekst, bez modyfikacji, co został przyjęty jako pierwszy parametr funkcji, z drugim parametrem {{Code|nil}}.
====== {{Śródtytuł|Modyfikacja}}{{Code|Modyfikacja}} ======
Funkcja usuwa zagnieżdzone napisy wprowadzenia tekstu nierównaniowe: {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}} przy pomocy funkcji w pierwszej kolejności: {{LinkŚródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}, w drugiej: nowe linie, nawet kresek, czyli: {{LinkZobaczTeż|elementy usuwane nowe linie}}, dzięki: {{LinkŚródtytuł|UsuwanieNowychLiniiZnacznikowe}}, następnie znaki nowych linii języka: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, powstałe przez znak nowej linii: {{Code|<nowiki>\n</nowiki>}} {{Patrz|nowa linia}}, zamieniając to na spację.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local Modyfikacja=function(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = Jakikolwiek parametry, jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}. |nagłówek1 = tak
}}
Funkcja zwraca tekst zmodyfikowany: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}} - pierwszy parametr funkcji, z drugą wartością {{Code|true}}, bo nastąpiła jego zmiana wnętrza, a jeżeli nic się nie zmieniło, to druga wartość jest {{Code|nil}}, a pierwsza wartość, to niezmodyfikowany element, ten pierwszy argument tej funkcji.
====== {{Śródtytuł|UsuwanieZnacznikowe}}{{Code|UsuwanieZnacznikowe}} ======
Główny element: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, który jest pierwszym argumentem tej funkcji, który charakteryzuje się, tym, że jest znacznikiem języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' wraz zawartością i atrybutami, takich jak {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}}: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''' {{LinkZobaczTeż|nagłówki}}: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonami '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}.
Funkcja korzysta z tabeli: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, dla napisów wprowadzenia tekstu szablonowych, i {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, dla napisów wprowadzenia tekstu znacznikowych. Te elementy są podane w: {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}} - szablony i znaczniki centrowania, i {{LinkZobaczTeż|nagłówki}} - znaczniki nagłówków.
Funkcja sprawdza, czy to jest napis wprowadzenia tekstu szablonowy typu, jedynie w dwóch sprawdzonych zakresach, tzn.: {{Code|SZABLON}}, czy {{Code|ZNACZNIK}}.
* W obu tych rozgałęzieniach funkcji, dla tych elementów z tych tabel, jest uruchamiana procedura modyfikująca: {{LinkŚródtytuł|Modyfikacja}}, która drugim parametrem zawiadamia, czy coś się zmieniło.
* W innych zakresach funkcja nic nie zwraca.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function UsuwanieZnacznikowe(szablon,obiekt,kod,parametr1,parametr2,parametr3)...end;
</syntaxhighlight>
Parametry funkcji {{Nobold|{{ZobaczTeż|parametry znacznikowe}}}}:
{{OpisParametrów
| 1 = Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}, dla parametrów bazy: {{Code|{{m|Szablonowe}}}}. | komórka1 = tak
| 2 = Parametry w wersji - szablonowe: | nagłówek2 = tak
| 3 = Parametry szablonowe, gdy obiekt wskazany przez zmienną: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest typu: {{Code|SZABLON}}, wtedy one mają taką słuszność:| komórka3 = tak
| 4 = {{Code|parametr1}} {{Patrz|parametr1-szablonowe}} | _4 = To nic innego jak: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/Rozdziały}}, czyli jak nazwa znacznika.
| 5 = {{Code|parametr2}} {{Patrz|parametr2-szablonowe}} | _5 = To nic innego jak: {{Code|nazwa_szablonu}} {{LinkPatrz|nazwa_szablonu|StronicowyParser/Rozdziały}}, czyli zawartość znacznika.
| 6 = {{Code|parametr3}} {{Patrz|parametr3-szablonowe}} | _6 = To nic innego jak: {{Code|tabela_modyfikatorow}} {{LinkPatrz|tabela_modyfikatorow|StronicowyParser/Rozdziały}}, czyli atrybuty znacznika.
| 7 = Parametry w wersji - znacznikowe:| nagłówek7 = tak
| 8 = Parametry znacznikowe, gdy obiekt: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest typu: {{Code|ZNACZNIK}}, tutaj wtedy mamy ów:|komórka8 = tak
| 9 = {{Code|parametr1}} {{Patrz|parametr1-znacznikowe}} | _9 = To nic innego jak: {{Code|nazwa}} {{LinkPatrz|nazwa|StronicowyParser/Rozdziały}}, czyli jak nazwa znacznika,
| 10 = {{Code|parametr2}} {{Patrz|parametr2-znacznikowe}} | _10 = To nic innego jak: {{Code|zawartosc}} {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały}}, czyli zawartość znacznika,
| 11 = {{Code|parametr3}} {{Patrz|parametr3-znacznikowe}} | _11 = To nic innego jak: {{Code|atrybuty}} {{LinkPatrz|atrybuty|StronicowyParser/Rozdziały}}, czyli atrybuty znacznika.
}}
Jeżeli nic się nie zmieniło, to funkcja zwraca wartość: {{Code|nil,true}}, a jeżeli przeciwnie, to wartość zmienioną, ewentualnie ze zmodyfikowaną bazą {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}} (ale zwracane bez niej, a wartość {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, która się wtedy nie zmieniła, bo baza jest teraz inna, jedynie jest brana do obliczeń, aby określić element pierwszy zrzucony przez tą procedurę), z drugą wartością {{Code|true}}.
====== {{Śródtytuł|PrzetwarzanieZnacznikowe}}{{Code|PrzetwarzanieZnacznikowe}} ======
Funkcja do przetwarzania ciągu (modyfikowanej treści), do odpowiedniego ustawiania linii.
; Funkcja służy do tego{{dk}}
* Jeżeli napotkała znaki listy na początku nowej linii, to usuwana jest jego magiczność, aby to nie znaczyło, tyle co pozycje listy,
** Bo ten element może się znaleźć bezpośrednio lewego końca znacznika - ten znacznik boże być obiektem typu {{Code|ZNACZNIK}} lub {{Code|SZABLON}}, czyli wtedy jest znacznikiem szablonowym, które te elementy tyle znaczą co nic, ale po zastąpieniu tego jego zawartością, one nabierają magiczności, którą z racji tego trzeba usunąć magię tego.
* Element znajduje się na początku komórki tabeli, wtedy ten sam problem, czyli wtedy po usunięciu tabeli, zdobywa to magiczność, bo w znaczniku lub w komórce nie były one magiczne, robiąc pewne operacje.
* Funkcja zamienia wszystkie kody '''{{lpg|HTML}}''' spacji, na jedną odstępową spację, by udało się w pełni sprawdzenie {{LinkPatrz|pozycje listy}}, bo tam na początku może występować dowolna liczba odstępów: {{Code|<nowiki>%s</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local PrzetwarzanieZnacznikowe=function(komorka,nie_trimowanie)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|komorka}} | _1 = Przetwarzana komórka - linia,
| 2 = {{Code|nie_trimowanie}} | _2 = Czy jest włączona możliwość nie trimowania komórki, zaprzeczenie tego,czy ma trimować.
}}
Funkcja znaki odstępu dyktowane kodami: {{Code|{{Nowiki| }}}}, {{Code|{{Nowiki| }}}} i {{Code|{{Nowiki| }}}}, są zastępowane na pojedynczą spację, te spacje mogą być pokolei dla każdego kodu {{Strong|HTML}}. To już zamienione przypisuje pod starą wartością {{Code|komorka_stara}}, a ta nowa {{Code|komorka}}, ta zmieniona, jest trimowana, jeżeli ta funkcja w tej funkcji jest włączona poprzez zaprzeczenie drugiego parametru tej funkcji, którego tutaj powinna przyjmować nie wartość prawdziwą, czyli czy ma trimować.
Jeżeli wyrażenie pasuje do starej wartości: {{Code|<nowiki>^%s*[#%*:;>]</nowiki>}} {{Patrz|pozycje listy}}, czyli są to w nawiasie kwadratowym elementy pozycji listy i nie tylko, to na poczatek tego nowego jest dodawany pojedynczy odstęp.
Jeżeli trimowanie jest włączone, to na poczatek są dodawane dwa znaki nowej lini: {{Code|<nowiki>\n</nowiki>}}, a na końcu ta jedna, i to jest zwracane - zmodyfikowana wartość {{Code|komorka}}, w przeciwnym razie zwracana jest wartość równa otrzymanej nowej wartości tego czegoś, czyli też {{Code|komorka}}.
====== {{Śródtytuł|ZamienNaKody}}{{Code|ZamienNaKody}} ======
Funkcja zamieniająca odpowiednie znaki na znaki kodu {{Strong|HTML}}.
Gdy pozycje listy lub element rozdziału dodatniego równaniowego jest na początku elementu, tzn. to: {{LinkPatrz|pozycje magiczne}}, gdy znajduje się w znaczniku normalnym typu {{Code|ZNACZNIK}} lub szablonowym {{Code|SZABLON}} (te znaczniki są w kategorii: {{lk2|Szablony znaczników}}), na początku jego, to nie ma żadnej magiczności, po zastąpieniu tego jego zawartością, to to nabiera nakiego nasycenia, ale to aby nie było to takie, to te znaki zastępujemy kodami '''{{lpg|HTML}}'''.
Podobnie jest ze znakiem {{Code|{{=}}}}, według: {{LinkPatrz|rozdziały magiczne}} na końcu tego elementu w przypadku rozdziału równaniowego dodatniego, wtedy w tej linii, nie ma już takiego rozpoznanego rozdziału wykrywanego przez '''{{ld|StronicowyParser|Stronicowy parser}}'''.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function ZamienNaKody(zawartosc,czy_szablon)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zawartosc}} | _1 = Zawartość modyfikowana, działa podobnie jak w: {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały/Tom II}}
| 2 = {{Code|czy_szablon}} {{Patrz|czy_szablon}} | _2 = Czy zawartość modyfikowana jest od szablonu.
}}
Funkcja sprawdza, czy pierwszy znak linii jest nową linią, jeśli nie, to znaki przechwytywane z: {{Code|<nowiki>^([=%*#:;])</nowiki>}} {{Patrz|pozycje magiczne}}, są zamieniane na kody {{Strong|HTML}}.
Funkcja sprawdza, czy ostatni znak linii jest nową linią, jeśli nie, to znaki przechwytywane z pierwszego ciągu z: {{Code|<nowiki>([=])([^%S\n]*)$</nowiki>}} {{Patrz|rozdziały magiczne}}, są zamieniane tak jak poprzednio.
Funkcja w ten sposób zwraca zmodyfikowaną zawartość, jeśli były elementy nabierające magicznego kontrastu, lub nie.
====== {{Śródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}{{Code|LiniaRozdzialyDodatnieOrazUjemne}} ======
Funkcja modyfikująca poszczególne linie według odpowiedniego schematu, czyli na podstawie odpowiedniego wzoru {{LinkPatrz|wzor}}, i sprawdza odpowiednio, czy tą linią jest rozdział dodatni równaniowy {{LinkPatrz|czy_rozdział_dodatni}}.
; Funkcja w przypadku rozdziału dodatniego równaniowego (typu, że po obu stronach linii znajdują się znaki {{Code|{{=}}}}, a w wewnątrz tekst) i te będące znakami listy (przypominające rozdziały ujemne){{dk}}
* Rozpoczynające się na: {{Code|<nowiki>[%*#;:]</nowiki>}}, modyfikują je, aby nie było w nim innych rozdziałów dodatnich, ani ujemnych, rozdziałów centrowanych szzablonowych: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, według: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, oraz znacznikowych centrowania: {{Code|center}}, i znaczników nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, według: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}},
* Jak i znaczników nagłówków szablonowych jak: {{s|HNumer}}, a w nim we wnętrzu według jego definicji jest dowolna liczba równa się po lewej i po prawej stronie jego, co symbolizuje rozdział dodatni równaniowy, chociaż, nie do końca nim jest,,
** Funkcja zastąpuje je ich zawartościami, i zastępując wszystkie znaczniki nowych linii {{Tag|br}} i kresek {{Tag|hr}}, czy szablony kolejno: {{s|Br}} i {{s|Hr}}, wtedy w głównym rozdziale dodatnim, czy przypominającym ujemnym, tego już nie ma, i mamy czyste te, które pisze się dokładnie jedną linią, a nie wieloma.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function LiniaRozdzialyDodatnieOrazUjemne(wzor,czy_dodatni_rozdzial)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|wzór}} {{Patrz|wzor}} | _1 = Wzór przetwarzający linię, możliwe dostępne są dwa wzory: {{Code|<nowiki>^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$</nowiki>}} (symbolizuje rozdział dodatni równaniowy) i {{Code|<nowiki>^([%*#;:]+[^\n]*)$</nowiki>}} (symbolizuje rozdziały ujemne, napisane za pomocą pozycji listy).
| 2 = {{Code|czy_rozdział_dodatni}} {{Patrz|czy_rozdział_dodatni}} | _2 = Czy linia reprezentuje rozdział dodatni równaniowy.
}}
Funkcja wydziela poszczególne linie wewnątrz siebie, i za pomocą pewnej funkcji wkładanej do niego jako drugi parametr, robi operacje na nich. Tą funkcją jest: {{Code|{{sr|#p.ZamianaZnakowaLinii|p=Szeregi}}}}.
Dla lini pasujących do wzoru {{LinkPatrz|wzor}}, to linie są kompletowane, używając funkcji: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}} (funkcja wykorzystuje procedury: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}}, i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}), a w nim dla elementu: {{Code|SZABLON}} i {{Code|ZNACZNIK}}, jest robione, co w nagłówku powiedziane jest, a dla znaczników mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''', obiektów {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} równym: {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|NOWIKI}}, są specjalne znaki znacznika: {{Tag|nowiki}}, są zamieniane na kody '''{{lpg|HTML}}''', dla znaków: {{Code|<nowiki>[%!{}|=<>%[%]]</nowiki>}}, na podstawie wywołanej tam funkcji: {{Code|{{sr|#p.ZnakiSpecjalneTaguNowiki|p=Html}}}}, co później w ostatecznym tym elemencie znak nowej linii: {{Code|<nowiki>\n</nowiki>}}, jest zastąpiony jedną spacją. A gdy jednak te znaczniki nie mają zawartości, to są zastępowane ciagiem pustym.
===== Dalszy opis =====
Przed uruchomieniem głównego iteratora zwracanej przez tą funkcję, ona przez nią musi przejść przez te kroki, aby wyedytować odpowiednio tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}.
====== Zmiana tekstu (Krok 1) - Upraszczanie jakikolwiek linii do najprostszej możliwej postaci, aby było możliwe rozpoznanie pewnych obiektów, nie tylko linkowych przez {{ld|StronicowyParser|Stronicowy parser}} ======
{{Tab}}Uruchamiamy funkcję: {{Code|{{sr|#p.KodowanieNiezakodowanychNormKodowychReferencjiTekstu|p=Szablonowe}}}}, która służy do kodowania szablonów referencji: {{s|R}}, {{s|RN}} i {{s|RNota}}, {{s|U}}, {{s|UN}} i {{s|UNota}}, {{s|O}} i {{s|Ref}} oraz {{s|Refn}}, znaczniki '''mechanizmu {{NS|k=mw|w=tak|l=tak}}''': {{Tag|ref}}, a także dopisująca linkom zewnętrznym nienazwanym ich numerkowe nazwy, by napisać ich numerki uruchomień, aby się zgadzała ich kolejność, a te elementy za to referencji są zamieniane w odpowiednie kody {{Strong|HTML}}, w innych przypadkach uruchamia się funkcja: {{Code|__FUNKCJA_INNE_OPERACJE}} {{Patrz|__FUNKCJA_INNE_OPERACJE}} (która robi inne operacje, które wykorzystamy do definicji funkcji tutaj, która coś robi), która jest zdefiniowana na zewnętrz tej funkcji. Funkcja wykorzystuje też: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}, zdefiniowane w opisywanym module.
{{Tab}}Funkcja ta doprowadza, za pomocą funkcji: {{Code|__FUNKCJA_INNE_OPERACJE}} {{LinkPatrz|__FUNKCJA_INNE_OPERACJE}} - pierwsza funkcja w niej, do najprostrzej postaci wikitekst zakodowany: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, aby w tekście były tylko linki szablonowe, nawet iteligentne, bądź spisowe, czy typu linki wewnętrzne {{Code|LINKW}}, a nawet zewnętrzne {{Code|LINKZ}}: i rozdziały niezależnie jak są reprezentowane, czy znacznikowo, czy szablonowo, i niektóre inne, aby one były w najprostrzej postaci, aby nie było rozdziałów zagnieżdżonych jeden w drugim, szablony typu stucznego reprezentowania rozdziałów dodatnich równaniowych, są zastępowane ich zawartościami. W rozdziałach szablonowych mogą być linki, niezależnie jakie.
{{HNumer|1=
======= Opis funkcji {{nobold|{{Code|__FUNKCJA_INNE_OPERACJE}} {{LinkPatrz|__FUNKCJA_INNE_OPERACJE}}}}, a w nim jest, jako pierwszy argument modyfikowany tekst wnętrzna elementu innego niż przypadek szablonów i znaczników referencji - nazwane i nienazwane =======
}}
Funkcja się uruchamia, wtedy kiedy mamy do czynienia z szablonami innymi niż referencje nazwane i nienazwane, podobnie w przypadku znaczników innych niż referencje. Ona też działa w pozostałych przypadkach.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function(szablon,obiekt,kod,parametr1,parametr2,parametr3,tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = Parametry podstawowe: | nagłówek1 = tak
| 2 = Parametry tej funkcji, jak w: {{LinkZobaczTeż|parametry znacznikowe}}. | komórka2 = tak
| 3 = Inne parametry: | nagłówek3 = tak
| 4 = {{Code|tekst}} | _4 = Jak w: {{LinkPatrz|tekst|StronicowyParser/Rozdziały}}.
}}
Funkcja modyfikuje wnętrza obiektów: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, o typie:
* {{Code|SZABLON}} - pewne szablony są zastępowane ich wnętrzem lub są zastępowane ciągiem pustym,
** Szablony typu: {{s|HNumer}}, jeśli można są modyfikowane,
** Szablony cenntrowania z: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, według: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, są zachowywane, chyba że w swojej zawartości mają inne rozdziały dodatnie równaniowe i pozycje listy, wtedy one są zachowywane ich zawartościami.
* {{Code|ZNACZNIK}} - elementy ze znacznikami są zastępowane ich zawartościami, a znaczniki typu:
** centrowania: {{Tag|center}} i nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, według: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, są zachowywane, lub zastępowane ich zawartościami, jeśli w sobie mają rozdziały dodatnie równaniowe lub pozycje listy.
* {{Code|INNEPRE}} - składająca się z samych odstępów są zastępowane ciągiem pustym, a inne ich zawartościami,
* {{Code|LINKW}} i {{Code|LINKZ}} - w nich znaczniki normalne są zastępowane ich zawartościami, lub one znaczniki nowych linii: {{Tag|br|pojedynczy}}, i kresek: {{Tag|hr|pojedynczy}}, są zamieniane na spacje, i analogicznie podobnie znaczniki szablonowe i też szablony nowych linii: {{s|Br}}, i kresek: {{s|Hr}},
* {{Code|WIKITABELA}} - komórki, w niej, są upraszczne do zbioru nowych linii, aby była zachowana, kolejność wierszy i komórek.
; Szablony i znaczniki nagłówków jakie modyfikujemy w funkcji są{{dk}}
* Elementy do centrowania obiektów na stronie '''{{lpg|HTML}}''' w '''mechanizmie {{NS|l=tak|w=tak|k=mw}}''':
** {{s|Ce}}, {{s|Centruj}} i {{s|Center}} - szablony centrowania rozdziałów,
** {{Tag|center}} - znaczniki centrowania,
* {{s|HNumer}} - szablonu sztucznych rozdziałów,
* {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}} - szablony znaczników nagłówków.
: Zagieżdżone formy szablonów nagłówków w nich są usuwane, także szablony i znaczniki, nowej linii i kresek, są tam zastępowane spacją.
; Szablony sztucznych nagłówków{{dk}}
* {{s|HNumer}} - jeśli w sobie posiadają znaczniki {{Tag|div}}, i w nich nie ma nowej linii, ale on bezpośrednio znajduje się w tym szablonie, to ten znacznik jest zastępowany tą zawartością, a magiczność elementów, w tym znaczniku, rozdziałów dodatnich równaniowych i poyzycji listy zostaje usunięta.
====== Zmiana tekstu (Krok 2) - Upraszczanie rozdziałów, dodatnich równaniowych i pozycji list, do najprostszej postaci ======
Uruchamiana jest dwa razy funkcja: {{LinkŚródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}, raz dla rozdziału dodatniego równaniowego, a raz następnie dla pozycji listy w '''mechanizmie {{NS|k=mw|l=tak}}''', ta funkcja działa dla każdej linii w tekście: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}.
* Funkcja upraszcza zawartość tych linii (rozdziałów) do takiej postaci, by w nim nie było znaczników nagłówków, a nawet nagłówków przygotowanych z szablonów centrowania szablonowego lub znacznikowego.
** Znaczniki, czy szablony, nowej linii i kreski poziomej, bądź ich szablony, czy znaki nowej linii, są zastępowane spacją.
** Ich elementy są zastępowane ich zawartościami.
; Inne obiekty
* Zmaczniki {{Code|PRE}} w tych rozdziałach są zastępowane jego zawartością, odpowiednio modyfikując znaki specjalne, zastępując je na kody '''{{lpg|HTML}}'''.
* Podobnie jest z elementami {{Code|ŹRÓDŁO}} i {{Code|NOWIKI}}.
** W tych dwóch pierwszych obiekrach. Znak nowej linii jest zastępowany wtedy spacją, jeśli on znajduje się w rozdziale dodatnim. Ale w każdym bądź razie, zawartośc ich, a w nich magiczne elementy przyjmują kształt kodów języka: '''{{lpg|HTML}}'''.
====== Zmiana tekstu (Krok 3) - Doprowadenie tekstu, to jednoznaczności rozumienia szablonów rozdziałów, aby w linii, wszystko co reprezentuje główny nagłówek był w całości w niej, nigdy jako normalna część ======
; Modyfikacja obiektów typu szablonowego{{dk}}
* Dla obiektu szablonowego typu {{Code|SZABLON}}, a w nim dla szablonów, tzn.: napisu wprowadzenia tekstu, w których ich nazwy pasują do: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, to dla obu stron ich kodów wstawiana jest podwójna nowa linia.
* A szablony o nazwach z tabeli: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_sztucznego_wprowadzenia_tekstu}}, których wywołania są zamieniane na znacznik napisu wprowadzenia tekstu typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, w których po obu stronach wstawiana jest podwójna nowa linia.
; Typu znacznikowego{{dk}}
* Dla obiektu {{Code|ZNACZNIK}}, a w nim dla znacznika: {{Tag|center}}, lub dla {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, wstawiane jest, po obu stronach ich kodów, podwójna nowa linia.
; Teksty z czcionką o stałej szerokości{{dk}}
* Dla obiektu {{Code|INNEPRE}}, dla jego kodu, po obu jego stron, wstawiana jest pojedyncza nowa linia.
; Specjalne obiekty{{dk}}
* A nareście dla obiektow: {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} i {{Code|PUDEŁKOWEJŚCIA}}, w przypadku ich kodów, wstawiane jest po obu ich stronach podwójna nowa linia.
==== Kod wspólny przed integracją linii i wyodrębnieniem spisu treści ====
Z {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} są usuwane komentarze typu według wzoru w {{Lpg|Lua}} w {{lpr|Lua|Scribunto}} taki: {{Code|<nowiki><!%-%-.-%-%-></nowiki>}}, a także magiczne derektywy według {{Code|{{sr|#p.magiczne_derektywy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.magiczne_derektywy}}.
A także po nowych liniach kreskowych wstawiany jest znak nowej linii wraz ze spacją po nich.
==== Integracja linii i wyodrębnienie spisu treści dla treści zakodowanych ====
Linie są integrowane według: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}, a później wydzielany jest odpowiedni spis treści z tekstu: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, według funkcji: {{LinkŚródtytuł|p.IterTekst}}, tzn. na podstawie użycia: {{Code|__FUNKCJA_ANALIZA_SPISU}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, jeżeli została podana.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
cpv07mqukaliu8kk05woclor0f5wgdx
Wikipedysta:Persino/brudnopis13
2
63962
558353
558004
2026-10-02T20:01:49Z
Persino
2851
558353
wikitext
text/x-wiki
Podręcznik zawiera nieprzydzielony do innych podręczników materiał fizyki na poziomie studiów. Aktualnie w lekkim chaosie.
'''Zawartość:'''
* [[/Ogólna teoria względności/]]
: wzmianka o [[Szczególna teoria względności|Szczególnej teorii względności]]
* [[/Fala grawitacyjna/]]
* [[/Energia, pęd i moment pędu pola elektromagnetycznego/]]
'''Inne podręczniki:''' <br />
> [[Fizyka teoretyczna]] <br />
> [[Wstęp do fizyki atomu]] <br />
> [[Elektrodynamika klasyczna]] <br />
> [[Wprowadzenie do fizyki kwantowej]] <br />
> [[Mechanika kwantowa]] <br />
{{LinkWzór|}}
{{lg|tytan|tytan1|parametr=}}
{{Patrz|tytan}}
{{Śródtekst|bez preprocess=|uchwyt=brudnopis|tekst=Komunikat {{LinkPatrz|tytan}}}}
ldp6aggh16m53spqsfyitdqxh0eeiwl
558354
558353
2026-10-02T20:02:44Z
Persino
2851
558354
wikitext
text/x-wiki
Podręcznik zawiera nieprzydzielony do innych podręczników materiał fizyki na poziomie studiów. Aktualnie w lekkim chaosie.
'''Zawartość:'''
* [[/Ogólna teoria względności/]]
: wzmianka o [[Szczególna teoria względności|Szczególnej teorii względności]]
* [[/Fala grawitacyjna/]]
* [[/Energia, pęd i moment pędu pola elektromagnetycznego/]]
'''Inne podręczniki:''' <br />
> [[Fizyka teoretyczna]] <br />
> [[Wstęp do fizyki atomu]] <br />
> [[Elektrodynamika klasyczna]] <br />
> [[Wprowadzenie do fizyki kwantowej]] <br />
> [[Mechanika kwantowa]] <br />
{{LinkWzór|}}
{{lg|tytan|tytan1|parametr=}}
{{Patrz|tytan}}
{{Śródtekst|bez preprocess=tak|uchwyt=brudnopis|tekst=Komunikat {{LinkPatrz|tytan}}}}
25rjeffitoqb8itxv5qg8ptsaap9nad
558356
558354
2026-10-02T20:06:35Z
Persino
2851
558356
wikitext
text/x-wiki
Podręcznik zawiera nieprzydzielony do innych podręczników materiał fizyki na poziomie studiów. Aktualnie w lekkim chaosie.
'''Zawartość:'''
* [[/Ogólna teoria względności/]]
: wzmianka o [[Szczególna teoria względności|Szczególnej teorii względności]]
* [[/Fala grawitacyjna/]]
* [[/Energia, pęd i moment pędu pola elektromagnetycznego/]]
'''Inne podręczniki:''' <br />
> [[Fizyka teoretyczna]] <br />
> [[Wstęp do fizyki atomu]] <br />
> [[Elektrodynamika klasyczna]] <br />
> [[Wprowadzenie do fizyki kwantowej]] <br />
> [[Mechanika kwantowa]] <br />
{{LinkWzór|}}
{{lg|tytan|tytan1|parametr=}}
{{Patrz|tytan}}
{{Śródtekst|bez preprocess=|uchwyt=brudnopis|tekst=Komunikat {{LinkPatrz|tytan}}}}
ldp6aggh16m53spqsfyitdqxh0eeiwl
558368
558356
2026-10-02T22:11:35Z
Persino
2851
558368
wikitext
text/x-wiki
Podręcznik zawiera nieprzydzielony do innych podręczników materiał fizyki na poziomie studiów. Aktualnie w lekkim chaosie.
'''Zawartość:'''
* [[/Ogólna teoria względności/]]
: wzmianka o [[Szczególna teoria względności|Szczególnej teorii względności]]
* [[/Fala grawitacyjna/]]
* [[/Energia, pęd i moment pędu pola elektromagnetycznego/]]
'''Inne podręczniki:''' <br />
> [[Fizyka teoretyczna]] <br />
> [[Wstęp do fizyki atomu]] <br />
> [[Elektrodynamika klasyczna]] <br />
> [[Wprowadzenie do fizyki kwantowej]] <br />
> [[Mechanika kwantowa]] <br />
{{LinkWzór|}}
{{lg|tytan|tytan1|parametr=}}
{{Patrz|tytan}}
{{Śródtekst|bez preprocess=tak|uchwyt=brudnopis|tekst=Komunikat {{LinkPatrz|tytan}}}}
25rjeffitoqb8itxv5qg8ptsaap9nad
558370
558368
2026-10-02T22:50:49Z
Persino
2851
558370
wikitext
text/x-wiki
Podręcznik zawiera nieprzydzielony do innych podręczników materiał fizyki na poziomie studiów. Aktualnie w lekkim chaosie.
'''Zawartość:'''
* [[/Ogólna teoria względności/]]
: wzmianka o [[Szczególna teoria względności|Szczególnej teorii względności]]
* [[/Fala grawitacyjna/]]
* [[/Energia, pęd i moment pędu pola elektromagnetycznego/]]
'''Inne podręczniki:''' <br />
> [[Fizyka teoretyczna]] <br />
> [[Wstęp do fizyki atomu]] <br />
> [[Elektrodynamika klasyczna]] <br />
> [[Wprowadzenie do fizyki kwantowej]] <br />
> [[Mechanika kwantowa]] <br />
{{LinkWzór|}}
{{lg|tytan|tytan1|parametr=}}
{{Patrz|tytan}}
{{Śródtekst|bez preprocess=|uchwyt=brudnopis|tekst=Komunikat {{LinkPatrz|tytan}}}}
ldp6aggh16m53spqsfyitdqxh0eeiwl
558372
558370
2026-10-02T22:53:33Z
Persino
2851
558372
wikitext
text/x-wiki
Podręcznik zawiera nieprzydzielony do innych podręczników materiał fizyki na poziomie studiów. Aktualnie w lekkim chaosie.
'''Zawartość:'''
* [[/Ogólna teoria względności/]]
: wzmianka o [[Szczególna teoria względności|Szczególnej teorii względności]]
* [[/Fala grawitacyjna/]]
* [[/Energia, pęd i moment pędu pola elektromagnetycznego/]]
'''Inne podręczniki:''' <br />
> [[Fizyka teoretyczna]] <br />
> [[Wstęp do fizyki atomu]] <br />
> [[Elektrodynamika klasyczna]] <br />
> [[Wprowadzenie do fizyki kwantowej]] <br />
> [[Mechanika kwantowa]] <br />
{{LinkWzór|}}
{{lg|tytan|tytan1|parametr=}}
{{Patrz|tytan}}
{{Śródtekst|bez preprocess=tak|uchwyt=brudnopis|tekst=Komunikat {{LinkPatrz|tytan}}}}
25rjeffitoqb8itxv5qg8ptsaap9nad
558373
558372
2026-10-02T22:58:01Z
Persino
2851
558373
wikitext
text/x-wiki
Podręcznik zawiera nieprzydzielony do innych podręczników materiał fizyki na poziomie studiów. Aktualnie w lekkim chaosie.
'''Zawartość:'''
* [[/Ogólna teoria względności/]]
: wzmianka o [[Szczególna teoria względności|Szczególnej teorii względności]]
* [[/Fala grawitacyjna/]]
* [[/Energia, pęd i moment pędu pola elektromagnetycznego/]]
'''Inne podręczniki:''' <br />
> [[Fizyka teoretyczna]] <br />
> [[Wstęp do fizyki atomu]] <br />
> [[Elektrodynamika klasyczna]] <br />
> [[Wprowadzenie do fizyki kwantowej]] <br />
> [[Mechanika kwantowa]] <br />
{{LinkWzór|}}
{{lg|tytan|tytan1|parametr=}}
{{Patrz|tytan}}
{{Śródtekst|bez preprocess=|uchwyt=brudnopis|tekst=Komunikat {{LinkPatrz|tytan}}}}
ldp6aggh16m53spqsfyitdqxh0eeiwl
558380
558373
2026-10-02T23:26:00Z
Persino
2851
558380
wikitext
text/x-wiki
Podręcznik zawiera nieprzydzielony do innych podręczników materiał fizyki na poziomie studiów. Aktualnie w lekkim chaosie.
'''Zawartość:'''
* [[/Ogólna teoria względności/]]
: wzmianka o [[Szczególna teoria względności|Szczególnej teorii względności]]
* [[/Fala grawitacyjna/]]
* [[/Energia, pęd i moment pędu pola elektromagnetycznego/]]
'''Inne podręczniki:''' <br />
> [[Fizyka teoretyczna]] <br />
> [[Wstęp do fizyki atomu]] <br />
> [[Elektrodynamika klasyczna]] <br />
> [[Wprowadzenie do fizyki kwantowej]] <br />
> [[Mechanika kwantowa]] <br />
{{LinkWzór|}}
{{lg|tytan|tytan1|parametr=}}
{{Patrz|tytan}}
{{Śródtekst|bez preprocess=tak|uchwyt=brudnopis|tekst=Komunikat {{LinkPatrz|tytan}}}}
25rjeffitoqb8itxv5qg8ptsaap9nad
558381
558380
2026-10-02T23:26:45Z
Persino
2851
558381
wikitext
text/x-wiki
Podręcznik zawiera nieprzydzielony do innych podręczników materiał fizyki na poziomie studiów. Aktualnie w lekkim chaosie.
'''Zawartość:'''
* [[/Ogólna teoria względności/]]
: wzmianka o [[Szczególna teoria względności|Szczególnej teorii względności]]
* [[/Fala grawitacyjna/]]
* [[/Energia, pęd i moment pędu pola elektromagnetycznego/]]
'''Inne podręczniki:''' <br />
> [[Fizyka teoretyczna]] <br />
> [[Wstęp do fizyki atomu]] <br />
> [[Elektrodynamika klasyczna]] <br />
> [[Wprowadzenie do fizyki kwantowej]] <br />
> [[Mechanika kwantowa]] <br />
{{LinkWzór|}}
{{lg|tytan|tytan1|parametr=}}
{{Patrz|tytan}}
{{Śródtekst|bez preprocess=|uchwyt=brudnopis|tekst=Komunikat {{LinkPatrz|tytan}}}}
ldp6aggh16m53spqsfyitdqxh0eeiwl
558383
558381
2026-10-03T00:10:47Z
Persino
2851
558383
wikitext
text/x-wiki
Podręcznik zawiera nieprzydzielony do innych podręczników materiał fizyki na poziomie studiów. Aktualnie w lekkim chaosie.
'''Zawartość:'''
* [[/Ogólna teoria względności/]]
: wzmianka o [[Szczególna teoria względności|Szczególnej teorii względności]]
* [[/Fala grawitacyjna/]]
* [[/Energia, pęd i moment pędu pola elektromagnetycznego/]]
'''Inne podręczniki:''' <br />
> [[Fizyka teoretyczna]] <br />
> [[Wstęp do fizyki atomu]] <br />
> [[Elektrodynamika klasyczna]] <br />
> [[Wprowadzenie do fizyki kwantowej]] <br />
> [[Mechanika kwantowa]] <br />
{{LinkWzór|}}
{{lg|tytan|tytan1|parametr=}}
{{Patrz|tytan}}
{{Śródtekst|bez preprocess=tak|uchwyt=brudnopis|tekst=Komunikat {{LinkPatrz|tytan}}}}
25rjeffitoqb8itxv5qg8ptsaap9nad
558385
558383
2026-10-03T00:17:54Z
Persino
2851
558385
wikitext
text/x-wiki
Podręcznik zawiera nieprzydzielony do innych podręczników materiał fizyki na poziomie studiów. Aktualnie w lekkim chaosie.
'''Zawartość:'''
* [[/Ogólna teoria względności/]]
: wzmianka o [[Szczególna teoria względności|Szczególnej teorii względności]]
* [[/Fala grawitacyjna/]]
* [[/Energia, pęd i moment pędu pola elektromagnetycznego/]]
'''Inne podręczniki:''' <br />
> [[Fizyka teoretyczna]] <br />
> [[Wstęp do fizyki atomu]] <br />
> [[Elektrodynamika klasyczna]] <br />
> [[Wprowadzenie do fizyki kwantowej]] <br />
> [[Mechanika kwantowa]] <br />
{{LinkWzór|}}
{{lg|tytan|tytan1|parametr=}}
{{Patrz|tytan}}
{{Śródtekst|bez preprocess=|uchwyt=brudnopis|tekst=Komunikat {{LinkPatrz|tytan}}}}
ldp6aggh16m53spqsfyitdqxh0eeiwl
558393
558385
2026-10-03T09:43:46Z
Persino
2851
558393
wikitext
text/x-wiki
Podręcznik zawiera nieprzydzielony do innych podręczników materiał fizyki na poziomie studiów. Aktualnie w lekkim chaosie.
'''Zawartość:'''
* [[/Ogólna teoria względności/]]
: wzmianka o [[Szczególna teoria względności|Szczególnej teorii względności]]
* [[/Fala grawitacyjna/]]
* [[/Energia, pęd i moment pędu pola elektromagnetycznego/]]
'''Inne podręczniki:''' <br />
> [[Fizyka teoretyczna]] <br />
> [[Wstęp do fizyki atomu]] <br />
> [[Elektrodynamika klasyczna]] <br />
> [[Wprowadzenie do fizyki kwantowej]] <br />
> [[Mechanika kwantowa]] <br />
{{LinkWzór|}}
{{lg|tytan|tytan1|parametr=}}
{{Patrz|tytan}}
{{Śródtekst|bez preprocess=|uchwyt=brudnopis|klucz=|tekst=Komunikat {{LinkPatrz|tytan{{{klucz|}}}}}}}
dl0hl05q7tmfd7sfakdhac6y1lpltxm
Moduł:StronicowyParser/ZbieranieDanychStron/Potrzebne
828
64332
558379
558155
2026-10-02T23:25:43Z
Persino
2851
558379
Scribunto
text/plain
local p={};
function p.UstawUchwytyWeTablicyBezNumeracji(self,tabela_elementow_strony_kodow,nazwa_obiektu,lista_dwuelementowa,kod)
if(lista_dwuelementowa)then
local tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu];
if(not tab_obiekt)then
tabela_elementow_strony_kodow[nazwa_obiektu]={};
tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu];
end;
local uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji;
if(not uchwyty_bez_numeracji)then
tab_obiekt.uchwyty_bez_numeracji={};
uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji;
end;
uchwyty_bez_numeracji[kod]=lista_dwuelementowa;
end;
end;
function p.WydobywanieUchwytuZeTablicyBezNumeracji(self,tabela_elementow_strony_kodow,nazwa_obiektu,kod)
local tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu];
if(not tab_obiekt)then return nil;end;
local uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji;
if(uchwyty_bez_numeracji)then
return uchwyty_bez_numeracji[kod];
end;
end;
function p.RozpatrywanieElementuUchwytuNumeracji(self,uchwyt_obiektu,tab_numer,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie)
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
uchwyt_obiektu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(uchwyt_obiektu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or uchwyt_obiektu;
local html_modul=require("Module:Html");
uchwyt_obiektu=html_modul.DecodeHtml(uchwyt_obiektu,true);
if(uchwyt_obiektu~="")then
KtorySzablonMaZwracacKategorie(uchwyt_obiektu);
local lista_dwuelementowa={};
lista_dwuelementowa[1]=uchwyt_obiektu;
local parametry_modul=require("Module:Parametry");
if((not tablica_zmiennych.sprawdzenie_dokonane_obiektu)and(not parametry_modul["CzySąElementyNumerowaneTablicy"](tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu])))then
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then
p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki,nazwa_artykulu);
end;
tablica_zmiennych.sprawdzenie_dokonane_obiektu=true;
end;
if(tab_numer)then
tab_numer[nazwa_obiektu]=tab_numer[nazwa_obiektu]+1;
local numer=tab_numer[nazwa_obiektu];
table.insert(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu],numer,lista_dwuelementowa);
else
table.insert(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu],lista_dwuelementowa);
end;
return lista_dwuelementowa;
end;
end;
function p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,nazwa_obiektu, czy_artykul_korzystany,numer_numeracji,tab_numer,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie)
local uchwyt_obiektu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[numer_numeracji];
if(uchwyt_obiektu)then
local lista_dwuelementowa=p.RozpatrywanieElementuUchwytuNumeracji(self,uchwyt_obiektu,tab_numer,tablica_zmiennych, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return lista_dwuelementowa;
end;
end;
function p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki))then
if(nazwa_artykulu=="")then return;end;
local czy_element_wystepuje_w_tablicy=false;
local tablica_przestrzeni_wszystkiego=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron;
if(tablica_przestrzeni_wszystkiego)then
local tabela_przestrzeni_ksiazek=tablica_przestrzeni_wszystkiego[nazwa_przestrzeni];
if(tabela_przestrzeni_ksiazek)then
local tabela_ksiazek=tabela_przestrzeni_ksiazek[nazwa_przestrzeni_ksiazki]
if(tabela_ksiazek)then
local tab_ksiazki=tabela_ksiazek[nazwa_ksiazki];
if(tab_ksiazki)then
if(tab_ksiazki.spis)then
--czy_lista_niepusta=true;
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
for _,tab_value in ipairs(tab_ksiazki.spis)do
if(tab_value[2])then
for _,artykul_w_bazie_element in ipairs(tab_value[2])do
local artykul_w_bazie=artykul_w_bazie_element[1];
local czy_table=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(artykul_w_bazie);
artykul_w_bazie=czy_table and artykul_w_bazie[1] or artykul_w_bazie;
local artykul_bez_naglowka_w_bazie=stronicowyparser_potrzebne_modul.TylkoNazwaStronyWoluminuZTabeliPublikacji(artykul_w_bazie);
if(artykul_bez_naglowka_w_bazie==nazwa_artykulu)then
czy_element_wystepuje_w_tablicy=true;
break;
end;
end;
end;
if(czy_element_wystepuje_w_tablicy)then break;end;
end;
end;
end;
end;
end;
end;
if(not czy_element_wystepuje_w_tablicy)then
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni~=nazwa_przestrzeni)
or(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu~=nazwa_przestrzeni_ksiazki)
or(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu~=nazwa_ksiazki)
or(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu~=nazwa_artykulu))then
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki, nazwa_ksiazki)))then
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"brak spisów treści do dołączonych stron",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
end;
elseif(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak spisu treści do korzystanych stron"))then
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak spisu treści do korzystanych stron");
end;
end;
end;
end;
end;
function p.PusteParametryReferencji(self, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu)
local czy_ksiazka_z_tylko_odstepami_lub_pusty=(nazwa_ksiazki)and (nazwa_ksiazki=="") or nil;
local czy_artykul_z_tylko_odstepami_lub_pusty=(nazwa_artykulu)and (nazwa_artykulu=="") or nil;
local czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty=(uchwyt_obiektu)and (uchwyt_obiektu=="") or nil;
----
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
----
if(czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,1))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,1);
end;
end;
if(czy_artykul_z_tylko_odstepami_lub_pusty)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,2))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,2);
end;
end;
if(czy_ksiazka_z_tylko_odstepami_lub_pusty)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,3))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,3);
end;
end;
end;
function p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,bezuchwytowe)
local nazwa_artykulu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[bezuchwytowe and 1 or 2];
local pelna_nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[bezuchwytowe and 2 or 3];
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local nazwa_artykulu_linku=nazwa_artykulu and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(nazwa_artykulu,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true,true) or nazwa_artykulu;
local pelna_nazwa_ksiazki_linku=pelna_nazwa_ksiazki and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(pelna_nazwa_ksiazki,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true,true) or pelna_nazwa_ksiazki
tabela_parametrow_szablonu["nazwa artykułu"]=nazwa_artykulu_linku;tabela_parametrow_szablonu[bezuchwytowe and 1 or 2]=nil;
tabela_parametrow_szablonu["nazwa książki"]=pelna_nazwa_ksiazki_linku;tabela_parametrow_szablonu[bezuchwytowe and 2 or 3]=nil;
nazwa_artykulu=nazwa_artykulu_linku;
pelna_nazwa_ksiazki=pelna_nazwa_ksiazki_linku;
local parametry_modul=require("Module:Parametry");
local nazwy_modul=require("Module:Nazwy");
local html_modul=require("Module:Html");
if(nazwa_artykulu)then
nazwa_artykulu=html_modul.DecodeHtml(nazwa_artykulu,true);
local techniczne_modul=require("Module:Techniczne");
nazwa_artykulu=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=nazwa_artykulu,[2]="",};
end;
local nazwa_ksiazki;local nazwa_przestrzeni_ksiazki;local nazwa_przestrzeni;
if(pelna_nazwa_ksiazki)then
pelna_nazwa_ksiazki=html_modul.DecodeHtml(pelna_nazwa_ksiazki,true);
local techniczne_modul=require("Module:Techniczne");
pelna_nazwa_ksiazki=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=pelna_nazwa_ksiazki,[2]=nazwa_modulu_aktualna_czy_biezaca,};
----
local tabela_nazw={};
local ksiazkowe_modul=require("Module:Książkowe");
pelna_nazwa_ksiazki=ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](pelna_nazwa_ksiazki,tabela_nazw);
nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](pelna_nazwa_ksiazki,tabela_nazw);
nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw);
nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and (nazwy_modul["SUBNAZWAKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw)) or (nazwy_modul["NAZWAKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw)));
--pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
end;
return nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu;
end;
function p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie,czy_inna_wartosc_tekst,tab_nazwy)
local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu;
if(not czy_inna_wartosc_tekst)then
nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true);
else
nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=tab_nazwy[1],tab_nazwy[2],tab_nazwy[3],tab_nazwy[4];
end;
--local ksiazkowe_modul=require("Module:Książkowe");
--pelna_nazwa_ksiazki=pelna_nazwa_ksiazki or ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"]();
--nazwa_artykulu=nazwa_artykulu or ksiazkowe_modul["NazwaArtykułuKsiążki"]();
if((nazwa_przestrzeni)or(nazwa_przestrzeni_ksiazki)or(nazwa_ksiazki)or(nazwa_artykulu))then
local tabela_nazw={};
local ksiazkowe_modul=require("Module:Książkowe");
local nazwa_przestrzeni=nazwa_przestrzeni or ksiazkowe_modul["NazwaPrzestrzeni"](nil,tabela_nazw);
local nazwa_przestrzeni_ksiazki=nazwa_przestrzeni_ksiazki or ksiazkowe_modul["NazwaPrzestrzeniKsiążki"](nil,tabela_nazw);
local nazwa_ksiazki=nazwa_ksiazki or ksiazkowe_modul["NazwaTytułuKsiążki"](nil,tabela_nazw);
local nazwa_artykulu=nazwa_artykulu or ksiazkowe_modul["NazwaArtykułuKsiążki"](nil,tabela_nazw);
if(KtorySzablonMaZwracacKategorie)then KtorySzablonMaZwracacKategorie();end;
local stronicowyparser_zbieraniedanychstron_modul=require("Module:StronicowyParser/ZbieranieDanychStron");
local tabela_listy_danych_analizy_ksiazki=stronicowyparser_zbieraniedanychstron_modul.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false);
end;
end;
function p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_szablon_pudelkowy_strony_zbiorczej,KtorySzablonMaZwracacKategorie)
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"];
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"];
if((not nazwa_przestrzeni)and(not nazwa_jednostki))then return;end;
local parametry_modul=require("Module:Parametry");
if((nazwa_jednostki) and (nazwa_jednostki==""))then return;end;
local szablonowe_modul=require("Module:Szablonowe");
if((nazwa_jednostki and mw.ustring.match(nazwa_jednostki,szablonowe_modul.NormaWzoruKodowaniaTekstu()))
or (nazwa_przestrzeni and mw.ustring.match(nazwa_przestrzeni,szablonowe_modul.NormaWzoruKodowaniaTekstu()))
)then return;end;
local nazwy_modul=require("Module:Nazwy");
local ksiazkowe_modul=require("Module:Książkowe");
local html_modul=require("Module:Html");
if(nazwa_jednostki)then
nazwa_jednostki=html_modul.DecodeHtml(nazwa_jednostki,true);
end;
local tabela_nazw_art={};
local nazwa_jednostki=(nazwa_jednostki
and mw.ustring.gsub(nazwa_jednostki,"^([^#]*)#(.*)$","%1")
or nil
) or ksiazkowe_modul["NazwaArtykułu"](nil,tabela_nazw_art);
if(nazwa_przestrzeni)then
nazwa_przestrzeni=html_modul.DecodeHtml(nazwa_przestrzeni,true);
end;
local nazwa_przestrzeni=nazwa_przestrzeni or ksiazkowe_modul["NazwaPrzestrzeni"](nil,tabela_nazw_art);
local strona=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki;
local techniczne_modul=require("Module:Techniczne");
strona=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=strona,[2]=self.nazwa_modulu_biezaca,};
--strona=ksiazkowe_modul["PEŁNANAZWASTRONY"](strona);
local tabela_nazw={};
local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw);
local nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw);
local nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and (nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw)) or (nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw)));
local nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw);
if(KtorySzablonMaZwracacKategorie)then KtorySzablonMaZwracacKategorie();end;
local stronicowyparser_zbieraniedanychstron_modul=require("Module:StronicowyParser/ZbieranieDanychStron");
local tabela_listy_danych_analizy_ksiazki=stronicowyparser_zbieraniedanychstron_modul.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false,nil,czy_szablon_pudelkowy_strony_zbiorczej);
end;
function p.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
local nazwy_modul=require("Module:Nazwy");
local czy_inna_wartosc_tekst=true;
if((nazwa_artykulu)and(nazwa_ksiazki))then
--local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni;
tabela_parametrow_szablonu["nazwa jednostki"]=nazwy_modul["NazwaModułu"]("",nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nil,czy_inna_wartosc_tekst,{nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,});
elseif((nazwa_artykulu)and(not nazwa_ksiazki))then
local ksiazkowe_modul=require("Module:Książkowe");
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ksiazkowe_modul["NazwaPrzestrzeni"]();
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or (ksiazkowe_modul["NazwaKsiążki"]()..((nazwa_artykulu~="") and ("/"..nazwa_artykulu) or ""));
----
tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni;
tabela_parametrow_szablonu["nazwa jednostki"]=nazwa_jednostki;
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nil,czy_inna_wartosc_tekst,{nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,});
elseif((not nazwa_artykulu)and(nazwa_ksiazki))then
local ksiazkowe_modul=require("Module:Książkowe");
local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ksiazkowe_modul["NazwaPrzestrzeni"]();
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or ksiazkowe_modul["NazwaKsiążki"]();
----
tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni;
tabela_parametrow_szablonu["nazwa jednostki"]=nazwa_jednostki;
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nil,czy_inna_wartosc_tekst,{nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,});
else
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nil,czy_inna_wartosc_tekst,{nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,});
end;
end;
function p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,__FUNKCJA_SPRAWDZANIE)
local pudelko_modul=require("Module:Pudełko");
if(((nazwa_przestrzeni)and(((nazwa_przestrzeni~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_przestrzeni)))or(nazwa_przestrzeni=="")))
and((nazwa_przestrzeni_ksiazki)and(((nazwa_przestrzeni_ksiazki~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_przestrzeni_ksiazki)))or(nazwa_przestrzeni_ksiazki=="")))
and((nazwa_ksiazki)and(nazwa_ksiazki~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_ksiazki)))
and((nazwa_artykulu)and(((nazwa_artykulu~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_artykulu)))or(nazwa_artykulu=="")))
)then
if(__FUNKCJA_SPRAWDZANIE)then
__FUNKCJA_SPRAWDZANIE(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu);
end;
else
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni)
and(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu==nazwa_przestrzeni_ksiazki)
and(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu==nazwa_ksiazki)
and(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu))then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nieprawidłowe nazwy korzystanych stron"))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nieprawidłowe nazwy korzystanych stron");
end;
else
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nieprawidłowe nazwy stron dołączanych do stron"))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nieprawidłowe nazwy stron dołączanych do stron");
end;
end;
end;
end;
function p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz)
local linkobiekttab=tablica_zmiennych.linkobiekt[nazwa_obiektu];
local parametry_modul=require("Module:Parametry");
if((not tablica_zmiennych.sprawdzenie_dokonane_linku)and(not parametry_modul["CzySąElementyNumerowaneTablicy"](linkobiekttab)))then
local parametry_modul=require("Module:Parametry");
local nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
local nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
local nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
local nazwa_artykulu=self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu;
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki)))then
p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
end;
tablica_zmiennych.sprawdzenie_dokonane_linku=true;
end;
table.insert(linkobiekttab,uchwyt_obiektu);
if(czy_pobierz)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then
tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={};
end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},});
end;
end;
function p.LinkowanieInnychStron(self,obiekt,kod,tablica_zmiennych, nazwa_obiektu, nazwa_przestrzeni_stare,nazwa_przestrzeni_ksiazki_stare,nazwa_ksiazki_stare,nazwa_artykulu_stare,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,czy_pobierz)
p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,function()
local parametry_modul=require("Module:Parametry");
if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(parametry_modul.CzyTak(nazwa_ksiazki))and(nazwa_artykulu))then
local tablica_zmiennych2={};
tablica_zmiennych2.tabela_listy_danych_analizy_ksiazki2={}
local stronicowyparser_zbieraniedanychstron_modul=require("Module:StronicowyParser/ZbieranieDanychStron")
local tabela_listy_danych_analizy_ksiazki0,tablica_zmiennych2,czy_inna=stronicowyparser_zbieraniedanychstron_modul.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false,tablica_zmiennych2);
if(tabela_listy_danych_analizy_ksiazki0)then
if((not czy_inna)or(not tablica_zmiennych2))then return;end;
local stronicowyparser_szablony_tekstu_modul=require("Module:StronicowyParser/SzablonyTekstu");
local JuzPoliczone=function()
if(czy_pobierz)then
stronicowyparser_szablony_tekstu_modul.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,false);
end;
if(not tablica_zmiennych2.dane_juz_policzone)then tablica_zmiennych2.dane_juz_policzone={};end;
local tab_nazwa_obiektu=tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu];
if(not tab_nazwa_obiektu)then
tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu]={};
tab_nazwa_obiektu=tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu];
end;
local tab_uchwyt=tab_nazwa_obiektu[uchwyt_obiektu];
if(tab_uchwyt)then
return true;
end;
tab_nazwa_obiektu[uchwyt_obiektu]=true;
return false;
end;
if(not parametry_modul.CzyTak(tabela_listy_danych_analizy_ksiazki0))then
local czy_policzone=JuzPoliczone();
if(czy_policzone)then
return;
end;
else
JuzPoliczone();
end;
stronicowyparser_szablony_tekstu_modul.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2);
p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu);
local czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2=tablica_zmiennych2.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu];
local CzyLink=czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2.CzyLink;
local ile_razy=0;
if(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2)then
for _, parametry_obiektu in ipairs(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2) do
if(parametry_obiektu[1]==uchwyt_obiektu)then
ile_razy=ile_razy+1;
if(ile_razy>1)then break;end;
end;
end;
end
if(ile_razy~=1)then
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"błędy uchwytów korzystanych stron",(CzyLink and "Link" or "Pobierz")..nazwa_obiektu))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"błędy uchwytów korzystanych stron",(CzyLink and "Link" or "Pobierz")..nazwa_obiektu);
end;
p.PusteParametryReferencji(self,nazwa_przestrzeni_stare,nazwa_przestrzeni_ksiazki_stare,nazwa_ksiazki_stare,nazwa_artykulu_stare, uchwyt_obiektu, nazwa_obiektu);
end;
else
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"błąd wewnętrzny modułu lua stronicowego parsera"))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"błąd wewnętrzny modułu lua stronicowego parsera");
end;
end;
else
p.PusteParametryReferencji(self,nazwa_przestrzeni_stare,nazwa_przestrzeni_ksiazki_stare,nazwa_ksiazki_stare,nazwa_artykulu_stare, uchwyt_obiektu, nazwa_obiektu);
end;
end);
end;
function p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,nazwa_obiektu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie,czy_pobierz)
local uchwyt_obiektu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1];
local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
----
local parametry_modul=require("Module:Parametry");
if(parametry_modul.CzyTak(uchwyt_obiektu))then
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
uchwyt_obiektu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(uchwyt_obiektu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or uchwyt_obiektu;
local html_modul=require("Module:Html");
uchwyt_obiektu=html_modul.DecodeHtml(uchwyt_obiektu,true);
end;
----
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
----
local UstalanieNazwStronyArtykularnegoWoluminu=function(czy_tak)
nazwa_przestrzeni=(czy_tak and nazwa_przestrzeni or nil) or self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
nazwa_przestrzeni_ksiazki=(czy_tak and nazwa_przestrzeni_ksiazki or nil) or self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
nazwa_ksiazki=(czy_tak and nazwa_ksiazki or nil) or self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
nazwa_artykulu=nazwa_artykulu or self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu;
end;
local nazwa_przestrzeni_stare,nazwa_przestrzeni_ksiazki_stare,nazwa_ksiazki_stare,nazwa_artykulu_stare=nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu;
local function ZbieranieDanychPrzezGeneralneLinkowanie()
if(parametry_modul.CzyTak(uchwyt_obiektu))then
nazwa_artykulu=(nazwa_artykulu or (nazwa_ksiazki and "" or nil));
if(nazwa_artykulu)then
if(nazwa_artykulu~="")then
if(not nazwa_ksiazki)then
UstalanieNazwStronyArtykularnegoWoluminu(false);
elseif(nazwa_ksiazki=="")then
p.PusteParametryReferencji(self,nazwa_przestrzeni_stare,nazwa_przestrzeni_ksiazki_stare,nazwa_ksiazki_stare,nazwa_artykulu_stare, uchwyt_obiektu, nazwa_obiektu);
return;
end;
elseif((nazwa_ksiazki)and(nazwa_ksiazki~=""))then
nazwa_artykulu="";
elseif((nazwa_ksiazki)and(nazwa_ksiazki==""))then
p.PusteParametryReferencji(self,nazwa_przestrzeni_stare,nazwa_przestrzeni_ksiazki_stare,nazwa_ksiazki_stare,nazwa_artykulu_stare, uchwyt_obiektu, nazwa_obiektu);
return;
else
UstalanieNazwStronyArtykularnegoWoluminu(false);
end;
if((nazwa_przestrzeni~=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)
or(nazwa_przestrzeni_ksiazki~=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu)
or(nazwa_ksiazki~=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu)
or(nazwa_artykulu~=self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu))then
p.LinkowanieInnychStron(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,nazwa_przestrzeni_stare,nazwa_przestrzeni_ksiazki_stare,nazwa_ksiazki_stare,nazwa_artykulu_stare,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,czy_pobierz);
else
p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz);
p.PusteParametryReferencji(self,nazwa_przestrzeni_stare,nazwa_przestrzeni_ksiazki_stare,nazwa_ksiazki_stare,nazwa_artykulu_stare, uchwyt_obiektu, nazwa_obiektu);
end;
else
UstalanieNazwStronyArtykularnegoWoluminu(true);
p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz)
p.PusteParametryReferencji(self,nazwa_przestrzeni_stare,nazwa_przestrzeni_ksiazki_stare,nazwa_ksiazki_stare,nazwa_artykulu_stare, uchwyt_obiektu, nazwa_obiektu);
end;
else
UstalanieNazwStronyArtykularnegoWoluminu(true);
if((uchwyt_obiektu)and(uchwyt_obiektu==""))then
p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,nil);
p.PusteParametryReferencji(self,nazwa_przestrzeni_stare,nazwa_przestrzeni_ksiazki_stare,nazwa_ksiazki_stare,nazwa_artykulu_stare, uchwyt_obiektu, nazwa_obiektu);
elseif(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak uchwytu",nazwa_obiektu))then
p.PusteParametryReferencji(self,nazwa_przestrzeni_stare,nazwa_przestrzeni_ksiazki_stare,nazwa_ksiazki_stare,nazwa_artykulu_stare, uchwyt_obiektu, nazwa_obiektu);
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak uchwytu",nazwa_obiektu);
end;
end;
end;
ZbieranieDanychPrzezGeneralneLinkowanie();
KtorySzablonMaZwracacKategorie(uchwyt_obiektu);
end;
return p;
02gd4cfblzo8n0rzvby0fkubrd3q1g0
558384
558379
2026-10-03T00:16:26Z
Persino
2851
558384
Scribunto
text/plain
local p={};
function p.UstawUchwytyWeTablicyBezNumeracji(self,tabela_elementow_strony_kodow,nazwa_obiektu,lista_dwuelementowa,kod)
if(lista_dwuelementowa)then
local tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu];
if(not tab_obiekt)then
tabela_elementow_strony_kodow[nazwa_obiektu]={};
tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu];
end;
local uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji;
if(not uchwyty_bez_numeracji)then
tab_obiekt.uchwyty_bez_numeracji={};
uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji;
end;
uchwyty_bez_numeracji[kod]=lista_dwuelementowa;
end;
end;
function p.WydobywanieUchwytuZeTablicyBezNumeracji(self,tabela_elementow_strony_kodow,nazwa_obiektu,kod)
local tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu];
if(not tab_obiekt)then return nil;end;
local uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji;
if(uchwyty_bez_numeracji)then
return uchwyty_bez_numeracji[kod];
end;
end;
function p.RozpatrywanieElementuUchwytuNumeracji(self,uchwyt_obiektu,tab_numer,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie)
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
uchwyt_obiektu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(uchwyt_obiektu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or uchwyt_obiektu;
local html_modul=require("Module:Html");
uchwyt_obiektu=html_modul.DecodeHtml(uchwyt_obiektu,true);
if(uchwyt_obiektu~="")then
KtorySzablonMaZwracacKategorie(uchwyt_obiektu);
local lista_dwuelementowa={};
lista_dwuelementowa[1]=uchwyt_obiektu;
local parametry_modul=require("Module:Parametry");
if((not tablica_zmiennych.sprawdzenie_dokonane_obiektu)and(not parametry_modul["CzySąElementyNumerowaneTablicy"](tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu])))then
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then
p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki,nazwa_artykulu);
end;
tablica_zmiennych.sprawdzenie_dokonane_obiektu=true;
end;
if(tab_numer)then
tab_numer[nazwa_obiektu]=tab_numer[nazwa_obiektu]+1;
local numer=tab_numer[nazwa_obiektu];
table.insert(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu],numer,lista_dwuelementowa);
else
table.insert(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu],lista_dwuelementowa);
end;
return lista_dwuelementowa;
end;
end;
function p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,nazwa_obiektu, czy_artykul_korzystany,numer_numeracji,tab_numer,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie)
local uchwyt_obiektu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[numer_numeracji];
if(uchwyt_obiektu)then
local lista_dwuelementowa=p.RozpatrywanieElementuUchwytuNumeracji(self,uchwyt_obiektu,tab_numer,tablica_zmiennych, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return lista_dwuelementowa;
end;
end;
function p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki))then
if(nazwa_artykulu=="")then return;end;
local czy_element_wystepuje_w_tablicy=false;
local tablica_przestrzeni_wszystkiego=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron;
if(tablica_przestrzeni_wszystkiego)then
local tabela_przestrzeni_ksiazek=tablica_przestrzeni_wszystkiego[nazwa_przestrzeni];
if(tabela_przestrzeni_ksiazek)then
local tabela_ksiazek=tabela_przestrzeni_ksiazek[nazwa_przestrzeni_ksiazki]
if(tabela_ksiazek)then
local tab_ksiazki=tabela_ksiazek[nazwa_ksiazki];
if(tab_ksiazki)then
if(tab_ksiazki.spis)then
--czy_lista_niepusta=true;
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
for _,tab_value in ipairs(tab_ksiazki.spis)do
if(tab_value[2])then
for _,artykul_w_bazie_element in ipairs(tab_value[2])do
local artykul_w_bazie=artykul_w_bazie_element[1];
local czy_table=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(artykul_w_bazie);
artykul_w_bazie=czy_table and artykul_w_bazie[1] or artykul_w_bazie;
local artykul_bez_naglowka_w_bazie=stronicowyparser_potrzebne_modul.TylkoNazwaStronyWoluminuZTabeliPublikacji(artykul_w_bazie);
if(artykul_bez_naglowka_w_bazie==nazwa_artykulu)then
czy_element_wystepuje_w_tablicy=true;
break;
end;
end;
end;
if(czy_element_wystepuje_w_tablicy)then break;end;
end;
end;
end;
end;
end;
end;
if(not czy_element_wystepuje_w_tablicy)then
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni~=nazwa_przestrzeni)
or(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu~=nazwa_przestrzeni_ksiazki)
or(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu~=nazwa_ksiazki)
or(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu~=nazwa_artykulu))then
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki, nazwa_ksiazki)))then
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"brak spisów treści do dołączonych stron",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
end;
elseif(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak spisu treści do korzystanych stron"))then
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak spisu treści do korzystanych stron");
end;
end;
end;
end;
end;
function p.PusteParametryReferencji(self, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu)
local czy_ksiazka_z_tylko_odstepami_lub_pusty=(nazwa_ksiazki)and (nazwa_ksiazki=="") or nil;
local czy_artykul_z_tylko_odstepami_lub_pusty=(nazwa_artykulu)and (nazwa_artykulu=="") or nil;
local czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty=(uchwyt_obiektu)and (uchwyt_obiektu=="") or nil;
----
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
----
if(czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,1))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,1);
end;
end;
if(czy_artykul_z_tylko_odstepami_lub_pusty)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,2))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,2);
end;
end;
if(czy_ksiazka_z_tylko_odstepami_lub_pusty)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,3))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,3);
end;
end;
end;
function p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,bezuchwytowe)
local nazwa_artykulu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[bezuchwytowe and 1 or 2];
local pelna_nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[bezuchwytowe and 2 or 3];
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local nazwa_artykulu_linku=nazwa_artykulu and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(nazwa_artykulu,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or nazwa_artykulu;
local pelna_nazwa_ksiazki_linku=pelna_nazwa_ksiazki and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(pelna_nazwa_ksiazki,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or pelna_nazwa_ksiazki
tabela_parametrow_szablonu["nazwa artykułu"]=nazwa_artykulu_linku;tabela_parametrow_szablonu[bezuchwytowe and 1 or 2]=nil;
tabela_parametrow_szablonu["nazwa książki"]=pelna_nazwa_ksiazki_linku;tabela_parametrow_szablonu[bezuchwytowe and 2 or 3]=nil;
nazwa_artykulu=nazwa_artykulu_linku;
pelna_nazwa_ksiazki=pelna_nazwa_ksiazki_linku;
local parametry_modul=require("Module:Parametry");
local nazwy_modul=require("Module:Nazwy");
local html_modul=require("Module:Html");
if(nazwa_artykulu)then
nazwa_artykulu=html_modul.DecodeHtml(nazwa_artykulu,true);
local techniczne_modul=require("Module:Techniczne");
nazwa_artykulu=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=nazwa_artykulu,[2]="",};
end;
local nazwa_ksiazki;local nazwa_przestrzeni_ksiazki;local nazwa_przestrzeni;
if(pelna_nazwa_ksiazki)then
pelna_nazwa_ksiazki=html_modul.DecodeHtml(pelna_nazwa_ksiazki,true);
local techniczne_modul=require("Module:Techniczne");
pelna_nazwa_ksiazki=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=pelna_nazwa_ksiazki,[2]=nazwa_modulu_aktualna_czy_biezaca,};
----
local tabela_nazw={};
local ksiazkowe_modul=require("Module:Książkowe");
pelna_nazwa_ksiazki=ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](pelna_nazwa_ksiazki,tabela_nazw);
nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](pelna_nazwa_ksiazki,tabela_nazw);
nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw);
nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and (nazwy_modul["SUBNAZWAKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw)) or (nazwy_modul["NAZWAKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw)));
--pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
end;
return nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu;
end;
function p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie,czy_inna_wartosc_tekst,tab_nazwy)
local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu;
if(not czy_inna_wartosc_tekst)then
nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true);
else
nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=tab_nazwy[1],tab_nazwy[2],tab_nazwy[3],tab_nazwy[4];
end;
--local ksiazkowe_modul=require("Module:Książkowe");
--pelna_nazwa_ksiazki=pelna_nazwa_ksiazki or ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"]();
--nazwa_artykulu=nazwa_artykulu or ksiazkowe_modul["NazwaArtykułuKsiążki"]();
if((nazwa_przestrzeni)or(nazwa_przestrzeni_ksiazki)or(nazwa_ksiazki)or(nazwa_artykulu))then
local tabela_nazw={};
local ksiazkowe_modul=require("Module:Książkowe");
local nazwa_przestrzeni=nazwa_przestrzeni or ksiazkowe_modul["NazwaPrzestrzeni"](nil,tabela_nazw);
local nazwa_przestrzeni_ksiazki=nazwa_przestrzeni_ksiazki or ksiazkowe_modul["NazwaPrzestrzeniKsiążki"](nil,tabela_nazw);
local nazwa_ksiazki=nazwa_ksiazki or ksiazkowe_modul["NazwaTytułuKsiążki"](nil,tabela_nazw);
local nazwa_artykulu=nazwa_artykulu or ksiazkowe_modul["NazwaArtykułuKsiążki"](nil,tabela_nazw);
if(KtorySzablonMaZwracacKategorie)then KtorySzablonMaZwracacKategorie();end;
local stronicowyparser_zbieraniedanychstron_modul=require("Module:StronicowyParser/ZbieranieDanychStron");
local tabela_listy_danych_analizy_ksiazki=stronicowyparser_zbieraniedanychstron_modul.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false);
end;
end;
function p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_szablon_pudelkowy_strony_zbiorczej,KtorySzablonMaZwracacKategorie)
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"];
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"];
if((not nazwa_przestrzeni)and(not nazwa_jednostki))then return;end;
local parametry_modul=require("Module:Parametry");
if((nazwa_jednostki) and (nazwa_jednostki==""))then return;end;
local szablonowe_modul=require("Module:Szablonowe");
if((nazwa_jednostki and mw.ustring.match(nazwa_jednostki,szablonowe_modul.NormaWzoruKodowaniaTekstu()))
or (nazwa_przestrzeni and mw.ustring.match(nazwa_przestrzeni,szablonowe_modul.NormaWzoruKodowaniaTekstu()))
)then return;end;
local nazwy_modul=require("Module:Nazwy");
local ksiazkowe_modul=require("Module:Książkowe");
local html_modul=require("Module:Html");
if(nazwa_jednostki)then
nazwa_jednostki=html_modul.DecodeHtml(nazwa_jednostki,true);
end;
local tabela_nazw_art={};
local nazwa_jednostki=(nazwa_jednostki
and mw.ustring.gsub(nazwa_jednostki,"^([^#]*)#(.*)$","%1")
or nil
) or ksiazkowe_modul["NazwaArtykułu"](nil,tabela_nazw_art);
if(nazwa_przestrzeni)then
nazwa_przestrzeni=html_modul.DecodeHtml(nazwa_przestrzeni,true);
end;
local nazwa_przestrzeni=nazwa_przestrzeni or ksiazkowe_modul["NazwaPrzestrzeni"](nil,tabela_nazw_art);
local strona=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki;
local techniczne_modul=require("Module:Techniczne");
strona=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=strona,[2]=self.nazwa_modulu_biezaca,};
--strona=ksiazkowe_modul["PEŁNANAZWASTRONY"](strona);
local tabela_nazw={};
local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw);
local nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw);
local nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and (nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw)) or (nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw)));
local nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw);
if(KtorySzablonMaZwracacKategorie)then KtorySzablonMaZwracacKategorie();end;
local stronicowyparser_zbieraniedanychstron_modul=require("Module:StronicowyParser/ZbieranieDanychStron");
local tabela_listy_danych_analizy_ksiazki=stronicowyparser_zbieraniedanychstron_modul.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false,nil,czy_szablon_pudelkowy_strony_zbiorczej);
end;
function p.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
local nazwy_modul=require("Module:Nazwy");
local czy_inna_wartosc_tekst=true;
if((nazwa_artykulu)and(nazwa_ksiazki))then
--local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni;
tabela_parametrow_szablonu["nazwa jednostki"]=nazwy_modul["NazwaModułu"]("",nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nil,czy_inna_wartosc_tekst,{nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,});
elseif((nazwa_artykulu)and(not nazwa_ksiazki))then
local ksiazkowe_modul=require("Module:Książkowe");
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ksiazkowe_modul["NazwaPrzestrzeni"]();
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or (ksiazkowe_modul["NazwaKsiążki"]()..((nazwa_artykulu~="") and ("/"..nazwa_artykulu) or ""));
----
tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni;
tabela_parametrow_szablonu["nazwa jednostki"]=nazwa_jednostki;
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nil,czy_inna_wartosc_tekst,{nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,});
elseif((not nazwa_artykulu)and(nazwa_ksiazki))then
local ksiazkowe_modul=require("Module:Książkowe");
local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ksiazkowe_modul["NazwaPrzestrzeni"]();
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or ksiazkowe_modul["NazwaKsiążki"]();
----
tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni;
tabela_parametrow_szablonu["nazwa jednostki"]=nazwa_jednostki;
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nil,czy_inna_wartosc_tekst,{nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,});
else
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nil,czy_inna_wartosc_tekst,{nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,});
end;
end;
function p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,__FUNKCJA_SPRAWDZANIE)
local pudelko_modul=require("Module:Pudełko");
if(((nazwa_przestrzeni)and(((nazwa_przestrzeni~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_przestrzeni)))or(nazwa_przestrzeni=="")))
and((nazwa_przestrzeni_ksiazki)and(((nazwa_przestrzeni_ksiazki~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_przestrzeni_ksiazki)))or(nazwa_przestrzeni_ksiazki=="")))
and((nazwa_ksiazki)and(nazwa_ksiazki~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_ksiazki)))
and((nazwa_artykulu)and(((nazwa_artykulu~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_artykulu)))or(nazwa_artykulu=="")))
)then
if(__FUNKCJA_SPRAWDZANIE)then
__FUNKCJA_SPRAWDZANIE(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu);
end;
else
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni)
and(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu==nazwa_przestrzeni_ksiazki)
and(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu==nazwa_ksiazki)
and(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu))then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nieprawidłowe nazwy korzystanych stron"))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nieprawidłowe nazwy korzystanych stron");
end;
else
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nieprawidłowe nazwy stron dołączanych do stron"))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nieprawidłowe nazwy stron dołączanych do stron");
end;
end;
end;
end;
function p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz)
local linkobiekttab=tablica_zmiennych.linkobiekt[nazwa_obiektu];
local parametry_modul=require("Module:Parametry");
if((not tablica_zmiennych.sprawdzenie_dokonane_linku)and(not parametry_modul["CzySąElementyNumerowaneTablicy"](linkobiekttab)))then
local parametry_modul=require("Module:Parametry");
local nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
local nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
local nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
local nazwa_artykulu=self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu;
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki)))then
p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
end;
tablica_zmiennych.sprawdzenie_dokonane_linku=true;
end;
table.insert(linkobiekttab,uchwyt_obiektu);
if(czy_pobierz)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then
tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={};
end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},});
end;
end;
function p.LinkowanieInnychStron(self,obiekt,kod,tablica_zmiennych, nazwa_obiektu, nazwa_przestrzeni_stare,nazwa_przestrzeni_ksiazki_stare,nazwa_ksiazki_stare,nazwa_artykulu_stare,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,czy_pobierz)
p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,function()
local parametry_modul=require("Module:Parametry");
if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(parametry_modul.CzyTak(nazwa_ksiazki))and(nazwa_artykulu))then
local tablica_zmiennych2={};
tablica_zmiennych2.tabela_listy_danych_analizy_ksiazki2={}
local stronicowyparser_zbieraniedanychstron_modul=require("Module:StronicowyParser/ZbieranieDanychStron")
local tabela_listy_danych_analizy_ksiazki0,tablica_zmiennych2,czy_inna=stronicowyparser_zbieraniedanychstron_modul.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false,tablica_zmiennych2);
if(tabela_listy_danych_analizy_ksiazki0)then
if((not czy_inna)or(not tablica_zmiennych2))then return;end;
local stronicowyparser_szablony_tekstu_modul=require("Module:StronicowyParser/SzablonyTekstu");
local JuzPoliczone=function()
if(czy_pobierz)then
stronicowyparser_szablony_tekstu_modul.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,false);
end;
if(not tablica_zmiennych2.dane_juz_policzone)then tablica_zmiennych2.dane_juz_policzone={};end;
local tab_nazwa_obiektu=tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu];
if(not tab_nazwa_obiektu)then
tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu]={};
tab_nazwa_obiektu=tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu];
end;
local tab_uchwyt=tab_nazwa_obiektu[uchwyt_obiektu];
if(tab_uchwyt)then
return true;
end;
tab_nazwa_obiektu[uchwyt_obiektu]=true;
return false;
end;
if(not parametry_modul.CzyTak(tabela_listy_danych_analizy_ksiazki0))then
local czy_policzone=JuzPoliczone();
if(czy_policzone)then
return;
end;
else
JuzPoliczone();
end;
stronicowyparser_szablony_tekstu_modul.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2);
p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu);
local czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2=tablica_zmiennych2.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu];
local CzyLink=czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2.CzyLink;
local ile_razy=0;
if(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2)then
for _, parametry_obiektu in ipairs(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2) do
if(parametry_obiektu[1]==uchwyt_obiektu)then
ile_razy=ile_razy+1;
if(ile_razy>1)then break;end;
end;
end;
end
if(ile_razy~=1)then
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"błędy uchwytów korzystanych stron",(CzyLink and "Link" or "Pobierz")..nazwa_obiektu))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"błędy uchwytów korzystanych stron",(CzyLink and "Link" or "Pobierz")..nazwa_obiektu);
end;
p.PusteParametryReferencji(self,nazwa_przestrzeni_stare,nazwa_przestrzeni_ksiazki_stare,nazwa_ksiazki_stare,nazwa_artykulu_stare, uchwyt_obiektu, nazwa_obiektu);
end;
else
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"błąd wewnętrzny modułu lua stronicowego parsera"))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"błąd wewnętrzny modułu lua stronicowego parsera");
end;
end;
else
p.PusteParametryReferencji(self,nazwa_przestrzeni_stare,nazwa_przestrzeni_ksiazki_stare,nazwa_ksiazki_stare,nazwa_artykulu_stare, uchwyt_obiektu, nazwa_obiektu);
end;
end);
end;
function p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,nazwa_obiektu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie,czy_pobierz)
local uchwyt_obiektu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1];
local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
----
local parametry_modul=require("Module:Parametry");
if(parametry_modul.CzyTak(uchwyt_obiektu))then
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
uchwyt_obiektu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(uchwyt_obiektu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or uchwyt_obiektu;
local html_modul=require("Module:Html");
uchwyt_obiektu=html_modul.DecodeHtml(uchwyt_obiektu,true);
end;
----
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
----
local UstalanieNazwStronyArtykularnegoWoluminu=function(czy_tak)
nazwa_przestrzeni=(czy_tak and nazwa_przestrzeni or nil) or self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
nazwa_przestrzeni_ksiazki=(czy_tak and nazwa_przestrzeni_ksiazki or nil) or self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
nazwa_ksiazki=(czy_tak and nazwa_ksiazki or nil) or self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
nazwa_artykulu=nazwa_artykulu or self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu;
end;
local nazwa_przestrzeni_stare,nazwa_przestrzeni_ksiazki_stare,nazwa_ksiazki_stare,nazwa_artykulu_stare=nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu;
local function ZbieranieDanychPrzezGeneralneLinkowanie()
if(parametry_modul.CzyTak(uchwyt_obiektu))then
nazwa_artykulu=(nazwa_artykulu or (nazwa_ksiazki and "" or nil));
if(nazwa_artykulu)then
if(nazwa_artykulu~="")then
if(not nazwa_ksiazki)then
UstalanieNazwStronyArtykularnegoWoluminu(false);
elseif(nazwa_ksiazki=="")then
p.PusteParametryReferencji(self,nazwa_przestrzeni_stare,nazwa_przestrzeni_ksiazki_stare,nazwa_ksiazki_stare,nazwa_artykulu_stare, uchwyt_obiektu, nazwa_obiektu);
return;
end;
elseif((nazwa_ksiazki)and(nazwa_ksiazki~=""))then
nazwa_artykulu="";
elseif((nazwa_ksiazki)and(nazwa_ksiazki==""))then
p.PusteParametryReferencji(self,nazwa_przestrzeni_stare,nazwa_przestrzeni_ksiazki_stare,nazwa_ksiazki_stare,nazwa_artykulu_stare, uchwyt_obiektu, nazwa_obiektu);
return;
else
UstalanieNazwStronyArtykularnegoWoluminu(false);
end;
if((nazwa_przestrzeni~=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)
or(nazwa_przestrzeni_ksiazki~=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu)
or(nazwa_ksiazki~=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu)
or(nazwa_artykulu~=self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu))then
p.LinkowanieInnychStron(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,nazwa_przestrzeni_stare,nazwa_przestrzeni_ksiazki_stare,nazwa_ksiazki_stare,nazwa_artykulu_stare,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,czy_pobierz);
else
p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz);
p.PusteParametryReferencji(self,nazwa_przestrzeni_stare,nazwa_przestrzeni_ksiazki_stare,nazwa_ksiazki_stare,nazwa_artykulu_stare, uchwyt_obiektu, nazwa_obiektu);
end;
else
UstalanieNazwStronyArtykularnegoWoluminu(true);
p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz)
p.PusteParametryReferencji(self,nazwa_przestrzeni_stare,nazwa_przestrzeni_ksiazki_stare,nazwa_ksiazki_stare,nazwa_artykulu_stare, uchwyt_obiektu, nazwa_obiektu);
end;
else
UstalanieNazwStronyArtykularnegoWoluminu(true);
if((uchwyt_obiektu)and(uchwyt_obiektu==""))then
p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,nil);
p.PusteParametryReferencji(self,nazwa_przestrzeni_stare,nazwa_przestrzeni_ksiazki_stare,nazwa_ksiazki_stare,nazwa_artykulu_stare, uchwyt_obiektu, nazwa_obiektu);
elseif(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak uchwytu",nazwa_obiektu))then
p.PusteParametryReferencji(self,nazwa_przestrzeni_stare,nazwa_przestrzeni_ksiazki_stare,nazwa_ksiazki_stare,nazwa_artykulu_stare, uchwyt_obiektu, nazwa_obiektu);
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak uchwytu",nazwa_obiektu);
end;
end;
end;
ZbieranieDanychPrzezGeneralneLinkowanie();
KtorySzablonMaZwracacKategorie(uchwyt_obiektu);
end;
return p;
hgaxzbflosb9v2jkoxf6w2vqujjjq3i
558390
558384
2026-10-03T08:22:48Z
Persino
2851
558390
Scribunto
text/plain
local p={};
function p.UstawUchwytyWeTablicyBezNumeracji(self,tabela_elementow_strony_kodow,nazwa_obiektu,lista_dwuelementowa,kod)
if(lista_dwuelementowa)then
local tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu];
if(not tab_obiekt)then
tabela_elementow_strony_kodow[nazwa_obiektu]={};
tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu];
end;
local uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji;
if(not uchwyty_bez_numeracji)then
tab_obiekt.uchwyty_bez_numeracji={};
uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji;
end;
uchwyty_bez_numeracji[kod]=lista_dwuelementowa;
end;
end;
function p.WydobywanieUchwytuZeTablicyBezNumeracji(self,tabela_elementow_strony_kodow,nazwa_obiektu,kod)
local tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu];
if(not tab_obiekt)then return nil;end;
local uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji;
if(uchwyty_bez_numeracji)then
return uchwyty_bez_numeracji[kod];
end;
end;
function p.RozpatrywanieElementuUchwytuNumeracji(self,uchwyt_obiektu,tab_numer,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie)
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
uchwyt_obiektu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(uchwyt_obiektu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or uchwyt_obiektu;
local html_modul=require("Module:Html");
uchwyt_obiektu=html_modul.DecodeHtml(uchwyt_obiektu,true);
local parametry_modul=require("Module:Parametry");
if(parametry_modul.CzyTak(uchwyt_obiektu))then
KtorySzablonMaZwracacKategorie(uchwyt_obiektu);
local lista_dwuelementowa={};
lista_dwuelementowa[1]=uchwyt_obiektu;
local parametry_modul=require("Module:Parametry");
if((not tablica_zmiennych.sprawdzenie_dokonane_obiektu)and(not parametry_modul["CzySąElementyNumerowaneTablicy"](tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu])))then
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then
p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki,nazwa_artykulu);
end;
tablica_zmiennych.sprawdzenie_dokonane_obiektu=true;
end;
if(tab_numer)then
tab_numer[nazwa_obiektu]=tab_numer[nazwa_obiektu]+1;
local numer=tab_numer[nazwa_obiektu];
table.insert(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu],numer,lista_dwuelementowa);
else
table.insert(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu],lista_dwuelementowa);
end;
return lista_dwuelementowa;
end;
end;
function p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,nazwa_obiektu, czy_artykul_korzystany,numer_numeracji,tab_numer,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie)
local uchwyt_obiektu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[numer_numeracji];
local parametry_modul=require("Module:Parametry");
if(parametry_modul["CzyTakCiąg"](uchwyt_obiektu))then
local lista_dwuelementowa=p.RozpatrywanieElementuUchwytuNumeracji(self,uchwyt_obiektu,tab_numer,tablica_zmiennych, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return lista_dwuelementowa;
end;
end;
function p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki))then
if(nazwa_artykulu=="")then return;end;
local czy_element_wystepuje_w_tablicy=false;
local tablica_przestrzeni_wszystkiego=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron;
if(tablica_przestrzeni_wszystkiego)then
local tabela_przestrzeni_ksiazek=tablica_przestrzeni_wszystkiego[nazwa_przestrzeni];
if(tabela_przestrzeni_ksiazek)then
local tabela_ksiazek=tabela_przestrzeni_ksiazek[nazwa_przestrzeni_ksiazki]
if(tabela_ksiazek)then
local tab_ksiazki=tabela_ksiazek[nazwa_ksiazki];
if(tab_ksiazki)then
if(tab_ksiazki.spis)then
--czy_lista_niepusta=true;
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
for _,tab_value in ipairs(tab_ksiazki.spis)do
if(tab_value[2])then
for _,artykul_w_bazie_element in ipairs(tab_value[2])do
local artykul_w_bazie=artykul_w_bazie_element[1];
local czy_table=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(artykul_w_bazie);
artykul_w_bazie=czy_table and artykul_w_bazie[1] or artykul_w_bazie;
local artykul_bez_naglowka_w_bazie=stronicowyparser_potrzebne_modul.TylkoNazwaStronyWoluminuZTabeliPublikacji(artykul_w_bazie);
if(artykul_bez_naglowka_w_bazie==nazwa_artykulu)then
czy_element_wystepuje_w_tablicy=true;
break;
end;
end;
end;
if(czy_element_wystepuje_w_tablicy)then break;end;
end;
end;
end;
end;
end;
end;
if(not czy_element_wystepuje_w_tablicy)then
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni~=nazwa_przestrzeni)
or(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu~=nazwa_przestrzeni_ksiazki)
or(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu~=nazwa_ksiazki)
or(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu~=nazwa_artykulu))then
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki, nazwa_ksiazki)))then
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"brak spisów treści do dołączonych stron",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
end;
elseif(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak spisu treści do korzystanych stron"))then
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak spisu treści do korzystanych stron");
end;
end;
end;
end;
end;
function p.PusteParametryReferencji(self, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu)
local czy_ksiazka_z_tylko_odstepami_lub_pusty=(nazwa_ksiazki)and (nazwa_ksiazki=="") or nil;
local czy_artykul_z_tylko_odstepami_lub_pusty=(nazwa_artykulu)and (nazwa_artykulu=="") or nil;
local czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty=(uchwyt_obiektu)and (uchwyt_obiektu=="") or nil;
----
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
----
if(czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,1))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,1);
end;
end;
if(czy_artykul_z_tylko_odstepami_lub_pusty)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,2))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,2);
end;
end;
if(czy_ksiazka_z_tylko_odstepami_lub_pusty)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,3))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,3);
end;
end;
end;
function p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,bezuchwytowe)
local nazwa_artykulu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[bezuchwytowe and 1 or 2];
local pelna_nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[bezuchwytowe and 2 or 3];
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local nazwa_artykulu_linku;local pelna_nazwa_ksiazki_linku;
local status;
if(nazwa_artykulu)then
nazwa_artykulu_linku=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(nazwa_artykulu,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true);
status=status or nazwa_artykulu_linku;
nazwa_artykulu_linku=nazwa_artykulu_linku or nazwa_artykulu;
end;
if(pelna_nazwa_ksiazki)then
pelna_nazwa_ksiazki_linku=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(pelna_nazwa_ksiazki,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true);
status=status or pelna_nazwa_ksiazki_linku;
pelna_nazwa_ksiazki_linku=pelna_nazwa_ksiazki_linku or pelna_nazwa_ksiazki;
end;
if(status)then
tabela_parametrow_szablonu["nazwa artykułu"]=nazwa_artykulu_linku;tabela_parametrow_szablonu[bezuchwytowe and 1 or 2]=nil;
tabela_parametrow_szablonu["nazwa książki"]=pelna_nazwa_ksiazki_linku;tabela_parametrow_szablonu[bezuchwytowe and 2 or 3]=nil;
nazwa_artykulu=nazwa_artykulu_linku;
pelna_nazwa_ksiazki=pelna_nazwa_ksiazki_linku;
end;
local parametry_modul=require("Module:Parametry");
local nazwy_modul=require("Module:Nazwy");
local html_modul=require("Module:Html");
if(nazwa_artykulu)then
nazwa_artykulu=html_modul.DecodeHtml(nazwa_artykulu,true);
local techniczne_modul=require("Module:Techniczne");
nazwa_artykulu=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=nazwa_artykulu,[2]="",};
end;
local nazwa_ksiazki;local nazwa_przestrzeni_ksiazki;local nazwa_przestrzeni;
if(pelna_nazwa_ksiazki)then
pelna_nazwa_ksiazki=html_modul.DecodeHtml(pelna_nazwa_ksiazki,true);
local techniczne_modul=require("Module:Techniczne");
pelna_nazwa_ksiazki=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=pelna_nazwa_ksiazki,[2]=nazwa_modulu_aktualna_czy_biezaca,};
----
local tabela_nazw={};
local ksiazkowe_modul=require("Module:Książkowe");
pelna_nazwa_ksiazki=ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](pelna_nazwa_ksiazki,tabela_nazw);
nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](pelna_nazwa_ksiazki,tabela_nazw);
nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw);
nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and (nazwy_modul["SUBNAZWAKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw)) or (nazwy_modul["NAZWAKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw)));
--pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
end;
return nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu;
end;
function p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie,czy_inna_wartosc_tekst,tab_nazwy)
local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu;
if(not czy_inna_wartosc_tekst)then
nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true);
else
nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=tab_nazwy[1],tab_nazwy[2],tab_nazwy[3],tab_nazwy[4];
end;
--local ksiazkowe_modul=require("Module:Książkowe");
--pelna_nazwa_ksiazki=pelna_nazwa_ksiazki or ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"]();
--nazwa_artykulu=nazwa_artykulu or ksiazkowe_modul["NazwaArtykułuKsiążki"]();
if((nazwa_przestrzeni)or(nazwa_przestrzeni_ksiazki)or(nazwa_ksiazki)or(nazwa_artykulu))then
local tabela_nazw={};
local ksiazkowe_modul=require("Module:Książkowe");
local nazwa_przestrzeni=nazwa_przestrzeni or ksiazkowe_modul["NazwaPrzestrzeni"](nil,tabela_nazw);
local nazwa_przestrzeni_ksiazki=nazwa_przestrzeni_ksiazki or ksiazkowe_modul["NazwaPrzestrzeniKsiążki"](nil,tabela_nazw);
local nazwa_ksiazki=nazwa_ksiazki or ksiazkowe_modul["NazwaTytułuKsiążki"](nil,tabela_nazw);
local nazwa_artykulu=nazwa_artykulu or ksiazkowe_modul["NazwaArtykułuKsiążki"](nil,tabela_nazw);
if(KtorySzablonMaZwracacKategorie)then KtorySzablonMaZwracacKategorie();end;
local stronicowyparser_zbieraniedanychstron_modul=require("Module:StronicowyParser/ZbieranieDanychStron");
local tabela_listy_danych_analizy_ksiazki=stronicowyparser_zbieraniedanychstron_modul.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false);
end;
end;
function p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_szablon_pudelkowy_strony_zbiorczej,KtorySzablonMaZwracacKategorie)
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"];
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"];
if((not nazwa_przestrzeni)and(not nazwa_jednostki))then return;end;
local parametry_modul=require("Module:Parametry");
if((nazwa_jednostki) and (nazwa_jednostki==""))then return;end;
local szablonowe_modul=require("Module:Szablonowe");
if((nazwa_jednostki and mw.ustring.match(nazwa_jednostki,szablonowe_modul.NormaWzoruKodowaniaTekstu()))
or (nazwa_przestrzeni and mw.ustring.match(nazwa_przestrzeni,szablonowe_modul.NormaWzoruKodowaniaTekstu()))
)then return;end;
local nazwy_modul=require("Module:Nazwy");
local ksiazkowe_modul=require("Module:Książkowe");
local html_modul=require("Module:Html");
if(nazwa_jednostki)then
nazwa_jednostki=html_modul.DecodeHtml(nazwa_jednostki,true);
end;
local tabela_nazw_art={};
local nazwa_jednostki=(nazwa_jednostki
and mw.ustring.gsub(nazwa_jednostki,"^([^#]*)#(.*)$","%1")
or nil
) or ksiazkowe_modul["NazwaArtykułu"](nil,tabela_nazw_art);
if(nazwa_przestrzeni)then
nazwa_przestrzeni=html_modul.DecodeHtml(nazwa_przestrzeni,true);
end;
local nazwa_przestrzeni=nazwa_przestrzeni or ksiazkowe_modul["NazwaPrzestrzeni"](nil,tabela_nazw_art);
local strona=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki;
local techniczne_modul=require("Module:Techniczne");
strona=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=strona,[2]=self.nazwa_modulu_biezaca,};
--strona=ksiazkowe_modul["PEŁNANAZWASTRONY"](strona);
local tabela_nazw={};
local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw);
local nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw);
local nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and (nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw)) or (nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw)));
local nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw);
if(KtorySzablonMaZwracacKategorie)then KtorySzablonMaZwracacKategorie();end;
local stronicowyparser_zbieraniedanychstron_modul=require("Module:StronicowyParser/ZbieranieDanychStron");
local tabela_listy_danych_analizy_ksiazki=stronicowyparser_zbieraniedanychstron_modul.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false,nil,czy_szablon_pudelkowy_strony_zbiorczej);
end;
function p.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
local nazwy_modul=require("Module:Nazwy");
local czy_inna_wartosc_tekst=true;
if((nazwa_artykulu)and(nazwa_ksiazki))then
--local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni;
tabela_parametrow_szablonu["nazwa jednostki"]=nazwy_modul["NazwaModułu"]("",nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nil,czy_inna_wartosc_tekst,{nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,});
elseif((nazwa_artykulu)and(not nazwa_ksiazki))then
local ksiazkowe_modul=require("Module:Książkowe");
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ksiazkowe_modul["NazwaPrzestrzeni"]();
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or (ksiazkowe_modul["NazwaKsiążki"]()..((nazwa_artykulu~="") and ("/"..nazwa_artykulu) or ""));
----
tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni;
tabela_parametrow_szablonu["nazwa jednostki"]=nazwa_jednostki;
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nil,czy_inna_wartosc_tekst,{nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,});
elseif((not nazwa_artykulu)and(nazwa_ksiazki))then
local ksiazkowe_modul=require("Module:Książkowe");
local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ksiazkowe_modul["NazwaPrzestrzeni"]();
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or ksiazkowe_modul["NazwaKsiążki"]();
----
tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni;
tabela_parametrow_szablonu["nazwa jednostki"]=nazwa_jednostki;
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nil,czy_inna_wartosc_tekst,{nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,});
else
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nil,czy_inna_wartosc_tekst,{nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,});
end;
end;
function p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,__FUNKCJA_SPRAWDZANIE)
local pudelko_modul=require("Module:Pudełko");
if(((nazwa_przestrzeni)and(((nazwa_przestrzeni~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_przestrzeni)))or(nazwa_przestrzeni=="")))
and((nazwa_przestrzeni_ksiazki)and(((nazwa_przestrzeni_ksiazki~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_przestrzeni_ksiazki)))or(nazwa_przestrzeni_ksiazki=="")))
and((nazwa_ksiazki)and(nazwa_ksiazki~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_ksiazki)))
and((nazwa_artykulu)and(((nazwa_artykulu~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_artykulu)))or(nazwa_artykulu=="")))
)then
if(__FUNKCJA_SPRAWDZANIE)then
__FUNKCJA_SPRAWDZANIE(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu);
end;
else
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni)
and(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu==nazwa_przestrzeni_ksiazki)
and(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu==nazwa_ksiazki)
and(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu))then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nieprawidłowe nazwy korzystanych stron"))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nieprawidłowe nazwy korzystanych stron");
end;
else
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nieprawidłowe nazwy stron dołączanych do stron"))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nieprawidłowe nazwy stron dołączanych do stron");
end;
end;
end;
end;
function p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz)
local linkobiekttab=tablica_zmiennych.linkobiekt[nazwa_obiektu];
local parametry_modul=require("Module:Parametry");
if((not tablica_zmiennych.sprawdzenie_dokonane_linku)and(not parametry_modul["CzySąElementyNumerowaneTablicy"](linkobiekttab)))then
local parametry_modul=require("Module:Parametry");
local nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
local nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
local nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
local nazwa_artykulu=self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu;
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki)))then
p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
end;
tablica_zmiennych.sprawdzenie_dokonane_linku=true;
end;
table.insert(linkobiekttab,uchwyt_obiektu);
if(czy_pobierz)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then
tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={};
end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},});
end;
end;
function p.LinkowanieInnychStron(self,obiekt,kod,tablica_zmiennych, nazwa_obiektu, nazwa_przestrzeni_stare,nazwa_przestrzeni_ksiazki_stare,nazwa_ksiazki_stare,nazwa_artykulu_stare,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,czy_pobierz)
p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,function()
local parametry_modul=require("Module:Parametry");
if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(parametry_modul.CzyTak(nazwa_ksiazki))and(nazwa_artykulu))then
local tablica_zmiennych2={};
tablica_zmiennych2.tabela_listy_danych_analizy_ksiazki2={}
local stronicowyparser_zbieraniedanychstron_modul=require("Module:StronicowyParser/ZbieranieDanychStron")
local tabela_listy_danych_analizy_ksiazki0,tablica_zmiennych2,czy_inna=stronicowyparser_zbieraniedanychstron_modul.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false,tablica_zmiennych2);
if(tabela_listy_danych_analizy_ksiazki0)then
if((not czy_inna)or(not tablica_zmiennych2))then return;end;
local stronicowyparser_szablony_tekstu_modul=require("Module:StronicowyParser/SzablonyTekstu");
local JuzPoliczone=function()
if(czy_pobierz)then
stronicowyparser_szablony_tekstu_modul.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,false);
end;
if(not tablica_zmiennych2.dane_juz_policzone)then tablica_zmiennych2.dane_juz_policzone={};end;
local tab_nazwa_obiektu=tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu];
if(not tab_nazwa_obiektu)then
tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu]={};
tab_nazwa_obiektu=tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu];
end;
local tab_uchwyt=tab_nazwa_obiektu[uchwyt_obiektu];
if(tab_uchwyt)then
return true;
end;
tab_nazwa_obiektu[uchwyt_obiektu]=true;
return false;
end;
if(not parametry_modul.CzyTak(tabela_listy_danych_analizy_ksiazki0))then
local czy_policzone=JuzPoliczone();
if(czy_policzone)then
return;
end;
else
JuzPoliczone();
end;
stronicowyparser_szablony_tekstu_modul.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2);
p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu);
local czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2=tablica_zmiennych2.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu];
local CzyLink=czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2.CzyLink;
local ile_razy=0;
if(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2)then
for _, parametry_obiektu in ipairs(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2) do
if(parametry_obiektu[1]==uchwyt_obiektu)then
ile_razy=ile_razy+1;
if(ile_razy>1)then break;end;
end;
end;
end
if(ile_razy~=1)then
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"błędy uchwytów korzystanych stron",(CzyLink and "Link" or "Pobierz")..nazwa_obiektu))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"błędy uchwytów korzystanych stron",(CzyLink and "Link" or "Pobierz")..nazwa_obiektu);
end;
p.PusteParametryReferencji(self,nazwa_przestrzeni_stare,nazwa_przestrzeni_ksiazki_stare,nazwa_ksiazki_stare,nazwa_artykulu_stare, uchwyt_obiektu, nazwa_obiektu);
end;
else
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"błąd wewnętrzny modułu lua stronicowego parsera"))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"błąd wewnętrzny modułu lua stronicowego parsera");
end;
end;
else
p.PusteParametryReferencji(self,nazwa_przestrzeni_stare,nazwa_przestrzeni_ksiazki_stare,nazwa_ksiazki_stare,nazwa_artykulu_stare, uchwyt_obiektu, nazwa_obiektu);
end;
end);
end;
function p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,nazwa_obiektu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie,czy_pobierz)
local uchwyt_obiektu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1];
local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
----
local parametry_modul=require("Module:Parametry");
if(parametry_modul.CzyTak(uchwyt_obiektu))then
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
uchwyt_obiektu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(uchwyt_obiektu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or uchwyt_obiektu;
local html_modul=require("Module:Html");
uchwyt_obiektu=html_modul.DecodeHtml(uchwyt_obiektu,true);
end;
----
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
----
local UstalanieNazwStronyArtykularnegoWoluminu=function(czy_tak)
nazwa_przestrzeni=(czy_tak and nazwa_przestrzeni or nil) or self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
nazwa_przestrzeni_ksiazki=(czy_tak and nazwa_przestrzeni_ksiazki or nil) or self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
nazwa_ksiazki=(czy_tak and nazwa_ksiazki or nil) or self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
nazwa_artykulu=nazwa_artykulu or self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu;
end;
local nazwa_przestrzeni_stare,nazwa_przestrzeni_ksiazki_stare,nazwa_ksiazki_stare,nazwa_artykulu_stare=nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu;
local function ZbieranieDanychPrzezGeneralneLinkowanie()
if(parametry_modul.CzyTak(uchwyt_obiektu))then
nazwa_artykulu=(nazwa_artykulu or (nazwa_ksiazki and "" or nil));
if(nazwa_artykulu)then
if(nazwa_artykulu~="")then
if(not nazwa_ksiazki)then
UstalanieNazwStronyArtykularnegoWoluminu(false);
elseif(nazwa_ksiazki=="")then
p.PusteParametryReferencji(self,nazwa_przestrzeni_stare,nazwa_przestrzeni_ksiazki_stare,nazwa_ksiazki_stare,nazwa_artykulu_stare, uchwyt_obiektu, nazwa_obiektu);
return;
end;
elseif((nazwa_ksiazki)and(nazwa_ksiazki~=""))then
nazwa_artykulu="";
elseif((nazwa_ksiazki)and(nazwa_ksiazki==""))then
p.PusteParametryReferencji(self,nazwa_przestrzeni_stare,nazwa_przestrzeni_ksiazki_stare,nazwa_ksiazki_stare,nazwa_artykulu_stare, uchwyt_obiektu, nazwa_obiektu);
return;
else
UstalanieNazwStronyArtykularnegoWoluminu(false);
end;
if((nazwa_przestrzeni~=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)
or(nazwa_przestrzeni_ksiazki~=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu)
or(nazwa_ksiazki~=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu)
or(nazwa_artykulu~=self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu))then
p.LinkowanieInnychStron(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,nazwa_przestrzeni_stare,nazwa_przestrzeni_ksiazki_stare,nazwa_ksiazki_stare,nazwa_artykulu_stare,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,czy_pobierz);
else
p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz);
p.PusteParametryReferencji(self,nazwa_przestrzeni_stare,nazwa_przestrzeni_ksiazki_stare,nazwa_ksiazki_stare,nazwa_artykulu_stare, uchwyt_obiektu, nazwa_obiektu);
end;
else
UstalanieNazwStronyArtykularnegoWoluminu(true);
p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz)
p.PusteParametryReferencji(self,nazwa_przestrzeni_stare,nazwa_przestrzeni_ksiazki_stare,nazwa_ksiazki_stare,nazwa_artykulu_stare, uchwyt_obiektu, nazwa_obiektu);
end;
else
UstalanieNazwStronyArtykularnegoWoluminu(true);
if((uchwyt_obiektu)and(uchwyt_obiektu==""))then
p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,nil);
p.PusteParametryReferencji(self,nazwa_przestrzeni_stare,nazwa_przestrzeni_ksiazki_stare,nazwa_ksiazki_stare,nazwa_artykulu_stare, uchwyt_obiektu, nazwa_obiektu);
elseif(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak uchwytu",nazwa_obiektu))then
p.PusteParametryReferencji(self,nazwa_przestrzeni_stare,nazwa_przestrzeni_ksiazki_stare,nazwa_ksiazki_stare,nazwa_artykulu_stare, uchwyt_obiektu, nazwa_obiektu);
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak uchwytu",nazwa_obiektu);
end;
end;
end;
ZbieranieDanychPrzezGeneralneLinkowanie();
KtorySzablonMaZwracacKategorie(uchwyt_obiektu);
end;
return p;
i9gp23gqwuc83vr19609ammxxpp4oer