Wikibooks plwikibooks https://pl.wikibooks.org/wiki/Wikibooks:Strona_g%C5%82%C3%B3wna MediaWiki 1.47.0-wmf.12 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 Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności/Przypomnienie transformacji Galileusza, właściwości operatorów transformacji 0 46720 548366 548253 2026-07-26T13:19:20Z Persino 2851 /* Zestaw transformacji prostych i odwrotnych Galileusza */ 548366 wikitext text/x-wiki <noinclude><!-- -->{{SkomplikowanaStronaStart<!-- -->| stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{NastępnyArtykuł}}|{{PoprzedniArtykuł}}}}<!-- -->}}</noinclude> == Transformacje iloczynu skalarnego przestrzeni zwykłej czasoprzestrzeni Galileusza == Tutaj będziemy przeprowadzać dowody dotyczące transformacji Galileusza dla starego i nowego n-wymiarowego układu odniesienia ogólnie nieprostokątnego. Macierz iloczynu skalarnego w starym układzie współrzędnych {{Formuła|<MATH>A\;</MATH>}} jest z oczywistych powodów symetryczna i dla każdego układu współrzędnych w zależności od ustawienia osi tego ta macierz jest liczona od nowa względem obserwatora spoczywającego w tym układzie. Dla transformacji Galileusza zachodzą: {{CentrujWzór|<MATH>(X^'_p,X^'_p)=X^{'T}_pA^'X^'_p\wedge X^'_p=C_pX_p\Rightarrow(X^'_p,X^'_p)=X_p^TC_p^TA^'C_pX_p=X_p^TAX_p=(X_p,X_p)\Rightarrow C_p^TA^'C_p=A\;</MATH>|G0}} Własność {{LinkWzór|G0}}, tzn. transformację z {{Formuła|<MATH>A^'\;</MATH>}} na {{Formuła|<MATH>A\;</MATH>}} jest również spełniona w szczególnej teorii względności, jak udowodnimy. == Zestaw transformacji prostych i odwrotnych Galileusza == A jeżeli {{Formuła|<MATH>A^{'T}=A^'\;</MATH>}} to z oczywistych powodów {{Formuła|<MATH>A^T=A\;</MATH>}} i odwrotnie, zatem macierz iloczynu skalarnego jest symetryczna, gdzie {{Formuła|<MATH>C_p\;</MATH>}} jest to ta sama macierz co występuje w transformacjach Galileusza: {{Tabelka|opcje=width="100%"|klasa=wikitable| {{Wiersz|{{Komórka|styl=text-align:center;|opcje=colspan=2|nagłówek=tak|'''Transformacje proste'''}}{{Komórka|styl=text-align:center;|opcje=colspan=2|nagłówek=tak|'''Transformacje odwrotne'''}}}} {{Wiersz|{{Komórka|{{CentrujWzór|<MATH>d\vec r^'=C_p(d\vec r-\vec V dt)\;</MATH>|G1}}}}{{Komórka|{{CentrujWzór|<MATH>\vec v^'=C_p(\vec v-\vec V)\;</MATH>|G2}}}} {{Komórka|{{CentrujWzór|<MATH>d\vec r=C_p^{'}(d\vec r^'-\vec V^' dt)\;</MATH>|G3}}}}{{Komórka|{{CentrujWzór|<MATH>\vec v=C_p^{'}(\vec v^'-\vec V^')\;</MATH>|G4}}}}}}}} Wzory {{LinkWzór|G1}}, {{LinkWzór|G2}}, {{LinkWzór|G3}} i {{LinkWzór|G4}} są spełnione w układach odniesienia nieobracających się. Ponieważ macierze {{Formuła|<MATH>C_{p}\;</MATH>}} i {{Formuła|<MATH>C_{p}^'\;</MATH>}} (gdzie {{Formuła|<MATH>C_p=C_p^{'-1}\;</MATH>}}) są nieosobliwe dowolne (one zależą od ustawień osi starego i nowego układu odniesienia), więc transformacje {{LinkWzór|G1}}, {{LinkWzór|G2}}, {{LinkWzór|G3}} i {{LinkWzór|G4}} mają taką samą postać niezależnie z jakiego układu na który coś transformujemy przy pomocy tychże wzorów, zatem spełniają zasadę izotropowości przestrzeni, ale te macierze są stałe ze względu na przesuniecia w czasie i przestrzeni, więc spełniają zasadę jednorodności czasu i przestrzeni. W powyższych wzorach zachodzi tożsamość na podstawie absolutności czasu, tzn.: {{Formuła|<MATH>dt^'=dt\;</MATH>}}. == Macierz transformacji równoległy i prostopadły == Przyjmujemy, że zachodzi wzór na {{Formuła|<MATH>C_p\;</MATH>}} w zależności od {{Formuła|<MATH>C_{p||}\;</MATH>}} i {{Formuła|<MATH>C_{p\perp}\;</MATH>}}, które są kolejno macierzami pierwszy równoległym i prostopadłym do {{Formuła|<MATH>\vec V\;</MATH>}}, czyli: {{CentrujWzór|<MATH>C_p=C_{p||}+C_{p\perp}\wedge C_{p||}=C_pP_{||}\wedge C_{p\perp}=C_pP_{\perp}\;</MATH>|G5}} We wzorze {{LinkWzór|G5}} przyjmujemy warunki na macierze {{Formuła|<MATH>C_{p||}\;</MATH>}} i {{Formuła|<MATH>C_{p\perp}\;</MATH>}}, czyli zachodzą {{Formuła|<MATH>C_{p||}X_{\perp}=0\wedge C_{p\perp}X_{||}=0\;</MATH>}}. Związki {{LinkWzór|G5}} przyjmujemy również w szczególnej teorii względności. == Transformacja prędkości nowego układu odniesienia względem starego na prędkość starego układu odniesienia względem nowego == Przejrzyjmy się właściwości macierzy {{Formuła|<MATH>C_p\;</MATH>}}, {{Formuła|<MATH>C_{p||}\;</MATH>}} i {{Formuła|<MATH>C_{p\perp}\;</MATH>}}, którą udowodnimy z transformacji Galileusza. Prędkość starego układu odniesienia względem nowego w transformacji Galileusza przedstawiamy wzorem: {{CentrujWzór|<MATH>\vec V^'=C_p(0-\vec V)=-C_p\vec V=-C_{p||}\vec V\;</MATH>|G6}} == Macierz transformacji prosta i odwrotna - związki == Do {{LinkWzór|G3}} podstawmy {{LinkWzór|G1}} i {{LinkWzór|G6}}, co na podstawie tego: {{CentrujWzór|<MATH>d\vec r=C_p^{'}(d\vec r^'-\vec V^' dt)=C_p^{'}(C_p(d\vec r-\vec V dt)+C_p\vec Vdt)=C_p^'C_p(d\vec r-\vec V dt+\vec V dt)=C_p^'C_pd\vec r\Rightarrow I=C_p^'C_p\Rightarrow C_p^{'}=C_p^{-1}\;</MATH>|G7}} == Zestaw transformacji prostych i odwrotnych Galileusza poprzez równoległe i prostopadłe macierze transformacji == Weźmy wektory nieskończenie małych przesunięć równoległe i prostopadłe do prędkości {{Formuła|<MATH>\vec V\;</MATH>}} w transformacji prostej i odwrotnej transformacji Galileusza, tzn.: {{ElastycznyWiersz|1={{CentrujWzór|<MATH>d\vec r^'_{||}=C_{p||}(d\vec r_{||}-\vec V dt)\;</MATH>|G8}}|2={{CentrujWzór|<MATH>d\vec r_{||}=C_{p||}^'(d\vec r_{||}^'-\vec V^' dt)\;</MATH>|G9}}|3={{CentrujWzór|<MATH>d\vec r^'_{\perp}=C_{p\perp}d\vec r_{\perp}\;</MATH>|G10}}|4={{CentrujWzór|<MATH>d\vec r_{\perp}=C_{p\perp}^'d\vec r^'_{\perp}\;</MATH>|G11}}}} == Tożsamość na iloczynach macierzy transformacji równoległego i prostopadłego == Zachodzą tożsamości na iloczynach {{Formuła|<MATH>C_{p||}\;</MATH>}} i {{Formuła|<MATH>C_{p\perp}\;</MATH>}}: {{CentrujWzór|<math>C_{p||}^'C_{p\perp}(d\vec r-\vec Vdt)=C_{p||}^'C_{p\perp}d\vec r_{\perp}=C_{p||}^'d\vec r_{\perp}^'=C_p^'P_{||}^'d\vec r_{\perp}^'=0\wedge C_{p\perp}^'C_{p||}(d\vec r-\vec V dt)=C_{p\perp}^'C_{p||}(d\vec r_{||}-\vec V dt)=C_{p\perp}^'d\vec r_{||}^'=\;</MATH>{{Br}}<MATH>=C_p^'P^'_{\perp}d\vec r_{||}^'=0\Rightarrow C_{p||}^'C_{p\perp}=C_{p||}C_{p\perp}^'=C_{p\perp}^'C_{p||}=C_{p\perp}C_{p||}^'=0\;</MATH>|G12}} == Tożsamość na iloczynach macierzy transformacji równoległych == Weźmy wzór {{LinkWzór|G9}} i do niego podstawmy {{LinkWzór|G8}} i {{LinkWzór|G6}}, zatem: {{CentrujWzór|<MATH>d\vec r_{||}=C_{p||}^'(d\vec r_{||}^'-\vec V^' dt)=C_{p||}^'(C_{p||}(d\vec r_{||}-\vec V dt)+C_{p||}\vec V dt)=C_{p||}^'C_{p||}d\vec r_{||}\Rightarrow d\vec r_{||}=C_{p||}^'C_{p||}d\vec r_{||}=C_{p}^'P_{||}^'C_p^'P_{||}^'d\vec r_{||}=\;</MATH>{{Br}}<MATH>=C_{p}^'(1-P_{\perp}^')C_pd\vec r_{||}=C_{p}^'C_pd\vec r_{||}-C_{p\perp}^'C_{p||}d\vec r_{||}=C_{p}^'C_pd\vec r_{||}=C_p^{-1}C_pd\vec r_{||}=d\vec r_{||}\;</MATH>|G13}} Powyższy wzór zatem zawsze jest spełniony co udowodniono na podstawie tożsamości {{LinkWzór|G7}}. == Tożsamość na iloczynach macierzy transformacji prostopadłych == Weźmy wzór {{LinkWzór|G11}} i podstawmy do niego wzór {{LinkWzór|G10}}, wtedy: {{CentrujWzór|<MATH>d\vec r_{\perp}=C_{p\perp}^'d\vec r^'_{\perp}=C_{p\perp}^'C_{p\perp}d\vec r_{\perp}=C_{p\perp}^'C_{p\perp}d\vec r_{\perp}\Rightarrow d\vec r_{\perp}=C_{p\perp}^'C_{p\perp}d\vec r_{\perp}=C_{p}^'P_{\perp}^'C_p^'P_{\perp}^'d\vec r_{\perp}=C_{p}^'(1-P_{||}^')C_pd\vec r_{\perp}=\;</MATH>{{Br}}<MATH>=C_{p}^'C_pd\vec r_{\perp}-C_{p||}^'C_{p\perp}d\vec r_{\perp}=C_{p}^{-1}C_pd\vec r_{\perp}=d\vec r_{\perp}\;</MATH>|G14}} Powyższy wzór zatem zawsze jest spełniony co udowodniono na podstawie tożsamości {{LinkWzór|G7}}. Własności macierzy {{Formuła|<MATH>C_p\;</MATH>}}, {{Formuła|<MATH>C_{p||}\;</MATH>}} i {{Formuła|<MATH>C_{p\perp}\;</MATH>}} pokazane w punkcie {{LinkWzór|G7}}, {{LinkWzór|G12}}, {{LinkWzór|G13}} i {{LinkWzór|G14}} są również spełnione w szczególnej teorii względności jak udowodnimy. == Prawo Pitagorasa na macierzach transformacji równoległym i prostopadłym == Ale: {{CentrujWzór|<MATH>d\vec r=C_p^{-1}C_pd\vec r=C_p^{'}C_pd\vec r=C_{p||}^'C_{p||}d\vec{r}_{||}+C_{p\perp}^'C_{p\perp}d\vec{r}_{\perp}=C_{p||}^'C_{p||}(d\vec r-d\vec r_{\perp})+C_{p\perp}^'C_{p\perp}(d\vec{r}-d\vec{r}_{||})=C_{p||}^'C_{p||}d\vec r+\;</MATH>{{Br}}<MATH>+C_{p\perp}^'C_{p\perp}d\vec r=(C_{p||}^'C_{p||}+C_{p\perp}^'C_{p\perp})d\vec r\Rightarrow I=C_{p||}^'C_{p||}+C_{p\perp}^'C_{p\perp}\wedge I=C_{p||}C_{p||}^'+C_{p\perp}C_{p\perp}^'\;</MATH>|G15}} Związek {{LinkWzór|G15}} jest również spełniony w szczególnej teorii względności jak udowodnimy. == Definicja macierzy iloczynu skalarnego poprzez wektor bazy w przestrzeni zwykłej Galileusza == W przestrzeni n-wymiarowej zachodzi również związek: {{CentrujWzór|<MATH>A=B^T_pB_p\;</MATH>|G16}} Gdzie {{Formuła|<MATH>B_p=[\vec e_{p1},\vec e_{p2},...,\vec e_{pi},...,\vec e_{pn}]\;</MATH>}} jest macierzą wersorów w przestrzeni w przestrzeni n-wymiarowej według Galileusza. Zachodzą również związki transformacyjne Galileusza: {{CentrujWzór|<MATH>B^'_pX_p^'=B_pX_p\Rightarrow B^'_pC_pX_p=B_pX_p\Rightarrow B^'_p=B_pC_p^{-1}\;</MATH>|G17}} Wzór {{LinkWzór|G17}}(ostatni wzór) jest również spełniony w szczególnej teorii względności jak udowodnimy, a {{LinkWzór|G16}} będziemy przyjmować w niej. Na podstawie wzoru możemy wyedytować jako: {{CentrujWzór|<MATH>B^'_p=B_pC_p^{-1}\Rightarrow B_p=B^'_pC_p\wedge B_p=B^'_p{C_p^'}^{-1}\Rightarrow C_p^'=C_p^{-1}\;</MATH>|G17a}} Wzór {{LinkWzór|G17a}} jest również spełniony w szczególnej teorii względności i jest zgodny z {{LinkWzór|G7}}. Niech mamy {{LinkWzór|G16}} i {{LinkWzór|G17}} i sprawdźmy czy te dwa wzory są zgodne z transformacją iloczynu skalarnego {{LinkWzór|G0}}, zatem przystępujemy do obliczeń: {{CentrujWzór|<MATH>A^'={B^'}^TB^'_p=C_p^{-T}B_p^TBC_p^{-1}=C_p^{-T}AC_{p}^{-1}\;</MATH>|G18}} Po wyznaczeniu macierzy {{Formuła|<MATH>A\;</MATH>}} ze wzoru {{LinkWzór|G18}} dostajemy transformacje macierzy iloczynu skalarnego z układu K' do K, czyli {{LinkWzór|G0}}, zatem wzory {{LinkWzór|G16}} i {{LinkWzór|G17}} są poprawne bo otrzymujemy z nich {{LinkWzór|G0}}. Wyznaczmy macierz iloczynu skalarnego transponowaną: {{CentrujWzór|<MATH>A^T=\left(B^T_pB_p\right)^T=B^T_p\left({B^T_p}\right)^T=B^T_pB_p=A\Rightarrow A^T=A\;</MATH>|G19}} == Tranformacje operatorów rzutowych == Na podstawie {{LinkWzór|G6}} i {{LinkWzór|G0}} oraz dla operatorów rzutowych równoległych według {{LinkWzór|T3|Przypomnienie o operatorach rzutowych}} możemy otrzymać transformacje, które piszemy: {{CentrujWzór|<MATH>P_{||}^'={{\vec V^'\vec V^{'T}}\over{V^{'2}}}A^'=C_p{{\vec V\vec V^T}\over{V^2}}C_p^TA^'=C_p{{\vec V\vec V^T}\over{V^2}}AC_p^{-1}=C_pP_{||}C_p^{-1}\;</math>|G20}} Dla operatorów rzutowych prostopadłych na podstawie {{LinkWzór|T5|Przypomnienie o operatorach rzutowych}} możemy otrzymać transformacje, które piszemy: {{CentrujWzór|<MATH>P_{\perp}^'=I-P_{||}^'=C_pIC_{p}^{-1}-C_pP_{||}C_p^{-1}=C_p(I-P_{||})C_{p}^{-1}=C_pP_{\perp}C_{p}^{-1}\;</MATH>|G21}} == Transformacje dowolnych pochodnych wektora położenia == Na podstawie {{LinkWzór|G1}} możemy napisać transformacje, gdy zachodzi {{Formuła|<MATH>\vec r^'_0=\vec r_0=0\;</MATH>}} i {{Formuła|<MATH>t^'_0=t_0=0\;</MATH>}}, co na tej podstawie możemy napisać transformacje położenia i czasu, a także przyśpieszenia i dowolnej n-pochodnej położenia: {{ElastycznyWiersz|1={{CentrujWzór|<MATH>\vec r^'=C_p(\vec r-\vec Vt)\;</MATH>|G22}}|2={{CentrujWzór|<MATH>\vec v^'=C_p(\vec v-V)\;</MATH>|G23}}|3={{CentrujWzór|<MATH>\vec a^'=C_p(\vec a-\vec A)\;</MATH>|G24}}|4={{CentrujWzór|<MATH>(\vec r^{'})^{(n)}=C_p\left(\vec r^{(n)}-\vec r_0^{(n)}\right)\;</MATH>|G25}}}} == Przechodniość macierzy transformacji, a transformacja tożsamościowa == A także zachodzi z absolutności czasu w teorii transformacji Galileusza {{Formuła|<MATH>t^'=t\;</MATH>}}. Udowodnijmy przechodność transformacji Galileusza, wtedy mamy {{ElastycznyWiersz|1={{CentrujWzór|<MATH>d\vec r^{''}_2=C_{p2}^'(d\vec r^'_2-\vec V^'_2dt')\;</MATH>|G26a}}|2={{CentrujWzór|<MATH>d\vec r^{'}_2=C_{p1}(d\vec r_2-\vec V_1dt)\;</MATH>|G26b}}|3={{CentrujWzór|<MATH>d\vec\vec r_2^{''}=C_{p2}(d\vec r_2-\vec V_2dt)\;</MATH>|G26c}}|4={{CentrujWzór|<MATH>\vec V_2^'=C_{p1}(\vec V_2-\vec V_1)\;</MATH>|G26d}}}} Policzmy wyrażenie {{LinkWzór|G26a}} podstawiając do niego wyrażenie {{LinkWzór|G26b}} na transformację położenia względem układu {{Formuła|<MATH>K\;</MATH>}}, która jest transformacją do układu {{Formuła|<MATH>K^{'}\;</MATH>}}, i wykorzystując {{LinkWzór|G26d}} transformacje prędkości względem układu {{Formuła|<MATH>K\;</MATH>}}, która jest transformacją do układu {{Formuła|<MATH>K^'\;</MATH>}}, co w końcu otrzymujemy wzór {{LinkWzór|G26c}}, co dalej wykorzystując wspomnianą absolutność czasu, a więc wtedy: {{CentrujWzór|<MATH> d\vec r^{''}_2=C_{p2}^'(d\vec r^'_2-\vec V_2^'dt^')=C _{p2}^'\left[C_{p1}(d\vec r_2-\vec V_1dt)-C_{p1}(\vec V_2-\vec V_1)dt\right]=C_{p2}^'C_{p1}\left(d\vec r_2-\vec V_1dt-\vec V_2dt+\vec V_1dt\right)=\;</MATH>{{Br}}<MATH>=C_{p2}(d\vec r_2-\vec V_2dt)\;</MATH>|G27}} Co końcowy wzór {{LinkWzór|G27}} zgadza się ze wzorem {{LinkWzór|G26c}}, te transformacje Galileusza są przechodnie. Z definicji transformacji wynika, że ta transformacja jest tożsamościowa dla {{Formuła|<MATH>C_{p2}=I\;</MATH>}} i {{Formuła|<MATH>\vec V_2=0\;</MATH>}}, czyli wtedy {{Formuła|<MATH>d\vec r=C_{p2}(d\vec r-\vec V_2dt)=I(d\vec r-0dt)=d\vec r\;</MATH>}}, co na podstawie tego dla tego przypadku ta sama prędkość transformuje się na to samo. <noinclude>{{SkomplikowanaStronaKoniec}}</noinclude> 4519nfmzgdzvj5bfucerny7u16zwyhz C Sharp/Komponenty 0 59795 548369 455782 2026-07-26T17:01:34Z ~2026-41794-72 38787 548369 wikitext text/x-wiki Podczas tworzenia graficznego interfejsu użytkownika (GUI) w języku C# istnieje kilka podstawowych składników, których można użyć. Obejmują one: Formularz: formularz jest głównym kontenerem aplikacji GUI. Służy jako okno, które wyświetla użytkownikowi interfejs. W języku C# możesz utworzyć nowy formularz, wybierając opcję „Windows Form” z szablonów projektu. Etykieta: Etykieta to nieedytowalna kontrolka tekstowa, która służy do wyświetlania tekstu lub podpisu w formularzu. Możesz dodać etykietę do formularza, przeciągając ją z Przybornika i upuszczając na formularz. TextBox: TextBox to edytowalna kontrolka, która umożliwia użytkownikowi wprowadzanie tekstu. Możesz dodać TextBox do formularza, przeciągając go z Przybornika i upuszczając na formularz. Przycisk: przycisk to kontrolka, którą użytkownik może kliknąć, aby zainicjować akcję, taką jak przesłanie formularza lub zapisanie danych. Możesz dodać przycisk do formularza, przeciągając go z Przybornika i upuszczając na formularz. ComboBox: ComboBox to formant, który pozwala użytkownikowi wybrać z listy predefiniowanych opcji. Możesz dodać ComboBox do formularza, przeciągając go z Przybornika i upuszczając na formularz. CheckBox: CheckBox to formant, który pozwala użytkownikowi wybrać jedną lub więcej opcji z listy predefiniowanych wyborów. Możesz dodać CheckBox do formularza, przeciągając go z Przybornika i upuszczając na formularz. RadioButton: RadioButton to formant, który pozwala użytkownikowi wybrać jedną opcję z listy predefiniowanych wyborów. Możesz dodać RadioButton do formularza, przeciągając go z Przybornika i upuszczając na formularz. PictureBox: PictureBox to formant, który wyświetla obraz w formularzu. Możesz dodać PictureBox do formularza, przeciągając go z Przybornika i upuszczając na formularz. To tylko kilka podstawowych komponentów, których możesz użyć podczas tworzenia GUI w języku C#. W Zestawie narzędzi dostępnych jest znacznie więcej elementów sterujących, a w razie potrzeby można również tworzyć własne elementy sterujące. nm3ni0kshluh3nipsdk92ivviv9mvqh Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy 4 63512 548368 542182 2026-07-26T13:49:11Z Persino 2851 548368 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|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.ParsowanieNapisuWprowadzeniaTekstuSpisuStron}}{{Code|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron}} == == {{Śródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy}}{{Code|p.ZnajdowanieZerowegoSpisuRzeczy}} == == {{Śródtytuł|p.CzyWprowadzenieNapisuTekstuCentrowany}}{{Code|p.CzyWprowadzenieNapisuTekstuCentrowany}} == == {{Śródtytuł|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu}}{{Code|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu}} == == {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} == == {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} == == {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} == == {{Śródtytuł|p.SzukanieNaPodstawieWzoru}}{{Code|p.SzukanieNaPodstawieWzoru}} == == {{Śródtytuł|p.KoniecStronyLicencja}}{{Code|p.KoniecStronyLicencja}} == == {{Śródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}}{{Code|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}} == == {{Śródtytuł|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}{{Code|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}} == == {{Śródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii}}{{Code|p.SzukanieNaPodstawieWzoruElementuLinii}} == == {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} == == {{Śródtytuł|p.AnalizowanieSekcjowe}}{{Code|p.AnalizowanieSekcjowe}} == == {{Śródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}{{Code|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}} == == {{Śródtytuł|p.SzukanieKolejnychSekcji}}{{Code|p.SzukanieKolejnychSekcji}} == == {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowych}} == == {{Śródtytuł|p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}}{{Code|p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}} == == {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} == == {{Śródtytuł|p.AnalizaSpisuRzeczy}}{{Code|p.AnalizaSpisuRzeczy}} == {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> r9usr0iueudglftcz3i7weim2pjclc5 Wikibooks:Moduły/StronicowyParser/GłównaFunkcjaZbieraniaDanychStron 4 63513 548349 548348 2026-07-26T12:01:23Z Persino 2851 /* Dalsza część funkcji - Tom I */ 548349 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}|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.PobieranieInformacjiRamkiRozpatrywanejStrony}}{{Code|p.PobieranieInformacjiRamkiRozpatrywanejStrony}} == Pobieranie danych z obiektu {{LinkPatrz|self}}, biorąc jego podtablicę o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiRamkiRozpatrywanejStrony(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa ramki tablicy transportu. == {{Śródtytuł|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}}{{Code|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}} == Funkcja uruchamiacz, główna funkcja dzięki, której ładują się informacje według modułu: {{Code|{{ld2|StronicowyParser/informacje}}}} (tam jest użyty). Ten ładowacz jest pokazany w module opis: {{Code|{{lr2|Moduły/StronicowyParser/informacje}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}. === {{Śródtytuł|DaneNazw}}{{Code|DaneNazw}} === Funkcja licząca nazwy podanej nazwy strony, tzn.: {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} {{Patrz|nazwa_artykulu}}, oraz zwracające te kolejno nazwy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function DaneNazw(pelna_nazwa_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|pelna_nazwa_strony}} {{Patrz|pelna_nazwa_strony}} - pełna nazwa strony. === Dalsza część funkcji - Tom I === ==== Tworzenie i inicjowanie początkowych tabel ==== Funkcja tworzy podtabele tabeli zmiennej obiektowej {{LinkPatrz|self}} o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, o wartości pustej. Następnie są tworzone podtabele puste w tej ostatniej o kluczach: {{Code|dane_analizy_stron}} {{Patrz|dane_analizy_stron}} i {{Code|licencja}}{{Patrz|licencja}}, oraz nilowe zmienne z tego samego, co ostatnie, o kluczu: {{Code|problemy}} {{Patrz|problemy}}. ==== Zmienne nazw strony bieżącej, czy nawet aktualnej, w zależności, czy istnieją odpowiednie ustawienia ==== Jest liczony adres strony, na której jest uruchomiona dana strona, wewnętrznej bezparametrowo według: {{Code|{{sr|#p["PełnaNazwaArtykułu"]|p=Książkowe}}}} {{Patrz|strona_aktualna}}, co z tego są liczone z niego: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, co z tego jest liczona pełna nazwa książki {{Code|pelna_nazwa_ksiazki}} {{Patrz|pelna_nazwa_ksiazki}}. ==== Zbieranie danych ustawień z: {{Code|.../config}}, jeśli istnieją ==== Jest liczony pełny adres ustawień: {{Code|pelna_nazwa_ksiazki_ustawienia}} {{Patrz|pelna_nazwa_ksiazki_ustawienia}}, według schematu: {{Code|"Szablon:Podręcznik/Ustawienia/"..pelna_nazwa_ksiazki}} {{Patrz|UstawieniaKsiążki}}. Co z tego jest sprawdzane, czy istnieje strona: {{Code|pelna_nazwa_ksiazki_ustawienia.."/config"}} {{Patrz|config}}, a jeśli tak, to wtedy wiemy, że to jest szablon, to go przedstawiamy w postaci szablonowej, licząc z: {{Code|{{sr|#p.NazwaSzablonu|p=Szablonowe}}}}. Dalej jest liczony ostatni wyliczony szablon z parametrem {{Code|książka}} {{Patrz|książka}}, dalej jeszcze raz, tym razem z parametrem: {{Code|artykuł}} {{Patrz|artykuł}} - te parametry przedstawiają parametry artykułu książkowego, skąd możemy ściągać stronę, by ją wyświetlić na stronie aktualnej, na pewno parametr {{LinkPatrz|książka}} nie może być parametrem składających z samych znaków odstępów, a jeśli tak jest, w takim razie z tych dwóch parametrów jest liczony parametr {{Code|strona}} {{Patrz|strona}}. Dalej liczymy, czy ona jest poprawnym adresem, używając funkcji: {{Code|{{sr|#p["CzyNiepoprawnaNazwa"]|p=Pudełko/Tom I}}}}. A jeżeli adres jest jednak poprawny, ta funkcja zwraca wartość odpowiadającej fałszywej wartości, wtedy jest liczony pełny adres strony, jeżeli ona jest względna z parametrów, tzn. parametr pierwszy: {{LinkPatrz|strona}}, i parametr drugi: {{LinkPatrz|strona_aktualna}}, co względem tej funkcji mamy już: {{LinkPatrz|strona}}, czyli po tej operacji (procedurze) policzyliśmy bezwzględny jego adres. ===== Liczenie nazw z parametru pełnej nazwy aktualnej, nie bieżącej, strony wynikłe z obliczeń z ustawień ===== Policzona wartość strony: {{LinkPatrz|strona}}, jest sprawdzana, czy adres (strona), pod którym ona się kryje, istnieje, a jeśli tak, to ten adres jest tylko formatowany. Porównujemy adres {{LinkPatrz|strona}} z {{LinkPatrz|strona_aktualna}}, czy przedstawiają nie ten sam adres, a jeżeli tak, to liczymy wszyskie nazwy strony, czyli dla bez {{Code|aktualna_}}, przyrównujemy do tego z tym początkiem, co odpowiada pełnej nazwie strony z {{Code|strona_aktualna}} {{LinkPatrz|strona_aktualna}} {{ZobaczTeż|strona_aktualna}}, i używając funkcji: {{LinkŚródtytuł|DaneNazw}}, ze zmiennej: {{Code|strona}} {{LinkPatrz|strona}} {{ZobaczTeż|strona}}. Te ostatnie nazwy są potrzebne do analizy strony bieżącej, nie aktualnej, tzn. na niej, jakie są szablony, jakie posiada spisy, jakie książki, a w nim spisy do nich, są dołączone. ====== Policzone nazwy strony aktualnej wpisane do ogólnej tablicy ====== A póżniej z adresów pliczonych wywołania, dotyczącej tego aktualnego, liczymy dla podtabeli: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienne o kluczach: {{Code|aktualna_nazwa_przestrzeni}} {{Patrz|aktualna_nazwa_przestrzeni}}, {{Code|aktualna_nazwa_przestrzeni_ksiazki}} {{Patrz|aktualna_nazwa_przestrzeni_ksiazki}}, {{Code|aktualna_nazwa_ksiazki}} {{Patrz|aktualna_nazwa_ksiazki}} i {{Code|aktualna_nazwa_artykulu}} {{Patrz|aktualna_nazwa_artykulu}}, mając zmienne nazw policzone z tego aktualnego. ===== Czy strona bieżąca, ale nie zbiorcza, jest wyświetlana na stronie aktualnej, czy może jest tylko stroną zbiorczą uruchomioną pod inną nazwą ===== Jeśli zmienne nazw są policzone z: {{LinkZobaczTeż|strona}} i {{LinkZobaczTeż|strona_aktualna}}, to wtedy kolejno porównujemy, czy któraś z nich jest nierówna, a jeśli tak, to wywołujemy szablon z parametru: {{Code|zastępcza}} {{ZobaczTeż|zastępcza}} - jest to, czy strona jest zbiorcza, o nazwie: {{LinkPatrz|config}}, czy powinna być wartością niepustą. A jak tak, to wyznaczamy z tablicy: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienną o kluczu: {{Code|alternatywna}} {{Patrz|alternatywna}}, co przyrównujemy jemu wartość logiczną z uzyskanego z szablonu z parametrem {{LinkZobaczTeż|zastępcza}}, a jeżeli ta zmienna przyjmuje wartość odpowiadająca fałszywej, wtedy zmienna z tej samej tablicy o kluczu: {{Code|inna_strona_aktualna_niz_biezaca}} {{Patrz|inna_strona_aktualna_niz_biezaca}} - jest to, czy strona jest inna niż zbiorcza, ale wyświetlana na innej stronie, przyjmuje wartość prawdziwą. === Dalsza część funkcji - Tom II === Tworzymy zmienną: {{Code|tablica_zmiennych}}, która jest tablicą pustą, którą uzupełniamy o elementy o kluczach: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}} - są to dane zebrane z bieżącej strony, i {{Code|linkobiekt}} {{Patrz|linkobiekt}} - są to dane zebrane o linkach na stronie odpowiadających poszczególnym obiektom. Uruchamiamy funkcję: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}, z której wyznaczamy parametr: {{Code|tabela_listy_danych_analizy_ksiazki}} - są to dane zebrane z bieżącej i innych stron skojarzonej z nim, te elementy są tylko w postaci nieprzetworzonej, ale przygotowanej. A jeśli ten parametr jest tabelką - a jeżeli nie jest, to nastąpił błąd przetwarzania, i funkcja nie idzie dalej w instrukcję warunkową, wtedy wywołujemy funkcję: {{Code|{{sr|#p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony|p=StronicowyParser/NumeracjaObiektówStron}}}}. === Dalsza część funkcji - Tom III === Na sam koniec funkcji zwracamy tablicę: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}} - ta zmienna zawiera dane w postaci przetworzonej policzonej, tzn. uchwytom są przydzielone numeracje, sprawdzane, czy uchwyty są policzone, są wyznaczone wszystkie kody problemów, które później są potrzebne do wyznaczania wszystkich kategorii błędów na stronie. == {{Śródtytuł|p.SpisRzeczyWedlePodanegoTekstu}}{{Code|p.SpisRzeczyWedlePodanegoTekstu}} == Funkcja generowania liczenia nagłówków strony, co na tej podstawie może być generowany '''spis treści''' strony. Funkcja przyporządkowuje uchwytom szablonów nagłówków ich identyfikatory i te nagłówki, w którym one leżą, jeżeli zmienna {{LinkPatrz|obiekty}} istnieje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SpisRzeczyWedlePodanegoTekstu(self,tekst_artykulu,nazwa_strony,czy_artykul_korzystany, tylko_naglowek,obiekty,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_obiektow_strony_danych_kodow_specjalnych_modul,KtorySzablonMaZwracacKategorie,wzory_zamiast_kodow,tabela_elementow_strony_kodow)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}} - tekst przetworzony, przygotowany ewentualnie przez pewną funkcję, rozważanego artykułu, * {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} - nazwa strony, danego spisu, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy strona jest bieżąca, * {{Code|tylko_naglowek}} {{Patrz|tylko_naglowek}} - pisz adresy stron z tylko nagłówkami '''#''', bez adresów stron, * {{Code|obiekty}} {{Patrz|obiekty}} - elementy tam zebrane, są wykorzystywane do analizy nagłówków poprzez szablon {{s|Śródtytuł}}, któremu temu nagłówkowi odpowjada pewien uchwyt, czy uchwyty, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}, * {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} - nazwa aktualna, czy bieżąca strony, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy zebranych informacji w postaci zakodowanej modułu {{m|Szablonowe}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tabela przeanalizowanych elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} {{Patrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} - tablica dwuwymiarowa kodów o kluczach: szablonów referencji: '''REF...''' i '''POSTMATH''' oraz ich elementu numeru kodu {{Code|kod}}, którego elementem jest kod tego elementu, * {{Code|KtorySzablonMaZwracacKategorie}} {{Patrz|KtorySzablonMaZwracacKategorie}} - tabela składająca się z trzech elementów, którego pierwszy element to: {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{Patrz|KtorySzablonMaZwracacKategorieNaglowek}} - funkcja dla szablonów problemów dla jak: {{s|Śródtytuł}}, w nagłówku, drugi: {{Code|KtorySzablonMaZwracacKategorieTekst}} {{Patrz|KtorySzablonMaZwracacKategorieTekst}} - funkcja dla tego typu szablonów, ale dla nich w tekście, nie w nagłówku, trzeci: {{Code|CzyJestTakiProblemJakoElementTablicy}} {{Patrz|CzyJestTakiProblemJakoElementTablicy}} - czy nie rozważać, dla rozdziałów zerowych, przeciwnie: ta funkcja może przyjmować wartość {{Code|nil}}, wartość zwracana tego elementu, bo to jest funkcja, zależy, czy jest ustawiony kod problemu: {{Code|nagłówek w tekście rozdziału w stronie korzystanej}} {{Patrz|nagłówek w tekście rozdziału w stronie korzystanej}}, a jeżeli jest taki, to ta funkcja przyjmuje zrzuconą wartość {{Code|true}}, * {{Code|wzory_zamiast_kodow}} {{Patrz|wzory_zamiast_kodow}} - rozważaj wzory według tablicy: {{LinkPatrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}}, lub koduj to według funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}} - to wykorzystuj w przypadku, gdy: {{LinkPatrz|nazwa_strony}}, istnieje, i jest wartością pustą, lub {{Code|{{sr|#p.NormaKoduZakodowanegoWikiTekstu|p=Szablonowe}}}} - przeciwnie, * {{Code|tabela_elementow_strony_kodow}} {{Patrz|tabela_elementow_strony_kodow}} - baza tabela z zapamiętanymi podtabelami, którego poszczególne elementy wykorzystywane w spisie posiadają w sobie tylko pierwszy element w postaci przetworzonego uchwytu, bo używamy tylko uchwytów szablonów nagłówków. === {{Śródtytuł|SpecjalneWprowadzeniaTekstu}}{{Code|SpecjalneWprowadzeniaTekstu}} === Funkcja zamieniające pewne szablony, czy znaczniki, na rozdziały równaniowe. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local SpecjalneWprowadzeniaTekstu=function(szablon,obiekt,kod,czy_szablon,czy_znacznik,czy_liczyc,funkcja1,funkcja2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} {{Patrz|szablon}} - zmienna (szablon), nie musi być to normalny szablon, * {{Code|obiekt}} {{Patrz|obiekt}} - zmienna, którego typu jest obiekt, * {{Code|kod}} {{Patrz|kod}} - numer obiektu typu {{LinkPatrz|obiekt}}, * {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy to jest szablon, * {{Code|czy_znacznik}} {{Patrz|czy_znacznik}} - czy to jest znacznik, * {{Code|czy_liczyc}} {{Patrz|czy_liczyc}} - czy funkcję liczyć w sposób złożony, szablony typu: {{s|SpisTreści}} - zamieniający go na znacznik, czy prosty, co na samym końcu uruchamiana jest funkcja: {{LinkPatrz|funkcja1}}, * {{Code|funkcja1}} {{Patrz|funkcja1}} - funkcja operująca na wygenerowanym pośrednio (dłuższe liczenie) lub bezpośrednio (krótsze) znaczniku, wychodząca z szablonu, i zamieniająca go na rozdział równaniowy, funkcja operująca dla szablonów: {{s|SpisTreści}} lub {{s|HNumer}}, * {{Code|funkcja2}} {{Patrz|funkcja2}} - funkcja operująca na znaczniku '''HTML''' nagłówka - typu jak: {{Tag|h1}}, i zamieniająca go na rozdział równaniowy. ==== {{Śródtytuł|ParametrNR}}{{Code|ParametrNR}} ==== Funkcja liczy dokładnie parametr dany o danym numerze, zbiór danych parametrów oznaczających to samo może być wiele, tylko że jedne mogą być ważniejsze od drugich. Definicja skrótowa funkcja: <syntaxhighlight lang="lua"> local function ParametrNR(numer)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer}} {{Patrz|numer}} - numer parametru. Funkcja wykorzystywuje funkcję do uruchomienia: {{Code|{{sr|#p.SpisRzeczySzablon|p=StronicowyParser/Potrzebne}}}}, do generowania parametrów, a właściwie ich wartości. ==== {{Śródtytuł|ObiektKodNumer}}{{Code|ObiektKodNumer}} ==== Funkcja dodająca do bazy danych kolejny element bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla danego obiektu element na samym końcu, po maksymalnym elemencie do niego. Funkcja liczy kod przy pomocy funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local ObiektKodNumer=function(szablon,obiekt)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}. ==== Dalszy opis funkcji ==== Dla {{LinkPatrz|czy_szablon}} prawdziwego dla szablonów sztucznego spisu treści, sprawdzanego przez tabelkę: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, dla danego szablonowego rozdziału generowanego według {{s|HNumer}}, jest on zamieniany na rozdział równaniowy poprzez funkcję: {{LinkPatrz|funkcja1}}. Ta tabela przedstawia się treścią: <syntaxhighlight lang="lua"> p.szablony_sztucznego_wprowadzenia_tekstu={ ["HNumer"]=1, }; </syntaxhighlight> Dla innych rozdziałów szablonowych, tym razem generowanego przez szablon {{s|SpisTreści}}, którego parametry są wyznaczane przez funkcję: {{LinkŚródtytuł|ParametrNR}}, tabelka parametrów opisująca to: <syntaxhighlight lang="lua"> p.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu={ ["SpisTreści"]={{"artykuł",1,},{"książka",2,},{"nazwa",3,},{"dodatek",4,},{"poziom",},}, }; </syntaxhighlight> Funkcja liczy artykuł, koloruje do niego link w: '''spisie treści''', na czerwona, wtedy generuje dodatkowy znacznik, z właściwością: {{Code|color:red}}, gdy on nie istnieje, i to wstawia do tabeli bazy, lub bez niego, wtedy bezposrednio generuje tekst równy nazwie tego szablonu, opakowany, lub nie, w zależności od istnienia. Do policzenia strony, czy ona istnieje, musi być przedtem zdekodowany funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, by później policzyć to sprawdzenie przy pomocy: {{Code|{{sr|#p.PoliczZbiory|p=Techniczne}}}}. W każdym bądź razie jest ruchumianiana funkcja: {{LinkPatrz|funkcja1}}. Gdy to nie jest szablon, tzn.: {{LinkPatrz|czy_szablon}}, jest fałszywe, ale {{LinkPatrz|czy_znacznik}} jest prawdziwe, to takie znaczniki, jak od: {{Tag|h1}} do {{Tag|h6}}, są zamieniane na czysty tekst. W takim razie wywoływana jest dla tego przypadku funkcja: {{LinkPatrz|funkcja2}}. Funkcja: {{LinkPatrz|funkcja1}}, jest dla szablonów nagłówków, a: {{LinkPatrz|funkcja2}}, dla znaczników nagłówków. Z tych generowanych czystych generowanych tekstów są tworzone w tekście rozdziały równaniowe, by później wygenerować '''spis treści''', właśnie z nimi - z tymi nagłówkami, a bardziej ściśle linkami do nich. === {{Śródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}{{Code|SzablonNaglowkujWNaglowkuRozdzialu}} === Fukcja do obsługi nagłówków {{LinkPatrz|Śródtytuł}} w nagłówku, nie w tekście poza nim. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWNaglowkuRozdzialu(szablon,obiekt,kod,powtorka,parametry_wywolania_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}, * {{Code|powtorka}} {{Patrz|powtorka}} - numer użycia takiego samego szablonu typu {{s|Śródtytuł}} {{Patrz|Śródtytuł}}, * {{Code|parametry_wywolania_szablonu}} {{Patrz|parametry_wywolania_szablonu}} - parametry szablonu wraz z ich wartościami, * {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} - nazwa szablonu wywołania, * {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} - modyfikatory szablonu. Funkcja sprawdza, czy szablon w nagłówku jest typu {{LinkPatrz|Śródtytuł}}, a jeżeli tak, to liczy jego uchwyt, najpierw wyznacza je z parametru o nazwie {{Code|uchwyt}} {{Patrz|uchwyt}}, dalej sprawdzane jest, czy taki uchwyt tak zdefiniowany istnieje, jeśli tak, to wydobywana jest jego przetworzona tabela z tym właśnie uchwytek, funkcja robi to względem numeru {{Code|kod}} {{LinkPatrz|kod}} tego szablonu na podstawie funkcji: {{Code|{{sr|#p.WydobywanieUchwytuZeiBezNumeracji|p=StronicowyParser/ZbieranieDanychStron}}}}. Jeżeli wydobyta tabela {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} nie istnieje, w takim razie jest ona dekodowana funkcją: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, a później jest traktowana jako adres '''URL''', tzn. jest dekodowana funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, dalej jest tworzona tabela pusta: {{LinkPatrz|lista_dwuelementowa}}, co dalej jest tam wstawiana do niej jako pierwszy element uzyskany uchwyt przetworzony. A jeśli jednak {{LinkPatrz|lista_dwuelementowa}} została wydobyta z naszej funkcji tabela, która istnieje, wtedy funkcja idzie, niż poprzednio, w inny krok instrukcji warunkowej, wtedy z tej tabeli jest wydobywany pierwszy element jako przetworzony wcześniej uchwyt. Gdy {{ZobaczTeż|uchwyt}} przetworzony uchwyt jest łańcuchem znaków niepusty, wtedy on jest dodawany w postaci tabeli, w której jest ten uchwyt, na sam koniec tabeli {{Code|numeracja}} {{Patrz|numeracja}}. Gdy liczba powtórzeń jest większa niż zero, wtedy jest wywoływana funkcja, przy którym mają być zwrócone kategorie, jeśli zostaną użyte, o nazwie {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}}. Gdy jednak uchwyt uzyskany nie istnieje, to wtedy jest to samo robione, co w: {{LinkZobaczTeż|uchwyt}}. Przed zwróceniem ile razy została dokonana powtórka, jest powiększany licznik powtorek, i to jest otrzymywane z tej funkcji. === {{Śródtytuł|SzablonNaglowkujWTekscieRozdzialu}}{{Code|SzablonNaglowkujWTekscieRozdzialu}} === Funkcja do analizy szablonów nagłówków w tekście rozdziału, nie w nagłówku. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWTekscieRozdzialu(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja sprawdza, czy tekst w bazie kodów jest typu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, w takim razie po wykryciu, że dla tego, że jest to wywołanie szablonowe, a nie instrukcja warukowa w wikikodzie w tekście, wtedy podobnie jest robione, co w funkcji: {{LinkŚródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}, tylko zamiast {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}} jest {{Code|KtorySzablonMaZwracacKategorieTekst}} {{LinkPatrz|KtorySzablonMaZwracacKategorieTekst}}. Przy wykryciu tam szablonu typu {{LinkPatrz|Śródtytuł}}, funkcja zawsze zwraca wartość {{Code|true}}, w innych przypadkach {{Code|false}}. W przypadku intrukcji warunkowej w wikikodzie i dla ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jest wtedy zwracana wartość {{Code|false}}. Funkcja w pozostałych przypadkach zwraca wartość logiczną {{Code|false}}. === {{Śródtytuł|SzablonyWywolywane}}{{Code|SzablonyWywolywane}} === Szablon zamieniający specjalne znaki szablonów, tzn.: {{Code|{{((}}}}, {{Code|{{))}}}}, {{Code|{{!}}}} i {{Code|{{=}}}}, kolejno na: {{Code|{{s|((}}}}, {{Code|{{s|))}}}}, {{Code|{{s|!}}}} i {{Code|{{s|{{=}}}}}}, takich {{ZobaczTeż|StronicowyParser}}, które zawierają wywołania '''Stronicowego Parsera''', czyli ramki typu: {{Code|{{m|StronicowyParser}}}}, czy: {{Code|{{m|StronicowyParser/}}}}, a inne są po prostu przypisywane. W przypadku linków, i nie tylko, tzn. dla szablonów {{LinkZobaczTeż|StronicowyParser}}, z innych stron niż korzystana, co jest trafnie oznaczone zaprzeczeniem parametru {{LinkPatrz|czy_artykul_korzystany}} są liczone parametry pudełkowe {{Code|{{m|Pudełko}}}}. Strony wskazane przez te parametry są analizowane, przy czym linki są przez inną funkcję, a inne już przez znów inną. Szablony nagłówków typu {{LinkPatrz|Śródtytuł}}, czy szablonów stronicowych otwierających i zamykających, one lub jego koledzy, tzn. ich: {{s|StronaStart}} i {{s|StronaKoniec}}, są zastępowane ciągiem pustym. Inne parametry opisane z tabeli {{Code|{{sr|#p.szablony_stronicowe_kontenerowe_formatowania_wzorowego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, są zastępowane ich zawartością, by uniknąć kontaktu nagłówków z tego typu szablonami. Szablony ideksowania określone tabelą: {{Code|{{sr|#p.szablony_indeksowania}}}} {{Patrz|p.szablony_indeksowania}}, nie są rozwijana z kodowania lub są, w zależności, czy zmienna: {{Code|czy_indeksowanie}} {{Patrz|czy_indeksowanie}}, ma wartość {{Code|true}} - tutaj są, czy odpowiadającej fałszywej wartości logicznej - a tutaj już nie. W przypadku instrukcji warunkowych, czy ramek {{lpg|Lua}} w {{lpg|Lua|Scribunto}}, one są rozwijane - kod tego jest zawartością {{LinkPatrz|szablon}}. W innych przypadkach funkcja zwraca wartość {{Code|nil}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywane(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. W powyższym opisie występują szablony opisane w: {{LinkPatrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, a jej definicja jest: <syntaxhighlight lang="lua"> p.szablony_stronicowe_kontenerowe_formatowania_wzorowego={ ["Formuła"]=1; }; </syntaxhighlight> Jest to szablon: {{s|Formuła}} i podobne, liniowe wstawiane do tekstu, ta tabela ma za zadanie zastąpić te szablony ich poszczególnym zawartościom, a ta funkcja, która ją wykorzystywuje się do tego przypadku, jest o nazwie: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}. Tabelą szablonów indeksowania, to są one zdefiniowane przez: {{LinkPatrz|p.szablony_indeksowania}}, a jej zawartość: <syntaxhighlight lang="lua"> p.szablony_indeksowania={ ["Kotwica"] =true, ["Indeksuj"]=true, }; </syntaxhighlight> Są to szablony kotwic: {{s|Kotwica}}, który jest szablonem liniowym, a {{s|Indeksuj}}, natomiast to blokowy. === {{Śródtytuł|SzablonyWywolywaneOgolny}}{{Code|SzablonyWywolywaneOgolny}} === Funkcja rozwija nagłówek, wydzielając z niego zwykły tekst, nie dopełniając pewnych operacji. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywaneOgolny(naglowek)...end; </syntaxhighlight> Parametry funkcji: * {{Code|naglowek}} {{Patrz|naglowek}} - tekst nagłówka napisu wprowadzenia tekstu. Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["WydzielZwykłyTekst"]|p=Specjalne}}}}, kod jej wywoływany jest z parametrami: <syntaxhighlight lang="lua"> local naglowek,Znaczniki,SzablonyStylowe,ZnakiSpecjalne=specjalne_modul["WydzielZwykłyTekst"]( { ---- tekst nagłówka; tekst=naglowek, ---- Nie wykorzystywuj w działaniu funkcji: Znaczniki, SzablonyStylowe, ZnakiSpecjalne; ["nagłówek"]=true, ---- Nie wykorzystuj dekodowania tekstu zakodowanego, bez rozwijania, ale wręcz przzeciwnie rozwijaj, pozostawiaj pewne szczególne kody przed rozkodowaniem; nieklasycznie=true, ---- Bazę kodowania weź z zewnątrz; kodowanie=false, ---- Wykorzystywana tablica kodowania tekstu modułu: Module:Szablonowe, zakodowanego z zewnątrz; ["tablica kodowania"]=tablica_analizy_obiektow_strony_dany_modul, },__FUNKCJA1,__FUNKCJA2); </syntaxhighlight> Ta funkcja wydziela zwykły tekst z nagłówka z szablonami zwykłymi i ramkami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, bez naruszenia działania innych elementów szablonowych, jak tagi, czyli: {{s|#tag:}}, które też współdziałają też w kodzie danego nagłówka. Również i z linkami wewnętrznymi i zewnętrznymi, z których wydziela się zwykły tekst, bo wiadomo, że one nie mogą się znaleźć w linkach '''spisu treści''', bo nie może być link w linku w nim, a one niezależnie jakie, bo to ze względu na {{Strong|HTML}} nie możliwe technologicznie. Definicje dwóch kolejnych funkcji zdefiniowanych powyżej: <syntaxhighlight lang="lua"> ---- szablon - kod obiektu kodu w wikikodzie; ---- obiekt - typ obiektu kodu powyżej; ---- kod - numer tego samego typu obiektu; local __FUNKCJA1=function(szablon,obiekt,kod) ---- Funkcja wykorzystywana do ewentualnego modyfikowania użytych szablonów i przedstawianiu jego kodem symbolicznym, lub zastępowania pewnych szablonów nagłówków wartością pustą; local szablon,wynik=SzablonyWywolywane(szablon,obiekt,kod); return szablon,wynik; end; local __FUNKCJA2=function(szablon,obiekt,kod) --- rozwijaj uzyskany szablon, dalej, gdy napotkasz, jeśli zostanie włączone zmienna indeksowania w postaci wartości logicznej; return czy_indeksowanie; end; </syntaxhighlight> Funkcja zwraca wartości, tzn. zmienną z przetworzenia nagłówkowego, bez usuniętych znaczników, stylów i znaków specjalnych, tzn. części otoczone pewnymi cudzysłowami z taką samą liczbą, więc pogrubienia i pochylenia tekstu: <syntaxhighlight lang="lua"> return naglowek, Znaczniki, SzablonyStylowe, ZnakiSpecjalne; </syntaxhighlight> Definicje tych zwróconych funkcji, tzn.: {{Code|Znaczniki}} {{Patrz|Znaczniki}}, {{Code|SzablonyStylowe}} {{Patrz|SzablonyStylowe}} i {{Code|ZnakiSpecjalne}} {{Patrz|ZnakiSpecjalne}}, którego opisy raczej przedstawiają ich nazwy, dokładnie one są udokumentowane tutaj: <syntaxhighlight lang="lua"> ---- tekst - tekst do przetworzenia; local function Znaczniki(tekst,jakie,__FUNKCJA1,__FUNKCJA2) ---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML;---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML; ---- funkcja do usuwania znaczników, tzn. w niej inne funkcje: __FUNKCJA1 - funkcja do zakodowywania tekstu przed usuwaniem znaczników, a __FUNKCJA2 - funkcja do odkodowania tego, co pozostało; tekst=p["UsuńZnaczniki"](tekst,jakie,__FUNKCJA1,__FUNKCJA2); return tekst; end; local function SzablonyStylowe(tekst) ---- funkcja do usuwania uruchomionych stylów, tzn. tych: <templatestyles src="..."/>, wtedy to staje się kodem parsera przetwarzanego za pomocą tekstu dla tego typu znacznika, kodami parsera mogą być też inne obiekty jak ramki Lua w Scribunto, ale nie muszą być takie, ale my rozważamy tutaj tylko jeden typ kodu parsera. tekst=p["UsuńSzablonyStylów"](tekst); return tekst; end; local function ZnakiSpecjalne(tekst) ---- funkcja do usuwania cudzysłowów w takich samych ilościach z prawej i z lewej strony danego fragmentu tekstu w nim; tekst=p["UsuńZnakiSpecjalne"](tekst); return tekst; end; </syntaxhighlight> Definicje tych funkcji znajdują się również w module: {{Code|{{ld2|Specjalne}}}}, które również przedstawiają inne funkcje do upraszczania tekstu, w tym nagłówka, ale nie tylko, bo dowolnego tekstu. === {{Śródtytuł|RefPrzypisowy}}{{Code|RefPrzypisowy}} === Mechanizm zamieniający kod referencji na jej wersję wyświetlaną na ekranie, czyli w nawiasie kwadratowym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local RefPrzypisowy=function(obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|obiekt}} {{Patrz|obiekt-ref}} - nazwa typu przypisu, czyli jak bez nazwy, czy też jak: '''uwaga''', * {{Code|kod}} {{Patrz|kod-ref}} - numer danego typu przypisu. Gdy {{LinkPatrz|obiekt-ref}} nie ma nazwy, wtedy w nawiasie kwadratowym będzie tylko numerek {{LinkPatrz|kod-ref}}, a jeśli ma nazwę, to nazwa oddzielona spacją z prawej strony, a po nim jest ten numerek. === Dalsza część funkcji - Tom I === Tutaj opowiemy o części wstępnej tej funkcji. ==== Ustalanie zmiennej nazwy modułu aktualnej, czy bieżącej ==== Funkcja ustawia zmienną: {{Code|czy_kodowanie}} {{Patrz|czy_kodowanie}}, na podstawie istnienia zmiennych: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} i {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. ==== Wyznaczanie nazwy modułu aktualnej, czy bieżącej, dla strony aktualnej, jeśli ona nie istnieje ==== Jeżeli zmienna {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} jest odpowiadającej wartości fdałszywej i mamy strona korzystaną, co określa parametr {{LinkPatrz|czy_artykul_korzystany}}, w postaci wartości prawdziwej, wtedy są liczone kolejne zmienne nazw na podstawie istnienia lub nieistnienia zmiennej {{Code|alternatywna}}, a jeśli ona jest prawdziwa, wtedy wybierane są zmienne z tą aktualną nazwą woluminu wynikłe z {{LinkZobaczTeż|strona_aktualna}}, przeciwnie z nazwą bieżącą woluminu,na podstawie tego, co wyświetla '''Stronicowy Parser''', te nazwy są ze sobą łączone, wtedy powstaje pełna nazwa strony, którą przyrównujemy do {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}}. Jeśli wartość {{LinkPatrz|czy_artykul_korzystany}} jest jednak fałszywa, w takim razie jest liczona {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} na podstawie wartości {{LinkPatrz|nazwa_strony}}. ==== Kodowanie '''HTML''' specjalnych znaków strony ==== Nazwę strony {{LinkPatrz|nazwa_strony}}, w której mogą występować specjalne znaki, które są niezrozumiałe z punktu widzenia '''HTML''', jeżeli np.z nich trzeba zbudować identyfikatory '''id''', a więc trzeba je zakodować, robimy to funkcją: {{Code|{{sr|#p.EncodeId|p=Html}}}}. ==== Zwracanie funkcji liczenia numeru nagłówka ==== Wyznaczamy funkcję: {{Code|HNumer}} {{Patrz|HNumer}}, która jest efektem zwrócenia przez: {{Code|{{sr|#p.LiczonyHNumer|p=StronicowyParser/Potrzebne}}}}. ==== Zamienianie szablonów nagłówków, czy nawet tych znaczników, na rozdziały równaniowe ==== Jeśli {{LinkPatrz|czy_kodowanie}} przyjmuje wartość prawdziwą, wtedy definiujemy funkcję: {{LinkŚródtytuł|SpecjalneWprowadzeniaTekstu}}. Dalej funkcja zamienia szablony: {{s|SpisTreści}} i {{s|HNumer}}, a także znaczniki: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, na ich wersję równaniową, aby dało się je rozpoznać jako rozdziały i było je łatwo wsadzić do szablonu takiego jak: {{s|Spis treści}} i inne podobne, za pomocą dwóch kolejnych funkcji wsadzonych do pewnej funkcji modułu {{m|Szablonowe}}, która służy do operacji na takich przypadkach. === Dalsza część funkcji - Tom II === Tu powiemy coś o iteratorze, który po zebraniu danych zwraca zmienną {{Code|nil}}, co odpowiada dla pętli, jej przerwaniu. ==== Definicja iteratora zbierania informacji o stronie ==== Aby uruchomić pętle na rzeczywistych danych zakodowanej, czy nie, stronie, trzeba otrzymać zmienną pętli {{Code|iterator}} {{Patrz|iterator}} i go wywoływać bezparametrowo w każdym okrążeniu pętli, aby tak się stało, to trzeba uruchomić funkcję: {{Code|{{sr|#p.IterTekst|p=StronicowyParser/Rozdziały}}}}, na tekście {{LinkPatrz|tekst_artykulu}}, traktując tekst, jakby nie był taki zakodowany, bo tutaj jedynie się liczą elementy niezakodowane, czyli w tym przypadku nagłówki z tekstem rozdziału. ==== Zbieranie informacji o stronie w pętli generowanej przez iterator ==== Będziemy tutaj opisywali pętlę generowaną przez jego iterator {{LinkPatrz|iterator}}. W każdym okrązeniu pętli otrzymujemy dane: * {{Code|naglowek_tab}} {{Patrz|naglowek_tab}} - gdzie pierwszy jego element to {{Code|naglowek}} {{LinkPatrz|naglowek}}, * {{Code|text_rozdzialu}} {{Patrz|text_rozdzialu}} - tekst rozdziału, * {{Code|poziom_rozdzialu}} {{Patrz|poziom_rozdzialu}} - poziom rozdziału. ===== Definicja nowe wartości zbierania uchwytów nagłówka w zmiennej numeracji ===== Deklaracja zmiennej {{Code|numeracja}} {{LinkPatrz|numeracja}} jest na zewnętrz pętli, w niej tworzymy jej nową wartość, którą jest tablica pusta. ==== Uzyskiwanie informacji z tekstu rozdziału nagłówka, i jego możliwych uchwytach, w poszczegolnym okrążeniu pętli, i zrzuceniu tam pojedynczego kodu problemu ==== Jeżeli tekst strony jest zakodowany, to iterujemy po tekście {{LinkPatrz|text_rozdzialu}} w poszukiwaniu kodów bazy kodów zakodowanego tekstu, w tym celu wywołujemy pętlę: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, wtedy uzyskujemy trzy obiekty w każdym przebiegu pętli, tzn. {{Code|szablon}} {{LinkPatrz|szablon}}, {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, za pomocę tego uruchamiamy funkcję: {{LinkŚródtytuł|SzablonNaglowkujWTekscieRozdzialu}}. Jeżeli funkcja napotkała uchwyt szablonu: {{Code|{{s|Śródtytuł}}}}, wtedy jest zatrzymywana, w takim razie mamy informację o wystąpieniu niedozwolonego szablonu nagłówka w tekście. A jeżeli takiego szablonu tam nie ma, to układ iterator {{LinkPatrz|iterator}} iteruje aż do zakończenia danych. ==== Uzyskiwanie nagłówka i do niego identyfikatora '''id''' ==== ===== Tekst niezakodowany nagłówka ===== Gdy tekst nie jest zakodowany, wtedy zmienna: {{LinkPatrz|czy_kodowanie}}, ma wartość odpowiaadające fałszywej, wtedy dla tego nagłówka {{LinkPatrz|naglowek}} jest uruchamiana funkcja: {{Code|{{sr|#p.["PrzetwórzNagłówek"]|p=Specjalne}}}}, wtedy otrzymujemy dwie wartości: {{Code|nazwa_rozdzialu_w_artykule}} {{Patrz|nazwa_rozdzialu_w_artykule}} - zmienna idententyfikatora, {{Code|naglowek}} {{LinkPatrz|naglowek}} - zmienna nagłówka. Te dwie zmienne zostały maksymalnie rozwinięte, zostały przystosowane do tego, aby słuzyły do tego, co trzego zostały stworzone. ===== Tekst zakodowany nagłówka ===== Gdy jednak {{LinkPatrz|czy_kodowanie}} przyjełajednak wartość fałszywą, wtedy jest uruchamiana funkcja: {{LinkŚródtytuł|SzablonyWywolywaneOgolny}}, z której otrzymujemy: {{Code|naglowek}} {{LinkPatrz|naglowek}} - zmienna przetworzonego i maksymalnie rozwiniętego nagłówka, oraz zmienne funkcje: {{LinkPatrz|Znaczniki}}, {{LinkPatrz|SzablonyStylowe}} i {{LinkPatrz|ZnakiSpecjalne}}. Na podstawie defiicji: {{Code|nazwa_rozdzialu_w_artykule}} {{LinkPatrz|nazwa_rozdzialu_w_artykule}}, mamy: {{Code|naglowek}} {{LinkPatrz|naglowek}}. ====== Kompletowanie nagłówka ====== Ten nagłówek kompletujemy funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, usuwając szablony indeksowania {{LinkPatrz|p.szablony_indeksowania}}, a także znaczniki: {{Tag|li}}, {{Tag|ul}} i {{Tag|ol}}. ====== Kompletowanie identyfikatora nagłówka ====== Kompletując: {{Code|nazwa_rozdzialu_w_artykule}} {{LinkPatrz|nazwa_rozdzialu_w_artykule}}, rozwijamy wszystko, oprócz atrybutów, {{Code|obiekt}} {{Code|{{=}}}} {{Code|ATRYBUTY}}, a na szablonach wywołujemy funkcję: {{LinkŚródtytuł|SzablonyWywolywaneOgolny}}. Na identyfikatorze nagłówka {{LinkPatrz|nazwa_rozdzialu_w_artykule}} Wywołujemy kolejno lokalne funkcje: {{LinkPatrz|SzablonyStylowe}} - do usuwania rozwiniętych kodów stylów, {{LinkPatrz|ZnakiSpecjalne}} - do usuwania cudzysłowów, i {{LinkPatrz|Znaczniki}} - do usuwania znaczzników. ====== Gdy w kodzie identyfikatora nie ma symbolicznych szablonów ====== W tym przypadku uruchamiamy fukcję do dekodowania znaków '''HTML''', tzn. dziesiętnych, szesnastkowych i literowych, funkcją: {{Code|{{sr|#p.DecodeKoduHTMLZnaku|p=Html}}}}, a później kodujemy specjalne znaki identyfikatora sposobem: {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, przy pomocy kodów '''HTML''' dziesiętnych. ===== Usuwanie zbędnych znaków w identyfikatorze ===== Usuwane są potrójne i podwójne cudzysłowy {{Code|'}} oraz odstępy i dolne myślniki na końcach łańcucha, a wewnętrz jego kolejne je są zastępowane jedną spacją. ===== Referencje i wzory matematyczne ===== Referencje są zastępowane odpowiednio przy pomocy funkcji: {{LinkŚródtytuł|RefPrzypisowy}}, a wzory matematyczne, dla obiektów typu {{Code|POSTMATH}} {{Patrz|POSTMATH}}, które są zastępowane prawidłowo poprzez: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.text.encode|b=tak}}}}, przy pomocy: {{Code|{{sr|#p.NormaKoduZakodowanegoHtmlTekstu|p=Szablonowe}}}}, obiektem: {{Code|postMath}} {{Patrz|postMath}} z ośmioma znakami cyferkami na końcu tego, którym jest {{Code|kod}} {{LinkPatrz|kod}}. ===== Wstępne przygotowanie identyfikatora do końcowego skutecznego użytku ===== Dla danego identyfikatora one mogą się powtarzać, a identyfikator musi być unikalny, zatem trzeba napisać ich dodatkowe numerki, po policzeniu otrzymamy {{Code|numer_tego_samego_naglowka}} {{Patrz|numer_tego_samego_naglowka}}. ====== Tablica identyfikatora i nagłówka ====== Dla {{LinkPatrz|numer_tego_samego_naglowka}} równego {{Code|1}}, tworzemy tablicę,którego pierwszym elementem jest: {{LinkPatrz|nazwa_rozdzialu_w_artykule}}, a drugim nagłówek {{LinkPatrz|naglowek}}, a w przypadku tego numerku innego niż podana liczba, to dajemy do identyfikatora na końcu ten numerek po dolnym myślniku. ====== Uzupełnianie zmiennej do identyfikacji uchwytu z odpowiednim nagłówkiem ====== Jeśli: {{LinkPatrz|obiekty}} i {{LinkPatrz|numeracja}}, istnieją, wtedy do tej pierwszej tablicy dodawane są wszystkie elementy o takim samym typie z {{LinkPatrz|numeracja}}. To dodawanie na końcu tablicy przedstawia się: <syntaxhighlight lang="lua"> for _,value_numeracja in ipairs(numeracja)do obiekty[#obiekty+1]={value_numeracja,{nazwa_strony_z_naglowkami,elementy_linku[1], elementy_linku[2]}}; end; </syntaxhighlight> ====== Tworzenie tablicy nagłówkami i indetyfikatorami ====== {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> a7wrb8rawfwg64wu4hlv1fhzi0z93z7 548350 548349 2026-07-26T12:07:52Z Persino 2851 /* Tworzenie tablicy nagłówkami i indetyfikatorami */ 548350 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}|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.PobieranieInformacjiRamkiRozpatrywanejStrony}}{{Code|p.PobieranieInformacjiRamkiRozpatrywanejStrony}} == Pobieranie danych z obiektu {{LinkPatrz|self}}, biorąc jego podtablicę o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiRamkiRozpatrywanejStrony(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa ramki tablicy transportu. == {{Śródtytuł|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}}{{Code|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}} == Funkcja uruchamiacz, główna funkcja dzięki, której ładują się informacje według modułu: {{Code|{{ld2|StronicowyParser/informacje}}}} (tam jest użyty). Ten ładowacz jest pokazany w module opis: {{Code|{{lr2|Moduły/StronicowyParser/informacje}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}. === {{Śródtytuł|DaneNazw}}{{Code|DaneNazw}} === Funkcja licząca nazwy podanej nazwy strony, tzn.: {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} {{Patrz|nazwa_artykulu}}, oraz zwracające te kolejno nazwy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function DaneNazw(pelna_nazwa_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|pelna_nazwa_strony}} {{Patrz|pelna_nazwa_strony}} - pełna nazwa strony. === Dalsza część funkcji - Tom I === ==== Tworzenie i inicjowanie początkowych tabel ==== Funkcja tworzy podtabele tabeli zmiennej obiektowej {{LinkPatrz|self}} o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, o wartości pustej. Następnie są tworzone podtabele puste w tej ostatniej o kluczach: {{Code|dane_analizy_stron}} {{Patrz|dane_analizy_stron}} i {{Code|licencja}}{{Patrz|licencja}}, oraz nilowe zmienne z tego samego, co ostatnie, o kluczu: {{Code|problemy}} {{Patrz|problemy}}. ==== Zmienne nazw strony bieżącej, czy nawet aktualnej, w zależności, czy istnieją odpowiednie ustawienia ==== Jest liczony adres strony, na której jest uruchomiona dana strona, wewnętrznej bezparametrowo według: {{Code|{{sr|#p["PełnaNazwaArtykułu"]|p=Książkowe}}}} {{Patrz|strona_aktualna}}, co z tego są liczone z niego: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, co z tego jest liczona pełna nazwa książki {{Code|pelna_nazwa_ksiazki}} {{Patrz|pelna_nazwa_ksiazki}}. ==== Zbieranie danych ustawień z: {{Code|.../config}}, jeśli istnieją ==== Jest liczony pełny adres ustawień: {{Code|pelna_nazwa_ksiazki_ustawienia}} {{Patrz|pelna_nazwa_ksiazki_ustawienia}}, według schematu: {{Code|"Szablon:Podręcznik/Ustawienia/"..pelna_nazwa_ksiazki}} {{Patrz|UstawieniaKsiążki}}. Co z tego jest sprawdzane, czy istnieje strona: {{Code|pelna_nazwa_ksiazki_ustawienia.."/config"}} {{Patrz|config}}, a jeśli tak, to wtedy wiemy, że to jest szablon, to go przedstawiamy w postaci szablonowej, licząc z: {{Code|{{sr|#p.NazwaSzablonu|p=Szablonowe}}}}. Dalej jest liczony ostatni wyliczony szablon z parametrem {{Code|książka}} {{Patrz|książka}}, dalej jeszcze raz, tym razem z parametrem: {{Code|artykuł}} {{Patrz|artykuł}} - te parametry przedstawiają parametry artykułu książkowego, skąd możemy ściągać stronę, by ją wyświetlić na stronie aktualnej, na pewno parametr {{LinkPatrz|książka}} nie może być parametrem składających z samych znaków odstępów, a jeśli tak jest, w takim razie z tych dwóch parametrów jest liczony parametr {{Code|strona}} {{Patrz|strona}}. Dalej liczymy, czy ona jest poprawnym adresem, używając funkcji: {{Code|{{sr|#p["CzyNiepoprawnaNazwa"]|p=Pudełko/Tom I}}}}. A jeżeli adres jest jednak poprawny, ta funkcja zwraca wartość odpowiadającej fałszywej wartości, wtedy jest liczony pełny adres strony, jeżeli ona jest względna z parametrów, tzn. parametr pierwszy: {{LinkPatrz|strona}}, i parametr drugi: {{LinkPatrz|strona_aktualna}}, co względem tej funkcji mamy już: {{LinkPatrz|strona}}, czyli po tej operacji (procedurze) policzyliśmy bezwzględny jego adres. ===== Liczenie nazw z parametru pełnej nazwy aktualnej, nie bieżącej, strony wynikłe z obliczeń z ustawień ===== Policzona wartość strony: {{LinkPatrz|strona}}, jest sprawdzana, czy adres (strona), pod którym ona się kryje, istnieje, a jeśli tak, to ten adres jest tylko formatowany. Porównujemy adres {{LinkPatrz|strona}} z {{LinkPatrz|strona_aktualna}}, czy przedstawiają nie ten sam adres, a jeżeli tak, to liczymy wszyskie nazwy strony, czyli dla bez {{Code|aktualna_}}, przyrównujemy do tego z tym początkiem, co odpowiada pełnej nazwie strony z {{Code|strona_aktualna}} {{LinkPatrz|strona_aktualna}} {{ZobaczTeż|strona_aktualna}}, i używając funkcji: {{LinkŚródtytuł|DaneNazw}}, ze zmiennej: {{Code|strona}} {{LinkPatrz|strona}} {{ZobaczTeż|strona}}. Te ostatnie nazwy są potrzebne do analizy strony bieżącej, nie aktualnej, tzn. na niej, jakie są szablony, jakie posiada spisy, jakie książki, a w nim spisy do nich, są dołączone. ====== Policzone nazwy strony aktualnej wpisane do ogólnej tablicy ====== A póżniej z adresów pliczonych wywołania, dotyczącej tego aktualnego, liczymy dla podtabeli: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienne o kluczach: {{Code|aktualna_nazwa_przestrzeni}} {{Patrz|aktualna_nazwa_przestrzeni}}, {{Code|aktualna_nazwa_przestrzeni_ksiazki}} {{Patrz|aktualna_nazwa_przestrzeni_ksiazki}}, {{Code|aktualna_nazwa_ksiazki}} {{Patrz|aktualna_nazwa_ksiazki}} i {{Code|aktualna_nazwa_artykulu}} {{Patrz|aktualna_nazwa_artykulu}}, mając zmienne nazw policzone z tego aktualnego. ===== Czy strona bieżąca, ale nie zbiorcza, jest wyświetlana na stronie aktualnej, czy może jest tylko stroną zbiorczą uruchomioną pod inną nazwą ===== Jeśli zmienne nazw są policzone z: {{LinkZobaczTeż|strona}} i {{LinkZobaczTeż|strona_aktualna}}, to wtedy kolejno porównujemy, czy któraś z nich jest nierówna, a jeśli tak, to wywołujemy szablon z parametru: {{Code|zastępcza}} {{ZobaczTeż|zastępcza}} - jest to, czy strona jest zbiorcza, o nazwie: {{LinkPatrz|config}}, czy powinna być wartością niepustą. A jak tak, to wyznaczamy z tablicy: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienną o kluczu: {{Code|alternatywna}} {{Patrz|alternatywna}}, co przyrównujemy jemu wartość logiczną z uzyskanego z szablonu z parametrem {{LinkZobaczTeż|zastępcza}}, a jeżeli ta zmienna przyjmuje wartość odpowiadająca fałszywej, wtedy zmienna z tej samej tablicy o kluczu: {{Code|inna_strona_aktualna_niz_biezaca}} {{Patrz|inna_strona_aktualna_niz_biezaca}} - jest to, czy strona jest inna niż zbiorcza, ale wyświetlana na innej stronie, przyjmuje wartość prawdziwą. === Dalsza część funkcji - Tom II === Tworzymy zmienną: {{Code|tablica_zmiennych}}, która jest tablicą pustą, którą uzupełniamy o elementy o kluczach: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}} - są to dane zebrane z bieżącej strony, i {{Code|linkobiekt}} {{Patrz|linkobiekt}} - są to dane zebrane o linkach na stronie odpowiadających poszczególnym obiektom. Uruchamiamy funkcję: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}, z której wyznaczamy parametr: {{Code|tabela_listy_danych_analizy_ksiazki}} - są to dane zebrane z bieżącej i innych stron skojarzonej z nim, te elementy są tylko w postaci nieprzetworzonej, ale przygotowanej. A jeśli ten parametr jest tabelką - a jeżeli nie jest, to nastąpił błąd przetwarzania, i funkcja nie idzie dalej w instrukcję warunkową, wtedy wywołujemy funkcję: {{Code|{{sr|#p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony|p=StronicowyParser/NumeracjaObiektówStron}}}}. === Dalsza część funkcji - Tom III === Na sam koniec funkcji zwracamy tablicę: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}} - ta zmienna zawiera dane w postaci przetworzonej policzonej, tzn. uchwytom są przydzielone numeracje, sprawdzane, czy uchwyty są policzone, są wyznaczone wszystkie kody problemów, które później są potrzebne do wyznaczania wszystkich kategorii błędów na stronie. == {{Śródtytuł|p.SpisRzeczyWedlePodanegoTekstu}}{{Code|p.SpisRzeczyWedlePodanegoTekstu}} == Funkcja generowania liczenia nagłówków strony, co na tej podstawie może być generowany '''spis treści''' strony. Funkcja przyporządkowuje uchwytom szablonów nagłówków ich identyfikatory i te nagłówki, w którym one leżą, jeżeli zmienna {{LinkPatrz|obiekty}} istnieje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SpisRzeczyWedlePodanegoTekstu(self,tekst_artykulu,nazwa_strony,czy_artykul_korzystany, tylko_naglowek,obiekty,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_obiektow_strony_danych_kodow_specjalnych_modul,KtorySzablonMaZwracacKategorie,wzory_zamiast_kodow,tabela_elementow_strony_kodow)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}} - tekst przetworzony, przygotowany ewentualnie przez pewną funkcję, rozważanego artykułu, * {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} - nazwa strony, danego spisu, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy strona jest bieżąca, * {{Code|tylko_naglowek}} {{Patrz|tylko_naglowek}} - pisz adresy stron z tylko nagłówkami '''#''', bez adresów stron, * {{Code|obiekty}} {{Patrz|obiekty}} - elementy tam zebrane, są wykorzystywane do analizy nagłówków poprzez szablon {{s|Śródtytuł}}, któremu temu nagłówkowi odpowjada pewien uchwyt, czy uchwyty, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}, * {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} - nazwa aktualna, czy bieżąca strony, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy zebranych informacji w postaci zakodowanej modułu {{m|Szablonowe}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tabela przeanalizowanych elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} {{Patrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} - tablica dwuwymiarowa kodów o kluczach: szablonów referencji: '''REF...''' i '''POSTMATH''' oraz ich elementu numeru kodu {{Code|kod}}, którego elementem jest kod tego elementu, * {{Code|KtorySzablonMaZwracacKategorie}} {{Patrz|KtorySzablonMaZwracacKategorie}} - tabela składająca się z trzech elementów, którego pierwszy element to: {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{Patrz|KtorySzablonMaZwracacKategorieNaglowek}} - funkcja dla szablonów problemów dla jak: {{s|Śródtytuł}}, w nagłówku, drugi: {{Code|KtorySzablonMaZwracacKategorieTekst}} {{Patrz|KtorySzablonMaZwracacKategorieTekst}} - funkcja dla tego typu szablonów, ale dla nich w tekście, nie w nagłówku, trzeci: {{Code|CzyJestTakiProblemJakoElementTablicy}} {{Patrz|CzyJestTakiProblemJakoElementTablicy}} - czy nie rozważać, dla rozdziałów zerowych, przeciwnie: ta funkcja może przyjmować wartość {{Code|nil}}, wartość zwracana tego elementu, bo to jest funkcja, zależy, czy jest ustawiony kod problemu: {{Code|nagłówek w tekście rozdziału w stronie korzystanej}} {{Patrz|nagłówek w tekście rozdziału w stronie korzystanej}}, a jeżeli jest taki, to ta funkcja przyjmuje zrzuconą wartość {{Code|true}}, * {{Code|wzory_zamiast_kodow}} {{Patrz|wzory_zamiast_kodow}} - rozważaj wzory według tablicy: {{LinkPatrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}}, lub koduj to według funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}} - to wykorzystuj w przypadku, gdy: {{LinkPatrz|nazwa_strony}}, istnieje, i jest wartością pustą, lub {{Code|{{sr|#p.NormaKoduZakodowanegoWikiTekstu|p=Szablonowe}}}} - przeciwnie, * {{Code|tabela_elementow_strony_kodow}} {{Patrz|tabela_elementow_strony_kodow}} - baza tabela z zapamiętanymi podtabelami, którego poszczególne elementy wykorzystywane w spisie posiadają w sobie tylko pierwszy element w postaci przetworzonego uchwytu, bo używamy tylko uchwytów szablonów nagłówków. === {{Śródtytuł|SpecjalneWprowadzeniaTekstu}}{{Code|SpecjalneWprowadzeniaTekstu}} === Funkcja zamieniające pewne szablony, czy znaczniki, na rozdziały równaniowe. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local SpecjalneWprowadzeniaTekstu=function(szablon,obiekt,kod,czy_szablon,czy_znacznik,czy_liczyc,funkcja1,funkcja2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} {{Patrz|szablon}} - zmienna (szablon), nie musi być to normalny szablon, * {{Code|obiekt}} {{Patrz|obiekt}} - zmienna, którego typu jest obiekt, * {{Code|kod}} {{Patrz|kod}} - numer obiektu typu {{LinkPatrz|obiekt}}, * {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy to jest szablon, * {{Code|czy_znacznik}} {{Patrz|czy_znacznik}} - czy to jest znacznik, * {{Code|czy_liczyc}} {{Patrz|czy_liczyc}} - czy funkcję liczyć w sposób złożony, szablony typu: {{s|SpisTreści}} - zamieniający go na znacznik, czy prosty, co na samym końcu uruchamiana jest funkcja: {{LinkPatrz|funkcja1}}, * {{Code|funkcja1}} {{Patrz|funkcja1}} - funkcja operująca na wygenerowanym pośrednio (dłuższe liczenie) lub bezpośrednio (krótsze) znaczniku, wychodząca z szablonu, i zamieniająca go na rozdział równaniowy, funkcja operująca dla szablonów: {{s|SpisTreści}} lub {{s|HNumer}}, * {{Code|funkcja2}} {{Patrz|funkcja2}} - funkcja operująca na znaczniku '''HTML''' nagłówka - typu jak: {{Tag|h1}}, i zamieniająca go na rozdział równaniowy. ==== {{Śródtytuł|ParametrNR}}{{Code|ParametrNR}} ==== Funkcja liczy dokładnie parametr dany o danym numerze, zbiór danych parametrów oznaczających to samo może być wiele, tylko że jedne mogą być ważniejsze od drugich. Definicja skrótowa funkcja: <syntaxhighlight lang="lua"> local function ParametrNR(numer)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer}} {{Patrz|numer}} - numer parametru. Funkcja wykorzystywuje funkcję do uruchomienia: {{Code|{{sr|#p.SpisRzeczySzablon|p=StronicowyParser/Potrzebne}}}}, do generowania parametrów, a właściwie ich wartości. ==== {{Śródtytuł|ObiektKodNumer}}{{Code|ObiektKodNumer}} ==== Funkcja dodająca do bazy danych kolejny element bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla danego obiektu element na samym końcu, po maksymalnym elemencie do niego. Funkcja liczy kod przy pomocy funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local ObiektKodNumer=function(szablon,obiekt)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}. ==== Dalszy opis funkcji ==== Dla {{LinkPatrz|czy_szablon}} prawdziwego dla szablonów sztucznego spisu treści, sprawdzanego przez tabelkę: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, dla danego szablonowego rozdziału generowanego według {{s|HNumer}}, jest on zamieniany na rozdział równaniowy poprzez funkcję: {{LinkPatrz|funkcja1}}. Ta tabela przedstawia się treścią: <syntaxhighlight lang="lua"> p.szablony_sztucznego_wprowadzenia_tekstu={ ["HNumer"]=1, }; </syntaxhighlight> Dla innych rozdziałów szablonowych, tym razem generowanego przez szablon {{s|SpisTreści}}, którego parametry są wyznaczane przez funkcję: {{LinkŚródtytuł|ParametrNR}}, tabelka parametrów opisująca to: <syntaxhighlight lang="lua"> p.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu={ ["SpisTreści"]={{"artykuł",1,},{"książka",2,},{"nazwa",3,},{"dodatek",4,},{"poziom",},}, }; </syntaxhighlight> Funkcja liczy artykuł, koloruje do niego link w: '''spisie treści''', na czerwona, wtedy generuje dodatkowy znacznik, z właściwością: {{Code|color:red}}, gdy on nie istnieje, i to wstawia do tabeli bazy, lub bez niego, wtedy bezposrednio generuje tekst równy nazwie tego szablonu, opakowany, lub nie, w zależności od istnienia. Do policzenia strony, czy ona istnieje, musi być przedtem zdekodowany funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, by później policzyć to sprawdzenie przy pomocy: {{Code|{{sr|#p.PoliczZbiory|p=Techniczne}}}}. W każdym bądź razie jest ruchumianiana funkcja: {{LinkPatrz|funkcja1}}. Gdy to nie jest szablon, tzn.: {{LinkPatrz|czy_szablon}}, jest fałszywe, ale {{LinkPatrz|czy_znacznik}} jest prawdziwe, to takie znaczniki, jak od: {{Tag|h1}} do {{Tag|h6}}, są zamieniane na czysty tekst. W takim razie wywoływana jest dla tego przypadku funkcja: {{LinkPatrz|funkcja2}}. Funkcja: {{LinkPatrz|funkcja1}}, jest dla szablonów nagłówków, a: {{LinkPatrz|funkcja2}}, dla znaczników nagłówków. Z tych generowanych czystych generowanych tekstów są tworzone w tekście rozdziały równaniowe, by później wygenerować '''spis treści''', właśnie z nimi - z tymi nagłówkami, a bardziej ściśle linkami do nich. === {{Śródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}{{Code|SzablonNaglowkujWNaglowkuRozdzialu}} === Fukcja do obsługi nagłówków {{LinkPatrz|Śródtytuł}} w nagłówku, nie w tekście poza nim. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWNaglowkuRozdzialu(szablon,obiekt,kod,powtorka,parametry_wywolania_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}, * {{Code|powtorka}} {{Patrz|powtorka}} - numer użycia takiego samego szablonu typu {{s|Śródtytuł}} {{Patrz|Śródtytuł}}, * {{Code|parametry_wywolania_szablonu}} {{Patrz|parametry_wywolania_szablonu}} - parametry szablonu wraz z ich wartościami, * {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} - nazwa szablonu wywołania, * {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} - modyfikatory szablonu. Funkcja sprawdza, czy szablon w nagłówku jest typu {{LinkPatrz|Śródtytuł}}, a jeżeli tak, to liczy jego uchwyt, najpierw wyznacza je z parametru o nazwie {{Code|uchwyt}} {{Patrz|uchwyt}}, dalej sprawdzane jest, czy taki uchwyt tak zdefiniowany istnieje, jeśli tak, to wydobywana jest jego przetworzona tabela z tym właśnie uchwytek, funkcja robi to względem numeru {{Code|kod}} {{LinkPatrz|kod}} tego szablonu na podstawie funkcji: {{Code|{{sr|#p.WydobywanieUchwytuZeiBezNumeracji|p=StronicowyParser/ZbieranieDanychStron}}}}. Jeżeli wydobyta tabela {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} nie istnieje, w takim razie jest ona dekodowana funkcją: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, a później jest traktowana jako adres '''URL''', tzn. jest dekodowana funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, dalej jest tworzona tabela pusta: {{LinkPatrz|lista_dwuelementowa}}, co dalej jest tam wstawiana do niej jako pierwszy element uzyskany uchwyt przetworzony. A jeśli jednak {{LinkPatrz|lista_dwuelementowa}} została wydobyta z naszej funkcji tabela, która istnieje, wtedy funkcja idzie, niż poprzednio, w inny krok instrukcji warunkowej, wtedy z tej tabeli jest wydobywany pierwszy element jako przetworzony wcześniej uchwyt. Gdy {{ZobaczTeż|uchwyt}} przetworzony uchwyt jest łańcuchem znaków niepusty, wtedy on jest dodawany w postaci tabeli, w której jest ten uchwyt, na sam koniec tabeli {{Code|numeracja}} {{Patrz|numeracja}}. Gdy liczba powtórzeń jest większa niż zero, wtedy jest wywoływana funkcja, przy którym mają być zwrócone kategorie, jeśli zostaną użyte, o nazwie {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}}. Gdy jednak uchwyt uzyskany nie istnieje, to wtedy jest to samo robione, co w: {{LinkZobaczTeż|uchwyt}}. Przed zwróceniem ile razy została dokonana powtórka, jest powiększany licznik powtorek, i to jest otrzymywane z tej funkcji. === {{Śródtytuł|SzablonNaglowkujWTekscieRozdzialu}}{{Code|SzablonNaglowkujWTekscieRozdzialu}} === Funkcja do analizy szablonów nagłówków w tekście rozdziału, nie w nagłówku. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWTekscieRozdzialu(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja sprawdza, czy tekst w bazie kodów jest typu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, w takim razie po wykryciu, że dla tego, że jest to wywołanie szablonowe, a nie instrukcja warukowa w wikikodzie w tekście, wtedy podobnie jest robione, co w funkcji: {{LinkŚródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}, tylko zamiast {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}} jest {{Code|KtorySzablonMaZwracacKategorieTekst}} {{LinkPatrz|KtorySzablonMaZwracacKategorieTekst}}. Przy wykryciu tam szablonu typu {{LinkPatrz|Śródtytuł}}, funkcja zawsze zwraca wartość {{Code|true}}, w innych przypadkach {{Code|false}}. W przypadku intrukcji warunkowej w wikikodzie i dla ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jest wtedy zwracana wartość {{Code|false}}. Funkcja w pozostałych przypadkach zwraca wartość logiczną {{Code|false}}. === {{Śródtytuł|SzablonyWywolywane}}{{Code|SzablonyWywolywane}} === Szablon zamieniający specjalne znaki szablonów, tzn.: {{Code|{{((}}}}, {{Code|{{))}}}}, {{Code|{{!}}}} i {{Code|{{=}}}}, kolejno na: {{Code|{{s|((}}}}, {{Code|{{s|))}}}}, {{Code|{{s|!}}}} i {{Code|{{s|{{=}}}}}}, takich {{ZobaczTeż|StronicowyParser}}, które zawierają wywołania '''Stronicowego Parsera''', czyli ramki typu: {{Code|{{m|StronicowyParser}}}}, czy: {{Code|{{m|StronicowyParser/}}}}, a inne są po prostu przypisywane. W przypadku linków, i nie tylko, tzn. dla szablonów {{LinkZobaczTeż|StronicowyParser}}, z innych stron niż korzystana, co jest trafnie oznaczone zaprzeczeniem parametru {{LinkPatrz|czy_artykul_korzystany}} są liczone parametry pudełkowe {{Code|{{m|Pudełko}}}}. Strony wskazane przez te parametry są analizowane, przy czym linki są przez inną funkcję, a inne już przez znów inną. Szablony nagłówków typu {{LinkPatrz|Śródtytuł}}, czy szablonów stronicowych otwierających i zamykających, one lub jego koledzy, tzn. ich: {{s|StronaStart}} i {{s|StronaKoniec}}, są zastępowane ciągiem pustym. Inne parametry opisane z tabeli {{Code|{{sr|#p.szablony_stronicowe_kontenerowe_formatowania_wzorowego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, są zastępowane ich zawartością, by uniknąć kontaktu nagłówków z tego typu szablonami. Szablony ideksowania określone tabelą: {{Code|{{sr|#p.szablony_indeksowania}}}} {{Patrz|p.szablony_indeksowania}}, nie są rozwijana z kodowania lub są, w zależności, czy zmienna: {{Code|czy_indeksowanie}} {{Patrz|czy_indeksowanie}}, ma wartość {{Code|true}} - tutaj są, czy odpowiadającej fałszywej wartości logicznej - a tutaj już nie. W przypadku instrukcji warunkowych, czy ramek {{lpg|Lua}} w {{lpg|Lua|Scribunto}}, one są rozwijane - kod tego jest zawartością {{LinkPatrz|szablon}}. W innych przypadkach funkcja zwraca wartość {{Code|nil}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywane(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. W powyższym opisie występują szablony opisane w: {{LinkPatrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, a jej definicja jest: <syntaxhighlight lang="lua"> p.szablony_stronicowe_kontenerowe_formatowania_wzorowego={ ["Formuła"]=1; }; </syntaxhighlight> Jest to szablon: {{s|Formuła}} i podobne, liniowe wstawiane do tekstu, ta tabela ma za zadanie zastąpić te szablony ich poszczególnym zawartościom, a ta funkcja, która ją wykorzystywuje się do tego przypadku, jest o nazwie: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}. Tabelą szablonów indeksowania, to są one zdefiniowane przez: {{LinkPatrz|p.szablony_indeksowania}}, a jej zawartość: <syntaxhighlight lang="lua"> p.szablony_indeksowania={ ["Kotwica"] =true, ["Indeksuj"]=true, }; </syntaxhighlight> Są to szablony kotwic: {{s|Kotwica}}, który jest szablonem liniowym, a {{s|Indeksuj}}, natomiast to blokowy. === {{Śródtytuł|SzablonyWywolywaneOgolny}}{{Code|SzablonyWywolywaneOgolny}} === Funkcja rozwija nagłówek, wydzielając z niego zwykły tekst, nie dopełniając pewnych operacji. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywaneOgolny(naglowek)...end; </syntaxhighlight> Parametry funkcji: * {{Code|naglowek}} {{Patrz|naglowek}} - tekst nagłówka napisu wprowadzenia tekstu. Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["WydzielZwykłyTekst"]|p=Specjalne}}}}, kod jej wywoływany jest z parametrami: <syntaxhighlight lang="lua"> local naglowek,Znaczniki,SzablonyStylowe,ZnakiSpecjalne=specjalne_modul["WydzielZwykłyTekst"]( { ---- tekst nagłówka; tekst=naglowek, ---- Nie wykorzystywuj w działaniu funkcji: Znaczniki, SzablonyStylowe, ZnakiSpecjalne; ["nagłówek"]=true, ---- Nie wykorzystuj dekodowania tekstu zakodowanego, bez rozwijania, ale wręcz przzeciwnie rozwijaj, pozostawiaj pewne szczególne kody przed rozkodowaniem; nieklasycznie=true, ---- Bazę kodowania weź z zewnątrz; kodowanie=false, ---- Wykorzystywana tablica kodowania tekstu modułu: Module:Szablonowe, zakodowanego z zewnątrz; ["tablica kodowania"]=tablica_analizy_obiektow_strony_dany_modul, },__FUNKCJA1,__FUNKCJA2); </syntaxhighlight> Ta funkcja wydziela zwykły tekst z nagłówka z szablonami zwykłymi i ramkami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, bez naruszenia działania innych elementów szablonowych, jak tagi, czyli: {{s|#tag:}}, które też współdziałają też w kodzie danego nagłówka. Również i z linkami wewnętrznymi i zewnętrznymi, z których wydziela się zwykły tekst, bo wiadomo, że one nie mogą się znaleźć w linkach '''spisu treści''', bo nie może być link w linku w nim, a one niezależnie jakie, bo to ze względu na {{Strong|HTML}} nie możliwe technologicznie. Definicje dwóch kolejnych funkcji zdefiniowanych powyżej: <syntaxhighlight lang="lua"> ---- szablon - kod obiektu kodu w wikikodzie; ---- obiekt - typ obiektu kodu powyżej; ---- kod - numer tego samego typu obiektu; local __FUNKCJA1=function(szablon,obiekt,kod) ---- Funkcja wykorzystywana do ewentualnego modyfikowania użytych szablonów i przedstawianiu jego kodem symbolicznym, lub zastępowania pewnych szablonów nagłówków wartością pustą; local szablon,wynik=SzablonyWywolywane(szablon,obiekt,kod); return szablon,wynik; end; local __FUNKCJA2=function(szablon,obiekt,kod) --- rozwijaj uzyskany szablon, dalej, gdy napotkasz, jeśli zostanie włączone zmienna indeksowania w postaci wartości logicznej; return czy_indeksowanie; end; </syntaxhighlight> Funkcja zwraca wartości, tzn. zmienną z przetworzenia nagłówkowego, bez usuniętych znaczników, stylów i znaków specjalnych, tzn. części otoczone pewnymi cudzysłowami z taką samą liczbą, więc pogrubienia i pochylenia tekstu: <syntaxhighlight lang="lua"> return naglowek, Znaczniki, SzablonyStylowe, ZnakiSpecjalne; </syntaxhighlight> Definicje tych zwróconych funkcji, tzn.: {{Code|Znaczniki}} {{Patrz|Znaczniki}}, {{Code|SzablonyStylowe}} {{Patrz|SzablonyStylowe}} i {{Code|ZnakiSpecjalne}} {{Patrz|ZnakiSpecjalne}}, którego opisy raczej przedstawiają ich nazwy, dokładnie one są udokumentowane tutaj: <syntaxhighlight lang="lua"> ---- tekst - tekst do przetworzenia; local function Znaczniki(tekst,jakie,__FUNKCJA1,__FUNKCJA2) ---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML;---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML; ---- funkcja do usuwania znaczników, tzn. w niej inne funkcje: __FUNKCJA1 - funkcja do zakodowywania tekstu przed usuwaniem znaczników, a __FUNKCJA2 - funkcja do odkodowania tego, co pozostało; tekst=p["UsuńZnaczniki"](tekst,jakie,__FUNKCJA1,__FUNKCJA2); return tekst; end; local function SzablonyStylowe(tekst) ---- funkcja do usuwania uruchomionych stylów, tzn. tych: <templatestyles src="..."/>, wtedy to staje się kodem parsera przetwarzanego za pomocą tekstu dla tego typu znacznika, kodami parsera mogą być też inne obiekty jak ramki Lua w Scribunto, ale nie muszą być takie, ale my rozważamy tutaj tylko jeden typ kodu parsera. tekst=p["UsuńSzablonyStylów"](tekst); return tekst; end; local function ZnakiSpecjalne(tekst) ---- funkcja do usuwania cudzysłowów w takich samych ilościach z prawej i z lewej strony danego fragmentu tekstu w nim; tekst=p["UsuńZnakiSpecjalne"](tekst); return tekst; end; </syntaxhighlight> Definicje tych funkcji znajdują się również w module: {{Code|{{ld2|Specjalne}}}}, które również przedstawiają inne funkcje do upraszczania tekstu, w tym nagłówka, ale nie tylko, bo dowolnego tekstu. === {{Śródtytuł|RefPrzypisowy}}{{Code|RefPrzypisowy}} === Mechanizm zamieniający kod referencji na jej wersję wyświetlaną na ekranie, czyli w nawiasie kwadratowym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local RefPrzypisowy=function(obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|obiekt}} {{Patrz|obiekt-ref}} - nazwa typu przypisu, czyli jak bez nazwy, czy też jak: '''uwaga''', * {{Code|kod}} {{Patrz|kod-ref}} - numer danego typu przypisu. Gdy {{LinkPatrz|obiekt-ref}} nie ma nazwy, wtedy w nawiasie kwadratowym będzie tylko numerek {{LinkPatrz|kod-ref}}, a jeśli ma nazwę, to nazwa oddzielona spacją z prawej strony, a po nim jest ten numerek. === Dalsza część funkcji - Tom I === Tutaj opowiemy o części wstępnej tej funkcji. ==== Ustalanie zmiennej nazwy modułu aktualnej, czy bieżącej ==== Funkcja ustawia zmienną: {{Code|czy_kodowanie}} {{Patrz|czy_kodowanie}}, na podstawie istnienia zmiennych: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} i {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. ==== Wyznaczanie nazwy modułu aktualnej, czy bieżącej, dla strony aktualnej, jeśli ona nie istnieje ==== Jeżeli zmienna {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} jest odpowiadającej wartości fdałszywej i mamy strona korzystaną, co określa parametr {{LinkPatrz|czy_artykul_korzystany}}, w postaci wartości prawdziwej, wtedy są liczone kolejne zmienne nazw na podstawie istnienia lub nieistnienia zmiennej {{Code|alternatywna}}, a jeśli ona jest prawdziwa, wtedy wybierane są zmienne z tą aktualną nazwą woluminu wynikłe z {{LinkZobaczTeż|strona_aktualna}}, przeciwnie z nazwą bieżącą woluminu,na podstawie tego, co wyświetla '''Stronicowy Parser''', te nazwy są ze sobą łączone, wtedy powstaje pełna nazwa strony, którą przyrównujemy do {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}}. Jeśli wartość {{LinkPatrz|czy_artykul_korzystany}} jest jednak fałszywa, w takim razie jest liczona {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} na podstawie wartości {{LinkPatrz|nazwa_strony}}. ==== Kodowanie '''HTML''' specjalnych znaków strony ==== Nazwę strony {{LinkPatrz|nazwa_strony}}, w której mogą występować specjalne znaki, które są niezrozumiałe z punktu widzenia '''HTML''', jeżeli np.z nich trzeba zbudować identyfikatory '''id''', a więc trzeba je zakodować, robimy to funkcją: {{Code|{{sr|#p.EncodeId|p=Html}}}}. ==== Zwracanie funkcji liczenia numeru nagłówka ==== Wyznaczamy funkcję: {{Code|HNumer}} {{Patrz|HNumer}}, która jest efektem zwrócenia przez: {{Code|{{sr|#p.LiczonyHNumer|p=StronicowyParser/Potrzebne}}}}. ==== Zamienianie szablonów nagłówków, czy nawet tych znaczników, na rozdziały równaniowe ==== Jeśli {{LinkPatrz|czy_kodowanie}} przyjmuje wartość prawdziwą, wtedy definiujemy funkcję: {{LinkŚródtytuł|SpecjalneWprowadzeniaTekstu}}. Dalej funkcja zamienia szablony: {{s|SpisTreści}} i {{s|HNumer}}, a także znaczniki: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, na ich wersję równaniową, aby dało się je rozpoznać jako rozdziały i było je łatwo wsadzić do szablonu takiego jak: {{s|Spis treści}} i inne podobne, za pomocą dwóch kolejnych funkcji wsadzonych do pewnej funkcji modułu {{m|Szablonowe}}, która służy do operacji na takich przypadkach. === Dalsza część funkcji - Tom II === Tu powiemy coś o iteratorze, który po zebraniu danych zwraca zmienną {{Code|nil}}, co odpowiada dla pętli, jej przerwaniu. ==== Definicja iteratora zbierania informacji o stronie ==== Aby uruchomić pętle na rzeczywistych danych zakodowanej, czy nie, stronie, trzeba otrzymać zmienną pętli {{Code|iterator}} {{Patrz|iterator}} i go wywoływać bezparametrowo w każdym okrążeniu pętli, aby tak się stało, to trzeba uruchomić funkcję: {{Code|{{sr|#p.IterTekst|p=StronicowyParser/Rozdziały}}}}, na tekście {{LinkPatrz|tekst_artykulu}}, traktując tekst, jakby nie był taki zakodowany, bo tutaj jedynie się liczą elementy niezakodowane, czyli w tym przypadku nagłówki z tekstem rozdziału. ==== Zbieranie informacji o stronie w pętli generowanej przez iterator ==== Będziemy tutaj opisywali pętlę generowaną przez jego iterator {{LinkPatrz|iterator}}. W każdym okrązeniu pętli otrzymujemy dane: * {{Code|naglowek_tab}} {{Patrz|naglowek_tab}} - gdzie pierwszy jego element to {{Code|naglowek}} {{LinkPatrz|naglowek}}, * {{Code|text_rozdzialu}} {{Patrz|text_rozdzialu}} - tekst rozdziału, * {{Code|poziom_rozdzialu}} {{Patrz|poziom_rozdzialu}} - poziom rozdziału. ===== Definicja nowe wartości zbierania uchwytów nagłówka w zmiennej numeracji ===== Deklaracja zmiennej {{Code|numeracja}} {{LinkPatrz|numeracja}} jest na zewnętrz pętli, w niej tworzymy jej nową wartość, którą jest tablica pusta. ==== Uzyskiwanie informacji z tekstu rozdziału nagłówka, i jego możliwych uchwytach, w poszczegolnym okrążeniu pętli, i zrzuceniu tam pojedynczego kodu problemu ==== Jeżeli tekst strony jest zakodowany, to iterujemy po tekście {{LinkPatrz|text_rozdzialu}} w poszukiwaniu kodów bazy kodów zakodowanego tekstu, w tym celu wywołujemy pętlę: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, wtedy uzyskujemy trzy obiekty w każdym przebiegu pętli, tzn. {{Code|szablon}} {{LinkPatrz|szablon}}, {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, za pomocę tego uruchamiamy funkcję: {{LinkŚródtytuł|SzablonNaglowkujWTekscieRozdzialu}}. Jeżeli funkcja napotkała uchwyt szablonu: {{Code|{{s|Śródtytuł}}}}, wtedy jest zatrzymywana, w takim razie mamy informację o wystąpieniu niedozwolonego szablonu nagłówka w tekście. A jeżeli takiego szablonu tam nie ma, to układ iterator {{LinkPatrz|iterator}} iteruje aż do zakończenia danych. ==== Uzyskiwanie nagłówka i do niego identyfikatora '''id''' ==== ===== Tekst niezakodowany nagłówka ===== Gdy tekst nie jest zakodowany, wtedy zmienna: {{LinkPatrz|czy_kodowanie}}, ma wartość odpowiaadające fałszywej, wtedy dla tego nagłówka {{LinkPatrz|naglowek}} jest uruchamiana funkcja: {{Code|{{sr|#p.["PrzetwórzNagłówek"]|p=Specjalne}}}}, wtedy otrzymujemy dwie wartości: {{Code|nazwa_rozdzialu_w_artykule}} {{Patrz|nazwa_rozdzialu_w_artykule}} - zmienna idententyfikatora, {{Code|naglowek}} {{LinkPatrz|naglowek}} - zmienna nagłówka. Te dwie zmienne zostały maksymalnie rozwinięte, zostały przystosowane do tego, aby słuzyły do tego, co trzego zostały stworzone. ===== Tekst zakodowany nagłówka ===== Gdy jednak {{LinkPatrz|czy_kodowanie}} przyjełajednak wartość fałszywą, wtedy jest uruchamiana funkcja: {{LinkŚródtytuł|SzablonyWywolywaneOgolny}}, z której otrzymujemy: {{Code|naglowek}} {{LinkPatrz|naglowek}} - zmienna przetworzonego i maksymalnie rozwiniętego nagłówka, oraz zmienne funkcje: {{LinkPatrz|Znaczniki}}, {{LinkPatrz|SzablonyStylowe}} i {{LinkPatrz|ZnakiSpecjalne}}. Na podstawie defiicji: {{Code|nazwa_rozdzialu_w_artykule}} {{LinkPatrz|nazwa_rozdzialu_w_artykule}}, mamy: {{Code|naglowek}} {{LinkPatrz|naglowek}}. ====== Kompletowanie nagłówka ====== Ten nagłówek kompletujemy funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, usuwając szablony indeksowania {{LinkPatrz|p.szablony_indeksowania}}, a także znaczniki: {{Tag|li}}, {{Tag|ul}} i {{Tag|ol}}. ====== Kompletowanie identyfikatora nagłówka ====== Kompletując: {{Code|nazwa_rozdzialu_w_artykule}} {{LinkPatrz|nazwa_rozdzialu_w_artykule}}, rozwijamy wszystko, oprócz atrybutów, {{Code|obiekt}} {{Code|{{=}}}} {{Code|ATRYBUTY}}, a na szablonach wywołujemy funkcję: {{LinkŚródtytuł|SzablonyWywolywaneOgolny}}. Na identyfikatorze nagłówka {{LinkPatrz|nazwa_rozdzialu_w_artykule}} Wywołujemy kolejno lokalne funkcje: {{LinkPatrz|SzablonyStylowe}} - do usuwania rozwiniętych kodów stylów, {{LinkPatrz|ZnakiSpecjalne}} - do usuwania cudzysłowów, i {{LinkPatrz|Znaczniki}} - do usuwania znaczzników. ====== Gdy w kodzie identyfikatora nie ma symbolicznych szablonów ====== W tym przypadku uruchamiamy fukcję do dekodowania znaków '''HTML''', tzn. dziesiętnych, szesnastkowych i literowych, funkcją: {{Code|{{sr|#p.DecodeKoduHTMLZnaku|p=Html}}}}, a później kodujemy specjalne znaki identyfikatora sposobem: {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, przy pomocy kodów '''HTML''' dziesiętnych. ===== Usuwanie zbędnych znaków w identyfikatorze ===== Usuwane są potrójne i podwójne cudzysłowy {{Code|'}} oraz odstępy i dolne myślniki na końcach łańcucha, a wewnętrz jego kolejne je są zastępowane jedną spacją. ===== Referencje i wzory matematyczne ===== Referencje są zastępowane odpowiednio przy pomocy funkcji: {{LinkŚródtytuł|RefPrzypisowy}}, a wzory matematyczne, dla obiektów typu {{Code|POSTMATH}} {{Patrz|POSTMATH}}, które są zastępowane prawidłowo poprzez: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.text.encode|b=tak}}}}, przy pomocy: {{Code|{{sr|#p.NormaKoduZakodowanegoHtmlTekstu|p=Szablonowe}}}}, obiektem: {{Code|postMath}} {{Patrz|postMath}} z ośmioma znakami cyferkami na końcu tego, którym jest {{Code|kod}} {{LinkPatrz|kod}}. ===== Wstępne przygotowanie identyfikatora do końcowego skutecznego użytku ===== Dla danego identyfikatora one mogą się powtarzać, a identyfikator musi być unikalny, zatem trzeba napisać ich dodatkowe numerki, po policzeniu otrzymamy {{Code|numer_tego_samego_naglowka}} {{Patrz|numer_tego_samego_naglowka}}. ====== Tablica identyfikatora i nagłówka ====== Dla {{LinkPatrz|numer_tego_samego_naglowka}} równego {{Code|1}}, tworzemy tablicę,którego pierwszym elementem jest: {{LinkPatrz|nazwa_rozdzialu_w_artykule}}, a drugim nagłówek {{LinkPatrz|naglowek}}, a w przypadku tego numerku innego niż podana liczba, to dajemy do identyfikatora na końcu ten numerek po dolnym myślniku. ====== Uzupełnianie zmiennej do identyfikacji uchwytu z odpowiednim nagłówkiem ====== Jeśli: {{LinkPatrz|obiekty}} i {{LinkPatrz|numeracja}}, istnieją, wtedy do tej pierwszej tablicy dodawane są wszystkie elementy o takim samym typie z {{LinkPatrz|numeracja}}. To dodawanie na końcu tablicy przedstawia się: <syntaxhighlight lang="lua"> for _,value_numeracja in ipairs(numeracja)do obiekty[#obiekty+1]={value_numeracja,{nazwa_strony_z_naglowkami,elementy_linku[1], elementy_linku[2]}}; end; </syntaxhighlight> ====== Tworzenie tablicy nagłówkami i indetyfikatorami ====== Jeśli {{Code|poziom_rozdzialu}} jest większy od zera, tzn. {{Code|> 0}}, wtedy liczymy numer rozdziału przy pomocy funkcji: {{Code|HNumer}} {{LinkPatrz|HNumer}}. Jest tworzona tablica spisu: {{Code|tablica_spisu_tresci}}, jako pusta tablica, z później dodanym elementem o kluczu: {{Code|nazwa_strony}}, którym jest o wartości: {{LinkPatrz|nazwa_strony_z_naglowkami}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> cdusgxigjdvd20ytjcnhd63cneekmuj 548351 548350 2026-07-26T12:14:39Z Persino 2851 /* Zamienianie szablonów nagłówków, czy nawet tych znaczników, na rozdziały równaniowe */ 548351 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}|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.PobieranieInformacjiRamkiRozpatrywanejStrony}}{{Code|p.PobieranieInformacjiRamkiRozpatrywanejStrony}} == Pobieranie danych z obiektu {{LinkPatrz|self}}, biorąc jego podtablicę o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiRamkiRozpatrywanejStrony(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa ramki tablicy transportu. == {{Śródtytuł|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}}{{Code|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}} == Funkcja uruchamiacz, główna funkcja dzięki, której ładują się informacje według modułu: {{Code|{{ld2|StronicowyParser/informacje}}}} (tam jest użyty). Ten ładowacz jest pokazany w module opis: {{Code|{{lr2|Moduły/StronicowyParser/informacje}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}. === {{Śródtytuł|DaneNazw}}{{Code|DaneNazw}} === Funkcja licząca nazwy podanej nazwy strony, tzn.: {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} {{Patrz|nazwa_artykulu}}, oraz zwracające te kolejno nazwy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function DaneNazw(pelna_nazwa_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|pelna_nazwa_strony}} {{Patrz|pelna_nazwa_strony}} - pełna nazwa strony. === Dalsza część funkcji - Tom I === ==== Tworzenie i inicjowanie początkowych tabel ==== Funkcja tworzy podtabele tabeli zmiennej obiektowej {{LinkPatrz|self}} o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, o wartości pustej. Następnie są tworzone podtabele puste w tej ostatniej o kluczach: {{Code|dane_analizy_stron}} {{Patrz|dane_analizy_stron}} i {{Code|licencja}}{{Patrz|licencja}}, oraz nilowe zmienne z tego samego, co ostatnie, o kluczu: {{Code|problemy}} {{Patrz|problemy}}. ==== Zmienne nazw strony bieżącej, czy nawet aktualnej, w zależności, czy istnieją odpowiednie ustawienia ==== Jest liczony adres strony, na której jest uruchomiona dana strona, wewnętrznej bezparametrowo według: {{Code|{{sr|#p["PełnaNazwaArtykułu"]|p=Książkowe}}}} {{Patrz|strona_aktualna}}, co z tego są liczone z niego: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, co z tego jest liczona pełna nazwa książki {{Code|pelna_nazwa_ksiazki}} {{Patrz|pelna_nazwa_ksiazki}}. ==== Zbieranie danych ustawień z: {{Code|.../config}}, jeśli istnieją ==== Jest liczony pełny adres ustawień: {{Code|pelna_nazwa_ksiazki_ustawienia}} {{Patrz|pelna_nazwa_ksiazki_ustawienia}}, według schematu: {{Code|"Szablon:Podręcznik/Ustawienia/"..pelna_nazwa_ksiazki}} {{Patrz|UstawieniaKsiążki}}. Co z tego jest sprawdzane, czy istnieje strona: {{Code|pelna_nazwa_ksiazki_ustawienia.."/config"}} {{Patrz|config}}, a jeśli tak, to wtedy wiemy, że to jest szablon, to go przedstawiamy w postaci szablonowej, licząc z: {{Code|{{sr|#p.NazwaSzablonu|p=Szablonowe}}}}. Dalej jest liczony ostatni wyliczony szablon z parametrem {{Code|książka}} {{Patrz|książka}}, dalej jeszcze raz, tym razem z parametrem: {{Code|artykuł}} {{Patrz|artykuł}} - te parametry przedstawiają parametry artykułu książkowego, skąd możemy ściągać stronę, by ją wyświetlić na stronie aktualnej, na pewno parametr {{LinkPatrz|książka}} nie może być parametrem składających z samych znaków odstępów, a jeśli tak jest, w takim razie z tych dwóch parametrów jest liczony parametr {{Code|strona}} {{Patrz|strona}}. Dalej liczymy, czy ona jest poprawnym adresem, używając funkcji: {{Code|{{sr|#p["CzyNiepoprawnaNazwa"]|p=Pudełko/Tom I}}}}. A jeżeli adres jest jednak poprawny, ta funkcja zwraca wartość odpowiadającej fałszywej wartości, wtedy jest liczony pełny adres strony, jeżeli ona jest względna z parametrów, tzn. parametr pierwszy: {{LinkPatrz|strona}}, i parametr drugi: {{LinkPatrz|strona_aktualna}}, co względem tej funkcji mamy już: {{LinkPatrz|strona}}, czyli po tej operacji (procedurze) policzyliśmy bezwzględny jego adres. ===== Liczenie nazw z parametru pełnej nazwy aktualnej, nie bieżącej, strony wynikłe z obliczeń z ustawień ===== Policzona wartość strony: {{LinkPatrz|strona}}, jest sprawdzana, czy adres (strona), pod którym ona się kryje, istnieje, a jeśli tak, to ten adres jest tylko formatowany. Porównujemy adres {{LinkPatrz|strona}} z {{LinkPatrz|strona_aktualna}}, czy przedstawiają nie ten sam adres, a jeżeli tak, to liczymy wszyskie nazwy strony, czyli dla bez {{Code|aktualna_}}, przyrównujemy do tego z tym początkiem, co odpowiada pełnej nazwie strony z {{Code|strona_aktualna}} {{LinkPatrz|strona_aktualna}} {{ZobaczTeż|strona_aktualna}}, i używając funkcji: {{LinkŚródtytuł|DaneNazw}}, ze zmiennej: {{Code|strona}} {{LinkPatrz|strona}} {{ZobaczTeż|strona}}. Te ostatnie nazwy są potrzebne do analizy strony bieżącej, nie aktualnej, tzn. na niej, jakie są szablony, jakie posiada spisy, jakie książki, a w nim spisy do nich, są dołączone. ====== Policzone nazwy strony aktualnej wpisane do ogólnej tablicy ====== A póżniej z adresów pliczonych wywołania, dotyczącej tego aktualnego, liczymy dla podtabeli: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienne o kluczach: {{Code|aktualna_nazwa_przestrzeni}} {{Patrz|aktualna_nazwa_przestrzeni}}, {{Code|aktualna_nazwa_przestrzeni_ksiazki}} {{Patrz|aktualna_nazwa_przestrzeni_ksiazki}}, {{Code|aktualna_nazwa_ksiazki}} {{Patrz|aktualna_nazwa_ksiazki}} i {{Code|aktualna_nazwa_artykulu}} {{Patrz|aktualna_nazwa_artykulu}}, mając zmienne nazw policzone z tego aktualnego. ===== Czy strona bieżąca, ale nie zbiorcza, jest wyświetlana na stronie aktualnej, czy może jest tylko stroną zbiorczą uruchomioną pod inną nazwą ===== Jeśli zmienne nazw są policzone z: {{LinkZobaczTeż|strona}} i {{LinkZobaczTeż|strona_aktualna}}, to wtedy kolejno porównujemy, czy któraś z nich jest nierówna, a jeśli tak, to wywołujemy szablon z parametru: {{Code|zastępcza}} {{ZobaczTeż|zastępcza}} - jest to, czy strona jest zbiorcza, o nazwie: {{LinkPatrz|config}}, czy powinna być wartością niepustą. A jak tak, to wyznaczamy z tablicy: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienną o kluczu: {{Code|alternatywna}} {{Patrz|alternatywna}}, co przyrównujemy jemu wartość logiczną z uzyskanego z szablonu z parametrem {{LinkZobaczTeż|zastępcza}}, a jeżeli ta zmienna przyjmuje wartość odpowiadająca fałszywej, wtedy zmienna z tej samej tablicy o kluczu: {{Code|inna_strona_aktualna_niz_biezaca}} {{Patrz|inna_strona_aktualna_niz_biezaca}} - jest to, czy strona jest inna niż zbiorcza, ale wyświetlana na innej stronie, przyjmuje wartość prawdziwą. === Dalsza część funkcji - Tom II === Tworzymy zmienną: {{Code|tablica_zmiennych}}, która jest tablicą pustą, którą uzupełniamy o elementy o kluczach: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}} - są to dane zebrane z bieżącej strony, i {{Code|linkobiekt}} {{Patrz|linkobiekt}} - są to dane zebrane o linkach na stronie odpowiadających poszczególnym obiektom. Uruchamiamy funkcję: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}, z której wyznaczamy parametr: {{Code|tabela_listy_danych_analizy_ksiazki}} - są to dane zebrane z bieżącej i innych stron skojarzonej z nim, te elementy są tylko w postaci nieprzetworzonej, ale przygotowanej. A jeśli ten parametr jest tabelką - a jeżeli nie jest, to nastąpił błąd przetwarzania, i funkcja nie idzie dalej w instrukcję warunkową, wtedy wywołujemy funkcję: {{Code|{{sr|#p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony|p=StronicowyParser/NumeracjaObiektówStron}}}}. === Dalsza część funkcji - Tom III === Na sam koniec funkcji zwracamy tablicę: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}} - ta zmienna zawiera dane w postaci przetworzonej policzonej, tzn. uchwytom są przydzielone numeracje, sprawdzane, czy uchwyty są policzone, są wyznaczone wszystkie kody problemów, które później są potrzebne do wyznaczania wszystkich kategorii błędów na stronie. == {{Śródtytuł|p.SpisRzeczyWedlePodanegoTekstu}}{{Code|p.SpisRzeczyWedlePodanegoTekstu}} == Funkcja generowania liczenia nagłówków strony, co na tej podstawie może być generowany '''spis treści''' strony. Funkcja przyporządkowuje uchwytom szablonów nagłówków ich identyfikatory i te nagłówki, w którym one leżą, jeżeli zmienna {{LinkPatrz|obiekty}} istnieje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SpisRzeczyWedlePodanegoTekstu(self,tekst_artykulu,nazwa_strony,czy_artykul_korzystany, tylko_naglowek,obiekty,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_obiektow_strony_danych_kodow_specjalnych_modul,KtorySzablonMaZwracacKategorie,wzory_zamiast_kodow,tabela_elementow_strony_kodow)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}} - tekst przetworzony, przygotowany ewentualnie przez pewną funkcję, rozważanego artykułu, * {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} - nazwa strony, danego spisu, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy strona jest bieżąca, * {{Code|tylko_naglowek}} {{Patrz|tylko_naglowek}} - pisz adresy stron z tylko nagłówkami '''#''', bez adresów stron, * {{Code|obiekty}} {{Patrz|obiekty}} - elementy tam zebrane, są wykorzystywane do analizy nagłówków poprzez szablon {{s|Śródtytuł}}, któremu temu nagłówkowi odpowjada pewien uchwyt, czy uchwyty, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}, * {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} - nazwa aktualna, czy bieżąca strony, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy zebranych informacji w postaci zakodowanej modułu {{m|Szablonowe}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tabela przeanalizowanych elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} {{Patrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} - tablica dwuwymiarowa kodów o kluczach: szablonów referencji: '''REF...''' i '''POSTMATH''' oraz ich elementu numeru kodu {{Code|kod}}, którego elementem jest kod tego elementu, * {{Code|KtorySzablonMaZwracacKategorie}} {{Patrz|KtorySzablonMaZwracacKategorie}} - tabela składająca się z trzech elementów, którego pierwszy element to: {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{Patrz|KtorySzablonMaZwracacKategorieNaglowek}} - funkcja dla szablonów problemów dla jak: {{s|Śródtytuł}}, w nagłówku, drugi: {{Code|KtorySzablonMaZwracacKategorieTekst}} {{Patrz|KtorySzablonMaZwracacKategorieTekst}} - funkcja dla tego typu szablonów, ale dla nich w tekście, nie w nagłówku, trzeci: {{Code|CzyJestTakiProblemJakoElementTablicy}} {{Patrz|CzyJestTakiProblemJakoElementTablicy}} - czy nie rozważać, dla rozdziałów zerowych, przeciwnie: ta funkcja może przyjmować wartość {{Code|nil}}, wartość zwracana tego elementu, bo to jest funkcja, zależy, czy jest ustawiony kod problemu: {{Code|nagłówek w tekście rozdziału w stronie korzystanej}} {{Patrz|nagłówek w tekście rozdziału w stronie korzystanej}}, a jeżeli jest taki, to ta funkcja przyjmuje zrzuconą wartość {{Code|true}}, * {{Code|wzory_zamiast_kodow}} {{Patrz|wzory_zamiast_kodow}} - rozważaj wzory według tablicy: {{LinkPatrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}}, lub koduj to według funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}} - to wykorzystuj w przypadku, gdy: {{LinkPatrz|nazwa_strony}}, istnieje, i jest wartością pustą, lub {{Code|{{sr|#p.NormaKoduZakodowanegoWikiTekstu|p=Szablonowe}}}} - przeciwnie, * {{Code|tabela_elementow_strony_kodow}} {{Patrz|tabela_elementow_strony_kodow}} - baza tabela z zapamiętanymi podtabelami, którego poszczególne elementy wykorzystywane w spisie posiadają w sobie tylko pierwszy element w postaci przetworzonego uchwytu, bo używamy tylko uchwytów szablonów nagłówków. === {{Śródtytuł|SpecjalneWprowadzeniaTekstu}}{{Code|SpecjalneWprowadzeniaTekstu}} === Funkcja zamieniające pewne szablony, czy znaczniki, na rozdziały równaniowe. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local SpecjalneWprowadzeniaTekstu=function(szablon,obiekt,kod,czy_szablon,czy_znacznik,czy_liczyc,funkcja1,funkcja2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} {{Patrz|szablon}} - zmienna (szablon), nie musi być to normalny szablon, * {{Code|obiekt}} {{Patrz|obiekt}} - zmienna, którego typu jest obiekt, * {{Code|kod}} {{Patrz|kod}} - numer obiektu typu {{LinkPatrz|obiekt}}, * {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy to jest szablon, * {{Code|czy_znacznik}} {{Patrz|czy_znacznik}} - czy to jest znacznik, * {{Code|czy_liczyc}} {{Patrz|czy_liczyc}} - czy funkcję liczyć w sposób złożony, szablony typu: {{s|SpisTreści}} - zamieniający go na znacznik, czy prosty, co na samym końcu uruchamiana jest funkcja: {{LinkPatrz|funkcja1}}, * {{Code|funkcja1}} {{Patrz|funkcja1}} - funkcja operująca na wygenerowanym pośrednio (dłuższe liczenie) lub bezpośrednio (krótsze) znaczniku, wychodząca z szablonu, i zamieniająca go na rozdział równaniowy, funkcja operująca dla szablonów: {{s|SpisTreści}} lub {{s|HNumer}}, * {{Code|funkcja2}} {{Patrz|funkcja2}} - funkcja operująca na znaczniku '''HTML''' nagłówka - typu jak: {{Tag|h1}}, i zamieniająca go na rozdział równaniowy. ==== {{Śródtytuł|ParametrNR}}{{Code|ParametrNR}} ==== Funkcja liczy dokładnie parametr dany o danym numerze, zbiór danych parametrów oznaczających to samo może być wiele, tylko że jedne mogą być ważniejsze od drugich. Definicja skrótowa funkcja: <syntaxhighlight lang="lua"> local function ParametrNR(numer)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer}} {{Patrz|numer}} - numer parametru. Funkcja wykorzystywuje funkcję do uruchomienia: {{Code|{{sr|#p.SpisRzeczySzablon|p=StronicowyParser/Potrzebne}}}}, do generowania parametrów, a właściwie ich wartości. ==== {{Śródtytuł|ObiektKodNumer}}{{Code|ObiektKodNumer}} ==== Funkcja dodająca do bazy danych kolejny element bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla danego obiektu element na samym końcu, po maksymalnym elemencie do niego. Funkcja liczy kod przy pomocy funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local ObiektKodNumer=function(szablon,obiekt)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}. ==== Dalszy opis funkcji ==== Dla {{LinkPatrz|czy_szablon}} prawdziwego dla szablonów sztucznego spisu treści, sprawdzanego przez tabelkę: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, dla danego szablonowego rozdziału generowanego według {{s|HNumer}}, jest on zamieniany na rozdział równaniowy poprzez funkcję: {{LinkPatrz|funkcja1}}. Ta tabela przedstawia się treścią: <syntaxhighlight lang="lua"> p.szablony_sztucznego_wprowadzenia_tekstu={ ["HNumer"]=1, }; </syntaxhighlight> Dla innych rozdziałów szablonowych, tym razem generowanego przez szablon {{s|SpisTreści}}, którego parametry są wyznaczane przez funkcję: {{LinkŚródtytuł|ParametrNR}}, tabelka parametrów opisująca to: <syntaxhighlight lang="lua"> p.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu={ ["SpisTreści"]={{"artykuł",1,},{"książka",2,},{"nazwa",3,},{"dodatek",4,},{"poziom",},}, }; </syntaxhighlight> Funkcja liczy artykuł, koloruje do niego link w: '''spisie treści''', na czerwona, wtedy generuje dodatkowy znacznik, z właściwością: {{Code|color:red}}, gdy on nie istnieje, i to wstawia do tabeli bazy, lub bez niego, wtedy bezposrednio generuje tekst równy nazwie tego szablonu, opakowany, lub nie, w zależności od istnienia. Do policzenia strony, czy ona istnieje, musi być przedtem zdekodowany funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, by później policzyć to sprawdzenie przy pomocy: {{Code|{{sr|#p.PoliczZbiory|p=Techniczne}}}}. W każdym bądź razie jest ruchumianiana funkcja: {{LinkPatrz|funkcja1}}. Gdy to nie jest szablon, tzn.: {{LinkPatrz|czy_szablon}}, jest fałszywe, ale {{LinkPatrz|czy_znacznik}} jest prawdziwe, to takie znaczniki, jak od: {{Tag|h1}} do {{Tag|h6}}, są zamieniane na czysty tekst. W takim razie wywoływana jest dla tego przypadku funkcja: {{LinkPatrz|funkcja2}}. Funkcja: {{LinkPatrz|funkcja1}}, jest dla szablonów nagłówków, a: {{LinkPatrz|funkcja2}}, dla znaczników nagłówków. Z tych generowanych czystych generowanych tekstów są tworzone w tekście rozdziały równaniowe, by później wygenerować '''spis treści''', właśnie z nimi - z tymi nagłówkami, a bardziej ściśle linkami do nich. === {{Śródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}{{Code|SzablonNaglowkujWNaglowkuRozdzialu}} === Fukcja do obsługi nagłówków {{LinkPatrz|Śródtytuł}} w nagłówku, nie w tekście poza nim. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWNaglowkuRozdzialu(szablon,obiekt,kod,powtorka,parametry_wywolania_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}, * {{Code|powtorka}} {{Patrz|powtorka}} - numer użycia takiego samego szablonu typu {{s|Śródtytuł}} {{Patrz|Śródtytuł}}, * {{Code|parametry_wywolania_szablonu}} {{Patrz|parametry_wywolania_szablonu}} - parametry szablonu wraz z ich wartościami, * {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} - nazwa szablonu wywołania, * {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} - modyfikatory szablonu. Funkcja sprawdza, czy szablon w nagłówku jest typu {{LinkPatrz|Śródtytuł}}, a jeżeli tak, to liczy jego uchwyt, najpierw wyznacza je z parametru o nazwie {{Code|uchwyt}} {{Patrz|uchwyt}}, dalej sprawdzane jest, czy taki uchwyt tak zdefiniowany istnieje, jeśli tak, to wydobywana jest jego przetworzona tabela z tym właśnie uchwytek, funkcja robi to względem numeru {{Code|kod}} {{LinkPatrz|kod}} tego szablonu na podstawie funkcji: {{Code|{{sr|#p.WydobywanieUchwytuZeiBezNumeracji|p=StronicowyParser/ZbieranieDanychStron}}}}. Jeżeli wydobyta tabela {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} nie istnieje, w takim razie jest ona dekodowana funkcją: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, a później jest traktowana jako adres '''URL''', tzn. jest dekodowana funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, dalej jest tworzona tabela pusta: {{LinkPatrz|lista_dwuelementowa}}, co dalej jest tam wstawiana do niej jako pierwszy element uzyskany uchwyt przetworzony. A jeśli jednak {{LinkPatrz|lista_dwuelementowa}} została wydobyta z naszej funkcji tabela, która istnieje, wtedy funkcja idzie, niż poprzednio, w inny krok instrukcji warunkowej, wtedy z tej tabeli jest wydobywany pierwszy element jako przetworzony wcześniej uchwyt. Gdy {{ZobaczTeż|uchwyt}} przetworzony uchwyt jest łańcuchem znaków niepusty, wtedy on jest dodawany w postaci tabeli, w której jest ten uchwyt, na sam koniec tabeli {{Code|numeracja}} {{Patrz|numeracja}}. Gdy liczba powtórzeń jest większa niż zero, wtedy jest wywoływana funkcja, przy którym mają być zwrócone kategorie, jeśli zostaną użyte, o nazwie {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}}. Gdy jednak uchwyt uzyskany nie istnieje, to wtedy jest to samo robione, co w: {{LinkZobaczTeż|uchwyt}}. Przed zwróceniem ile razy została dokonana powtórka, jest powiększany licznik powtorek, i to jest otrzymywane z tej funkcji. === {{Śródtytuł|SzablonNaglowkujWTekscieRozdzialu}}{{Code|SzablonNaglowkujWTekscieRozdzialu}} === Funkcja do analizy szablonów nagłówków w tekście rozdziału, nie w nagłówku. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWTekscieRozdzialu(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja sprawdza, czy tekst w bazie kodów jest typu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, w takim razie po wykryciu, że dla tego, że jest to wywołanie szablonowe, a nie instrukcja warukowa w wikikodzie w tekście, wtedy podobnie jest robione, co w funkcji: {{LinkŚródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}, tylko zamiast {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}} jest {{Code|KtorySzablonMaZwracacKategorieTekst}} {{LinkPatrz|KtorySzablonMaZwracacKategorieTekst}}. Przy wykryciu tam szablonu typu {{LinkPatrz|Śródtytuł}}, funkcja zawsze zwraca wartość {{Code|true}}, w innych przypadkach {{Code|false}}. W przypadku intrukcji warunkowej w wikikodzie i dla ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jest wtedy zwracana wartość {{Code|false}}. Funkcja w pozostałych przypadkach zwraca wartość logiczną {{Code|false}}. === {{Śródtytuł|SzablonyWywolywane}}{{Code|SzablonyWywolywane}} === Szablon zamieniający specjalne znaki szablonów, tzn.: {{Code|{{((}}}}, {{Code|{{))}}}}, {{Code|{{!}}}} i {{Code|{{=}}}}, kolejno na: {{Code|{{s|((}}}}, {{Code|{{s|))}}}}, {{Code|{{s|!}}}} i {{Code|{{s|{{=}}}}}}, takich {{ZobaczTeż|StronicowyParser}}, które zawierają wywołania '''Stronicowego Parsera''', czyli ramki typu: {{Code|{{m|StronicowyParser}}}}, czy: {{Code|{{m|StronicowyParser/}}}}, a inne są po prostu przypisywane. W przypadku linków, i nie tylko, tzn. dla szablonów {{LinkZobaczTeż|StronicowyParser}}, z innych stron niż korzystana, co jest trafnie oznaczone zaprzeczeniem parametru {{LinkPatrz|czy_artykul_korzystany}} są liczone parametry pudełkowe {{Code|{{m|Pudełko}}}}. Strony wskazane przez te parametry są analizowane, przy czym linki są przez inną funkcję, a inne już przez znów inną. Szablony nagłówków typu {{LinkPatrz|Śródtytuł}}, czy szablonów stronicowych otwierających i zamykających, one lub jego koledzy, tzn. ich: {{s|StronaStart}} i {{s|StronaKoniec}}, są zastępowane ciągiem pustym. Inne parametry opisane z tabeli {{Code|{{sr|#p.szablony_stronicowe_kontenerowe_formatowania_wzorowego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, są zastępowane ich zawartością, by uniknąć kontaktu nagłówków z tego typu szablonami. Szablony ideksowania określone tabelą: {{Code|{{sr|#p.szablony_indeksowania}}}} {{Patrz|p.szablony_indeksowania}}, nie są rozwijana z kodowania lub są, w zależności, czy zmienna: {{Code|czy_indeksowanie}} {{Patrz|czy_indeksowanie}}, ma wartość {{Code|true}} - tutaj są, czy odpowiadającej fałszywej wartości logicznej - a tutaj już nie. W przypadku instrukcji warunkowych, czy ramek {{lpg|Lua}} w {{lpg|Lua|Scribunto}}, one są rozwijane - kod tego jest zawartością {{LinkPatrz|szablon}}. W innych przypadkach funkcja zwraca wartość {{Code|nil}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywane(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. W powyższym opisie występują szablony opisane w: {{LinkPatrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, a jej definicja jest: <syntaxhighlight lang="lua"> p.szablony_stronicowe_kontenerowe_formatowania_wzorowego={ ["Formuła"]=1; }; </syntaxhighlight> Jest to szablon: {{s|Formuła}} i podobne, liniowe wstawiane do tekstu, ta tabela ma za zadanie zastąpić te szablony ich poszczególnym zawartościom, a ta funkcja, która ją wykorzystywuje się do tego przypadku, jest o nazwie: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}. Tabelą szablonów indeksowania, to są one zdefiniowane przez: {{LinkPatrz|p.szablony_indeksowania}}, a jej zawartość: <syntaxhighlight lang="lua"> p.szablony_indeksowania={ ["Kotwica"] =true, ["Indeksuj"]=true, }; </syntaxhighlight> Są to szablony kotwic: {{s|Kotwica}}, który jest szablonem liniowym, a {{s|Indeksuj}}, natomiast to blokowy. === {{Śródtytuł|SzablonyWywolywaneOgolny}}{{Code|SzablonyWywolywaneOgolny}} === Funkcja rozwija nagłówek, wydzielając z niego zwykły tekst, nie dopełniając pewnych operacji. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywaneOgolny(naglowek)...end; </syntaxhighlight> Parametry funkcji: * {{Code|naglowek}} {{Patrz|naglowek}} - tekst nagłówka napisu wprowadzenia tekstu. Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["WydzielZwykłyTekst"]|p=Specjalne}}}}, kod jej wywoływany jest z parametrami: <syntaxhighlight lang="lua"> local naglowek,Znaczniki,SzablonyStylowe,ZnakiSpecjalne=specjalne_modul["WydzielZwykłyTekst"]( { ---- tekst nagłówka; tekst=naglowek, ---- Nie wykorzystywuj w działaniu funkcji: Znaczniki, SzablonyStylowe, ZnakiSpecjalne; ["nagłówek"]=true, ---- Nie wykorzystuj dekodowania tekstu zakodowanego, bez rozwijania, ale wręcz przzeciwnie rozwijaj, pozostawiaj pewne szczególne kody przed rozkodowaniem; nieklasycznie=true, ---- Bazę kodowania weź z zewnątrz; kodowanie=false, ---- Wykorzystywana tablica kodowania tekstu modułu: Module:Szablonowe, zakodowanego z zewnątrz; ["tablica kodowania"]=tablica_analizy_obiektow_strony_dany_modul, },__FUNKCJA1,__FUNKCJA2); </syntaxhighlight> Ta funkcja wydziela zwykły tekst z nagłówka z szablonami zwykłymi i ramkami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, bez naruszenia działania innych elementów szablonowych, jak tagi, czyli: {{s|#tag:}}, które też współdziałają też w kodzie danego nagłówka. Również i z linkami wewnętrznymi i zewnętrznymi, z których wydziela się zwykły tekst, bo wiadomo, że one nie mogą się znaleźć w linkach '''spisu treści''', bo nie może być link w linku w nim, a one niezależnie jakie, bo to ze względu na {{Strong|HTML}} nie możliwe technologicznie. Definicje dwóch kolejnych funkcji zdefiniowanych powyżej: <syntaxhighlight lang="lua"> ---- szablon - kod obiektu kodu w wikikodzie; ---- obiekt - typ obiektu kodu powyżej; ---- kod - numer tego samego typu obiektu; local __FUNKCJA1=function(szablon,obiekt,kod) ---- Funkcja wykorzystywana do ewentualnego modyfikowania użytych szablonów i przedstawianiu jego kodem symbolicznym, lub zastępowania pewnych szablonów nagłówków wartością pustą; local szablon,wynik=SzablonyWywolywane(szablon,obiekt,kod); return szablon,wynik; end; local __FUNKCJA2=function(szablon,obiekt,kod) --- rozwijaj uzyskany szablon, dalej, gdy napotkasz, jeśli zostanie włączone zmienna indeksowania w postaci wartości logicznej; return czy_indeksowanie; end; </syntaxhighlight> Funkcja zwraca wartości, tzn. zmienną z przetworzenia nagłówkowego, bez usuniętych znaczników, stylów i znaków specjalnych, tzn. części otoczone pewnymi cudzysłowami z taką samą liczbą, więc pogrubienia i pochylenia tekstu: <syntaxhighlight lang="lua"> return naglowek, Znaczniki, SzablonyStylowe, ZnakiSpecjalne; </syntaxhighlight> Definicje tych zwróconych funkcji, tzn.: {{Code|Znaczniki}} {{Patrz|Znaczniki}}, {{Code|SzablonyStylowe}} {{Patrz|SzablonyStylowe}} i {{Code|ZnakiSpecjalne}} {{Patrz|ZnakiSpecjalne}}, którego opisy raczej przedstawiają ich nazwy, dokładnie one są udokumentowane tutaj: <syntaxhighlight lang="lua"> ---- tekst - tekst do przetworzenia; local function Znaczniki(tekst,jakie,__FUNKCJA1,__FUNKCJA2) ---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML;---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML; ---- funkcja do usuwania znaczników, tzn. w niej inne funkcje: __FUNKCJA1 - funkcja do zakodowywania tekstu przed usuwaniem znaczników, a __FUNKCJA2 - funkcja do odkodowania tego, co pozostało; tekst=p["UsuńZnaczniki"](tekst,jakie,__FUNKCJA1,__FUNKCJA2); return tekst; end; local function SzablonyStylowe(tekst) ---- funkcja do usuwania uruchomionych stylów, tzn. tych: <templatestyles src="..."/>, wtedy to staje się kodem parsera przetwarzanego za pomocą tekstu dla tego typu znacznika, kodami parsera mogą być też inne obiekty jak ramki Lua w Scribunto, ale nie muszą być takie, ale my rozważamy tutaj tylko jeden typ kodu parsera. tekst=p["UsuńSzablonyStylów"](tekst); return tekst; end; local function ZnakiSpecjalne(tekst) ---- funkcja do usuwania cudzysłowów w takich samych ilościach z prawej i z lewej strony danego fragmentu tekstu w nim; tekst=p["UsuńZnakiSpecjalne"](tekst); return tekst; end; </syntaxhighlight> Definicje tych funkcji znajdują się również w module: {{Code|{{ld2|Specjalne}}}}, które również przedstawiają inne funkcje do upraszczania tekstu, w tym nagłówka, ale nie tylko, bo dowolnego tekstu. === {{Śródtytuł|RefPrzypisowy}}{{Code|RefPrzypisowy}} === Mechanizm zamieniający kod referencji na jej wersję wyświetlaną na ekranie, czyli w nawiasie kwadratowym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local RefPrzypisowy=function(obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|obiekt}} {{Patrz|obiekt-ref}} - nazwa typu przypisu, czyli jak bez nazwy, czy też jak: '''uwaga''', * {{Code|kod}} {{Patrz|kod-ref}} - numer danego typu przypisu. Gdy {{LinkPatrz|obiekt-ref}} nie ma nazwy, wtedy w nawiasie kwadratowym będzie tylko numerek {{LinkPatrz|kod-ref}}, a jeśli ma nazwę, to nazwa oddzielona spacją z prawej strony, a po nim jest ten numerek. === Dalsza część funkcji - Tom I === Tutaj opowiemy o części wstępnej tej funkcji. ==== Ustalanie zmiennej nazwy modułu aktualnej, czy bieżącej ==== Funkcja ustawia zmienną: {{Code|czy_kodowanie}} {{Patrz|czy_kodowanie}}, na podstawie istnienia zmiennych: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} i {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. ==== Wyznaczanie nazwy modułu aktualnej, czy bieżącej, dla strony aktualnej, jeśli ona nie istnieje ==== Jeżeli zmienna {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} jest odpowiadającej wartości fdałszywej i mamy strona korzystaną, co określa parametr {{LinkPatrz|czy_artykul_korzystany}}, w postaci wartości prawdziwej, wtedy są liczone kolejne zmienne nazw na podstawie istnienia lub nieistnienia zmiennej {{Code|alternatywna}}, a jeśli ona jest prawdziwa, wtedy wybierane są zmienne z tą aktualną nazwą woluminu wynikłe z {{LinkZobaczTeż|strona_aktualna}}, przeciwnie z nazwą bieżącą woluminu,na podstawie tego, co wyświetla '''Stronicowy Parser''', te nazwy są ze sobą łączone, wtedy powstaje pełna nazwa strony, którą przyrównujemy do {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}}. Jeśli wartość {{LinkPatrz|czy_artykul_korzystany}} jest jednak fałszywa, w takim razie jest liczona {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} na podstawie wartości {{LinkPatrz|nazwa_strony}}. ==== Kodowanie '''HTML''' specjalnych znaków strony ==== Nazwę strony {{LinkPatrz|nazwa_strony}}, w której mogą występować specjalne znaki, które są niezrozumiałe z punktu widzenia '''HTML''', jeżeli np.z nich trzeba zbudować identyfikatory '''id''', a więc trzeba je zakodować, robimy to funkcją: {{Code|{{sr|#p.EncodeId|p=Html}}}}. ==== Zwracanie funkcji liczenia numeru nagłówka ==== Wyznaczamy funkcję: {{Code|HNumer}} {{Patrz|HNumer}}, która jest efektem zwrócenia przez: {{Code|{{sr|#p.LiczonyHNumer|p=StronicowyParser/Potrzebne}}}}. ==== Zamienianie szablonów nagłówków, czy nawet tych znaczników, na rozdziały równaniowe ==== Jeśli {{LinkPatrz|czy_kodowanie}} przyjmuje wartość prawdziwą, wtedy definiujemy funkcję: {{LinkŚródtytuł|SpecjalneWprowadzeniaTekstu}}. Dalej funkcja zamienia szablony: {{s|SpisTreści}} i {{s|HNumer}}, a także znaczniki: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, na ich wersję równaniową, aby dało się je rozpoznać jako rozdziały i było je łatwo wsadzić do szablonu takiego jak: {{s|Spis treści}} i inne podobne, za pomocą dwóch kolejnych funkcji wsadzonych do pewnej funkcji modułu {{m|Szablonowe}}, która służy do operacji na takich przypadkach. === Zmienna strony z nagłówkaami === Gdy jest podana zmienna: {{Code|tylko_naglowek}} {{LinkPatrz|tylko_naglowek}}, ma wartość prawdziwą, wtedy zmienna: {{Code|nazwa_strony_z_naglowkami}} {{Patrz|nazwa_strony_z_naglowkami}}, przybiera wartość pustą, przeciwnie gdy zmienna {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}} jest ciągiem pusty, wtedy to samo, w innym pozostałym przypadku jest to dokładnie {{LinkPatrz|nazwa_strony}}, gdzie przed nim znajduje się dwukropek {{Code|:}}. === Dalsza część funkcji - Tom II === Tu powiemy coś o iteratorze, który po zebraniu danych zwraca zmienną {{Code|nil}}, co odpowiada dla pętli, jej przerwaniu. ==== Definicja iteratora zbierania informacji o stronie ==== Aby uruchomić pętle na rzeczywistych danych zakodowanej, czy nie, stronie, trzeba otrzymać zmienną pętli {{Code|iterator}} {{Patrz|iterator}} i go wywoływać bezparametrowo w każdym okrążeniu pętli, aby tak się stało, to trzeba uruchomić funkcję: {{Code|{{sr|#p.IterTekst|p=StronicowyParser/Rozdziały}}}}, na tekście {{LinkPatrz|tekst_artykulu}}, traktując tekst, jakby nie był taki zakodowany, bo tutaj jedynie się liczą elementy niezakodowane, czyli w tym przypadku nagłówki z tekstem rozdziału. ==== Zbieranie informacji o stronie w pętli generowanej przez iterator ==== Będziemy tutaj opisywali pętlę generowaną przez jego iterator {{LinkPatrz|iterator}}. W każdym okrązeniu pętli otrzymujemy dane: * {{Code|naglowek_tab}} {{Patrz|naglowek_tab}} - gdzie pierwszy jego element to {{Code|naglowek}} {{LinkPatrz|naglowek}}, * {{Code|text_rozdzialu}} {{Patrz|text_rozdzialu}} - tekst rozdziału, * {{Code|poziom_rozdzialu}} {{Patrz|poziom_rozdzialu}} - poziom rozdziału. ===== Definicja nowe wartości zbierania uchwytów nagłówka w zmiennej numeracji ===== Deklaracja zmiennej {{Code|numeracja}} {{LinkPatrz|numeracja}} jest na zewnętrz pętli, w niej tworzymy jej nową wartość, którą jest tablica pusta. ==== Uzyskiwanie informacji z tekstu rozdziału nagłówka, i jego możliwych uchwytach, w poszczegolnym okrążeniu pętli, i zrzuceniu tam pojedynczego kodu problemu ==== Jeżeli tekst strony jest zakodowany, to iterujemy po tekście {{LinkPatrz|text_rozdzialu}} w poszukiwaniu kodów bazy kodów zakodowanego tekstu, w tym celu wywołujemy pętlę: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, wtedy uzyskujemy trzy obiekty w każdym przebiegu pętli, tzn. {{Code|szablon}} {{LinkPatrz|szablon}}, {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, za pomocę tego uruchamiamy funkcję: {{LinkŚródtytuł|SzablonNaglowkujWTekscieRozdzialu}}. Jeżeli funkcja napotkała uchwyt szablonu: {{Code|{{s|Śródtytuł}}}}, wtedy jest zatrzymywana, w takim razie mamy informację o wystąpieniu niedozwolonego szablonu nagłówka w tekście. A jeżeli takiego szablonu tam nie ma, to układ iterator {{LinkPatrz|iterator}} iteruje aż do zakończenia danych. ==== Uzyskiwanie nagłówka i do niego identyfikatora '''id''' ==== ===== Tekst niezakodowany nagłówka ===== Gdy tekst nie jest zakodowany, wtedy zmienna: {{LinkPatrz|czy_kodowanie}}, ma wartość odpowiaadające fałszywej, wtedy dla tego nagłówka {{LinkPatrz|naglowek}} jest uruchamiana funkcja: {{Code|{{sr|#p.["PrzetwórzNagłówek"]|p=Specjalne}}}}, wtedy otrzymujemy dwie wartości: {{Code|nazwa_rozdzialu_w_artykule}} {{Patrz|nazwa_rozdzialu_w_artykule}} - zmienna idententyfikatora, {{Code|naglowek}} {{LinkPatrz|naglowek}} - zmienna nagłówka. Te dwie zmienne zostały maksymalnie rozwinięte, zostały przystosowane do tego, aby słuzyły do tego, co trzego zostały stworzone. ===== Tekst zakodowany nagłówka ===== Gdy jednak {{LinkPatrz|czy_kodowanie}} przyjełajednak wartość fałszywą, wtedy jest uruchamiana funkcja: {{LinkŚródtytuł|SzablonyWywolywaneOgolny}}, z której otrzymujemy: {{Code|naglowek}} {{LinkPatrz|naglowek}} - zmienna przetworzonego i maksymalnie rozwiniętego nagłówka, oraz zmienne funkcje: {{LinkPatrz|Znaczniki}}, {{LinkPatrz|SzablonyStylowe}} i {{LinkPatrz|ZnakiSpecjalne}}. Na podstawie defiicji: {{Code|nazwa_rozdzialu_w_artykule}} {{LinkPatrz|nazwa_rozdzialu_w_artykule}}, mamy: {{Code|naglowek}} {{LinkPatrz|naglowek}}. ====== Kompletowanie nagłówka ====== Ten nagłówek kompletujemy funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, usuwając szablony indeksowania {{LinkPatrz|p.szablony_indeksowania}}, a także znaczniki: {{Tag|li}}, {{Tag|ul}} i {{Tag|ol}}. ====== Kompletowanie identyfikatora nagłówka ====== Kompletując: {{Code|nazwa_rozdzialu_w_artykule}} {{LinkPatrz|nazwa_rozdzialu_w_artykule}}, rozwijamy wszystko, oprócz atrybutów, {{Code|obiekt}} {{Code|{{=}}}} {{Code|ATRYBUTY}}, a na szablonach wywołujemy funkcję: {{LinkŚródtytuł|SzablonyWywolywaneOgolny}}. Na identyfikatorze nagłówka {{LinkPatrz|nazwa_rozdzialu_w_artykule}} Wywołujemy kolejno lokalne funkcje: {{LinkPatrz|SzablonyStylowe}} - do usuwania rozwiniętych kodów stylów, {{LinkPatrz|ZnakiSpecjalne}} - do usuwania cudzysłowów, i {{LinkPatrz|Znaczniki}} - do usuwania znaczzników. ====== Gdy w kodzie identyfikatora nie ma symbolicznych szablonów ====== W tym przypadku uruchamiamy fukcję do dekodowania znaków '''HTML''', tzn. dziesiętnych, szesnastkowych i literowych, funkcją: {{Code|{{sr|#p.DecodeKoduHTMLZnaku|p=Html}}}}, a później kodujemy specjalne znaki identyfikatora sposobem: {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, przy pomocy kodów '''HTML''' dziesiętnych. ===== Usuwanie zbędnych znaków w identyfikatorze ===== Usuwane są potrójne i podwójne cudzysłowy {{Code|'}} oraz odstępy i dolne myślniki na końcach łańcucha, a wewnętrz jego kolejne je są zastępowane jedną spacją. ===== Referencje i wzory matematyczne ===== Referencje są zastępowane odpowiednio przy pomocy funkcji: {{LinkŚródtytuł|RefPrzypisowy}}, a wzory matematyczne, dla obiektów typu {{Code|POSTMATH}} {{Patrz|POSTMATH}}, które są zastępowane prawidłowo poprzez: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.text.encode|b=tak}}}}, przy pomocy: {{Code|{{sr|#p.NormaKoduZakodowanegoHtmlTekstu|p=Szablonowe}}}}, obiektem: {{Code|postMath}} {{Patrz|postMath}} z ośmioma znakami cyferkami na końcu tego, którym jest {{Code|kod}} {{LinkPatrz|kod}}. ===== Wstępne przygotowanie identyfikatora do końcowego skutecznego użytku ===== Dla danego identyfikatora one mogą się powtarzać, a identyfikator musi być unikalny, zatem trzeba napisać ich dodatkowe numerki, po policzeniu otrzymamy {{Code|numer_tego_samego_naglowka}} {{Patrz|numer_tego_samego_naglowka}}. ====== Tablica identyfikatora i nagłówka ====== Dla {{LinkPatrz|numer_tego_samego_naglowka}} równego {{Code|1}}, tworzemy tablicę,którego pierwszym elementem jest: {{LinkPatrz|nazwa_rozdzialu_w_artykule}}, a drugim nagłówek {{LinkPatrz|naglowek}}, a w przypadku tego numerku innego niż podana liczba, to dajemy do identyfikatora na końcu ten numerek po dolnym myślniku. ====== Uzupełnianie zmiennej do identyfikacji uchwytu z odpowiednim nagłówkiem ====== Jeśli: {{LinkPatrz|obiekty}} i {{LinkPatrz|numeracja}}, istnieją, wtedy do tej pierwszej tablicy dodawane są wszystkie elementy o takim samym typie z {{LinkPatrz|numeracja}}. To dodawanie na końcu tablicy przedstawia się: <syntaxhighlight lang="lua"> for _,value_numeracja in ipairs(numeracja)do obiekty[#obiekty+1]={value_numeracja,{nazwa_strony_z_naglowkami,elementy_linku[1], elementy_linku[2]}}; end; </syntaxhighlight> ====== Tworzenie tablicy nagłówkami i indetyfikatorami ====== Jeśli {{Code|poziom_rozdzialu}} jest większy od zera, tzn. {{Code|> 0}}, wtedy liczymy numer rozdziału przy pomocy funkcji: {{Code|HNumer}} {{LinkPatrz|HNumer}}. Jest tworzona tablica spisu: {{Code|tablica_spisu_tresci}}, jako pusta tablica, z później dodanym elementem o kluczu: {{Code|nazwa_strony}}, którym jest o wartości: {{LinkPatrz|nazwa_strony_z_naglowkami}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> c1r9x7nem79tgtzc0wb4b7uqt3innvn 548352 548351 2026-07-26T12:19:41Z Persino 2851 /* Tworzenie tablicy nagłówkami i indetyfikatorami */ 548352 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}|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.PobieranieInformacjiRamkiRozpatrywanejStrony}}{{Code|p.PobieranieInformacjiRamkiRozpatrywanejStrony}} == Pobieranie danych z obiektu {{LinkPatrz|self}}, biorąc jego podtablicę o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiRamkiRozpatrywanejStrony(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa ramki tablicy transportu. == {{Śródtytuł|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}}{{Code|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}} == Funkcja uruchamiacz, główna funkcja dzięki, której ładują się informacje według modułu: {{Code|{{ld2|StronicowyParser/informacje}}}} (tam jest użyty). Ten ładowacz jest pokazany w module opis: {{Code|{{lr2|Moduły/StronicowyParser/informacje}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}. === {{Śródtytuł|DaneNazw}}{{Code|DaneNazw}} === Funkcja licząca nazwy podanej nazwy strony, tzn.: {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} {{Patrz|nazwa_artykulu}}, oraz zwracające te kolejno nazwy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function DaneNazw(pelna_nazwa_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|pelna_nazwa_strony}} {{Patrz|pelna_nazwa_strony}} - pełna nazwa strony. === Dalsza część funkcji - Tom I === ==== Tworzenie i inicjowanie początkowych tabel ==== Funkcja tworzy podtabele tabeli zmiennej obiektowej {{LinkPatrz|self}} o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, o wartości pustej. Następnie są tworzone podtabele puste w tej ostatniej o kluczach: {{Code|dane_analizy_stron}} {{Patrz|dane_analizy_stron}} i {{Code|licencja}}{{Patrz|licencja}}, oraz nilowe zmienne z tego samego, co ostatnie, o kluczu: {{Code|problemy}} {{Patrz|problemy}}. ==== Zmienne nazw strony bieżącej, czy nawet aktualnej, w zależności, czy istnieją odpowiednie ustawienia ==== Jest liczony adres strony, na której jest uruchomiona dana strona, wewnętrznej bezparametrowo według: {{Code|{{sr|#p["PełnaNazwaArtykułu"]|p=Książkowe}}}} {{Patrz|strona_aktualna}}, co z tego są liczone z niego: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, co z tego jest liczona pełna nazwa książki {{Code|pelna_nazwa_ksiazki}} {{Patrz|pelna_nazwa_ksiazki}}. ==== Zbieranie danych ustawień z: {{Code|.../config}}, jeśli istnieją ==== Jest liczony pełny adres ustawień: {{Code|pelna_nazwa_ksiazki_ustawienia}} {{Patrz|pelna_nazwa_ksiazki_ustawienia}}, według schematu: {{Code|"Szablon:Podręcznik/Ustawienia/"..pelna_nazwa_ksiazki}} {{Patrz|UstawieniaKsiążki}}. Co z tego jest sprawdzane, czy istnieje strona: {{Code|pelna_nazwa_ksiazki_ustawienia.."/config"}} {{Patrz|config}}, a jeśli tak, to wtedy wiemy, że to jest szablon, to go przedstawiamy w postaci szablonowej, licząc z: {{Code|{{sr|#p.NazwaSzablonu|p=Szablonowe}}}}. Dalej jest liczony ostatni wyliczony szablon z parametrem {{Code|książka}} {{Patrz|książka}}, dalej jeszcze raz, tym razem z parametrem: {{Code|artykuł}} {{Patrz|artykuł}} - te parametry przedstawiają parametry artykułu książkowego, skąd możemy ściągać stronę, by ją wyświetlić na stronie aktualnej, na pewno parametr {{LinkPatrz|książka}} nie może być parametrem składających z samych znaków odstępów, a jeśli tak jest, w takim razie z tych dwóch parametrów jest liczony parametr {{Code|strona}} {{Patrz|strona}}. Dalej liczymy, czy ona jest poprawnym adresem, używając funkcji: {{Code|{{sr|#p["CzyNiepoprawnaNazwa"]|p=Pudełko/Tom I}}}}. A jeżeli adres jest jednak poprawny, ta funkcja zwraca wartość odpowiadającej fałszywej wartości, wtedy jest liczony pełny adres strony, jeżeli ona jest względna z parametrów, tzn. parametr pierwszy: {{LinkPatrz|strona}}, i parametr drugi: {{LinkPatrz|strona_aktualna}}, co względem tej funkcji mamy już: {{LinkPatrz|strona}}, czyli po tej operacji (procedurze) policzyliśmy bezwzględny jego adres. ===== Liczenie nazw z parametru pełnej nazwy aktualnej, nie bieżącej, strony wynikłe z obliczeń z ustawień ===== Policzona wartość strony: {{LinkPatrz|strona}}, jest sprawdzana, czy adres (strona), pod którym ona się kryje, istnieje, a jeśli tak, to ten adres jest tylko formatowany. Porównujemy adres {{LinkPatrz|strona}} z {{LinkPatrz|strona_aktualna}}, czy przedstawiają nie ten sam adres, a jeżeli tak, to liczymy wszyskie nazwy strony, czyli dla bez {{Code|aktualna_}}, przyrównujemy do tego z tym początkiem, co odpowiada pełnej nazwie strony z {{Code|strona_aktualna}} {{LinkPatrz|strona_aktualna}} {{ZobaczTeż|strona_aktualna}}, i używając funkcji: {{LinkŚródtytuł|DaneNazw}}, ze zmiennej: {{Code|strona}} {{LinkPatrz|strona}} {{ZobaczTeż|strona}}. Te ostatnie nazwy są potrzebne do analizy strony bieżącej, nie aktualnej, tzn. na niej, jakie są szablony, jakie posiada spisy, jakie książki, a w nim spisy do nich, są dołączone. ====== Policzone nazwy strony aktualnej wpisane do ogólnej tablicy ====== A póżniej z adresów pliczonych wywołania, dotyczącej tego aktualnego, liczymy dla podtabeli: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienne o kluczach: {{Code|aktualna_nazwa_przestrzeni}} {{Patrz|aktualna_nazwa_przestrzeni}}, {{Code|aktualna_nazwa_przestrzeni_ksiazki}} {{Patrz|aktualna_nazwa_przestrzeni_ksiazki}}, {{Code|aktualna_nazwa_ksiazki}} {{Patrz|aktualna_nazwa_ksiazki}} i {{Code|aktualna_nazwa_artykulu}} {{Patrz|aktualna_nazwa_artykulu}}, mając zmienne nazw policzone z tego aktualnego. ===== Czy strona bieżąca, ale nie zbiorcza, jest wyświetlana na stronie aktualnej, czy może jest tylko stroną zbiorczą uruchomioną pod inną nazwą ===== Jeśli zmienne nazw są policzone z: {{LinkZobaczTeż|strona}} i {{LinkZobaczTeż|strona_aktualna}}, to wtedy kolejno porównujemy, czy któraś z nich jest nierówna, a jeśli tak, to wywołujemy szablon z parametru: {{Code|zastępcza}} {{ZobaczTeż|zastępcza}} - jest to, czy strona jest zbiorcza, o nazwie: {{LinkPatrz|config}}, czy powinna być wartością niepustą. A jak tak, to wyznaczamy z tablicy: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienną o kluczu: {{Code|alternatywna}} {{Patrz|alternatywna}}, co przyrównujemy jemu wartość logiczną z uzyskanego z szablonu z parametrem {{LinkZobaczTeż|zastępcza}}, a jeżeli ta zmienna przyjmuje wartość odpowiadająca fałszywej, wtedy zmienna z tej samej tablicy o kluczu: {{Code|inna_strona_aktualna_niz_biezaca}} {{Patrz|inna_strona_aktualna_niz_biezaca}} - jest to, czy strona jest inna niż zbiorcza, ale wyświetlana na innej stronie, przyjmuje wartość prawdziwą. === Dalsza część funkcji - Tom II === Tworzymy zmienną: {{Code|tablica_zmiennych}}, która jest tablicą pustą, którą uzupełniamy o elementy o kluczach: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}} - są to dane zebrane z bieżącej strony, i {{Code|linkobiekt}} {{Patrz|linkobiekt}} - są to dane zebrane o linkach na stronie odpowiadających poszczególnym obiektom. Uruchamiamy funkcję: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}, z której wyznaczamy parametr: {{Code|tabela_listy_danych_analizy_ksiazki}} - są to dane zebrane z bieżącej i innych stron skojarzonej z nim, te elementy są tylko w postaci nieprzetworzonej, ale przygotowanej. A jeśli ten parametr jest tabelką - a jeżeli nie jest, to nastąpił błąd przetwarzania, i funkcja nie idzie dalej w instrukcję warunkową, wtedy wywołujemy funkcję: {{Code|{{sr|#p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony|p=StronicowyParser/NumeracjaObiektówStron}}}}. === Dalsza część funkcji - Tom III === Na sam koniec funkcji zwracamy tablicę: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}} - ta zmienna zawiera dane w postaci przetworzonej policzonej, tzn. uchwytom są przydzielone numeracje, sprawdzane, czy uchwyty są policzone, są wyznaczone wszystkie kody problemów, które później są potrzebne do wyznaczania wszystkich kategorii błędów na stronie. == {{Śródtytuł|p.SpisRzeczyWedlePodanegoTekstu}}{{Code|p.SpisRzeczyWedlePodanegoTekstu}} == Funkcja generowania liczenia nagłówków strony, co na tej podstawie może być generowany '''spis treści''' strony. Funkcja przyporządkowuje uchwytom szablonów nagłówków ich identyfikatory i te nagłówki, w którym one leżą, jeżeli zmienna {{LinkPatrz|obiekty}} istnieje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SpisRzeczyWedlePodanegoTekstu(self,tekst_artykulu,nazwa_strony,czy_artykul_korzystany, tylko_naglowek,obiekty,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_obiektow_strony_danych_kodow_specjalnych_modul,KtorySzablonMaZwracacKategorie,wzory_zamiast_kodow,tabela_elementow_strony_kodow)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}} - tekst przetworzony, przygotowany ewentualnie przez pewną funkcję, rozważanego artykułu, * {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} - nazwa strony, danego spisu, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy strona jest bieżąca, * {{Code|tylko_naglowek}} {{Patrz|tylko_naglowek}} - pisz adresy stron z tylko nagłówkami '''#''', bez adresów stron, * {{Code|obiekty}} {{Patrz|obiekty}} - elementy tam zebrane, są wykorzystywane do analizy nagłówków poprzez szablon {{s|Śródtytuł}}, któremu temu nagłówkowi odpowjada pewien uchwyt, czy uchwyty, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}, * {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} - nazwa aktualna, czy bieżąca strony, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy zebranych informacji w postaci zakodowanej modułu {{m|Szablonowe}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tabela przeanalizowanych elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} {{Patrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} - tablica dwuwymiarowa kodów o kluczach: szablonów referencji: '''REF...''' i '''POSTMATH''' oraz ich elementu numeru kodu {{Code|kod}}, którego elementem jest kod tego elementu, * {{Code|KtorySzablonMaZwracacKategorie}} {{Patrz|KtorySzablonMaZwracacKategorie}} - tabela składająca się z trzech elementów, którego pierwszy element to: {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{Patrz|KtorySzablonMaZwracacKategorieNaglowek}} - funkcja dla szablonów problemów dla jak: {{s|Śródtytuł}}, w nagłówku, drugi: {{Code|KtorySzablonMaZwracacKategorieTekst}} {{Patrz|KtorySzablonMaZwracacKategorieTekst}} - funkcja dla tego typu szablonów, ale dla nich w tekście, nie w nagłówku, trzeci: {{Code|CzyJestTakiProblemJakoElementTablicy}} {{Patrz|CzyJestTakiProblemJakoElementTablicy}} - czy nie rozważać, dla rozdziałów zerowych, przeciwnie: ta funkcja może przyjmować wartość {{Code|nil}}, wartość zwracana tego elementu, bo to jest funkcja, zależy, czy jest ustawiony kod problemu: {{Code|nagłówek w tekście rozdziału w stronie korzystanej}} {{Patrz|nagłówek w tekście rozdziału w stronie korzystanej}}, a jeżeli jest taki, to ta funkcja przyjmuje zrzuconą wartość {{Code|true}}, * {{Code|wzory_zamiast_kodow}} {{Patrz|wzory_zamiast_kodow}} - rozważaj wzory według tablicy: {{LinkPatrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}}, lub koduj to według funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}} - to wykorzystuj w przypadku, gdy: {{LinkPatrz|nazwa_strony}}, istnieje, i jest wartością pustą, lub {{Code|{{sr|#p.NormaKoduZakodowanegoWikiTekstu|p=Szablonowe}}}} - przeciwnie, * {{Code|tabela_elementow_strony_kodow}} {{Patrz|tabela_elementow_strony_kodow}} - baza tabela z zapamiętanymi podtabelami, którego poszczególne elementy wykorzystywane w spisie posiadają w sobie tylko pierwszy element w postaci przetworzonego uchwytu, bo używamy tylko uchwytów szablonów nagłówków. === {{Śródtytuł|SpecjalneWprowadzeniaTekstu}}{{Code|SpecjalneWprowadzeniaTekstu}} === Funkcja zamieniające pewne szablony, czy znaczniki, na rozdziały równaniowe. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local SpecjalneWprowadzeniaTekstu=function(szablon,obiekt,kod,czy_szablon,czy_znacznik,czy_liczyc,funkcja1,funkcja2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} {{Patrz|szablon}} - zmienna (szablon), nie musi być to normalny szablon, * {{Code|obiekt}} {{Patrz|obiekt}} - zmienna, którego typu jest obiekt, * {{Code|kod}} {{Patrz|kod}} - numer obiektu typu {{LinkPatrz|obiekt}}, * {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy to jest szablon, * {{Code|czy_znacznik}} {{Patrz|czy_znacznik}} - czy to jest znacznik, * {{Code|czy_liczyc}} {{Patrz|czy_liczyc}} - czy funkcję liczyć w sposób złożony, szablony typu: {{s|SpisTreści}} - zamieniający go na znacznik, czy prosty, co na samym końcu uruchamiana jest funkcja: {{LinkPatrz|funkcja1}}, * {{Code|funkcja1}} {{Patrz|funkcja1}} - funkcja operująca na wygenerowanym pośrednio (dłuższe liczenie) lub bezpośrednio (krótsze) znaczniku, wychodząca z szablonu, i zamieniająca go na rozdział równaniowy, funkcja operująca dla szablonów: {{s|SpisTreści}} lub {{s|HNumer}}, * {{Code|funkcja2}} {{Patrz|funkcja2}} - funkcja operująca na znaczniku '''HTML''' nagłówka - typu jak: {{Tag|h1}}, i zamieniająca go na rozdział równaniowy. ==== {{Śródtytuł|ParametrNR}}{{Code|ParametrNR}} ==== Funkcja liczy dokładnie parametr dany o danym numerze, zbiór danych parametrów oznaczających to samo może być wiele, tylko że jedne mogą być ważniejsze od drugich. Definicja skrótowa funkcja: <syntaxhighlight lang="lua"> local function ParametrNR(numer)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer}} {{Patrz|numer}} - numer parametru. Funkcja wykorzystywuje funkcję do uruchomienia: {{Code|{{sr|#p.SpisRzeczySzablon|p=StronicowyParser/Potrzebne}}}}, do generowania parametrów, a właściwie ich wartości. ==== {{Śródtytuł|ObiektKodNumer}}{{Code|ObiektKodNumer}} ==== Funkcja dodająca do bazy danych kolejny element bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla danego obiektu element na samym końcu, po maksymalnym elemencie do niego. Funkcja liczy kod przy pomocy funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local ObiektKodNumer=function(szablon,obiekt)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}. ==== Dalszy opis funkcji ==== Dla {{LinkPatrz|czy_szablon}} prawdziwego dla szablonów sztucznego spisu treści, sprawdzanego przez tabelkę: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, dla danego szablonowego rozdziału generowanego według {{s|HNumer}}, jest on zamieniany na rozdział równaniowy poprzez funkcję: {{LinkPatrz|funkcja1}}. Ta tabela przedstawia się treścią: <syntaxhighlight lang="lua"> p.szablony_sztucznego_wprowadzenia_tekstu={ ["HNumer"]=1, }; </syntaxhighlight> Dla innych rozdziałów szablonowych, tym razem generowanego przez szablon {{s|SpisTreści}}, którego parametry są wyznaczane przez funkcję: {{LinkŚródtytuł|ParametrNR}}, tabelka parametrów opisująca to: <syntaxhighlight lang="lua"> p.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu={ ["SpisTreści"]={{"artykuł",1,},{"książka",2,},{"nazwa",3,},{"dodatek",4,},{"poziom",},}, }; </syntaxhighlight> Funkcja liczy artykuł, koloruje do niego link w: '''spisie treści''', na czerwona, wtedy generuje dodatkowy znacznik, z właściwością: {{Code|color:red}}, gdy on nie istnieje, i to wstawia do tabeli bazy, lub bez niego, wtedy bezposrednio generuje tekst równy nazwie tego szablonu, opakowany, lub nie, w zależności od istnienia. Do policzenia strony, czy ona istnieje, musi być przedtem zdekodowany funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, by później policzyć to sprawdzenie przy pomocy: {{Code|{{sr|#p.PoliczZbiory|p=Techniczne}}}}. W każdym bądź razie jest ruchumianiana funkcja: {{LinkPatrz|funkcja1}}. Gdy to nie jest szablon, tzn.: {{LinkPatrz|czy_szablon}}, jest fałszywe, ale {{LinkPatrz|czy_znacznik}} jest prawdziwe, to takie znaczniki, jak od: {{Tag|h1}} do {{Tag|h6}}, są zamieniane na czysty tekst. W takim razie wywoływana jest dla tego przypadku funkcja: {{LinkPatrz|funkcja2}}. Funkcja: {{LinkPatrz|funkcja1}}, jest dla szablonów nagłówków, a: {{LinkPatrz|funkcja2}}, dla znaczników nagłówków. Z tych generowanych czystych generowanych tekstów są tworzone w tekście rozdziały równaniowe, by później wygenerować '''spis treści''', właśnie z nimi - z tymi nagłówkami, a bardziej ściśle linkami do nich. === {{Śródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}{{Code|SzablonNaglowkujWNaglowkuRozdzialu}} === Fukcja do obsługi nagłówków {{LinkPatrz|Śródtytuł}} w nagłówku, nie w tekście poza nim. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWNaglowkuRozdzialu(szablon,obiekt,kod,powtorka,parametry_wywolania_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}, * {{Code|powtorka}} {{Patrz|powtorka}} - numer użycia takiego samego szablonu typu {{s|Śródtytuł}} {{Patrz|Śródtytuł}}, * {{Code|parametry_wywolania_szablonu}} {{Patrz|parametry_wywolania_szablonu}} - parametry szablonu wraz z ich wartościami, * {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} - nazwa szablonu wywołania, * {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} - modyfikatory szablonu. Funkcja sprawdza, czy szablon w nagłówku jest typu {{LinkPatrz|Śródtytuł}}, a jeżeli tak, to liczy jego uchwyt, najpierw wyznacza je z parametru o nazwie {{Code|uchwyt}} {{Patrz|uchwyt}}, dalej sprawdzane jest, czy taki uchwyt tak zdefiniowany istnieje, jeśli tak, to wydobywana jest jego przetworzona tabela z tym właśnie uchwytek, funkcja robi to względem numeru {{Code|kod}} {{LinkPatrz|kod}} tego szablonu na podstawie funkcji: {{Code|{{sr|#p.WydobywanieUchwytuZeiBezNumeracji|p=StronicowyParser/ZbieranieDanychStron}}}}. Jeżeli wydobyta tabela {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} nie istnieje, w takim razie jest ona dekodowana funkcją: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, a później jest traktowana jako adres '''URL''', tzn. jest dekodowana funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, dalej jest tworzona tabela pusta: {{LinkPatrz|lista_dwuelementowa}}, co dalej jest tam wstawiana do niej jako pierwszy element uzyskany uchwyt przetworzony. A jeśli jednak {{LinkPatrz|lista_dwuelementowa}} została wydobyta z naszej funkcji tabela, która istnieje, wtedy funkcja idzie, niż poprzednio, w inny krok instrukcji warunkowej, wtedy z tej tabeli jest wydobywany pierwszy element jako przetworzony wcześniej uchwyt. Gdy {{ZobaczTeż|uchwyt}} przetworzony uchwyt jest łańcuchem znaków niepusty, wtedy on jest dodawany w postaci tabeli, w której jest ten uchwyt, na sam koniec tabeli {{Code|numeracja}} {{Patrz|numeracja}}. Gdy liczba powtórzeń jest większa niż zero, wtedy jest wywoływana funkcja, przy którym mają być zwrócone kategorie, jeśli zostaną użyte, o nazwie {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}}. Gdy jednak uchwyt uzyskany nie istnieje, to wtedy jest to samo robione, co w: {{LinkZobaczTeż|uchwyt}}. Przed zwróceniem ile razy została dokonana powtórka, jest powiększany licznik powtorek, i to jest otrzymywane z tej funkcji. === {{Śródtytuł|SzablonNaglowkujWTekscieRozdzialu}}{{Code|SzablonNaglowkujWTekscieRozdzialu}} === Funkcja do analizy szablonów nagłówków w tekście rozdziału, nie w nagłówku. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWTekscieRozdzialu(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja sprawdza, czy tekst w bazie kodów jest typu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, w takim razie po wykryciu, że dla tego, że jest to wywołanie szablonowe, a nie instrukcja warukowa w wikikodzie w tekście, wtedy podobnie jest robione, co w funkcji: {{LinkŚródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}, tylko zamiast {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}} jest {{Code|KtorySzablonMaZwracacKategorieTekst}} {{LinkPatrz|KtorySzablonMaZwracacKategorieTekst}}. Przy wykryciu tam szablonu typu {{LinkPatrz|Śródtytuł}}, funkcja zawsze zwraca wartość {{Code|true}}, w innych przypadkach {{Code|false}}. W przypadku intrukcji warunkowej w wikikodzie i dla ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jest wtedy zwracana wartość {{Code|false}}. Funkcja w pozostałych przypadkach zwraca wartość logiczną {{Code|false}}. === {{Śródtytuł|SzablonyWywolywane}}{{Code|SzablonyWywolywane}} === Szablon zamieniający specjalne znaki szablonów, tzn.: {{Code|{{((}}}}, {{Code|{{))}}}}, {{Code|{{!}}}} i {{Code|{{=}}}}, kolejno na: {{Code|{{s|((}}}}, {{Code|{{s|))}}}}, {{Code|{{s|!}}}} i {{Code|{{s|{{=}}}}}}, takich {{ZobaczTeż|StronicowyParser}}, które zawierają wywołania '''Stronicowego Parsera''', czyli ramki typu: {{Code|{{m|StronicowyParser}}}}, czy: {{Code|{{m|StronicowyParser/}}}}, a inne są po prostu przypisywane. W przypadku linków, i nie tylko, tzn. dla szablonów {{LinkZobaczTeż|StronicowyParser}}, z innych stron niż korzystana, co jest trafnie oznaczone zaprzeczeniem parametru {{LinkPatrz|czy_artykul_korzystany}} są liczone parametry pudełkowe {{Code|{{m|Pudełko}}}}. Strony wskazane przez te parametry są analizowane, przy czym linki są przez inną funkcję, a inne już przez znów inną. Szablony nagłówków typu {{LinkPatrz|Śródtytuł}}, czy szablonów stronicowych otwierających i zamykających, one lub jego koledzy, tzn. ich: {{s|StronaStart}} i {{s|StronaKoniec}}, są zastępowane ciągiem pustym. Inne parametry opisane z tabeli {{Code|{{sr|#p.szablony_stronicowe_kontenerowe_formatowania_wzorowego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, są zastępowane ich zawartością, by uniknąć kontaktu nagłówków z tego typu szablonami. Szablony ideksowania określone tabelą: {{Code|{{sr|#p.szablony_indeksowania}}}} {{Patrz|p.szablony_indeksowania}}, nie są rozwijana z kodowania lub są, w zależności, czy zmienna: {{Code|czy_indeksowanie}} {{Patrz|czy_indeksowanie}}, ma wartość {{Code|true}} - tutaj są, czy odpowiadającej fałszywej wartości logicznej - a tutaj już nie. W przypadku instrukcji warunkowych, czy ramek {{lpg|Lua}} w {{lpg|Lua|Scribunto}}, one są rozwijane - kod tego jest zawartością {{LinkPatrz|szablon}}. W innych przypadkach funkcja zwraca wartość {{Code|nil}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywane(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. W powyższym opisie występują szablony opisane w: {{LinkPatrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, a jej definicja jest: <syntaxhighlight lang="lua"> p.szablony_stronicowe_kontenerowe_formatowania_wzorowego={ ["Formuła"]=1; }; </syntaxhighlight> Jest to szablon: {{s|Formuła}} i podobne, liniowe wstawiane do tekstu, ta tabela ma za zadanie zastąpić te szablony ich poszczególnym zawartościom, a ta funkcja, która ją wykorzystywuje się do tego przypadku, jest o nazwie: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}. Tabelą szablonów indeksowania, to są one zdefiniowane przez: {{LinkPatrz|p.szablony_indeksowania}}, a jej zawartość: <syntaxhighlight lang="lua"> p.szablony_indeksowania={ ["Kotwica"] =true, ["Indeksuj"]=true, }; </syntaxhighlight> Są to szablony kotwic: {{s|Kotwica}}, który jest szablonem liniowym, a {{s|Indeksuj}}, natomiast to blokowy. === {{Śródtytuł|SzablonyWywolywaneOgolny}}{{Code|SzablonyWywolywaneOgolny}} === Funkcja rozwija nagłówek, wydzielając z niego zwykły tekst, nie dopełniając pewnych operacji. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywaneOgolny(naglowek)...end; </syntaxhighlight> Parametry funkcji: * {{Code|naglowek}} {{Patrz|naglowek}} - tekst nagłówka napisu wprowadzenia tekstu. Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["WydzielZwykłyTekst"]|p=Specjalne}}}}, kod jej wywoływany jest z parametrami: <syntaxhighlight lang="lua"> local naglowek,Znaczniki,SzablonyStylowe,ZnakiSpecjalne=specjalne_modul["WydzielZwykłyTekst"]( { ---- tekst nagłówka; tekst=naglowek, ---- Nie wykorzystywuj w działaniu funkcji: Znaczniki, SzablonyStylowe, ZnakiSpecjalne; ["nagłówek"]=true, ---- Nie wykorzystuj dekodowania tekstu zakodowanego, bez rozwijania, ale wręcz przzeciwnie rozwijaj, pozostawiaj pewne szczególne kody przed rozkodowaniem; nieklasycznie=true, ---- Bazę kodowania weź z zewnątrz; kodowanie=false, ---- Wykorzystywana tablica kodowania tekstu modułu: Module:Szablonowe, zakodowanego z zewnątrz; ["tablica kodowania"]=tablica_analizy_obiektow_strony_dany_modul, },__FUNKCJA1,__FUNKCJA2); </syntaxhighlight> Ta funkcja wydziela zwykły tekst z nagłówka z szablonami zwykłymi i ramkami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, bez naruszenia działania innych elementów szablonowych, jak tagi, czyli: {{s|#tag:}}, które też współdziałają też w kodzie danego nagłówka. Również i z linkami wewnętrznymi i zewnętrznymi, z których wydziela się zwykły tekst, bo wiadomo, że one nie mogą się znaleźć w linkach '''spisu treści''', bo nie może być link w linku w nim, a one niezależnie jakie, bo to ze względu na {{Strong|HTML}} nie możliwe technologicznie. Definicje dwóch kolejnych funkcji zdefiniowanych powyżej: <syntaxhighlight lang="lua"> ---- szablon - kod obiektu kodu w wikikodzie; ---- obiekt - typ obiektu kodu powyżej; ---- kod - numer tego samego typu obiektu; local __FUNKCJA1=function(szablon,obiekt,kod) ---- Funkcja wykorzystywana do ewentualnego modyfikowania użytych szablonów i przedstawianiu jego kodem symbolicznym, lub zastępowania pewnych szablonów nagłówków wartością pustą; local szablon,wynik=SzablonyWywolywane(szablon,obiekt,kod); return szablon,wynik; end; local __FUNKCJA2=function(szablon,obiekt,kod) --- rozwijaj uzyskany szablon, dalej, gdy napotkasz, jeśli zostanie włączone zmienna indeksowania w postaci wartości logicznej; return czy_indeksowanie; end; </syntaxhighlight> Funkcja zwraca wartości, tzn. zmienną z przetworzenia nagłówkowego, bez usuniętych znaczników, stylów i znaków specjalnych, tzn. części otoczone pewnymi cudzysłowami z taką samą liczbą, więc pogrubienia i pochylenia tekstu: <syntaxhighlight lang="lua"> return naglowek, Znaczniki, SzablonyStylowe, ZnakiSpecjalne; </syntaxhighlight> Definicje tych zwróconych funkcji, tzn.: {{Code|Znaczniki}} {{Patrz|Znaczniki}}, {{Code|SzablonyStylowe}} {{Patrz|SzablonyStylowe}} i {{Code|ZnakiSpecjalne}} {{Patrz|ZnakiSpecjalne}}, którego opisy raczej przedstawiają ich nazwy, dokładnie one są udokumentowane tutaj: <syntaxhighlight lang="lua"> ---- tekst - tekst do przetworzenia; local function Znaczniki(tekst,jakie,__FUNKCJA1,__FUNKCJA2) ---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML;---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML; ---- funkcja do usuwania znaczników, tzn. w niej inne funkcje: __FUNKCJA1 - funkcja do zakodowywania tekstu przed usuwaniem znaczników, a __FUNKCJA2 - funkcja do odkodowania tego, co pozostało; tekst=p["UsuńZnaczniki"](tekst,jakie,__FUNKCJA1,__FUNKCJA2); return tekst; end; local function SzablonyStylowe(tekst) ---- funkcja do usuwania uruchomionych stylów, tzn. tych: <templatestyles src="..."/>, wtedy to staje się kodem parsera przetwarzanego za pomocą tekstu dla tego typu znacznika, kodami parsera mogą być też inne obiekty jak ramki Lua w Scribunto, ale nie muszą być takie, ale my rozważamy tutaj tylko jeden typ kodu parsera. tekst=p["UsuńSzablonyStylów"](tekst); return tekst; end; local function ZnakiSpecjalne(tekst) ---- funkcja do usuwania cudzysłowów w takich samych ilościach z prawej i z lewej strony danego fragmentu tekstu w nim; tekst=p["UsuńZnakiSpecjalne"](tekst); return tekst; end; </syntaxhighlight> Definicje tych funkcji znajdują się również w module: {{Code|{{ld2|Specjalne}}}}, które również przedstawiają inne funkcje do upraszczania tekstu, w tym nagłówka, ale nie tylko, bo dowolnego tekstu. === {{Śródtytuł|RefPrzypisowy}}{{Code|RefPrzypisowy}} === Mechanizm zamieniający kod referencji na jej wersję wyświetlaną na ekranie, czyli w nawiasie kwadratowym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local RefPrzypisowy=function(obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|obiekt}} {{Patrz|obiekt-ref}} - nazwa typu przypisu, czyli jak bez nazwy, czy też jak: '''uwaga''', * {{Code|kod}} {{Patrz|kod-ref}} - numer danego typu przypisu. Gdy {{LinkPatrz|obiekt-ref}} nie ma nazwy, wtedy w nawiasie kwadratowym będzie tylko numerek {{LinkPatrz|kod-ref}}, a jeśli ma nazwę, to nazwa oddzielona spacją z prawej strony, a po nim jest ten numerek. === Dalsza część funkcji - Tom I === Tutaj opowiemy o części wstępnej tej funkcji. ==== Ustalanie zmiennej nazwy modułu aktualnej, czy bieżącej ==== Funkcja ustawia zmienną: {{Code|czy_kodowanie}} {{Patrz|czy_kodowanie}}, na podstawie istnienia zmiennych: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} i {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. ==== Wyznaczanie nazwy modułu aktualnej, czy bieżącej, dla strony aktualnej, jeśli ona nie istnieje ==== Jeżeli zmienna {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} jest odpowiadającej wartości fdałszywej i mamy strona korzystaną, co określa parametr {{LinkPatrz|czy_artykul_korzystany}}, w postaci wartości prawdziwej, wtedy są liczone kolejne zmienne nazw na podstawie istnienia lub nieistnienia zmiennej {{Code|alternatywna}}, a jeśli ona jest prawdziwa, wtedy wybierane są zmienne z tą aktualną nazwą woluminu wynikłe z {{LinkZobaczTeż|strona_aktualna}}, przeciwnie z nazwą bieżącą woluminu,na podstawie tego, co wyświetla '''Stronicowy Parser''', te nazwy są ze sobą łączone, wtedy powstaje pełna nazwa strony, którą przyrównujemy do {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}}. Jeśli wartość {{LinkPatrz|czy_artykul_korzystany}} jest jednak fałszywa, w takim razie jest liczona {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} na podstawie wartości {{LinkPatrz|nazwa_strony}}. ==== Kodowanie '''HTML''' specjalnych znaków strony ==== Nazwę strony {{LinkPatrz|nazwa_strony}}, w której mogą występować specjalne znaki, które są niezrozumiałe z punktu widzenia '''HTML''', jeżeli np.z nich trzeba zbudować identyfikatory '''id''', a więc trzeba je zakodować, robimy to funkcją: {{Code|{{sr|#p.EncodeId|p=Html}}}}. ==== Zwracanie funkcji liczenia numeru nagłówka ==== Wyznaczamy funkcję: {{Code|HNumer}} {{Patrz|HNumer}}, która jest efektem zwrócenia przez: {{Code|{{sr|#p.LiczonyHNumer|p=StronicowyParser/Potrzebne}}}}. ==== Zamienianie szablonów nagłówków, czy nawet tych znaczników, na rozdziały równaniowe ==== Jeśli {{LinkPatrz|czy_kodowanie}} przyjmuje wartość prawdziwą, wtedy definiujemy funkcję: {{LinkŚródtytuł|SpecjalneWprowadzeniaTekstu}}. Dalej funkcja zamienia szablony: {{s|SpisTreści}} i {{s|HNumer}}, a także znaczniki: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, na ich wersję równaniową, aby dało się je rozpoznać jako rozdziały i było je łatwo wsadzić do szablonu takiego jak: {{s|Spis treści}} i inne podobne, za pomocą dwóch kolejnych funkcji wsadzonych do pewnej funkcji modułu {{m|Szablonowe}}, która służy do operacji na takich przypadkach. === Zmienna strony z nagłówkaami === Gdy jest podana zmienna: {{Code|tylko_naglowek}} {{LinkPatrz|tylko_naglowek}}, ma wartość prawdziwą, wtedy zmienna: {{Code|nazwa_strony_z_naglowkami}} {{Patrz|nazwa_strony_z_naglowkami}}, przybiera wartość pustą, przeciwnie gdy zmienna {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}} jest ciągiem pusty, wtedy to samo, w innym pozostałym przypadku jest to dokładnie {{LinkPatrz|nazwa_strony}}, gdzie przed nim znajduje się dwukropek {{Code|:}}. === Dalsza część funkcji - Tom II === Tu powiemy coś o iteratorze, który po zebraniu danych zwraca zmienną {{Code|nil}}, co odpowiada dla pętli, jej przerwaniu. ==== Definicja iteratora zbierania informacji o stronie ==== Aby uruchomić pętle na rzeczywistych danych zakodowanej, czy nie, stronie, trzeba otrzymać zmienną pętli {{Code|iterator}} {{Patrz|iterator}} i go wywoływać bezparametrowo w każdym okrążeniu pętli, aby tak się stało, to trzeba uruchomić funkcję: {{Code|{{sr|#p.IterTekst|p=StronicowyParser/Rozdziały}}}}, na tekście {{LinkPatrz|tekst_artykulu}}, traktując tekst, jakby nie był taki zakodowany, bo tutaj jedynie się liczą elementy niezakodowane, czyli w tym przypadku nagłówki z tekstem rozdziału. ==== Zbieranie informacji o stronie w pętli generowanej przez iterator ==== Będziemy tutaj opisywali pętlę generowaną przez jego iterator {{LinkPatrz|iterator}}. W każdym okrązeniu pętli otrzymujemy dane: * {{Code|naglowek_tab}} {{Patrz|naglowek_tab}} - gdzie pierwszy jego element to {{Code|naglowek}} {{LinkPatrz|naglowek}}, * {{Code|text_rozdzialu}} {{Patrz|text_rozdzialu}} - tekst rozdziału, * {{Code|poziom_rozdzialu}} {{Patrz|poziom_rozdzialu}} - poziom rozdziału. ===== Definicja nowe wartości zbierania uchwytów nagłówka w zmiennej numeracji ===== Deklaracja zmiennej {{Code|numeracja}} {{LinkPatrz|numeracja}} jest na zewnętrz pętli, w niej tworzymy jej nową wartość, którą jest tablica pusta. ==== Uzyskiwanie informacji z tekstu rozdziału nagłówka, i jego możliwych uchwytach, w poszczegolnym okrążeniu pętli, i zrzuceniu tam pojedynczego kodu problemu ==== Jeżeli tekst strony jest zakodowany, to iterujemy po tekście {{LinkPatrz|text_rozdzialu}} w poszukiwaniu kodów bazy kodów zakodowanego tekstu, w tym celu wywołujemy pętlę: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, wtedy uzyskujemy trzy obiekty w każdym przebiegu pętli, tzn. {{Code|szablon}} {{LinkPatrz|szablon}}, {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, za pomocę tego uruchamiamy funkcję: {{LinkŚródtytuł|SzablonNaglowkujWTekscieRozdzialu}}. Jeżeli funkcja napotkała uchwyt szablonu: {{Code|{{s|Śródtytuł}}}}, wtedy jest zatrzymywana, w takim razie mamy informację o wystąpieniu niedozwolonego szablonu nagłówka w tekście. A jeżeli takiego szablonu tam nie ma, to układ iterator {{LinkPatrz|iterator}} iteruje aż do zakończenia danych. ==== Uzyskiwanie nagłówka i do niego identyfikatora '''id''' ==== ===== Tekst niezakodowany nagłówka ===== Gdy tekst nie jest zakodowany, wtedy zmienna: {{LinkPatrz|czy_kodowanie}}, ma wartość odpowiaadające fałszywej, wtedy dla tego nagłówka {{LinkPatrz|naglowek}} jest uruchamiana funkcja: {{Code|{{sr|#p.["PrzetwórzNagłówek"]|p=Specjalne}}}}, wtedy otrzymujemy dwie wartości: {{Code|nazwa_rozdzialu_w_artykule}} {{Patrz|nazwa_rozdzialu_w_artykule}} - zmienna idententyfikatora, {{Code|naglowek}} {{LinkPatrz|naglowek}} - zmienna nagłówka. Te dwie zmienne zostały maksymalnie rozwinięte, zostały przystosowane do tego, aby słuzyły do tego, co trzego zostały stworzone. ===== Tekst zakodowany nagłówka ===== Gdy jednak {{LinkPatrz|czy_kodowanie}} przyjełajednak wartość fałszywą, wtedy jest uruchamiana funkcja: {{LinkŚródtytuł|SzablonyWywolywaneOgolny}}, z której otrzymujemy: {{Code|naglowek}} {{LinkPatrz|naglowek}} - zmienna przetworzonego i maksymalnie rozwiniętego nagłówka, oraz zmienne funkcje: {{LinkPatrz|Znaczniki}}, {{LinkPatrz|SzablonyStylowe}} i {{LinkPatrz|ZnakiSpecjalne}}. Na podstawie defiicji: {{Code|nazwa_rozdzialu_w_artykule}} {{LinkPatrz|nazwa_rozdzialu_w_artykule}}, mamy: {{Code|naglowek}} {{LinkPatrz|naglowek}}. ====== Kompletowanie nagłówka ====== Ten nagłówek kompletujemy funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, usuwając szablony indeksowania {{LinkPatrz|p.szablony_indeksowania}}, a także znaczniki: {{Tag|li}}, {{Tag|ul}} i {{Tag|ol}}. ====== Kompletowanie identyfikatora nagłówka ====== Kompletując: {{Code|nazwa_rozdzialu_w_artykule}} {{LinkPatrz|nazwa_rozdzialu_w_artykule}}, rozwijamy wszystko, oprócz atrybutów, {{Code|obiekt}} {{Code|{{=}}}} {{Code|ATRYBUTY}}, a na szablonach wywołujemy funkcję: {{LinkŚródtytuł|SzablonyWywolywaneOgolny}}. Na identyfikatorze nagłówka {{LinkPatrz|nazwa_rozdzialu_w_artykule}} Wywołujemy kolejno lokalne funkcje: {{LinkPatrz|SzablonyStylowe}} - do usuwania rozwiniętych kodów stylów, {{LinkPatrz|ZnakiSpecjalne}} - do usuwania cudzysłowów, i {{LinkPatrz|Znaczniki}} - do usuwania znaczzników. ====== Gdy w kodzie identyfikatora nie ma symbolicznych szablonów ====== W tym przypadku uruchamiamy fukcję do dekodowania znaków '''HTML''', tzn. dziesiętnych, szesnastkowych i literowych, funkcją: {{Code|{{sr|#p.DecodeKoduHTMLZnaku|p=Html}}}}, a później kodujemy specjalne znaki identyfikatora sposobem: {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, przy pomocy kodów '''HTML''' dziesiętnych. ===== Usuwanie zbędnych znaków w identyfikatorze ===== Usuwane są potrójne i podwójne cudzysłowy {{Code|'}} oraz odstępy i dolne myślniki na końcach łańcucha, a wewnętrz jego kolejne je są zastępowane jedną spacją. ===== Referencje i wzory matematyczne ===== Referencje są zastępowane odpowiednio przy pomocy funkcji: {{LinkŚródtytuł|RefPrzypisowy}}, a wzory matematyczne, dla obiektów typu {{Code|POSTMATH}} {{Patrz|POSTMATH}}, które są zastępowane prawidłowo poprzez: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.text.encode|b=tak}}}}, przy pomocy: {{Code|{{sr|#p.NormaKoduZakodowanegoHtmlTekstu|p=Szablonowe}}}}, obiektem: {{Code|postMath}} {{Patrz|postMath}} z ośmioma znakami cyferkami na końcu tego, którym jest {{Code|kod}} {{LinkPatrz|kod}}. ===== Wstępne przygotowanie identyfikatora do końcowego skutecznego użytku ===== Dla danego identyfikatora one mogą się powtarzać, a identyfikator musi być unikalny, zatem trzeba napisać ich dodatkowe numerki, po policzeniu otrzymamy {{Code|numer_tego_samego_naglowka}} {{Patrz|numer_tego_samego_naglowka}}. ====== Tablica identyfikatora i nagłówka ====== Dla {{LinkPatrz|numer_tego_samego_naglowka}} równego {{Code|1}}, tworzemy tablicę,którego pierwszym elementem jest: {{LinkPatrz|nazwa_rozdzialu_w_artykule}}, a drugim nagłówek {{LinkPatrz|naglowek}}, a w przypadku tego numerku innego niż podana liczba, to dajemy do identyfikatora na końcu ten numerek po dolnym myślniku. ====== Uzupełnianie zmiennej do identyfikacji uchwytu z odpowiednim nagłówkiem ====== Jeśli: {{LinkPatrz|obiekty}} i {{LinkPatrz|numeracja}}, istnieją, wtedy do tej pierwszej tablicy dodawane są wszystkie elementy o takim samym typie z {{LinkPatrz|numeracja}}. To dodawanie na końcu tablicy przedstawia się: <syntaxhighlight lang="lua"> for _,value_numeracja in ipairs(numeracja)do obiekty[#obiekty+1]={value_numeracja,{nazwa_strony_z_naglowkami,elementy_linku[1], elementy_linku[2]}}; end; </syntaxhighlight> ====== Tworzenie tablicy nagłówkami i indetyfikatorami ====== Jeśli {{Code|poziom_rozdzialu}} jest większy od zera, tzn. {{Code|> 0}}, wtedy liczymy numer rozdziału przy pomocy funkcji: {{Code|HNumer}} {{LinkPatrz|HNumer}} liczony z: {{Code|poziom_rozdzialu}} {{LinkPatrz|poziom_rozdzialu}}, tworząc w ten sposób wynik w postaci zmiennej {{Code|numer_rozdzialu_ustalony}} {{Patrz|numer_rozdzialu_ustalony}}. Jest tworzona tablica spisu: {{Code|tablica_spisu_tresci}} {{Patrz|tablica_spisu_tresci}}, jako pusta tablica, z później dodanym elementem o kluczu: {{Code|nazwa_strony}}, którym jest o wartości: {{LinkPatrz|nazwa_strony_z_naglowkami}}. Do tablicy: {{LinkPatrz|tablica_spisu_tresci}}, dodawane są elementy według schematu: <syntaxhighlight lang="lua"> tablica_spisu_tresci[#tablica_spisu_tresci+1]={elementy_linku,numer_rozdzialu_ustalony}; </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> nzv5rm1v0pgw1sbnyrie2dvpccgwh90 548353 548352 2026-07-26T12:21:03Z Persino 2851 /* Dalsza część funkcji - Tom II */ 548353 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}|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.PobieranieInformacjiRamkiRozpatrywanejStrony}}{{Code|p.PobieranieInformacjiRamkiRozpatrywanejStrony}} == Pobieranie danych z obiektu {{LinkPatrz|self}}, biorąc jego podtablicę o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiRamkiRozpatrywanejStrony(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa ramki tablicy transportu. == {{Śródtytuł|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}}{{Code|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}} == Funkcja uruchamiacz, główna funkcja dzięki, której ładują się informacje według modułu: {{Code|{{ld2|StronicowyParser/informacje}}}} (tam jest użyty). Ten ładowacz jest pokazany w module opis: {{Code|{{lr2|Moduły/StronicowyParser/informacje}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}. === {{Śródtytuł|DaneNazw}}{{Code|DaneNazw}} === Funkcja licząca nazwy podanej nazwy strony, tzn.: {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} {{Patrz|nazwa_artykulu}}, oraz zwracające te kolejno nazwy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function DaneNazw(pelna_nazwa_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|pelna_nazwa_strony}} {{Patrz|pelna_nazwa_strony}} - pełna nazwa strony. === Dalsza część funkcji - Tom I === ==== Tworzenie i inicjowanie początkowych tabel ==== Funkcja tworzy podtabele tabeli zmiennej obiektowej {{LinkPatrz|self}} o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, o wartości pustej. Następnie są tworzone podtabele puste w tej ostatniej o kluczach: {{Code|dane_analizy_stron}} {{Patrz|dane_analizy_stron}} i {{Code|licencja}}{{Patrz|licencja}}, oraz nilowe zmienne z tego samego, co ostatnie, o kluczu: {{Code|problemy}} {{Patrz|problemy}}. ==== Zmienne nazw strony bieżącej, czy nawet aktualnej, w zależności, czy istnieją odpowiednie ustawienia ==== Jest liczony adres strony, na której jest uruchomiona dana strona, wewnętrznej bezparametrowo według: {{Code|{{sr|#p["PełnaNazwaArtykułu"]|p=Książkowe}}}} {{Patrz|strona_aktualna}}, co z tego są liczone z niego: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, co z tego jest liczona pełna nazwa książki {{Code|pelna_nazwa_ksiazki}} {{Patrz|pelna_nazwa_ksiazki}}. ==== Zbieranie danych ustawień z: {{Code|.../config}}, jeśli istnieją ==== Jest liczony pełny adres ustawień: {{Code|pelna_nazwa_ksiazki_ustawienia}} {{Patrz|pelna_nazwa_ksiazki_ustawienia}}, według schematu: {{Code|"Szablon:Podręcznik/Ustawienia/"..pelna_nazwa_ksiazki}} {{Patrz|UstawieniaKsiążki}}. Co z tego jest sprawdzane, czy istnieje strona: {{Code|pelna_nazwa_ksiazki_ustawienia.."/config"}} {{Patrz|config}}, a jeśli tak, to wtedy wiemy, że to jest szablon, to go przedstawiamy w postaci szablonowej, licząc z: {{Code|{{sr|#p.NazwaSzablonu|p=Szablonowe}}}}. Dalej jest liczony ostatni wyliczony szablon z parametrem {{Code|książka}} {{Patrz|książka}}, dalej jeszcze raz, tym razem z parametrem: {{Code|artykuł}} {{Patrz|artykuł}} - te parametry przedstawiają parametry artykułu książkowego, skąd możemy ściągać stronę, by ją wyświetlić na stronie aktualnej, na pewno parametr {{LinkPatrz|książka}} nie może być parametrem składających z samych znaków odstępów, a jeśli tak jest, w takim razie z tych dwóch parametrów jest liczony parametr {{Code|strona}} {{Patrz|strona}}. Dalej liczymy, czy ona jest poprawnym adresem, używając funkcji: {{Code|{{sr|#p["CzyNiepoprawnaNazwa"]|p=Pudełko/Tom I}}}}. A jeżeli adres jest jednak poprawny, ta funkcja zwraca wartość odpowiadającej fałszywej wartości, wtedy jest liczony pełny adres strony, jeżeli ona jest względna z parametrów, tzn. parametr pierwszy: {{LinkPatrz|strona}}, i parametr drugi: {{LinkPatrz|strona_aktualna}}, co względem tej funkcji mamy już: {{LinkPatrz|strona}}, czyli po tej operacji (procedurze) policzyliśmy bezwzględny jego adres. ===== Liczenie nazw z parametru pełnej nazwy aktualnej, nie bieżącej, strony wynikłe z obliczeń z ustawień ===== Policzona wartość strony: {{LinkPatrz|strona}}, jest sprawdzana, czy adres (strona), pod którym ona się kryje, istnieje, a jeśli tak, to ten adres jest tylko formatowany. Porównujemy adres {{LinkPatrz|strona}} z {{LinkPatrz|strona_aktualna}}, czy przedstawiają nie ten sam adres, a jeżeli tak, to liczymy wszyskie nazwy strony, czyli dla bez {{Code|aktualna_}}, przyrównujemy do tego z tym początkiem, co odpowiada pełnej nazwie strony z {{Code|strona_aktualna}} {{LinkPatrz|strona_aktualna}} {{ZobaczTeż|strona_aktualna}}, i używając funkcji: {{LinkŚródtytuł|DaneNazw}}, ze zmiennej: {{Code|strona}} {{LinkPatrz|strona}} {{ZobaczTeż|strona}}. Te ostatnie nazwy są potrzebne do analizy strony bieżącej, nie aktualnej, tzn. na niej, jakie są szablony, jakie posiada spisy, jakie książki, a w nim spisy do nich, są dołączone. ====== Policzone nazwy strony aktualnej wpisane do ogólnej tablicy ====== A póżniej z adresów pliczonych wywołania, dotyczącej tego aktualnego, liczymy dla podtabeli: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienne o kluczach: {{Code|aktualna_nazwa_przestrzeni}} {{Patrz|aktualna_nazwa_przestrzeni}}, {{Code|aktualna_nazwa_przestrzeni_ksiazki}} {{Patrz|aktualna_nazwa_przestrzeni_ksiazki}}, {{Code|aktualna_nazwa_ksiazki}} {{Patrz|aktualna_nazwa_ksiazki}} i {{Code|aktualna_nazwa_artykulu}} {{Patrz|aktualna_nazwa_artykulu}}, mając zmienne nazw policzone z tego aktualnego. ===== Czy strona bieżąca, ale nie zbiorcza, jest wyświetlana na stronie aktualnej, czy może jest tylko stroną zbiorczą uruchomioną pod inną nazwą ===== Jeśli zmienne nazw są policzone z: {{LinkZobaczTeż|strona}} i {{LinkZobaczTeż|strona_aktualna}}, to wtedy kolejno porównujemy, czy któraś z nich jest nierówna, a jeśli tak, to wywołujemy szablon z parametru: {{Code|zastępcza}} {{ZobaczTeż|zastępcza}} - jest to, czy strona jest zbiorcza, o nazwie: {{LinkPatrz|config}}, czy powinna być wartością niepustą. A jak tak, to wyznaczamy z tablicy: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienną o kluczu: {{Code|alternatywna}} {{Patrz|alternatywna}}, co przyrównujemy jemu wartość logiczną z uzyskanego z szablonu z parametrem {{LinkZobaczTeż|zastępcza}}, a jeżeli ta zmienna przyjmuje wartość odpowiadająca fałszywej, wtedy zmienna z tej samej tablicy o kluczu: {{Code|inna_strona_aktualna_niz_biezaca}} {{Patrz|inna_strona_aktualna_niz_biezaca}} - jest to, czy strona jest inna niż zbiorcza, ale wyświetlana na innej stronie, przyjmuje wartość prawdziwą. === Dalsza część funkcji - Tom II === Tworzymy zmienną: {{Code|tablica_zmiennych}}, która jest tablicą pustą, którą uzupełniamy o elementy o kluczach: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}} - są to dane zebrane z bieżącej strony, i {{Code|linkobiekt}} {{Patrz|linkobiekt}} - są to dane zebrane o linkach na stronie odpowiadających poszczególnym obiektom. Uruchamiamy funkcję: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}, z której wyznaczamy parametr: {{Code|tabela_listy_danych_analizy_ksiazki}} - są to dane zebrane z bieżącej i innych stron skojarzonej z nim, te elementy są tylko w postaci nieprzetworzonej, ale przygotowanej. A jeśli ten parametr jest tabelką - a jeżeli nie jest, to nastąpił błąd przetwarzania, i funkcja nie idzie dalej w instrukcję warunkową, wtedy wywołujemy funkcję: {{Code|{{sr|#p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony|p=StronicowyParser/NumeracjaObiektówStron}}}}. === Dalsza część funkcji - Tom III === Na sam koniec funkcji zwracamy tablicę: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}} - ta zmienna zawiera dane w postaci przetworzonej policzonej, tzn. uchwytom są przydzielone numeracje, sprawdzane, czy uchwyty są policzone, są wyznaczone wszystkie kody problemów, które później są potrzebne do wyznaczania wszystkich kategorii błędów na stronie. == {{Śródtytuł|p.SpisRzeczyWedlePodanegoTekstu}}{{Code|p.SpisRzeczyWedlePodanegoTekstu}} == Funkcja generowania liczenia nagłówków strony, co na tej podstawie może być generowany '''spis treści''' strony. Funkcja przyporządkowuje uchwytom szablonów nagłówków ich identyfikatory i te nagłówki, w którym one leżą, jeżeli zmienna {{LinkPatrz|obiekty}} istnieje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SpisRzeczyWedlePodanegoTekstu(self,tekst_artykulu,nazwa_strony,czy_artykul_korzystany, tylko_naglowek,obiekty,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_obiektow_strony_danych_kodow_specjalnych_modul,KtorySzablonMaZwracacKategorie,wzory_zamiast_kodow,tabela_elementow_strony_kodow)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}} - tekst przetworzony, przygotowany ewentualnie przez pewną funkcję, rozważanego artykułu, * {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} - nazwa strony, danego spisu, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy strona jest bieżąca, * {{Code|tylko_naglowek}} {{Patrz|tylko_naglowek}} - pisz adresy stron z tylko nagłówkami '''#''', bez adresów stron, * {{Code|obiekty}} {{Patrz|obiekty}} - elementy tam zebrane, są wykorzystywane do analizy nagłówków poprzez szablon {{s|Śródtytuł}}, któremu temu nagłówkowi odpowjada pewien uchwyt, czy uchwyty, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}, * {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} - nazwa aktualna, czy bieżąca strony, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy zebranych informacji w postaci zakodowanej modułu {{m|Szablonowe}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tabela przeanalizowanych elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} {{Patrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} - tablica dwuwymiarowa kodów o kluczach: szablonów referencji: '''REF...''' i '''POSTMATH''' oraz ich elementu numeru kodu {{Code|kod}}, którego elementem jest kod tego elementu, * {{Code|KtorySzablonMaZwracacKategorie}} {{Patrz|KtorySzablonMaZwracacKategorie}} - tabela składająca się z trzech elementów, którego pierwszy element to: {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{Patrz|KtorySzablonMaZwracacKategorieNaglowek}} - funkcja dla szablonów problemów dla jak: {{s|Śródtytuł}}, w nagłówku, drugi: {{Code|KtorySzablonMaZwracacKategorieTekst}} {{Patrz|KtorySzablonMaZwracacKategorieTekst}} - funkcja dla tego typu szablonów, ale dla nich w tekście, nie w nagłówku, trzeci: {{Code|CzyJestTakiProblemJakoElementTablicy}} {{Patrz|CzyJestTakiProblemJakoElementTablicy}} - czy nie rozważać, dla rozdziałów zerowych, przeciwnie: ta funkcja może przyjmować wartość {{Code|nil}}, wartość zwracana tego elementu, bo to jest funkcja, zależy, czy jest ustawiony kod problemu: {{Code|nagłówek w tekście rozdziału w stronie korzystanej}} {{Patrz|nagłówek w tekście rozdziału w stronie korzystanej}}, a jeżeli jest taki, to ta funkcja przyjmuje zrzuconą wartość {{Code|true}}, * {{Code|wzory_zamiast_kodow}} {{Patrz|wzory_zamiast_kodow}} - rozważaj wzory według tablicy: {{LinkPatrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}}, lub koduj to według funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}} - to wykorzystuj w przypadku, gdy: {{LinkPatrz|nazwa_strony}}, istnieje, i jest wartością pustą, lub {{Code|{{sr|#p.NormaKoduZakodowanegoWikiTekstu|p=Szablonowe}}}} - przeciwnie, * {{Code|tabela_elementow_strony_kodow}} {{Patrz|tabela_elementow_strony_kodow}} - baza tabela z zapamiętanymi podtabelami, którego poszczególne elementy wykorzystywane w spisie posiadają w sobie tylko pierwszy element w postaci przetworzonego uchwytu, bo używamy tylko uchwytów szablonów nagłówków. === {{Śródtytuł|SpecjalneWprowadzeniaTekstu}}{{Code|SpecjalneWprowadzeniaTekstu}} === Funkcja zamieniające pewne szablony, czy znaczniki, na rozdziały równaniowe. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local SpecjalneWprowadzeniaTekstu=function(szablon,obiekt,kod,czy_szablon,czy_znacznik,czy_liczyc,funkcja1,funkcja2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} {{Patrz|szablon}} - zmienna (szablon), nie musi być to normalny szablon, * {{Code|obiekt}} {{Patrz|obiekt}} - zmienna, którego typu jest obiekt, * {{Code|kod}} {{Patrz|kod}} - numer obiektu typu {{LinkPatrz|obiekt}}, * {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy to jest szablon, * {{Code|czy_znacznik}} {{Patrz|czy_znacznik}} - czy to jest znacznik, * {{Code|czy_liczyc}} {{Patrz|czy_liczyc}} - czy funkcję liczyć w sposób złożony, szablony typu: {{s|SpisTreści}} - zamieniający go na znacznik, czy prosty, co na samym końcu uruchamiana jest funkcja: {{LinkPatrz|funkcja1}}, * {{Code|funkcja1}} {{Patrz|funkcja1}} - funkcja operująca na wygenerowanym pośrednio (dłuższe liczenie) lub bezpośrednio (krótsze) znaczniku, wychodząca z szablonu, i zamieniająca go na rozdział równaniowy, funkcja operująca dla szablonów: {{s|SpisTreści}} lub {{s|HNumer}}, * {{Code|funkcja2}} {{Patrz|funkcja2}} - funkcja operująca na znaczniku '''HTML''' nagłówka - typu jak: {{Tag|h1}}, i zamieniająca go na rozdział równaniowy. ==== {{Śródtytuł|ParametrNR}}{{Code|ParametrNR}} ==== Funkcja liczy dokładnie parametr dany o danym numerze, zbiór danych parametrów oznaczających to samo może być wiele, tylko że jedne mogą być ważniejsze od drugich. Definicja skrótowa funkcja: <syntaxhighlight lang="lua"> local function ParametrNR(numer)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer}} {{Patrz|numer}} - numer parametru. Funkcja wykorzystywuje funkcję do uruchomienia: {{Code|{{sr|#p.SpisRzeczySzablon|p=StronicowyParser/Potrzebne}}}}, do generowania parametrów, a właściwie ich wartości. ==== {{Śródtytuł|ObiektKodNumer}}{{Code|ObiektKodNumer}} ==== Funkcja dodająca do bazy danych kolejny element bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla danego obiektu element na samym końcu, po maksymalnym elemencie do niego. Funkcja liczy kod przy pomocy funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local ObiektKodNumer=function(szablon,obiekt)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}. ==== Dalszy opis funkcji ==== Dla {{LinkPatrz|czy_szablon}} prawdziwego dla szablonów sztucznego spisu treści, sprawdzanego przez tabelkę: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, dla danego szablonowego rozdziału generowanego według {{s|HNumer}}, jest on zamieniany na rozdział równaniowy poprzez funkcję: {{LinkPatrz|funkcja1}}. Ta tabela przedstawia się treścią: <syntaxhighlight lang="lua"> p.szablony_sztucznego_wprowadzenia_tekstu={ ["HNumer"]=1, }; </syntaxhighlight> Dla innych rozdziałów szablonowych, tym razem generowanego przez szablon {{s|SpisTreści}}, którego parametry są wyznaczane przez funkcję: {{LinkŚródtytuł|ParametrNR}}, tabelka parametrów opisująca to: <syntaxhighlight lang="lua"> p.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu={ ["SpisTreści"]={{"artykuł",1,},{"książka",2,},{"nazwa",3,},{"dodatek",4,},{"poziom",},}, }; </syntaxhighlight> Funkcja liczy artykuł, koloruje do niego link w: '''spisie treści''', na czerwona, wtedy generuje dodatkowy znacznik, z właściwością: {{Code|color:red}}, gdy on nie istnieje, i to wstawia do tabeli bazy, lub bez niego, wtedy bezposrednio generuje tekst równy nazwie tego szablonu, opakowany, lub nie, w zależności od istnienia. Do policzenia strony, czy ona istnieje, musi być przedtem zdekodowany funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, by później policzyć to sprawdzenie przy pomocy: {{Code|{{sr|#p.PoliczZbiory|p=Techniczne}}}}. W każdym bądź razie jest ruchumianiana funkcja: {{LinkPatrz|funkcja1}}. Gdy to nie jest szablon, tzn.: {{LinkPatrz|czy_szablon}}, jest fałszywe, ale {{LinkPatrz|czy_znacznik}} jest prawdziwe, to takie znaczniki, jak od: {{Tag|h1}} do {{Tag|h6}}, są zamieniane na czysty tekst. W takim razie wywoływana jest dla tego przypadku funkcja: {{LinkPatrz|funkcja2}}. Funkcja: {{LinkPatrz|funkcja1}}, jest dla szablonów nagłówków, a: {{LinkPatrz|funkcja2}}, dla znaczników nagłówków. Z tych generowanych czystych generowanych tekstów są tworzone w tekście rozdziały równaniowe, by później wygenerować '''spis treści''', właśnie z nimi - z tymi nagłówkami, a bardziej ściśle linkami do nich. === {{Śródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}{{Code|SzablonNaglowkujWNaglowkuRozdzialu}} === Fukcja do obsługi nagłówków {{LinkPatrz|Śródtytuł}} w nagłówku, nie w tekście poza nim. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWNaglowkuRozdzialu(szablon,obiekt,kod,powtorka,parametry_wywolania_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}, * {{Code|powtorka}} {{Patrz|powtorka}} - numer użycia takiego samego szablonu typu {{s|Śródtytuł}} {{Patrz|Śródtytuł}}, * {{Code|parametry_wywolania_szablonu}} {{Patrz|parametry_wywolania_szablonu}} - parametry szablonu wraz z ich wartościami, * {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} - nazwa szablonu wywołania, * {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} - modyfikatory szablonu. Funkcja sprawdza, czy szablon w nagłówku jest typu {{LinkPatrz|Śródtytuł}}, a jeżeli tak, to liczy jego uchwyt, najpierw wyznacza je z parametru o nazwie {{Code|uchwyt}} {{Patrz|uchwyt}}, dalej sprawdzane jest, czy taki uchwyt tak zdefiniowany istnieje, jeśli tak, to wydobywana jest jego przetworzona tabela z tym właśnie uchwytek, funkcja robi to względem numeru {{Code|kod}} {{LinkPatrz|kod}} tego szablonu na podstawie funkcji: {{Code|{{sr|#p.WydobywanieUchwytuZeiBezNumeracji|p=StronicowyParser/ZbieranieDanychStron}}}}. Jeżeli wydobyta tabela {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} nie istnieje, w takim razie jest ona dekodowana funkcją: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, a później jest traktowana jako adres '''URL''', tzn. jest dekodowana funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, dalej jest tworzona tabela pusta: {{LinkPatrz|lista_dwuelementowa}}, co dalej jest tam wstawiana do niej jako pierwszy element uzyskany uchwyt przetworzony. A jeśli jednak {{LinkPatrz|lista_dwuelementowa}} została wydobyta z naszej funkcji tabela, która istnieje, wtedy funkcja idzie, niż poprzednio, w inny krok instrukcji warunkowej, wtedy z tej tabeli jest wydobywany pierwszy element jako przetworzony wcześniej uchwyt. Gdy {{ZobaczTeż|uchwyt}} przetworzony uchwyt jest łańcuchem znaków niepusty, wtedy on jest dodawany w postaci tabeli, w której jest ten uchwyt, na sam koniec tabeli {{Code|numeracja}} {{Patrz|numeracja}}. Gdy liczba powtórzeń jest większa niż zero, wtedy jest wywoływana funkcja, przy którym mają być zwrócone kategorie, jeśli zostaną użyte, o nazwie {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}}. Gdy jednak uchwyt uzyskany nie istnieje, to wtedy jest to samo robione, co w: {{LinkZobaczTeż|uchwyt}}. Przed zwróceniem ile razy została dokonana powtórka, jest powiększany licznik powtorek, i to jest otrzymywane z tej funkcji. === {{Śródtytuł|SzablonNaglowkujWTekscieRozdzialu}}{{Code|SzablonNaglowkujWTekscieRozdzialu}} === Funkcja do analizy szablonów nagłówków w tekście rozdziału, nie w nagłówku. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWTekscieRozdzialu(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja sprawdza, czy tekst w bazie kodów jest typu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, w takim razie po wykryciu, że dla tego, że jest to wywołanie szablonowe, a nie instrukcja warukowa w wikikodzie w tekście, wtedy podobnie jest robione, co w funkcji: {{LinkŚródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}, tylko zamiast {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}} jest {{Code|KtorySzablonMaZwracacKategorieTekst}} {{LinkPatrz|KtorySzablonMaZwracacKategorieTekst}}. Przy wykryciu tam szablonu typu {{LinkPatrz|Śródtytuł}}, funkcja zawsze zwraca wartość {{Code|true}}, w innych przypadkach {{Code|false}}. W przypadku intrukcji warunkowej w wikikodzie i dla ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jest wtedy zwracana wartość {{Code|false}}. Funkcja w pozostałych przypadkach zwraca wartość logiczną {{Code|false}}. === {{Śródtytuł|SzablonyWywolywane}}{{Code|SzablonyWywolywane}} === Szablon zamieniający specjalne znaki szablonów, tzn.: {{Code|{{((}}}}, {{Code|{{))}}}}, {{Code|{{!}}}} i {{Code|{{=}}}}, kolejno na: {{Code|{{s|((}}}}, {{Code|{{s|))}}}}, {{Code|{{s|!}}}} i {{Code|{{s|{{=}}}}}}, takich {{ZobaczTeż|StronicowyParser}}, które zawierają wywołania '''Stronicowego Parsera''', czyli ramki typu: {{Code|{{m|StronicowyParser}}}}, czy: {{Code|{{m|StronicowyParser/}}}}, a inne są po prostu przypisywane. W przypadku linków, i nie tylko, tzn. dla szablonów {{LinkZobaczTeż|StronicowyParser}}, z innych stron niż korzystana, co jest trafnie oznaczone zaprzeczeniem parametru {{LinkPatrz|czy_artykul_korzystany}} są liczone parametry pudełkowe {{Code|{{m|Pudełko}}}}. Strony wskazane przez te parametry są analizowane, przy czym linki są przez inną funkcję, a inne już przez znów inną. Szablony nagłówków typu {{LinkPatrz|Śródtytuł}}, czy szablonów stronicowych otwierających i zamykających, one lub jego koledzy, tzn. ich: {{s|StronaStart}} i {{s|StronaKoniec}}, są zastępowane ciągiem pustym. Inne parametry opisane z tabeli {{Code|{{sr|#p.szablony_stronicowe_kontenerowe_formatowania_wzorowego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, są zastępowane ich zawartością, by uniknąć kontaktu nagłówków z tego typu szablonami. Szablony ideksowania określone tabelą: {{Code|{{sr|#p.szablony_indeksowania}}}} {{Patrz|p.szablony_indeksowania}}, nie są rozwijana z kodowania lub są, w zależności, czy zmienna: {{Code|czy_indeksowanie}} {{Patrz|czy_indeksowanie}}, ma wartość {{Code|true}} - tutaj są, czy odpowiadającej fałszywej wartości logicznej - a tutaj już nie. W przypadku instrukcji warunkowych, czy ramek {{lpg|Lua}} w {{lpg|Lua|Scribunto}}, one są rozwijane - kod tego jest zawartością {{LinkPatrz|szablon}}. W innych przypadkach funkcja zwraca wartość {{Code|nil}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywane(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. W powyższym opisie występują szablony opisane w: {{LinkPatrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, a jej definicja jest: <syntaxhighlight lang="lua"> p.szablony_stronicowe_kontenerowe_formatowania_wzorowego={ ["Formuła"]=1; }; </syntaxhighlight> Jest to szablon: {{s|Formuła}} i podobne, liniowe wstawiane do tekstu, ta tabela ma za zadanie zastąpić te szablony ich poszczególnym zawartościom, a ta funkcja, która ją wykorzystywuje się do tego przypadku, jest o nazwie: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}. Tabelą szablonów indeksowania, to są one zdefiniowane przez: {{LinkPatrz|p.szablony_indeksowania}}, a jej zawartość: <syntaxhighlight lang="lua"> p.szablony_indeksowania={ ["Kotwica"] =true, ["Indeksuj"]=true, }; </syntaxhighlight> Są to szablony kotwic: {{s|Kotwica}}, który jest szablonem liniowym, a {{s|Indeksuj}}, natomiast to blokowy. === {{Śródtytuł|SzablonyWywolywaneOgolny}}{{Code|SzablonyWywolywaneOgolny}} === Funkcja rozwija nagłówek, wydzielając z niego zwykły tekst, nie dopełniając pewnych operacji. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywaneOgolny(naglowek)...end; </syntaxhighlight> Parametry funkcji: * {{Code|naglowek}} {{Patrz|naglowek}} - tekst nagłówka napisu wprowadzenia tekstu. Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["WydzielZwykłyTekst"]|p=Specjalne}}}}, kod jej wywoływany jest z parametrami: <syntaxhighlight lang="lua"> local naglowek,Znaczniki,SzablonyStylowe,ZnakiSpecjalne=specjalne_modul["WydzielZwykłyTekst"]( { ---- tekst nagłówka; tekst=naglowek, ---- Nie wykorzystywuj w działaniu funkcji: Znaczniki, SzablonyStylowe, ZnakiSpecjalne; ["nagłówek"]=true, ---- Nie wykorzystuj dekodowania tekstu zakodowanego, bez rozwijania, ale wręcz przzeciwnie rozwijaj, pozostawiaj pewne szczególne kody przed rozkodowaniem; nieklasycznie=true, ---- Bazę kodowania weź z zewnątrz; kodowanie=false, ---- Wykorzystywana tablica kodowania tekstu modułu: Module:Szablonowe, zakodowanego z zewnątrz; ["tablica kodowania"]=tablica_analizy_obiektow_strony_dany_modul, },__FUNKCJA1,__FUNKCJA2); </syntaxhighlight> Ta funkcja wydziela zwykły tekst z nagłówka z szablonami zwykłymi i ramkami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, bez naruszenia działania innych elementów szablonowych, jak tagi, czyli: {{s|#tag:}}, które też współdziałają też w kodzie danego nagłówka. Również i z linkami wewnętrznymi i zewnętrznymi, z których wydziela się zwykły tekst, bo wiadomo, że one nie mogą się znaleźć w linkach '''spisu treści''', bo nie może być link w linku w nim, a one niezależnie jakie, bo to ze względu na {{Strong|HTML}} nie możliwe technologicznie. Definicje dwóch kolejnych funkcji zdefiniowanych powyżej: <syntaxhighlight lang="lua"> ---- szablon - kod obiektu kodu w wikikodzie; ---- obiekt - typ obiektu kodu powyżej; ---- kod - numer tego samego typu obiektu; local __FUNKCJA1=function(szablon,obiekt,kod) ---- Funkcja wykorzystywana do ewentualnego modyfikowania użytych szablonów i przedstawianiu jego kodem symbolicznym, lub zastępowania pewnych szablonów nagłówków wartością pustą; local szablon,wynik=SzablonyWywolywane(szablon,obiekt,kod); return szablon,wynik; end; local __FUNKCJA2=function(szablon,obiekt,kod) --- rozwijaj uzyskany szablon, dalej, gdy napotkasz, jeśli zostanie włączone zmienna indeksowania w postaci wartości logicznej; return czy_indeksowanie; end; </syntaxhighlight> Funkcja zwraca wartości, tzn. zmienną z przetworzenia nagłówkowego, bez usuniętych znaczników, stylów i znaków specjalnych, tzn. części otoczone pewnymi cudzysłowami z taką samą liczbą, więc pogrubienia i pochylenia tekstu: <syntaxhighlight lang="lua"> return naglowek, Znaczniki, SzablonyStylowe, ZnakiSpecjalne; </syntaxhighlight> Definicje tych zwróconych funkcji, tzn.: {{Code|Znaczniki}} {{Patrz|Znaczniki}}, {{Code|SzablonyStylowe}} {{Patrz|SzablonyStylowe}} i {{Code|ZnakiSpecjalne}} {{Patrz|ZnakiSpecjalne}}, którego opisy raczej przedstawiają ich nazwy, dokładnie one są udokumentowane tutaj: <syntaxhighlight lang="lua"> ---- tekst - tekst do przetworzenia; local function Znaczniki(tekst,jakie,__FUNKCJA1,__FUNKCJA2) ---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML;---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML; ---- funkcja do usuwania znaczników, tzn. w niej inne funkcje: __FUNKCJA1 - funkcja do zakodowywania tekstu przed usuwaniem znaczników, a __FUNKCJA2 - funkcja do odkodowania tego, co pozostało; tekst=p["UsuńZnaczniki"](tekst,jakie,__FUNKCJA1,__FUNKCJA2); return tekst; end; local function SzablonyStylowe(tekst) ---- funkcja do usuwania uruchomionych stylów, tzn. tych: <templatestyles src="..."/>, wtedy to staje się kodem parsera przetwarzanego za pomocą tekstu dla tego typu znacznika, kodami parsera mogą być też inne obiekty jak ramki Lua w Scribunto, ale nie muszą być takie, ale my rozważamy tutaj tylko jeden typ kodu parsera. tekst=p["UsuńSzablonyStylów"](tekst); return tekst; end; local function ZnakiSpecjalne(tekst) ---- funkcja do usuwania cudzysłowów w takich samych ilościach z prawej i z lewej strony danego fragmentu tekstu w nim; tekst=p["UsuńZnakiSpecjalne"](tekst); return tekst; end; </syntaxhighlight> Definicje tych funkcji znajdują się również w module: {{Code|{{ld2|Specjalne}}}}, które również przedstawiają inne funkcje do upraszczania tekstu, w tym nagłówka, ale nie tylko, bo dowolnego tekstu. === {{Śródtytuł|RefPrzypisowy}}{{Code|RefPrzypisowy}} === Mechanizm zamieniający kod referencji na jej wersję wyświetlaną na ekranie, czyli w nawiasie kwadratowym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local RefPrzypisowy=function(obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|obiekt}} {{Patrz|obiekt-ref}} - nazwa typu przypisu, czyli jak bez nazwy, czy też jak: '''uwaga''', * {{Code|kod}} {{Patrz|kod-ref}} - numer danego typu przypisu. Gdy {{LinkPatrz|obiekt-ref}} nie ma nazwy, wtedy w nawiasie kwadratowym będzie tylko numerek {{LinkPatrz|kod-ref}}, a jeśli ma nazwę, to nazwa oddzielona spacją z prawej strony, a po nim jest ten numerek. === Dalsza część funkcji - Tom I === Tutaj opowiemy o części wstępnej tej funkcji. ==== Ustalanie zmiennej nazwy modułu aktualnej, czy bieżącej ==== Funkcja ustawia zmienną: {{Code|czy_kodowanie}} {{Patrz|czy_kodowanie}}, na podstawie istnienia zmiennych: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} i {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. ==== Wyznaczanie nazwy modułu aktualnej, czy bieżącej, dla strony aktualnej, jeśli ona nie istnieje ==== Jeżeli zmienna {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} jest odpowiadającej wartości fdałszywej i mamy strona korzystaną, co określa parametr {{LinkPatrz|czy_artykul_korzystany}}, w postaci wartości prawdziwej, wtedy są liczone kolejne zmienne nazw na podstawie istnienia lub nieistnienia zmiennej {{Code|alternatywna}}, a jeśli ona jest prawdziwa, wtedy wybierane są zmienne z tą aktualną nazwą woluminu wynikłe z {{LinkZobaczTeż|strona_aktualna}}, przeciwnie z nazwą bieżącą woluminu,na podstawie tego, co wyświetla '''Stronicowy Parser''', te nazwy są ze sobą łączone, wtedy powstaje pełna nazwa strony, którą przyrównujemy do {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}}. Jeśli wartość {{LinkPatrz|czy_artykul_korzystany}} jest jednak fałszywa, w takim razie jest liczona {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} na podstawie wartości {{LinkPatrz|nazwa_strony}}. ==== Kodowanie '''HTML''' specjalnych znaków strony ==== Nazwę strony {{LinkPatrz|nazwa_strony}}, w której mogą występować specjalne znaki, które są niezrozumiałe z punktu widzenia '''HTML''', jeżeli np.z nich trzeba zbudować identyfikatory '''id''', a więc trzeba je zakodować, robimy to funkcją: {{Code|{{sr|#p.EncodeId|p=Html}}}}. ==== Zwracanie funkcji liczenia numeru nagłówka ==== Wyznaczamy funkcję: {{Code|HNumer}} {{Patrz|HNumer}}, która jest efektem zwrócenia przez: {{Code|{{sr|#p.LiczonyHNumer|p=StronicowyParser/Potrzebne}}}}. ==== Zamienianie szablonów nagłówków, czy nawet tych znaczników, na rozdziały równaniowe ==== Jeśli {{LinkPatrz|czy_kodowanie}} przyjmuje wartość prawdziwą, wtedy definiujemy funkcję: {{LinkŚródtytuł|SpecjalneWprowadzeniaTekstu}}. Dalej funkcja zamienia szablony: {{s|SpisTreści}} i {{s|HNumer}}, a także znaczniki: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, na ich wersję równaniową, aby dało się je rozpoznać jako rozdziały i było je łatwo wsadzić do szablonu takiego jak: {{s|Spis treści}} i inne podobne, za pomocą dwóch kolejnych funkcji wsadzonych do pewnej funkcji modułu {{m|Szablonowe}}, która służy do operacji na takich przypadkach. === Zmienna strony z nagłówkaami === Gdy jest podana zmienna: {{Code|tylko_naglowek}} {{LinkPatrz|tylko_naglowek}}, ma wartość prawdziwą, wtedy zmienna: {{Code|nazwa_strony_z_naglowkami}} {{Patrz|nazwa_strony_z_naglowkami}}, przybiera wartość pustą, przeciwnie gdy zmienna {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}} jest ciągiem pusty, wtedy to samo, w innym pozostałym przypadku jest to dokładnie {{LinkPatrz|nazwa_strony}}, gdzie przed nim znajduje się dwukropek {{Code|:}}. === Dalsza część funkcji - Tom II === Tu powiemy coś o iteratorze, który po zebraniu danych zwraca zmienną {{Code|nil}}, co odpowiada dla pętli, jej przerwaniu. ==== Definicja iteratora zbierania informacji o stronie ==== Aby uruchomić pętle na rzeczywistych danych zakodowanej, czy nie, stronie, trzeba otrzymać zmienną pętli {{Code|iterator}} {{Patrz|iterator}} i go wywoływać bezparametrowo w każdym okrążeniu pętli, aby tak się stało, to trzeba uruchomić funkcję: {{Code|{{sr|#p.IterTekst|p=StronicowyParser/Rozdziały}}}}, na tekście {{LinkPatrz|tekst_artykulu}}, traktując tekst, jakby nie był taki zakodowany, bo tutaj jedynie się liczą elementy niezakodowane, czyli w tym przypadku nagłówki z tekstem rozdziału. ==== Zbieranie informacji o stronie w pętli generowanej przez iterator ==== Będziemy tutaj opisywali pętlę generowaną przez jego iterator {{LinkPatrz|iterator}}. W każdym okrązeniu pętli otrzymujemy dane: * {{Code|naglowek_tab}} {{Patrz|naglowek_tab}} - gdzie pierwszy jego element to {{Code|naglowek}} {{LinkPatrz|naglowek}}, * {{Code|text_rozdzialu}} {{Patrz|text_rozdzialu}} - tekst rozdziału, * {{Code|poziom_rozdzialu}} {{Patrz|poziom_rozdzialu}} - poziom rozdziału. ===== Definicja nowe wartości zbierania uchwytów nagłówka w zmiennej numeracji ===== Deklaracja zmiennej {{Code|numeracja}} {{LinkPatrz|numeracja}} jest na zewnętrz pętli, w niej tworzymy jej nową wartość, którą jest tablica pusta. ==== Uzyskiwanie informacji z tekstu rozdziału nagłówka, i jego możliwych uchwytach, w poszczegolnym okrążeniu pętli, i zrzuceniu tam pojedynczego kodu problemu ==== Jeżeli tekst strony jest zakodowany, to iterujemy po tekście {{LinkPatrz|text_rozdzialu}} w poszukiwaniu kodów bazy kodów zakodowanego tekstu, w tym celu wywołujemy pętlę: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, wtedy uzyskujemy trzy obiekty w każdym przebiegu pętli, tzn. {{Code|szablon}} {{LinkPatrz|szablon}}, {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, za pomocę tego uruchamiamy funkcję: {{LinkŚródtytuł|SzablonNaglowkujWTekscieRozdzialu}}. Jeżeli funkcja napotkała uchwyt szablonu: {{Code|{{s|Śródtytuł}}}}, wtedy jest zatrzymywana, w takim razie mamy informację o wystąpieniu niedozwolonego szablonu nagłówka w tekście. A jeżeli takiego szablonu tam nie ma, to układ iterator {{LinkPatrz|iterator}} iteruje aż do zakończenia danych. ==== Uzyskiwanie nagłówka i do niego identyfikatora '''id''' ==== ===== Tekst niezakodowany nagłówka ===== Gdy tekst nie jest zakodowany, wtedy zmienna: {{LinkPatrz|czy_kodowanie}}, ma wartość odpowiaadające fałszywej, wtedy dla tego nagłówka {{LinkPatrz|naglowek}} jest uruchamiana funkcja: {{Code|{{sr|#p.["PrzetwórzNagłówek"]|p=Specjalne}}}}, wtedy otrzymujemy dwie wartości: {{Code|nazwa_rozdzialu_w_artykule}} {{Patrz|nazwa_rozdzialu_w_artykule}} - zmienna idententyfikatora, {{Code|naglowek}} {{LinkPatrz|naglowek}} - zmienna nagłówka. Te dwie zmienne zostały maksymalnie rozwinięte, zostały przystosowane do tego, aby słuzyły do tego, co trzego zostały stworzone. ===== Tekst zakodowany nagłówka ===== Gdy jednak {{LinkPatrz|czy_kodowanie}} przyjełajednak wartość fałszywą, wtedy jest uruchamiana funkcja: {{LinkŚródtytuł|SzablonyWywolywaneOgolny}}, z której otrzymujemy: {{Code|naglowek}} {{LinkPatrz|naglowek}} - zmienna przetworzonego i maksymalnie rozwiniętego nagłówka, oraz zmienne funkcje: {{LinkPatrz|Znaczniki}}, {{LinkPatrz|SzablonyStylowe}} i {{LinkPatrz|ZnakiSpecjalne}}. Na podstawie defiicji: {{Code|nazwa_rozdzialu_w_artykule}} {{LinkPatrz|nazwa_rozdzialu_w_artykule}}, mamy: {{Code|naglowek}} {{LinkPatrz|naglowek}}. ====== Kompletowanie nagłówka ====== Ten nagłówek kompletujemy funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, usuwając szablony indeksowania {{LinkPatrz|p.szablony_indeksowania}}, a także znaczniki: {{Tag|li}}, {{Tag|ul}} i {{Tag|ol}}. ====== Kompletowanie identyfikatora nagłówka ====== Kompletując: {{Code|nazwa_rozdzialu_w_artykule}} {{LinkPatrz|nazwa_rozdzialu_w_artykule}}, rozwijamy wszystko, oprócz atrybutów, {{Code|obiekt}} {{Code|{{=}}}} {{Code|ATRYBUTY}}, a na szablonach wywołujemy funkcję: {{LinkŚródtytuł|SzablonyWywolywaneOgolny}}. Na identyfikatorze nagłówka {{LinkPatrz|nazwa_rozdzialu_w_artykule}} Wywołujemy kolejno lokalne funkcje: {{LinkPatrz|SzablonyStylowe}} - do usuwania rozwiniętych kodów stylów, {{LinkPatrz|ZnakiSpecjalne}} - do usuwania cudzysłowów, i {{LinkPatrz|Znaczniki}} - do usuwania znaczzników. ====== Gdy w kodzie identyfikatora nie ma symbolicznych szablonów ====== W tym przypadku uruchamiamy fukcję do dekodowania znaków '''HTML''', tzn. dziesiętnych, szesnastkowych i literowych, funkcją: {{Code|{{sr|#p.DecodeKoduHTMLZnaku|p=Html}}}}, a później kodujemy specjalne znaki identyfikatora sposobem: {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, przy pomocy kodów '''HTML''' dziesiętnych. ===== Usuwanie zbędnych znaków w identyfikatorze ===== Usuwane są potrójne i podwójne cudzysłowy {{Code|'}} oraz odstępy i dolne myślniki na końcach łańcucha, a wewnętrz jego kolejne je są zastępowane jedną spacją. ===== Referencje i wzory matematyczne ===== Referencje są zastępowane odpowiednio przy pomocy funkcji: {{LinkŚródtytuł|RefPrzypisowy}}, a wzory matematyczne, dla obiektów typu {{Code|POSTMATH}} {{Patrz|POSTMATH}}, które są zastępowane prawidłowo poprzez: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.text.encode|b=tak}}}}, przy pomocy: {{Code|{{sr|#p.NormaKoduZakodowanegoHtmlTekstu|p=Szablonowe}}}}, obiektem: {{Code|postMath}} {{Patrz|postMath}} z ośmioma znakami cyferkami na końcu tego, którym jest {{Code|kod}} {{LinkPatrz|kod}}. ===== Wstępne przygotowanie identyfikatora do końcowego skutecznego użytku ===== Dla danego identyfikatora one mogą się powtarzać, a identyfikator musi być unikalny, zatem trzeba napisać ich dodatkowe numerki, po policzeniu otrzymamy {{Code|numer_tego_samego_naglowka}} {{Patrz|numer_tego_samego_naglowka}}. ====== Tablica identyfikatora i nagłówka ====== Dla {{LinkPatrz|numer_tego_samego_naglowka}} równego {{Code|1}}, tworzemy tablicę,którego pierwszym elementem jest: {{LinkPatrz|nazwa_rozdzialu_w_artykule}}, a drugim nagłówek {{LinkPatrz|naglowek}}, a w przypadku tego numerku innego niż podana liczba, to dajemy do identyfikatora na końcu ten numerek po dolnym myślniku. ====== Uzupełnianie zmiennej do identyfikacji uchwytu z odpowiednim nagłówkiem ====== Jeśli: {{LinkPatrz|obiekty}} i {{LinkPatrz|numeracja}}, istnieją, wtedy do tej pierwszej tablicy dodawane są wszystkie elementy o takim samym typie z {{LinkPatrz|numeracja}}. To dodawanie na końcu tablicy przedstawia się: <syntaxhighlight lang="lua"> for _,value_numeracja in ipairs(numeracja)do obiekty[#obiekty+1]={value_numeracja,{nazwa_strony_z_naglowkami,elementy_linku[1], elementy_linku[2]}}; end; </syntaxhighlight> ====== Tworzenie tablicy nagłówkami i indetyfikatorami ====== Jeśli {{Code|poziom_rozdzialu}} jest większy od zera, tzn. {{Code|> 0}}, wtedy liczymy numer rozdziału przy pomocy funkcji: {{Code|HNumer}} {{LinkPatrz|HNumer}} liczony z: {{Code|poziom_rozdzialu}} {{LinkPatrz|poziom_rozdzialu}}, tworząc w ten sposób wynik w postaci zmiennej {{Code|numer_rozdzialu_ustalony}} {{Patrz|numer_rozdzialu_ustalony}}. Jest tworzona tablica spisu: {{Code|tablica_spisu_tresci}} {{Patrz|tablica_spisu_tresci}}, jako pusta tablica, z później dodanym elementem o kluczu: {{Code|nazwa_strony}}, którym jest o wartości: {{LinkPatrz|nazwa_strony_z_naglowkami}}. Do tablicy: {{LinkPatrz|tablica_spisu_tresci}}, dodawane są elementy według schematu: <syntaxhighlight lang="lua"> tablica_spisu_tresci[#tablica_spisu_tresci+1]={elementy_linku,numer_rozdzialu_ustalony}; </syntaxhighlight> === Dalsza część funkcji - Tom III === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> rrqa1njcrabnujzu4k9gmibrgplyyu1 548354 548353 2026-07-26T12:32:48Z Persino 2851 /* Uzyskiwanie informacji z tekstu rozdziału nagłówka, i jego możliwych uchwytach, w poszczegolnym okrążeniu pętli, i zrzuceniu tam pojedynczego kodu problemu */ 548354 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}|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.PobieranieInformacjiRamkiRozpatrywanejStrony}}{{Code|p.PobieranieInformacjiRamkiRozpatrywanejStrony}} == Pobieranie danych z obiektu {{LinkPatrz|self}}, biorąc jego podtablicę o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiRamkiRozpatrywanejStrony(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa ramki tablicy transportu. == {{Śródtytuł|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}}{{Code|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}} == Funkcja uruchamiacz, główna funkcja dzięki, której ładują się informacje według modułu: {{Code|{{ld2|StronicowyParser/informacje}}}} (tam jest użyty). Ten ładowacz jest pokazany w module opis: {{Code|{{lr2|Moduły/StronicowyParser/informacje}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}. === {{Śródtytuł|DaneNazw}}{{Code|DaneNazw}} === Funkcja licząca nazwy podanej nazwy strony, tzn.: {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} {{Patrz|nazwa_artykulu}}, oraz zwracające te kolejno nazwy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function DaneNazw(pelna_nazwa_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|pelna_nazwa_strony}} {{Patrz|pelna_nazwa_strony}} - pełna nazwa strony. === Dalsza część funkcji - Tom I === ==== Tworzenie i inicjowanie początkowych tabel ==== Funkcja tworzy podtabele tabeli zmiennej obiektowej {{LinkPatrz|self}} o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, o wartości pustej. Następnie są tworzone podtabele puste w tej ostatniej o kluczach: {{Code|dane_analizy_stron}} {{Patrz|dane_analizy_stron}} i {{Code|licencja}}{{Patrz|licencja}}, oraz nilowe zmienne z tego samego, co ostatnie, o kluczu: {{Code|problemy}} {{Patrz|problemy}}. ==== Zmienne nazw strony bieżącej, czy nawet aktualnej, w zależności, czy istnieją odpowiednie ustawienia ==== Jest liczony adres strony, na której jest uruchomiona dana strona, wewnętrznej bezparametrowo według: {{Code|{{sr|#p["PełnaNazwaArtykułu"]|p=Książkowe}}}} {{Patrz|strona_aktualna}}, co z tego są liczone z niego: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, co z tego jest liczona pełna nazwa książki {{Code|pelna_nazwa_ksiazki}} {{Patrz|pelna_nazwa_ksiazki}}. ==== Zbieranie danych ustawień z: {{Code|.../config}}, jeśli istnieją ==== Jest liczony pełny adres ustawień: {{Code|pelna_nazwa_ksiazki_ustawienia}} {{Patrz|pelna_nazwa_ksiazki_ustawienia}}, według schematu: {{Code|"Szablon:Podręcznik/Ustawienia/"..pelna_nazwa_ksiazki}} {{Patrz|UstawieniaKsiążki}}. Co z tego jest sprawdzane, czy istnieje strona: {{Code|pelna_nazwa_ksiazki_ustawienia.."/config"}} {{Patrz|config}}, a jeśli tak, to wtedy wiemy, że to jest szablon, to go przedstawiamy w postaci szablonowej, licząc z: {{Code|{{sr|#p.NazwaSzablonu|p=Szablonowe}}}}. Dalej jest liczony ostatni wyliczony szablon z parametrem {{Code|książka}} {{Patrz|książka}}, dalej jeszcze raz, tym razem z parametrem: {{Code|artykuł}} {{Patrz|artykuł}} - te parametry przedstawiają parametry artykułu książkowego, skąd możemy ściągać stronę, by ją wyświetlić na stronie aktualnej, na pewno parametr {{LinkPatrz|książka}} nie może być parametrem składających z samych znaków odstępów, a jeśli tak jest, w takim razie z tych dwóch parametrów jest liczony parametr {{Code|strona}} {{Patrz|strona}}. Dalej liczymy, czy ona jest poprawnym adresem, używając funkcji: {{Code|{{sr|#p["CzyNiepoprawnaNazwa"]|p=Pudełko/Tom I}}}}. A jeżeli adres jest jednak poprawny, ta funkcja zwraca wartość odpowiadającej fałszywej wartości, wtedy jest liczony pełny adres strony, jeżeli ona jest względna z parametrów, tzn. parametr pierwszy: {{LinkPatrz|strona}}, i parametr drugi: {{LinkPatrz|strona_aktualna}}, co względem tej funkcji mamy już: {{LinkPatrz|strona}}, czyli po tej operacji (procedurze) policzyliśmy bezwzględny jego adres. ===== Liczenie nazw z parametru pełnej nazwy aktualnej, nie bieżącej, strony wynikłe z obliczeń z ustawień ===== Policzona wartość strony: {{LinkPatrz|strona}}, jest sprawdzana, czy adres (strona), pod którym ona się kryje, istnieje, a jeśli tak, to ten adres jest tylko formatowany. Porównujemy adres {{LinkPatrz|strona}} z {{LinkPatrz|strona_aktualna}}, czy przedstawiają nie ten sam adres, a jeżeli tak, to liczymy wszyskie nazwy strony, czyli dla bez {{Code|aktualna_}}, przyrównujemy do tego z tym początkiem, co odpowiada pełnej nazwie strony z {{Code|strona_aktualna}} {{LinkPatrz|strona_aktualna}} {{ZobaczTeż|strona_aktualna}}, i używając funkcji: {{LinkŚródtytuł|DaneNazw}}, ze zmiennej: {{Code|strona}} {{LinkPatrz|strona}} {{ZobaczTeż|strona}}. Te ostatnie nazwy są potrzebne do analizy strony bieżącej, nie aktualnej, tzn. na niej, jakie są szablony, jakie posiada spisy, jakie książki, a w nim spisy do nich, są dołączone. ====== Policzone nazwy strony aktualnej wpisane do ogólnej tablicy ====== A póżniej z adresów pliczonych wywołania, dotyczącej tego aktualnego, liczymy dla podtabeli: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienne o kluczach: {{Code|aktualna_nazwa_przestrzeni}} {{Patrz|aktualna_nazwa_przestrzeni}}, {{Code|aktualna_nazwa_przestrzeni_ksiazki}} {{Patrz|aktualna_nazwa_przestrzeni_ksiazki}}, {{Code|aktualna_nazwa_ksiazki}} {{Patrz|aktualna_nazwa_ksiazki}} i {{Code|aktualna_nazwa_artykulu}} {{Patrz|aktualna_nazwa_artykulu}}, mając zmienne nazw policzone z tego aktualnego. ===== Czy strona bieżąca, ale nie zbiorcza, jest wyświetlana na stronie aktualnej, czy może jest tylko stroną zbiorczą uruchomioną pod inną nazwą ===== Jeśli zmienne nazw są policzone z: {{LinkZobaczTeż|strona}} i {{LinkZobaczTeż|strona_aktualna}}, to wtedy kolejno porównujemy, czy któraś z nich jest nierówna, a jeśli tak, to wywołujemy szablon z parametru: {{Code|zastępcza}} {{ZobaczTeż|zastępcza}} - jest to, czy strona jest zbiorcza, o nazwie: {{LinkPatrz|config}}, czy powinna być wartością niepustą. A jak tak, to wyznaczamy z tablicy: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienną o kluczu: {{Code|alternatywna}} {{Patrz|alternatywna}}, co przyrównujemy jemu wartość logiczną z uzyskanego z szablonu z parametrem {{LinkZobaczTeż|zastępcza}}, a jeżeli ta zmienna przyjmuje wartość odpowiadająca fałszywej, wtedy zmienna z tej samej tablicy o kluczu: {{Code|inna_strona_aktualna_niz_biezaca}} {{Patrz|inna_strona_aktualna_niz_biezaca}} - jest to, czy strona jest inna niż zbiorcza, ale wyświetlana na innej stronie, przyjmuje wartość prawdziwą. === Dalsza część funkcji - Tom II === Tworzymy zmienną: {{Code|tablica_zmiennych}}, która jest tablicą pustą, którą uzupełniamy o elementy o kluczach: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}} - są to dane zebrane z bieżącej strony, i {{Code|linkobiekt}} {{Patrz|linkobiekt}} - są to dane zebrane o linkach na stronie odpowiadających poszczególnym obiektom. Uruchamiamy funkcję: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}, z której wyznaczamy parametr: {{Code|tabela_listy_danych_analizy_ksiazki}} - są to dane zebrane z bieżącej i innych stron skojarzonej z nim, te elementy są tylko w postaci nieprzetworzonej, ale przygotowanej. A jeśli ten parametr jest tabelką - a jeżeli nie jest, to nastąpił błąd przetwarzania, i funkcja nie idzie dalej w instrukcję warunkową, wtedy wywołujemy funkcję: {{Code|{{sr|#p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony|p=StronicowyParser/NumeracjaObiektówStron}}}}. === Dalsza część funkcji - Tom III === Na sam koniec funkcji zwracamy tablicę: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}} - ta zmienna zawiera dane w postaci przetworzonej policzonej, tzn. uchwytom są przydzielone numeracje, sprawdzane, czy uchwyty są policzone, są wyznaczone wszystkie kody problemów, które później są potrzebne do wyznaczania wszystkich kategorii błędów na stronie. == {{Śródtytuł|p.SpisRzeczyWedlePodanegoTekstu}}{{Code|p.SpisRzeczyWedlePodanegoTekstu}} == Funkcja generowania liczenia nagłówków strony, co na tej podstawie może być generowany '''spis treści''' strony. Funkcja przyporządkowuje uchwytom szablonów nagłówków ich identyfikatory i te nagłówki, w którym one leżą, jeżeli zmienna {{LinkPatrz|obiekty}} istnieje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SpisRzeczyWedlePodanegoTekstu(self,tekst_artykulu,nazwa_strony,czy_artykul_korzystany, tylko_naglowek,obiekty,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_obiektow_strony_danych_kodow_specjalnych_modul,KtorySzablonMaZwracacKategorie,wzory_zamiast_kodow,tabela_elementow_strony_kodow)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}} - tekst przetworzony, przygotowany ewentualnie przez pewną funkcję, rozważanego artykułu, * {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} - nazwa strony, danego spisu, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy strona jest bieżąca, * {{Code|tylko_naglowek}} {{Patrz|tylko_naglowek}} - pisz adresy stron z tylko nagłówkami '''#''', bez adresów stron, * {{Code|obiekty}} {{Patrz|obiekty}} - elementy tam zebrane, są wykorzystywane do analizy nagłówków poprzez szablon {{s|Śródtytuł}}, któremu temu nagłówkowi odpowjada pewien uchwyt, czy uchwyty, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}, * {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} - nazwa aktualna, czy bieżąca strony, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy zebranych informacji w postaci zakodowanej modułu {{m|Szablonowe}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tabela przeanalizowanych elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} {{Patrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} - tablica dwuwymiarowa kodów o kluczach: szablonów referencji: '''REF...''' i '''POSTMATH''' oraz ich elementu numeru kodu {{Code|kod}}, którego elementem jest kod tego elementu, * {{Code|KtorySzablonMaZwracacKategorie}} {{Patrz|KtorySzablonMaZwracacKategorie}} - tabela składająca się z trzech elementów, którego pierwszy element to: {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{Patrz|KtorySzablonMaZwracacKategorieNaglowek}} - funkcja dla szablonów problemów dla jak: {{s|Śródtytuł}}, w nagłówku, drugi: {{Code|KtorySzablonMaZwracacKategorieTekst}} {{Patrz|KtorySzablonMaZwracacKategorieTekst}} - funkcja dla tego typu szablonów, ale dla nich w tekście, nie w nagłówku, trzeci: {{Code|CzyJestTakiProblemJakoElementTablicy}} {{Patrz|CzyJestTakiProblemJakoElementTablicy}} - czy nie rozważać, dla rozdziałów zerowych, przeciwnie: ta funkcja może przyjmować wartość {{Code|nil}}, wartość zwracana tego elementu, bo to jest funkcja, zależy, czy jest ustawiony kod problemu: {{Code|nagłówek w tekście rozdziału w stronie korzystanej}} {{Patrz|nagłówek w tekście rozdziału w stronie korzystanej}}, a jeżeli jest taki, to ta funkcja przyjmuje zrzuconą wartość {{Code|true}}, * {{Code|wzory_zamiast_kodow}} {{Patrz|wzory_zamiast_kodow}} - rozważaj wzory według tablicy: {{LinkPatrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}}, lub koduj to według funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}} - to wykorzystuj w przypadku, gdy: {{LinkPatrz|nazwa_strony}}, istnieje, i jest wartością pustą, lub {{Code|{{sr|#p.NormaKoduZakodowanegoWikiTekstu|p=Szablonowe}}}} - przeciwnie, * {{Code|tabela_elementow_strony_kodow}} {{Patrz|tabela_elementow_strony_kodow}} - baza tabela z zapamiętanymi podtabelami, którego poszczególne elementy wykorzystywane w spisie posiadają w sobie tylko pierwszy element w postaci przetworzonego uchwytu, bo używamy tylko uchwytów szablonów nagłówków. === {{Śródtytuł|SpecjalneWprowadzeniaTekstu}}{{Code|SpecjalneWprowadzeniaTekstu}} === Funkcja zamieniające pewne szablony, czy znaczniki, na rozdziały równaniowe. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local SpecjalneWprowadzeniaTekstu=function(szablon,obiekt,kod,czy_szablon,czy_znacznik,czy_liczyc,funkcja1,funkcja2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} {{Patrz|szablon}} - zmienna (szablon), nie musi być to normalny szablon, * {{Code|obiekt}} {{Patrz|obiekt}} - zmienna, którego typu jest obiekt, * {{Code|kod}} {{Patrz|kod}} - numer obiektu typu {{LinkPatrz|obiekt}}, * {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy to jest szablon, * {{Code|czy_znacznik}} {{Patrz|czy_znacznik}} - czy to jest znacznik, * {{Code|czy_liczyc}} {{Patrz|czy_liczyc}} - czy funkcję liczyć w sposób złożony, szablony typu: {{s|SpisTreści}} - zamieniający go na znacznik, czy prosty, co na samym końcu uruchamiana jest funkcja: {{LinkPatrz|funkcja1}}, * {{Code|funkcja1}} {{Patrz|funkcja1}} - funkcja operująca na wygenerowanym pośrednio (dłuższe liczenie) lub bezpośrednio (krótsze) znaczniku, wychodząca z szablonu, i zamieniająca go na rozdział równaniowy, funkcja operująca dla szablonów: {{s|SpisTreści}} lub {{s|HNumer}}, * {{Code|funkcja2}} {{Patrz|funkcja2}} - funkcja operująca na znaczniku '''HTML''' nagłówka - typu jak: {{Tag|h1}}, i zamieniająca go na rozdział równaniowy. ==== {{Śródtytuł|ParametrNR}}{{Code|ParametrNR}} ==== Funkcja liczy dokładnie parametr dany o danym numerze, zbiór danych parametrów oznaczających to samo może być wiele, tylko że jedne mogą być ważniejsze od drugich. Definicja skrótowa funkcja: <syntaxhighlight lang="lua"> local function ParametrNR(numer)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer}} {{Patrz|numer}} - numer parametru. Funkcja wykorzystywuje funkcję do uruchomienia: {{Code|{{sr|#p.SpisRzeczySzablon|p=StronicowyParser/Potrzebne}}}}, do generowania parametrów, a właściwie ich wartości. ==== {{Śródtytuł|ObiektKodNumer}}{{Code|ObiektKodNumer}} ==== Funkcja dodająca do bazy danych kolejny element bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla danego obiektu element na samym końcu, po maksymalnym elemencie do niego. Funkcja liczy kod przy pomocy funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local ObiektKodNumer=function(szablon,obiekt)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}. ==== Dalszy opis funkcji ==== Dla {{LinkPatrz|czy_szablon}} prawdziwego dla szablonów sztucznego spisu treści, sprawdzanego przez tabelkę: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, dla danego szablonowego rozdziału generowanego według {{s|HNumer}}, jest on zamieniany na rozdział równaniowy poprzez funkcję: {{LinkPatrz|funkcja1}}. Ta tabela przedstawia się treścią: <syntaxhighlight lang="lua"> p.szablony_sztucznego_wprowadzenia_tekstu={ ["HNumer"]=1, }; </syntaxhighlight> Dla innych rozdziałów szablonowych, tym razem generowanego przez szablon {{s|SpisTreści}}, którego parametry są wyznaczane przez funkcję: {{LinkŚródtytuł|ParametrNR}}, tabelka parametrów opisująca to: <syntaxhighlight lang="lua"> p.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu={ ["SpisTreści"]={{"artykuł",1,},{"książka",2,},{"nazwa",3,},{"dodatek",4,},{"poziom",},}, }; </syntaxhighlight> Funkcja liczy artykuł, koloruje do niego link w: '''spisie treści''', na czerwona, wtedy generuje dodatkowy znacznik, z właściwością: {{Code|color:red}}, gdy on nie istnieje, i to wstawia do tabeli bazy, lub bez niego, wtedy bezposrednio generuje tekst równy nazwie tego szablonu, opakowany, lub nie, w zależności od istnienia. Do policzenia strony, czy ona istnieje, musi być przedtem zdekodowany funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, by później policzyć to sprawdzenie przy pomocy: {{Code|{{sr|#p.PoliczZbiory|p=Techniczne}}}}. W każdym bądź razie jest ruchumianiana funkcja: {{LinkPatrz|funkcja1}}. Gdy to nie jest szablon, tzn.: {{LinkPatrz|czy_szablon}}, jest fałszywe, ale {{LinkPatrz|czy_znacznik}} jest prawdziwe, to takie znaczniki, jak od: {{Tag|h1}} do {{Tag|h6}}, są zamieniane na czysty tekst. W takim razie wywoływana jest dla tego przypadku funkcja: {{LinkPatrz|funkcja2}}. Funkcja: {{LinkPatrz|funkcja1}}, jest dla szablonów nagłówków, a: {{LinkPatrz|funkcja2}}, dla znaczników nagłówków. Z tych generowanych czystych generowanych tekstów są tworzone w tekście rozdziały równaniowe, by później wygenerować '''spis treści''', właśnie z nimi - z tymi nagłówkami, a bardziej ściśle linkami do nich. === {{Śródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}{{Code|SzablonNaglowkujWNaglowkuRozdzialu}} === Fukcja do obsługi nagłówków {{LinkPatrz|Śródtytuł}} w nagłówku, nie w tekście poza nim. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWNaglowkuRozdzialu(szablon,obiekt,kod,powtorka,parametry_wywolania_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}, * {{Code|powtorka}} {{Patrz|powtorka}} - numer użycia takiego samego szablonu typu {{s|Śródtytuł}} {{Patrz|Śródtytuł}}, * {{Code|parametry_wywolania_szablonu}} {{Patrz|parametry_wywolania_szablonu}} - parametry szablonu wraz z ich wartościami, * {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} - nazwa szablonu wywołania, * {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} - modyfikatory szablonu. Funkcja sprawdza, czy szablon w nagłówku jest typu {{LinkPatrz|Śródtytuł}}, a jeżeli tak, to liczy jego uchwyt, najpierw wyznacza je z parametru o nazwie {{Code|uchwyt}} {{Patrz|uchwyt}}, dalej sprawdzane jest, czy taki uchwyt tak zdefiniowany istnieje, jeśli tak, to wydobywana jest jego przetworzona tabela z tym właśnie uchwytek, funkcja robi to względem numeru {{Code|kod}} {{LinkPatrz|kod}} tego szablonu na podstawie funkcji: {{Code|{{sr|#p.WydobywanieUchwytuZeiBezNumeracji|p=StronicowyParser/ZbieranieDanychStron}}}}. Jeżeli wydobyta tabela {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} nie istnieje, w takim razie jest ona dekodowana funkcją: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, a później jest traktowana jako adres '''URL''', tzn. jest dekodowana funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, dalej jest tworzona tabela pusta: {{LinkPatrz|lista_dwuelementowa}}, co dalej jest tam wstawiana do niej jako pierwszy element uzyskany uchwyt przetworzony. A jeśli jednak {{LinkPatrz|lista_dwuelementowa}} została wydobyta z naszej funkcji tabela, która istnieje, wtedy funkcja idzie, niż poprzednio, w inny krok instrukcji warunkowej, wtedy z tej tabeli jest wydobywany pierwszy element jako przetworzony wcześniej uchwyt. Gdy {{ZobaczTeż|uchwyt}} przetworzony uchwyt jest łańcuchem znaków niepusty, wtedy on jest dodawany w postaci tabeli, w której jest ten uchwyt, na sam koniec tabeli {{Code|numeracja}} {{Patrz|numeracja}}. Gdy liczba powtórzeń jest większa niż zero, wtedy jest wywoływana funkcja, przy którym mają być zwrócone kategorie, jeśli zostaną użyte, o nazwie {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}}. Gdy jednak uchwyt uzyskany nie istnieje, to wtedy jest to samo robione, co w: {{LinkZobaczTeż|uchwyt}}. Przed zwróceniem ile razy została dokonana powtórka, jest powiększany licznik powtorek, i to jest otrzymywane z tej funkcji. === {{Śródtytuł|SzablonNaglowkujWTekscieRozdzialu}}{{Code|SzablonNaglowkujWTekscieRozdzialu}} === Funkcja do analizy szablonów nagłówków w tekście rozdziału, nie w nagłówku. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWTekscieRozdzialu(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja sprawdza, czy tekst w bazie kodów jest typu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, w takim razie po wykryciu, że dla tego, że jest to wywołanie szablonowe, a nie instrukcja warukowa w wikikodzie w tekście, wtedy podobnie jest robione, co w funkcji: {{LinkŚródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}, tylko zamiast {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}} jest {{Code|KtorySzablonMaZwracacKategorieTekst}} {{LinkPatrz|KtorySzablonMaZwracacKategorieTekst}}. Przy wykryciu tam szablonu typu {{LinkPatrz|Śródtytuł}}, funkcja zawsze zwraca wartość {{Code|true}}, w innych przypadkach {{Code|false}}. W przypadku intrukcji warunkowej w wikikodzie i dla ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jest wtedy zwracana wartość {{Code|false}}. Funkcja w pozostałych przypadkach zwraca wartość logiczną {{Code|false}}. === {{Śródtytuł|SzablonyWywolywane}}{{Code|SzablonyWywolywane}} === Szablon zamieniający specjalne znaki szablonów, tzn.: {{Code|{{((}}}}, {{Code|{{))}}}}, {{Code|{{!}}}} i {{Code|{{=}}}}, kolejno na: {{Code|{{s|((}}}}, {{Code|{{s|))}}}}, {{Code|{{s|!}}}} i {{Code|{{s|{{=}}}}}}, takich {{ZobaczTeż|StronicowyParser}}, które zawierają wywołania '''Stronicowego Parsera''', czyli ramki typu: {{Code|{{m|StronicowyParser}}}}, czy: {{Code|{{m|StronicowyParser/}}}}, a inne są po prostu przypisywane. W przypadku linków, i nie tylko, tzn. dla szablonów {{LinkZobaczTeż|StronicowyParser}}, z innych stron niż korzystana, co jest trafnie oznaczone zaprzeczeniem parametru {{LinkPatrz|czy_artykul_korzystany}} są liczone parametry pudełkowe {{Code|{{m|Pudełko}}}}. Strony wskazane przez te parametry są analizowane, przy czym linki są przez inną funkcję, a inne już przez znów inną. Szablony nagłówków typu {{LinkPatrz|Śródtytuł}}, czy szablonów stronicowych otwierających i zamykających, one lub jego koledzy, tzn. ich: {{s|StronaStart}} i {{s|StronaKoniec}}, są zastępowane ciągiem pustym. Inne parametry opisane z tabeli {{Code|{{sr|#p.szablony_stronicowe_kontenerowe_formatowania_wzorowego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, są zastępowane ich zawartością, by uniknąć kontaktu nagłówków z tego typu szablonami. Szablony ideksowania określone tabelą: {{Code|{{sr|#p.szablony_indeksowania}}}} {{Patrz|p.szablony_indeksowania}}, nie są rozwijana z kodowania lub są, w zależności, czy zmienna: {{Code|czy_indeksowanie}} {{Patrz|czy_indeksowanie}}, ma wartość {{Code|true}} - tutaj są, czy odpowiadającej fałszywej wartości logicznej - a tutaj już nie. W przypadku instrukcji warunkowych, czy ramek {{lpg|Lua}} w {{lpg|Lua|Scribunto}}, one są rozwijane - kod tego jest zawartością {{LinkPatrz|szablon}}. W innych przypadkach funkcja zwraca wartość {{Code|nil}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywane(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. W powyższym opisie występują szablony opisane w: {{LinkPatrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, a jej definicja jest: <syntaxhighlight lang="lua"> p.szablony_stronicowe_kontenerowe_formatowania_wzorowego={ ["Formuła"]=1; }; </syntaxhighlight> Jest to szablon: {{s|Formuła}} i podobne, liniowe wstawiane do tekstu, ta tabela ma za zadanie zastąpić te szablony ich poszczególnym zawartościom, a ta funkcja, która ją wykorzystywuje się do tego przypadku, jest o nazwie: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}. Tabelą szablonów indeksowania, to są one zdefiniowane przez: {{LinkPatrz|p.szablony_indeksowania}}, a jej zawartość: <syntaxhighlight lang="lua"> p.szablony_indeksowania={ ["Kotwica"] =true, ["Indeksuj"]=true, }; </syntaxhighlight> Są to szablony kotwic: {{s|Kotwica}}, który jest szablonem liniowym, a {{s|Indeksuj}}, natomiast to blokowy. === {{Śródtytuł|SzablonyWywolywaneOgolny}}{{Code|SzablonyWywolywaneOgolny}} === Funkcja rozwija nagłówek, wydzielając z niego zwykły tekst, nie dopełniając pewnych operacji. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywaneOgolny(naglowek)...end; </syntaxhighlight> Parametry funkcji: * {{Code|naglowek}} {{Patrz|naglowek}} - tekst nagłówka napisu wprowadzenia tekstu. Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["WydzielZwykłyTekst"]|p=Specjalne}}}}, kod jej wywoływany jest z parametrami: <syntaxhighlight lang="lua"> local naglowek,Znaczniki,SzablonyStylowe,ZnakiSpecjalne=specjalne_modul["WydzielZwykłyTekst"]( { ---- tekst nagłówka; tekst=naglowek, ---- Nie wykorzystywuj w działaniu funkcji: Znaczniki, SzablonyStylowe, ZnakiSpecjalne; ["nagłówek"]=true, ---- Nie wykorzystuj dekodowania tekstu zakodowanego, bez rozwijania, ale wręcz przzeciwnie rozwijaj, pozostawiaj pewne szczególne kody przed rozkodowaniem; nieklasycznie=true, ---- Bazę kodowania weź z zewnątrz; kodowanie=false, ---- Wykorzystywana tablica kodowania tekstu modułu: Module:Szablonowe, zakodowanego z zewnątrz; ["tablica kodowania"]=tablica_analizy_obiektow_strony_dany_modul, },__FUNKCJA1,__FUNKCJA2); </syntaxhighlight> Ta funkcja wydziela zwykły tekst z nagłówka z szablonami zwykłymi i ramkami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, bez naruszenia działania innych elementów szablonowych, jak tagi, czyli: {{s|#tag:}}, które też współdziałają też w kodzie danego nagłówka. Również i z linkami wewnętrznymi i zewnętrznymi, z których wydziela się zwykły tekst, bo wiadomo, że one nie mogą się znaleźć w linkach '''spisu treści''', bo nie może być link w linku w nim, a one niezależnie jakie, bo to ze względu na {{Strong|HTML}} nie możliwe technologicznie. Definicje dwóch kolejnych funkcji zdefiniowanych powyżej: <syntaxhighlight lang="lua"> ---- szablon - kod obiektu kodu w wikikodzie; ---- obiekt - typ obiektu kodu powyżej; ---- kod - numer tego samego typu obiektu; local __FUNKCJA1=function(szablon,obiekt,kod) ---- Funkcja wykorzystywana do ewentualnego modyfikowania użytych szablonów i przedstawianiu jego kodem symbolicznym, lub zastępowania pewnych szablonów nagłówków wartością pustą; local szablon,wynik=SzablonyWywolywane(szablon,obiekt,kod); return szablon,wynik; end; local __FUNKCJA2=function(szablon,obiekt,kod) --- rozwijaj uzyskany szablon, dalej, gdy napotkasz, jeśli zostanie włączone zmienna indeksowania w postaci wartości logicznej; return czy_indeksowanie; end; </syntaxhighlight> Funkcja zwraca wartości, tzn. zmienną z przetworzenia nagłówkowego, bez usuniętych znaczników, stylów i znaków specjalnych, tzn. części otoczone pewnymi cudzysłowami z taką samą liczbą, więc pogrubienia i pochylenia tekstu: <syntaxhighlight lang="lua"> return naglowek, Znaczniki, SzablonyStylowe, ZnakiSpecjalne; </syntaxhighlight> Definicje tych zwróconych funkcji, tzn.: {{Code|Znaczniki}} {{Patrz|Znaczniki}}, {{Code|SzablonyStylowe}} {{Patrz|SzablonyStylowe}} i {{Code|ZnakiSpecjalne}} {{Patrz|ZnakiSpecjalne}}, którego opisy raczej przedstawiają ich nazwy, dokładnie one są udokumentowane tutaj: <syntaxhighlight lang="lua"> ---- tekst - tekst do przetworzenia; local function Znaczniki(tekst,jakie,__FUNKCJA1,__FUNKCJA2) ---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML;---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML; ---- funkcja do usuwania znaczników, tzn. w niej inne funkcje: __FUNKCJA1 - funkcja do zakodowywania tekstu przed usuwaniem znaczników, a __FUNKCJA2 - funkcja do odkodowania tego, co pozostało; tekst=p["UsuńZnaczniki"](tekst,jakie,__FUNKCJA1,__FUNKCJA2); return tekst; end; local function SzablonyStylowe(tekst) ---- funkcja do usuwania uruchomionych stylów, tzn. tych: <templatestyles src="..."/>, wtedy to staje się kodem parsera przetwarzanego za pomocą tekstu dla tego typu znacznika, kodami parsera mogą być też inne obiekty jak ramki Lua w Scribunto, ale nie muszą być takie, ale my rozważamy tutaj tylko jeden typ kodu parsera. tekst=p["UsuńSzablonyStylów"](tekst); return tekst; end; local function ZnakiSpecjalne(tekst) ---- funkcja do usuwania cudzysłowów w takich samych ilościach z prawej i z lewej strony danego fragmentu tekstu w nim; tekst=p["UsuńZnakiSpecjalne"](tekst); return tekst; end; </syntaxhighlight> Definicje tych funkcji znajdują się również w module: {{Code|{{ld2|Specjalne}}}}, które również przedstawiają inne funkcje do upraszczania tekstu, w tym nagłówka, ale nie tylko, bo dowolnego tekstu. === {{Śródtytuł|RefPrzypisowy}}{{Code|RefPrzypisowy}} === Mechanizm zamieniający kod referencji na jej wersję wyświetlaną na ekranie, czyli w nawiasie kwadratowym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local RefPrzypisowy=function(obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|obiekt}} {{Patrz|obiekt-ref}} - nazwa typu przypisu, czyli jak bez nazwy, czy też jak: '''uwaga''', * {{Code|kod}} {{Patrz|kod-ref}} - numer danego typu przypisu. Gdy {{LinkPatrz|obiekt-ref}} nie ma nazwy, wtedy w nawiasie kwadratowym będzie tylko numerek {{LinkPatrz|kod-ref}}, a jeśli ma nazwę, to nazwa oddzielona spacją z prawej strony, a po nim jest ten numerek. === Dalsza część funkcji - Tom I === Tutaj opowiemy o części wstępnej tej funkcji. ==== Ustalanie zmiennej nazwy modułu aktualnej, czy bieżącej ==== Funkcja ustawia zmienną: {{Code|czy_kodowanie}} {{Patrz|czy_kodowanie}}, na podstawie istnienia zmiennych: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} i {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. ==== Wyznaczanie nazwy modułu aktualnej, czy bieżącej, dla strony aktualnej, jeśli ona nie istnieje ==== Jeżeli zmienna {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} jest odpowiadającej wartości fdałszywej i mamy strona korzystaną, co określa parametr {{LinkPatrz|czy_artykul_korzystany}}, w postaci wartości prawdziwej, wtedy są liczone kolejne zmienne nazw na podstawie istnienia lub nieistnienia zmiennej {{Code|alternatywna}}, a jeśli ona jest prawdziwa, wtedy wybierane są zmienne z tą aktualną nazwą woluminu wynikłe z {{LinkZobaczTeż|strona_aktualna}}, przeciwnie z nazwą bieżącą woluminu,na podstawie tego, co wyświetla '''Stronicowy Parser''', te nazwy są ze sobą łączone, wtedy powstaje pełna nazwa strony, którą przyrównujemy do {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}}. Jeśli wartość {{LinkPatrz|czy_artykul_korzystany}} jest jednak fałszywa, w takim razie jest liczona {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} na podstawie wartości {{LinkPatrz|nazwa_strony}}. ==== Kodowanie '''HTML''' specjalnych znaków strony ==== Nazwę strony {{LinkPatrz|nazwa_strony}}, w której mogą występować specjalne znaki, które są niezrozumiałe z punktu widzenia '''HTML''', jeżeli np.z nich trzeba zbudować identyfikatory '''id''', a więc trzeba je zakodować, robimy to funkcją: {{Code|{{sr|#p.EncodeId|p=Html}}}}. ==== Zwracanie funkcji liczenia numeru nagłówka ==== Wyznaczamy funkcję: {{Code|HNumer}} {{Patrz|HNumer}}, która jest efektem zwrócenia przez: {{Code|{{sr|#p.LiczonyHNumer|p=StronicowyParser/Potrzebne}}}}. ==== Zamienianie szablonów nagłówków, czy nawet tych znaczników, na rozdziały równaniowe ==== Jeśli {{LinkPatrz|czy_kodowanie}} przyjmuje wartość prawdziwą, wtedy definiujemy funkcję: {{LinkŚródtytuł|SpecjalneWprowadzeniaTekstu}}. Dalej funkcja zamienia szablony: {{s|SpisTreści}} i {{s|HNumer}}, a także znaczniki: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, na ich wersję równaniową, aby dało się je rozpoznać jako rozdziały i było je łatwo wsadzić do szablonu takiego jak: {{s|Spis treści}} i inne podobne, za pomocą dwóch kolejnych funkcji wsadzonych do pewnej funkcji modułu {{m|Szablonowe}}, która służy do operacji na takich przypadkach. === Zmienna strony z nagłówkaami === Gdy jest podana zmienna: {{Code|tylko_naglowek}} {{LinkPatrz|tylko_naglowek}}, ma wartość prawdziwą, wtedy zmienna: {{Code|nazwa_strony_z_naglowkami}} {{Patrz|nazwa_strony_z_naglowkami}}, przybiera wartość pustą, przeciwnie gdy zmienna {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}} jest ciągiem pusty, wtedy to samo, w innym pozostałym przypadku jest to dokładnie {{LinkPatrz|nazwa_strony}}, gdzie przed nim znajduje się dwukropek {{Code|:}}. === Dalsza część funkcji - Tom II === Tu powiemy coś o iteratorze, który po zebraniu danych zwraca zmienną {{Code|nil}}, co odpowiada dla pętli, jej przerwaniu. ==== Definicja iteratora zbierania informacji o stronie ==== Aby uruchomić pętle na rzeczywistych danych zakodowanej, czy nie, stronie, trzeba otrzymać zmienną pętli {{Code|iterator}} {{Patrz|iterator}} i go wywoływać bezparametrowo w każdym okrążeniu pętli, aby tak się stało, to trzeba uruchomić funkcję: {{Code|{{sr|#p.IterTekst|p=StronicowyParser/Rozdziały}}}}, na tekście {{LinkPatrz|tekst_artykulu}}, traktując tekst, jakby nie był taki zakodowany, bo tutaj jedynie się liczą elementy niezakodowane, czyli w tym przypadku nagłówki z tekstem rozdziału. ==== Zbieranie informacji o stronie w pętli generowanej przez iterator ==== Będziemy tutaj opisywali pętlę generowaną przez jego iterator {{LinkPatrz|iterator}}. W każdym okrązeniu pętli otrzymujemy dane: * {{Code|naglowek_tab}} {{Patrz|naglowek_tab}} - gdzie pierwszy jego element to {{Code|naglowek}} {{LinkPatrz|naglowek}}, * {{Code|text_rozdzialu}} {{Patrz|text_rozdzialu}} - tekst rozdziału, * {{Code|poziom_rozdzialu}} {{Patrz|poziom_rozdzialu}} - poziom rozdziału. ===== Definicja nowe wartości zbierania uchwytów nagłówka w zmiennej numeracji ===== Deklaracja zmiennej {{Code|numeracja}} {{LinkPatrz|numeracja}} jest na zewnętrz pętli, w niej tworzymy jej nową wartość, którą jest tablica pusta. ==== Uzyskiwanie informacji z tekstu rozdziału nagłówka, i jego możliwych uchwytach, w poszczegolnym okrążeniu pętli, i zrzuceniu tam pojedynczego kodu problemu ==== Jeżeli {{ZobaczTeż|text_rozdzialu}} tekst strony jest zakodowany, to iterujemy po tekście {{LinkPatrz|text_rozdzialu}} w poszukiwaniu kodów bazy kodów zakodowanego tekstu, w tym celu wywołujemy pętlę: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, wtedy uzyskujemy trzy obiekty w każdym przebiegu pętli, tzn. {{Code|szablon}} {{LinkPatrz|szablon}}, {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, za pomocę tego uruchamiamy funkcję: {{LinkŚródtytuł|SzablonNaglowkujWTekscieRozdzialu}}. Jeżeli funkcja napotkała uchwyt szablonu: {{Code|{{s|Śródtytuł}}}}, wtedy jest zatrzymywana, w takim razie mamy informację o wystąpieniu niedozwolonego szablonu nagłówka w tekście. A jeżeli takiego szablonu tam nie ma, to układ iterator {{LinkPatrz|iterator}} iteruje aż do zakończenia danych. ==== Uzyskiwanie nagłówka i do niego identyfikatora '''id''' ==== ===== Tekst niezakodowany nagłówka ===== Gdy tekst nie jest zakodowany, wtedy zmienna: {{LinkPatrz|czy_kodowanie}}, ma wartość odpowiaadające fałszywej, wtedy dla tego nagłówka {{LinkPatrz|naglowek}} jest uruchamiana funkcja: {{Code|{{sr|#p.["PrzetwórzNagłówek"]|p=Specjalne}}}}, wtedy otrzymujemy dwie wartości: {{Code|nazwa_rozdzialu_w_artykule}} {{Patrz|nazwa_rozdzialu_w_artykule}} - zmienna idententyfikatora, {{Code|naglowek}} {{LinkPatrz|naglowek}} - zmienna nagłówka. Te dwie zmienne zostały maksymalnie rozwinięte, zostały przystosowane do tego, aby słuzyły do tego, co trzego zostały stworzone. ===== Tekst zakodowany nagłówka ===== Gdy jednak {{LinkPatrz|czy_kodowanie}} przyjełajednak wartość fałszywą, wtedy jest uruchamiana funkcja: {{LinkŚródtytuł|SzablonyWywolywaneOgolny}}, z której otrzymujemy: {{Code|naglowek}} {{LinkPatrz|naglowek}} - zmienna przetworzonego i maksymalnie rozwiniętego nagłówka, oraz zmienne funkcje: {{LinkPatrz|Znaczniki}}, {{LinkPatrz|SzablonyStylowe}} i {{LinkPatrz|ZnakiSpecjalne}}. Na podstawie defiicji: {{Code|nazwa_rozdzialu_w_artykule}} {{LinkPatrz|nazwa_rozdzialu_w_artykule}}, mamy: {{Code|naglowek}} {{LinkPatrz|naglowek}}. ====== Kompletowanie nagłówka ====== Ten nagłówek kompletujemy funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, usuwając szablony indeksowania {{LinkPatrz|p.szablony_indeksowania}}, a także znaczniki: {{Tag|li}}, {{Tag|ul}} i {{Tag|ol}}. ====== Kompletowanie identyfikatora nagłówka ====== Kompletując: {{Code|nazwa_rozdzialu_w_artykule}} {{LinkPatrz|nazwa_rozdzialu_w_artykule}}, rozwijamy wszystko, oprócz atrybutów, {{Code|obiekt}} {{Code|{{=}}}} {{Code|ATRYBUTY}}, a na szablonach wywołujemy funkcję: {{LinkŚródtytuł|SzablonyWywolywaneOgolny}}. Na identyfikatorze nagłówka {{LinkPatrz|nazwa_rozdzialu_w_artykule}} Wywołujemy kolejno lokalne funkcje: {{LinkPatrz|SzablonyStylowe}} - do usuwania rozwiniętych kodów stylów, {{LinkPatrz|ZnakiSpecjalne}} - do usuwania cudzysłowów, i {{LinkPatrz|Znaczniki}} - do usuwania znaczzników. ====== Gdy w kodzie identyfikatora nie ma symbolicznych szablonów ====== W tym przypadku uruchamiamy fukcję do dekodowania znaków '''HTML''', tzn. dziesiętnych, szesnastkowych i literowych, funkcją: {{Code|{{sr|#p.DecodeKoduHTMLZnaku|p=Html}}}}, a później kodujemy specjalne znaki identyfikatora sposobem: {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, przy pomocy kodów '''HTML''' dziesiętnych. ===== Usuwanie zbędnych znaków w identyfikatorze ===== Usuwane są potrójne i podwójne cudzysłowy {{Code|'}} oraz odstępy i dolne myślniki na końcach łańcucha, a wewnętrz jego kolejne je są zastępowane jedną spacją. ===== Referencje i wzory matematyczne ===== Referencje są zastępowane odpowiednio przy pomocy funkcji: {{LinkŚródtytuł|RefPrzypisowy}}, a wzory matematyczne, dla obiektów typu {{Code|POSTMATH}} {{Patrz|POSTMATH}}, które są zastępowane prawidłowo poprzez: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.text.encode|b=tak}}}}, przy pomocy: {{Code|{{sr|#p.NormaKoduZakodowanegoHtmlTekstu|p=Szablonowe}}}}, obiektem: {{Code|postMath}} {{Patrz|postMath}} z ośmioma znakami cyferkami na końcu tego, którym jest {{Code|kod}} {{LinkPatrz|kod}}. ===== Wstępne przygotowanie identyfikatora do końcowego skutecznego użytku ===== Dla danego identyfikatora one mogą się powtarzać, a identyfikator musi być unikalny, zatem trzeba napisać ich dodatkowe numerki, po policzeniu otrzymamy {{Code|numer_tego_samego_naglowka}} {{Patrz|numer_tego_samego_naglowka}}. ====== Tablica identyfikatora i nagłówka ====== Dla {{LinkPatrz|numer_tego_samego_naglowka}} równego {{Code|1}}, tworzemy tablicę,którego pierwszym elementem jest: {{LinkPatrz|nazwa_rozdzialu_w_artykule}}, a drugim nagłówek {{LinkPatrz|naglowek}}, a w przypadku tego numerku innego niż podana liczba, to dajemy do identyfikatora na końcu ten numerek po dolnym myślniku. ====== Uzupełnianie zmiennej do identyfikacji uchwytu z odpowiednim nagłówkiem ====== Jeśli: {{LinkPatrz|obiekty}} i {{LinkPatrz|numeracja}}, istnieją, wtedy do tej pierwszej tablicy dodawane są wszystkie elementy o takim samym typie z {{LinkPatrz|numeracja}}. To dodawanie na końcu tablicy przedstawia się: <syntaxhighlight lang="lua"> for _,value_numeracja in ipairs(numeracja)do obiekty[#obiekty+1]={value_numeracja,{nazwa_strony_z_naglowkami,elementy_linku[1], elementy_linku[2]}}; end; </syntaxhighlight> ====== Tworzenie tablicy nagłówkami i indetyfikatorami ====== Jeśli {{Code|poziom_rozdzialu}} jest większy od zera, tzn. {{Code|> 0}}, wtedy liczymy numer rozdziału przy pomocy funkcji: {{Code|HNumer}} {{LinkPatrz|HNumer}} liczony z: {{Code|poziom_rozdzialu}} {{LinkPatrz|poziom_rozdzialu}}, tworząc w ten sposób wynik w postaci zmiennej {{Code|numer_rozdzialu_ustalony}} {{Patrz|numer_rozdzialu_ustalony}}. Jest tworzona tablica spisu: {{Code|tablica_spisu_tresci}} {{Patrz|tablica_spisu_tresci}}, jako pusta tablica, z później dodanym elementem o kluczu: {{Code|nazwa_strony}}, którym jest o wartości: {{LinkPatrz|nazwa_strony_z_naglowkami}}. Do tablicy: {{LinkPatrz|tablica_spisu_tresci}}, dodawane są elementy według schematu: <syntaxhighlight lang="lua"> tablica_spisu_tresci[#tablica_spisu_tresci+1]={elementy_linku,numer_rozdzialu_ustalony}; </syntaxhighlight> === Dalsza część funkcji - Tom III === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> rsl2qk55zgbayer4y5x01x7fa5vu73x 548355 548354 2026-07-26T12:36:05Z Persino 2851 /* Dalsza część funkcji - Tom III */ 548355 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}|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.PobieranieInformacjiRamkiRozpatrywanejStrony}}{{Code|p.PobieranieInformacjiRamkiRozpatrywanejStrony}} == Pobieranie danych z obiektu {{LinkPatrz|self}}, biorąc jego podtablicę o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiRamkiRozpatrywanejStrony(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa ramki tablicy transportu. == {{Śródtytuł|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}}{{Code|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}} == Funkcja uruchamiacz, główna funkcja dzięki, której ładują się informacje według modułu: {{Code|{{ld2|StronicowyParser/informacje}}}} (tam jest użyty). Ten ładowacz jest pokazany w module opis: {{Code|{{lr2|Moduły/StronicowyParser/informacje}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}. === {{Śródtytuł|DaneNazw}}{{Code|DaneNazw}} === Funkcja licząca nazwy podanej nazwy strony, tzn.: {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} {{Patrz|nazwa_artykulu}}, oraz zwracające te kolejno nazwy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function DaneNazw(pelna_nazwa_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|pelna_nazwa_strony}} {{Patrz|pelna_nazwa_strony}} - pełna nazwa strony. === Dalsza część funkcji - Tom I === ==== Tworzenie i inicjowanie początkowych tabel ==== Funkcja tworzy podtabele tabeli zmiennej obiektowej {{LinkPatrz|self}} o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, o wartości pustej. Następnie są tworzone podtabele puste w tej ostatniej o kluczach: {{Code|dane_analizy_stron}} {{Patrz|dane_analizy_stron}} i {{Code|licencja}}{{Patrz|licencja}}, oraz nilowe zmienne z tego samego, co ostatnie, o kluczu: {{Code|problemy}} {{Patrz|problemy}}. ==== Zmienne nazw strony bieżącej, czy nawet aktualnej, w zależności, czy istnieją odpowiednie ustawienia ==== Jest liczony adres strony, na której jest uruchomiona dana strona, wewnętrznej bezparametrowo według: {{Code|{{sr|#p["PełnaNazwaArtykułu"]|p=Książkowe}}}} {{Patrz|strona_aktualna}}, co z tego są liczone z niego: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, co z tego jest liczona pełna nazwa książki {{Code|pelna_nazwa_ksiazki}} {{Patrz|pelna_nazwa_ksiazki}}. ==== Zbieranie danych ustawień z: {{Code|.../config}}, jeśli istnieją ==== Jest liczony pełny adres ustawień: {{Code|pelna_nazwa_ksiazki_ustawienia}} {{Patrz|pelna_nazwa_ksiazki_ustawienia}}, według schematu: {{Code|"Szablon:Podręcznik/Ustawienia/"..pelna_nazwa_ksiazki}} {{Patrz|UstawieniaKsiążki}}. Co z tego jest sprawdzane, czy istnieje strona: {{Code|pelna_nazwa_ksiazki_ustawienia.."/config"}} {{Patrz|config}}, a jeśli tak, to wtedy wiemy, że to jest szablon, to go przedstawiamy w postaci szablonowej, licząc z: {{Code|{{sr|#p.NazwaSzablonu|p=Szablonowe}}}}. Dalej jest liczony ostatni wyliczony szablon z parametrem {{Code|książka}} {{Patrz|książka}}, dalej jeszcze raz, tym razem z parametrem: {{Code|artykuł}} {{Patrz|artykuł}} - te parametry przedstawiają parametry artykułu książkowego, skąd możemy ściągać stronę, by ją wyświetlić na stronie aktualnej, na pewno parametr {{LinkPatrz|książka}} nie może być parametrem składających z samych znaków odstępów, a jeśli tak jest, w takim razie z tych dwóch parametrów jest liczony parametr {{Code|strona}} {{Patrz|strona}}. Dalej liczymy, czy ona jest poprawnym adresem, używając funkcji: {{Code|{{sr|#p["CzyNiepoprawnaNazwa"]|p=Pudełko/Tom I}}}}. A jeżeli adres jest jednak poprawny, ta funkcja zwraca wartość odpowiadającej fałszywej wartości, wtedy jest liczony pełny adres strony, jeżeli ona jest względna z parametrów, tzn. parametr pierwszy: {{LinkPatrz|strona}}, i parametr drugi: {{LinkPatrz|strona_aktualna}}, co względem tej funkcji mamy już: {{LinkPatrz|strona}}, czyli po tej operacji (procedurze) policzyliśmy bezwzględny jego adres. ===== Liczenie nazw z parametru pełnej nazwy aktualnej, nie bieżącej, strony wynikłe z obliczeń z ustawień ===== Policzona wartość strony: {{LinkPatrz|strona}}, jest sprawdzana, czy adres (strona), pod którym ona się kryje, istnieje, a jeśli tak, to ten adres jest tylko formatowany. Porównujemy adres {{LinkPatrz|strona}} z {{LinkPatrz|strona_aktualna}}, czy przedstawiają nie ten sam adres, a jeżeli tak, to liczymy wszyskie nazwy strony, czyli dla bez {{Code|aktualna_}}, przyrównujemy do tego z tym początkiem, co odpowiada pełnej nazwie strony z {{Code|strona_aktualna}} {{LinkPatrz|strona_aktualna}} {{ZobaczTeż|strona_aktualna}}, i używając funkcji: {{LinkŚródtytuł|DaneNazw}}, ze zmiennej: {{Code|strona}} {{LinkPatrz|strona}} {{ZobaczTeż|strona}}. Te ostatnie nazwy są potrzebne do analizy strony bieżącej, nie aktualnej, tzn. na niej, jakie są szablony, jakie posiada spisy, jakie książki, a w nim spisy do nich, są dołączone. ====== Policzone nazwy strony aktualnej wpisane do ogólnej tablicy ====== A póżniej z adresów pliczonych wywołania, dotyczącej tego aktualnego, liczymy dla podtabeli: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienne o kluczach: {{Code|aktualna_nazwa_przestrzeni}} {{Patrz|aktualna_nazwa_przestrzeni}}, {{Code|aktualna_nazwa_przestrzeni_ksiazki}} {{Patrz|aktualna_nazwa_przestrzeni_ksiazki}}, {{Code|aktualna_nazwa_ksiazki}} {{Patrz|aktualna_nazwa_ksiazki}} i {{Code|aktualna_nazwa_artykulu}} {{Patrz|aktualna_nazwa_artykulu}}, mając zmienne nazw policzone z tego aktualnego. ===== Czy strona bieżąca, ale nie zbiorcza, jest wyświetlana na stronie aktualnej, czy może jest tylko stroną zbiorczą uruchomioną pod inną nazwą ===== Jeśli zmienne nazw są policzone z: {{LinkZobaczTeż|strona}} i {{LinkZobaczTeż|strona_aktualna}}, to wtedy kolejno porównujemy, czy któraś z nich jest nierówna, a jeśli tak, to wywołujemy szablon z parametru: {{Code|zastępcza}} {{ZobaczTeż|zastępcza}} - jest to, czy strona jest zbiorcza, o nazwie: {{LinkPatrz|config}}, czy powinna być wartością niepustą. A jak tak, to wyznaczamy z tablicy: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienną o kluczu: {{Code|alternatywna}} {{Patrz|alternatywna}}, co przyrównujemy jemu wartość logiczną z uzyskanego z szablonu z parametrem {{LinkZobaczTeż|zastępcza}}, a jeżeli ta zmienna przyjmuje wartość odpowiadająca fałszywej, wtedy zmienna z tej samej tablicy o kluczu: {{Code|inna_strona_aktualna_niz_biezaca}} {{Patrz|inna_strona_aktualna_niz_biezaca}} - jest to, czy strona jest inna niż zbiorcza, ale wyświetlana na innej stronie, przyjmuje wartość prawdziwą. === Dalsza część funkcji - Tom II === Tworzymy zmienną: {{Code|tablica_zmiennych}}, która jest tablicą pustą, którą uzupełniamy o elementy o kluczach: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}} - są to dane zebrane z bieżącej strony, i {{Code|linkobiekt}} {{Patrz|linkobiekt}} - są to dane zebrane o linkach na stronie odpowiadających poszczególnym obiektom. Uruchamiamy funkcję: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}, z której wyznaczamy parametr: {{Code|tabela_listy_danych_analizy_ksiazki}} - są to dane zebrane z bieżącej i innych stron skojarzonej z nim, te elementy są tylko w postaci nieprzetworzonej, ale przygotowanej. A jeśli ten parametr jest tabelką - a jeżeli nie jest, to nastąpił błąd przetwarzania, i funkcja nie idzie dalej w instrukcję warunkową, wtedy wywołujemy funkcję: {{Code|{{sr|#p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony|p=StronicowyParser/NumeracjaObiektówStron}}}}. === Dalsza część funkcji - Tom III === Na sam koniec funkcji zwracamy tablicę: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}} - ta zmienna zawiera dane w postaci przetworzonej policzonej, tzn. uchwytom są przydzielone numeracje, sprawdzane, czy uchwyty są policzone, są wyznaczone wszystkie kody problemów, które później są potrzebne do wyznaczania wszystkich kategorii błędów na stronie. == {{Śródtytuł|p.SpisRzeczyWedlePodanegoTekstu}}{{Code|p.SpisRzeczyWedlePodanegoTekstu}} == Funkcja generowania liczenia nagłówków strony, co na tej podstawie może być generowany '''spis treści''' strony. Funkcja przyporządkowuje uchwytom szablonów nagłówków ich identyfikatory i te nagłówki, w którym one leżą, jeżeli zmienna {{LinkPatrz|obiekty}} istnieje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SpisRzeczyWedlePodanegoTekstu(self,tekst_artykulu,nazwa_strony,czy_artykul_korzystany, tylko_naglowek,obiekty,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_obiektow_strony_danych_kodow_specjalnych_modul,KtorySzablonMaZwracacKategorie,wzory_zamiast_kodow,tabela_elementow_strony_kodow)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}} - tekst przetworzony, przygotowany ewentualnie przez pewną funkcję, rozważanego artykułu, * {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} - nazwa strony, danego spisu, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy strona jest bieżąca, * {{Code|tylko_naglowek}} {{Patrz|tylko_naglowek}} - pisz adresy stron z tylko nagłówkami '''#''', bez adresów stron, * {{Code|obiekty}} {{Patrz|obiekty}} - elementy tam zebrane, są wykorzystywane do analizy nagłówków poprzez szablon {{s|Śródtytuł}}, któremu temu nagłówkowi odpowjada pewien uchwyt, czy uchwyty, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}, * {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} - nazwa aktualna, czy bieżąca strony, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy zebranych informacji w postaci zakodowanej modułu {{m|Szablonowe}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tabela przeanalizowanych elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} {{Patrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} - tablica dwuwymiarowa kodów o kluczach: szablonów referencji: '''REF...''' i '''POSTMATH''' oraz ich elementu numeru kodu {{Code|kod}}, którego elementem jest kod tego elementu, * {{Code|KtorySzablonMaZwracacKategorie}} {{Patrz|KtorySzablonMaZwracacKategorie}} - tabela składająca się z trzech elementów, którego pierwszy element to: {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{Patrz|KtorySzablonMaZwracacKategorieNaglowek}} - funkcja dla szablonów problemów dla jak: {{s|Śródtytuł}}, w nagłówku, drugi: {{Code|KtorySzablonMaZwracacKategorieTekst}} {{Patrz|KtorySzablonMaZwracacKategorieTekst}} - funkcja dla tego typu szablonów, ale dla nich w tekście, nie w nagłówku, trzeci: {{Code|CzyJestTakiProblemJakoElementTablicy}} {{Patrz|CzyJestTakiProblemJakoElementTablicy}} - czy nie rozważać, dla rozdziałów zerowych, przeciwnie: ta funkcja może przyjmować wartość {{Code|nil}}, wartość zwracana tego elementu, bo to jest funkcja, zależy, czy jest ustawiony kod problemu: {{Code|nagłówek w tekście rozdziału w stronie korzystanej}} {{Patrz|nagłówek w tekście rozdziału w stronie korzystanej}}, a jeżeli jest taki, to ta funkcja przyjmuje zrzuconą wartość {{Code|true}}, * {{Code|wzory_zamiast_kodow}} {{Patrz|wzory_zamiast_kodow}} - rozważaj wzory według tablicy: {{LinkPatrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}}, lub koduj to według funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}} - to wykorzystuj w przypadku, gdy: {{LinkPatrz|nazwa_strony}}, istnieje, i jest wartością pustą, lub {{Code|{{sr|#p.NormaKoduZakodowanegoWikiTekstu|p=Szablonowe}}}} - przeciwnie, * {{Code|tabela_elementow_strony_kodow}} {{Patrz|tabela_elementow_strony_kodow}} - baza tabela z zapamiętanymi podtabelami, którego poszczególne elementy wykorzystywane w spisie posiadają w sobie tylko pierwszy element w postaci przetworzonego uchwytu, bo używamy tylko uchwytów szablonów nagłówków. === {{Śródtytuł|SpecjalneWprowadzeniaTekstu}}{{Code|SpecjalneWprowadzeniaTekstu}} === Funkcja zamieniające pewne szablony, czy znaczniki, na rozdziały równaniowe. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local SpecjalneWprowadzeniaTekstu=function(szablon,obiekt,kod,czy_szablon,czy_znacznik,czy_liczyc,funkcja1,funkcja2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} {{Patrz|szablon}} - zmienna (szablon), nie musi być to normalny szablon, * {{Code|obiekt}} {{Patrz|obiekt}} - zmienna, którego typu jest obiekt, * {{Code|kod}} {{Patrz|kod}} - numer obiektu typu {{LinkPatrz|obiekt}}, * {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy to jest szablon, * {{Code|czy_znacznik}} {{Patrz|czy_znacznik}} - czy to jest znacznik, * {{Code|czy_liczyc}} {{Patrz|czy_liczyc}} - czy funkcję liczyć w sposób złożony, szablony typu: {{s|SpisTreści}} - zamieniający go na znacznik, czy prosty, co na samym końcu uruchamiana jest funkcja: {{LinkPatrz|funkcja1}}, * {{Code|funkcja1}} {{Patrz|funkcja1}} - funkcja operująca na wygenerowanym pośrednio (dłuższe liczenie) lub bezpośrednio (krótsze) znaczniku, wychodząca z szablonu, i zamieniająca go na rozdział równaniowy, funkcja operująca dla szablonów: {{s|SpisTreści}} lub {{s|HNumer}}, * {{Code|funkcja2}} {{Patrz|funkcja2}} - funkcja operująca na znaczniku '''HTML''' nagłówka - typu jak: {{Tag|h1}}, i zamieniająca go na rozdział równaniowy. ==== {{Śródtytuł|ParametrNR}}{{Code|ParametrNR}} ==== Funkcja liczy dokładnie parametr dany o danym numerze, zbiór danych parametrów oznaczających to samo może być wiele, tylko że jedne mogą być ważniejsze od drugich. Definicja skrótowa funkcja: <syntaxhighlight lang="lua"> local function ParametrNR(numer)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer}} {{Patrz|numer}} - numer parametru. Funkcja wykorzystywuje funkcję do uruchomienia: {{Code|{{sr|#p.SpisRzeczySzablon|p=StronicowyParser/Potrzebne}}}}, do generowania parametrów, a właściwie ich wartości. ==== {{Śródtytuł|ObiektKodNumer}}{{Code|ObiektKodNumer}} ==== Funkcja dodająca do bazy danych kolejny element bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla danego obiektu element na samym końcu, po maksymalnym elemencie do niego. Funkcja liczy kod przy pomocy funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local ObiektKodNumer=function(szablon,obiekt)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}. ==== Dalszy opis funkcji ==== Dla {{LinkPatrz|czy_szablon}} prawdziwego dla szablonów sztucznego spisu treści, sprawdzanego przez tabelkę: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, dla danego szablonowego rozdziału generowanego według {{s|HNumer}}, jest on zamieniany na rozdział równaniowy poprzez funkcję: {{LinkPatrz|funkcja1}}. Ta tabela przedstawia się treścią: <syntaxhighlight lang="lua"> p.szablony_sztucznego_wprowadzenia_tekstu={ ["HNumer"]=1, }; </syntaxhighlight> Dla innych rozdziałów szablonowych, tym razem generowanego przez szablon {{s|SpisTreści}}, którego parametry są wyznaczane przez funkcję: {{LinkŚródtytuł|ParametrNR}}, tabelka parametrów opisująca to: <syntaxhighlight lang="lua"> p.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu={ ["SpisTreści"]={{"artykuł",1,},{"książka",2,},{"nazwa",3,},{"dodatek",4,},{"poziom",},}, }; </syntaxhighlight> Funkcja liczy artykuł, koloruje do niego link w: '''spisie treści''', na czerwona, wtedy generuje dodatkowy znacznik, z właściwością: {{Code|color:red}}, gdy on nie istnieje, i to wstawia do tabeli bazy, lub bez niego, wtedy bezposrednio generuje tekst równy nazwie tego szablonu, opakowany, lub nie, w zależności od istnienia. Do policzenia strony, czy ona istnieje, musi być przedtem zdekodowany funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, by później policzyć to sprawdzenie przy pomocy: {{Code|{{sr|#p.PoliczZbiory|p=Techniczne}}}}. W każdym bądź razie jest ruchumianiana funkcja: {{LinkPatrz|funkcja1}}. Gdy to nie jest szablon, tzn.: {{LinkPatrz|czy_szablon}}, jest fałszywe, ale {{LinkPatrz|czy_znacznik}} jest prawdziwe, to takie znaczniki, jak od: {{Tag|h1}} do {{Tag|h6}}, są zamieniane na czysty tekst. W takim razie wywoływana jest dla tego przypadku funkcja: {{LinkPatrz|funkcja2}}. Funkcja: {{LinkPatrz|funkcja1}}, jest dla szablonów nagłówków, a: {{LinkPatrz|funkcja2}}, dla znaczników nagłówków. Z tych generowanych czystych generowanych tekstów są tworzone w tekście rozdziały równaniowe, by później wygenerować '''spis treści''', właśnie z nimi - z tymi nagłówkami, a bardziej ściśle linkami do nich. === {{Śródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}{{Code|SzablonNaglowkujWNaglowkuRozdzialu}} === Fukcja do obsługi nagłówków {{LinkPatrz|Śródtytuł}} w nagłówku, nie w tekście poza nim. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWNaglowkuRozdzialu(szablon,obiekt,kod,powtorka,parametry_wywolania_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}, * {{Code|powtorka}} {{Patrz|powtorka}} - numer użycia takiego samego szablonu typu {{s|Śródtytuł}} {{Patrz|Śródtytuł}}, * {{Code|parametry_wywolania_szablonu}} {{Patrz|parametry_wywolania_szablonu}} - parametry szablonu wraz z ich wartościami, * {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} - nazwa szablonu wywołania, * {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} - modyfikatory szablonu. Funkcja sprawdza, czy szablon w nagłówku jest typu {{LinkPatrz|Śródtytuł}}, a jeżeli tak, to liczy jego uchwyt, najpierw wyznacza je z parametru o nazwie {{Code|uchwyt}} {{Patrz|uchwyt}}, dalej sprawdzane jest, czy taki uchwyt tak zdefiniowany istnieje, jeśli tak, to wydobywana jest jego przetworzona tabela z tym właśnie uchwytek, funkcja robi to względem numeru {{Code|kod}} {{LinkPatrz|kod}} tego szablonu na podstawie funkcji: {{Code|{{sr|#p.WydobywanieUchwytuZeiBezNumeracji|p=StronicowyParser/ZbieranieDanychStron}}}}. Jeżeli wydobyta tabela {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} nie istnieje, w takim razie jest ona dekodowana funkcją: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, a później jest traktowana jako adres '''URL''', tzn. jest dekodowana funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, dalej jest tworzona tabela pusta: {{LinkPatrz|lista_dwuelementowa}}, co dalej jest tam wstawiana do niej jako pierwszy element uzyskany uchwyt przetworzony. A jeśli jednak {{LinkPatrz|lista_dwuelementowa}} została wydobyta z naszej funkcji tabela, która istnieje, wtedy funkcja idzie, niż poprzednio, w inny krok instrukcji warunkowej, wtedy z tej tabeli jest wydobywany pierwszy element jako przetworzony wcześniej uchwyt. Gdy {{ZobaczTeż|uchwyt}} przetworzony uchwyt jest łańcuchem znaków niepusty, wtedy on jest dodawany w postaci tabeli, w której jest ten uchwyt, na sam koniec tabeli {{Code|numeracja}} {{Patrz|numeracja}}. Gdy liczba powtórzeń jest większa niż zero, wtedy jest wywoływana funkcja, przy którym mają być zwrócone kategorie, jeśli zostaną użyte, o nazwie {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}}. Gdy jednak uchwyt uzyskany nie istnieje, to wtedy jest to samo robione, co w: {{LinkZobaczTeż|uchwyt}}. Przed zwróceniem ile razy została dokonana powtórka, jest powiększany licznik powtorek, i to jest otrzymywane z tej funkcji. === {{Śródtytuł|SzablonNaglowkujWTekscieRozdzialu}}{{Code|SzablonNaglowkujWTekscieRozdzialu}} === Funkcja do analizy szablonów nagłówków w tekście rozdziału, nie w nagłówku. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWTekscieRozdzialu(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja sprawdza, czy tekst w bazie kodów jest typu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, w takim razie po wykryciu, że dla tego, że jest to wywołanie szablonowe, a nie instrukcja warukowa w wikikodzie w tekście, wtedy podobnie jest robione, co w funkcji: {{LinkŚródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}, tylko zamiast {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}} jest {{Code|KtorySzablonMaZwracacKategorieTekst}} {{LinkPatrz|KtorySzablonMaZwracacKategorieTekst}}. Przy wykryciu tam szablonu typu {{LinkPatrz|Śródtytuł}}, funkcja zawsze zwraca wartość {{Code|true}}, w innych przypadkach {{Code|false}}. W przypadku intrukcji warunkowej w wikikodzie i dla ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jest wtedy zwracana wartość {{Code|false}}. Funkcja w pozostałych przypadkach zwraca wartość logiczną {{Code|false}}. === {{Śródtytuł|SzablonyWywolywane}}{{Code|SzablonyWywolywane}} === Szablon zamieniający specjalne znaki szablonów, tzn.: {{Code|{{((}}}}, {{Code|{{))}}}}, {{Code|{{!}}}} i {{Code|{{=}}}}, kolejno na: {{Code|{{s|((}}}}, {{Code|{{s|))}}}}, {{Code|{{s|!}}}} i {{Code|{{s|{{=}}}}}}, takich {{ZobaczTeż|StronicowyParser}}, które zawierają wywołania '''Stronicowego Parsera''', czyli ramki typu: {{Code|{{m|StronicowyParser}}}}, czy: {{Code|{{m|StronicowyParser/}}}}, a inne są po prostu przypisywane. W przypadku linków, i nie tylko, tzn. dla szablonów {{LinkZobaczTeż|StronicowyParser}}, z innych stron niż korzystana, co jest trafnie oznaczone zaprzeczeniem parametru {{LinkPatrz|czy_artykul_korzystany}} są liczone parametry pudełkowe {{Code|{{m|Pudełko}}}}. Strony wskazane przez te parametry są analizowane, przy czym linki są przez inną funkcję, a inne już przez znów inną. Szablony nagłówków typu {{LinkPatrz|Śródtytuł}}, czy szablonów stronicowych otwierających i zamykających, one lub jego koledzy, tzn. ich: {{s|StronaStart}} i {{s|StronaKoniec}}, są zastępowane ciągiem pustym. Inne parametry opisane z tabeli {{Code|{{sr|#p.szablony_stronicowe_kontenerowe_formatowania_wzorowego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, są zastępowane ich zawartością, by uniknąć kontaktu nagłówków z tego typu szablonami. Szablony ideksowania określone tabelą: {{Code|{{sr|#p.szablony_indeksowania}}}} {{Patrz|p.szablony_indeksowania}}, nie są rozwijana z kodowania lub są, w zależności, czy zmienna: {{Code|czy_indeksowanie}} {{Patrz|czy_indeksowanie}}, ma wartość {{Code|true}} - tutaj są, czy odpowiadającej fałszywej wartości logicznej - a tutaj już nie. W przypadku instrukcji warunkowych, czy ramek {{lpg|Lua}} w {{lpg|Lua|Scribunto}}, one są rozwijane - kod tego jest zawartością {{LinkPatrz|szablon}}. W innych przypadkach funkcja zwraca wartość {{Code|nil}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywane(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. W powyższym opisie występują szablony opisane w: {{LinkPatrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, a jej definicja jest: <syntaxhighlight lang="lua"> p.szablony_stronicowe_kontenerowe_formatowania_wzorowego={ ["Formuła"]=1; }; </syntaxhighlight> Jest to szablon: {{s|Formuła}} i podobne, liniowe wstawiane do tekstu, ta tabela ma za zadanie zastąpić te szablony ich poszczególnym zawartościom, a ta funkcja, która ją wykorzystywuje się do tego przypadku, jest o nazwie: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}. Tabelą szablonów indeksowania, to są one zdefiniowane przez: {{LinkPatrz|p.szablony_indeksowania}}, a jej zawartość: <syntaxhighlight lang="lua"> p.szablony_indeksowania={ ["Kotwica"] =true, ["Indeksuj"]=true, }; </syntaxhighlight> Są to szablony kotwic: {{s|Kotwica}}, który jest szablonem liniowym, a {{s|Indeksuj}}, natomiast to blokowy. === {{Śródtytuł|SzablonyWywolywaneOgolny}}{{Code|SzablonyWywolywaneOgolny}} === Funkcja rozwija nagłówek, wydzielając z niego zwykły tekst, nie dopełniając pewnych operacji. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywaneOgolny(naglowek)...end; </syntaxhighlight> Parametry funkcji: * {{Code|naglowek}} {{Patrz|naglowek}} - tekst nagłówka napisu wprowadzenia tekstu. Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["WydzielZwykłyTekst"]|p=Specjalne}}}}, kod jej wywoływany jest z parametrami: <syntaxhighlight lang="lua"> local naglowek,Znaczniki,SzablonyStylowe,ZnakiSpecjalne=specjalne_modul["WydzielZwykłyTekst"]( { ---- tekst nagłówka; tekst=naglowek, ---- Nie wykorzystywuj w działaniu funkcji: Znaczniki, SzablonyStylowe, ZnakiSpecjalne; ["nagłówek"]=true, ---- Nie wykorzystuj dekodowania tekstu zakodowanego, bez rozwijania, ale wręcz przzeciwnie rozwijaj, pozostawiaj pewne szczególne kody przed rozkodowaniem; nieklasycznie=true, ---- Bazę kodowania weź z zewnątrz; kodowanie=false, ---- Wykorzystywana tablica kodowania tekstu modułu: Module:Szablonowe, zakodowanego z zewnątrz; ["tablica kodowania"]=tablica_analizy_obiektow_strony_dany_modul, },__FUNKCJA1,__FUNKCJA2); </syntaxhighlight> Ta funkcja wydziela zwykły tekst z nagłówka z szablonami zwykłymi i ramkami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, bez naruszenia działania innych elementów szablonowych, jak tagi, czyli: {{s|#tag:}}, które też współdziałają też w kodzie danego nagłówka. Również i z linkami wewnętrznymi i zewnętrznymi, z których wydziela się zwykły tekst, bo wiadomo, że one nie mogą się znaleźć w linkach '''spisu treści''', bo nie może być link w linku w nim, a one niezależnie jakie, bo to ze względu na {{Strong|HTML}} nie możliwe technologicznie. Definicje dwóch kolejnych funkcji zdefiniowanych powyżej: <syntaxhighlight lang="lua"> ---- szablon - kod obiektu kodu w wikikodzie; ---- obiekt - typ obiektu kodu powyżej; ---- kod - numer tego samego typu obiektu; local __FUNKCJA1=function(szablon,obiekt,kod) ---- Funkcja wykorzystywana do ewentualnego modyfikowania użytych szablonów i przedstawianiu jego kodem symbolicznym, lub zastępowania pewnych szablonów nagłówków wartością pustą; local szablon,wynik=SzablonyWywolywane(szablon,obiekt,kod); return szablon,wynik; end; local __FUNKCJA2=function(szablon,obiekt,kod) --- rozwijaj uzyskany szablon, dalej, gdy napotkasz, jeśli zostanie włączone zmienna indeksowania w postaci wartości logicznej; return czy_indeksowanie; end; </syntaxhighlight> Funkcja zwraca wartości, tzn. zmienną z przetworzenia nagłówkowego, bez usuniętych znaczników, stylów i znaków specjalnych, tzn. części otoczone pewnymi cudzysłowami z taką samą liczbą, więc pogrubienia i pochylenia tekstu: <syntaxhighlight lang="lua"> return naglowek, Znaczniki, SzablonyStylowe, ZnakiSpecjalne; </syntaxhighlight> Definicje tych zwróconych funkcji, tzn.: {{Code|Znaczniki}} {{Patrz|Znaczniki}}, {{Code|SzablonyStylowe}} {{Patrz|SzablonyStylowe}} i {{Code|ZnakiSpecjalne}} {{Patrz|ZnakiSpecjalne}}, którego opisy raczej przedstawiają ich nazwy, dokładnie one są udokumentowane tutaj: <syntaxhighlight lang="lua"> ---- tekst - tekst do przetworzenia; local function Znaczniki(tekst,jakie,__FUNKCJA1,__FUNKCJA2) ---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML;---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML; ---- funkcja do usuwania znaczników, tzn. w niej inne funkcje: __FUNKCJA1 - funkcja do zakodowywania tekstu przed usuwaniem znaczników, a __FUNKCJA2 - funkcja do odkodowania tego, co pozostało; tekst=p["UsuńZnaczniki"](tekst,jakie,__FUNKCJA1,__FUNKCJA2); return tekst; end; local function SzablonyStylowe(tekst) ---- funkcja do usuwania uruchomionych stylów, tzn. tych: <templatestyles src="..."/>, wtedy to staje się kodem parsera przetwarzanego za pomocą tekstu dla tego typu znacznika, kodami parsera mogą być też inne obiekty jak ramki Lua w Scribunto, ale nie muszą być takie, ale my rozważamy tutaj tylko jeden typ kodu parsera. tekst=p["UsuńSzablonyStylów"](tekst); return tekst; end; local function ZnakiSpecjalne(tekst) ---- funkcja do usuwania cudzysłowów w takich samych ilościach z prawej i z lewej strony danego fragmentu tekstu w nim; tekst=p["UsuńZnakiSpecjalne"](tekst); return tekst; end; </syntaxhighlight> Definicje tych funkcji znajdują się również w module: {{Code|{{ld2|Specjalne}}}}, które również przedstawiają inne funkcje do upraszczania tekstu, w tym nagłówka, ale nie tylko, bo dowolnego tekstu. === {{Śródtytuł|RefPrzypisowy}}{{Code|RefPrzypisowy}} === Mechanizm zamieniający kod referencji na jej wersję wyświetlaną na ekranie, czyli w nawiasie kwadratowym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local RefPrzypisowy=function(obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|obiekt}} {{Patrz|obiekt-ref}} - nazwa typu przypisu, czyli jak bez nazwy, czy też jak: '''uwaga''', * {{Code|kod}} {{Patrz|kod-ref}} - numer danego typu przypisu. Gdy {{LinkPatrz|obiekt-ref}} nie ma nazwy, wtedy w nawiasie kwadratowym będzie tylko numerek {{LinkPatrz|kod-ref}}, a jeśli ma nazwę, to nazwa oddzielona spacją z prawej strony, a po nim jest ten numerek. === Dalsza część funkcji - Tom I === Tutaj opowiemy o części wstępnej tej funkcji. ==== Ustalanie zmiennej nazwy modułu aktualnej, czy bieżącej ==== Funkcja ustawia zmienną: {{Code|czy_kodowanie}} {{Patrz|czy_kodowanie}}, na podstawie istnienia zmiennych: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} i {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. ==== Wyznaczanie nazwy modułu aktualnej, czy bieżącej, dla strony aktualnej, jeśli ona nie istnieje ==== Jeżeli zmienna {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} jest odpowiadającej wartości fdałszywej i mamy strona korzystaną, co określa parametr {{LinkPatrz|czy_artykul_korzystany}}, w postaci wartości prawdziwej, wtedy są liczone kolejne zmienne nazw na podstawie istnienia lub nieistnienia zmiennej {{Code|alternatywna}}, a jeśli ona jest prawdziwa, wtedy wybierane są zmienne z tą aktualną nazwą woluminu wynikłe z {{LinkZobaczTeż|strona_aktualna}}, przeciwnie z nazwą bieżącą woluminu,na podstawie tego, co wyświetla '''Stronicowy Parser''', te nazwy są ze sobą łączone, wtedy powstaje pełna nazwa strony, którą przyrównujemy do {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}}. Jeśli wartość {{LinkPatrz|czy_artykul_korzystany}} jest jednak fałszywa, w takim razie jest liczona {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} na podstawie wartości {{LinkPatrz|nazwa_strony}}. ==== Kodowanie '''HTML''' specjalnych znaków strony ==== Nazwę strony {{LinkPatrz|nazwa_strony}}, w której mogą występować specjalne znaki, które są niezrozumiałe z punktu widzenia '''HTML''', jeżeli np.z nich trzeba zbudować identyfikatory '''id''', a więc trzeba je zakodować, robimy to funkcją: {{Code|{{sr|#p.EncodeId|p=Html}}}}. ==== Zwracanie funkcji liczenia numeru nagłówka ==== Wyznaczamy funkcję: {{Code|HNumer}} {{Patrz|HNumer}}, która jest efektem zwrócenia przez: {{Code|{{sr|#p.LiczonyHNumer|p=StronicowyParser/Potrzebne}}}}. ==== Zamienianie szablonów nagłówków, czy nawet tych znaczników, na rozdziały równaniowe ==== Jeśli {{LinkPatrz|czy_kodowanie}} przyjmuje wartość prawdziwą, wtedy definiujemy funkcję: {{LinkŚródtytuł|SpecjalneWprowadzeniaTekstu}}. Dalej funkcja zamienia szablony: {{s|SpisTreści}} i {{s|HNumer}}, a także znaczniki: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, na ich wersję równaniową, aby dało się je rozpoznać jako rozdziały i było je łatwo wsadzić do szablonu takiego jak: {{s|Spis treści}} i inne podobne, za pomocą dwóch kolejnych funkcji wsadzonych do pewnej funkcji modułu {{m|Szablonowe}}, która służy do operacji na takich przypadkach. === Zmienna strony z nagłówkaami === Gdy jest podana zmienna: {{Code|tylko_naglowek}} {{LinkPatrz|tylko_naglowek}}, ma wartość prawdziwą, wtedy zmienna: {{Code|nazwa_strony_z_naglowkami}} {{Patrz|nazwa_strony_z_naglowkami}}, przybiera wartość pustą, przeciwnie gdy zmienna {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}} jest ciągiem pusty, wtedy to samo, w innym pozostałym przypadku jest to dokładnie {{LinkPatrz|nazwa_strony}}, gdzie przed nim znajduje się dwukropek {{Code|:}}. === Dalsza część funkcji - Tom II === Tu powiemy coś o iteratorze, który po zebraniu danych zwraca zmienną {{Code|nil}}, co odpowiada dla pętli, jej przerwaniu. ==== Definicja iteratora zbierania informacji o stronie ==== Aby uruchomić pętle na rzeczywistych danych zakodowanej, czy nie, stronie, trzeba otrzymać zmienną pętli {{Code|iterator}} {{Patrz|iterator}} i go wywoływać bezparametrowo w każdym okrążeniu pętli, aby tak się stało, to trzeba uruchomić funkcję: {{Code|{{sr|#p.IterTekst|p=StronicowyParser/Rozdziały}}}}, na tekście {{LinkPatrz|tekst_artykulu}}, traktując tekst, jakby nie był taki zakodowany, bo tutaj jedynie się liczą elementy niezakodowane, czyli w tym przypadku nagłówki z tekstem rozdziału. ==== Zbieranie informacji o stronie w pętli generowanej przez iterator ==== Będziemy tutaj opisywali pętlę generowaną przez jego iterator {{LinkPatrz|iterator}}. W każdym okrązeniu pętli otrzymujemy dane: * {{Code|naglowek_tab}} {{Patrz|naglowek_tab}} - gdzie pierwszy jego element to {{Code|naglowek}} {{LinkPatrz|naglowek}}, * {{Code|text_rozdzialu}} {{Patrz|text_rozdzialu}} - tekst rozdziału, * {{Code|poziom_rozdzialu}} {{Patrz|poziom_rozdzialu}} - poziom rozdziału. ===== Definicja nowe wartości zbierania uchwytów nagłówka w zmiennej numeracji ===== Deklaracja zmiennej {{Code|numeracja}} {{LinkPatrz|numeracja}} jest na zewnętrz pętli, w niej tworzymy jej nową wartość, którą jest tablica pusta. ==== Uzyskiwanie informacji z tekstu rozdziału nagłówka, i jego możliwych uchwytach, w poszczegolnym okrążeniu pętli, i zrzuceniu tam pojedynczego kodu problemu ==== Jeżeli {{ZobaczTeż|text_rozdzialu}} tekst strony jest zakodowany, to iterujemy po tekście {{LinkPatrz|text_rozdzialu}} w poszukiwaniu kodów bazy kodów zakodowanego tekstu, w tym celu wywołujemy pętlę: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, wtedy uzyskujemy trzy obiekty w każdym przebiegu pętli, tzn. {{Code|szablon}} {{LinkPatrz|szablon}}, {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, za pomocę tego uruchamiamy funkcję: {{LinkŚródtytuł|SzablonNaglowkujWTekscieRozdzialu}}. Jeżeli funkcja napotkała uchwyt szablonu: {{Code|{{s|Śródtytuł}}}}, wtedy jest zatrzymywana, w takim razie mamy informację o wystąpieniu niedozwolonego szablonu nagłówka w tekście. A jeżeli takiego szablonu tam nie ma, to układ iterator {{LinkPatrz|iterator}} iteruje aż do zakończenia danych. ==== Uzyskiwanie nagłówka i do niego identyfikatora '''id''' ==== ===== Tekst niezakodowany nagłówka ===== Gdy tekst nie jest zakodowany, wtedy zmienna: {{LinkPatrz|czy_kodowanie}}, ma wartość odpowiaadające fałszywej, wtedy dla tego nagłówka {{LinkPatrz|naglowek}} jest uruchamiana funkcja: {{Code|{{sr|#p.["PrzetwórzNagłówek"]|p=Specjalne}}}}, wtedy otrzymujemy dwie wartości: {{Code|nazwa_rozdzialu_w_artykule}} {{Patrz|nazwa_rozdzialu_w_artykule}} - zmienna idententyfikatora, {{Code|naglowek}} {{LinkPatrz|naglowek}} - zmienna nagłówka. Te dwie zmienne zostały maksymalnie rozwinięte, zostały przystosowane do tego, aby słuzyły do tego, co trzego zostały stworzone. ===== Tekst zakodowany nagłówka ===== Gdy jednak {{LinkPatrz|czy_kodowanie}} przyjełajednak wartość fałszywą, wtedy jest uruchamiana funkcja: {{LinkŚródtytuł|SzablonyWywolywaneOgolny}}, z której otrzymujemy: {{Code|naglowek}} {{LinkPatrz|naglowek}} - zmienna przetworzonego i maksymalnie rozwiniętego nagłówka, oraz zmienne funkcje: {{LinkPatrz|Znaczniki}}, {{LinkPatrz|SzablonyStylowe}} i {{LinkPatrz|ZnakiSpecjalne}}. Na podstawie defiicji: {{Code|nazwa_rozdzialu_w_artykule}} {{LinkPatrz|nazwa_rozdzialu_w_artykule}}, mamy: {{Code|naglowek}} {{LinkPatrz|naglowek}}. ====== Kompletowanie nagłówka ====== Ten nagłówek kompletujemy funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, usuwając szablony indeksowania {{LinkPatrz|p.szablony_indeksowania}}, a także znaczniki: {{Tag|li}}, {{Tag|ul}} i {{Tag|ol}}. ====== Kompletowanie identyfikatora nagłówka ====== Kompletując: {{Code|nazwa_rozdzialu_w_artykule}} {{LinkPatrz|nazwa_rozdzialu_w_artykule}}, rozwijamy wszystko, oprócz atrybutów, {{Code|obiekt}} {{Code|{{=}}}} {{Code|ATRYBUTY}}, a na szablonach wywołujemy funkcję: {{LinkŚródtytuł|SzablonyWywolywaneOgolny}}. Na identyfikatorze nagłówka {{LinkPatrz|nazwa_rozdzialu_w_artykule}} Wywołujemy kolejno lokalne funkcje: {{LinkPatrz|SzablonyStylowe}} - do usuwania rozwiniętych kodów stylów, {{LinkPatrz|ZnakiSpecjalne}} - do usuwania cudzysłowów, i {{LinkPatrz|Znaczniki}} - do usuwania znaczzników. ====== Gdy w kodzie identyfikatora nie ma symbolicznych szablonów ====== W tym przypadku uruchamiamy fukcję do dekodowania znaków '''HTML''', tzn. dziesiętnych, szesnastkowych i literowych, funkcją: {{Code|{{sr|#p.DecodeKoduHTMLZnaku|p=Html}}}}, a później kodujemy specjalne znaki identyfikatora sposobem: {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, przy pomocy kodów '''HTML''' dziesiętnych. ===== Usuwanie zbędnych znaków w identyfikatorze ===== Usuwane są potrójne i podwójne cudzysłowy {{Code|'}} oraz odstępy i dolne myślniki na końcach łańcucha, a wewnętrz jego kolejne je są zastępowane jedną spacją. ===== Referencje i wzory matematyczne ===== Referencje są zastępowane odpowiednio przy pomocy funkcji: {{LinkŚródtytuł|RefPrzypisowy}}, a wzory matematyczne, dla obiektów typu {{Code|POSTMATH}} {{Patrz|POSTMATH}}, które są zastępowane prawidłowo poprzez: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.text.encode|b=tak}}}}, przy pomocy: {{Code|{{sr|#p.NormaKoduZakodowanegoHtmlTekstu|p=Szablonowe}}}}, obiektem: {{Code|postMath}} {{Patrz|postMath}} z ośmioma znakami cyferkami na końcu tego, którym jest {{Code|kod}} {{LinkPatrz|kod}}. ===== Wstępne przygotowanie identyfikatora do końcowego skutecznego użytku ===== Dla danego identyfikatora one mogą się powtarzać, a identyfikator musi być unikalny, zatem trzeba napisać ich dodatkowe numerki, po policzeniu otrzymamy {{Code|numer_tego_samego_naglowka}} {{Patrz|numer_tego_samego_naglowka}}. ====== Tablica identyfikatora i nagłówka ====== Dla {{LinkPatrz|numer_tego_samego_naglowka}} równego {{Code|1}}, tworzemy tablicę,którego pierwszym elementem jest: {{LinkPatrz|nazwa_rozdzialu_w_artykule}}, a drugim nagłówek {{LinkPatrz|naglowek}}, a w przypadku tego numerku innego niż podana liczba, to dajemy do identyfikatora na końcu ten numerek po dolnym myślniku. ====== Uzupełnianie zmiennej do identyfikacji uchwytu z odpowiednim nagłówkiem ====== Jeśli: {{LinkPatrz|obiekty}} i {{LinkPatrz|numeracja}}, istnieją, wtedy do tej pierwszej tablicy dodawane są wszystkie elementy o takim samym typie z {{LinkPatrz|numeracja}}. To dodawanie na końcu tablicy przedstawia się: <syntaxhighlight lang="lua"> for _,value_numeracja in ipairs(numeracja)do obiekty[#obiekty+1]={value_numeracja,{nazwa_strony_z_naglowkami,elementy_linku[1], elementy_linku[2]}}; end; </syntaxhighlight> ====== Tworzenie tablicy nagłówkami i indetyfikatorami ====== Jeśli {{Code|poziom_rozdzialu}} jest większy od zera, tzn. {{Code|> 0}}, wtedy liczymy numer rozdziału przy pomocy funkcji: {{Code|HNumer}} {{LinkPatrz|HNumer}} liczony z: {{Code|poziom_rozdzialu}} {{LinkPatrz|poziom_rozdzialu}}, tworząc w ten sposób wynik w postaci zmiennej {{Code|numer_rozdzialu_ustalony}} {{Patrz|numer_rozdzialu_ustalony}}. Jest tworzona tablica spisu: {{Code|tablica_spisu_tresci}} {{Patrz|tablica_spisu_tresci}}, jako pusta tablica, z później dodanym elementem o kluczu: {{Code|nazwa_strony}}, którym jest o wartości: {{LinkPatrz|nazwa_strony_z_naglowkami}}. Do tablicy: {{LinkPatrz|tablica_spisu_tresci}}, dodawane są elementy według schematu: <syntaxhighlight lang="lua"> tablica_spisu_tresci[#tablica_spisu_tresci+1]={elementy_linku,numer_rozdzialu_ustalony}; </syntaxhighlight> === Dalsza część funkcji - Tom III === Będziemy się tutaj zajmowali z tekstem przed pierwszym rozdziałem na stronie. ==== Nagłówek na samym poczayku strony ==== Gdy kodowanie jest jednak włączone, tzn.: {{LinkPatrz|czy_kodowanie}}, jest prawdziwe, i mamy artykuł korzystany, tzn.: {{LinkPatrz|czy_artykul_korzystany}}, i zaprzeczenie wyłowania funkcji: {{LinkPatrz|CzyJestTakiProblemJakoElementTablicy}}, przyjmuje wartość prawdziwą, to jeśli na samym początku znajduje się rozdział, wtedy funkcja zwraca wynik: {{LinkPatrz|tablica_spisu_tresci}}. ==== Tekst przed pierwszym rozdziałem ==== Wyznaczamy ten tekst, który będzie ukrywał się pod zmienną: {{Code|tekst_zerowy}} {{Patrz|tekst_zerowy}}. ===== Szablony nagłówka w tekście zerowym ===== W tym tekście iterujemy jak w punkcie: {{LinkZobaczTeż|text_rozdzialu}}, tylko zamiast {{LinkPatrz|text_rozdzialu}} jest {{LinkPatrz|tekst_zerowy}}. === Dalsza część funkcji - Tom IV === Zwracaną wartością tej funkcji jest: {{Code|tablica_spisu_tresci}} {{Patrz|tablica_spisu_tresci}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> lmhq7i4o5sv54a3bs7eq4ht73fn1y1h 548356 548355 2026-07-26T12:36:29Z Persino 2851 /* Dalsza część funkcji - Tom IV */ 548356 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}|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.PobieranieInformacjiRamkiRozpatrywanejStrony}}{{Code|p.PobieranieInformacjiRamkiRozpatrywanejStrony}} == Pobieranie danych z obiektu {{LinkPatrz|self}}, biorąc jego podtablicę o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiRamkiRozpatrywanejStrony(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa ramki tablicy transportu. == {{Śródtytuł|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}}{{Code|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}} == Funkcja uruchamiacz, główna funkcja dzięki, której ładują się informacje według modułu: {{Code|{{ld2|StronicowyParser/informacje}}}} (tam jest użyty). Ten ładowacz jest pokazany w module opis: {{Code|{{lr2|Moduły/StronicowyParser/informacje}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}. === {{Śródtytuł|DaneNazw}}{{Code|DaneNazw}} === Funkcja licząca nazwy podanej nazwy strony, tzn.: {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} {{Patrz|nazwa_artykulu}}, oraz zwracające te kolejno nazwy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function DaneNazw(pelna_nazwa_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|pelna_nazwa_strony}} {{Patrz|pelna_nazwa_strony}} - pełna nazwa strony. === Dalsza część funkcji - Tom I === ==== Tworzenie i inicjowanie początkowych tabel ==== Funkcja tworzy podtabele tabeli zmiennej obiektowej {{LinkPatrz|self}} o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, o wartości pustej. Następnie są tworzone podtabele puste w tej ostatniej o kluczach: {{Code|dane_analizy_stron}} {{Patrz|dane_analizy_stron}} i {{Code|licencja}}{{Patrz|licencja}}, oraz nilowe zmienne z tego samego, co ostatnie, o kluczu: {{Code|problemy}} {{Patrz|problemy}}. ==== Zmienne nazw strony bieżącej, czy nawet aktualnej, w zależności, czy istnieją odpowiednie ustawienia ==== Jest liczony adres strony, na której jest uruchomiona dana strona, wewnętrznej bezparametrowo według: {{Code|{{sr|#p["PełnaNazwaArtykułu"]|p=Książkowe}}}} {{Patrz|strona_aktualna}}, co z tego są liczone z niego: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, co z tego jest liczona pełna nazwa książki {{Code|pelna_nazwa_ksiazki}} {{Patrz|pelna_nazwa_ksiazki}}. ==== Zbieranie danych ustawień z: {{Code|.../config}}, jeśli istnieją ==== Jest liczony pełny adres ustawień: {{Code|pelna_nazwa_ksiazki_ustawienia}} {{Patrz|pelna_nazwa_ksiazki_ustawienia}}, według schematu: {{Code|"Szablon:Podręcznik/Ustawienia/"..pelna_nazwa_ksiazki}} {{Patrz|UstawieniaKsiążki}}. Co z tego jest sprawdzane, czy istnieje strona: {{Code|pelna_nazwa_ksiazki_ustawienia.."/config"}} {{Patrz|config}}, a jeśli tak, to wtedy wiemy, że to jest szablon, to go przedstawiamy w postaci szablonowej, licząc z: {{Code|{{sr|#p.NazwaSzablonu|p=Szablonowe}}}}. Dalej jest liczony ostatni wyliczony szablon z parametrem {{Code|książka}} {{Patrz|książka}}, dalej jeszcze raz, tym razem z parametrem: {{Code|artykuł}} {{Patrz|artykuł}} - te parametry przedstawiają parametry artykułu książkowego, skąd możemy ściągać stronę, by ją wyświetlić na stronie aktualnej, na pewno parametr {{LinkPatrz|książka}} nie może być parametrem składających z samych znaków odstępów, a jeśli tak jest, w takim razie z tych dwóch parametrów jest liczony parametr {{Code|strona}} {{Patrz|strona}}. Dalej liczymy, czy ona jest poprawnym adresem, używając funkcji: {{Code|{{sr|#p["CzyNiepoprawnaNazwa"]|p=Pudełko/Tom I}}}}. A jeżeli adres jest jednak poprawny, ta funkcja zwraca wartość odpowiadającej fałszywej wartości, wtedy jest liczony pełny adres strony, jeżeli ona jest względna z parametrów, tzn. parametr pierwszy: {{LinkPatrz|strona}}, i parametr drugi: {{LinkPatrz|strona_aktualna}}, co względem tej funkcji mamy już: {{LinkPatrz|strona}}, czyli po tej operacji (procedurze) policzyliśmy bezwzględny jego adres. ===== Liczenie nazw z parametru pełnej nazwy aktualnej, nie bieżącej, strony wynikłe z obliczeń z ustawień ===== Policzona wartość strony: {{LinkPatrz|strona}}, jest sprawdzana, czy adres (strona), pod którym ona się kryje, istnieje, a jeśli tak, to ten adres jest tylko formatowany. Porównujemy adres {{LinkPatrz|strona}} z {{LinkPatrz|strona_aktualna}}, czy przedstawiają nie ten sam adres, a jeżeli tak, to liczymy wszyskie nazwy strony, czyli dla bez {{Code|aktualna_}}, przyrównujemy do tego z tym początkiem, co odpowiada pełnej nazwie strony z {{Code|strona_aktualna}} {{LinkPatrz|strona_aktualna}} {{ZobaczTeż|strona_aktualna}}, i używając funkcji: {{LinkŚródtytuł|DaneNazw}}, ze zmiennej: {{Code|strona}} {{LinkPatrz|strona}} {{ZobaczTeż|strona}}. Te ostatnie nazwy są potrzebne do analizy strony bieżącej, nie aktualnej, tzn. na niej, jakie są szablony, jakie posiada spisy, jakie książki, a w nim spisy do nich, są dołączone. ====== Policzone nazwy strony aktualnej wpisane do ogólnej tablicy ====== A póżniej z adresów pliczonych wywołania, dotyczącej tego aktualnego, liczymy dla podtabeli: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienne o kluczach: {{Code|aktualna_nazwa_przestrzeni}} {{Patrz|aktualna_nazwa_przestrzeni}}, {{Code|aktualna_nazwa_przestrzeni_ksiazki}} {{Patrz|aktualna_nazwa_przestrzeni_ksiazki}}, {{Code|aktualna_nazwa_ksiazki}} {{Patrz|aktualna_nazwa_ksiazki}} i {{Code|aktualna_nazwa_artykulu}} {{Patrz|aktualna_nazwa_artykulu}}, mając zmienne nazw policzone z tego aktualnego. ===== Czy strona bieżąca, ale nie zbiorcza, jest wyświetlana na stronie aktualnej, czy może jest tylko stroną zbiorczą uruchomioną pod inną nazwą ===== Jeśli zmienne nazw są policzone z: {{LinkZobaczTeż|strona}} i {{LinkZobaczTeż|strona_aktualna}}, to wtedy kolejno porównujemy, czy któraś z nich jest nierówna, a jeśli tak, to wywołujemy szablon z parametru: {{Code|zastępcza}} {{ZobaczTeż|zastępcza}} - jest to, czy strona jest zbiorcza, o nazwie: {{LinkPatrz|config}}, czy powinna być wartością niepustą. A jak tak, to wyznaczamy z tablicy: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienną o kluczu: {{Code|alternatywna}} {{Patrz|alternatywna}}, co przyrównujemy jemu wartość logiczną z uzyskanego z szablonu z parametrem {{LinkZobaczTeż|zastępcza}}, a jeżeli ta zmienna przyjmuje wartość odpowiadająca fałszywej, wtedy zmienna z tej samej tablicy o kluczu: {{Code|inna_strona_aktualna_niz_biezaca}} {{Patrz|inna_strona_aktualna_niz_biezaca}} - jest to, czy strona jest inna niż zbiorcza, ale wyświetlana na innej stronie, przyjmuje wartość prawdziwą. === Dalsza część funkcji - Tom II === Tworzymy zmienną: {{Code|tablica_zmiennych}}, która jest tablicą pustą, którą uzupełniamy o elementy o kluczach: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}} - są to dane zebrane z bieżącej strony, i {{Code|linkobiekt}} {{Patrz|linkobiekt}} - są to dane zebrane o linkach na stronie odpowiadających poszczególnym obiektom. Uruchamiamy funkcję: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}, z której wyznaczamy parametr: {{Code|tabela_listy_danych_analizy_ksiazki}} - są to dane zebrane z bieżącej i innych stron skojarzonej z nim, te elementy są tylko w postaci nieprzetworzonej, ale przygotowanej. A jeśli ten parametr jest tabelką - a jeżeli nie jest, to nastąpił błąd przetwarzania, i funkcja nie idzie dalej w instrukcję warunkową, wtedy wywołujemy funkcję: {{Code|{{sr|#p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony|p=StronicowyParser/NumeracjaObiektówStron}}}}. === Dalsza część funkcji - Tom III === Na sam koniec funkcji zwracamy tablicę: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}} - ta zmienna zawiera dane w postaci przetworzonej policzonej, tzn. uchwytom są przydzielone numeracje, sprawdzane, czy uchwyty są policzone, są wyznaczone wszystkie kody problemów, które później są potrzebne do wyznaczania wszystkich kategorii błędów na stronie. == {{Śródtytuł|p.SpisRzeczyWedlePodanegoTekstu}}{{Code|p.SpisRzeczyWedlePodanegoTekstu}} == Funkcja generowania liczenia nagłówków strony, co na tej podstawie może być generowany '''spis treści''' strony. Funkcja przyporządkowuje uchwytom szablonów nagłówków ich identyfikatory i te nagłówki, w którym one leżą, jeżeli zmienna {{LinkPatrz|obiekty}} istnieje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SpisRzeczyWedlePodanegoTekstu(self,tekst_artykulu,nazwa_strony,czy_artykul_korzystany, tylko_naglowek,obiekty,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_obiektow_strony_danych_kodow_specjalnych_modul,KtorySzablonMaZwracacKategorie,wzory_zamiast_kodow,tabela_elementow_strony_kodow)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}} - tekst przetworzony, przygotowany ewentualnie przez pewną funkcję, rozważanego artykułu, * {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} - nazwa strony, danego spisu, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy strona jest bieżąca, * {{Code|tylko_naglowek}} {{Patrz|tylko_naglowek}} - pisz adresy stron z tylko nagłówkami '''#''', bez adresów stron, * {{Code|obiekty}} {{Patrz|obiekty}} - elementy tam zebrane, są wykorzystywane do analizy nagłówków poprzez szablon {{s|Śródtytuł}}, któremu temu nagłówkowi odpowjada pewien uchwyt, czy uchwyty, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}, * {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} - nazwa aktualna, czy bieżąca strony, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy zebranych informacji w postaci zakodowanej modułu {{m|Szablonowe}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tabela przeanalizowanych elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} {{Patrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} - tablica dwuwymiarowa kodów o kluczach: szablonów referencji: '''REF...''' i '''POSTMATH''' oraz ich elementu numeru kodu {{Code|kod}}, którego elementem jest kod tego elementu, * {{Code|KtorySzablonMaZwracacKategorie}} {{Patrz|KtorySzablonMaZwracacKategorie}} - tabela składająca się z trzech elementów, którego pierwszy element to: {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{Patrz|KtorySzablonMaZwracacKategorieNaglowek}} - funkcja dla szablonów problemów dla jak: {{s|Śródtytuł}}, w nagłówku, drugi: {{Code|KtorySzablonMaZwracacKategorieTekst}} {{Patrz|KtorySzablonMaZwracacKategorieTekst}} - funkcja dla tego typu szablonów, ale dla nich w tekście, nie w nagłówku, trzeci: {{Code|CzyJestTakiProblemJakoElementTablicy}} {{Patrz|CzyJestTakiProblemJakoElementTablicy}} - czy nie rozważać, dla rozdziałów zerowych, przeciwnie: ta funkcja może przyjmować wartość {{Code|nil}}, wartość zwracana tego elementu, bo to jest funkcja, zależy, czy jest ustawiony kod problemu: {{Code|nagłówek w tekście rozdziału w stronie korzystanej}} {{Patrz|nagłówek w tekście rozdziału w stronie korzystanej}}, a jeżeli jest taki, to ta funkcja przyjmuje zrzuconą wartość {{Code|true}}, * {{Code|wzory_zamiast_kodow}} {{Patrz|wzory_zamiast_kodow}} - rozważaj wzory według tablicy: {{LinkPatrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}}, lub koduj to według funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}} - to wykorzystuj w przypadku, gdy: {{LinkPatrz|nazwa_strony}}, istnieje, i jest wartością pustą, lub {{Code|{{sr|#p.NormaKoduZakodowanegoWikiTekstu|p=Szablonowe}}}} - przeciwnie, * {{Code|tabela_elementow_strony_kodow}} {{Patrz|tabela_elementow_strony_kodow}} - baza tabela z zapamiętanymi podtabelami, którego poszczególne elementy wykorzystywane w spisie posiadają w sobie tylko pierwszy element w postaci przetworzonego uchwytu, bo używamy tylko uchwytów szablonów nagłówków. === {{Śródtytuł|SpecjalneWprowadzeniaTekstu}}{{Code|SpecjalneWprowadzeniaTekstu}} === Funkcja zamieniające pewne szablony, czy znaczniki, na rozdziały równaniowe. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local SpecjalneWprowadzeniaTekstu=function(szablon,obiekt,kod,czy_szablon,czy_znacznik,czy_liczyc,funkcja1,funkcja2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} {{Patrz|szablon}} - zmienna (szablon), nie musi być to normalny szablon, * {{Code|obiekt}} {{Patrz|obiekt}} - zmienna, którego typu jest obiekt, * {{Code|kod}} {{Patrz|kod}} - numer obiektu typu {{LinkPatrz|obiekt}}, * {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy to jest szablon, * {{Code|czy_znacznik}} {{Patrz|czy_znacznik}} - czy to jest znacznik, * {{Code|czy_liczyc}} {{Patrz|czy_liczyc}} - czy funkcję liczyć w sposób złożony, szablony typu: {{s|SpisTreści}} - zamieniający go na znacznik, czy prosty, co na samym końcu uruchamiana jest funkcja: {{LinkPatrz|funkcja1}}, * {{Code|funkcja1}} {{Patrz|funkcja1}} - funkcja operująca na wygenerowanym pośrednio (dłuższe liczenie) lub bezpośrednio (krótsze) znaczniku, wychodząca z szablonu, i zamieniająca go na rozdział równaniowy, funkcja operująca dla szablonów: {{s|SpisTreści}} lub {{s|HNumer}}, * {{Code|funkcja2}} {{Patrz|funkcja2}} - funkcja operująca na znaczniku '''HTML''' nagłówka - typu jak: {{Tag|h1}}, i zamieniająca go na rozdział równaniowy. ==== {{Śródtytuł|ParametrNR}}{{Code|ParametrNR}} ==== Funkcja liczy dokładnie parametr dany o danym numerze, zbiór danych parametrów oznaczających to samo może być wiele, tylko że jedne mogą być ważniejsze od drugich. Definicja skrótowa funkcja: <syntaxhighlight lang="lua"> local function ParametrNR(numer)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer}} {{Patrz|numer}} - numer parametru. Funkcja wykorzystywuje funkcję do uruchomienia: {{Code|{{sr|#p.SpisRzeczySzablon|p=StronicowyParser/Potrzebne}}}}, do generowania parametrów, a właściwie ich wartości. ==== {{Śródtytuł|ObiektKodNumer}}{{Code|ObiektKodNumer}} ==== Funkcja dodająca do bazy danych kolejny element bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla danego obiektu element na samym końcu, po maksymalnym elemencie do niego. Funkcja liczy kod przy pomocy funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local ObiektKodNumer=function(szablon,obiekt)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}. ==== Dalszy opis funkcji ==== Dla {{LinkPatrz|czy_szablon}} prawdziwego dla szablonów sztucznego spisu treści, sprawdzanego przez tabelkę: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, dla danego szablonowego rozdziału generowanego według {{s|HNumer}}, jest on zamieniany na rozdział równaniowy poprzez funkcję: {{LinkPatrz|funkcja1}}. Ta tabela przedstawia się treścią: <syntaxhighlight lang="lua"> p.szablony_sztucznego_wprowadzenia_tekstu={ ["HNumer"]=1, }; </syntaxhighlight> Dla innych rozdziałów szablonowych, tym razem generowanego przez szablon {{s|SpisTreści}}, którego parametry są wyznaczane przez funkcję: {{LinkŚródtytuł|ParametrNR}}, tabelka parametrów opisująca to: <syntaxhighlight lang="lua"> p.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu={ ["SpisTreści"]={{"artykuł",1,},{"książka",2,},{"nazwa",3,},{"dodatek",4,},{"poziom",},}, }; </syntaxhighlight> Funkcja liczy artykuł, koloruje do niego link w: '''spisie treści''', na czerwona, wtedy generuje dodatkowy znacznik, z właściwością: {{Code|color:red}}, gdy on nie istnieje, i to wstawia do tabeli bazy, lub bez niego, wtedy bezposrednio generuje tekst równy nazwie tego szablonu, opakowany, lub nie, w zależności od istnienia. Do policzenia strony, czy ona istnieje, musi być przedtem zdekodowany funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, by później policzyć to sprawdzenie przy pomocy: {{Code|{{sr|#p.PoliczZbiory|p=Techniczne}}}}. W każdym bądź razie jest ruchumianiana funkcja: {{LinkPatrz|funkcja1}}. Gdy to nie jest szablon, tzn.: {{LinkPatrz|czy_szablon}}, jest fałszywe, ale {{LinkPatrz|czy_znacznik}} jest prawdziwe, to takie znaczniki, jak od: {{Tag|h1}} do {{Tag|h6}}, są zamieniane na czysty tekst. W takim razie wywoływana jest dla tego przypadku funkcja: {{LinkPatrz|funkcja2}}. Funkcja: {{LinkPatrz|funkcja1}}, jest dla szablonów nagłówków, a: {{LinkPatrz|funkcja2}}, dla znaczników nagłówków. Z tych generowanych czystych generowanych tekstów są tworzone w tekście rozdziały równaniowe, by później wygenerować '''spis treści''', właśnie z nimi - z tymi nagłówkami, a bardziej ściśle linkami do nich. === {{Śródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}{{Code|SzablonNaglowkujWNaglowkuRozdzialu}} === Fukcja do obsługi nagłówków {{LinkPatrz|Śródtytuł}} w nagłówku, nie w tekście poza nim. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWNaglowkuRozdzialu(szablon,obiekt,kod,powtorka,parametry_wywolania_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}, * {{Code|powtorka}} {{Patrz|powtorka}} - numer użycia takiego samego szablonu typu {{s|Śródtytuł}} {{Patrz|Śródtytuł}}, * {{Code|parametry_wywolania_szablonu}} {{Patrz|parametry_wywolania_szablonu}} - parametry szablonu wraz z ich wartościami, * {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} - nazwa szablonu wywołania, * {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} - modyfikatory szablonu. Funkcja sprawdza, czy szablon w nagłówku jest typu {{LinkPatrz|Śródtytuł}}, a jeżeli tak, to liczy jego uchwyt, najpierw wyznacza je z parametru o nazwie {{Code|uchwyt}} {{Patrz|uchwyt}}, dalej sprawdzane jest, czy taki uchwyt tak zdefiniowany istnieje, jeśli tak, to wydobywana jest jego przetworzona tabela z tym właśnie uchwytek, funkcja robi to względem numeru {{Code|kod}} {{LinkPatrz|kod}} tego szablonu na podstawie funkcji: {{Code|{{sr|#p.WydobywanieUchwytuZeiBezNumeracji|p=StronicowyParser/ZbieranieDanychStron}}}}. Jeżeli wydobyta tabela {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} nie istnieje, w takim razie jest ona dekodowana funkcją: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, a później jest traktowana jako adres '''URL''', tzn. jest dekodowana funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, dalej jest tworzona tabela pusta: {{LinkPatrz|lista_dwuelementowa}}, co dalej jest tam wstawiana do niej jako pierwszy element uzyskany uchwyt przetworzony. A jeśli jednak {{LinkPatrz|lista_dwuelementowa}} została wydobyta z naszej funkcji tabela, która istnieje, wtedy funkcja idzie, niż poprzednio, w inny krok instrukcji warunkowej, wtedy z tej tabeli jest wydobywany pierwszy element jako przetworzony wcześniej uchwyt. Gdy {{ZobaczTeż|uchwyt}} przetworzony uchwyt jest łańcuchem znaków niepusty, wtedy on jest dodawany w postaci tabeli, w której jest ten uchwyt, na sam koniec tabeli {{Code|numeracja}} {{Patrz|numeracja}}. Gdy liczba powtórzeń jest większa niż zero, wtedy jest wywoływana funkcja, przy którym mają być zwrócone kategorie, jeśli zostaną użyte, o nazwie {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}}. Gdy jednak uchwyt uzyskany nie istnieje, to wtedy jest to samo robione, co w: {{LinkZobaczTeż|uchwyt}}. Przed zwróceniem ile razy została dokonana powtórka, jest powiększany licznik powtorek, i to jest otrzymywane z tej funkcji. === {{Śródtytuł|SzablonNaglowkujWTekscieRozdzialu}}{{Code|SzablonNaglowkujWTekscieRozdzialu}} === Funkcja do analizy szablonów nagłówków w tekście rozdziału, nie w nagłówku. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWTekscieRozdzialu(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja sprawdza, czy tekst w bazie kodów jest typu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, w takim razie po wykryciu, że dla tego, że jest to wywołanie szablonowe, a nie instrukcja warukowa w wikikodzie w tekście, wtedy podobnie jest robione, co w funkcji: {{LinkŚródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}, tylko zamiast {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}} jest {{Code|KtorySzablonMaZwracacKategorieTekst}} {{LinkPatrz|KtorySzablonMaZwracacKategorieTekst}}. Przy wykryciu tam szablonu typu {{LinkPatrz|Śródtytuł}}, funkcja zawsze zwraca wartość {{Code|true}}, w innych przypadkach {{Code|false}}. W przypadku intrukcji warunkowej w wikikodzie i dla ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jest wtedy zwracana wartość {{Code|false}}. Funkcja w pozostałych przypadkach zwraca wartość logiczną {{Code|false}}. === {{Śródtytuł|SzablonyWywolywane}}{{Code|SzablonyWywolywane}} === Szablon zamieniający specjalne znaki szablonów, tzn.: {{Code|{{((}}}}, {{Code|{{))}}}}, {{Code|{{!}}}} i {{Code|{{=}}}}, kolejno na: {{Code|{{s|((}}}}, {{Code|{{s|))}}}}, {{Code|{{s|!}}}} i {{Code|{{s|{{=}}}}}}, takich {{ZobaczTeż|StronicowyParser}}, które zawierają wywołania '''Stronicowego Parsera''', czyli ramki typu: {{Code|{{m|StronicowyParser}}}}, czy: {{Code|{{m|StronicowyParser/}}}}, a inne są po prostu przypisywane. W przypadku linków, i nie tylko, tzn. dla szablonów {{LinkZobaczTeż|StronicowyParser}}, z innych stron niż korzystana, co jest trafnie oznaczone zaprzeczeniem parametru {{LinkPatrz|czy_artykul_korzystany}} są liczone parametry pudełkowe {{Code|{{m|Pudełko}}}}. Strony wskazane przez te parametry są analizowane, przy czym linki są przez inną funkcję, a inne już przez znów inną. Szablony nagłówków typu {{LinkPatrz|Śródtytuł}}, czy szablonów stronicowych otwierających i zamykających, one lub jego koledzy, tzn. ich: {{s|StronaStart}} i {{s|StronaKoniec}}, są zastępowane ciągiem pustym. Inne parametry opisane z tabeli {{Code|{{sr|#p.szablony_stronicowe_kontenerowe_formatowania_wzorowego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, są zastępowane ich zawartością, by uniknąć kontaktu nagłówków z tego typu szablonami. Szablony ideksowania określone tabelą: {{Code|{{sr|#p.szablony_indeksowania}}}} {{Patrz|p.szablony_indeksowania}}, nie są rozwijana z kodowania lub są, w zależności, czy zmienna: {{Code|czy_indeksowanie}} {{Patrz|czy_indeksowanie}}, ma wartość {{Code|true}} - tutaj są, czy odpowiadającej fałszywej wartości logicznej - a tutaj już nie. W przypadku instrukcji warunkowych, czy ramek {{lpg|Lua}} w {{lpg|Lua|Scribunto}}, one są rozwijane - kod tego jest zawartością {{LinkPatrz|szablon}}. W innych przypadkach funkcja zwraca wartość {{Code|nil}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywane(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. W powyższym opisie występują szablony opisane w: {{LinkPatrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, a jej definicja jest: <syntaxhighlight lang="lua"> p.szablony_stronicowe_kontenerowe_formatowania_wzorowego={ ["Formuła"]=1; }; </syntaxhighlight> Jest to szablon: {{s|Formuła}} i podobne, liniowe wstawiane do tekstu, ta tabela ma za zadanie zastąpić te szablony ich poszczególnym zawartościom, a ta funkcja, która ją wykorzystywuje się do tego przypadku, jest o nazwie: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}. Tabelą szablonów indeksowania, to są one zdefiniowane przez: {{LinkPatrz|p.szablony_indeksowania}}, a jej zawartość: <syntaxhighlight lang="lua"> p.szablony_indeksowania={ ["Kotwica"] =true, ["Indeksuj"]=true, }; </syntaxhighlight> Są to szablony kotwic: {{s|Kotwica}}, który jest szablonem liniowym, a {{s|Indeksuj}}, natomiast to blokowy. === {{Śródtytuł|SzablonyWywolywaneOgolny}}{{Code|SzablonyWywolywaneOgolny}} === Funkcja rozwija nagłówek, wydzielając z niego zwykły tekst, nie dopełniając pewnych operacji. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywaneOgolny(naglowek)...end; </syntaxhighlight> Parametry funkcji: * {{Code|naglowek}} {{Patrz|naglowek}} - tekst nagłówka napisu wprowadzenia tekstu. Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["WydzielZwykłyTekst"]|p=Specjalne}}}}, kod jej wywoływany jest z parametrami: <syntaxhighlight lang="lua"> local naglowek,Znaczniki,SzablonyStylowe,ZnakiSpecjalne=specjalne_modul["WydzielZwykłyTekst"]( { ---- tekst nagłówka; tekst=naglowek, ---- Nie wykorzystywuj w działaniu funkcji: Znaczniki, SzablonyStylowe, ZnakiSpecjalne; ["nagłówek"]=true, ---- Nie wykorzystuj dekodowania tekstu zakodowanego, bez rozwijania, ale wręcz przzeciwnie rozwijaj, pozostawiaj pewne szczególne kody przed rozkodowaniem; nieklasycznie=true, ---- Bazę kodowania weź z zewnątrz; kodowanie=false, ---- Wykorzystywana tablica kodowania tekstu modułu: Module:Szablonowe, zakodowanego z zewnątrz; ["tablica kodowania"]=tablica_analizy_obiektow_strony_dany_modul, },__FUNKCJA1,__FUNKCJA2); </syntaxhighlight> Ta funkcja wydziela zwykły tekst z nagłówka z szablonami zwykłymi i ramkami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, bez naruszenia działania innych elementów szablonowych, jak tagi, czyli: {{s|#tag:}}, które też współdziałają też w kodzie danego nagłówka. Również i z linkami wewnętrznymi i zewnętrznymi, z których wydziela się zwykły tekst, bo wiadomo, że one nie mogą się znaleźć w linkach '''spisu treści''', bo nie może być link w linku w nim, a one niezależnie jakie, bo to ze względu na {{Strong|HTML}} nie możliwe technologicznie. Definicje dwóch kolejnych funkcji zdefiniowanych powyżej: <syntaxhighlight lang="lua"> ---- szablon - kod obiektu kodu w wikikodzie; ---- obiekt - typ obiektu kodu powyżej; ---- kod - numer tego samego typu obiektu; local __FUNKCJA1=function(szablon,obiekt,kod) ---- Funkcja wykorzystywana do ewentualnego modyfikowania użytych szablonów i przedstawianiu jego kodem symbolicznym, lub zastępowania pewnych szablonów nagłówków wartością pustą; local szablon,wynik=SzablonyWywolywane(szablon,obiekt,kod); return szablon,wynik; end; local __FUNKCJA2=function(szablon,obiekt,kod) --- rozwijaj uzyskany szablon, dalej, gdy napotkasz, jeśli zostanie włączone zmienna indeksowania w postaci wartości logicznej; return czy_indeksowanie; end; </syntaxhighlight> Funkcja zwraca wartości, tzn. zmienną z przetworzenia nagłówkowego, bez usuniętych znaczników, stylów i znaków specjalnych, tzn. części otoczone pewnymi cudzysłowami z taką samą liczbą, więc pogrubienia i pochylenia tekstu: <syntaxhighlight lang="lua"> return naglowek, Znaczniki, SzablonyStylowe, ZnakiSpecjalne; </syntaxhighlight> Definicje tych zwróconych funkcji, tzn.: {{Code|Znaczniki}} {{Patrz|Znaczniki}}, {{Code|SzablonyStylowe}} {{Patrz|SzablonyStylowe}} i {{Code|ZnakiSpecjalne}} {{Patrz|ZnakiSpecjalne}}, którego opisy raczej przedstawiają ich nazwy, dokładnie one są udokumentowane tutaj: <syntaxhighlight lang="lua"> ---- tekst - tekst do przetworzenia; local function Znaczniki(tekst,jakie,__FUNKCJA1,__FUNKCJA2) ---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML;---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML; ---- funkcja do usuwania znaczników, tzn. w niej inne funkcje: __FUNKCJA1 - funkcja do zakodowywania tekstu przed usuwaniem znaczników, a __FUNKCJA2 - funkcja do odkodowania tego, co pozostało; tekst=p["UsuńZnaczniki"](tekst,jakie,__FUNKCJA1,__FUNKCJA2); return tekst; end; local function SzablonyStylowe(tekst) ---- funkcja do usuwania uruchomionych stylów, tzn. tych: <templatestyles src="..."/>, wtedy to staje się kodem parsera przetwarzanego za pomocą tekstu dla tego typu znacznika, kodami parsera mogą być też inne obiekty jak ramki Lua w Scribunto, ale nie muszą być takie, ale my rozważamy tutaj tylko jeden typ kodu parsera. tekst=p["UsuńSzablonyStylów"](tekst); return tekst; end; local function ZnakiSpecjalne(tekst) ---- funkcja do usuwania cudzysłowów w takich samych ilościach z prawej i z lewej strony danego fragmentu tekstu w nim; tekst=p["UsuńZnakiSpecjalne"](tekst); return tekst; end; </syntaxhighlight> Definicje tych funkcji znajdują się również w module: {{Code|{{ld2|Specjalne}}}}, które również przedstawiają inne funkcje do upraszczania tekstu, w tym nagłówka, ale nie tylko, bo dowolnego tekstu. === {{Śródtytuł|RefPrzypisowy}}{{Code|RefPrzypisowy}} === Mechanizm zamieniający kod referencji na jej wersję wyświetlaną na ekranie, czyli w nawiasie kwadratowym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local RefPrzypisowy=function(obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|obiekt}} {{Patrz|obiekt-ref}} - nazwa typu przypisu, czyli jak bez nazwy, czy też jak: '''uwaga''', * {{Code|kod}} {{Patrz|kod-ref}} - numer danego typu przypisu. Gdy {{LinkPatrz|obiekt-ref}} nie ma nazwy, wtedy w nawiasie kwadratowym będzie tylko numerek {{LinkPatrz|kod-ref}}, a jeśli ma nazwę, to nazwa oddzielona spacją z prawej strony, a po nim jest ten numerek. === Dalsza część funkcji - Tom I === Tutaj opowiemy o części wstępnej tej funkcji. ==== Ustalanie zmiennej nazwy modułu aktualnej, czy bieżącej ==== Funkcja ustawia zmienną: {{Code|czy_kodowanie}} {{Patrz|czy_kodowanie}}, na podstawie istnienia zmiennych: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} i {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. ==== Wyznaczanie nazwy modułu aktualnej, czy bieżącej, dla strony aktualnej, jeśli ona nie istnieje ==== Jeżeli zmienna {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} jest odpowiadającej wartości fdałszywej i mamy strona korzystaną, co określa parametr {{LinkPatrz|czy_artykul_korzystany}}, w postaci wartości prawdziwej, wtedy są liczone kolejne zmienne nazw na podstawie istnienia lub nieistnienia zmiennej {{Code|alternatywna}}, a jeśli ona jest prawdziwa, wtedy wybierane są zmienne z tą aktualną nazwą woluminu wynikłe z {{LinkZobaczTeż|strona_aktualna}}, przeciwnie z nazwą bieżącą woluminu,na podstawie tego, co wyświetla '''Stronicowy Parser''', te nazwy są ze sobą łączone, wtedy powstaje pełna nazwa strony, którą przyrównujemy do {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}}. Jeśli wartość {{LinkPatrz|czy_artykul_korzystany}} jest jednak fałszywa, w takim razie jest liczona {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} na podstawie wartości {{LinkPatrz|nazwa_strony}}. ==== Kodowanie '''HTML''' specjalnych znaków strony ==== Nazwę strony {{LinkPatrz|nazwa_strony}}, w której mogą występować specjalne znaki, które są niezrozumiałe z punktu widzenia '''HTML''', jeżeli np.z nich trzeba zbudować identyfikatory '''id''', a więc trzeba je zakodować, robimy to funkcją: {{Code|{{sr|#p.EncodeId|p=Html}}}}. ==== Zwracanie funkcji liczenia numeru nagłówka ==== Wyznaczamy funkcję: {{Code|HNumer}} {{Patrz|HNumer}}, która jest efektem zwrócenia przez: {{Code|{{sr|#p.LiczonyHNumer|p=StronicowyParser/Potrzebne}}}}. ==== Zamienianie szablonów nagłówków, czy nawet tych znaczników, na rozdziały równaniowe ==== Jeśli {{LinkPatrz|czy_kodowanie}} przyjmuje wartość prawdziwą, wtedy definiujemy funkcję: {{LinkŚródtytuł|SpecjalneWprowadzeniaTekstu}}. Dalej funkcja zamienia szablony: {{s|SpisTreści}} i {{s|HNumer}}, a także znaczniki: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, na ich wersję równaniową, aby dało się je rozpoznać jako rozdziały i było je łatwo wsadzić do szablonu takiego jak: {{s|Spis treści}} i inne podobne, za pomocą dwóch kolejnych funkcji wsadzonych do pewnej funkcji modułu {{m|Szablonowe}}, która służy do operacji na takich przypadkach. === Zmienna strony z nagłówkaami === Gdy jest podana zmienna: {{Code|tylko_naglowek}} {{LinkPatrz|tylko_naglowek}}, ma wartość prawdziwą, wtedy zmienna: {{Code|nazwa_strony_z_naglowkami}} {{Patrz|nazwa_strony_z_naglowkami}}, przybiera wartość pustą, przeciwnie gdy zmienna {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}} jest ciągiem pusty, wtedy to samo, w innym pozostałym przypadku jest to dokładnie {{LinkPatrz|nazwa_strony}}, gdzie przed nim znajduje się dwukropek {{Code|:}}. === Dalsza część funkcji - Tom II === Tu powiemy coś o iteratorze, który po zebraniu danych zwraca zmienną {{Code|nil}}, co odpowiada dla pętli, jej przerwaniu. ==== Definicja iteratora zbierania informacji o stronie ==== Aby uruchomić pętle na rzeczywistych danych zakodowanej, czy nie, stronie, trzeba otrzymać zmienną pętli {{Code|iterator}} {{Patrz|iterator}} i go wywoływać bezparametrowo w każdym okrążeniu pętli, aby tak się stało, to trzeba uruchomić funkcję: {{Code|{{sr|#p.IterTekst|p=StronicowyParser/Rozdziały}}}}, na tekście {{LinkPatrz|tekst_artykulu}}, traktując tekst, jakby nie był taki zakodowany, bo tutaj jedynie się liczą elementy niezakodowane, czyli w tym przypadku nagłówki z tekstem rozdziału. ==== Zbieranie informacji o stronie w pętli generowanej przez iterator ==== Będziemy tutaj opisywali pętlę generowaną przez jego iterator {{LinkPatrz|iterator}}. W każdym okrązeniu pętli otrzymujemy dane: * {{Code|naglowek_tab}} {{Patrz|naglowek_tab}} - gdzie pierwszy jego element to {{Code|naglowek}} {{LinkPatrz|naglowek}}, * {{Code|text_rozdzialu}} {{Patrz|text_rozdzialu}} - tekst rozdziału, * {{Code|poziom_rozdzialu}} {{Patrz|poziom_rozdzialu}} - poziom rozdziału. ===== Definicja nowe wartości zbierania uchwytów nagłówka w zmiennej numeracji ===== Deklaracja zmiennej {{Code|numeracja}} {{LinkPatrz|numeracja}} jest na zewnętrz pętli, w niej tworzymy jej nową wartość, którą jest tablica pusta. ==== Uzyskiwanie informacji z tekstu rozdziału nagłówka, i jego możliwych uchwytach, w poszczegolnym okrążeniu pętli, i zrzuceniu tam pojedynczego kodu problemu ==== Jeżeli {{ZobaczTeż|text_rozdzialu}} tekst strony jest zakodowany, to iterujemy po tekście {{LinkPatrz|text_rozdzialu}} w poszukiwaniu kodów bazy kodów zakodowanego tekstu, w tym celu wywołujemy pętlę: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, wtedy uzyskujemy trzy obiekty w każdym przebiegu pętli, tzn. {{Code|szablon}} {{LinkPatrz|szablon}}, {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, za pomocę tego uruchamiamy funkcję: {{LinkŚródtytuł|SzablonNaglowkujWTekscieRozdzialu}}. Jeżeli funkcja napotkała uchwyt szablonu: {{Code|{{s|Śródtytuł}}}}, wtedy jest zatrzymywana, w takim razie mamy informację o wystąpieniu niedozwolonego szablonu nagłówka w tekście. A jeżeli takiego szablonu tam nie ma, to układ iterator {{LinkPatrz|iterator}} iteruje aż do zakończenia danych. ==== Uzyskiwanie nagłówka i do niego identyfikatora '''id''' ==== ===== Tekst niezakodowany nagłówka ===== Gdy tekst nie jest zakodowany, wtedy zmienna: {{LinkPatrz|czy_kodowanie}}, ma wartość odpowiaadające fałszywej, wtedy dla tego nagłówka {{LinkPatrz|naglowek}} jest uruchamiana funkcja: {{Code|{{sr|#p.["PrzetwórzNagłówek"]|p=Specjalne}}}}, wtedy otrzymujemy dwie wartości: {{Code|nazwa_rozdzialu_w_artykule}} {{Patrz|nazwa_rozdzialu_w_artykule}} - zmienna idententyfikatora, {{Code|naglowek}} {{LinkPatrz|naglowek}} - zmienna nagłówka. Te dwie zmienne zostały maksymalnie rozwinięte, zostały przystosowane do tego, aby słuzyły do tego, co trzego zostały stworzone. ===== Tekst zakodowany nagłówka ===== Gdy jednak {{LinkPatrz|czy_kodowanie}} przyjełajednak wartość fałszywą, wtedy jest uruchamiana funkcja: {{LinkŚródtytuł|SzablonyWywolywaneOgolny}}, z której otrzymujemy: {{Code|naglowek}} {{LinkPatrz|naglowek}} - zmienna przetworzonego i maksymalnie rozwiniętego nagłówka, oraz zmienne funkcje: {{LinkPatrz|Znaczniki}}, {{LinkPatrz|SzablonyStylowe}} i {{LinkPatrz|ZnakiSpecjalne}}. Na podstawie defiicji: {{Code|nazwa_rozdzialu_w_artykule}} {{LinkPatrz|nazwa_rozdzialu_w_artykule}}, mamy: {{Code|naglowek}} {{LinkPatrz|naglowek}}. ====== Kompletowanie nagłówka ====== Ten nagłówek kompletujemy funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, usuwając szablony indeksowania {{LinkPatrz|p.szablony_indeksowania}}, a także znaczniki: {{Tag|li}}, {{Tag|ul}} i {{Tag|ol}}. ====== Kompletowanie identyfikatora nagłówka ====== Kompletując: {{Code|nazwa_rozdzialu_w_artykule}} {{LinkPatrz|nazwa_rozdzialu_w_artykule}}, rozwijamy wszystko, oprócz atrybutów, {{Code|obiekt}} {{Code|{{=}}}} {{Code|ATRYBUTY}}, a na szablonach wywołujemy funkcję: {{LinkŚródtytuł|SzablonyWywolywaneOgolny}}. Na identyfikatorze nagłówka {{LinkPatrz|nazwa_rozdzialu_w_artykule}} Wywołujemy kolejno lokalne funkcje: {{LinkPatrz|SzablonyStylowe}} - do usuwania rozwiniętych kodów stylów, {{LinkPatrz|ZnakiSpecjalne}} - do usuwania cudzysłowów, i {{LinkPatrz|Znaczniki}} - do usuwania znaczzników. ====== Gdy w kodzie identyfikatora nie ma symbolicznych szablonów ====== W tym przypadku uruchamiamy fukcję do dekodowania znaków '''HTML''', tzn. dziesiętnych, szesnastkowych i literowych, funkcją: {{Code|{{sr|#p.DecodeKoduHTMLZnaku|p=Html}}}}, a później kodujemy specjalne znaki identyfikatora sposobem: {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, przy pomocy kodów '''HTML''' dziesiętnych. ===== Usuwanie zbędnych znaków w identyfikatorze ===== Usuwane są potrójne i podwójne cudzysłowy {{Code|'}} oraz odstępy i dolne myślniki na końcach łańcucha, a wewnętrz jego kolejne je są zastępowane jedną spacją. ===== Referencje i wzory matematyczne ===== Referencje są zastępowane odpowiednio przy pomocy funkcji: {{LinkŚródtytuł|RefPrzypisowy}}, a wzory matematyczne, dla obiektów typu {{Code|POSTMATH}} {{Patrz|POSTMATH}}, które są zastępowane prawidłowo poprzez: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.text.encode|b=tak}}}}, przy pomocy: {{Code|{{sr|#p.NormaKoduZakodowanegoHtmlTekstu|p=Szablonowe}}}}, obiektem: {{Code|postMath}} {{Patrz|postMath}} z ośmioma znakami cyferkami na końcu tego, którym jest {{Code|kod}} {{LinkPatrz|kod}}. ===== Wstępne przygotowanie identyfikatora do końcowego skutecznego użytku ===== Dla danego identyfikatora one mogą się powtarzać, a identyfikator musi być unikalny, zatem trzeba napisać ich dodatkowe numerki, po policzeniu otrzymamy {{Code|numer_tego_samego_naglowka}} {{Patrz|numer_tego_samego_naglowka}}. ====== Tablica identyfikatora i nagłówka ====== Dla {{LinkPatrz|numer_tego_samego_naglowka}} równego {{Code|1}}, tworzemy tablicę,którego pierwszym elementem jest: {{LinkPatrz|nazwa_rozdzialu_w_artykule}}, a drugim nagłówek {{LinkPatrz|naglowek}}, a w przypadku tego numerku innego niż podana liczba, to dajemy do identyfikatora na końcu ten numerek po dolnym myślniku. ====== Uzupełnianie zmiennej do identyfikacji uchwytu z odpowiednim nagłówkiem ====== Jeśli: {{LinkPatrz|obiekty}} i {{LinkPatrz|numeracja}}, istnieją, wtedy do tej pierwszej tablicy dodawane są wszystkie elementy o takim samym typie z {{LinkPatrz|numeracja}}. To dodawanie na końcu tablicy przedstawia się: <syntaxhighlight lang="lua"> for _,value_numeracja in ipairs(numeracja)do obiekty[#obiekty+1]={value_numeracja,{nazwa_strony_z_naglowkami,elementy_linku[1], elementy_linku[2]}}; end; </syntaxhighlight> ====== Tworzenie tablicy nagłówkami i indetyfikatorami ====== Jeśli {{Code|poziom_rozdzialu}} jest większy od zera, tzn. {{Code|> 0}}, wtedy liczymy numer rozdziału przy pomocy funkcji: {{Code|HNumer}} {{LinkPatrz|HNumer}} liczony z: {{Code|poziom_rozdzialu}} {{LinkPatrz|poziom_rozdzialu}}, tworząc w ten sposób wynik w postaci zmiennej {{Code|numer_rozdzialu_ustalony}} {{Patrz|numer_rozdzialu_ustalony}}. Jest tworzona tablica spisu: {{Code|tablica_spisu_tresci}} {{Patrz|tablica_spisu_tresci}}, jako pusta tablica, z później dodanym elementem o kluczu: {{Code|nazwa_strony}}, którym jest o wartości: {{LinkPatrz|nazwa_strony_z_naglowkami}}. Do tablicy: {{LinkPatrz|tablica_spisu_tresci}}, dodawane są elementy według schematu: <syntaxhighlight lang="lua"> tablica_spisu_tresci[#tablica_spisu_tresci+1]={elementy_linku,numer_rozdzialu_ustalony}; </syntaxhighlight> === Dalsza część funkcji - Tom III === Będziemy się tutaj zajmowali z tekstem przed pierwszym rozdziałem na stronie. ==== Nagłówek na samym poczayku strony ==== Gdy kodowanie jest jednak włączone, tzn.: {{LinkPatrz|czy_kodowanie}}, jest prawdziwe, i mamy artykuł korzystany, tzn.: {{LinkPatrz|czy_artykul_korzystany}}, i zaprzeczenie wyłowania funkcji: {{LinkPatrz|CzyJestTakiProblemJakoElementTablicy}}, przyjmuje wartość prawdziwą, to jeśli na samym początku znajduje się rozdział, wtedy funkcja zwraca wynik: {{LinkPatrz|tablica_spisu_tresci}}. ==== Tekst przed pierwszym rozdziałem ==== Wyznaczamy ten tekst, który będzie ukrywał się pod zmienną: {{Code|tekst_zerowy}} {{Patrz|tekst_zerowy}}. ===== Szablony nagłówka w tekście zerowym ===== W tym tekście iterujemy jak w punkcie: {{LinkZobaczTeż|text_rozdzialu}}, tylko zamiast {{LinkPatrz|text_rozdzialu}} jest {{LinkPatrz|tekst_zerowy}}. === Dalsza część funkcji - Tom IV === Zwracaną wartością tej funkcji jest: {{Code|tablica_spisu_tresci}} {{LinkPatrz|tablica_spisu_tresci}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 8x6g8u45tsupw347c0e04emrn0a9w8n 548357 548356 2026-07-26T12:40:46Z Persino 2851 /* Nagłówek na samym poczayku strony */ 548357 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}|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.PobieranieInformacjiRamkiRozpatrywanejStrony}}{{Code|p.PobieranieInformacjiRamkiRozpatrywanejStrony}} == Pobieranie danych z obiektu {{LinkPatrz|self}}, biorąc jego podtablicę o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiRamkiRozpatrywanejStrony(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa ramki tablicy transportu. == {{Śródtytuł|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}}{{Code|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}} == Funkcja uruchamiacz, główna funkcja dzięki, której ładują się informacje według modułu: {{Code|{{ld2|StronicowyParser/informacje}}}} (tam jest użyty). Ten ładowacz jest pokazany w module opis: {{Code|{{lr2|Moduły/StronicowyParser/informacje}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}. === {{Śródtytuł|DaneNazw}}{{Code|DaneNazw}} === Funkcja licząca nazwy podanej nazwy strony, tzn.: {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} {{Patrz|nazwa_artykulu}}, oraz zwracające te kolejno nazwy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function DaneNazw(pelna_nazwa_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|pelna_nazwa_strony}} {{Patrz|pelna_nazwa_strony}} - pełna nazwa strony. === Dalsza część funkcji - Tom I === ==== Tworzenie i inicjowanie początkowych tabel ==== Funkcja tworzy podtabele tabeli zmiennej obiektowej {{LinkPatrz|self}} o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, o wartości pustej. Następnie są tworzone podtabele puste w tej ostatniej o kluczach: {{Code|dane_analizy_stron}} {{Patrz|dane_analizy_stron}} i {{Code|licencja}}{{Patrz|licencja}}, oraz nilowe zmienne z tego samego, co ostatnie, o kluczu: {{Code|problemy}} {{Patrz|problemy}}. ==== Zmienne nazw strony bieżącej, czy nawet aktualnej, w zależności, czy istnieją odpowiednie ustawienia ==== Jest liczony adres strony, na której jest uruchomiona dana strona, wewnętrznej bezparametrowo według: {{Code|{{sr|#p["PełnaNazwaArtykułu"]|p=Książkowe}}}} {{Patrz|strona_aktualna}}, co z tego są liczone z niego: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, co z tego jest liczona pełna nazwa książki {{Code|pelna_nazwa_ksiazki}} {{Patrz|pelna_nazwa_ksiazki}}. ==== Zbieranie danych ustawień z: {{Code|.../config}}, jeśli istnieją ==== Jest liczony pełny adres ustawień: {{Code|pelna_nazwa_ksiazki_ustawienia}} {{Patrz|pelna_nazwa_ksiazki_ustawienia}}, według schematu: {{Code|"Szablon:Podręcznik/Ustawienia/"..pelna_nazwa_ksiazki}} {{Patrz|UstawieniaKsiążki}}. Co z tego jest sprawdzane, czy istnieje strona: {{Code|pelna_nazwa_ksiazki_ustawienia.."/config"}} {{Patrz|config}}, a jeśli tak, to wtedy wiemy, że to jest szablon, to go przedstawiamy w postaci szablonowej, licząc z: {{Code|{{sr|#p.NazwaSzablonu|p=Szablonowe}}}}. Dalej jest liczony ostatni wyliczony szablon z parametrem {{Code|książka}} {{Patrz|książka}}, dalej jeszcze raz, tym razem z parametrem: {{Code|artykuł}} {{Patrz|artykuł}} - te parametry przedstawiają parametry artykułu książkowego, skąd możemy ściągać stronę, by ją wyświetlić na stronie aktualnej, na pewno parametr {{LinkPatrz|książka}} nie może być parametrem składających z samych znaków odstępów, a jeśli tak jest, w takim razie z tych dwóch parametrów jest liczony parametr {{Code|strona}} {{Patrz|strona}}. Dalej liczymy, czy ona jest poprawnym adresem, używając funkcji: {{Code|{{sr|#p["CzyNiepoprawnaNazwa"]|p=Pudełko/Tom I}}}}. A jeżeli adres jest jednak poprawny, ta funkcja zwraca wartość odpowiadającej fałszywej wartości, wtedy jest liczony pełny adres strony, jeżeli ona jest względna z parametrów, tzn. parametr pierwszy: {{LinkPatrz|strona}}, i parametr drugi: {{LinkPatrz|strona_aktualna}}, co względem tej funkcji mamy już: {{LinkPatrz|strona}}, czyli po tej operacji (procedurze) policzyliśmy bezwzględny jego adres. ===== Liczenie nazw z parametru pełnej nazwy aktualnej, nie bieżącej, strony wynikłe z obliczeń z ustawień ===== Policzona wartość strony: {{LinkPatrz|strona}}, jest sprawdzana, czy adres (strona), pod którym ona się kryje, istnieje, a jeśli tak, to ten adres jest tylko formatowany. Porównujemy adres {{LinkPatrz|strona}} z {{LinkPatrz|strona_aktualna}}, czy przedstawiają nie ten sam adres, a jeżeli tak, to liczymy wszyskie nazwy strony, czyli dla bez {{Code|aktualna_}}, przyrównujemy do tego z tym początkiem, co odpowiada pełnej nazwie strony z {{Code|strona_aktualna}} {{LinkPatrz|strona_aktualna}} {{ZobaczTeż|strona_aktualna}}, i używając funkcji: {{LinkŚródtytuł|DaneNazw}}, ze zmiennej: {{Code|strona}} {{LinkPatrz|strona}} {{ZobaczTeż|strona}}. Te ostatnie nazwy są potrzebne do analizy strony bieżącej, nie aktualnej, tzn. na niej, jakie są szablony, jakie posiada spisy, jakie książki, a w nim spisy do nich, są dołączone. ====== Policzone nazwy strony aktualnej wpisane do ogólnej tablicy ====== A póżniej z adresów pliczonych wywołania, dotyczącej tego aktualnego, liczymy dla podtabeli: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienne o kluczach: {{Code|aktualna_nazwa_przestrzeni}} {{Patrz|aktualna_nazwa_przestrzeni}}, {{Code|aktualna_nazwa_przestrzeni_ksiazki}} {{Patrz|aktualna_nazwa_przestrzeni_ksiazki}}, {{Code|aktualna_nazwa_ksiazki}} {{Patrz|aktualna_nazwa_ksiazki}} i {{Code|aktualna_nazwa_artykulu}} {{Patrz|aktualna_nazwa_artykulu}}, mając zmienne nazw policzone z tego aktualnego. ===== Czy strona bieżąca, ale nie zbiorcza, jest wyświetlana na stronie aktualnej, czy może jest tylko stroną zbiorczą uruchomioną pod inną nazwą ===== Jeśli zmienne nazw są policzone z: {{LinkZobaczTeż|strona}} i {{LinkZobaczTeż|strona_aktualna}}, to wtedy kolejno porównujemy, czy któraś z nich jest nierówna, a jeśli tak, to wywołujemy szablon z parametru: {{Code|zastępcza}} {{ZobaczTeż|zastępcza}} - jest to, czy strona jest zbiorcza, o nazwie: {{LinkPatrz|config}}, czy powinna być wartością niepustą. A jak tak, to wyznaczamy z tablicy: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienną o kluczu: {{Code|alternatywna}} {{Patrz|alternatywna}}, co przyrównujemy jemu wartość logiczną z uzyskanego z szablonu z parametrem {{LinkZobaczTeż|zastępcza}}, a jeżeli ta zmienna przyjmuje wartość odpowiadająca fałszywej, wtedy zmienna z tej samej tablicy o kluczu: {{Code|inna_strona_aktualna_niz_biezaca}} {{Patrz|inna_strona_aktualna_niz_biezaca}} - jest to, czy strona jest inna niż zbiorcza, ale wyświetlana na innej stronie, przyjmuje wartość prawdziwą. === Dalsza część funkcji - Tom II === Tworzymy zmienną: {{Code|tablica_zmiennych}}, która jest tablicą pustą, którą uzupełniamy o elementy o kluczach: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}} - są to dane zebrane z bieżącej strony, i {{Code|linkobiekt}} {{Patrz|linkobiekt}} - są to dane zebrane o linkach na stronie odpowiadających poszczególnym obiektom. Uruchamiamy funkcję: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}, z której wyznaczamy parametr: {{Code|tabela_listy_danych_analizy_ksiazki}} - są to dane zebrane z bieżącej i innych stron skojarzonej z nim, te elementy są tylko w postaci nieprzetworzonej, ale przygotowanej. A jeśli ten parametr jest tabelką - a jeżeli nie jest, to nastąpił błąd przetwarzania, i funkcja nie idzie dalej w instrukcję warunkową, wtedy wywołujemy funkcję: {{Code|{{sr|#p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony|p=StronicowyParser/NumeracjaObiektówStron}}}}. === Dalsza część funkcji - Tom III === Na sam koniec funkcji zwracamy tablicę: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}} - ta zmienna zawiera dane w postaci przetworzonej policzonej, tzn. uchwytom są przydzielone numeracje, sprawdzane, czy uchwyty są policzone, są wyznaczone wszystkie kody problemów, które później są potrzebne do wyznaczania wszystkich kategorii błędów na stronie. == {{Śródtytuł|p.SpisRzeczyWedlePodanegoTekstu}}{{Code|p.SpisRzeczyWedlePodanegoTekstu}} == Funkcja generowania liczenia nagłówków strony, co na tej podstawie może być generowany '''spis treści''' strony. Funkcja przyporządkowuje uchwytom szablonów nagłówków ich identyfikatory i te nagłówki, w którym one leżą, jeżeli zmienna {{LinkPatrz|obiekty}} istnieje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SpisRzeczyWedlePodanegoTekstu(self,tekst_artykulu,nazwa_strony,czy_artykul_korzystany, tylko_naglowek,obiekty,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_obiektow_strony_danych_kodow_specjalnych_modul,KtorySzablonMaZwracacKategorie,wzory_zamiast_kodow,tabela_elementow_strony_kodow)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}} - tekst przetworzony, przygotowany ewentualnie przez pewną funkcję, rozważanego artykułu, * {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} - nazwa strony, danego spisu, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy strona jest bieżąca, * {{Code|tylko_naglowek}} {{Patrz|tylko_naglowek}} - pisz adresy stron z tylko nagłówkami '''#''', bez adresów stron, * {{Code|obiekty}} {{Patrz|obiekty}} - elementy tam zebrane, są wykorzystywane do analizy nagłówków poprzez szablon {{s|Śródtytuł}}, któremu temu nagłówkowi odpowjada pewien uchwyt, czy uchwyty, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}, * {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} - nazwa aktualna, czy bieżąca strony, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy zebranych informacji w postaci zakodowanej modułu {{m|Szablonowe}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tabela przeanalizowanych elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} {{Patrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} - tablica dwuwymiarowa kodów o kluczach: szablonów referencji: '''REF...''' i '''POSTMATH''' oraz ich elementu numeru kodu {{Code|kod}}, którego elementem jest kod tego elementu, * {{Code|KtorySzablonMaZwracacKategorie}} {{Patrz|KtorySzablonMaZwracacKategorie}} - tabela składająca się z trzech elementów, którego pierwszy element to: {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{Patrz|KtorySzablonMaZwracacKategorieNaglowek}} - funkcja dla szablonów problemów dla jak: {{s|Śródtytuł}}, w nagłówku, drugi: {{Code|KtorySzablonMaZwracacKategorieTekst}} {{Patrz|KtorySzablonMaZwracacKategorieTekst}} - funkcja dla tego typu szablonów, ale dla nich w tekście, nie w nagłówku, trzeci: {{Code|CzyJestTakiProblemJakoElementTablicy}} {{Patrz|CzyJestTakiProblemJakoElementTablicy}} - czy nie rozważać, dla rozdziałów zerowych, przeciwnie: ta funkcja może przyjmować wartość {{Code|nil}}, wartość zwracana tego elementu, bo to jest funkcja, zależy, czy jest ustawiony kod problemu: {{Code|nagłówek w tekście rozdziału w stronie korzystanej}} {{Patrz|nagłówek w tekście rozdziału w stronie korzystanej}}, a jeżeli jest taki, to ta funkcja przyjmuje zrzuconą wartość {{Code|true}}, * {{Code|wzory_zamiast_kodow}} {{Patrz|wzory_zamiast_kodow}} - rozważaj wzory według tablicy: {{LinkPatrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}}, lub koduj to według funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}} - to wykorzystuj w przypadku, gdy: {{LinkPatrz|nazwa_strony}}, istnieje, i jest wartością pustą, lub {{Code|{{sr|#p.NormaKoduZakodowanegoWikiTekstu|p=Szablonowe}}}} - przeciwnie, * {{Code|tabela_elementow_strony_kodow}} {{Patrz|tabela_elementow_strony_kodow}} - baza tabela z zapamiętanymi podtabelami, którego poszczególne elementy wykorzystywane w spisie posiadają w sobie tylko pierwszy element w postaci przetworzonego uchwytu, bo używamy tylko uchwytów szablonów nagłówków. === {{Śródtytuł|SpecjalneWprowadzeniaTekstu}}{{Code|SpecjalneWprowadzeniaTekstu}} === Funkcja zamieniające pewne szablony, czy znaczniki, na rozdziały równaniowe. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local SpecjalneWprowadzeniaTekstu=function(szablon,obiekt,kod,czy_szablon,czy_znacznik,czy_liczyc,funkcja1,funkcja2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} {{Patrz|szablon}} - zmienna (szablon), nie musi być to normalny szablon, * {{Code|obiekt}} {{Patrz|obiekt}} - zmienna, którego typu jest obiekt, * {{Code|kod}} {{Patrz|kod}} - numer obiektu typu {{LinkPatrz|obiekt}}, * {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy to jest szablon, * {{Code|czy_znacznik}} {{Patrz|czy_znacznik}} - czy to jest znacznik, * {{Code|czy_liczyc}} {{Patrz|czy_liczyc}} - czy funkcję liczyć w sposób złożony, szablony typu: {{s|SpisTreści}} - zamieniający go na znacznik, czy prosty, co na samym końcu uruchamiana jest funkcja: {{LinkPatrz|funkcja1}}, * {{Code|funkcja1}} {{Patrz|funkcja1}} - funkcja operująca na wygenerowanym pośrednio (dłuższe liczenie) lub bezpośrednio (krótsze) znaczniku, wychodząca z szablonu, i zamieniająca go na rozdział równaniowy, funkcja operująca dla szablonów: {{s|SpisTreści}} lub {{s|HNumer}}, * {{Code|funkcja2}} {{Patrz|funkcja2}} - funkcja operująca na znaczniku '''HTML''' nagłówka - typu jak: {{Tag|h1}}, i zamieniająca go na rozdział równaniowy. ==== {{Śródtytuł|ParametrNR}}{{Code|ParametrNR}} ==== Funkcja liczy dokładnie parametr dany o danym numerze, zbiór danych parametrów oznaczających to samo może być wiele, tylko że jedne mogą być ważniejsze od drugich. Definicja skrótowa funkcja: <syntaxhighlight lang="lua"> local function ParametrNR(numer)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer}} {{Patrz|numer}} - numer parametru. Funkcja wykorzystywuje funkcję do uruchomienia: {{Code|{{sr|#p.SpisRzeczySzablon|p=StronicowyParser/Potrzebne}}}}, do generowania parametrów, a właściwie ich wartości. ==== {{Śródtytuł|ObiektKodNumer}}{{Code|ObiektKodNumer}} ==== Funkcja dodająca do bazy danych kolejny element bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla danego obiektu element na samym końcu, po maksymalnym elemencie do niego. Funkcja liczy kod przy pomocy funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local ObiektKodNumer=function(szablon,obiekt)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}. ==== Dalszy opis funkcji ==== Dla {{LinkPatrz|czy_szablon}} prawdziwego dla szablonów sztucznego spisu treści, sprawdzanego przez tabelkę: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, dla danego szablonowego rozdziału generowanego według {{s|HNumer}}, jest on zamieniany na rozdział równaniowy poprzez funkcję: {{LinkPatrz|funkcja1}}. Ta tabela przedstawia się treścią: <syntaxhighlight lang="lua"> p.szablony_sztucznego_wprowadzenia_tekstu={ ["HNumer"]=1, }; </syntaxhighlight> Dla innych rozdziałów szablonowych, tym razem generowanego przez szablon {{s|SpisTreści}}, którego parametry są wyznaczane przez funkcję: {{LinkŚródtytuł|ParametrNR}}, tabelka parametrów opisująca to: <syntaxhighlight lang="lua"> p.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu={ ["SpisTreści"]={{"artykuł",1,},{"książka",2,},{"nazwa",3,},{"dodatek",4,},{"poziom",},}, }; </syntaxhighlight> Funkcja liczy artykuł, koloruje do niego link w: '''spisie treści''', na czerwona, wtedy generuje dodatkowy znacznik, z właściwością: {{Code|color:red}}, gdy on nie istnieje, i to wstawia do tabeli bazy, lub bez niego, wtedy bezposrednio generuje tekst równy nazwie tego szablonu, opakowany, lub nie, w zależności od istnienia. Do policzenia strony, czy ona istnieje, musi być przedtem zdekodowany funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, by później policzyć to sprawdzenie przy pomocy: {{Code|{{sr|#p.PoliczZbiory|p=Techniczne}}}}. W każdym bądź razie jest ruchumianiana funkcja: {{LinkPatrz|funkcja1}}. Gdy to nie jest szablon, tzn.: {{LinkPatrz|czy_szablon}}, jest fałszywe, ale {{LinkPatrz|czy_znacznik}} jest prawdziwe, to takie znaczniki, jak od: {{Tag|h1}} do {{Tag|h6}}, są zamieniane na czysty tekst. W takim razie wywoływana jest dla tego przypadku funkcja: {{LinkPatrz|funkcja2}}. Funkcja: {{LinkPatrz|funkcja1}}, jest dla szablonów nagłówków, a: {{LinkPatrz|funkcja2}}, dla znaczników nagłówków. Z tych generowanych czystych generowanych tekstów są tworzone w tekście rozdziały równaniowe, by później wygenerować '''spis treści''', właśnie z nimi - z tymi nagłówkami, a bardziej ściśle linkami do nich. === {{Śródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}{{Code|SzablonNaglowkujWNaglowkuRozdzialu}} === Fukcja do obsługi nagłówków {{LinkPatrz|Śródtytuł}} w nagłówku, nie w tekście poza nim. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWNaglowkuRozdzialu(szablon,obiekt,kod,powtorka,parametry_wywolania_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}, * {{Code|powtorka}} {{Patrz|powtorka}} - numer użycia takiego samego szablonu typu {{s|Śródtytuł}} {{Patrz|Śródtytuł}}, * {{Code|parametry_wywolania_szablonu}} {{Patrz|parametry_wywolania_szablonu}} - parametry szablonu wraz z ich wartościami, * {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} - nazwa szablonu wywołania, * {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} - modyfikatory szablonu. Funkcja sprawdza, czy szablon w nagłówku jest typu {{LinkPatrz|Śródtytuł}}, a jeżeli tak, to liczy jego uchwyt, najpierw wyznacza je z parametru o nazwie {{Code|uchwyt}} {{Patrz|uchwyt}}, dalej sprawdzane jest, czy taki uchwyt tak zdefiniowany istnieje, jeśli tak, to wydobywana jest jego przetworzona tabela z tym właśnie uchwytek, funkcja robi to względem numeru {{Code|kod}} {{LinkPatrz|kod}} tego szablonu na podstawie funkcji: {{Code|{{sr|#p.WydobywanieUchwytuZeiBezNumeracji|p=StronicowyParser/ZbieranieDanychStron}}}}. Jeżeli wydobyta tabela {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} nie istnieje, w takim razie jest ona dekodowana funkcją: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, a później jest traktowana jako adres '''URL''', tzn. jest dekodowana funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, dalej jest tworzona tabela pusta: {{LinkPatrz|lista_dwuelementowa}}, co dalej jest tam wstawiana do niej jako pierwszy element uzyskany uchwyt przetworzony. A jeśli jednak {{LinkPatrz|lista_dwuelementowa}} została wydobyta z naszej funkcji tabela, która istnieje, wtedy funkcja idzie, niż poprzednio, w inny krok instrukcji warunkowej, wtedy z tej tabeli jest wydobywany pierwszy element jako przetworzony wcześniej uchwyt. Gdy {{ZobaczTeż|uchwyt}} przetworzony uchwyt jest łańcuchem znaków niepusty, wtedy on jest dodawany w postaci tabeli, w której jest ten uchwyt, na sam koniec tabeli {{Code|numeracja}} {{Patrz|numeracja}}. Gdy liczba powtórzeń jest większa niż zero, wtedy jest wywoływana funkcja, przy którym mają być zwrócone kategorie, jeśli zostaną użyte, o nazwie {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}}. Gdy jednak uchwyt uzyskany nie istnieje, to wtedy jest to samo robione, co w: {{LinkZobaczTeż|uchwyt}}. Przed zwróceniem ile razy została dokonana powtórka, jest powiększany licznik powtorek, i to jest otrzymywane z tej funkcji. === {{Śródtytuł|SzablonNaglowkujWTekscieRozdzialu}}{{Code|SzablonNaglowkujWTekscieRozdzialu}} === Funkcja do analizy szablonów nagłówków w tekście rozdziału, nie w nagłówku. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWTekscieRozdzialu(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja sprawdza, czy tekst w bazie kodów jest typu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, w takim razie po wykryciu, że dla tego, że jest to wywołanie szablonowe, a nie instrukcja warukowa w wikikodzie w tekście, wtedy podobnie jest robione, co w funkcji: {{LinkŚródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}, tylko zamiast {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}} jest {{Code|KtorySzablonMaZwracacKategorieTekst}} {{LinkPatrz|KtorySzablonMaZwracacKategorieTekst}}. Przy wykryciu tam szablonu typu {{LinkPatrz|Śródtytuł}}, funkcja zawsze zwraca wartość {{Code|true}}, w innych przypadkach {{Code|false}}. W przypadku intrukcji warunkowej w wikikodzie i dla ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jest wtedy zwracana wartość {{Code|false}}. Funkcja w pozostałych przypadkach zwraca wartość logiczną {{Code|false}}. === {{Śródtytuł|SzablonyWywolywane}}{{Code|SzablonyWywolywane}} === Szablon zamieniający specjalne znaki szablonów, tzn.: {{Code|{{((}}}}, {{Code|{{))}}}}, {{Code|{{!}}}} i {{Code|{{=}}}}, kolejno na: {{Code|{{s|((}}}}, {{Code|{{s|))}}}}, {{Code|{{s|!}}}} i {{Code|{{s|{{=}}}}}}, takich {{ZobaczTeż|StronicowyParser}}, które zawierają wywołania '''Stronicowego Parsera''', czyli ramki typu: {{Code|{{m|StronicowyParser}}}}, czy: {{Code|{{m|StronicowyParser/}}}}, a inne są po prostu przypisywane. W przypadku linków, i nie tylko, tzn. dla szablonów {{LinkZobaczTeż|StronicowyParser}}, z innych stron niż korzystana, co jest trafnie oznaczone zaprzeczeniem parametru {{LinkPatrz|czy_artykul_korzystany}} są liczone parametry pudełkowe {{Code|{{m|Pudełko}}}}. Strony wskazane przez te parametry są analizowane, przy czym linki są przez inną funkcję, a inne już przez znów inną. Szablony nagłówków typu {{LinkPatrz|Śródtytuł}}, czy szablonów stronicowych otwierających i zamykających, one lub jego koledzy, tzn. ich: {{s|StronaStart}} i {{s|StronaKoniec}}, są zastępowane ciągiem pustym. Inne parametry opisane z tabeli {{Code|{{sr|#p.szablony_stronicowe_kontenerowe_formatowania_wzorowego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, są zastępowane ich zawartością, by uniknąć kontaktu nagłówków z tego typu szablonami. Szablony ideksowania określone tabelą: {{Code|{{sr|#p.szablony_indeksowania}}}} {{Patrz|p.szablony_indeksowania}}, nie są rozwijana z kodowania lub są, w zależności, czy zmienna: {{Code|czy_indeksowanie}} {{Patrz|czy_indeksowanie}}, ma wartość {{Code|true}} - tutaj są, czy odpowiadającej fałszywej wartości logicznej - a tutaj już nie. W przypadku instrukcji warunkowych, czy ramek {{lpg|Lua}} w {{lpg|Lua|Scribunto}}, one są rozwijane - kod tego jest zawartością {{LinkPatrz|szablon}}. W innych przypadkach funkcja zwraca wartość {{Code|nil}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywane(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. W powyższym opisie występują szablony opisane w: {{LinkPatrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, a jej definicja jest: <syntaxhighlight lang="lua"> p.szablony_stronicowe_kontenerowe_formatowania_wzorowego={ ["Formuła"]=1; }; </syntaxhighlight> Jest to szablon: {{s|Formuła}} i podobne, liniowe wstawiane do tekstu, ta tabela ma za zadanie zastąpić te szablony ich poszczególnym zawartościom, a ta funkcja, która ją wykorzystywuje się do tego przypadku, jest o nazwie: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}. Tabelą szablonów indeksowania, to są one zdefiniowane przez: {{LinkPatrz|p.szablony_indeksowania}}, a jej zawartość: <syntaxhighlight lang="lua"> p.szablony_indeksowania={ ["Kotwica"] =true, ["Indeksuj"]=true, }; </syntaxhighlight> Są to szablony kotwic: {{s|Kotwica}}, który jest szablonem liniowym, a {{s|Indeksuj}}, natomiast to blokowy. === {{Śródtytuł|SzablonyWywolywaneOgolny}}{{Code|SzablonyWywolywaneOgolny}} === Funkcja rozwija nagłówek, wydzielając z niego zwykły tekst, nie dopełniając pewnych operacji. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywaneOgolny(naglowek)...end; </syntaxhighlight> Parametry funkcji: * {{Code|naglowek}} {{Patrz|naglowek}} - tekst nagłówka napisu wprowadzenia tekstu. Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["WydzielZwykłyTekst"]|p=Specjalne}}}}, kod jej wywoływany jest z parametrami: <syntaxhighlight lang="lua"> local naglowek,Znaczniki,SzablonyStylowe,ZnakiSpecjalne=specjalne_modul["WydzielZwykłyTekst"]( { ---- tekst nagłówka; tekst=naglowek, ---- Nie wykorzystywuj w działaniu funkcji: Znaczniki, SzablonyStylowe, ZnakiSpecjalne; ["nagłówek"]=true, ---- Nie wykorzystuj dekodowania tekstu zakodowanego, bez rozwijania, ale wręcz przzeciwnie rozwijaj, pozostawiaj pewne szczególne kody przed rozkodowaniem; nieklasycznie=true, ---- Bazę kodowania weź z zewnątrz; kodowanie=false, ---- Wykorzystywana tablica kodowania tekstu modułu: Module:Szablonowe, zakodowanego z zewnątrz; ["tablica kodowania"]=tablica_analizy_obiektow_strony_dany_modul, },__FUNKCJA1,__FUNKCJA2); </syntaxhighlight> Ta funkcja wydziela zwykły tekst z nagłówka z szablonami zwykłymi i ramkami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, bez naruszenia działania innych elementów szablonowych, jak tagi, czyli: {{s|#tag:}}, które też współdziałają też w kodzie danego nagłówka. Również i z linkami wewnętrznymi i zewnętrznymi, z których wydziela się zwykły tekst, bo wiadomo, że one nie mogą się znaleźć w linkach '''spisu treści''', bo nie może być link w linku w nim, a one niezależnie jakie, bo to ze względu na {{Strong|HTML}} nie możliwe technologicznie. Definicje dwóch kolejnych funkcji zdefiniowanych powyżej: <syntaxhighlight lang="lua"> ---- szablon - kod obiektu kodu w wikikodzie; ---- obiekt - typ obiektu kodu powyżej; ---- kod - numer tego samego typu obiektu; local __FUNKCJA1=function(szablon,obiekt,kod) ---- Funkcja wykorzystywana do ewentualnego modyfikowania użytych szablonów i przedstawianiu jego kodem symbolicznym, lub zastępowania pewnych szablonów nagłówków wartością pustą; local szablon,wynik=SzablonyWywolywane(szablon,obiekt,kod); return szablon,wynik; end; local __FUNKCJA2=function(szablon,obiekt,kod) --- rozwijaj uzyskany szablon, dalej, gdy napotkasz, jeśli zostanie włączone zmienna indeksowania w postaci wartości logicznej; return czy_indeksowanie; end; </syntaxhighlight> Funkcja zwraca wartości, tzn. zmienną z przetworzenia nagłówkowego, bez usuniętych znaczników, stylów i znaków specjalnych, tzn. części otoczone pewnymi cudzysłowami z taką samą liczbą, więc pogrubienia i pochylenia tekstu: <syntaxhighlight lang="lua"> return naglowek, Znaczniki, SzablonyStylowe, ZnakiSpecjalne; </syntaxhighlight> Definicje tych zwróconych funkcji, tzn.: {{Code|Znaczniki}} {{Patrz|Znaczniki}}, {{Code|SzablonyStylowe}} {{Patrz|SzablonyStylowe}} i {{Code|ZnakiSpecjalne}} {{Patrz|ZnakiSpecjalne}}, którego opisy raczej przedstawiają ich nazwy, dokładnie one są udokumentowane tutaj: <syntaxhighlight lang="lua"> ---- tekst - tekst do przetworzenia; local function Znaczniki(tekst,jakie,__FUNKCJA1,__FUNKCJA2) ---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML;---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML; ---- funkcja do usuwania znaczników, tzn. w niej inne funkcje: __FUNKCJA1 - funkcja do zakodowywania tekstu przed usuwaniem znaczników, a __FUNKCJA2 - funkcja do odkodowania tego, co pozostało; tekst=p["UsuńZnaczniki"](tekst,jakie,__FUNKCJA1,__FUNKCJA2); return tekst; end; local function SzablonyStylowe(tekst) ---- funkcja do usuwania uruchomionych stylów, tzn. tych: <templatestyles src="..."/>, wtedy to staje się kodem parsera przetwarzanego za pomocą tekstu dla tego typu znacznika, kodami parsera mogą być też inne obiekty jak ramki Lua w Scribunto, ale nie muszą być takie, ale my rozważamy tutaj tylko jeden typ kodu parsera. tekst=p["UsuńSzablonyStylów"](tekst); return tekst; end; local function ZnakiSpecjalne(tekst) ---- funkcja do usuwania cudzysłowów w takich samych ilościach z prawej i z lewej strony danego fragmentu tekstu w nim; tekst=p["UsuńZnakiSpecjalne"](tekst); return tekst; end; </syntaxhighlight> Definicje tych funkcji znajdują się również w module: {{Code|{{ld2|Specjalne}}}}, które również przedstawiają inne funkcje do upraszczania tekstu, w tym nagłówka, ale nie tylko, bo dowolnego tekstu. === {{Śródtytuł|RefPrzypisowy}}{{Code|RefPrzypisowy}} === Mechanizm zamieniający kod referencji na jej wersję wyświetlaną na ekranie, czyli w nawiasie kwadratowym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local RefPrzypisowy=function(obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|obiekt}} {{Patrz|obiekt-ref}} - nazwa typu przypisu, czyli jak bez nazwy, czy też jak: '''uwaga''', * {{Code|kod}} {{Patrz|kod-ref}} - numer danego typu przypisu. Gdy {{LinkPatrz|obiekt-ref}} nie ma nazwy, wtedy w nawiasie kwadratowym będzie tylko numerek {{LinkPatrz|kod-ref}}, a jeśli ma nazwę, to nazwa oddzielona spacją z prawej strony, a po nim jest ten numerek. === Dalsza część funkcji - Tom I === Tutaj opowiemy o części wstępnej tej funkcji. ==== Ustalanie zmiennej nazwy modułu aktualnej, czy bieżącej ==== Funkcja ustawia zmienną: {{Code|czy_kodowanie}} {{Patrz|czy_kodowanie}}, na podstawie istnienia zmiennych: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} i {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. ==== Wyznaczanie nazwy modułu aktualnej, czy bieżącej, dla strony aktualnej, jeśli ona nie istnieje ==== Jeżeli zmienna {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} jest odpowiadającej wartości fdałszywej i mamy strona korzystaną, co określa parametr {{LinkPatrz|czy_artykul_korzystany}}, w postaci wartości prawdziwej, wtedy są liczone kolejne zmienne nazw na podstawie istnienia lub nieistnienia zmiennej {{Code|alternatywna}}, a jeśli ona jest prawdziwa, wtedy wybierane są zmienne z tą aktualną nazwą woluminu wynikłe z {{LinkZobaczTeż|strona_aktualna}}, przeciwnie z nazwą bieżącą woluminu,na podstawie tego, co wyświetla '''Stronicowy Parser''', te nazwy są ze sobą łączone, wtedy powstaje pełna nazwa strony, którą przyrównujemy do {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}}. Jeśli wartość {{LinkPatrz|czy_artykul_korzystany}} jest jednak fałszywa, w takim razie jest liczona {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} na podstawie wartości {{LinkPatrz|nazwa_strony}}. ==== Kodowanie '''HTML''' specjalnych znaków strony ==== Nazwę strony {{LinkPatrz|nazwa_strony}}, w której mogą występować specjalne znaki, które są niezrozumiałe z punktu widzenia '''HTML''', jeżeli np.z nich trzeba zbudować identyfikatory '''id''', a więc trzeba je zakodować, robimy to funkcją: {{Code|{{sr|#p.EncodeId|p=Html}}}}. ==== Zwracanie funkcji liczenia numeru nagłówka ==== Wyznaczamy funkcję: {{Code|HNumer}} {{Patrz|HNumer}}, która jest efektem zwrócenia przez: {{Code|{{sr|#p.LiczonyHNumer|p=StronicowyParser/Potrzebne}}}}. ==== Zamienianie szablonów nagłówków, czy nawet tych znaczników, na rozdziały równaniowe ==== Jeśli {{LinkPatrz|czy_kodowanie}} przyjmuje wartość prawdziwą, wtedy definiujemy funkcję: {{LinkŚródtytuł|SpecjalneWprowadzeniaTekstu}}. Dalej funkcja zamienia szablony: {{s|SpisTreści}} i {{s|HNumer}}, a także znaczniki: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, na ich wersję równaniową, aby dało się je rozpoznać jako rozdziały i było je łatwo wsadzić do szablonu takiego jak: {{s|Spis treści}} i inne podobne, za pomocą dwóch kolejnych funkcji wsadzonych do pewnej funkcji modułu {{m|Szablonowe}}, która służy do operacji na takich przypadkach. === Zmienna strony z nagłówkaami === Gdy jest podana zmienna: {{Code|tylko_naglowek}} {{LinkPatrz|tylko_naglowek}}, ma wartość prawdziwą, wtedy zmienna: {{Code|nazwa_strony_z_naglowkami}} {{Patrz|nazwa_strony_z_naglowkami}}, przybiera wartość pustą, przeciwnie gdy zmienna {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}} jest ciągiem pusty, wtedy to samo, w innym pozostałym przypadku jest to dokładnie {{LinkPatrz|nazwa_strony}}, gdzie przed nim znajduje się dwukropek {{Code|:}}. === Dalsza część funkcji - Tom II === Tu powiemy coś o iteratorze, który po zebraniu danych zwraca zmienną {{Code|nil}}, co odpowiada dla pętli, jej przerwaniu. ==== Definicja iteratora zbierania informacji o stronie ==== Aby uruchomić pętle na rzeczywistych danych zakodowanej, czy nie, stronie, trzeba otrzymać zmienną pętli {{Code|iterator}} {{Patrz|iterator}} i go wywoływać bezparametrowo w każdym okrążeniu pętli, aby tak się stało, to trzeba uruchomić funkcję: {{Code|{{sr|#p.IterTekst|p=StronicowyParser/Rozdziały}}}}, na tekście {{LinkPatrz|tekst_artykulu}}, traktując tekst, jakby nie był taki zakodowany, bo tutaj jedynie się liczą elementy niezakodowane, czyli w tym przypadku nagłówki z tekstem rozdziału. ==== Zbieranie informacji o stronie w pętli generowanej przez iterator ==== Będziemy tutaj opisywali pętlę generowaną przez jego iterator {{LinkPatrz|iterator}}. W każdym okrązeniu pętli otrzymujemy dane: * {{Code|naglowek_tab}} {{Patrz|naglowek_tab}} - gdzie pierwszy jego element to {{Code|naglowek}} {{LinkPatrz|naglowek}}, * {{Code|text_rozdzialu}} {{Patrz|text_rozdzialu}} - tekst rozdziału, * {{Code|poziom_rozdzialu}} {{Patrz|poziom_rozdzialu}} - poziom rozdziału. ===== Definicja nowe wartości zbierania uchwytów nagłówka w zmiennej numeracji ===== Deklaracja zmiennej {{Code|numeracja}} {{LinkPatrz|numeracja}} jest na zewnętrz pętli, w niej tworzymy jej nową wartość, którą jest tablica pusta. ==== Uzyskiwanie informacji z tekstu rozdziału nagłówka, i jego możliwych uchwytach, w poszczegolnym okrążeniu pętli, i zrzuceniu tam pojedynczego kodu problemu ==== Jeżeli {{ZobaczTeż|text_rozdzialu}} tekst strony jest zakodowany, to iterujemy po tekście {{LinkPatrz|text_rozdzialu}} w poszukiwaniu kodów bazy kodów zakodowanego tekstu, w tym celu wywołujemy pętlę: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, wtedy uzyskujemy trzy obiekty w każdym przebiegu pętli, tzn. {{Code|szablon}} {{LinkPatrz|szablon}}, {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, za pomocę tego uruchamiamy funkcję: {{LinkŚródtytuł|SzablonNaglowkujWTekscieRozdzialu}}. Jeżeli funkcja napotkała uchwyt szablonu: {{Code|{{s|Śródtytuł}}}}, wtedy jest zatrzymywana, w takim razie mamy informację o wystąpieniu niedozwolonego szablonu nagłówka w tekście. A jeżeli takiego szablonu tam nie ma, to układ iterator {{LinkPatrz|iterator}} iteruje aż do zakończenia danych. ==== Uzyskiwanie nagłówka i do niego identyfikatora '''id''' ==== ===== Tekst niezakodowany nagłówka ===== Gdy tekst nie jest zakodowany, wtedy zmienna: {{LinkPatrz|czy_kodowanie}}, ma wartość odpowiaadające fałszywej, wtedy dla tego nagłówka {{LinkPatrz|naglowek}} jest uruchamiana funkcja: {{Code|{{sr|#p.["PrzetwórzNagłówek"]|p=Specjalne}}}}, wtedy otrzymujemy dwie wartości: {{Code|nazwa_rozdzialu_w_artykule}} {{Patrz|nazwa_rozdzialu_w_artykule}} - zmienna idententyfikatora, {{Code|naglowek}} {{LinkPatrz|naglowek}} - zmienna nagłówka. Te dwie zmienne zostały maksymalnie rozwinięte, zostały przystosowane do tego, aby słuzyły do tego, co trzego zostały stworzone. ===== Tekst zakodowany nagłówka ===== Gdy jednak {{LinkPatrz|czy_kodowanie}} przyjełajednak wartość fałszywą, wtedy jest uruchamiana funkcja: {{LinkŚródtytuł|SzablonyWywolywaneOgolny}}, z której otrzymujemy: {{Code|naglowek}} {{LinkPatrz|naglowek}} - zmienna przetworzonego i maksymalnie rozwiniętego nagłówka, oraz zmienne funkcje: {{LinkPatrz|Znaczniki}}, {{LinkPatrz|SzablonyStylowe}} i {{LinkPatrz|ZnakiSpecjalne}}. Na podstawie defiicji: {{Code|nazwa_rozdzialu_w_artykule}} {{LinkPatrz|nazwa_rozdzialu_w_artykule}}, mamy: {{Code|naglowek}} {{LinkPatrz|naglowek}}. ====== Kompletowanie nagłówka ====== Ten nagłówek kompletujemy funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, usuwając szablony indeksowania {{LinkPatrz|p.szablony_indeksowania}}, a także znaczniki: {{Tag|li}}, {{Tag|ul}} i {{Tag|ol}}. ====== Kompletowanie identyfikatora nagłówka ====== Kompletując: {{Code|nazwa_rozdzialu_w_artykule}} {{LinkPatrz|nazwa_rozdzialu_w_artykule}}, rozwijamy wszystko, oprócz atrybutów, {{Code|obiekt}} {{Code|{{=}}}} {{Code|ATRYBUTY}}, a na szablonach wywołujemy funkcję: {{LinkŚródtytuł|SzablonyWywolywaneOgolny}}. Na identyfikatorze nagłówka {{LinkPatrz|nazwa_rozdzialu_w_artykule}} Wywołujemy kolejno lokalne funkcje: {{LinkPatrz|SzablonyStylowe}} - do usuwania rozwiniętych kodów stylów, {{LinkPatrz|ZnakiSpecjalne}} - do usuwania cudzysłowów, i {{LinkPatrz|Znaczniki}} - do usuwania znaczzników. ====== Gdy w kodzie identyfikatora nie ma symbolicznych szablonów ====== W tym przypadku uruchamiamy fukcję do dekodowania znaków '''HTML''', tzn. dziesiętnych, szesnastkowych i literowych, funkcją: {{Code|{{sr|#p.DecodeKoduHTMLZnaku|p=Html}}}}, a później kodujemy specjalne znaki identyfikatora sposobem: {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, przy pomocy kodów '''HTML''' dziesiętnych. ===== Usuwanie zbędnych znaków w identyfikatorze ===== Usuwane są potrójne i podwójne cudzysłowy {{Code|'}} oraz odstępy i dolne myślniki na końcach łańcucha, a wewnętrz jego kolejne je są zastępowane jedną spacją. ===== Referencje i wzory matematyczne ===== Referencje są zastępowane odpowiednio przy pomocy funkcji: {{LinkŚródtytuł|RefPrzypisowy}}, a wzory matematyczne, dla obiektów typu {{Code|POSTMATH}} {{Patrz|POSTMATH}}, które są zastępowane prawidłowo poprzez: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.text.encode|b=tak}}}}, przy pomocy: {{Code|{{sr|#p.NormaKoduZakodowanegoHtmlTekstu|p=Szablonowe}}}}, obiektem: {{Code|postMath}} {{Patrz|postMath}} z ośmioma znakami cyferkami na końcu tego, którym jest {{Code|kod}} {{LinkPatrz|kod}}. ===== Wstępne przygotowanie identyfikatora do końcowego skutecznego użytku ===== Dla danego identyfikatora one mogą się powtarzać, a identyfikator musi być unikalny, zatem trzeba napisać ich dodatkowe numerki, po policzeniu otrzymamy {{Code|numer_tego_samego_naglowka}} {{Patrz|numer_tego_samego_naglowka}}. ====== Tablica identyfikatora i nagłówka ====== Dla {{LinkPatrz|numer_tego_samego_naglowka}} równego {{Code|1}}, tworzemy tablicę,którego pierwszym elementem jest: {{LinkPatrz|nazwa_rozdzialu_w_artykule}}, a drugim nagłówek {{LinkPatrz|naglowek}}, a w przypadku tego numerku innego niż podana liczba, to dajemy do identyfikatora na końcu ten numerek po dolnym myślniku. ====== Uzupełnianie zmiennej do identyfikacji uchwytu z odpowiednim nagłówkiem ====== Jeśli: {{LinkPatrz|obiekty}} i {{LinkPatrz|numeracja}}, istnieją, wtedy do tej pierwszej tablicy dodawane są wszystkie elementy o takim samym typie z {{LinkPatrz|numeracja}}. To dodawanie na końcu tablicy przedstawia się: <syntaxhighlight lang="lua"> for _,value_numeracja in ipairs(numeracja)do obiekty[#obiekty+1]={value_numeracja,{nazwa_strony_z_naglowkami,elementy_linku[1], elementy_linku[2]}}; end; </syntaxhighlight> ====== Tworzenie tablicy nagłówkami i indetyfikatorami ====== Jeśli {{Code|poziom_rozdzialu}} jest większy od zera, tzn. {{Code|> 0}}, wtedy liczymy numer rozdziału przy pomocy funkcji: {{Code|HNumer}} {{LinkPatrz|HNumer}} liczony z: {{Code|poziom_rozdzialu}} {{LinkPatrz|poziom_rozdzialu}}, tworząc w ten sposób wynik w postaci zmiennej {{Code|numer_rozdzialu_ustalony}} {{Patrz|numer_rozdzialu_ustalony}}. Jest tworzona tablica spisu: {{Code|tablica_spisu_tresci}} {{Patrz|tablica_spisu_tresci}}, jako pusta tablica, z później dodanym elementem o kluczu: {{Code|nazwa_strony}}, którym jest o wartości: {{LinkPatrz|nazwa_strony_z_naglowkami}}. Do tablicy: {{LinkPatrz|tablica_spisu_tresci}}, dodawane są elementy według schematu: <syntaxhighlight lang="lua"> tablica_spisu_tresci[#tablica_spisu_tresci+1]={elementy_linku,numer_rozdzialu_ustalony}; </syntaxhighlight> === Dalsza część funkcji - Tom III === Będziemy się tutaj zajmowali z tekstem przed pierwszym rozdziałem na stronie. ==== Nagłówek na samym początku strony ==== Gdy kodowanie jest jednak włączone, tzn.: {{LinkPatrz|czy_kodowanie}}, jest prawdziwe, i mamy artykuł korzystany, tzn.: {{LinkPatrz|czy_artykul_korzystany}}, i zaprzeczenie wyłowania funkcji: {{LinkPatrz|CzyJestTakiProblemJakoElementTablicy}}, przyjmuje wartość prawdziwą, to jeśli na samym początku znajduje się rozdział, wtedy funkcja zwraca wynik: {{LinkPatrz|tablica_spisu_tresci}}. ==== Tekst przed pierwszym rozdziałem ==== Wyznaczamy ten tekst, który będzie ukrywał się pod zmienną: {{Code|tekst_zerowy}} {{Patrz|tekst_zerowy}}. ===== Szablony nagłówka w tekście zerowym ===== W tym tekście iterujemy jak w punkcie: {{LinkZobaczTeż|text_rozdzialu}}, tylko zamiast {{LinkPatrz|text_rozdzialu}} jest {{LinkPatrz|tekst_zerowy}}. === Dalsza część funkcji - Tom IV === Zwracaną wartością tej funkcji jest: {{Code|tablica_spisu_tresci}} {{LinkPatrz|tablica_spisu_tresci}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 6etoezror9zaqqjsc7iz05jn43g2idk 548358 548357 2026-07-26T12:42:35Z Persino 2851 /* Tekst przed pierwszym rozdziałem */ 548358 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}|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.PobieranieInformacjiRamkiRozpatrywanejStrony}}{{Code|p.PobieranieInformacjiRamkiRozpatrywanejStrony}} == Pobieranie danych z obiektu {{LinkPatrz|self}}, biorąc jego podtablicę o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiRamkiRozpatrywanejStrony(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa ramki tablicy transportu. == {{Śródtytuł|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}}{{Code|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}} == Funkcja uruchamiacz, główna funkcja dzięki, której ładują się informacje według modułu: {{Code|{{ld2|StronicowyParser/informacje}}}} (tam jest użyty). Ten ładowacz jest pokazany w module opis: {{Code|{{lr2|Moduły/StronicowyParser/informacje}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}. === {{Śródtytuł|DaneNazw}}{{Code|DaneNazw}} === Funkcja licząca nazwy podanej nazwy strony, tzn.: {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} {{Patrz|nazwa_artykulu}}, oraz zwracające te kolejno nazwy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function DaneNazw(pelna_nazwa_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|pelna_nazwa_strony}} {{Patrz|pelna_nazwa_strony}} - pełna nazwa strony. === Dalsza część funkcji - Tom I === ==== Tworzenie i inicjowanie początkowych tabel ==== Funkcja tworzy podtabele tabeli zmiennej obiektowej {{LinkPatrz|self}} o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, o wartości pustej. Następnie są tworzone podtabele puste w tej ostatniej o kluczach: {{Code|dane_analizy_stron}} {{Patrz|dane_analizy_stron}} i {{Code|licencja}}{{Patrz|licencja}}, oraz nilowe zmienne z tego samego, co ostatnie, o kluczu: {{Code|problemy}} {{Patrz|problemy}}. ==== Zmienne nazw strony bieżącej, czy nawet aktualnej, w zależności, czy istnieją odpowiednie ustawienia ==== Jest liczony adres strony, na której jest uruchomiona dana strona, wewnętrznej bezparametrowo według: {{Code|{{sr|#p["PełnaNazwaArtykułu"]|p=Książkowe}}}} {{Patrz|strona_aktualna}}, co z tego są liczone z niego: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, co z tego jest liczona pełna nazwa książki {{Code|pelna_nazwa_ksiazki}} {{Patrz|pelna_nazwa_ksiazki}}. ==== Zbieranie danych ustawień z: {{Code|.../config}}, jeśli istnieją ==== Jest liczony pełny adres ustawień: {{Code|pelna_nazwa_ksiazki_ustawienia}} {{Patrz|pelna_nazwa_ksiazki_ustawienia}}, według schematu: {{Code|"Szablon:Podręcznik/Ustawienia/"..pelna_nazwa_ksiazki}} {{Patrz|UstawieniaKsiążki}}. Co z tego jest sprawdzane, czy istnieje strona: {{Code|pelna_nazwa_ksiazki_ustawienia.."/config"}} {{Patrz|config}}, a jeśli tak, to wtedy wiemy, że to jest szablon, to go przedstawiamy w postaci szablonowej, licząc z: {{Code|{{sr|#p.NazwaSzablonu|p=Szablonowe}}}}. Dalej jest liczony ostatni wyliczony szablon z parametrem {{Code|książka}} {{Patrz|książka}}, dalej jeszcze raz, tym razem z parametrem: {{Code|artykuł}} {{Patrz|artykuł}} - te parametry przedstawiają parametry artykułu książkowego, skąd możemy ściągać stronę, by ją wyświetlić na stronie aktualnej, na pewno parametr {{LinkPatrz|książka}} nie może być parametrem składających z samych znaków odstępów, a jeśli tak jest, w takim razie z tych dwóch parametrów jest liczony parametr {{Code|strona}} {{Patrz|strona}}. Dalej liczymy, czy ona jest poprawnym adresem, używając funkcji: {{Code|{{sr|#p["CzyNiepoprawnaNazwa"]|p=Pudełko/Tom I}}}}. A jeżeli adres jest jednak poprawny, ta funkcja zwraca wartość odpowiadającej fałszywej wartości, wtedy jest liczony pełny adres strony, jeżeli ona jest względna z parametrów, tzn. parametr pierwszy: {{LinkPatrz|strona}}, i parametr drugi: {{LinkPatrz|strona_aktualna}}, co względem tej funkcji mamy już: {{LinkPatrz|strona}}, czyli po tej operacji (procedurze) policzyliśmy bezwzględny jego adres. ===== Liczenie nazw z parametru pełnej nazwy aktualnej, nie bieżącej, strony wynikłe z obliczeń z ustawień ===== Policzona wartość strony: {{LinkPatrz|strona}}, jest sprawdzana, czy adres (strona), pod którym ona się kryje, istnieje, a jeśli tak, to ten adres jest tylko formatowany. Porównujemy adres {{LinkPatrz|strona}} z {{LinkPatrz|strona_aktualna}}, czy przedstawiają nie ten sam adres, a jeżeli tak, to liczymy wszyskie nazwy strony, czyli dla bez {{Code|aktualna_}}, przyrównujemy do tego z tym początkiem, co odpowiada pełnej nazwie strony z {{Code|strona_aktualna}} {{LinkPatrz|strona_aktualna}} {{ZobaczTeż|strona_aktualna}}, i używając funkcji: {{LinkŚródtytuł|DaneNazw}}, ze zmiennej: {{Code|strona}} {{LinkPatrz|strona}} {{ZobaczTeż|strona}}. Te ostatnie nazwy są potrzebne do analizy strony bieżącej, nie aktualnej, tzn. na niej, jakie są szablony, jakie posiada spisy, jakie książki, a w nim spisy do nich, są dołączone. ====== Policzone nazwy strony aktualnej wpisane do ogólnej tablicy ====== A póżniej z adresów pliczonych wywołania, dotyczącej tego aktualnego, liczymy dla podtabeli: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienne o kluczach: {{Code|aktualna_nazwa_przestrzeni}} {{Patrz|aktualna_nazwa_przestrzeni}}, {{Code|aktualna_nazwa_przestrzeni_ksiazki}} {{Patrz|aktualna_nazwa_przestrzeni_ksiazki}}, {{Code|aktualna_nazwa_ksiazki}} {{Patrz|aktualna_nazwa_ksiazki}} i {{Code|aktualna_nazwa_artykulu}} {{Patrz|aktualna_nazwa_artykulu}}, mając zmienne nazw policzone z tego aktualnego. ===== Czy strona bieżąca, ale nie zbiorcza, jest wyświetlana na stronie aktualnej, czy może jest tylko stroną zbiorczą uruchomioną pod inną nazwą ===== Jeśli zmienne nazw są policzone z: {{LinkZobaczTeż|strona}} i {{LinkZobaczTeż|strona_aktualna}}, to wtedy kolejno porównujemy, czy któraś z nich jest nierówna, a jeśli tak, to wywołujemy szablon z parametru: {{Code|zastępcza}} {{ZobaczTeż|zastępcza}} - jest to, czy strona jest zbiorcza, o nazwie: {{LinkPatrz|config}}, czy powinna być wartością niepustą. A jak tak, to wyznaczamy z tablicy: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienną o kluczu: {{Code|alternatywna}} {{Patrz|alternatywna}}, co przyrównujemy jemu wartość logiczną z uzyskanego z szablonu z parametrem {{LinkZobaczTeż|zastępcza}}, a jeżeli ta zmienna przyjmuje wartość odpowiadająca fałszywej, wtedy zmienna z tej samej tablicy o kluczu: {{Code|inna_strona_aktualna_niz_biezaca}} {{Patrz|inna_strona_aktualna_niz_biezaca}} - jest to, czy strona jest inna niż zbiorcza, ale wyświetlana na innej stronie, przyjmuje wartość prawdziwą. === Dalsza część funkcji - Tom II === Tworzymy zmienną: {{Code|tablica_zmiennych}}, która jest tablicą pustą, którą uzupełniamy o elementy o kluczach: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}} - są to dane zebrane z bieżącej strony, i {{Code|linkobiekt}} {{Patrz|linkobiekt}} - są to dane zebrane o linkach na stronie odpowiadających poszczególnym obiektom. Uruchamiamy funkcję: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}, z której wyznaczamy parametr: {{Code|tabela_listy_danych_analizy_ksiazki}} - są to dane zebrane z bieżącej i innych stron skojarzonej z nim, te elementy są tylko w postaci nieprzetworzonej, ale przygotowanej. A jeśli ten parametr jest tabelką - a jeżeli nie jest, to nastąpił błąd przetwarzania, i funkcja nie idzie dalej w instrukcję warunkową, wtedy wywołujemy funkcję: {{Code|{{sr|#p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony|p=StronicowyParser/NumeracjaObiektówStron}}}}. === Dalsza część funkcji - Tom III === Na sam koniec funkcji zwracamy tablicę: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}} - ta zmienna zawiera dane w postaci przetworzonej policzonej, tzn. uchwytom są przydzielone numeracje, sprawdzane, czy uchwyty są policzone, są wyznaczone wszystkie kody problemów, które później są potrzebne do wyznaczania wszystkich kategorii błędów na stronie. == {{Śródtytuł|p.SpisRzeczyWedlePodanegoTekstu}}{{Code|p.SpisRzeczyWedlePodanegoTekstu}} == Funkcja generowania liczenia nagłówków strony, co na tej podstawie może być generowany '''spis treści''' strony. Funkcja przyporządkowuje uchwytom szablonów nagłówków ich identyfikatory i te nagłówki, w którym one leżą, jeżeli zmienna {{LinkPatrz|obiekty}} istnieje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SpisRzeczyWedlePodanegoTekstu(self,tekst_artykulu,nazwa_strony,czy_artykul_korzystany, tylko_naglowek,obiekty,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_obiektow_strony_danych_kodow_specjalnych_modul,KtorySzablonMaZwracacKategorie,wzory_zamiast_kodow,tabela_elementow_strony_kodow)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}} - tekst przetworzony, przygotowany ewentualnie przez pewną funkcję, rozważanego artykułu, * {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} - nazwa strony, danego spisu, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy strona jest bieżąca, * {{Code|tylko_naglowek}} {{Patrz|tylko_naglowek}} - pisz adresy stron z tylko nagłówkami '''#''', bez adresów stron, * {{Code|obiekty}} {{Patrz|obiekty}} - elementy tam zebrane, są wykorzystywane do analizy nagłówków poprzez szablon {{s|Śródtytuł}}, któremu temu nagłówkowi odpowjada pewien uchwyt, czy uchwyty, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}, * {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} - nazwa aktualna, czy bieżąca strony, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy zebranych informacji w postaci zakodowanej modułu {{m|Szablonowe}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tabela przeanalizowanych elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} {{Patrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} - tablica dwuwymiarowa kodów o kluczach: szablonów referencji: '''REF...''' i '''POSTMATH''' oraz ich elementu numeru kodu {{Code|kod}}, którego elementem jest kod tego elementu, * {{Code|KtorySzablonMaZwracacKategorie}} {{Patrz|KtorySzablonMaZwracacKategorie}} - tabela składająca się z trzech elementów, którego pierwszy element to: {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{Patrz|KtorySzablonMaZwracacKategorieNaglowek}} - funkcja dla szablonów problemów dla jak: {{s|Śródtytuł}}, w nagłówku, drugi: {{Code|KtorySzablonMaZwracacKategorieTekst}} {{Patrz|KtorySzablonMaZwracacKategorieTekst}} - funkcja dla tego typu szablonów, ale dla nich w tekście, nie w nagłówku, trzeci: {{Code|CzyJestTakiProblemJakoElementTablicy}} {{Patrz|CzyJestTakiProblemJakoElementTablicy}} - czy nie rozważać, dla rozdziałów zerowych, przeciwnie: ta funkcja może przyjmować wartość {{Code|nil}}, wartość zwracana tego elementu, bo to jest funkcja, zależy, czy jest ustawiony kod problemu: {{Code|nagłówek w tekście rozdziału w stronie korzystanej}} {{Patrz|nagłówek w tekście rozdziału w stronie korzystanej}}, a jeżeli jest taki, to ta funkcja przyjmuje zrzuconą wartość {{Code|true}}, * {{Code|wzory_zamiast_kodow}} {{Patrz|wzory_zamiast_kodow}} - rozważaj wzory według tablicy: {{LinkPatrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}}, lub koduj to według funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}} - to wykorzystuj w przypadku, gdy: {{LinkPatrz|nazwa_strony}}, istnieje, i jest wartością pustą, lub {{Code|{{sr|#p.NormaKoduZakodowanegoWikiTekstu|p=Szablonowe}}}} - przeciwnie, * {{Code|tabela_elementow_strony_kodow}} {{Patrz|tabela_elementow_strony_kodow}} - baza tabela z zapamiętanymi podtabelami, którego poszczególne elementy wykorzystywane w spisie posiadają w sobie tylko pierwszy element w postaci przetworzonego uchwytu, bo używamy tylko uchwytów szablonów nagłówków. === {{Śródtytuł|SpecjalneWprowadzeniaTekstu}}{{Code|SpecjalneWprowadzeniaTekstu}} === Funkcja zamieniające pewne szablony, czy znaczniki, na rozdziały równaniowe. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local SpecjalneWprowadzeniaTekstu=function(szablon,obiekt,kod,czy_szablon,czy_znacznik,czy_liczyc,funkcja1,funkcja2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} {{Patrz|szablon}} - zmienna (szablon), nie musi być to normalny szablon, * {{Code|obiekt}} {{Patrz|obiekt}} - zmienna, którego typu jest obiekt, * {{Code|kod}} {{Patrz|kod}} - numer obiektu typu {{LinkPatrz|obiekt}}, * {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy to jest szablon, * {{Code|czy_znacznik}} {{Patrz|czy_znacznik}} - czy to jest znacznik, * {{Code|czy_liczyc}} {{Patrz|czy_liczyc}} - czy funkcję liczyć w sposób złożony, szablony typu: {{s|SpisTreści}} - zamieniający go na znacznik, czy prosty, co na samym końcu uruchamiana jest funkcja: {{LinkPatrz|funkcja1}}, * {{Code|funkcja1}} {{Patrz|funkcja1}} - funkcja operująca na wygenerowanym pośrednio (dłuższe liczenie) lub bezpośrednio (krótsze) znaczniku, wychodząca z szablonu, i zamieniająca go na rozdział równaniowy, funkcja operująca dla szablonów: {{s|SpisTreści}} lub {{s|HNumer}}, * {{Code|funkcja2}} {{Patrz|funkcja2}} - funkcja operująca na znaczniku '''HTML''' nagłówka - typu jak: {{Tag|h1}}, i zamieniająca go na rozdział równaniowy. ==== {{Śródtytuł|ParametrNR}}{{Code|ParametrNR}} ==== Funkcja liczy dokładnie parametr dany o danym numerze, zbiór danych parametrów oznaczających to samo może być wiele, tylko że jedne mogą być ważniejsze od drugich. Definicja skrótowa funkcja: <syntaxhighlight lang="lua"> local function ParametrNR(numer)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer}} {{Patrz|numer}} - numer parametru. Funkcja wykorzystywuje funkcję do uruchomienia: {{Code|{{sr|#p.SpisRzeczySzablon|p=StronicowyParser/Potrzebne}}}}, do generowania parametrów, a właściwie ich wartości. ==== {{Śródtytuł|ObiektKodNumer}}{{Code|ObiektKodNumer}} ==== Funkcja dodająca do bazy danych kolejny element bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla danego obiektu element na samym końcu, po maksymalnym elemencie do niego. Funkcja liczy kod przy pomocy funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local ObiektKodNumer=function(szablon,obiekt)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}. ==== Dalszy opis funkcji ==== Dla {{LinkPatrz|czy_szablon}} prawdziwego dla szablonów sztucznego spisu treści, sprawdzanego przez tabelkę: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, dla danego szablonowego rozdziału generowanego według {{s|HNumer}}, jest on zamieniany na rozdział równaniowy poprzez funkcję: {{LinkPatrz|funkcja1}}. Ta tabela przedstawia się treścią: <syntaxhighlight lang="lua"> p.szablony_sztucznego_wprowadzenia_tekstu={ ["HNumer"]=1, }; </syntaxhighlight> Dla innych rozdziałów szablonowych, tym razem generowanego przez szablon {{s|SpisTreści}}, którego parametry są wyznaczane przez funkcję: {{LinkŚródtytuł|ParametrNR}}, tabelka parametrów opisująca to: <syntaxhighlight lang="lua"> p.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu={ ["SpisTreści"]={{"artykuł",1,},{"książka",2,},{"nazwa",3,},{"dodatek",4,},{"poziom",},}, }; </syntaxhighlight> Funkcja liczy artykuł, koloruje do niego link w: '''spisie treści''', na czerwona, wtedy generuje dodatkowy znacznik, z właściwością: {{Code|color:red}}, gdy on nie istnieje, i to wstawia do tabeli bazy, lub bez niego, wtedy bezposrednio generuje tekst równy nazwie tego szablonu, opakowany, lub nie, w zależności od istnienia. Do policzenia strony, czy ona istnieje, musi być przedtem zdekodowany funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, by później policzyć to sprawdzenie przy pomocy: {{Code|{{sr|#p.PoliczZbiory|p=Techniczne}}}}. W każdym bądź razie jest ruchumianiana funkcja: {{LinkPatrz|funkcja1}}. Gdy to nie jest szablon, tzn.: {{LinkPatrz|czy_szablon}}, jest fałszywe, ale {{LinkPatrz|czy_znacznik}} jest prawdziwe, to takie znaczniki, jak od: {{Tag|h1}} do {{Tag|h6}}, są zamieniane na czysty tekst. W takim razie wywoływana jest dla tego przypadku funkcja: {{LinkPatrz|funkcja2}}. Funkcja: {{LinkPatrz|funkcja1}}, jest dla szablonów nagłówków, a: {{LinkPatrz|funkcja2}}, dla znaczników nagłówków. Z tych generowanych czystych generowanych tekstów są tworzone w tekście rozdziały równaniowe, by później wygenerować '''spis treści''', właśnie z nimi - z tymi nagłówkami, a bardziej ściśle linkami do nich. === {{Śródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}{{Code|SzablonNaglowkujWNaglowkuRozdzialu}} === Fukcja do obsługi nagłówków {{LinkPatrz|Śródtytuł}} w nagłówku, nie w tekście poza nim. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWNaglowkuRozdzialu(szablon,obiekt,kod,powtorka,parametry_wywolania_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}, * {{Code|powtorka}} {{Patrz|powtorka}} - numer użycia takiego samego szablonu typu {{s|Śródtytuł}} {{Patrz|Śródtytuł}}, * {{Code|parametry_wywolania_szablonu}} {{Patrz|parametry_wywolania_szablonu}} - parametry szablonu wraz z ich wartościami, * {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} - nazwa szablonu wywołania, * {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} - modyfikatory szablonu. Funkcja sprawdza, czy szablon w nagłówku jest typu {{LinkPatrz|Śródtytuł}}, a jeżeli tak, to liczy jego uchwyt, najpierw wyznacza je z parametru o nazwie {{Code|uchwyt}} {{Patrz|uchwyt}}, dalej sprawdzane jest, czy taki uchwyt tak zdefiniowany istnieje, jeśli tak, to wydobywana jest jego przetworzona tabela z tym właśnie uchwytek, funkcja robi to względem numeru {{Code|kod}} {{LinkPatrz|kod}} tego szablonu na podstawie funkcji: {{Code|{{sr|#p.WydobywanieUchwytuZeiBezNumeracji|p=StronicowyParser/ZbieranieDanychStron}}}}. Jeżeli wydobyta tabela {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} nie istnieje, w takim razie jest ona dekodowana funkcją: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, a później jest traktowana jako adres '''URL''', tzn. jest dekodowana funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, dalej jest tworzona tabela pusta: {{LinkPatrz|lista_dwuelementowa}}, co dalej jest tam wstawiana do niej jako pierwszy element uzyskany uchwyt przetworzony. A jeśli jednak {{LinkPatrz|lista_dwuelementowa}} została wydobyta z naszej funkcji tabela, która istnieje, wtedy funkcja idzie, niż poprzednio, w inny krok instrukcji warunkowej, wtedy z tej tabeli jest wydobywany pierwszy element jako przetworzony wcześniej uchwyt. Gdy {{ZobaczTeż|uchwyt}} przetworzony uchwyt jest łańcuchem znaków niepusty, wtedy on jest dodawany w postaci tabeli, w której jest ten uchwyt, na sam koniec tabeli {{Code|numeracja}} {{Patrz|numeracja}}. Gdy liczba powtórzeń jest większa niż zero, wtedy jest wywoływana funkcja, przy którym mają być zwrócone kategorie, jeśli zostaną użyte, o nazwie {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}}. Gdy jednak uchwyt uzyskany nie istnieje, to wtedy jest to samo robione, co w: {{LinkZobaczTeż|uchwyt}}. Przed zwróceniem ile razy została dokonana powtórka, jest powiększany licznik powtorek, i to jest otrzymywane z tej funkcji. === {{Śródtytuł|SzablonNaglowkujWTekscieRozdzialu}}{{Code|SzablonNaglowkujWTekscieRozdzialu}} === Funkcja do analizy szablonów nagłówków w tekście rozdziału, nie w nagłówku. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWTekscieRozdzialu(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja sprawdza, czy tekst w bazie kodów jest typu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, w takim razie po wykryciu, że dla tego, że jest to wywołanie szablonowe, a nie instrukcja warukowa w wikikodzie w tekście, wtedy podobnie jest robione, co w funkcji: {{LinkŚródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}, tylko zamiast {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}} jest {{Code|KtorySzablonMaZwracacKategorieTekst}} {{LinkPatrz|KtorySzablonMaZwracacKategorieTekst}}. Przy wykryciu tam szablonu typu {{LinkPatrz|Śródtytuł}}, funkcja zawsze zwraca wartość {{Code|true}}, w innych przypadkach {{Code|false}}. W przypadku intrukcji warunkowej w wikikodzie i dla ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jest wtedy zwracana wartość {{Code|false}}. Funkcja w pozostałych przypadkach zwraca wartość logiczną {{Code|false}}. === {{Śródtytuł|SzablonyWywolywane}}{{Code|SzablonyWywolywane}} === Szablon zamieniający specjalne znaki szablonów, tzn.: {{Code|{{((}}}}, {{Code|{{))}}}}, {{Code|{{!}}}} i {{Code|{{=}}}}, kolejno na: {{Code|{{s|((}}}}, {{Code|{{s|))}}}}, {{Code|{{s|!}}}} i {{Code|{{s|{{=}}}}}}, takich {{ZobaczTeż|StronicowyParser}}, które zawierają wywołania '''Stronicowego Parsera''', czyli ramki typu: {{Code|{{m|StronicowyParser}}}}, czy: {{Code|{{m|StronicowyParser/}}}}, a inne są po prostu przypisywane. W przypadku linków, i nie tylko, tzn. dla szablonów {{LinkZobaczTeż|StronicowyParser}}, z innych stron niż korzystana, co jest trafnie oznaczone zaprzeczeniem parametru {{LinkPatrz|czy_artykul_korzystany}} są liczone parametry pudełkowe {{Code|{{m|Pudełko}}}}. Strony wskazane przez te parametry są analizowane, przy czym linki są przez inną funkcję, a inne już przez znów inną. Szablony nagłówków typu {{LinkPatrz|Śródtytuł}}, czy szablonów stronicowych otwierających i zamykających, one lub jego koledzy, tzn. ich: {{s|StronaStart}} i {{s|StronaKoniec}}, są zastępowane ciągiem pustym. Inne parametry opisane z tabeli {{Code|{{sr|#p.szablony_stronicowe_kontenerowe_formatowania_wzorowego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, są zastępowane ich zawartością, by uniknąć kontaktu nagłówków z tego typu szablonami. Szablony ideksowania określone tabelą: {{Code|{{sr|#p.szablony_indeksowania}}}} {{Patrz|p.szablony_indeksowania}}, nie są rozwijana z kodowania lub są, w zależności, czy zmienna: {{Code|czy_indeksowanie}} {{Patrz|czy_indeksowanie}}, ma wartość {{Code|true}} - tutaj są, czy odpowiadającej fałszywej wartości logicznej - a tutaj już nie. W przypadku instrukcji warunkowych, czy ramek {{lpg|Lua}} w {{lpg|Lua|Scribunto}}, one są rozwijane - kod tego jest zawartością {{LinkPatrz|szablon}}. W innych przypadkach funkcja zwraca wartość {{Code|nil}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywane(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. W powyższym opisie występują szablony opisane w: {{LinkPatrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, a jej definicja jest: <syntaxhighlight lang="lua"> p.szablony_stronicowe_kontenerowe_formatowania_wzorowego={ ["Formuła"]=1; }; </syntaxhighlight> Jest to szablon: {{s|Formuła}} i podobne, liniowe wstawiane do tekstu, ta tabela ma za zadanie zastąpić te szablony ich poszczególnym zawartościom, a ta funkcja, która ją wykorzystywuje się do tego przypadku, jest o nazwie: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}. Tabelą szablonów indeksowania, to są one zdefiniowane przez: {{LinkPatrz|p.szablony_indeksowania}}, a jej zawartość: <syntaxhighlight lang="lua"> p.szablony_indeksowania={ ["Kotwica"] =true, ["Indeksuj"]=true, }; </syntaxhighlight> Są to szablony kotwic: {{s|Kotwica}}, który jest szablonem liniowym, a {{s|Indeksuj}}, natomiast to blokowy. === {{Śródtytuł|SzablonyWywolywaneOgolny}}{{Code|SzablonyWywolywaneOgolny}} === Funkcja rozwija nagłówek, wydzielając z niego zwykły tekst, nie dopełniając pewnych operacji. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywaneOgolny(naglowek)...end; </syntaxhighlight> Parametry funkcji: * {{Code|naglowek}} {{Patrz|naglowek}} - tekst nagłówka napisu wprowadzenia tekstu. Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["WydzielZwykłyTekst"]|p=Specjalne}}}}, kod jej wywoływany jest z parametrami: <syntaxhighlight lang="lua"> local naglowek,Znaczniki,SzablonyStylowe,ZnakiSpecjalne=specjalne_modul["WydzielZwykłyTekst"]( { ---- tekst nagłówka; tekst=naglowek, ---- Nie wykorzystywuj w działaniu funkcji: Znaczniki, SzablonyStylowe, ZnakiSpecjalne; ["nagłówek"]=true, ---- Nie wykorzystuj dekodowania tekstu zakodowanego, bez rozwijania, ale wręcz przzeciwnie rozwijaj, pozostawiaj pewne szczególne kody przed rozkodowaniem; nieklasycznie=true, ---- Bazę kodowania weź z zewnątrz; kodowanie=false, ---- Wykorzystywana tablica kodowania tekstu modułu: Module:Szablonowe, zakodowanego z zewnątrz; ["tablica kodowania"]=tablica_analizy_obiektow_strony_dany_modul, },__FUNKCJA1,__FUNKCJA2); </syntaxhighlight> Ta funkcja wydziela zwykły tekst z nagłówka z szablonami zwykłymi i ramkami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, bez naruszenia działania innych elementów szablonowych, jak tagi, czyli: {{s|#tag:}}, które też współdziałają też w kodzie danego nagłówka. Również i z linkami wewnętrznymi i zewnętrznymi, z których wydziela się zwykły tekst, bo wiadomo, że one nie mogą się znaleźć w linkach '''spisu treści''', bo nie może być link w linku w nim, a one niezależnie jakie, bo to ze względu na {{Strong|HTML}} nie możliwe technologicznie. Definicje dwóch kolejnych funkcji zdefiniowanych powyżej: <syntaxhighlight lang="lua"> ---- szablon - kod obiektu kodu w wikikodzie; ---- obiekt - typ obiektu kodu powyżej; ---- kod - numer tego samego typu obiektu; local __FUNKCJA1=function(szablon,obiekt,kod) ---- Funkcja wykorzystywana do ewentualnego modyfikowania użytych szablonów i przedstawianiu jego kodem symbolicznym, lub zastępowania pewnych szablonów nagłówków wartością pustą; local szablon,wynik=SzablonyWywolywane(szablon,obiekt,kod); return szablon,wynik; end; local __FUNKCJA2=function(szablon,obiekt,kod) --- rozwijaj uzyskany szablon, dalej, gdy napotkasz, jeśli zostanie włączone zmienna indeksowania w postaci wartości logicznej; return czy_indeksowanie; end; </syntaxhighlight> Funkcja zwraca wartości, tzn. zmienną z przetworzenia nagłówkowego, bez usuniętych znaczników, stylów i znaków specjalnych, tzn. części otoczone pewnymi cudzysłowami z taką samą liczbą, więc pogrubienia i pochylenia tekstu: <syntaxhighlight lang="lua"> return naglowek, Znaczniki, SzablonyStylowe, ZnakiSpecjalne; </syntaxhighlight> Definicje tych zwróconych funkcji, tzn.: {{Code|Znaczniki}} {{Patrz|Znaczniki}}, {{Code|SzablonyStylowe}} {{Patrz|SzablonyStylowe}} i {{Code|ZnakiSpecjalne}} {{Patrz|ZnakiSpecjalne}}, którego opisy raczej przedstawiają ich nazwy, dokładnie one są udokumentowane tutaj: <syntaxhighlight lang="lua"> ---- tekst - tekst do przetworzenia; local function Znaczniki(tekst,jakie,__FUNKCJA1,__FUNKCJA2) ---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML;---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML; ---- funkcja do usuwania znaczników, tzn. w niej inne funkcje: __FUNKCJA1 - funkcja do zakodowywania tekstu przed usuwaniem znaczników, a __FUNKCJA2 - funkcja do odkodowania tego, co pozostało; tekst=p["UsuńZnaczniki"](tekst,jakie,__FUNKCJA1,__FUNKCJA2); return tekst; end; local function SzablonyStylowe(tekst) ---- funkcja do usuwania uruchomionych stylów, tzn. tych: <templatestyles src="..."/>, wtedy to staje się kodem parsera przetwarzanego za pomocą tekstu dla tego typu znacznika, kodami parsera mogą być też inne obiekty jak ramki Lua w Scribunto, ale nie muszą być takie, ale my rozważamy tutaj tylko jeden typ kodu parsera. tekst=p["UsuńSzablonyStylów"](tekst); return tekst; end; local function ZnakiSpecjalne(tekst) ---- funkcja do usuwania cudzysłowów w takich samych ilościach z prawej i z lewej strony danego fragmentu tekstu w nim; tekst=p["UsuńZnakiSpecjalne"](tekst); return tekst; end; </syntaxhighlight> Definicje tych funkcji znajdują się również w module: {{Code|{{ld2|Specjalne}}}}, które również przedstawiają inne funkcje do upraszczania tekstu, w tym nagłówka, ale nie tylko, bo dowolnego tekstu. === {{Śródtytuł|RefPrzypisowy}}{{Code|RefPrzypisowy}} === Mechanizm zamieniający kod referencji na jej wersję wyświetlaną na ekranie, czyli w nawiasie kwadratowym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local RefPrzypisowy=function(obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|obiekt}} {{Patrz|obiekt-ref}} - nazwa typu przypisu, czyli jak bez nazwy, czy też jak: '''uwaga''', * {{Code|kod}} {{Patrz|kod-ref}} - numer danego typu przypisu. Gdy {{LinkPatrz|obiekt-ref}} nie ma nazwy, wtedy w nawiasie kwadratowym będzie tylko numerek {{LinkPatrz|kod-ref}}, a jeśli ma nazwę, to nazwa oddzielona spacją z prawej strony, a po nim jest ten numerek. === Dalsza część funkcji - Tom I === Tutaj opowiemy o części wstępnej tej funkcji. ==== Ustalanie zmiennej nazwy modułu aktualnej, czy bieżącej ==== Funkcja ustawia zmienną: {{Code|czy_kodowanie}} {{Patrz|czy_kodowanie}}, na podstawie istnienia zmiennych: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} i {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. ==== Wyznaczanie nazwy modułu aktualnej, czy bieżącej, dla strony aktualnej, jeśli ona nie istnieje ==== Jeżeli zmienna {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} jest odpowiadającej wartości fdałszywej i mamy strona korzystaną, co określa parametr {{LinkPatrz|czy_artykul_korzystany}}, w postaci wartości prawdziwej, wtedy są liczone kolejne zmienne nazw na podstawie istnienia lub nieistnienia zmiennej {{Code|alternatywna}}, a jeśli ona jest prawdziwa, wtedy wybierane są zmienne z tą aktualną nazwą woluminu wynikłe z {{LinkZobaczTeż|strona_aktualna}}, przeciwnie z nazwą bieżącą woluminu,na podstawie tego, co wyświetla '''Stronicowy Parser''', te nazwy są ze sobą łączone, wtedy powstaje pełna nazwa strony, którą przyrównujemy do {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}}. Jeśli wartość {{LinkPatrz|czy_artykul_korzystany}} jest jednak fałszywa, w takim razie jest liczona {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} na podstawie wartości {{LinkPatrz|nazwa_strony}}. ==== Kodowanie '''HTML''' specjalnych znaków strony ==== Nazwę strony {{LinkPatrz|nazwa_strony}}, w której mogą występować specjalne znaki, które są niezrozumiałe z punktu widzenia '''HTML''', jeżeli np.z nich trzeba zbudować identyfikatory '''id''', a więc trzeba je zakodować, robimy to funkcją: {{Code|{{sr|#p.EncodeId|p=Html}}}}. ==== Zwracanie funkcji liczenia numeru nagłówka ==== Wyznaczamy funkcję: {{Code|HNumer}} {{Patrz|HNumer}}, która jest efektem zwrócenia przez: {{Code|{{sr|#p.LiczonyHNumer|p=StronicowyParser/Potrzebne}}}}. ==== Zamienianie szablonów nagłówków, czy nawet tych znaczników, na rozdziały równaniowe ==== Jeśli {{LinkPatrz|czy_kodowanie}} przyjmuje wartość prawdziwą, wtedy definiujemy funkcję: {{LinkŚródtytuł|SpecjalneWprowadzeniaTekstu}}. Dalej funkcja zamienia szablony: {{s|SpisTreści}} i {{s|HNumer}}, a także znaczniki: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, na ich wersję równaniową, aby dało się je rozpoznać jako rozdziały i było je łatwo wsadzić do szablonu takiego jak: {{s|Spis treści}} i inne podobne, za pomocą dwóch kolejnych funkcji wsadzonych do pewnej funkcji modułu {{m|Szablonowe}}, która służy do operacji na takich przypadkach. === Zmienna strony z nagłówkaami === Gdy jest podana zmienna: {{Code|tylko_naglowek}} {{LinkPatrz|tylko_naglowek}}, ma wartość prawdziwą, wtedy zmienna: {{Code|nazwa_strony_z_naglowkami}} {{Patrz|nazwa_strony_z_naglowkami}}, przybiera wartość pustą, przeciwnie gdy zmienna {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}} jest ciągiem pusty, wtedy to samo, w innym pozostałym przypadku jest to dokładnie {{LinkPatrz|nazwa_strony}}, gdzie przed nim znajduje się dwukropek {{Code|:}}. === Dalsza część funkcji - Tom II === Tu powiemy coś o iteratorze, który po zebraniu danych zwraca zmienną {{Code|nil}}, co odpowiada dla pętli, jej przerwaniu. ==== Definicja iteratora zbierania informacji o stronie ==== Aby uruchomić pętle na rzeczywistych danych zakodowanej, czy nie, stronie, trzeba otrzymać zmienną pętli {{Code|iterator}} {{Patrz|iterator}} i go wywoływać bezparametrowo w każdym okrążeniu pętli, aby tak się stało, to trzeba uruchomić funkcję: {{Code|{{sr|#p.IterTekst|p=StronicowyParser/Rozdziały}}}}, na tekście {{LinkPatrz|tekst_artykulu}}, traktując tekst, jakby nie był taki zakodowany, bo tutaj jedynie się liczą elementy niezakodowane, czyli w tym przypadku nagłówki z tekstem rozdziału. ==== Zbieranie informacji o stronie w pętli generowanej przez iterator ==== Będziemy tutaj opisywali pętlę generowaną przez jego iterator {{LinkPatrz|iterator}}. W każdym okrązeniu pętli otrzymujemy dane: * {{Code|naglowek_tab}} {{Patrz|naglowek_tab}} - gdzie pierwszy jego element to {{Code|naglowek}} {{LinkPatrz|naglowek}}, * {{Code|text_rozdzialu}} {{Patrz|text_rozdzialu}} - tekst rozdziału, * {{Code|poziom_rozdzialu}} {{Patrz|poziom_rozdzialu}} - poziom rozdziału. ===== Definicja nowe wartości zbierania uchwytów nagłówka w zmiennej numeracji ===== Deklaracja zmiennej {{Code|numeracja}} {{LinkPatrz|numeracja}} jest na zewnętrz pętli, w niej tworzymy jej nową wartość, którą jest tablica pusta. ==== Uzyskiwanie informacji z tekstu rozdziału nagłówka, i jego możliwych uchwytach, w poszczegolnym okrążeniu pętli, i zrzuceniu tam pojedynczego kodu problemu ==== Jeżeli {{ZobaczTeż|text_rozdzialu}} tekst strony jest zakodowany, to iterujemy po tekście {{LinkPatrz|text_rozdzialu}} w poszukiwaniu kodów bazy kodów zakodowanego tekstu, w tym celu wywołujemy pętlę: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, wtedy uzyskujemy trzy obiekty w każdym przebiegu pętli, tzn. {{Code|szablon}} {{LinkPatrz|szablon}}, {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, za pomocę tego uruchamiamy funkcję: {{LinkŚródtytuł|SzablonNaglowkujWTekscieRozdzialu}}. Jeżeli funkcja napotkała uchwyt szablonu: {{Code|{{s|Śródtytuł}}}}, wtedy jest zatrzymywana, w takim razie mamy informację o wystąpieniu niedozwolonego szablonu nagłówka w tekście. A jeżeli takiego szablonu tam nie ma, to układ iterator {{LinkPatrz|iterator}} iteruje aż do zakończenia danych. ==== Uzyskiwanie nagłówka i do niego identyfikatora '''id''' ==== ===== Tekst niezakodowany nagłówka ===== Gdy tekst nie jest zakodowany, wtedy zmienna: {{LinkPatrz|czy_kodowanie}}, ma wartość odpowiaadające fałszywej, wtedy dla tego nagłówka {{LinkPatrz|naglowek}} jest uruchamiana funkcja: {{Code|{{sr|#p.["PrzetwórzNagłówek"]|p=Specjalne}}}}, wtedy otrzymujemy dwie wartości: {{Code|nazwa_rozdzialu_w_artykule}} {{Patrz|nazwa_rozdzialu_w_artykule}} - zmienna idententyfikatora, {{Code|naglowek}} {{LinkPatrz|naglowek}} - zmienna nagłówka. Te dwie zmienne zostały maksymalnie rozwinięte, zostały przystosowane do tego, aby słuzyły do tego, co trzego zostały stworzone. ===== Tekst zakodowany nagłówka ===== Gdy jednak {{LinkPatrz|czy_kodowanie}} przyjełajednak wartość fałszywą, wtedy jest uruchamiana funkcja: {{LinkŚródtytuł|SzablonyWywolywaneOgolny}}, z której otrzymujemy: {{Code|naglowek}} {{LinkPatrz|naglowek}} - zmienna przetworzonego i maksymalnie rozwiniętego nagłówka, oraz zmienne funkcje: {{LinkPatrz|Znaczniki}}, {{LinkPatrz|SzablonyStylowe}} i {{LinkPatrz|ZnakiSpecjalne}}. Na podstawie defiicji: {{Code|nazwa_rozdzialu_w_artykule}} {{LinkPatrz|nazwa_rozdzialu_w_artykule}}, mamy: {{Code|naglowek}} {{LinkPatrz|naglowek}}. ====== Kompletowanie nagłówka ====== Ten nagłówek kompletujemy funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, usuwając szablony indeksowania {{LinkPatrz|p.szablony_indeksowania}}, a także znaczniki: {{Tag|li}}, {{Tag|ul}} i {{Tag|ol}}. ====== Kompletowanie identyfikatora nagłówka ====== Kompletując: {{Code|nazwa_rozdzialu_w_artykule}} {{LinkPatrz|nazwa_rozdzialu_w_artykule}}, rozwijamy wszystko, oprócz atrybutów, {{Code|obiekt}} {{Code|{{=}}}} {{Code|ATRYBUTY}}, a na szablonach wywołujemy funkcję: {{LinkŚródtytuł|SzablonyWywolywaneOgolny}}. Na identyfikatorze nagłówka {{LinkPatrz|nazwa_rozdzialu_w_artykule}} Wywołujemy kolejno lokalne funkcje: {{LinkPatrz|SzablonyStylowe}} - do usuwania rozwiniętych kodów stylów, {{LinkPatrz|ZnakiSpecjalne}} - do usuwania cudzysłowów, i {{LinkPatrz|Znaczniki}} - do usuwania znaczzników. ====== Gdy w kodzie identyfikatora nie ma symbolicznych szablonów ====== W tym przypadku uruchamiamy fukcję do dekodowania znaków '''HTML''', tzn. dziesiętnych, szesnastkowych i literowych, funkcją: {{Code|{{sr|#p.DecodeKoduHTMLZnaku|p=Html}}}}, a później kodujemy specjalne znaki identyfikatora sposobem: {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, przy pomocy kodów '''HTML''' dziesiętnych. ===== Usuwanie zbędnych znaków w identyfikatorze ===== Usuwane są potrójne i podwójne cudzysłowy {{Code|'}} oraz odstępy i dolne myślniki na końcach łańcucha, a wewnętrz jego kolejne je są zastępowane jedną spacją. ===== Referencje i wzory matematyczne ===== Referencje są zastępowane odpowiednio przy pomocy funkcji: {{LinkŚródtytuł|RefPrzypisowy}}, a wzory matematyczne, dla obiektów typu {{Code|POSTMATH}} {{Patrz|POSTMATH}}, które są zastępowane prawidłowo poprzez: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.text.encode|b=tak}}}}, przy pomocy: {{Code|{{sr|#p.NormaKoduZakodowanegoHtmlTekstu|p=Szablonowe}}}}, obiektem: {{Code|postMath}} {{Patrz|postMath}} z ośmioma znakami cyferkami na końcu tego, którym jest {{Code|kod}} {{LinkPatrz|kod}}. ===== Wstępne przygotowanie identyfikatora do końcowego skutecznego użytku ===== Dla danego identyfikatora one mogą się powtarzać, a identyfikator musi być unikalny, zatem trzeba napisać ich dodatkowe numerki, po policzeniu otrzymamy {{Code|numer_tego_samego_naglowka}} {{Patrz|numer_tego_samego_naglowka}}. ====== Tablica identyfikatora i nagłówka ====== Dla {{LinkPatrz|numer_tego_samego_naglowka}} równego {{Code|1}}, tworzemy tablicę,którego pierwszym elementem jest: {{LinkPatrz|nazwa_rozdzialu_w_artykule}}, a drugim nagłówek {{LinkPatrz|naglowek}}, a w przypadku tego numerku innego niż podana liczba, to dajemy do identyfikatora na końcu ten numerek po dolnym myślniku. ====== Uzupełnianie zmiennej do identyfikacji uchwytu z odpowiednim nagłówkiem ====== Jeśli: {{LinkPatrz|obiekty}} i {{LinkPatrz|numeracja}}, istnieją, wtedy do tej pierwszej tablicy dodawane są wszystkie elementy o takim samym typie z {{LinkPatrz|numeracja}}. To dodawanie na końcu tablicy przedstawia się: <syntaxhighlight lang="lua"> for _,value_numeracja in ipairs(numeracja)do obiekty[#obiekty+1]={value_numeracja,{nazwa_strony_z_naglowkami,elementy_linku[1], elementy_linku[2]}}; end; </syntaxhighlight> ====== Tworzenie tablicy nagłówkami i indetyfikatorami ====== Jeśli {{Code|poziom_rozdzialu}} jest większy od zera, tzn. {{Code|> 0}}, wtedy liczymy numer rozdziału przy pomocy funkcji: {{Code|HNumer}} {{LinkPatrz|HNumer}} liczony z: {{Code|poziom_rozdzialu}} {{LinkPatrz|poziom_rozdzialu}}, tworząc w ten sposób wynik w postaci zmiennej {{Code|numer_rozdzialu_ustalony}} {{Patrz|numer_rozdzialu_ustalony}}. Jest tworzona tablica spisu: {{Code|tablica_spisu_tresci}} {{Patrz|tablica_spisu_tresci}}, jako pusta tablica, z później dodanym elementem o kluczu: {{Code|nazwa_strony}}, którym jest o wartości: {{LinkPatrz|nazwa_strony_z_naglowkami}}. Do tablicy: {{LinkPatrz|tablica_spisu_tresci}}, dodawane są elementy według schematu: <syntaxhighlight lang="lua"> tablica_spisu_tresci[#tablica_spisu_tresci+1]={elementy_linku,numer_rozdzialu_ustalony}; </syntaxhighlight> === Dalsza część funkcji - Tom III === Będziemy się tutaj zajmowali z tekstem przed pierwszym rozdziałem na stronie. ==== Nagłówek na samym początku strony ==== Gdy kodowanie jest jednak włączone, tzn.: {{LinkPatrz|czy_kodowanie}}, jest prawdziwe, i mamy artykuł korzystany, tzn.: {{LinkPatrz|czy_artykul_korzystany}}, i zaprzeczenie wyłowania funkcji: {{LinkPatrz|CzyJestTakiProblemJakoElementTablicy}}, przyjmuje wartość prawdziwą, to jeśli na samym początku znajduje się rozdział, wtedy funkcja zwraca wynik: {{LinkPatrz|tablica_spisu_tresci}}. ==== Tekst przed pierwszym rozdziałem ==== Wyznaczamy ten tekst, który będzie ukrywał się pod zmienną: {{Code|tekst_zerowy}} {{Patrz|tekst_zerowy}}, który jest tekstem przed pierwszym rozdziałem lub samym tekstem zakodowanego wikikodu {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}}. ===== Szablony nagłówka w tekście zerowym ===== W tym tekście iterujemy jak w punkcie: {{LinkZobaczTeż|text_rozdzialu}}, tylko zamiast {{LinkPatrz|text_rozdzialu}} jest {{LinkPatrz|tekst_zerowy}}. === Dalsza część funkcji - Tom IV === Zwracaną wartością tej funkcji jest: {{Code|tablica_spisu_tresci}} {{LinkPatrz|tablica_spisu_tresci}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> jtcu3yn13ahdgi99utf88ls4awu39mf 548359 548358 2026-07-26T13:03:10Z Persino 2851 /* Tablica identyfikatora i nagłówka */ 548359 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}|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.PobieranieInformacjiRamkiRozpatrywanejStrony}}{{Code|p.PobieranieInformacjiRamkiRozpatrywanejStrony}} == Pobieranie danych z obiektu {{LinkPatrz|self}}, biorąc jego podtablicę o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiRamkiRozpatrywanejStrony(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa ramki tablicy transportu. == {{Śródtytuł|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}}{{Code|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}} == Funkcja uruchamiacz, główna funkcja dzięki, której ładują się informacje według modułu: {{Code|{{ld2|StronicowyParser/informacje}}}} (tam jest użyty). Ten ładowacz jest pokazany w module opis: {{Code|{{lr2|Moduły/StronicowyParser/informacje}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}. === {{Śródtytuł|DaneNazw}}{{Code|DaneNazw}} === Funkcja licząca nazwy podanej nazwy strony, tzn.: {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} {{Patrz|nazwa_artykulu}}, oraz zwracające te kolejno nazwy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function DaneNazw(pelna_nazwa_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|pelna_nazwa_strony}} {{Patrz|pelna_nazwa_strony}} - pełna nazwa strony. === Dalsza część funkcji - Tom I === ==== Tworzenie i inicjowanie początkowych tabel ==== Funkcja tworzy podtabele tabeli zmiennej obiektowej {{LinkPatrz|self}} o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, o wartości pustej. Następnie są tworzone podtabele puste w tej ostatniej o kluczach: {{Code|dane_analizy_stron}} {{Patrz|dane_analizy_stron}} i {{Code|licencja}}{{Patrz|licencja}}, oraz nilowe zmienne z tego samego, co ostatnie, o kluczu: {{Code|problemy}} {{Patrz|problemy}}. ==== Zmienne nazw strony bieżącej, czy nawet aktualnej, w zależności, czy istnieją odpowiednie ustawienia ==== Jest liczony adres strony, na której jest uruchomiona dana strona, wewnętrznej bezparametrowo według: {{Code|{{sr|#p["PełnaNazwaArtykułu"]|p=Książkowe}}}} {{Patrz|strona_aktualna}}, co z tego są liczone z niego: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, co z tego jest liczona pełna nazwa książki {{Code|pelna_nazwa_ksiazki}} {{Patrz|pelna_nazwa_ksiazki}}. ==== Zbieranie danych ustawień z: {{Code|.../config}}, jeśli istnieją ==== Jest liczony pełny adres ustawień: {{Code|pelna_nazwa_ksiazki_ustawienia}} {{Patrz|pelna_nazwa_ksiazki_ustawienia}}, według schematu: {{Code|"Szablon:Podręcznik/Ustawienia/"..pelna_nazwa_ksiazki}} {{Patrz|UstawieniaKsiążki}}. Co z tego jest sprawdzane, czy istnieje strona: {{Code|pelna_nazwa_ksiazki_ustawienia.."/config"}} {{Patrz|config}}, a jeśli tak, to wtedy wiemy, że to jest szablon, to go przedstawiamy w postaci szablonowej, licząc z: {{Code|{{sr|#p.NazwaSzablonu|p=Szablonowe}}}}. Dalej jest liczony ostatni wyliczony szablon z parametrem {{Code|książka}} {{Patrz|książka}}, dalej jeszcze raz, tym razem z parametrem: {{Code|artykuł}} {{Patrz|artykuł}} - te parametry przedstawiają parametry artykułu książkowego, skąd możemy ściągać stronę, by ją wyświetlić na stronie aktualnej, na pewno parametr {{LinkPatrz|książka}} nie może być parametrem składających z samych znaków odstępów, a jeśli tak jest, w takim razie z tych dwóch parametrów jest liczony parametr {{Code|strona}} {{Patrz|strona}}. Dalej liczymy, czy ona jest poprawnym adresem, używając funkcji: {{Code|{{sr|#p["CzyNiepoprawnaNazwa"]|p=Pudełko/Tom I}}}}. A jeżeli adres jest jednak poprawny, ta funkcja zwraca wartość odpowiadającej fałszywej wartości, wtedy jest liczony pełny adres strony, jeżeli ona jest względna z parametrów, tzn. parametr pierwszy: {{LinkPatrz|strona}}, i parametr drugi: {{LinkPatrz|strona_aktualna}}, co względem tej funkcji mamy już: {{LinkPatrz|strona}}, czyli po tej operacji (procedurze) policzyliśmy bezwzględny jego adres. ===== Liczenie nazw z parametru pełnej nazwy aktualnej, nie bieżącej, strony wynikłe z obliczeń z ustawień ===== Policzona wartość strony: {{LinkPatrz|strona}}, jest sprawdzana, czy adres (strona), pod którym ona się kryje, istnieje, a jeśli tak, to ten adres jest tylko formatowany. Porównujemy adres {{LinkPatrz|strona}} z {{LinkPatrz|strona_aktualna}}, czy przedstawiają nie ten sam adres, a jeżeli tak, to liczymy wszyskie nazwy strony, czyli dla bez {{Code|aktualna_}}, przyrównujemy do tego z tym początkiem, co odpowiada pełnej nazwie strony z {{Code|strona_aktualna}} {{LinkPatrz|strona_aktualna}} {{ZobaczTeż|strona_aktualna}}, i używając funkcji: {{LinkŚródtytuł|DaneNazw}}, ze zmiennej: {{Code|strona}} {{LinkPatrz|strona}} {{ZobaczTeż|strona}}. Te ostatnie nazwy są potrzebne do analizy strony bieżącej, nie aktualnej, tzn. na niej, jakie są szablony, jakie posiada spisy, jakie książki, a w nim spisy do nich, są dołączone. ====== Policzone nazwy strony aktualnej wpisane do ogólnej tablicy ====== A póżniej z adresów pliczonych wywołania, dotyczącej tego aktualnego, liczymy dla podtabeli: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienne o kluczach: {{Code|aktualna_nazwa_przestrzeni}} {{Patrz|aktualna_nazwa_przestrzeni}}, {{Code|aktualna_nazwa_przestrzeni_ksiazki}} {{Patrz|aktualna_nazwa_przestrzeni_ksiazki}}, {{Code|aktualna_nazwa_ksiazki}} {{Patrz|aktualna_nazwa_ksiazki}} i {{Code|aktualna_nazwa_artykulu}} {{Patrz|aktualna_nazwa_artykulu}}, mając zmienne nazw policzone z tego aktualnego. ===== Czy strona bieżąca, ale nie zbiorcza, jest wyświetlana na stronie aktualnej, czy może jest tylko stroną zbiorczą uruchomioną pod inną nazwą ===== Jeśli zmienne nazw są policzone z: {{LinkZobaczTeż|strona}} i {{LinkZobaczTeż|strona_aktualna}}, to wtedy kolejno porównujemy, czy któraś z nich jest nierówna, a jeśli tak, to wywołujemy szablon z parametru: {{Code|zastępcza}} {{ZobaczTeż|zastępcza}} - jest to, czy strona jest zbiorcza, o nazwie: {{LinkPatrz|config}}, czy powinna być wartością niepustą. A jak tak, to wyznaczamy z tablicy: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienną o kluczu: {{Code|alternatywna}} {{Patrz|alternatywna}}, co przyrównujemy jemu wartość logiczną z uzyskanego z szablonu z parametrem {{LinkZobaczTeż|zastępcza}}, a jeżeli ta zmienna przyjmuje wartość odpowiadająca fałszywej, wtedy zmienna z tej samej tablicy o kluczu: {{Code|inna_strona_aktualna_niz_biezaca}} {{Patrz|inna_strona_aktualna_niz_biezaca}} - jest to, czy strona jest inna niż zbiorcza, ale wyświetlana na innej stronie, przyjmuje wartość prawdziwą. === Dalsza część funkcji - Tom II === Tworzymy zmienną: {{Code|tablica_zmiennych}}, która jest tablicą pustą, którą uzupełniamy o elementy o kluczach: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}} - są to dane zebrane z bieżącej strony, i {{Code|linkobiekt}} {{Patrz|linkobiekt}} - są to dane zebrane o linkach na stronie odpowiadających poszczególnym obiektom. Uruchamiamy funkcję: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}, z której wyznaczamy parametr: {{Code|tabela_listy_danych_analizy_ksiazki}} - są to dane zebrane z bieżącej i innych stron skojarzonej z nim, te elementy są tylko w postaci nieprzetworzonej, ale przygotowanej. A jeśli ten parametr jest tabelką - a jeżeli nie jest, to nastąpił błąd przetwarzania, i funkcja nie idzie dalej w instrukcję warunkową, wtedy wywołujemy funkcję: {{Code|{{sr|#p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony|p=StronicowyParser/NumeracjaObiektówStron}}}}. === Dalsza część funkcji - Tom III === Na sam koniec funkcji zwracamy tablicę: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}} - ta zmienna zawiera dane w postaci przetworzonej policzonej, tzn. uchwytom są przydzielone numeracje, sprawdzane, czy uchwyty są policzone, są wyznaczone wszystkie kody problemów, które później są potrzebne do wyznaczania wszystkich kategorii błędów na stronie. == {{Śródtytuł|p.SpisRzeczyWedlePodanegoTekstu}}{{Code|p.SpisRzeczyWedlePodanegoTekstu}} == Funkcja generowania liczenia nagłówków strony, co na tej podstawie może być generowany '''spis treści''' strony. Funkcja przyporządkowuje uchwytom szablonów nagłówków ich identyfikatory i te nagłówki, w którym one leżą, jeżeli zmienna {{LinkPatrz|obiekty}} istnieje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SpisRzeczyWedlePodanegoTekstu(self,tekst_artykulu,nazwa_strony,czy_artykul_korzystany, tylko_naglowek,obiekty,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_obiektow_strony_danych_kodow_specjalnych_modul,KtorySzablonMaZwracacKategorie,wzory_zamiast_kodow,tabela_elementow_strony_kodow)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}} - tekst przetworzony, przygotowany ewentualnie przez pewną funkcję, rozważanego artykułu, * {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} - nazwa strony, danego spisu, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy strona jest bieżąca, * {{Code|tylko_naglowek}} {{Patrz|tylko_naglowek}} - pisz adresy stron z tylko nagłówkami '''#''', bez adresów stron, * {{Code|obiekty}} {{Patrz|obiekty}} - elementy tam zebrane, są wykorzystywane do analizy nagłówków poprzez szablon {{s|Śródtytuł}}, któremu temu nagłówkowi odpowjada pewien uchwyt, czy uchwyty, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}, * {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} - nazwa aktualna, czy bieżąca strony, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy zebranych informacji w postaci zakodowanej modułu {{m|Szablonowe}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tabela przeanalizowanych elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} {{Patrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} - tablica dwuwymiarowa kodów o kluczach: szablonów referencji: '''REF...''' i '''POSTMATH''' oraz ich elementu numeru kodu {{Code|kod}}, którego elementem jest kod tego elementu, * {{Code|KtorySzablonMaZwracacKategorie}} {{Patrz|KtorySzablonMaZwracacKategorie}} - tabela składająca się z trzech elementów, którego pierwszy element to: {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{Patrz|KtorySzablonMaZwracacKategorieNaglowek}} - funkcja dla szablonów problemów dla jak: {{s|Śródtytuł}}, w nagłówku, drugi: {{Code|KtorySzablonMaZwracacKategorieTekst}} {{Patrz|KtorySzablonMaZwracacKategorieTekst}} - funkcja dla tego typu szablonów, ale dla nich w tekście, nie w nagłówku, trzeci: {{Code|CzyJestTakiProblemJakoElementTablicy}} {{Patrz|CzyJestTakiProblemJakoElementTablicy}} - czy nie rozważać, dla rozdziałów zerowych, przeciwnie: ta funkcja może przyjmować wartość {{Code|nil}}, wartość zwracana tego elementu, bo to jest funkcja, zależy, czy jest ustawiony kod problemu: {{Code|nagłówek w tekście rozdziału w stronie korzystanej}} {{Patrz|nagłówek w tekście rozdziału w stronie korzystanej}}, a jeżeli jest taki, to ta funkcja przyjmuje zrzuconą wartość {{Code|true}}, * {{Code|wzory_zamiast_kodow}} {{Patrz|wzory_zamiast_kodow}} - rozważaj wzory według tablicy: {{LinkPatrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}}, lub koduj to według funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}} - to wykorzystuj w przypadku, gdy: {{LinkPatrz|nazwa_strony}}, istnieje, i jest wartością pustą, lub {{Code|{{sr|#p.NormaKoduZakodowanegoWikiTekstu|p=Szablonowe}}}} - przeciwnie, * {{Code|tabela_elementow_strony_kodow}} {{Patrz|tabela_elementow_strony_kodow}} - baza tabela z zapamiętanymi podtabelami, którego poszczególne elementy wykorzystywane w spisie posiadają w sobie tylko pierwszy element w postaci przetworzonego uchwytu, bo używamy tylko uchwytów szablonów nagłówków. === {{Śródtytuł|SpecjalneWprowadzeniaTekstu}}{{Code|SpecjalneWprowadzeniaTekstu}} === Funkcja zamieniające pewne szablony, czy znaczniki, na rozdziały równaniowe. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local SpecjalneWprowadzeniaTekstu=function(szablon,obiekt,kod,czy_szablon,czy_znacznik,czy_liczyc,funkcja1,funkcja2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} {{Patrz|szablon}} - zmienna (szablon), nie musi być to normalny szablon, * {{Code|obiekt}} {{Patrz|obiekt}} - zmienna, którego typu jest obiekt, * {{Code|kod}} {{Patrz|kod}} - numer obiektu typu {{LinkPatrz|obiekt}}, * {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy to jest szablon, * {{Code|czy_znacznik}} {{Patrz|czy_znacznik}} - czy to jest znacznik, * {{Code|czy_liczyc}} {{Patrz|czy_liczyc}} - czy funkcję liczyć w sposób złożony, szablony typu: {{s|SpisTreści}} - zamieniający go na znacznik, czy prosty, co na samym końcu uruchamiana jest funkcja: {{LinkPatrz|funkcja1}}, * {{Code|funkcja1}} {{Patrz|funkcja1}} - funkcja operująca na wygenerowanym pośrednio (dłuższe liczenie) lub bezpośrednio (krótsze) znaczniku, wychodząca z szablonu, i zamieniająca go na rozdział równaniowy, funkcja operująca dla szablonów: {{s|SpisTreści}} lub {{s|HNumer}}, * {{Code|funkcja2}} {{Patrz|funkcja2}} - funkcja operująca na znaczniku '''HTML''' nagłówka - typu jak: {{Tag|h1}}, i zamieniająca go na rozdział równaniowy. ==== {{Śródtytuł|ParametrNR}}{{Code|ParametrNR}} ==== Funkcja liczy dokładnie parametr dany o danym numerze, zbiór danych parametrów oznaczających to samo może być wiele, tylko że jedne mogą być ważniejsze od drugich. Definicja skrótowa funkcja: <syntaxhighlight lang="lua"> local function ParametrNR(numer)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer}} {{Patrz|numer}} - numer parametru. Funkcja wykorzystywuje funkcję do uruchomienia: {{Code|{{sr|#p.SpisRzeczySzablon|p=StronicowyParser/Potrzebne}}}}, do generowania parametrów, a właściwie ich wartości. ==== {{Śródtytuł|ObiektKodNumer}}{{Code|ObiektKodNumer}} ==== Funkcja dodająca do bazy danych kolejny element bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla danego obiektu element na samym końcu, po maksymalnym elemencie do niego. Funkcja liczy kod przy pomocy funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local ObiektKodNumer=function(szablon,obiekt)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}. ==== Dalszy opis funkcji ==== Dla {{LinkPatrz|czy_szablon}} prawdziwego dla szablonów sztucznego spisu treści, sprawdzanego przez tabelkę: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, dla danego szablonowego rozdziału generowanego według {{s|HNumer}}, jest on zamieniany na rozdział równaniowy poprzez funkcję: {{LinkPatrz|funkcja1}}. Ta tabela przedstawia się treścią: <syntaxhighlight lang="lua"> p.szablony_sztucznego_wprowadzenia_tekstu={ ["HNumer"]=1, }; </syntaxhighlight> Dla innych rozdziałów szablonowych, tym razem generowanego przez szablon {{s|SpisTreści}}, którego parametry są wyznaczane przez funkcję: {{LinkŚródtytuł|ParametrNR}}, tabelka parametrów opisująca to: <syntaxhighlight lang="lua"> p.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu={ ["SpisTreści"]={{"artykuł",1,},{"książka",2,},{"nazwa",3,},{"dodatek",4,},{"poziom",},}, }; </syntaxhighlight> Funkcja liczy artykuł, koloruje do niego link w: '''spisie treści''', na czerwona, wtedy generuje dodatkowy znacznik, z właściwością: {{Code|color:red}}, gdy on nie istnieje, i to wstawia do tabeli bazy, lub bez niego, wtedy bezposrednio generuje tekst równy nazwie tego szablonu, opakowany, lub nie, w zależności od istnienia. Do policzenia strony, czy ona istnieje, musi być przedtem zdekodowany funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, by później policzyć to sprawdzenie przy pomocy: {{Code|{{sr|#p.PoliczZbiory|p=Techniczne}}}}. W każdym bądź razie jest ruchumianiana funkcja: {{LinkPatrz|funkcja1}}. Gdy to nie jest szablon, tzn.: {{LinkPatrz|czy_szablon}}, jest fałszywe, ale {{LinkPatrz|czy_znacznik}} jest prawdziwe, to takie znaczniki, jak od: {{Tag|h1}} do {{Tag|h6}}, są zamieniane na czysty tekst. W takim razie wywoływana jest dla tego przypadku funkcja: {{LinkPatrz|funkcja2}}. Funkcja: {{LinkPatrz|funkcja1}}, jest dla szablonów nagłówków, a: {{LinkPatrz|funkcja2}}, dla znaczników nagłówków. Z tych generowanych czystych generowanych tekstów są tworzone w tekście rozdziały równaniowe, by później wygenerować '''spis treści''', właśnie z nimi - z tymi nagłówkami, a bardziej ściśle linkami do nich. === {{Śródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}{{Code|SzablonNaglowkujWNaglowkuRozdzialu}} === Fukcja do obsługi nagłówków {{LinkPatrz|Śródtytuł}} w nagłówku, nie w tekście poza nim. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWNaglowkuRozdzialu(szablon,obiekt,kod,powtorka,parametry_wywolania_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}, * {{Code|powtorka}} {{Patrz|powtorka}} - numer użycia takiego samego szablonu typu {{s|Śródtytuł}} {{Patrz|Śródtytuł}}, * {{Code|parametry_wywolania_szablonu}} {{Patrz|parametry_wywolania_szablonu}} - parametry szablonu wraz z ich wartościami, * {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} - nazwa szablonu wywołania, * {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} - modyfikatory szablonu. Funkcja sprawdza, czy szablon w nagłówku jest typu {{LinkPatrz|Śródtytuł}}, a jeżeli tak, to liczy jego uchwyt, najpierw wyznacza je z parametru o nazwie {{Code|uchwyt}} {{Patrz|uchwyt}}, dalej sprawdzane jest, czy taki uchwyt tak zdefiniowany istnieje, jeśli tak, to wydobywana jest jego przetworzona tabela z tym właśnie uchwytek, funkcja robi to względem numeru {{Code|kod}} {{LinkPatrz|kod}} tego szablonu na podstawie funkcji: {{Code|{{sr|#p.WydobywanieUchwytuZeiBezNumeracji|p=StronicowyParser/ZbieranieDanychStron}}}}. Jeżeli wydobyta tabela {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} nie istnieje, w takim razie jest ona dekodowana funkcją: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, a później jest traktowana jako adres '''URL''', tzn. jest dekodowana funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, dalej jest tworzona tabela pusta: {{LinkPatrz|lista_dwuelementowa}}, co dalej jest tam wstawiana do niej jako pierwszy element uzyskany uchwyt przetworzony. A jeśli jednak {{LinkPatrz|lista_dwuelementowa}} została wydobyta z naszej funkcji tabela, która istnieje, wtedy funkcja idzie, niż poprzednio, w inny krok instrukcji warunkowej, wtedy z tej tabeli jest wydobywany pierwszy element jako przetworzony wcześniej uchwyt. Gdy {{ZobaczTeż|uchwyt}} przetworzony uchwyt jest łańcuchem znaków niepusty, wtedy on jest dodawany w postaci tabeli, w której jest ten uchwyt, na sam koniec tabeli {{Code|numeracja}} {{Patrz|numeracja}}. Gdy liczba powtórzeń jest większa niż zero, wtedy jest wywoływana funkcja, przy którym mają być zwrócone kategorie, jeśli zostaną użyte, o nazwie {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}}. Gdy jednak uchwyt uzyskany nie istnieje, to wtedy jest to samo robione, co w: {{LinkZobaczTeż|uchwyt}}. Przed zwróceniem ile razy została dokonana powtórka, jest powiększany licznik powtorek, i to jest otrzymywane z tej funkcji. === {{Śródtytuł|SzablonNaglowkujWTekscieRozdzialu}}{{Code|SzablonNaglowkujWTekscieRozdzialu}} === Funkcja do analizy szablonów nagłówków w tekście rozdziału, nie w nagłówku. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWTekscieRozdzialu(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja sprawdza, czy tekst w bazie kodów jest typu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, w takim razie po wykryciu, że dla tego, że jest to wywołanie szablonowe, a nie instrukcja warukowa w wikikodzie w tekście, wtedy podobnie jest robione, co w funkcji: {{LinkŚródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}, tylko zamiast {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}} jest {{Code|KtorySzablonMaZwracacKategorieTekst}} {{LinkPatrz|KtorySzablonMaZwracacKategorieTekst}}. Przy wykryciu tam szablonu typu {{LinkPatrz|Śródtytuł}}, funkcja zawsze zwraca wartość {{Code|true}}, w innych przypadkach {{Code|false}}. W przypadku intrukcji warunkowej w wikikodzie i dla ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jest wtedy zwracana wartość {{Code|false}}. Funkcja w pozostałych przypadkach zwraca wartość logiczną {{Code|false}}. === {{Śródtytuł|SzablonyWywolywane}}{{Code|SzablonyWywolywane}} === Szablon zamieniający specjalne znaki szablonów, tzn.: {{Code|{{((}}}}, {{Code|{{))}}}}, {{Code|{{!}}}} i {{Code|{{=}}}}, kolejno na: {{Code|{{s|((}}}}, {{Code|{{s|))}}}}, {{Code|{{s|!}}}} i {{Code|{{s|{{=}}}}}}, takich {{ZobaczTeż|StronicowyParser}}, które zawierają wywołania '''Stronicowego Parsera''', czyli ramki typu: {{Code|{{m|StronicowyParser}}}}, czy: {{Code|{{m|StronicowyParser/}}}}, a inne są po prostu przypisywane. W przypadku linków, i nie tylko, tzn. dla szablonów {{LinkZobaczTeż|StronicowyParser}}, z innych stron niż korzystana, co jest trafnie oznaczone zaprzeczeniem parametru {{LinkPatrz|czy_artykul_korzystany}} są liczone parametry pudełkowe {{Code|{{m|Pudełko}}}}. Strony wskazane przez te parametry są analizowane, przy czym linki są przez inną funkcję, a inne już przez znów inną. Szablony nagłówków typu {{LinkPatrz|Śródtytuł}}, czy szablonów stronicowych otwierających i zamykających, one lub jego koledzy, tzn. ich: {{s|StronaStart}} i {{s|StronaKoniec}}, są zastępowane ciągiem pustym. Inne parametry opisane z tabeli {{Code|{{sr|#p.szablony_stronicowe_kontenerowe_formatowania_wzorowego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, są zastępowane ich zawartością, by uniknąć kontaktu nagłówków z tego typu szablonami. Szablony ideksowania określone tabelą: {{Code|{{sr|#p.szablony_indeksowania}}}} {{Patrz|p.szablony_indeksowania}}, nie są rozwijana z kodowania lub są, w zależności, czy zmienna: {{Code|czy_indeksowanie}} {{Patrz|czy_indeksowanie}}, ma wartość {{Code|true}} - tutaj są, czy odpowiadającej fałszywej wartości logicznej - a tutaj już nie. W przypadku instrukcji warunkowych, czy ramek {{lpg|Lua}} w {{lpg|Lua|Scribunto}}, one są rozwijane - kod tego jest zawartością {{LinkPatrz|szablon}}. W innych przypadkach funkcja zwraca wartość {{Code|nil}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywane(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. W powyższym opisie występują szablony opisane w: {{LinkPatrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, a jej definicja jest: <syntaxhighlight lang="lua"> p.szablony_stronicowe_kontenerowe_formatowania_wzorowego={ ["Formuła"]=1; }; </syntaxhighlight> Jest to szablon: {{s|Formuła}} i podobne, liniowe wstawiane do tekstu, ta tabela ma za zadanie zastąpić te szablony ich poszczególnym zawartościom, a ta funkcja, która ją wykorzystywuje się do tego przypadku, jest o nazwie: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}. Tabelą szablonów indeksowania, to są one zdefiniowane przez: {{LinkPatrz|p.szablony_indeksowania}}, a jej zawartość: <syntaxhighlight lang="lua"> p.szablony_indeksowania={ ["Kotwica"] =true, ["Indeksuj"]=true, }; </syntaxhighlight> Są to szablony kotwic: {{s|Kotwica}}, który jest szablonem liniowym, a {{s|Indeksuj}}, natomiast to blokowy. === {{Śródtytuł|SzablonyWywolywaneOgolny}}{{Code|SzablonyWywolywaneOgolny}} === Funkcja rozwija nagłówek, wydzielając z niego zwykły tekst, nie dopełniając pewnych operacji. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywaneOgolny(naglowek)...end; </syntaxhighlight> Parametry funkcji: * {{Code|naglowek}} {{Patrz|naglowek}} - tekst nagłówka napisu wprowadzenia tekstu. Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["WydzielZwykłyTekst"]|p=Specjalne}}}}, kod jej wywoływany jest z parametrami: <syntaxhighlight lang="lua"> local naglowek,Znaczniki,SzablonyStylowe,ZnakiSpecjalne=specjalne_modul["WydzielZwykłyTekst"]( { ---- tekst nagłówka; tekst=naglowek, ---- Nie wykorzystywuj w działaniu funkcji: Znaczniki, SzablonyStylowe, ZnakiSpecjalne; ["nagłówek"]=true, ---- Nie wykorzystuj dekodowania tekstu zakodowanego, bez rozwijania, ale wręcz przzeciwnie rozwijaj, pozostawiaj pewne szczególne kody przed rozkodowaniem; nieklasycznie=true, ---- Bazę kodowania weź z zewnątrz; kodowanie=false, ---- Wykorzystywana tablica kodowania tekstu modułu: Module:Szablonowe, zakodowanego z zewnątrz; ["tablica kodowania"]=tablica_analizy_obiektow_strony_dany_modul, },__FUNKCJA1,__FUNKCJA2); </syntaxhighlight> Ta funkcja wydziela zwykły tekst z nagłówka z szablonami zwykłymi i ramkami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, bez naruszenia działania innych elementów szablonowych, jak tagi, czyli: {{s|#tag:}}, które też współdziałają też w kodzie danego nagłówka. Również i z linkami wewnętrznymi i zewnętrznymi, z których wydziela się zwykły tekst, bo wiadomo, że one nie mogą się znaleźć w linkach '''spisu treści''', bo nie może być link w linku w nim, a one niezależnie jakie, bo to ze względu na {{Strong|HTML}} nie możliwe technologicznie. Definicje dwóch kolejnych funkcji zdefiniowanych powyżej: <syntaxhighlight lang="lua"> ---- szablon - kod obiektu kodu w wikikodzie; ---- obiekt - typ obiektu kodu powyżej; ---- kod - numer tego samego typu obiektu; local __FUNKCJA1=function(szablon,obiekt,kod) ---- Funkcja wykorzystywana do ewentualnego modyfikowania użytych szablonów i przedstawianiu jego kodem symbolicznym, lub zastępowania pewnych szablonów nagłówków wartością pustą; local szablon,wynik=SzablonyWywolywane(szablon,obiekt,kod); return szablon,wynik; end; local __FUNKCJA2=function(szablon,obiekt,kod) --- rozwijaj uzyskany szablon, dalej, gdy napotkasz, jeśli zostanie włączone zmienna indeksowania w postaci wartości logicznej; return czy_indeksowanie; end; </syntaxhighlight> Funkcja zwraca wartości, tzn. zmienną z przetworzenia nagłówkowego, bez usuniętych znaczników, stylów i znaków specjalnych, tzn. części otoczone pewnymi cudzysłowami z taką samą liczbą, więc pogrubienia i pochylenia tekstu: <syntaxhighlight lang="lua"> return naglowek, Znaczniki, SzablonyStylowe, ZnakiSpecjalne; </syntaxhighlight> Definicje tych zwróconych funkcji, tzn.: {{Code|Znaczniki}} {{Patrz|Znaczniki}}, {{Code|SzablonyStylowe}} {{Patrz|SzablonyStylowe}} i {{Code|ZnakiSpecjalne}} {{Patrz|ZnakiSpecjalne}}, którego opisy raczej przedstawiają ich nazwy, dokładnie one są udokumentowane tutaj: <syntaxhighlight lang="lua"> ---- tekst - tekst do przetworzenia; local function Znaczniki(tekst,jakie,__FUNKCJA1,__FUNKCJA2) ---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML;---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML; ---- funkcja do usuwania znaczników, tzn. w niej inne funkcje: __FUNKCJA1 - funkcja do zakodowywania tekstu przed usuwaniem znaczników, a __FUNKCJA2 - funkcja do odkodowania tego, co pozostało; tekst=p["UsuńZnaczniki"](tekst,jakie,__FUNKCJA1,__FUNKCJA2); return tekst; end; local function SzablonyStylowe(tekst) ---- funkcja do usuwania uruchomionych stylów, tzn. tych: <templatestyles src="..."/>, wtedy to staje się kodem parsera przetwarzanego za pomocą tekstu dla tego typu znacznika, kodami parsera mogą być też inne obiekty jak ramki Lua w Scribunto, ale nie muszą być takie, ale my rozważamy tutaj tylko jeden typ kodu parsera. tekst=p["UsuńSzablonyStylów"](tekst); return tekst; end; local function ZnakiSpecjalne(tekst) ---- funkcja do usuwania cudzysłowów w takich samych ilościach z prawej i z lewej strony danego fragmentu tekstu w nim; tekst=p["UsuńZnakiSpecjalne"](tekst); return tekst; end; </syntaxhighlight> Definicje tych funkcji znajdują się również w module: {{Code|{{ld2|Specjalne}}}}, które również przedstawiają inne funkcje do upraszczania tekstu, w tym nagłówka, ale nie tylko, bo dowolnego tekstu. === {{Śródtytuł|RefPrzypisowy}}{{Code|RefPrzypisowy}} === Mechanizm zamieniający kod referencji na jej wersję wyświetlaną na ekranie, czyli w nawiasie kwadratowym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local RefPrzypisowy=function(obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|obiekt}} {{Patrz|obiekt-ref}} - nazwa typu przypisu, czyli jak bez nazwy, czy też jak: '''uwaga''', * {{Code|kod}} {{Patrz|kod-ref}} - numer danego typu przypisu. Gdy {{LinkPatrz|obiekt-ref}} nie ma nazwy, wtedy w nawiasie kwadratowym będzie tylko numerek {{LinkPatrz|kod-ref}}, a jeśli ma nazwę, to nazwa oddzielona spacją z prawej strony, a po nim jest ten numerek. === Dalsza część funkcji - Tom I === Tutaj opowiemy o części wstępnej tej funkcji. ==== Ustalanie zmiennej nazwy modułu aktualnej, czy bieżącej ==== Funkcja ustawia zmienną: {{Code|czy_kodowanie}} {{Patrz|czy_kodowanie}}, na podstawie istnienia zmiennych: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} i {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. ==== Wyznaczanie nazwy modułu aktualnej, czy bieżącej, dla strony aktualnej, jeśli ona nie istnieje ==== Jeżeli zmienna {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} jest odpowiadającej wartości fdałszywej i mamy strona korzystaną, co określa parametr {{LinkPatrz|czy_artykul_korzystany}}, w postaci wartości prawdziwej, wtedy są liczone kolejne zmienne nazw na podstawie istnienia lub nieistnienia zmiennej {{Code|alternatywna}}, a jeśli ona jest prawdziwa, wtedy wybierane są zmienne z tą aktualną nazwą woluminu wynikłe z {{LinkZobaczTeż|strona_aktualna}}, przeciwnie z nazwą bieżącą woluminu,na podstawie tego, co wyświetla '''Stronicowy Parser''', te nazwy są ze sobą łączone, wtedy powstaje pełna nazwa strony, którą przyrównujemy do {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}}. Jeśli wartość {{LinkPatrz|czy_artykul_korzystany}} jest jednak fałszywa, w takim razie jest liczona {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} na podstawie wartości {{LinkPatrz|nazwa_strony}}. ==== Kodowanie '''HTML''' specjalnych znaków strony ==== Nazwę strony {{LinkPatrz|nazwa_strony}}, w której mogą występować specjalne znaki, które są niezrozumiałe z punktu widzenia '''HTML''', jeżeli np.z nich trzeba zbudować identyfikatory '''id''', a więc trzeba je zakodować, robimy to funkcją: {{Code|{{sr|#p.EncodeId|p=Html}}}}. ==== Zwracanie funkcji liczenia numeru nagłówka ==== Wyznaczamy funkcję: {{Code|HNumer}} {{Patrz|HNumer}}, która jest efektem zwrócenia przez: {{Code|{{sr|#p.LiczonyHNumer|p=StronicowyParser/Potrzebne}}}}. ==== Zamienianie szablonów nagłówków, czy nawet tych znaczników, na rozdziały równaniowe ==== Jeśli {{LinkPatrz|czy_kodowanie}} przyjmuje wartość prawdziwą, wtedy definiujemy funkcję: {{LinkŚródtytuł|SpecjalneWprowadzeniaTekstu}}. Dalej funkcja zamienia szablony: {{s|SpisTreści}} i {{s|HNumer}}, a także znaczniki: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, na ich wersję równaniową, aby dało się je rozpoznać jako rozdziały i było je łatwo wsadzić do szablonu takiego jak: {{s|Spis treści}} i inne podobne, za pomocą dwóch kolejnych funkcji wsadzonych do pewnej funkcji modułu {{m|Szablonowe}}, która służy do operacji na takich przypadkach. === Zmienna strony z nagłówkaami === Gdy jest podana zmienna: {{Code|tylko_naglowek}} {{LinkPatrz|tylko_naglowek}}, ma wartość prawdziwą, wtedy zmienna: {{Code|nazwa_strony_z_naglowkami}} {{Patrz|nazwa_strony_z_naglowkami}}, przybiera wartość pustą, przeciwnie gdy zmienna {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}} jest ciągiem pusty, wtedy to samo, w innym pozostałym przypadku jest to dokładnie {{LinkPatrz|nazwa_strony}}, gdzie przed nim znajduje się dwukropek {{Code|:}}. === Dalsza część funkcji - Tom II === Tu powiemy coś o iteratorze, który po zebraniu danych zwraca zmienną {{Code|nil}}, co odpowiada dla pętli, jej przerwaniu. ==== Definicja iteratora zbierania informacji o stronie ==== Aby uruchomić pętle na rzeczywistych danych zakodowanej, czy nie, stronie, trzeba otrzymać zmienną pętli {{Code|iterator}} {{Patrz|iterator}} i go wywoływać bezparametrowo w każdym okrążeniu pętli, aby tak się stało, to trzeba uruchomić funkcję: {{Code|{{sr|#p.IterTekst|p=StronicowyParser/Rozdziały}}}}, na tekście {{LinkPatrz|tekst_artykulu}}, traktując tekst, jakby nie był taki zakodowany, bo tutaj jedynie się liczą elementy niezakodowane, czyli w tym przypadku nagłówki z tekstem rozdziału. ==== Zbieranie informacji o stronie w pętli generowanej przez iterator ==== Będziemy tutaj opisywali pętlę generowaną przez jego iterator {{LinkPatrz|iterator}}. W każdym okrązeniu pętli otrzymujemy dane: * {{Code|naglowek_tab}} {{Patrz|naglowek_tab}} - gdzie pierwszy jego element to {{Code|naglowek}} {{LinkPatrz|naglowek}}, * {{Code|text_rozdzialu}} {{Patrz|text_rozdzialu}} - tekst rozdziału, * {{Code|poziom_rozdzialu}} {{Patrz|poziom_rozdzialu}} - poziom rozdziału. ===== Definicja nowe wartości zbierania uchwytów nagłówka w zmiennej numeracji ===== Deklaracja zmiennej {{Code|numeracja}} {{LinkPatrz|numeracja}} jest na zewnętrz pętli, w niej tworzymy jej nową wartość, którą jest tablica pusta. ==== Uzyskiwanie informacji z tekstu rozdziału nagłówka, i jego możliwych uchwytach, w poszczegolnym okrążeniu pętli, i zrzuceniu tam pojedynczego kodu problemu ==== Jeżeli {{ZobaczTeż|text_rozdzialu}} tekst strony jest zakodowany, to iterujemy po tekście {{LinkPatrz|text_rozdzialu}} w poszukiwaniu kodów bazy kodów zakodowanego tekstu, w tym celu wywołujemy pętlę: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, wtedy uzyskujemy trzy obiekty w każdym przebiegu pętli, tzn. {{Code|szablon}} {{LinkPatrz|szablon}}, {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, za pomocę tego uruchamiamy funkcję: {{LinkŚródtytuł|SzablonNaglowkujWTekscieRozdzialu}}. Jeżeli funkcja napotkała uchwyt szablonu: {{Code|{{s|Śródtytuł}}}}, wtedy jest zatrzymywana, w takim razie mamy informację o wystąpieniu niedozwolonego szablonu nagłówka w tekście. A jeżeli takiego szablonu tam nie ma, to układ iterator {{LinkPatrz|iterator}} iteruje aż do zakończenia danych. ==== Uzyskiwanie nagłówka i do niego identyfikatora '''id''' ==== ===== Tekst niezakodowany nagłówka ===== Gdy tekst nie jest zakodowany, wtedy zmienna: {{LinkPatrz|czy_kodowanie}}, ma wartość odpowiaadające fałszywej, wtedy dla tego nagłówka {{LinkPatrz|naglowek}} jest uruchamiana funkcja: {{Code|{{sr|#p.["PrzetwórzNagłówek"]|p=Specjalne}}}}, wtedy otrzymujemy dwie wartości: {{Code|nazwa_rozdzialu_w_artykule}} {{Patrz|nazwa_rozdzialu_w_artykule}} - zmienna idententyfikatora, {{Code|naglowek}} {{LinkPatrz|naglowek}} - zmienna nagłówka. Te dwie zmienne zostały maksymalnie rozwinięte, zostały przystosowane do tego, aby słuzyły do tego, co trzego zostały stworzone. ===== Tekst zakodowany nagłówka ===== Gdy jednak {{LinkPatrz|czy_kodowanie}} przyjełajednak wartość fałszywą, wtedy jest uruchamiana funkcja: {{LinkŚródtytuł|SzablonyWywolywaneOgolny}}, z której otrzymujemy: {{Code|naglowek}} {{LinkPatrz|naglowek}} - zmienna przetworzonego i maksymalnie rozwiniętego nagłówka, oraz zmienne funkcje: {{LinkPatrz|Znaczniki}}, {{LinkPatrz|SzablonyStylowe}} i {{LinkPatrz|ZnakiSpecjalne}}. Na podstawie defiicji: {{Code|nazwa_rozdzialu_w_artykule}} {{LinkPatrz|nazwa_rozdzialu_w_artykule}}, mamy: {{Code|naglowek}} {{LinkPatrz|naglowek}}. ====== Kompletowanie nagłówka ====== Ten nagłówek kompletujemy funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, usuwając szablony indeksowania {{LinkPatrz|p.szablony_indeksowania}}, a także znaczniki: {{Tag|li}}, {{Tag|ul}} i {{Tag|ol}}. ====== Kompletowanie identyfikatora nagłówka ====== Kompletując: {{Code|nazwa_rozdzialu_w_artykule}} {{LinkPatrz|nazwa_rozdzialu_w_artykule}}, rozwijamy wszystko, oprócz atrybutów, {{Code|obiekt}} {{Code|{{=}}}} {{Code|ATRYBUTY}}, a na szablonach wywołujemy funkcję: {{LinkŚródtytuł|SzablonyWywolywaneOgolny}}. Na identyfikatorze nagłówka {{LinkPatrz|nazwa_rozdzialu_w_artykule}} Wywołujemy kolejno lokalne funkcje: {{LinkPatrz|SzablonyStylowe}} - do usuwania rozwiniętych kodów stylów, {{LinkPatrz|ZnakiSpecjalne}} - do usuwania cudzysłowów, i {{LinkPatrz|Znaczniki}} - do usuwania znaczzników. ====== Gdy w kodzie identyfikatora nie ma symbolicznych szablonów ====== W tym przypadku uruchamiamy fukcję do dekodowania znaków '''HTML''', tzn. dziesiętnych, szesnastkowych i literowych, funkcją: {{Code|{{sr|#p.DecodeKoduHTMLZnaku|p=Html}}}}, a później kodujemy specjalne znaki identyfikatora sposobem: {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, przy pomocy kodów '''HTML''' dziesiętnych. ===== Usuwanie zbędnych znaków w identyfikatorze ===== Usuwane są potrójne i podwójne cudzysłowy {{Code|'}} oraz odstępy i dolne myślniki na końcach łańcucha, a wewnętrz jego kolejne je są zastępowane jedną spacją. ===== Referencje i wzory matematyczne ===== Referencje są zastępowane odpowiednio przy pomocy funkcji: {{LinkŚródtytuł|RefPrzypisowy}}, a wzory matematyczne, dla obiektów typu {{Code|POSTMATH}} {{Patrz|POSTMATH}}, które są zastępowane prawidłowo poprzez: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.text.encode|b=tak}}}}, przy pomocy: {{Code|{{sr|#p.NormaKoduZakodowanegoHtmlTekstu|p=Szablonowe}}}}, obiektem: {{Code|postMath}} {{Patrz|postMath}} z ośmioma znakami cyferkami na końcu tego, którym jest {{Code|kod}} {{LinkPatrz|kod}}. ===== Wstępne przygotowanie identyfikatora do końcowego skutecznego użytku ===== Dla danego identyfikatora one mogą się powtarzać, a identyfikator musi być unikalny, zatem trzeba napisać ich dodatkowe numerki, po policzeniu otrzymamy {{Code|numer_tego_samego_naglowka}} {{Patrz|numer_tego_samego_naglowka}}. ====== Tablica identyfikatora i nagłówka ====== Funkcja wykorzystuje tablicę: {{Code|tablica_powtarzajacych_sie_elementow}} {{Patrz|tablica_powtarzajacych_sie_elementow}}, aby policzyć numer powtarzającego się identyfikatora '''id'''. Dla {{LinkPatrz|numer_tego_samego_naglowka}} równego {{Code|1}}, tworzemy tablicę {{Code|elementy_linku}} {{Patrz|elementy_linku}}, którego pierwszym elementem jest: {{LinkPatrz|nazwa_rozdzialu_w_artykule}}, a drugim nagłówek {{LinkPatrz|naglowek}}, a w przypadku tego numerku innego niż podana liczba, to dajemy do identyfikatora na końcu ten numerek po dolnym myślniku. ====== Uzupełnianie zmiennej do identyfikacji uchwytu z odpowiednim nagłówkiem ====== Jeśli: {{LinkPatrz|obiekty}} i {{LinkPatrz|numeracja}}, istnieją, wtedy do tej pierwszej tablicy dodawane są wszystkie elementy o takim samym typie z {{LinkPatrz|numeracja}}. To dodawanie na końcu tablicy przedstawia się: <syntaxhighlight lang="lua"> for _,value_numeracja in ipairs(numeracja)do obiekty[#obiekty+1]={value_numeracja,{nazwa_strony_z_naglowkami,elementy_linku[1], elementy_linku[2]}}; end; </syntaxhighlight> ====== Tworzenie tablicy nagłówkami i indetyfikatorami ====== Jeśli {{Code|poziom_rozdzialu}} jest większy od zera, tzn. {{Code|> 0}}, wtedy liczymy numer rozdziału przy pomocy funkcji: {{Code|HNumer}} {{LinkPatrz|HNumer}} liczony z: {{Code|poziom_rozdzialu}} {{LinkPatrz|poziom_rozdzialu}}, tworząc w ten sposób wynik w postaci zmiennej {{Code|numer_rozdzialu_ustalony}} {{Patrz|numer_rozdzialu_ustalony}}. Jest tworzona tablica spisu: {{Code|tablica_spisu_tresci}} {{Patrz|tablica_spisu_tresci}}, jako pusta tablica, z później dodanym elementem o kluczu: {{Code|nazwa_strony}}, którym jest o wartości: {{LinkPatrz|nazwa_strony_z_naglowkami}}. Do tablicy: {{LinkPatrz|tablica_spisu_tresci}}, dodawane są elementy według schematu: <syntaxhighlight lang="lua"> tablica_spisu_tresci[#tablica_spisu_tresci+1]={elementy_linku,numer_rozdzialu_ustalony}; </syntaxhighlight> === Dalsza część funkcji - Tom III === Będziemy się tutaj zajmowali z tekstem przed pierwszym rozdziałem na stronie. ==== Nagłówek na samym początku strony ==== Gdy kodowanie jest jednak włączone, tzn.: {{LinkPatrz|czy_kodowanie}}, jest prawdziwe, i mamy artykuł korzystany, tzn.: {{LinkPatrz|czy_artykul_korzystany}}, i zaprzeczenie wyłowania funkcji: {{LinkPatrz|CzyJestTakiProblemJakoElementTablicy}}, przyjmuje wartość prawdziwą, to jeśli na samym początku znajduje się rozdział, wtedy funkcja zwraca wynik: {{LinkPatrz|tablica_spisu_tresci}}. ==== Tekst przed pierwszym rozdziałem ==== Wyznaczamy ten tekst, który będzie ukrywał się pod zmienną: {{Code|tekst_zerowy}} {{Patrz|tekst_zerowy}}, który jest tekstem przed pierwszym rozdziałem lub samym tekstem zakodowanego wikikodu {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}}. ===== Szablony nagłówka w tekście zerowym ===== W tym tekście iterujemy jak w punkcie: {{LinkZobaczTeż|text_rozdzialu}}, tylko zamiast {{LinkPatrz|text_rozdzialu}} jest {{LinkPatrz|tekst_zerowy}}. === Dalsza część funkcji - Tom IV === Zwracaną wartością tej funkcji jest: {{Code|tablica_spisu_tresci}} {{LinkPatrz|tablica_spisu_tresci}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> e37ka5x5p88pf5e0evqaj0j8tivo9g3 548360 548359 2026-07-26T13:07:45Z Persino 2851 /* Tworzenie tablicy nagłówkami i indetyfikatorami */ 548360 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}|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.PobieranieInformacjiRamkiRozpatrywanejStrony}}{{Code|p.PobieranieInformacjiRamkiRozpatrywanejStrony}} == Pobieranie danych z obiektu {{LinkPatrz|self}}, biorąc jego podtablicę o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiRamkiRozpatrywanejStrony(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa ramki tablicy transportu. == {{Śródtytuł|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}}{{Code|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}} == Funkcja uruchamiacz, główna funkcja dzięki, której ładują się informacje według modułu: {{Code|{{ld2|StronicowyParser/informacje}}}} (tam jest użyty). Ten ładowacz jest pokazany w module opis: {{Code|{{lr2|Moduły/StronicowyParser/informacje}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}. === {{Śródtytuł|DaneNazw}}{{Code|DaneNazw}} === Funkcja licząca nazwy podanej nazwy strony, tzn.: {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} {{Patrz|nazwa_artykulu}}, oraz zwracające te kolejno nazwy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function DaneNazw(pelna_nazwa_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|pelna_nazwa_strony}} {{Patrz|pelna_nazwa_strony}} - pełna nazwa strony. === Dalsza część funkcji - Tom I === ==== Tworzenie i inicjowanie początkowych tabel ==== Funkcja tworzy podtabele tabeli zmiennej obiektowej {{LinkPatrz|self}} o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, o wartości pustej. Następnie są tworzone podtabele puste w tej ostatniej o kluczach: {{Code|dane_analizy_stron}} {{Patrz|dane_analizy_stron}} i {{Code|licencja}}{{Patrz|licencja}}, oraz nilowe zmienne z tego samego, co ostatnie, o kluczu: {{Code|problemy}} {{Patrz|problemy}}. ==== Zmienne nazw strony bieżącej, czy nawet aktualnej, w zależności, czy istnieją odpowiednie ustawienia ==== Jest liczony adres strony, na której jest uruchomiona dana strona, wewnętrznej bezparametrowo według: {{Code|{{sr|#p["PełnaNazwaArtykułu"]|p=Książkowe}}}} {{Patrz|strona_aktualna}}, co z tego są liczone z niego: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, co z tego jest liczona pełna nazwa książki {{Code|pelna_nazwa_ksiazki}} {{Patrz|pelna_nazwa_ksiazki}}. ==== Zbieranie danych ustawień z: {{Code|.../config}}, jeśli istnieją ==== Jest liczony pełny adres ustawień: {{Code|pelna_nazwa_ksiazki_ustawienia}} {{Patrz|pelna_nazwa_ksiazki_ustawienia}}, według schematu: {{Code|"Szablon:Podręcznik/Ustawienia/"..pelna_nazwa_ksiazki}} {{Patrz|UstawieniaKsiążki}}. Co z tego jest sprawdzane, czy istnieje strona: {{Code|pelna_nazwa_ksiazki_ustawienia.."/config"}} {{Patrz|config}}, a jeśli tak, to wtedy wiemy, że to jest szablon, to go przedstawiamy w postaci szablonowej, licząc z: {{Code|{{sr|#p.NazwaSzablonu|p=Szablonowe}}}}. Dalej jest liczony ostatni wyliczony szablon z parametrem {{Code|książka}} {{Patrz|książka}}, dalej jeszcze raz, tym razem z parametrem: {{Code|artykuł}} {{Patrz|artykuł}} - te parametry przedstawiają parametry artykułu książkowego, skąd możemy ściągać stronę, by ją wyświetlić na stronie aktualnej, na pewno parametr {{LinkPatrz|książka}} nie może być parametrem składających z samych znaków odstępów, a jeśli tak jest, w takim razie z tych dwóch parametrów jest liczony parametr {{Code|strona}} {{Patrz|strona}}. Dalej liczymy, czy ona jest poprawnym adresem, używając funkcji: {{Code|{{sr|#p["CzyNiepoprawnaNazwa"]|p=Pudełko/Tom I}}}}. A jeżeli adres jest jednak poprawny, ta funkcja zwraca wartość odpowiadającej fałszywej wartości, wtedy jest liczony pełny adres strony, jeżeli ona jest względna z parametrów, tzn. parametr pierwszy: {{LinkPatrz|strona}}, i parametr drugi: {{LinkPatrz|strona_aktualna}}, co względem tej funkcji mamy już: {{LinkPatrz|strona}}, czyli po tej operacji (procedurze) policzyliśmy bezwzględny jego adres. ===== Liczenie nazw z parametru pełnej nazwy aktualnej, nie bieżącej, strony wynikłe z obliczeń z ustawień ===== Policzona wartość strony: {{LinkPatrz|strona}}, jest sprawdzana, czy adres (strona), pod którym ona się kryje, istnieje, a jeśli tak, to ten adres jest tylko formatowany. Porównujemy adres {{LinkPatrz|strona}} z {{LinkPatrz|strona_aktualna}}, czy przedstawiają nie ten sam adres, a jeżeli tak, to liczymy wszyskie nazwy strony, czyli dla bez {{Code|aktualna_}}, przyrównujemy do tego z tym początkiem, co odpowiada pełnej nazwie strony z {{Code|strona_aktualna}} {{LinkPatrz|strona_aktualna}} {{ZobaczTeż|strona_aktualna}}, i używając funkcji: {{LinkŚródtytuł|DaneNazw}}, ze zmiennej: {{Code|strona}} {{LinkPatrz|strona}} {{ZobaczTeż|strona}}. Te ostatnie nazwy są potrzebne do analizy strony bieżącej, nie aktualnej, tzn. na niej, jakie są szablony, jakie posiada spisy, jakie książki, a w nim spisy do nich, są dołączone. ====== Policzone nazwy strony aktualnej wpisane do ogólnej tablicy ====== A póżniej z adresów pliczonych wywołania, dotyczącej tego aktualnego, liczymy dla podtabeli: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienne o kluczach: {{Code|aktualna_nazwa_przestrzeni}} {{Patrz|aktualna_nazwa_przestrzeni}}, {{Code|aktualna_nazwa_przestrzeni_ksiazki}} {{Patrz|aktualna_nazwa_przestrzeni_ksiazki}}, {{Code|aktualna_nazwa_ksiazki}} {{Patrz|aktualna_nazwa_ksiazki}} i {{Code|aktualna_nazwa_artykulu}} {{Patrz|aktualna_nazwa_artykulu}}, mając zmienne nazw policzone z tego aktualnego. ===== Czy strona bieżąca, ale nie zbiorcza, jest wyświetlana na stronie aktualnej, czy może jest tylko stroną zbiorczą uruchomioną pod inną nazwą ===== Jeśli zmienne nazw są policzone z: {{LinkZobaczTeż|strona}} i {{LinkZobaczTeż|strona_aktualna}}, to wtedy kolejno porównujemy, czy któraś z nich jest nierówna, a jeśli tak, to wywołujemy szablon z parametru: {{Code|zastępcza}} {{ZobaczTeż|zastępcza}} - jest to, czy strona jest zbiorcza, o nazwie: {{LinkPatrz|config}}, czy powinna być wartością niepustą. A jak tak, to wyznaczamy z tablicy: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienną o kluczu: {{Code|alternatywna}} {{Patrz|alternatywna}}, co przyrównujemy jemu wartość logiczną z uzyskanego z szablonu z parametrem {{LinkZobaczTeż|zastępcza}}, a jeżeli ta zmienna przyjmuje wartość odpowiadająca fałszywej, wtedy zmienna z tej samej tablicy o kluczu: {{Code|inna_strona_aktualna_niz_biezaca}} {{Patrz|inna_strona_aktualna_niz_biezaca}} - jest to, czy strona jest inna niż zbiorcza, ale wyświetlana na innej stronie, przyjmuje wartość prawdziwą. === Dalsza część funkcji - Tom II === Tworzymy zmienną: {{Code|tablica_zmiennych}}, która jest tablicą pustą, którą uzupełniamy o elementy o kluczach: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}} - są to dane zebrane z bieżącej strony, i {{Code|linkobiekt}} {{Patrz|linkobiekt}} - są to dane zebrane o linkach na stronie odpowiadających poszczególnym obiektom. Uruchamiamy funkcję: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}, z której wyznaczamy parametr: {{Code|tabela_listy_danych_analizy_ksiazki}} - są to dane zebrane z bieżącej i innych stron skojarzonej z nim, te elementy są tylko w postaci nieprzetworzonej, ale przygotowanej. A jeśli ten parametr jest tabelką - a jeżeli nie jest, to nastąpił błąd przetwarzania, i funkcja nie idzie dalej w instrukcję warunkową, wtedy wywołujemy funkcję: {{Code|{{sr|#p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony|p=StronicowyParser/NumeracjaObiektówStron}}}}. === Dalsza część funkcji - Tom III === Na sam koniec funkcji zwracamy tablicę: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}} - ta zmienna zawiera dane w postaci przetworzonej policzonej, tzn. uchwytom są przydzielone numeracje, sprawdzane, czy uchwyty są policzone, są wyznaczone wszystkie kody problemów, które później są potrzebne do wyznaczania wszystkich kategorii błędów na stronie. == {{Śródtytuł|p.SpisRzeczyWedlePodanegoTekstu}}{{Code|p.SpisRzeczyWedlePodanegoTekstu}} == Funkcja generowania liczenia nagłówków strony, co na tej podstawie może być generowany '''spis treści''' strony. Funkcja przyporządkowuje uchwytom szablonów nagłówków ich identyfikatory i te nagłówki, w którym one leżą, jeżeli zmienna {{LinkPatrz|obiekty}} istnieje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SpisRzeczyWedlePodanegoTekstu(self,tekst_artykulu,nazwa_strony,czy_artykul_korzystany, tylko_naglowek,obiekty,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_obiektow_strony_danych_kodow_specjalnych_modul,KtorySzablonMaZwracacKategorie,wzory_zamiast_kodow,tabela_elementow_strony_kodow)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}} - tekst przetworzony, przygotowany ewentualnie przez pewną funkcję, rozważanego artykułu, * {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} - nazwa strony, danego spisu, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy strona jest bieżąca, * {{Code|tylko_naglowek}} {{Patrz|tylko_naglowek}} - pisz adresy stron z tylko nagłówkami '''#''', bez adresów stron, * {{Code|obiekty}} {{Patrz|obiekty}} - elementy tam zebrane, są wykorzystywane do analizy nagłówków poprzez szablon {{s|Śródtytuł}}, któremu temu nagłówkowi odpowjada pewien uchwyt, czy uchwyty, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}, * {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} - nazwa aktualna, czy bieżąca strony, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy zebranych informacji w postaci zakodowanej modułu {{m|Szablonowe}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tabela przeanalizowanych elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} {{Patrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} - tablica dwuwymiarowa kodów o kluczach: szablonów referencji: '''REF...''' i '''POSTMATH''' oraz ich elementu numeru kodu {{Code|kod}}, którego elementem jest kod tego elementu, * {{Code|KtorySzablonMaZwracacKategorie}} {{Patrz|KtorySzablonMaZwracacKategorie}} - tabela składająca się z trzech elementów, którego pierwszy element to: {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{Patrz|KtorySzablonMaZwracacKategorieNaglowek}} - funkcja dla szablonów problemów dla jak: {{s|Śródtytuł}}, w nagłówku, drugi: {{Code|KtorySzablonMaZwracacKategorieTekst}} {{Patrz|KtorySzablonMaZwracacKategorieTekst}} - funkcja dla tego typu szablonów, ale dla nich w tekście, nie w nagłówku, trzeci: {{Code|CzyJestTakiProblemJakoElementTablicy}} {{Patrz|CzyJestTakiProblemJakoElementTablicy}} - czy nie rozważać, dla rozdziałów zerowych, przeciwnie: ta funkcja może przyjmować wartość {{Code|nil}}, wartość zwracana tego elementu, bo to jest funkcja, zależy, czy jest ustawiony kod problemu: {{Code|nagłówek w tekście rozdziału w stronie korzystanej}} {{Patrz|nagłówek w tekście rozdziału w stronie korzystanej}}, a jeżeli jest taki, to ta funkcja przyjmuje zrzuconą wartość {{Code|true}}, * {{Code|wzory_zamiast_kodow}} {{Patrz|wzory_zamiast_kodow}} - rozważaj wzory według tablicy: {{LinkPatrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}}, lub koduj to według funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}} - to wykorzystuj w przypadku, gdy: {{LinkPatrz|nazwa_strony}}, istnieje, i jest wartością pustą, lub {{Code|{{sr|#p.NormaKoduZakodowanegoWikiTekstu|p=Szablonowe}}}} - przeciwnie, * {{Code|tabela_elementow_strony_kodow}} {{Patrz|tabela_elementow_strony_kodow}} - baza tabela z zapamiętanymi podtabelami, którego poszczególne elementy wykorzystywane w spisie posiadają w sobie tylko pierwszy element w postaci przetworzonego uchwytu, bo używamy tylko uchwytów szablonów nagłówków. === {{Śródtytuł|SpecjalneWprowadzeniaTekstu}}{{Code|SpecjalneWprowadzeniaTekstu}} === Funkcja zamieniające pewne szablony, czy znaczniki, na rozdziały równaniowe. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local SpecjalneWprowadzeniaTekstu=function(szablon,obiekt,kod,czy_szablon,czy_znacznik,czy_liczyc,funkcja1,funkcja2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} {{Patrz|szablon}} - zmienna (szablon), nie musi być to normalny szablon, * {{Code|obiekt}} {{Patrz|obiekt}} - zmienna, którego typu jest obiekt, * {{Code|kod}} {{Patrz|kod}} - numer obiektu typu {{LinkPatrz|obiekt}}, * {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy to jest szablon, * {{Code|czy_znacznik}} {{Patrz|czy_znacznik}} - czy to jest znacznik, * {{Code|czy_liczyc}} {{Patrz|czy_liczyc}} - czy funkcję liczyć w sposób złożony, szablony typu: {{s|SpisTreści}} - zamieniający go na znacznik, czy prosty, co na samym końcu uruchamiana jest funkcja: {{LinkPatrz|funkcja1}}, * {{Code|funkcja1}} {{Patrz|funkcja1}} - funkcja operująca na wygenerowanym pośrednio (dłuższe liczenie) lub bezpośrednio (krótsze) znaczniku, wychodząca z szablonu, i zamieniająca go na rozdział równaniowy, funkcja operująca dla szablonów: {{s|SpisTreści}} lub {{s|HNumer}}, * {{Code|funkcja2}} {{Patrz|funkcja2}} - funkcja operująca na znaczniku '''HTML''' nagłówka - typu jak: {{Tag|h1}}, i zamieniająca go na rozdział równaniowy. ==== {{Śródtytuł|ParametrNR}}{{Code|ParametrNR}} ==== Funkcja liczy dokładnie parametr dany o danym numerze, zbiór danych parametrów oznaczających to samo może być wiele, tylko że jedne mogą być ważniejsze od drugich. Definicja skrótowa funkcja: <syntaxhighlight lang="lua"> local function ParametrNR(numer)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer}} {{Patrz|numer}} - numer parametru. Funkcja wykorzystywuje funkcję do uruchomienia: {{Code|{{sr|#p.SpisRzeczySzablon|p=StronicowyParser/Potrzebne}}}}, do generowania parametrów, a właściwie ich wartości. ==== {{Śródtytuł|ObiektKodNumer}}{{Code|ObiektKodNumer}} ==== Funkcja dodająca do bazy danych kolejny element bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla danego obiektu element na samym końcu, po maksymalnym elemencie do niego. Funkcja liczy kod przy pomocy funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local ObiektKodNumer=function(szablon,obiekt)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}. ==== Dalszy opis funkcji ==== Dla {{LinkPatrz|czy_szablon}} prawdziwego dla szablonów sztucznego spisu treści, sprawdzanego przez tabelkę: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, dla danego szablonowego rozdziału generowanego według {{s|HNumer}}, jest on zamieniany na rozdział równaniowy poprzez funkcję: {{LinkPatrz|funkcja1}}. Ta tabela przedstawia się treścią: <syntaxhighlight lang="lua"> p.szablony_sztucznego_wprowadzenia_tekstu={ ["HNumer"]=1, }; </syntaxhighlight> Dla innych rozdziałów szablonowych, tym razem generowanego przez szablon {{s|SpisTreści}}, którego parametry są wyznaczane przez funkcję: {{LinkŚródtytuł|ParametrNR}}, tabelka parametrów opisująca to: <syntaxhighlight lang="lua"> p.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu={ ["SpisTreści"]={{"artykuł",1,},{"książka",2,},{"nazwa",3,},{"dodatek",4,},{"poziom",},}, }; </syntaxhighlight> Funkcja liczy artykuł, koloruje do niego link w: '''spisie treści''', na czerwona, wtedy generuje dodatkowy znacznik, z właściwością: {{Code|color:red}}, gdy on nie istnieje, i to wstawia do tabeli bazy, lub bez niego, wtedy bezposrednio generuje tekst równy nazwie tego szablonu, opakowany, lub nie, w zależności od istnienia. Do policzenia strony, czy ona istnieje, musi być przedtem zdekodowany funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, by później policzyć to sprawdzenie przy pomocy: {{Code|{{sr|#p.PoliczZbiory|p=Techniczne}}}}. W każdym bądź razie jest ruchumianiana funkcja: {{LinkPatrz|funkcja1}}. Gdy to nie jest szablon, tzn.: {{LinkPatrz|czy_szablon}}, jest fałszywe, ale {{LinkPatrz|czy_znacznik}} jest prawdziwe, to takie znaczniki, jak od: {{Tag|h1}} do {{Tag|h6}}, są zamieniane na czysty tekst. W takim razie wywoływana jest dla tego przypadku funkcja: {{LinkPatrz|funkcja2}}. Funkcja: {{LinkPatrz|funkcja1}}, jest dla szablonów nagłówków, a: {{LinkPatrz|funkcja2}}, dla znaczników nagłówków. Z tych generowanych czystych generowanych tekstów są tworzone w tekście rozdziały równaniowe, by później wygenerować '''spis treści''', właśnie z nimi - z tymi nagłówkami, a bardziej ściśle linkami do nich. === {{Śródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}{{Code|SzablonNaglowkujWNaglowkuRozdzialu}} === Fukcja do obsługi nagłówków {{LinkPatrz|Śródtytuł}} w nagłówku, nie w tekście poza nim. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWNaglowkuRozdzialu(szablon,obiekt,kod,powtorka,parametry_wywolania_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}, * {{Code|powtorka}} {{Patrz|powtorka}} - numer użycia takiego samego szablonu typu {{s|Śródtytuł}} {{Patrz|Śródtytuł}}, * {{Code|parametry_wywolania_szablonu}} {{Patrz|parametry_wywolania_szablonu}} - parametry szablonu wraz z ich wartościami, * {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} - nazwa szablonu wywołania, * {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} - modyfikatory szablonu. Funkcja sprawdza, czy szablon w nagłówku jest typu {{LinkPatrz|Śródtytuł}}, a jeżeli tak, to liczy jego uchwyt, najpierw wyznacza je z parametru o nazwie {{Code|uchwyt}} {{Patrz|uchwyt}}, dalej sprawdzane jest, czy taki uchwyt tak zdefiniowany istnieje, jeśli tak, to wydobywana jest jego przetworzona tabela z tym właśnie uchwytek, funkcja robi to względem numeru {{Code|kod}} {{LinkPatrz|kod}} tego szablonu na podstawie funkcji: {{Code|{{sr|#p.WydobywanieUchwytuZeiBezNumeracji|p=StronicowyParser/ZbieranieDanychStron}}}}. Jeżeli wydobyta tabela {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} nie istnieje, w takim razie jest ona dekodowana funkcją: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, a później jest traktowana jako adres '''URL''', tzn. jest dekodowana funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, dalej jest tworzona tabela pusta: {{LinkPatrz|lista_dwuelementowa}}, co dalej jest tam wstawiana do niej jako pierwszy element uzyskany uchwyt przetworzony. A jeśli jednak {{LinkPatrz|lista_dwuelementowa}} została wydobyta z naszej funkcji tabela, która istnieje, wtedy funkcja idzie, niż poprzednio, w inny krok instrukcji warunkowej, wtedy z tej tabeli jest wydobywany pierwszy element jako przetworzony wcześniej uchwyt. Gdy {{ZobaczTeż|uchwyt}} przetworzony uchwyt jest łańcuchem znaków niepusty, wtedy on jest dodawany w postaci tabeli, w której jest ten uchwyt, na sam koniec tabeli {{Code|numeracja}} {{Patrz|numeracja}}. Gdy liczba powtórzeń jest większa niż zero, wtedy jest wywoływana funkcja, przy którym mają być zwrócone kategorie, jeśli zostaną użyte, o nazwie {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}}. Gdy jednak uchwyt uzyskany nie istnieje, to wtedy jest to samo robione, co w: {{LinkZobaczTeż|uchwyt}}. Przed zwróceniem ile razy została dokonana powtórka, jest powiększany licznik powtorek, i to jest otrzymywane z tej funkcji. === {{Śródtytuł|SzablonNaglowkujWTekscieRozdzialu}}{{Code|SzablonNaglowkujWTekscieRozdzialu}} === Funkcja do analizy szablonów nagłówków w tekście rozdziału, nie w nagłówku. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWTekscieRozdzialu(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja sprawdza, czy tekst w bazie kodów jest typu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, w takim razie po wykryciu, że dla tego, że jest to wywołanie szablonowe, a nie instrukcja warukowa w wikikodzie w tekście, wtedy podobnie jest robione, co w funkcji: {{LinkŚródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}, tylko zamiast {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}} jest {{Code|KtorySzablonMaZwracacKategorieTekst}} {{LinkPatrz|KtorySzablonMaZwracacKategorieTekst}}. Przy wykryciu tam szablonu typu {{LinkPatrz|Śródtytuł}}, funkcja zawsze zwraca wartość {{Code|true}}, w innych przypadkach {{Code|false}}. W przypadku intrukcji warunkowej w wikikodzie i dla ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jest wtedy zwracana wartość {{Code|false}}. Funkcja w pozostałych przypadkach zwraca wartość logiczną {{Code|false}}. === {{Śródtytuł|SzablonyWywolywane}}{{Code|SzablonyWywolywane}} === Szablon zamieniający specjalne znaki szablonów, tzn.: {{Code|{{((}}}}, {{Code|{{))}}}}, {{Code|{{!}}}} i {{Code|{{=}}}}, kolejno na: {{Code|{{s|((}}}}, {{Code|{{s|))}}}}, {{Code|{{s|!}}}} i {{Code|{{s|{{=}}}}}}, takich {{ZobaczTeż|StronicowyParser}}, które zawierają wywołania '''Stronicowego Parsera''', czyli ramki typu: {{Code|{{m|StronicowyParser}}}}, czy: {{Code|{{m|StronicowyParser/}}}}, a inne są po prostu przypisywane. W przypadku linków, i nie tylko, tzn. dla szablonów {{LinkZobaczTeż|StronicowyParser}}, z innych stron niż korzystana, co jest trafnie oznaczone zaprzeczeniem parametru {{LinkPatrz|czy_artykul_korzystany}} są liczone parametry pudełkowe {{Code|{{m|Pudełko}}}}. Strony wskazane przez te parametry są analizowane, przy czym linki są przez inną funkcję, a inne już przez znów inną. Szablony nagłówków typu {{LinkPatrz|Śródtytuł}}, czy szablonów stronicowych otwierających i zamykających, one lub jego koledzy, tzn. ich: {{s|StronaStart}} i {{s|StronaKoniec}}, są zastępowane ciągiem pustym. Inne parametry opisane z tabeli {{Code|{{sr|#p.szablony_stronicowe_kontenerowe_formatowania_wzorowego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, są zastępowane ich zawartością, by uniknąć kontaktu nagłówków z tego typu szablonami. Szablony ideksowania określone tabelą: {{Code|{{sr|#p.szablony_indeksowania}}}} {{Patrz|p.szablony_indeksowania}}, nie są rozwijana z kodowania lub są, w zależności, czy zmienna: {{Code|czy_indeksowanie}} {{Patrz|czy_indeksowanie}}, ma wartość {{Code|true}} - tutaj są, czy odpowiadającej fałszywej wartości logicznej - a tutaj już nie. W przypadku instrukcji warunkowych, czy ramek {{lpg|Lua}} w {{lpg|Lua|Scribunto}}, one są rozwijane - kod tego jest zawartością {{LinkPatrz|szablon}}. W innych przypadkach funkcja zwraca wartość {{Code|nil}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywane(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. W powyższym opisie występują szablony opisane w: {{LinkPatrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, a jej definicja jest: <syntaxhighlight lang="lua"> p.szablony_stronicowe_kontenerowe_formatowania_wzorowego={ ["Formuła"]=1; }; </syntaxhighlight> Jest to szablon: {{s|Formuła}} i podobne, liniowe wstawiane do tekstu, ta tabela ma za zadanie zastąpić te szablony ich poszczególnym zawartościom, a ta funkcja, która ją wykorzystywuje się do tego przypadku, jest o nazwie: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}. Tabelą szablonów indeksowania, to są one zdefiniowane przez: {{LinkPatrz|p.szablony_indeksowania}}, a jej zawartość: <syntaxhighlight lang="lua"> p.szablony_indeksowania={ ["Kotwica"] =true, ["Indeksuj"]=true, }; </syntaxhighlight> Są to szablony kotwic: {{s|Kotwica}}, który jest szablonem liniowym, a {{s|Indeksuj}}, natomiast to blokowy. === {{Śródtytuł|SzablonyWywolywaneOgolny}}{{Code|SzablonyWywolywaneOgolny}} === Funkcja rozwija nagłówek, wydzielając z niego zwykły tekst, nie dopełniając pewnych operacji. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywaneOgolny(naglowek)...end; </syntaxhighlight> Parametry funkcji: * {{Code|naglowek}} {{Patrz|naglowek}} - tekst nagłówka napisu wprowadzenia tekstu. Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["WydzielZwykłyTekst"]|p=Specjalne}}}}, kod jej wywoływany jest z parametrami: <syntaxhighlight lang="lua"> local naglowek,Znaczniki,SzablonyStylowe,ZnakiSpecjalne=specjalne_modul["WydzielZwykłyTekst"]( { ---- tekst nagłówka; tekst=naglowek, ---- Nie wykorzystywuj w działaniu funkcji: Znaczniki, SzablonyStylowe, ZnakiSpecjalne; ["nagłówek"]=true, ---- Nie wykorzystuj dekodowania tekstu zakodowanego, bez rozwijania, ale wręcz przzeciwnie rozwijaj, pozostawiaj pewne szczególne kody przed rozkodowaniem; nieklasycznie=true, ---- Bazę kodowania weź z zewnątrz; kodowanie=false, ---- Wykorzystywana tablica kodowania tekstu modułu: Module:Szablonowe, zakodowanego z zewnątrz; ["tablica kodowania"]=tablica_analizy_obiektow_strony_dany_modul, },__FUNKCJA1,__FUNKCJA2); </syntaxhighlight> Ta funkcja wydziela zwykły tekst z nagłówka z szablonami zwykłymi i ramkami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, bez naruszenia działania innych elementów szablonowych, jak tagi, czyli: {{s|#tag:}}, które też współdziałają też w kodzie danego nagłówka. Również i z linkami wewnętrznymi i zewnętrznymi, z których wydziela się zwykły tekst, bo wiadomo, że one nie mogą się znaleźć w linkach '''spisu treści''', bo nie może być link w linku w nim, a one niezależnie jakie, bo to ze względu na {{Strong|HTML}} nie możliwe technologicznie. Definicje dwóch kolejnych funkcji zdefiniowanych powyżej: <syntaxhighlight lang="lua"> ---- szablon - kod obiektu kodu w wikikodzie; ---- obiekt - typ obiektu kodu powyżej; ---- kod - numer tego samego typu obiektu; local __FUNKCJA1=function(szablon,obiekt,kod) ---- Funkcja wykorzystywana do ewentualnego modyfikowania użytych szablonów i przedstawianiu jego kodem symbolicznym, lub zastępowania pewnych szablonów nagłówków wartością pustą; local szablon,wynik=SzablonyWywolywane(szablon,obiekt,kod); return szablon,wynik; end; local __FUNKCJA2=function(szablon,obiekt,kod) --- rozwijaj uzyskany szablon, dalej, gdy napotkasz, jeśli zostanie włączone zmienna indeksowania w postaci wartości logicznej; return czy_indeksowanie; end; </syntaxhighlight> Funkcja zwraca wartości, tzn. zmienną z przetworzenia nagłówkowego, bez usuniętych znaczników, stylów i znaków specjalnych, tzn. części otoczone pewnymi cudzysłowami z taką samą liczbą, więc pogrubienia i pochylenia tekstu: <syntaxhighlight lang="lua"> return naglowek, Znaczniki, SzablonyStylowe, ZnakiSpecjalne; </syntaxhighlight> Definicje tych zwróconych funkcji, tzn.: {{Code|Znaczniki}} {{Patrz|Znaczniki}}, {{Code|SzablonyStylowe}} {{Patrz|SzablonyStylowe}} i {{Code|ZnakiSpecjalne}} {{Patrz|ZnakiSpecjalne}}, którego opisy raczej przedstawiają ich nazwy, dokładnie one są udokumentowane tutaj: <syntaxhighlight lang="lua"> ---- tekst - tekst do przetworzenia; local function Znaczniki(tekst,jakie,__FUNKCJA1,__FUNKCJA2) ---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML;---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML; ---- funkcja do usuwania znaczników, tzn. w niej inne funkcje: __FUNKCJA1 - funkcja do zakodowywania tekstu przed usuwaniem znaczników, a __FUNKCJA2 - funkcja do odkodowania tego, co pozostało; tekst=p["UsuńZnaczniki"](tekst,jakie,__FUNKCJA1,__FUNKCJA2); return tekst; end; local function SzablonyStylowe(tekst) ---- funkcja do usuwania uruchomionych stylów, tzn. tych: <templatestyles src="..."/>, wtedy to staje się kodem parsera przetwarzanego za pomocą tekstu dla tego typu znacznika, kodami parsera mogą być też inne obiekty jak ramki Lua w Scribunto, ale nie muszą być takie, ale my rozważamy tutaj tylko jeden typ kodu parsera. tekst=p["UsuńSzablonyStylów"](tekst); return tekst; end; local function ZnakiSpecjalne(tekst) ---- funkcja do usuwania cudzysłowów w takich samych ilościach z prawej i z lewej strony danego fragmentu tekstu w nim; tekst=p["UsuńZnakiSpecjalne"](tekst); return tekst; end; </syntaxhighlight> Definicje tych funkcji znajdują się również w module: {{Code|{{ld2|Specjalne}}}}, które również przedstawiają inne funkcje do upraszczania tekstu, w tym nagłówka, ale nie tylko, bo dowolnego tekstu. === {{Śródtytuł|RefPrzypisowy}}{{Code|RefPrzypisowy}} === Mechanizm zamieniający kod referencji na jej wersję wyświetlaną na ekranie, czyli w nawiasie kwadratowym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local RefPrzypisowy=function(obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|obiekt}} {{Patrz|obiekt-ref}} - nazwa typu przypisu, czyli jak bez nazwy, czy też jak: '''uwaga''', * {{Code|kod}} {{Patrz|kod-ref}} - numer danego typu przypisu. Gdy {{LinkPatrz|obiekt-ref}} nie ma nazwy, wtedy w nawiasie kwadratowym będzie tylko numerek {{LinkPatrz|kod-ref}}, a jeśli ma nazwę, to nazwa oddzielona spacją z prawej strony, a po nim jest ten numerek. === Dalsza część funkcji - Tom I === Tutaj opowiemy o części wstępnej tej funkcji. ==== Ustalanie zmiennej nazwy modułu aktualnej, czy bieżącej ==== Funkcja ustawia zmienną: {{Code|czy_kodowanie}} {{Patrz|czy_kodowanie}}, na podstawie istnienia zmiennych: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} i {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. ==== Wyznaczanie nazwy modułu aktualnej, czy bieżącej, dla strony aktualnej, jeśli ona nie istnieje ==== Jeżeli zmienna {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} jest odpowiadającej wartości fdałszywej i mamy strona korzystaną, co określa parametr {{LinkPatrz|czy_artykul_korzystany}}, w postaci wartości prawdziwej, wtedy są liczone kolejne zmienne nazw na podstawie istnienia lub nieistnienia zmiennej {{Code|alternatywna}}, a jeśli ona jest prawdziwa, wtedy wybierane są zmienne z tą aktualną nazwą woluminu wynikłe z {{LinkZobaczTeż|strona_aktualna}}, przeciwnie z nazwą bieżącą woluminu,na podstawie tego, co wyświetla '''Stronicowy Parser''', te nazwy są ze sobą łączone, wtedy powstaje pełna nazwa strony, którą przyrównujemy do {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}}. Jeśli wartość {{LinkPatrz|czy_artykul_korzystany}} jest jednak fałszywa, w takim razie jest liczona {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} na podstawie wartości {{LinkPatrz|nazwa_strony}}. ==== Kodowanie '''HTML''' specjalnych znaków strony ==== Nazwę strony {{LinkPatrz|nazwa_strony}}, w której mogą występować specjalne znaki, które są niezrozumiałe z punktu widzenia '''HTML''', jeżeli np.z nich trzeba zbudować identyfikatory '''id''', a więc trzeba je zakodować, robimy to funkcją: {{Code|{{sr|#p.EncodeId|p=Html}}}}. ==== Zwracanie funkcji liczenia numeru nagłówka ==== Wyznaczamy funkcję: {{Code|HNumer}} {{Patrz|HNumer}}, która jest efektem zwrócenia przez: {{Code|{{sr|#p.LiczonyHNumer|p=StronicowyParser/Potrzebne}}}}. ==== Zamienianie szablonów nagłówków, czy nawet tych znaczników, na rozdziały równaniowe ==== Jeśli {{LinkPatrz|czy_kodowanie}} przyjmuje wartość prawdziwą, wtedy definiujemy funkcję: {{LinkŚródtytuł|SpecjalneWprowadzeniaTekstu}}. Dalej funkcja zamienia szablony: {{s|SpisTreści}} i {{s|HNumer}}, a także znaczniki: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, na ich wersję równaniową, aby dało się je rozpoznać jako rozdziały i było je łatwo wsadzić do szablonu takiego jak: {{s|Spis treści}} i inne podobne, za pomocą dwóch kolejnych funkcji wsadzonych do pewnej funkcji modułu {{m|Szablonowe}}, która służy do operacji na takich przypadkach. === Zmienna strony z nagłówkaami === Gdy jest podana zmienna: {{Code|tylko_naglowek}} {{LinkPatrz|tylko_naglowek}}, ma wartość prawdziwą, wtedy zmienna: {{Code|nazwa_strony_z_naglowkami}} {{Patrz|nazwa_strony_z_naglowkami}}, przybiera wartość pustą, przeciwnie gdy zmienna {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}} jest ciągiem pusty, wtedy to samo, w innym pozostałym przypadku jest to dokładnie {{LinkPatrz|nazwa_strony}}, gdzie przed nim znajduje się dwukropek {{Code|:}}. === Dalsza część funkcji - Tom II === Tu powiemy coś o iteratorze, który po zebraniu danych zwraca zmienną {{Code|nil}}, co odpowiada dla pętli, jej przerwaniu. ==== Definicja iteratora zbierania informacji o stronie ==== Aby uruchomić pętle na rzeczywistych danych zakodowanej, czy nie, stronie, trzeba otrzymać zmienną pętli {{Code|iterator}} {{Patrz|iterator}} i go wywoływać bezparametrowo w każdym okrążeniu pętli, aby tak się stało, to trzeba uruchomić funkcję: {{Code|{{sr|#p.IterTekst|p=StronicowyParser/Rozdziały}}}}, na tekście {{LinkPatrz|tekst_artykulu}}, traktując tekst, jakby nie był taki zakodowany, bo tutaj jedynie się liczą elementy niezakodowane, czyli w tym przypadku nagłówki z tekstem rozdziału. ==== Zbieranie informacji o stronie w pętli generowanej przez iterator ==== Będziemy tutaj opisywali pętlę generowaną przez jego iterator {{LinkPatrz|iterator}}. W każdym okrązeniu pętli otrzymujemy dane: * {{Code|naglowek_tab}} {{Patrz|naglowek_tab}} - gdzie pierwszy jego element to {{Code|naglowek}} {{LinkPatrz|naglowek}}, * {{Code|text_rozdzialu}} {{Patrz|text_rozdzialu}} - tekst rozdziału, * {{Code|poziom_rozdzialu}} {{Patrz|poziom_rozdzialu}} - poziom rozdziału. ===== Definicja nowe wartości zbierania uchwytów nagłówka w zmiennej numeracji ===== Deklaracja zmiennej {{Code|numeracja}} {{LinkPatrz|numeracja}} jest na zewnętrz pętli, w niej tworzymy jej nową wartość, którą jest tablica pusta. ==== Uzyskiwanie informacji z tekstu rozdziału nagłówka, i jego możliwych uchwytach, w poszczegolnym okrążeniu pętli, i zrzuceniu tam pojedynczego kodu problemu ==== Jeżeli {{ZobaczTeż|text_rozdzialu}} tekst strony jest zakodowany, to iterujemy po tekście {{LinkPatrz|text_rozdzialu}} w poszukiwaniu kodów bazy kodów zakodowanego tekstu, w tym celu wywołujemy pętlę: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, wtedy uzyskujemy trzy obiekty w każdym przebiegu pętli, tzn. {{Code|szablon}} {{LinkPatrz|szablon}}, {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, za pomocę tego uruchamiamy funkcję: {{LinkŚródtytuł|SzablonNaglowkujWTekscieRozdzialu}}. Jeżeli funkcja napotkała uchwyt szablonu: {{Code|{{s|Śródtytuł}}}}, wtedy jest zatrzymywana, w takim razie mamy informację o wystąpieniu niedozwolonego szablonu nagłówka w tekście. A jeżeli takiego szablonu tam nie ma, to układ iterator {{LinkPatrz|iterator}} iteruje aż do zakończenia danych. ==== Uzyskiwanie nagłówka i do niego identyfikatora '''id''' ==== ===== Tekst niezakodowany nagłówka ===== Gdy tekst nie jest zakodowany, wtedy zmienna: {{LinkPatrz|czy_kodowanie}}, ma wartość odpowiaadające fałszywej, wtedy dla tego nagłówka {{LinkPatrz|naglowek}} jest uruchamiana funkcja: {{Code|{{sr|#p.["PrzetwórzNagłówek"]|p=Specjalne}}}}, wtedy otrzymujemy dwie wartości: {{Code|nazwa_rozdzialu_w_artykule}} {{Patrz|nazwa_rozdzialu_w_artykule}} - zmienna idententyfikatora, {{Code|naglowek}} {{LinkPatrz|naglowek}} - zmienna nagłówka. Te dwie zmienne zostały maksymalnie rozwinięte, zostały przystosowane do tego, aby słuzyły do tego, co trzego zostały stworzone. ===== Tekst zakodowany nagłówka ===== Gdy jednak {{LinkPatrz|czy_kodowanie}} przyjełajednak wartość fałszywą, wtedy jest uruchamiana funkcja: {{LinkŚródtytuł|SzablonyWywolywaneOgolny}}, z której otrzymujemy: {{Code|naglowek}} {{LinkPatrz|naglowek}} - zmienna przetworzonego i maksymalnie rozwiniętego nagłówka, oraz zmienne funkcje: {{LinkPatrz|Znaczniki}}, {{LinkPatrz|SzablonyStylowe}} i {{LinkPatrz|ZnakiSpecjalne}}. Na podstawie defiicji: {{Code|nazwa_rozdzialu_w_artykule}} {{LinkPatrz|nazwa_rozdzialu_w_artykule}}, mamy: {{Code|naglowek}} {{LinkPatrz|naglowek}}. ====== Kompletowanie nagłówka ====== Ten nagłówek kompletujemy funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, usuwając szablony indeksowania {{LinkPatrz|p.szablony_indeksowania}}, a także znaczniki: {{Tag|li}}, {{Tag|ul}} i {{Tag|ol}}. ====== Kompletowanie identyfikatora nagłówka ====== Kompletując: {{Code|nazwa_rozdzialu_w_artykule}} {{LinkPatrz|nazwa_rozdzialu_w_artykule}}, rozwijamy wszystko, oprócz atrybutów, {{Code|obiekt}} {{Code|{{=}}}} {{Code|ATRYBUTY}}, a na szablonach wywołujemy funkcję: {{LinkŚródtytuł|SzablonyWywolywaneOgolny}}. Na identyfikatorze nagłówka {{LinkPatrz|nazwa_rozdzialu_w_artykule}} Wywołujemy kolejno lokalne funkcje: {{LinkPatrz|SzablonyStylowe}} - do usuwania rozwiniętych kodów stylów, {{LinkPatrz|ZnakiSpecjalne}} - do usuwania cudzysłowów, i {{LinkPatrz|Znaczniki}} - do usuwania znaczzników. ====== Gdy w kodzie identyfikatora nie ma symbolicznych szablonów ====== W tym przypadku uruchamiamy fukcję do dekodowania znaków '''HTML''', tzn. dziesiętnych, szesnastkowych i literowych, funkcją: {{Code|{{sr|#p.DecodeKoduHTMLZnaku|p=Html}}}}, a później kodujemy specjalne znaki identyfikatora sposobem: {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, przy pomocy kodów '''HTML''' dziesiętnych. ===== Usuwanie zbędnych znaków w identyfikatorze ===== Usuwane są potrójne i podwójne cudzysłowy {{Code|'}} oraz odstępy i dolne myślniki na końcach łańcucha, a wewnętrz jego kolejne je są zastępowane jedną spacją. ===== Referencje i wzory matematyczne ===== Referencje są zastępowane odpowiednio przy pomocy funkcji: {{LinkŚródtytuł|RefPrzypisowy}}, a wzory matematyczne, dla obiektów typu {{Code|POSTMATH}} {{Patrz|POSTMATH}}, które są zastępowane prawidłowo poprzez: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.text.encode|b=tak}}}}, przy pomocy: {{Code|{{sr|#p.NormaKoduZakodowanegoHtmlTekstu|p=Szablonowe}}}}, obiektem: {{Code|postMath}} {{Patrz|postMath}} z ośmioma znakami cyferkami na końcu tego, którym jest {{Code|kod}} {{LinkPatrz|kod}}. ===== Wstępne przygotowanie identyfikatora do końcowego skutecznego użytku ===== Dla danego identyfikatora one mogą się powtarzać, a identyfikator musi być unikalny, zatem trzeba napisać ich dodatkowe numerki, po policzeniu otrzymamy {{Code|numer_tego_samego_naglowka}} {{Patrz|numer_tego_samego_naglowka}}. ====== Tablica identyfikatora i nagłówka ====== Funkcja wykorzystuje tablicę: {{Code|tablica_powtarzajacych_sie_elementow}} {{Patrz|tablica_powtarzajacych_sie_elementow}}, aby policzyć numer powtarzającego się identyfikatora '''id'''. Dla {{LinkPatrz|numer_tego_samego_naglowka}} równego {{Code|1}}, tworzemy tablicę {{Code|elementy_linku}} {{Patrz|elementy_linku}}, którego pierwszym elementem jest: {{LinkPatrz|nazwa_rozdzialu_w_artykule}}, a drugim nagłówek {{LinkPatrz|naglowek}}, a w przypadku tego numerku innego niż podana liczba, to dajemy do identyfikatora na końcu ten numerek po dolnym myślniku. ====== Uzupełnianie zmiennej do identyfikacji uchwytu z odpowiednim nagłówkiem ====== Jeśli: {{LinkPatrz|obiekty}} i {{LinkPatrz|numeracja}}, istnieją, wtedy do tej pierwszej tablicy dodawane są wszystkie elementy o takim samym typie z {{LinkPatrz|numeracja}}. To dodawanie na końcu tablicy przedstawia się: <syntaxhighlight lang="lua"> for _,value_numeracja in ipairs(numeracja)do obiekty[#obiekty+1]={value_numeracja,{nazwa_strony_z_naglowkami,elementy_linku[1], elementy_linku[2]}}; end; </syntaxhighlight> ====== Tworzenie tablicy nagłówkami i indetyfikatorami ====== Jeśli {{Code|poziom_rozdzialu}} jest większy od zera, tzn. {{Code|> 0}}, wtedy liczymy numer rozdziału przy pomocy funkcji: {{Code|HNumer}} {{LinkPatrz|HNumer}} liczony z: {{Code|poziom_rozdzialu}} {{LinkPatrz|poziom_rozdzialu}}, tworząc w ten sposób wynik w postaci zmiennej {{Code|numer_rozdzialu_ustalony}} {{Patrz|numer_rozdzialu_ustalony}}. ====== Rozdziały ewentualnie powtarzające się ====== Na koniec tablicy: {{Code|tablica_powtarzajacych_sie_elementow}} {{LinkPatrz|tablica_powtarzajacych_sie_elementow}}, dodajemy element identyfikatora '''id''' bez numerka, tzn.: {{Code|nazwa_rozdzialu_w_artykule}} {{LinkPatrz|nazwa_rozdzialu_w_artykule}}. ====== Tablica spisu treści ====== Jest tworzona tablica spisu: {{Code|tablica_spisu_tresci}} {{Patrz|tablica_spisu_tresci}}, jako pusta tablica, z później dodanym elementem o kluczu: {{Code|nazwa_strony}}, którym jest o wartości: {{LinkPatrz|nazwa_strony_z_naglowkami}}. Do tablicy: {{LinkPatrz|tablica_spisu_tresci}}, dodawane są elementy według schematu: <syntaxhighlight lang="lua"> tablica_spisu_tresci[#tablica_spisu_tresci+1]={elementy_linku,numer_rozdzialu_ustalony}; </syntaxhighlight> === Dalsza część funkcji - Tom III === Będziemy się tutaj zajmowali z tekstem przed pierwszym rozdziałem na stronie. ==== Nagłówek na samym początku strony ==== Gdy kodowanie jest jednak włączone, tzn.: {{LinkPatrz|czy_kodowanie}}, jest prawdziwe, i mamy artykuł korzystany, tzn.: {{LinkPatrz|czy_artykul_korzystany}}, i zaprzeczenie wyłowania funkcji: {{LinkPatrz|CzyJestTakiProblemJakoElementTablicy}}, przyjmuje wartość prawdziwą, to jeśli na samym początku znajduje się rozdział, wtedy funkcja zwraca wynik: {{LinkPatrz|tablica_spisu_tresci}}. ==== Tekst przed pierwszym rozdziałem ==== Wyznaczamy ten tekst, który będzie ukrywał się pod zmienną: {{Code|tekst_zerowy}} {{Patrz|tekst_zerowy}}, który jest tekstem przed pierwszym rozdziałem lub samym tekstem zakodowanego wikikodu {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}}. ===== Szablony nagłówka w tekście zerowym ===== W tym tekście iterujemy jak w punkcie: {{LinkZobaczTeż|text_rozdzialu}}, tylko zamiast {{LinkPatrz|text_rozdzialu}} jest {{LinkPatrz|tekst_zerowy}}. === Dalsza część funkcji - Tom IV === Zwracaną wartością tej funkcji jest: {{Code|tablica_spisu_tresci}} {{LinkPatrz|tablica_spisu_tresci}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 525omeettz0fuukp6h284joa5uck0eu 548361 548360 2026-07-26T13:09:16Z Persino 2851 /* Tworzenie tablicy nagłówkami i indetyfikatorami */ 548361 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}|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.PobieranieInformacjiRamkiRozpatrywanejStrony}}{{Code|p.PobieranieInformacjiRamkiRozpatrywanejStrony}} == Pobieranie danych z obiektu {{LinkPatrz|self}}, biorąc jego podtablicę o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiRamkiRozpatrywanejStrony(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa ramki tablicy transportu. == {{Śródtytuł|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}}{{Code|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}} == Funkcja uruchamiacz, główna funkcja dzięki, której ładują się informacje według modułu: {{Code|{{ld2|StronicowyParser/informacje}}}} (tam jest użyty). Ten ładowacz jest pokazany w module opis: {{Code|{{lr2|Moduły/StronicowyParser/informacje}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}. === {{Śródtytuł|DaneNazw}}{{Code|DaneNazw}} === Funkcja licząca nazwy podanej nazwy strony, tzn.: {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} {{Patrz|nazwa_artykulu}}, oraz zwracające te kolejno nazwy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function DaneNazw(pelna_nazwa_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|pelna_nazwa_strony}} {{Patrz|pelna_nazwa_strony}} - pełna nazwa strony. === Dalsza część funkcji - Tom I === ==== Tworzenie i inicjowanie początkowych tabel ==== Funkcja tworzy podtabele tabeli zmiennej obiektowej {{LinkPatrz|self}} o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, o wartości pustej. Następnie są tworzone podtabele puste w tej ostatniej o kluczach: {{Code|dane_analizy_stron}} {{Patrz|dane_analizy_stron}} i {{Code|licencja}}{{Patrz|licencja}}, oraz nilowe zmienne z tego samego, co ostatnie, o kluczu: {{Code|problemy}} {{Patrz|problemy}}. ==== Zmienne nazw strony bieżącej, czy nawet aktualnej, w zależności, czy istnieją odpowiednie ustawienia ==== Jest liczony adres strony, na której jest uruchomiona dana strona, wewnętrznej bezparametrowo według: {{Code|{{sr|#p["PełnaNazwaArtykułu"]|p=Książkowe}}}} {{Patrz|strona_aktualna}}, co z tego są liczone z niego: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, co z tego jest liczona pełna nazwa książki {{Code|pelna_nazwa_ksiazki}} {{Patrz|pelna_nazwa_ksiazki}}. ==== Zbieranie danych ustawień z: {{Code|.../config}}, jeśli istnieją ==== Jest liczony pełny adres ustawień: {{Code|pelna_nazwa_ksiazki_ustawienia}} {{Patrz|pelna_nazwa_ksiazki_ustawienia}}, według schematu: {{Code|"Szablon:Podręcznik/Ustawienia/"..pelna_nazwa_ksiazki}} {{Patrz|UstawieniaKsiążki}}. Co z tego jest sprawdzane, czy istnieje strona: {{Code|pelna_nazwa_ksiazki_ustawienia.."/config"}} {{Patrz|config}}, a jeśli tak, to wtedy wiemy, że to jest szablon, to go przedstawiamy w postaci szablonowej, licząc z: {{Code|{{sr|#p.NazwaSzablonu|p=Szablonowe}}}}. Dalej jest liczony ostatni wyliczony szablon z parametrem {{Code|książka}} {{Patrz|książka}}, dalej jeszcze raz, tym razem z parametrem: {{Code|artykuł}} {{Patrz|artykuł}} - te parametry przedstawiają parametry artykułu książkowego, skąd możemy ściągać stronę, by ją wyświetlić na stronie aktualnej, na pewno parametr {{LinkPatrz|książka}} nie może być parametrem składających z samych znaków odstępów, a jeśli tak jest, w takim razie z tych dwóch parametrów jest liczony parametr {{Code|strona}} {{Patrz|strona}}. Dalej liczymy, czy ona jest poprawnym adresem, używając funkcji: {{Code|{{sr|#p["CzyNiepoprawnaNazwa"]|p=Pudełko/Tom I}}}}. A jeżeli adres jest jednak poprawny, ta funkcja zwraca wartość odpowiadającej fałszywej wartości, wtedy jest liczony pełny adres strony, jeżeli ona jest względna z parametrów, tzn. parametr pierwszy: {{LinkPatrz|strona}}, i parametr drugi: {{LinkPatrz|strona_aktualna}}, co względem tej funkcji mamy już: {{LinkPatrz|strona}}, czyli po tej operacji (procedurze) policzyliśmy bezwzględny jego adres. ===== Liczenie nazw z parametru pełnej nazwy aktualnej, nie bieżącej, strony wynikłe z obliczeń z ustawień ===== Policzona wartość strony: {{LinkPatrz|strona}}, jest sprawdzana, czy adres (strona), pod którym ona się kryje, istnieje, a jeśli tak, to ten adres jest tylko formatowany. Porównujemy adres {{LinkPatrz|strona}} z {{LinkPatrz|strona_aktualna}}, czy przedstawiają nie ten sam adres, a jeżeli tak, to liczymy wszyskie nazwy strony, czyli dla bez {{Code|aktualna_}}, przyrównujemy do tego z tym początkiem, co odpowiada pełnej nazwie strony z {{Code|strona_aktualna}} {{LinkPatrz|strona_aktualna}} {{ZobaczTeż|strona_aktualna}}, i używając funkcji: {{LinkŚródtytuł|DaneNazw}}, ze zmiennej: {{Code|strona}} {{LinkPatrz|strona}} {{ZobaczTeż|strona}}. Te ostatnie nazwy są potrzebne do analizy strony bieżącej, nie aktualnej, tzn. na niej, jakie są szablony, jakie posiada spisy, jakie książki, a w nim spisy do nich, są dołączone. ====== Policzone nazwy strony aktualnej wpisane do ogólnej tablicy ====== A póżniej z adresów pliczonych wywołania, dotyczącej tego aktualnego, liczymy dla podtabeli: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienne o kluczach: {{Code|aktualna_nazwa_przestrzeni}} {{Patrz|aktualna_nazwa_przestrzeni}}, {{Code|aktualna_nazwa_przestrzeni_ksiazki}} {{Patrz|aktualna_nazwa_przestrzeni_ksiazki}}, {{Code|aktualna_nazwa_ksiazki}} {{Patrz|aktualna_nazwa_ksiazki}} i {{Code|aktualna_nazwa_artykulu}} {{Patrz|aktualna_nazwa_artykulu}}, mając zmienne nazw policzone z tego aktualnego. ===== Czy strona bieżąca, ale nie zbiorcza, jest wyświetlana na stronie aktualnej, czy może jest tylko stroną zbiorczą uruchomioną pod inną nazwą ===== Jeśli zmienne nazw są policzone z: {{LinkZobaczTeż|strona}} i {{LinkZobaczTeż|strona_aktualna}}, to wtedy kolejno porównujemy, czy któraś z nich jest nierówna, a jeśli tak, to wywołujemy szablon z parametru: {{Code|zastępcza}} {{ZobaczTeż|zastępcza}} - jest to, czy strona jest zbiorcza, o nazwie: {{LinkPatrz|config}}, czy powinna być wartością niepustą. A jak tak, to wyznaczamy z tablicy: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienną o kluczu: {{Code|alternatywna}} {{Patrz|alternatywna}}, co przyrównujemy jemu wartość logiczną z uzyskanego z szablonu z parametrem {{LinkZobaczTeż|zastępcza}}, a jeżeli ta zmienna przyjmuje wartość odpowiadająca fałszywej, wtedy zmienna z tej samej tablicy o kluczu: {{Code|inna_strona_aktualna_niz_biezaca}} {{Patrz|inna_strona_aktualna_niz_biezaca}} - jest to, czy strona jest inna niż zbiorcza, ale wyświetlana na innej stronie, przyjmuje wartość prawdziwą. === Dalsza część funkcji - Tom II === Tworzymy zmienną: {{Code|tablica_zmiennych}}, która jest tablicą pustą, którą uzupełniamy o elementy o kluczach: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}} - są to dane zebrane z bieżącej strony, i {{Code|linkobiekt}} {{Patrz|linkobiekt}} - są to dane zebrane o linkach na stronie odpowiadających poszczególnym obiektom. Uruchamiamy funkcję: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}, z której wyznaczamy parametr: {{Code|tabela_listy_danych_analizy_ksiazki}} - są to dane zebrane z bieżącej i innych stron skojarzonej z nim, te elementy są tylko w postaci nieprzetworzonej, ale przygotowanej. A jeśli ten parametr jest tabelką - a jeżeli nie jest, to nastąpił błąd przetwarzania, i funkcja nie idzie dalej w instrukcję warunkową, wtedy wywołujemy funkcję: {{Code|{{sr|#p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony|p=StronicowyParser/NumeracjaObiektówStron}}}}. === Dalsza część funkcji - Tom III === Na sam koniec funkcji zwracamy tablicę: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}} - ta zmienna zawiera dane w postaci przetworzonej policzonej, tzn. uchwytom są przydzielone numeracje, sprawdzane, czy uchwyty są policzone, są wyznaczone wszystkie kody problemów, które później są potrzebne do wyznaczania wszystkich kategorii błędów na stronie. == {{Śródtytuł|p.SpisRzeczyWedlePodanegoTekstu}}{{Code|p.SpisRzeczyWedlePodanegoTekstu}} == Funkcja generowania liczenia nagłówków strony, co na tej podstawie może być generowany '''spis treści''' strony. Funkcja przyporządkowuje uchwytom szablonów nagłówków ich identyfikatory i te nagłówki, w którym one leżą, jeżeli zmienna {{LinkPatrz|obiekty}} istnieje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SpisRzeczyWedlePodanegoTekstu(self,tekst_artykulu,nazwa_strony,czy_artykul_korzystany, tylko_naglowek,obiekty,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_obiektow_strony_danych_kodow_specjalnych_modul,KtorySzablonMaZwracacKategorie,wzory_zamiast_kodow,tabela_elementow_strony_kodow)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}} - tekst przetworzony, przygotowany ewentualnie przez pewną funkcję, rozważanego artykułu, * {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} - nazwa strony, danego spisu, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy strona jest bieżąca, * {{Code|tylko_naglowek}} {{Patrz|tylko_naglowek}} - pisz adresy stron z tylko nagłówkami '''#''', bez adresów stron, * {{Code|obiekty}} {{Patrz|obiekty}} - elementy tam zebrane, są wykorzystywane do analizy nagłówków poprzez szablon {{s|Śródtytuł}}, któremu temu nagłówkowi odpowjada pewien uchwyt, czy uchwyty, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}, * {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} - nazwa aktualna, czy bieżąca strony, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy zebranych informacji w postaci zakodowanej modułu {{m|Szablonowe}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tabela przeanalizowanych elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} {{Patrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} - tablica dwuwymiarowa kodów o kluczach: szablonów referencji: '''REF...''' i '''POSTMATH''' oraz ich elementu numeru kodu {{Code|kod}}, którego elementem jest kod tego elementu, * {{Code|KtorySzablonMaZwracacKategorie}} {{Patrz|KtorySzablonMaZwracacKategorie}} - tabela składająca się z trzech elementów, którego pierwszy element to: {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{Patrz|KtorySzablonMaZwracacKategorieNaglowek}} - funkcja dla szablonów problemów dla jak: {{s|Śródtytuł}}, w nagłówku, drugi: {{Code|KtorySzablonMaZwracacKategorieTekst}} {{Patrz|KtorySzablonMaZwracacKategorieTekst}} - funkcja dla tego typu szablonów, ale dla nich w tekście, nie w nagłówku, trzeci: {{Code|CzyJestTakiProblemJakoElementTablicy}} {{Patrz|CzyJestTakiProblemJakoElementTablicy}} - czy nie rozważać, dla rozdziałów zerowych, przeciwnie: ta funkcja może przyjmować wartość {{Code|nil}}, wartość zwracana tego elementu, bo to jest funkcja, zależy, czy jest ustawiony kod problemu: {{Code|nagłówek w tekście rozdziału w stronie korzystanej}} {{Patrz|nagłówek w tekście rozdziału w stronie korzystanej}}, a jeżeli jest taki, to ta funkcja przyjmuje zrzuconą wartość {{Code|true}}, * {{Code|wzory_zamiast_kodow}} {{Patrz|wzory_zamiast_kodow}} - rozważaj wzory według tablicy: {{LinkPatrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}}, lub koduj to według funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}} - to wykorzystuj w przypadku, gdy: {{LinkPatrz|nazwa_strony}}, istnieje, i jest wartością pustą, lub {{Code|{{sr|#p.NormaKoduZakodowanegoWikiTekstu|p=Szablonowe}}}} - przeciwnie, * {{Code|tabela_elementow_strony_kodow}} {{Patrz|tabela_elementow_strony_kodow}} - baza tabela z zapamiętanymi podtabelami, którego poszczególne elementy wykorzystywane w spisie posiadają w sobie tylko pierwszy element w postaci przetworzonego uchwytu, bo używamy tylko uchwytów szablonów nagłówków. === {{Śródtytuł|SpecjalneWprowadzeniaTekstu}}{{Code|SpecjalneWprowadzeniaTekstu}} === Funkcja zamieniające pewne szablony, czy znaczniki, na rozdziały równaniowe. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local SpecjalneWprowadzeniaTekstu=function(szablon,obiekt,kod,czy_szablon,czy_znacznik,czy_liczyc,funkcja1,funkcja2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} {{Patrz|szablon}} - zmienna (szablon), nie musi być to normalny szablon, * {{Code|obiekt}} {{Patrz|obiekt}} - zmienna, którego typu jest obiekt, * {{Code|kod}} {{Patrz|kod}} - numer obiektu typu {{LinkPatrz|obiekt}}, * {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy to jest szablon, * {{Code|czy_znacznik}} {{Patrz|czy_znacznik}} - czy to jest znacznik, * {{Code|czy_liczyc}} {{Patrz|czy_liczyc}} - czy funkcję liczyć w sposób złożony, szablony typu: {{s|SpisTreści}} - zamieniający go na znacznik, czy prosty, co na samym końcu uruchamiana jest funkcja: {{LinkPatrz|funkcja1}}, * {{Code|funkcja1}} {{Patrz|funkcja1}} - funkcja operująca na wygenerowanym pośrednio (dłuższe liczenie) lub bezpośrednio (krótsze) znaczniku, wychodząca z szablonu, i zamieniająca go na rozdział równaniowy, funkcja operująca dla szablonów: {{s|SpisTreści}} lub {{s|HNumer}}, * {{Code|funkcja2}} {{Patrz|funkcja2}} - funkcja operująca na znaczniku '''HTML''' nagłówka - typu jak: {{Tag|h1}}, i zamieniająca go na rozdział równaniowy. ==== {{Śródtytuł|ParametrNR}}{{Code|ParametrNR}} ==== Funkcja liczy dokładnie parametr dany o danym numerze, zbiór danych parametrów oznaczających to samo może być wiele, tylko że jedne mogą być ważniejsze od drugich. Definicja skrótowa funkcja: <syntaxhighlight lang="lua"> local function ParametrNR(numer)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer}} {{Patrz|numer}} - numer parametru. Funkcja wykorzystywuje funkcję do uruchomienia: {{Code|{{sr|#p.SpisRzeczySzablon|p=StronicowyParser/Potrzebne}}}}, do generowania parametrów, a właściwie ich wartości. ==== {{Śródtytuł|ObiektKodNumer}}{{Code|ObiektKodNumer}} ==== Funkcja dodająca do bazy danych kolejny element bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla danego obiektu element na samym końcu, po maksymalnym elemencie do niego. Funkcja liczy kod przy pomocy funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local ObiektKodNumer=function(szablon,obiekt)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}. ==== Dalszy opis funkcji ==== Dla {{LinkPatrz|czy_szablon}} prawdziwego dla szablonów sztucznego spisu treści, sprawdzanego przez tabelkę: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, dla danego szablonowego rozdziału generowanego według {{s|HNumer}}, jest on zamieniany na rozdział równaniowy poprzez funkcję: {{LinkPatrz|funkcja1}}. Ta tabela przedstawia się treścią: <syntaxhighlight lang="lua"> p.szablony_sztucznego_wprowadzenia_tekstu={ ["HNumer"]=1, }; </syntaxhighlight> Dla innych rozdziałów szablonowych, tym razem generowanego przez szablon {{s|SpisTreści}}, którego parametry są wyznaczane przez funkcję: {{LinkŚródtytuł|ParametrNR}}, tabelka parametrów opisująca to: <syntaxhighlight lang="lua"> p.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu={ ["SpisTreści"]={{"artykuł",1,},{"książka",2,},{"nazwa",3,},{"dodatek",4,},{"poziom",},}, }; </syntaxhighlight> Funkcja liczy artykuł, koloruje do niego link w: '''spisie treści''', na czerwona, wtedy generuje dodatkowy znacznik, z właściwością: {{Code|color:red}}, gdy on nie istnieje, i to wstawia do tabeli bazy, lub bez niego, wtedy bezposrednio generuje tekst równy nazwie tego szablonu, opakowany, lub nie, w zależności od istnienia. Do policzenia strony, czy ona istnieje, musi być przedtem zdekodowany funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, by później policzyć to sprawdzenie przy pomocy: {{Code|{{sr|#p.PoliczZbiory|p=Techniczne}}}}. W każdym bądź razie jest ruchumianiana funkcja: {{LinkPatrz|funkcja1}}. Gdy to nie jest szablon, tzn.: {{LinkPatrz|czy_szablon}}, jest fałszywe, ale {{LinkPatrz|czy_znacznik}} jest prawdziwe, to takie znaczniki, jak od: {{Tag|h1}} do {{Tag|h6}}, są zamieniane na czysty tekst. W takim razie wywoływana jest dla tego przypadku funkcja: {{LinkPatrz|funkcja2}}. Funkcja: {{LinkPatrz|funkcja1}}, jest dla szablonów nagłówków, a: {{LinkPatrz|funkcja2}}, dla znaczników nagłówków. Z tych generowanych czystych generowanych tekstów są tworzone w tekście rozdziały równaniowe, by później wygenerować '''spis treści''', właśnie z nimi - z tymi nagłówkami, a bardziej ściśle linkami do nich. === {{Śródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}{{Code|SzablonNaglowkujWNaglowkuRozdzialu}} === Fukcja do obsługi nagłówków {{LinkPatrz|Śródtytuł}} w nagłówku, nie w tekście poza nim. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWNaglowkuRozdzialu(szablon,obiekt,kod,powtorka,parametry_wywolania_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}, * {{Code|powtorka}} {{Patrz|powtorka}} - numer użycia takiego samego szablonu typu {{s|Śródtytuł}} {{Patrz|Śródtytuł}}, * {{Code|parametry_wywolania_szablonu}} {{Patrz|parametry_wywolania_szablonu}} - parametry szablonu wraz z ich wartościami, * {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} - nazwa szablonu wywołania, * {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} - modyfikatory szablonu. Funkcja sprawdza, czy szablon w nagłówku jest typu {{LinkPatrz|Śródtytuł}}, a jeżeli tak, to liczy jego uchwyt, najpierw wyznacza je z parametru o nazwie {{Code|uchwyt}} {{Patrz|uchwyt}}, dalej sprawdzane jest, czy taki uchwyt tak zdefiniowany istnieje, jeśli tak, to wydobywana jest jego przetworzona tabela z tym właśnie uchwytek, funkcja robi to względem numeru {{Code|kod}} {{LinkPatrz|kod}} tego szablonu na podstawie funkcji: {{Code|{{sr|#p.WydobywanieUchwytuZeiBezNumeracji|p=StronicowyParser/ZbieranieDanychStron}}}}. Jeżeli wydobyta tabela {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} nie istnieje, w takim razie jest ona dekodowana funkcją: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, a później jest traktowana jako adres '''URL''', tzn. jest dekodowana funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, dalej jest tworzona tabela pusta: {{LinkPatrz|lista_dwuelementowa}}, co dalej jest tam wstawiana do niej jako pierwszy element uzyskany uchwyt przetworzony. A jeśli jednak {{LinkPatrz|lista_dwuelementowa}} została wydobyta z naszej funkcji tabela, która istnieje, wtedy funkcja idzie, niż poprzednio, w inny krok instrukcji warunkowej, wtedy z tej tabeli jest wydobywany pierwszy element jako przetworzony wcześniej uchwyt. Gdy {{ZobaczTeż|uchwyt}} przetworzony uchwyt jest łańcuchem znaków niepusty, wtedy on jest dodawany w postaci tabeli, w której jest ten uchwyt, na sam koniec tabeli {{Code|numeracja}} {{Patrz|numeracja}}. Gdy liczba powtórzeń jest większa niż zero, wtedy jest wywoływana funkcja, przy którym mają być zwrócone kategorie, jeśli zostaną użyte, o nazwie {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}}. Gdy jednak uchwyt uzyskany nie istnieje, to wtedy jest to samo robione, co w: {{LinkZobaczTeż|uchwyt}}. Przed zwróceniem ile razy została dokonana powtórka, jest powiększany licznik powtorek, i to jest otrzymywane z tej funkcji. === {{Śródtytuł|SzablonNaglowkujWTekscieRozdzialu}}{{Code|SzablonNaglowkujWTekscieRozdzialu}} === Funkcja do analizy szablonów nagłówków w tekście rozdziału, nie w nagłówku. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWTekscieRozdzialu(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja sprawdza, czy tekst w bazie kodów jest typu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, w takim razie po wykryciu, że dla tego, że jest to wywołanie szablonowe, a nie instrukcja warukowa w wikikodzie w tekście, wtedy podobnie jest robione, co w funkcji: {{LinkŚródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}, tylko zamiast {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}} jest {{Code|KtorySzablonMaZwracacKategorieTekst}} {{LinkPatrz|KtorySzablonMaZwracacKategorieTekst}}. Przy wykryciu tam szablonu typu {{LinkPatrz|Śródtytuł}}, funkcja zawsze zwraca wartość {{Code|true}}, w innych przypadkach {{Code|false}}. W przypadku intrukcji warunkowej w wikikodzie i dla ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jest wtedy zwracana wartość {{Code|false}}. Funkcja w pozostałych przypadkach zwraca wartość logiczną {{Code|false}}. === {{Śródtytuł|SzablonyWywolywane}}{{Code|SzablonyWywolywane}} === Szablon zamieniający specjalne znaki szablonów, tzn.: {{Code|{{((}}}}, {{Code|{{))}}}}, {{Code|{{!}}}} i {{Code|{{=}}}}, kolejno na: {{Code|{{s|((}}}}, {{Code|{{s|))}}}}, {{Code|{{s|!}}}} i {{Code|{{s|{{=}}}}}}, takich {{ZobaczTeż|StronicowyParser}}, które zawierają wywołania '''Stronicowego Parsera''', czyli ramki typu: {{Code|{{m|StronicowyParser}}}}, czy: {{Code|{{m|StronicowyParser/}}}}, a inne są po prostu przypisywane. W przypadku linków, i nie tylko, tzn. dla szablonów {{LinkZobaczTeż|StronicowyParser}}, z innych stron niż korzystana, co jest trafnie oznaczone zaprzeczeniem parametru {{LinkPatrz|czy_artykul_korzystany}} są liczone parametry pudełkowe {{Code|{{m|Pudełko}}}}. Strony wskazane przez te parametry są analizowane, przy czym linki są przez inną funkcję, a inne już przez znów inną. Szablony nagłówków typu {{LinkPatrz|Śródtytuł}}, czy szablonów stronicowych otwierających i zamykających, one lub jego koledzy, tzn. ich: {{s|StronaStart}} i {{s|StronaKoniec}}, są zastępowane ciągiem pustym. Inne parametry opisane z tabeli {{Code|{{sr|#p.szablony_stronicowe_kontenerowe_formatowania_wzorowego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, są zastępowane ich zawartością, by uniknąć kontaktu nagłówków z tego typu szablonami. Szablony ideksowania określone tabelą: {{Code|{{sr|#p.szablony_indeksowania}}}} {{Patrz|p.szablony_indeksowania}}, nie są rozwijana z kodowania lub są, w zależności, czy zmienna: {{Code|czy_indeksowanie}} {{Patrz|czy_indeksowanie}}, ma wartość {{Code|true}} - tutaj są, czy odpowiadającej fałszywej wartości logicznej - a tutaj już nie. W przypadku instrukcji warunkowych, czy ramek {{lpg|Lua}} w {{lpg|Lua|Scribunto}}, one są rozwijane - kod tego jest zawartością {{LinkPatrz|szablon}}. W innych przypadkach funkcja zwraca wartość {{Code|nil}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywane(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. W powyższym opisie występują szablony opisane w: {{LinkPatrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, a jej definicja jest: <syntaxhighlight lang="lua"> p.szablony_stronicowe_kontenerowe_formatowania_wzorowego={ ["Formuła"]=1; }; </syntaxhighlight> Jest to szablon: {{s|Formuła}} i podobne, liniowe wstawiane do tekstu, ta tabela ma za zadanie zastąpić te szablony ich poszczególnym zawartościom, a ta funkcja, która ją wykorzystywuje się do tego przypadku, jest o nazwie: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}. Tabelą szablonów indeksowania, to są one zdefiniowane przez: {{LinkPatrz|p.szablony_indeksowania}}, a jej zawartość: <syntaxhighlight lang="lua"> p.szablony_indeksowania={ ["Kotwica"] =true, ["Indeksuj"]=true, }; </syntaxhighlight> Są to szablony kotwic: {{s|Kotwica}}, który jest szablonem liniowym, a {{s|Indeksuj}}, natomiast to blokowy. === {{Śródtytuł|SzablonyWywolywaneOgolny}}{{Code|SzablonyWywolywaneOgolny}} === Funkcja rozwija nagłówek, wydzielając z niego zwykły tekst, nie dopełniając pewnych operacji. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywaneOgolny(naglowek)...end; </syntaxhighlight> Parametry funkcji: * {{Code|naglowek}} {{Patrz|naglowek}} - tekst nagłówka napisu wprowadzenia tekstu. Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["WydzielZwykłyTekst"]|p=Specjalne}}}}, kod jej wywoływany jest z parametrami: <syntaxhighlight lang="lua"> local naglowek,Znaczniki,SzablonyStylowe,ZnakiSpecjalne=specjalne_modul["WydzielZwykłyTekst"]( { ---- tekst nagłówka; tekst=naglowek, ---- Nie wykorzystywuj w działaniu funkcji: Znaczniki, SzablonyStylowe, ZnakiSpecjalne; ["nagłówek"]=true, ---- Nie wykorzystuj dekodowania tekstu zakodowanego, bez rozwijania, ale wręcz przzeciwnie rozwijaj, pozostawiaj pewne szczególne kody przed rozkodowaniem; nieklasycznie=true, ---- Bazę kodowania weź z zewnątrz; kodowanie=false, ---- Wykorzystywana tablica kodowania tekstu modułu: Module:Szablonowe, zakodowanego z zewnątrz; ["tablica kodowania"]=tablica_analizy_obiektow_strony_dany_modul, },__FUNKCJA1,__FUNKCJA2); </syntaxhighlight> Ta funkcja wydziela zwykły tekst z nagłówka z szablonami zwykłymi i ramkami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, bez naruszenia działania innych elementów szablonowych, jak tagi, czyli: {{s|#tag:}}, które też współdziałają też w kodzie danego nagłówka. Również i z linkami wewnętrznymi i zewnętrznymi, z których wydziela się zwykły tekst, bo wiadomo, że one nie mogą się znaleźć w linkach '''spisu treści''', bo nie może być link w linku w nim, a one niezależnie jakie, bo to ze względu na {{Strong|HTML}} nie możliwe technologicznie. Definicje dwóch kolejnych funkcji zdefiniowanych powyżej: <syntaxhighlight lang="lua"> ---- szablon - kod obiektu kodu w wikikodzie; ---- obiekt - typ obiektu kodu powyżej; ---- kod - numer tego samego typu obiektu; local __FUNKCJA1=function(szablon,obiekt,kod) ---- Funkcja wykorzystywana do ewentualnego modyfikowania użytych szablonów i przedstawianiu jego kodem symbolicznym, lub zastępowania pewnych szablonów nagłówków wartością pustą; local szablon,wynik=SzablonyWywolywane(szablon,obiekt,kod); return szablon,wynik; end; local __FUNKCJA2=function(szablon,obiekt,kod) --- rozwijaj uzyskany szablon, dalej, gdy napotkasz, jeśli zostanie włączone zmienna indeksowania w postaci wartości logicznej; return czy_indeksowanie; end; </syntaxhighlight> Funkcja zwraca wartości, tzn. zmienną z przetworzenia nagłówkowego, bez usuniętych znaczników, stylów i znaków specjalnych, tzn. części otoczone pewnymi cudzysłowami z taką samą liczbą, więc pogrubienia i pochylenia tekstu: <syntaxhighlight lang="lua"> return naglowek, Znaczniki, SzablonyStylowe, ZnakiSpecjalne; </syntaxhighlight> Definicje tych zwróconych funkcji, tzn.: {{Code|Znaczniki}} {{Patrz|Znaczniki}}, {{Code|SzablonyStylowe}} {{Patrz|SzablonyStylowe}} i {{Code|ZnakiSpecjalne}} {{Patrz|ZnakiSpecjalne}}, którego opisy raczej przedstawiają ich nazwy, dokładnie one są udokumentowane tutaj: <syntaxhighlight lang="lua"> ---- tekst - tekst do przetworzenia; local function Znaczniki(tekst,jakie,__FUNKCJA1,__FUNKCJA2) ---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML;---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML; ---- funkcja do usuwania znaczników, tzn. w niej inne funkcje: __FUNKCJA1 - funkcja do zakodowywania tekstu przed usuwaniem znaczników, a __FUNKCJA2 - funkcja do odkodowania tego, co pozostało; tekst=p["UsuńZnaczniki"](tekst,jakie,__FUNKCJA1,__FUNKCJA2); return tekst; end; local function SzablonyStylowe(tekst) ---- funkcja do usuwania uruchomionych stylów, tzn. tych: <templatestyles src="..."/>, wtedy to staje się kodem parsera przetwarzanego za pomocą tekstu dla tego typu znacznika, kodami parsera mogą być też inne obiekty jak ramki Lua w Scribunto, ale nie muszą być takie, ale my rozważamy tutaj tylko jeden typ kodu parsera. tekst=p["UsuńSzablonyStylów"](tekst); return tekst; end; local function ZnakiSpecjalne(tekst) ---- funkcja do usuwania cudzysłowów w takich samych ilościach z prawej i z lewej strony danego fragmentu tekstu w nim; tekst=p["UsuńZnakiSpecjalne"](tekst); return tekst; end; </syntaxhighlight> Definicje tych funkcji znajdują się również w module: {{Code|{{ld2|Specjalne}}}}, które również przedstawiają inne funkcje do upraszczania tekstu, w tym nagłówka, ale nie tylko, bo dowolnego tekstu. === {{Śródtytuł|RefPrzypisowy}}{{Code|RefPrzypisowy}} === Mechanizm zamieniający kod referencji na jej wersję wyświetlaną na ekranie, czyli w nawiasie kwadratowym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local RefPrzypisowy=function(obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|obiekt}} {{Patrz|obiekt-ref}} - nazwa typu przypisu, czyli jak bez nazwy, czy też jak: '''uwaga''', * {{Code|kod}} {{Patrz|kod-ref}} - numer danego typu przypisu. Gdy {{LinkPatrz|obiekt-ref}} nie ma nazwy, wtedy w nawiasie kwadratowym będzie tylko numerek {{LinkPatrz|kod-ref}}, a jeśli ma nazwę, to nazwa oddzielona spacją z prawej strony, a po nim jest ten numerek. === Dalsza część funkcji - Tom I === Tutaj opowiemy o części wstępnej tej funkcji. ==== Ustalanie zmiennej nazwy modułu aktualnej, czy bieżącej ==== Funkcja ustawia zmienną: {{Code|czy_kodowanie}} {{Patrz|czy_kodowanie}}, na podstawie istnienia zmiennych: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} i {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. ==== Wyznaczanie nazwy modułu aktualnej, czy bieżącej, dla strony aktualnej, jeśli ona nie istnieje ==== Jeżeli zmienna {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} jest odpowiadającej wartości fdałszywej i mamy strona korzystaną, co określa parametr {{LinkPatrz|czy_artykul_korzystany}}, w postaci wartości prawdziwej, wtedy są liczone kolejne zmienne nazw na podstawie istnienia lub nieistnienia zmiennej {{Code|alternatywna}}, a jeśli ona jest prawdziwa, wtedy wybierane są zmienne z tą aktualną nazwą woluminu wynikłe z {{LinkZobaczTeż|strona_aktualna}}, przeciwnie z nazwą bieżącą woluminu,na podstawie tego, co wyświetla '''Stronicowy Parser''', te nazwy są ze sobą łączone, wtedy powstaje pełna nazwa strony, którą przyrównujemy do {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}}. Jeśli wartość {{LinkPatrz|czy_artykul_korzystany}} jest jednak fałszywa, w takim razie jest liczona {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} na podstawie wartości {{LinkPatrz|nazwa_strony}}. ==== Kodowanie '''HTML''' specjalnych znaków strony ==== Nazwę strony {{LinkPatrz|nazwa_strony}}, w której mogą występować specjalne znaki, które są niezrozumiałe z punktu widzenia '''HTML''', jeżeli np.z nich trzeba zbudować identyfikatory '''id''', a więc trzeba je zakodować, robimy to funkcją: {{Code|{{sr|#p.EncodeId|p=Html}}}}. ==== Zwracanie funkcji liczenia numeru nagłówka ==== Wyznaczamy funkcję: {{Code|HNumer}} {{Patrz|HNumer}}, która jest efektem zwrócenia przez: {{Code|{{sr|#p.LiczonyHNumer|p=StronicowyParser/Potrzebne}}}}. ==== Zamienianie szablonów nagłówków, czy nawet tych znaczników, na rozdziały równaniowe ==== Jeśli {{LinkPatrz|czy_kodowanie}} przyjmuje wartość prawdziwą, wtedy definiujemy funkcję: {{LinkŚródtytuł|SpecjalneWprowadzeniaTekstu}}. Dalej funkcja zamienia szablony: {{s|SpisTreści}} i {{s|HNumer}}, a także znaczniki: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, na ich wersję równaniową, aby dało się je rozpoznać jako rozdziały i było je łatwo wsadzić do szablonu takiego jak: {{s|Spis treści}} i inne podobne, za pomocą dwóch kolejnych funkcji wsadzonych do pewnej funkcji modułu {{m|Szablonowe}}, która służy do operacji na takich przypadkach. === Zmienna strony z nagłówkaami === Gdy jest podana zmienna: {{Code|tylko_naglowek}} {{LinkPatrz|tylko_naglowek}}, ma wartość prawdziwą, wtedy zmienna: {{Code|nazwa_strony_z_naglowkami}} {{Patrz|nazwa_strony_z_naglowkami}}, przybiera wartość pustą, przeciwnie gdy zmienna {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}} jest ciągiem pusty, wtedy to samo, w innym pozostałym przypadku jest to dokładnie {{LinkPatrz|nazwa_strony}}, gdzie przed nim znajduje się dwukropek {{Code|:}}. === Dalsza część funkcji - Tom II === Tu powiemy coś o iteratorze, który po zebraniu danych zwraca zmienną {{Code|nil}}, co odpowiada dla pętli, jej przerwaniu. ==== Definicja iteratora zbierania informacji o stronie ==== Aby uruchomić pętle na rzeczywistych danych zakodowanej, czy nie, stronie, trzeba otrzymać zmienną pętli {{Code|iterator}} {{Patrz|iterator}} i go wywoływać bezparametrowo w każdym okrążeniu pętli, aby tak się stało, to trzeba uruchomić funkcję: {{Code|{{sr|#p.IterTekst|p=StronicowyParser/Rozdziały}}}}, na tekście {{LinkPatrz|tekst_artykulu}}, traktując tekst, jakby nie był taki zakodowany, bo tutaj jedynie się liczą elementy niezakodowane, czyli w tym przypadku nagłówki z tekstem rozdziału. ==== Zbieranie informacji o stronie w pętli generowanej przez iterator ==== Będziemy tutaj opisywali pętlę generowaną przez jego iterator {{LinkPatrz|iterator}}. W każdym okrązeniu pętli otrzymujemy dane: * {{Code|naglowek_tab}} {{Patrz|naglowek_tab}} - gdzie pierwszy jego element to {{Code|naglowek}} {{LinkPatrz|naglowek}}, * {{Code|text_rozdzialu}} {{Patrz|text_rozdzialu}} - tekst rozdziału, * {{Code|poziom_rozdzialu}} {{Patrz|poziom_rozdzialu}} - poziom rozdziału. ===== Definicja nowe wartości zbierania uchwytów nagłówka w zmiennej numeracji ===== Deklaracja zmiennej {{Code|numeracja}} {{LinkPatrz|numeracja}} jest na zewnętrz pętli, w niej tworzymy jej nową wartość, którą jest tablica pusta. ==== Uzyskiwanie informacji z tekstu rozdziału nagłówka, i jego możliwych uchwytach, w poszczegolnym okrążeniu pętli, i zrzuceniu tam pojedynczego kodu problemu ==== Jeżeli {{ZobaczTeż|text_rozdzialu}} tekst strony jest zakodowany, to iterujemy po tekście {{LinkPatrz|text_rozdzialu}} w poszukiwaniu kodów bazy kodów zakodowanego tekstu, w tym celu wywołujemy pętlę: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, wtedy uzyskujemy trzy obiekty w każdym przebiegu pętli, tzn. {{Code|szablon}} {{LinkPatrz|szablon}}, {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, za pomocę tego uruchamiamy funkcję: {{LinkŚródtytuł|SzablonNaglowkujWTekscieRozdzialu}}. Jeżeli funkcja napotkała uchwyt szablonu: {{Code|{{s|Śródtytuł}}}}, wtedy jest zatrzymywana, w takim razie mamy informację o wystąpieniu niedozwolonego szablonu nagłówka w tekście. A jeżeli takiego szablonu tam nie ma, to układ iterator {{LinkPatrz|iterator}} iteruje aż do zakończenia danych. ==== Uzyskiwanie nagłówka i do niego identyfikatora '''id''' ==== ===== Tekst niezakodowany nagłówka ===== Gdy tekst nie jest zakodowany, wtedy zmienna: {{LinkPatrz|czy_kodowanie}}, ma wartość odpowiaadające fałszywej, wtedy dla tego nagłówka {{LinkPatrz|naglowek}} jest uruchamiana funkcja: {{Code|{{sr|#p.["PrzetwórzNagłówek"]|p=Specjalne}}}}, wtedy otrzymujemy dwie wartości: {{Code|nazwa_rozdzialu_w_artykule}} {{Patrz|nazwa_rozdzialu_w_artykule}} - zmienna idententyfikatora, {{Code|naglowek}} {{LinkPatrz|naglowek}} - zmienna nagłówka. Te dwie zmienne zostały maksymalnie rozwinięte, zostały przystosowane do tego, aby słuzyły do tego, co trzego zostały stworzone. ===== Tekst zakodowany nagłówka ===== Gdy jednak {{LinkPatrz|czy_kodowanie}} przyjełajednak wartość fałszywą, wtedy jest uruchamiana funkcja: {{LinkŚródtytuł|SzablonyWywolywaneOgolny}}, z której otrzymujemy: {{Code|naglowek}} {{LinkPatrz|naglowek}} - zmienna przetworzonego i maksymalnie rozwiniętego nagłówka, oraz zmienne funkcje: {{LinkPatrz|Znaczniki}}, {{LinkPatrz|SzablonyStylowe}} i {{LinkPatrz|ZnakiSpecjalne}}. Na podstawie defiicji: {{Code|nazwa_rozdzialu_w_artykule}} {{LinkPatrz|nazwa_rozdzialu_w_artykule}}, mamy: {{Code|naglowek}} {{LinkPatrz|naglowek}}. ====== Kompletowanie nagłówka ====== Ten nagłówek kompletujemy funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, usuwając szablony indeksowania {{LinkPatrz|p.szablony_indeksowania}}, a także znaczniki: {{Tag|li}}, {{Tag|ul}} i {{Tag|ol}}. ====== Kompletowanie identyfikatora nagłówka ====== Kompletując: {{Code|nazwa_rozdzialu_w_artykule}} {{LinkPatrz|nazwa_rozdzialu_w_artykule}}, rozwijamy wszystko, oprócz atrybutów, {{Code|obiekt}} {{Code|{{=}}}} {{Code|ATRYBUTY}}, a na szablonach wywołujemy funkcję: {{LinkŚródtytuł|SzablonyWywolywaneOgolny}}. Na identyfikatorze nagłówka {{LinkPatrz|nazwa_rozdzialu_w_artykule}} Wywołujemy kolejno lokalne funkcje: {{LinkPatrz|SzablonyStylowe}} - do usuwania rozwiniętych kodów stylów, {{LinkPatrz|ZnakiSpecjalne}} - do usuwania cudzysłowów, i {{LinkPatrz|Znaczniki}} - do usuwania znaczzników. ====== Gdy w kodzie identyfikatora nie ma symbolicznych szablonów ====== W tym przypadku uruchamiamy fukcję do dekodowania znaków '''HTML''', tzn. dziesiętnych, szesnastkowych i literowych, funkcją: {{Code|{{sr|#p.DecodeKoduHTMLZnaku|p=Html}}}}, a później kodujemy specjalne znaki identyfikatora sposobem: {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, przy pomocy kodów '''HTML''' dziesiętnych. ===== Usuwanie zbędnych znaków w identyfikatorze ===== Usuwane są potrójne i podwójne cudzysłowy {{Code|'}} oraz odstępy i dolne myślniki na końcach łańcucha, a wewnętrz jego kolejne je są zastępowane jedną spacją. ===== Referencje i wzory matematyczne ===== Referencje są zastępowane odpowiednio przy pomocy funkcji: {{LinkŚródtytuł|RefPrzypisowy}}, a wzory matematyczne, dla obiektów typu {{Code|POSTMATH}} {{Patrz|POSTMATH}}, które są zastępowane prawidłowo poprzez: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.text.encode|b=tak}}}}, przy pomocy: {{Code|{{sr|#p.NormaKoduZakodowanegoHtmlTekstu|p=Szablonowe}}}}, obiektem: {{Code|postMath}} {{Patrz|postMath}} z ośmioma znakami cyferkami na końcu tego, którym jest {{Code|kod}} {{LinkPatrz|kod}}. ===== Wstępne przygotowanie identyfikatora do końcowego skutecznego użytku ===== Dla danego identyfikatora one mogą się powtarzać, a identyfikator musi być unikalny, zatem trzeba napisać ich dodatkowe numerki, po policzeniu otrzymamy {{Code|numer_tego_samego_naglowka}} {{Patrz|numer_tego_samego_naglowka}}. ====== Tablica identyfikatora i nagłówka ====== Funkcja wykorzystuje tablicę: {{Code|tablica_powtarzajacych_sie_elementow}} {{Patrz|tablica_powtarzajacych_sie_elementow}}, aby policzyć numer powtarzającego się identyfikatora '''id'''. Dla {{LinkPatrz|numer_tego_samego_naglowka}} równego {{Code|1}}, tworzemy tablicę {{Code|elementy_linku}} {{Patrz|elementy_linku}}, którego pierwszym elementem jest: {{LinkPatrz|nazwa_rozdzialu_w_artykule}}, a drugim nagłówek {{LinkPatrz|naglowek}}, a w przypadku tego numerku innego niż podana liczba, to dajemy do identyfikatora na końcu ten numerek po dolnym myślniku. ====== Uzupełnianie zmiennej do identyfikacji uchwytu z odpowiednim nagłówkiem ====== Jeśli: {{LinkPatrz|obiekty}} i {{LinkPatrz|numeracja}}, istnieją, wtedy do tej pierwszej tablicy dodawane są wszystkie elementy o takim samym typie z {{LinkPatrz|numeracja}}. To dodawanie na końcu tablicy przedstawia się: <syntaxhighlight lang="lua"> for _,value_numeracja in ipairs(numeracja)do obiekty[#obiekty+1]={value_numeracja,{nazwa_strony_z_naglowkami,elementy_linku[1], elementy_linku[2]}}; end; </syntaxhighlight> ====== Tworzenie tablicy nagłówkami i indetyfikatorami ====== Jeśli {{Code|poziom_rozdzialu}} jest większy od zera, tzn. {{Code|> 0}} {{ZobaczTeż|>0}}, wtedy liczymy numer rozdziału przy pomocy funkcji: {{Code|HNumer}} {{LinkPatrz|HNumer}} liczony z: {{Code|poziom_rozdzialu}} {{LinkPatrz|poziom_rozdzialu}}, tworząc w ten sposób wynik w postaci zmiennej {{Code|numer_rozdzialu_ustalony}} {{Patrz|numer_rozdzialu_ustalony}}. ====== Rozdziały ewentualnie powtarzające się ====== Na koniec tablicy: {{Code|tablica_powtarzajacych_sie_elementow}} {{LinkPatrz|tablica_powtarzajacych_sie_elementow}}, dodajemy element identyfikatora '''id''' bez numerka, tzn.: {{Code|nazwa_rozdzialu_w_artykule}} {{LinkPatrz|nazwa_rozdzialu_w_artykule}}. ====== Tablica spisu treści ====== Jest tworzona tablica spisu: {{Code|tablica_spisu_tresci}} {{Patrz|tablica_spisu_tresci}}, jako pusta tablica, z później dodanym elementem o kluczu: {{Code|nazwa_strony}}, którym jest o wartości: {{LinkPatrz|nazwa_strony_z_naglowkami}}. Do tablicy: {{LinkPatrz|tablica_spisu_tresci}}, dodawane są elementy według schematu: <syntaxhighlight lang="lua"> tablica_spisu_tresci[#tablica_spisu_tresci+1]={elementy_linku,numer_rozdzialu_ustalony}; </syntaxhighlight> === Dalsza część funkcji - Tom III === Będziemy się tutaj zajmowali z tekstem przed pierwszym rozdziałem na stronie. ==== Nagłówek na samym początku strony ==== Gdy kodowanie jest jednak włączone, tzn.: {{LinkPatrz|czy_kodowanie}}, jest prawdziwe, i mamy artykuł korzystany, tzn.: {{LinkPatrz|czy_artykul_korzystany}}, i zaprzeczenie wyłowania funkcji: {{LinkPatrz|CzyJestTakiProblemJakoElementTablicy}}, przyjmuje wartość prawdziwą, to jeśli na samym początku znajduje się rozdział, wtedy funkcja zwraca wynik: {{LinkPatrz|tablica_spisu_tresci}}. ==== Tekst przed pierwszym rozdziałem ==== Wyznaczamy ten tekst, który będzie ukrywał się pod zmienną: {{Code|tekst_zerowy}} {{Patrz|tekst_zerowy}}, który jest tekstem przed pierwszym rozdziałem lub samym tekstem zakodowanego wikikodu {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}}. ===== Szablony nagłówka w tekście zerowym ===== W tym tekście iterujemy jak w punkcie: {{LinkZobaczTeż|text_rozdzialu}}, tylko zamiast {{LinkPatrz|text_rozdzialu}} jest {{LinkPatrz|tekst_zerowy}}. === Dalsza część funkcji - Tom IV === Zwracaną wartością tej funkcji jest: {{Code|tablica_spisu_tresci}} {{LinkPatrz|tablica_spisu_tresci}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 4kgb46vai2c4k74ji65a3u4w9n0qtgp 548362 548361 2026-07-26T13:10:15Z Persino 2851 /* Rozdziały ewentualnie powtarzające się */ 548362 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}|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.PobieranieInformacjiRamkiRozpatrywanejStrony}}{{Code|p.PobieranieInformacjiRamkiRozpatrywanejStrony}} == Pobieranie danych z obiektu {{LinkPatrz|self}}, biorąc jego podtablicę o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiRamkiRozpatrywanejStrony(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa ramki tablicy transportu. == {{Śródtytuł|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}}{{Code|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}} == Funkcja uruchamiacz, główna funkcja dzięki, której ładują się informacje według modułu: {{Code|{{ld2|StronicowyParser/informacje}}}} (tam jest użyty). Ten ładowacz jest pokazany w module opis: {{Code|{{lr2|Moduły/StronicowyParser/informacje}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}. === {{Śródtytuł|DaneNazw}}{{Code|DaneNazw}} === Funkcja licząca nazwy podanej nazwy strony, tzn.: {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} {{Patrz|nazwa_artykulu}}, oraz zwracające te kolejno nazwy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function DaneNazw(pelna_nazwa_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|pelna_nazwa_strony}} {{Patrz|pelna_nazwa_strony}} - pełna nazwa strony. === Dalsza część funkcji - Tom I === ==== Tworzenie i inicjowanie początkowych tabel ==== Funkcja tworzy podtabele tabeli zmiennej obiektowej {{LinkPatrz|self}} o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, o wartości pustej. Następnie są tworzone podtabele puste w tej ostatniej o kluczach: {{Code|dane_analizy_stron}} {{Patrz|dane_analizy_stron}} i {{Code|licencja}}{{Patrz|licencja}}, oraz nilowe zmienne z tego samego, co ostatnie, o kluczu: {{Code|problemy}} {{Patrz|problemy}}. ==== Zmienne nazw strony bieżącej, czy nawet aktualnej, w zależności, czy istnieją odpowiednie ustawienia ==== Jest liczony adres strony, na której jest uruchomiona dana strona, wewnętrznej bezparametrowo według: {{Code|{{sr|#p["PełnaNazwaArtykułu"]|p=Książkowe}}}} {{Patrz|strona_aktualna}}, co z tego są liczone z niego: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, co z tego jest liczona pełna nazwa książki {{Code|pelna_nazwa_ksiazki}} {{Patrz|pelna_nazwa_ksiazki}}. ==== Zbieranie danych ustawień z: {{Code|.../config}}, jeśli istnieją ==== Jest liczony pełny adres ustawień: {{Code|pelna_nazwa_ksiazki_ustawienia}} {{Patrz|pelna_nazwa_ksiazki_ustawienia}}, według schematu: {{Code|"Szablon:Podręcznik/Ustawienia/"..pelna_nazwa_ksiazki}} {{Patrz|UstawieniaKsiążki}}. Co z tego jest sprawdzane, czy istnieje strona: {{Code|pelna_nazwa_ksiazki_ustawienia.."/config"}} {{Patrz|config}}, a jeśli tak, to wtedy wiemy, że to jest szablon, to go przedstawiamy w postaci szablonowej, licząc z: {{Code|{{sr|#p.NazwaSzablonu|p=Szablonowe}}}}. Dalej jest liczony ostatni wyliczony szablon z parametrem {{Code|książka}} {{Patrz|książka}}, dalej jeszcze raz, tym razem z parametrem: {{Code|artykuł}} {{Patrz|artykuł}} - te parametry przedstawiają parametry artykułu książkowego, skąd możemy ściągać stronę, by ją wyświetlić na stronie aktualnej, na pewno parametr {{LinkPatrz|książka}} nie może być parametrem składających z samych znaków odstępów, a jeśli tak jest, w takim razie z tych dwóch parametrów jest liczony parametr {{Code|strona}} {{Patrz|strona}}. Dalej liczymy, czy ona jest poprawnym adresem, używając funkcji: {{Code|{{sr|#p["CzyNiepoprawnaNazwa"]|p=Pudełko/Tom I}}}}. A jeżeli adres jest jednak poprawny, ta funkcja zwraca wartość odpowiadającej fałszywej wartości, wtedy jest liczony pełny adres strony, jeżeli ona jest względna z parametrów, tzn. parametr pierwszy: {{LinkPatrz|strona}}, i parametr drugi: {{LinkPatrz|strona_aktualna}}, co względem tej funkcji mamy już: {{LinkPatrz|strona}}, czyli po tej operacji (procedurze) policzyliśmy bezwzględny jego adres. ===== Liczenie nazw z parametru pełnej nazwy aktualnej, nie bieżącej, strony wynikłe z obliczeń z ustawień ===== Policzona wartość strony: {{LinkPatrz|strona}}, jest sprawdzana, czy adres (strona), pod którym ona się kryje, istnieje, a jeśli tak, to ten adres jest tylko formatowany. Porównujemy adres {{LinkPatrz|strona}} z {{LinkPatrz|strona_aktualna}}, czy przedstawiają nie ten sam adres, a jeżeli tak, to liczymy wszyskie nazwy strony, czyli dla bez {{Code|aktualna_}}, przyrównujemy do tego z tym początkiem, co odpowiada pełnej nazwie strony z {{Code|strona_aktualna}} {{LinkPatrz|strona_aktualna}} {{ZobaczTeż|strona_aktualna}}, i używając funkcji: {{LinkŚródtytuł|DaneNazw}}, ze zmiennej: {{Code|strona}} {{LinkPatrz|strona}} {{ZobaczTeż|strona}}. Te ostatnie nazwy są potrzebne do analizy strony bieżącej, nie aktualnej, tzn. na niej, jakie są szablony, jakie posiada spisy, jakie książki, a w nim spisy do nich, są dołączone. ====== Policzone nazwy strony aktualnej wpisane do ogólnej tablicy ====== A póżniej z adresów pliczonych wywołania, dotyczącej tego aktualnego, liczymy dla podtabeli: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienne o kluczach: {{Code|aktualna_nazwa_przestrzeni}} {{Patrz|aktualna_nazwa_przestrzeni}}, {{Code|aktualna_nazwa_przestrzeni_ksiazki}} {{Patrz|aktualna_nazwa_przestrzeni_ksiazki}}, {{Code|aktualna_nazwa_ksiazki}} {{Patrz|aktualna_nazwa_ksiazki}} i {{Code|aktualna_nazwa_artykulu}} {{Patrz|aktualna_nazwa_artykulu}}, mając zmienne nazw policzone z tego aktualnego. ===== Czy strona bieżąca, ale nie zbiorcza, jest wyświetlana na stronie aktualnej, czy może jest tylko stroną zbiorczą uruchomioną pod inną nazwą ===== Jeśli zmienne nazw są policzone z: {{LinkZobaczTeż|strona}} i {{LinkZobaczTeż|strona_aktualna}}, to wtedy kolejno porównujemy, czy któraś z nich jest nierówna, a jeśli tak, to wywołujemy szablon z parametru: {{Code|zastępcza}} {{ZobaczTeż|zastępcza}} - jest to, czy strona jest zbiorcza, o nazwie: {{LinkPatrz|config}}, czy powinna być wartością niepustą. A jak tak, to wyznaczamy z tablicy: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienną o kluczu: {{Code|alternatywna}} {{Patrz|alternatywna}}, co przyrównujemy jemu wartość logiczną z uzyskanego z szablonu z parametrem {{LinkZobaczTeż|zastępcza}}, a jeżeli ta zmienna przyjmuje wartość odpowiadająca fałszywej, wtedy zmienna z tej samej tablicy o kluczu: {{Code|inna_strona_aktualna_niz_biezaca}} {{Patrz|inna_strona_aktualna_niz_biezaca}} - jest to, czy strona jest inna niż zbiorcza, ale wyświetlana na innej stronie, przyjmuje wartość prawdziwą. === Dalsza część funkcji - Tom II === Tworzymy zmienną: {{Code|tablica_zmiennych}}, która jest tablicą pustą, którą uzupełniamy o elementy o kluczach: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}} - są to dane zebrane z bieżącej strony, i {{Code|linkobiekt}} {{Patrz|linkobiekt}} - są to dane zebrane o linkach na stronie odpowiadających poszczególnym obiektom. Uruchamiamy funkcję: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}, z której wyznaczamy parametr: {{Code|tabela_listy_danych_analizy_ksiazki}} - są to dane zebrane z bieżącej i innych stron skojarzonej z nim, te elementy są tylko w postaci nieprzetworzonej, ale przygotowanej. A jeśli ten parametr jest tabelką - a jeżeli nie jest, to nastąpił błąd przetwarzania, i funkcja nie idzie dalej w instrukcję warunkową, wtedy wywołujemy funkcję: {{Code|{{sr|#p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony|p=StronicowyParser/NumeracjaObiektówStron}}}}. === Dalsza część funkcji - Tom III === Na sam koniec funkcji zwracamy tablicę: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}} - ta zmienna zawiera dane w postaci przetworzonej policzonej, tzn. uchwytom są przydzielone numeracje, sprawdzane, czy uchwyty są policzone, są wyznaczone wszystkie kody problemów, które później są potrzebne do wyznaczania wszystkich kategorii błędów na stronie. == {{Śródtytuł|p.SpisRzeczyWedlePodanegoTekstu}}{{Code|p.SpisRzeczyWedlePodanegoTekstu}} == Funkcja generowania liczenia nagłówków strony, co na tej podstawie może być generowany '''spis treści''' strony. Funkcja przyporządkowuje uchwytom szablonów nagłówków ich identyfikatory i te nagłówki, w którym one leżą, jeżeli zmienna {{LinkPatrz|obiekty}} istnieje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SpisRzeczyWedlePodanegoTekstu(self,tekst_artykulu,nazwa_strony,czy_artykul_korzystany, tylko_naglowek,obiekty,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_obiektow_strony_danych_kodow_specjalnych_modul,KtorySzablonMaZwracacKategorie,wzory_zamiast_kodow,tabela_elementow_strony_kodow)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}} - tekst przetworzony, przygotowany ewentualnie przez pewną funkcję, rozważanego artykułu, * {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} - nazwa strony, danego spisu, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy strona jest bieżąca, * {{Code|tylko_naglowek}} {{Patrz|tylko_naglowek}} - pisz adresy stron z tylko nagłówkami '''#''', bez adresów stron, * {{Code|obiekty}} {{Patrz|obiekty}} - elementy tam zebrane, są wykorzystywane do analizy nagłówków poprzez szablon {{s|Śródtytuł}}, któremu temu nagłówkowi odpowjada pewien uchwyt, czy uchwyty, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}, * {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} - nazwa aktualna, czy bieżąca strony, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy zebranych informacji w postaci zakodowanej modułu {{m|Szablonowe}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tabela przeanalizowanych elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} {{Patrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} - tablica dwuwymiarowa kodów o kluczach: szablonów referencji: '''REF...''' i '''POSTMATH''' oraz ich elementu numeru kodu {{Code|kod}}, którego elementem jest kod tego elementu, * {{Code|KtorySzablonMaZwracacKategorie}} {{Patrz|KtorySzablonMaZwracacKategorie}} - tabela składająca się z trzech elementów, którego pierwszy element to: {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{Patrz|KtorySzablonMaZwracacKategorieNaglowek}} - funkcja dla szablonów problemów dla jak: {{s|Śródtytuł}}, w nagłówku, drugi: {{Code|KtorySzablonMaZwracacKategorieTekst}} {{Patrz|KtorySzablonMaZwracacKategorieTekst}} - funkcja dla tego typu szablonów, ale dla nich w tekście, nie w nagłówku, trzeci: {{Code|CzyJestTakiProblemJakoElementTablicy}} {{Patrz|CzyJestTakiProblemJakoElementTablicy}} - czy nie rozważać, dla rozdziałów zerowych, przeciwnie: ta funkcja może przyjmować wartość {{Code|nil}}, wartość zwracana tego elementu, bo to jest funkcja, zależy, czy jest ustawiony kod problemu: {{Code|nagłówek w tekście rozdziału w stronie korzystanej}} {{Patrz|nagłówek w tekście rozdziału w stronie korzystanej}}, a jeżeli jest taki, to ta funkcja przyjmuje zrzuconą wartość {{Code|true}}, * {{Code|wzory_zamiast_kodow}} {{Patrz|wzory_zamiast_kodow}} - rozważaj wzory według tablicy: {{LinkPatrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}}, lub koduj to według funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}} - to wykorzystuj w przypadku, gdy: {{LinkPatrz|nazwa_strony}}, istnieje, i jest wartością pustą, lub {{Code|{{sr|#p.NormaKoduZakodowanegoWikiTekstu|p=Szablonowe}}}} - przeciwnie, * {{Code|tabela_elementow_strony_kodow}} {{Patrz|tabela_elementow_strony_kodow}} - baza tabela z zapamiętanymi podtabelami, którego poszczególne elementy wykorzystywane w spisie posiadają w sobie tylko pierwszy element w postaci przetworzonego uchwytu, bo używamy tylko uchwytów szablonów nagłówków. === {{Śródtytuł|SpecjalneWprowadzeniaTekstu}}{{Code|SpecjalneWprowadzeniaTekstu}} === Funkcja zamieniające pewne szablony, czy znaczniki, na rozdziały równaniowe. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local SpecjalneWprowadzeniaTekstu=function(szablon,obiekt,kod,czy_szablon,czy_znacznik,czy_liczyc,funkcja1,funkcja2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} {{Patrz|szablon}} - zmienna (szablon), nie musi być to normalny szablon, * {{Code|obiekt}} {{Patrz|obiekt}} - zmienna, którego typu jest obiekt, * {{Code|kod}} {{Patrz|kod}} - numer obiektu typu {{LinkPatrz|obiekt}}, * {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy to jest szablon, * {{Code|czy_znacznik}} {{Patrz|czy_znacznik}} - czy to jest znacznik, * {{Code|czy_liczyc}} {{Patrz|czy_liczyc}} - czy funkcję liczyć w sposób złożony, szablony typu: {{s|SpisTreści}} - zamieniający go na znacznik, czy prosty, co na samym końcu uruchamiana jest funkcja: {{LinkPatrz|funkcja1}}, * {{Code|funkcja1}} {{Patrz|funkcja1}} - funkcja operująca na wygenerowanym pośrednio (dłuższe liczenie) lub bezpośrednio (krótsze) znaczniku, wychodząca z szablonu, i zamieniająca go na rozdział równaniowy, funkcja operująca dla szablonów: {{s|SpisTreści}} lub {{s|HNumer}}, * {{Code|funkcja2}} {{Patrz|funkcja2}} - funkcja operująca na znaczniku '''HTML''' nagłówka - typu jak: {{Tag|h1}}, i zamieniająca go na rozdział równaniowy. ==== {{Śródtytuł|ParametrNR}}{{Code|ParametrNR}} ==== Funkcja liczy dokładnie parametr dany o danym numerze, zbiór danych parametrów oznaczających to samo może być wiele, tylko że jedne mogą być ważniejsze od drugich. Definicja skrótowa funkcja: <syntaxhighlight lang="lua"> local function ParametrNR(numer)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer}} {{Patrz|numer}} - numer parametru. Funkcja wykorzystywuje funkcję do uruchomienia: {{Code|{{sr|#p.SpisRzeczySzablon|p=StronicowyParser/Potrzebne}}}}, do generowania parametrów, a właściwie ich wartości. ==== {{Śródtytuł|ObiektKodNumer}}{{Code|ObiektKodNumer}} ==== Funkcja dodająca do bazy danych kolejny element bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla danego obiektu element na samym końcu, po maksymalnym elemencie do niego. Funkcja liczy kod przy pomocy funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local ObiektKodNumer=function(szablon,obiekt)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}. ==== Dalszy opis funkcji ==== Dla {{LinkPatrz|czy_szablon}} prawdziwego dla szablonów sztucznego spisu treści, sprawdzanego przez tabelkę: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, dla danego szablonowego rozdziału generowanego według {{s|HNumer}}, jest on zamieniany na rozdział równaniowy poprzez funkcję: {{LinkPatrz|funkcja1}}. Ta tabela przedstawia się treścią: <syntaxhighlight lang="lua"> p.szablony_sztucznego_wprowadzenia_tekstu={ ["HNumer"]=1, }; </syntaxhighlight> Dla innych rozdziałów szablonowych, tym razem generowanego przez szablon {{s|SpisTreści}}, którego parametry są wyznaczane przez funkcję: {{LinkŚródtytuł|ParametrNR}}, tabelka parametrów opisująca to: <syntaxhighlight lang="lua"> p.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu={ ["SpisTreści"]={{"artykuł",1,},{"książka",2,},{"nazwa",3,},{"dodatek",4,},{"poziom",},}, }; </syntaxhighlight> Funkcja liczy artykuł, koloruje do niego link w: '''spisie treści''', na czerwona, wtedy generuje dodatkowy znacznik, z właściwością: {{Code|color:red}}, gdy on nie istnieje, i to wstawia do tabeli bazy, lub bez niego, wtedy bezposrednio generuje tekst równy nazwie tego szablonu, opakowany, lub nie, w zależności od istnienia. Do policzenia strony, czy ona istnieje, musi być przedtem zdekodowany funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, by później policzyć to sprawdzenie przy pomocy: {{Code|{{sr|#p.PoliczZbiory|p=Techniczne}}}}. W każdym bądź razie jest ruchumianiana funkcja: {{LinkPatrz|funkcja1}}. Gdy to nie jest szablon, tzn.: {{LinkPatrz|czy_szablon}}, jest fałszywe, ale {{LinkPatrz|czy_znacznik}} jest prawdziwe, to takie znaczniki, jak od: {{Tag|h1}} do {{Tag|h6}}, są zamieniane na czysty tekst. W takim razie wywoływana jest dla tego przypadku funkcja: {{LinkPatrz|funkcja2}}. Funkcja: {{LinkPatrz|funkcja1}}, jest dla szablonów nagłówków, a: {{LinkPatrz|funkcja2}}, dla znaczników nagłówków. Z tych generowanych czystych generowanych tekstów są tworzone w tekście rozdziały równaniowe, by później wygenerować '''spis treści''', właśnie z nimi - z tymi nagłówkami, a bardziej ściśle linkami do nich. === {{Śródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}{{Code|SzablonNaglowkujWNaglowkuRozdzialu}} === Fukcja do obsługi nagłówków {{LinkPatrz|Śródtytuł}} w nagłówku, nie w tekście poza nim. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWNaglowkuRozdzialu(szablon,obiekt,kod,powtorka,parametry_wywolania_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}, * {{Code|powtorka}} {{Patrz|powtorka}} - numer użycia takiego samego szablonu typu {{s|Śródtytuł}} {{Patrz|Śródtytuł}}, * {{Code|parametry_wywolania_szablonu}} {{Patrz|parametry_wywolania_szablonu}} - parametry szablonu wraz z ich wartościami, * {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} - nazwa szablonu wywołania, * {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} - modyfikatory szablonu. Funkcja sprawdza, czy szablon w nagłówku jest typu {{LinkPatrz|Śródtytuł}}, a jeżeli tak, to liczy jego uchwyt, najpierw wyznacza je z parametru o nazwie {{Code|uchwyt}} {{Patrz|uchwyt}}, dalej sprawdzane jest, czy taki uchwyt tak zdefiniowany istnieje, jeśli tak, to wydobywana jest jego przetworzona tabela z tym właśnie uchwytek, funkcja robi to względem numeru {{Code|kod}} {{LinkPatrz|kod}} tego szablonu na podstawie funkcji: {{Code|{{sr|#p.WydobywanieUchwytuZeiBezNumeracji|p=StronicowyParser/ZbieranieDanychStron}}}}. Jeżeli wydobyta tabela {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} nie istnieje, w takim razie jest ona dekodowana funkcją: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, a później jest traktowana jako adres '''URL''', tzn. jest dekodowana funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, dalej jest tworzona tabela pusta: {{LinkPatrz|lista_dwuelementowa}}, co dalej jest tam wstawiana do niej jako pierwszy element uzyskany uchwyt przetworzony. A jeśli jednak {{LinkPatrz|lista_dwuelementowa}} została wydobyta z naszej funkcji tabela, która istnieje, wtedy funkcja idzie, niż poprzednio, w inny krok instrukcji warunkowej, wtedy z tej tabeli jest wydobywany pierwszy element jako przetworzony wcześniej uchwyt. Gdy {{ZobaczTeż|uchwyt}} przetworzony uchwyt jest łańcuchem znaków niepusty, wtedy on jest dodawany w postaci tabeli, w której jest ten uchwyt, na sam koniec tabeli {{Code|numeracja}} {{Patrz|numeracja}}. Gdy liczba powtórzeń jest większa niż zero, wtedy jest wywoływana funkcja, przy którym mają być zwrócone kategorie, jeśli zostaną użyte, o nazwie {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}}. Gdy jednak uchwyt uzyskany nie istnieje, to wtedy jest to samo robione, co w: {{LinkZobaczTeż|uchwyt}}. Przed zwróceniem ile razy została dokonana powtórka, jest powiększany licznik powtorek, i to jest otrzymywane z tej funkcji. === {{Śródtytuł|SzablonNaglowkujWTekscieRozdzialu}}{{Code|SzablonNaglowkujWTekscieRozdzialu}} === Funkcja do analizy szablonów nagłówków w tekście rozdziału, nie w nagłówku. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWTekscieRozdzialu(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja sprawdza, czy tekst w bazie kodów jest typu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, w takim razie po wykryciu, że dla tego, że jest to wywołanie szablonowe, a nie instrukcja warukowa w wikikodzie w tekście, wtedy podobnie jest robione, co w funkcji: {{LinkŚródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}, tylko zamiast {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}} jest {{Code|KtorySzablonMaZwracacKategorieTekst}} {{LinkPatrz|KtorySzablonMaZwracacKategorieTekst}}. Przy wykryciu tam szablonu typu {{LinkPatrz|Śródtytuł}}, funkcja zawsze zwraca wartość {{Code|true}}, w innych przypadkach {{Code|false}}. W przypadku intrukcji warunkowej w wikikodzie i dla ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jest wtedy zwracana wartość {{Code|false}}. Funkcja w pozostałych przypadkach zwraca wartość logiczną {{Code|false}}. === {{Śródtytuł|SzablonyWywolywane}}{{Code|SzablonyWywolywane}} === Szablon zamieniający specjalne znaki szablonów, tzn.: {{Code|{{((}}}}, {{Code|{{))}}}}, {{Code|{{!}}}} i {{Code|{{=}}}}, kolejno na: {{Code|{{s|((}}}}, {{Code|{{s|))}}}}, {{Code|{{s|!}}}} i {{Code|{{s|{{=}}}}}}, takich {{ZobaczTeż|StronicowyParser}}, które zawierają wywołania '''Stronicowego Parsera''', czyli ramki typu: {{Code|{{m|StronicowyParser}}}}, czy: {{Code|{{m|StronicowyParser/}}}}, a inne są po prostu przypisywane. W przypadku linków, i nie tylko, tzn. dla szablonów {{LinkZobaczTeż|StronicowyParser}}, z innych stron niż korzystana, co jest trafnie oznaczone zaprzeczeniem parametru {{LinkPatrz|czy_artykul_korzystany}} są liczone parametry pudełkowe {{Code|{{m|Pudełko}}}}. Strony wskazane przez te parametry są analizowane, przy czym linki są przez inną funkcję, a inne już przez znów inną. Szablony nagłówków typu {{LinkPatrz|Śródtytuł}}, czy szablonów stronicowych otwierających i zamykających, one lub jego koledzy, tzn. ich: {{s|StronaStart}} i {{s|StronaKoniec}}, są zastępowane ciągiem pustym. Inne parametry opisane z tabeli {{Code|{{sr|#p.szablony_stronicowe_kontenerowe_formatowania_wzorowego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, są zastępowane ich zawartością, by uniknąć kontaktu nagłówków z tego typu szablonami. Szablony ideksowania określone tabelą: {{Code|{{sr|#p.szablony_indeksowania}}}} {{Patrz|p.szablony_indeksowania}}, nie są rozwijana z kodowania lub są, w zależności, czy zmienna: {{Code|czy_indeksowanie}} {{Patrz|czy_indeksowanie}}, ma wartość {{Code|true}} - tutaj są, czy odpowiadającej fałszywej wartości logicznej - a tutaj już nie. W przypadku instrukcji warunkowych, czy ramek {{lpg|Lua}} w {{lpg|Lua|Scribunto}}, one są rozwijane - kod tego jest zawartością {{LinkPatrz|szablon}}. W innych przypadkach funkcja zwraca wartość {{Code|nil}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywane(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. W powyższym opisie występują szablony opisane w: {{LinkPatrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, a jej definicja jest: <syntaxhighlight lang="lua"> p.szablony_stronicowe_kontenerowe_formatowania_wzorowego={ ["Formuła"]=1; }; </syntaxhighlight> Jest to szablon: {{s|Formuła}} i podobne, liniowe wstawiane do tekstu, ta tabela ma za zadanie zastąpić te szablony ich poszczególnym zawartościom, a ta funkcja, która ją wykorzystywuje się do tego przypadku, jest o nazwie: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}. Tabelą szablonów indeksowania, to są one zdefiniowane przez: {{LinkPatrz|p.szablony_indeksowania}}, a jej zawartość: <syntaxhighlight lang="lua"> p.szablony_indeksowania={ ["Kotwica"] =true, ["Indeksuj"]=true, }; </syntaxhighlight> Są to szablony kotwic: {{s|Kotwica}}, który jest szablonem liniowym, a {{s|Indeksuj}}, natomiast to blokowy. === {{Śródtytuł|SzablonyWywolywaneOgolny}}{{Code|SzablonyWywolywaneOgolny}} === Funkcja rozwija nagłówek, wydzielając z niego zwykły tekst, nie dopełniając pewnych operacji. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywaneOgolny(naglowek)...end; </syntaxhighlight> Parametry funkcji: * {{Code|naglowek}} {{Patrz|naglowek}} - tekst nagłówka napisu wprowadzenia tekstu. Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["WydzielZwykłyTekst"]|p=Specjalne}}}}, kod jej wywoływany jest z parametrami: <syntaxhighlight lang="lua"> local naglowek,Znaczniki,SzablonyStylowe,ZnakiSpecjalne=specjalne_modul["WydzielZwykłyTekst"]( { ---- tekst nagłówka; tekst=naglowek, ---- Nie wykorzystywuj w działaniu funkcji: Znaczniki, SzablonyStylowe, ZnakiSpecjalne; ["nagłówek"]=true, ---- Nie wykorzystuj dekodowania tekstu zakodowanego, bez rozwijania, ale wręcz przzeciwnie rozwijaj, pozostawiaj pewne szczególne kody przed rozkodowaniem; nieklasycznie=true, ---- Bazę kodowania weź z zewnątrz; kodowanie=false, ---- Wykorzystywana tablica kodowania tekstu modułu: Module:Szablonowe, zakodowanego z zewnątrz; ["tablica kodowania"]=tablica_analizy_obiektow_strony_dany_modul, },__FUNKCJA1,__FUNKCJA2); </syntaxhighlight> Ta funkcja wydziela zwykły tekst z nagłówka z szablonami zwykłymi i ramkami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, bez naruszenia działania innych elementów szablonowych, jak tagi, czyli: {{s|#tag:}}, które też współdziałają też w kodzie danego nagłówka. Również i z linkami wewnętrznymi i zewnętrznymi, z których wydziela się zwykły tekst, bo wiadomo, że one nie mogą się znaleźć w linkach '''spisu treści''', bo nie może być link w linku w nim, a one niezależnie jakie, bo to ze względu na {{Strong|HTML}} nie możliwe technologicznie. Definicje dwóch kolejnych funkcji zdefiniowanych powyżej: <syntaxhighlight lang="lua"> ---- szablon - kod obiektu kodu w wikikodzie; ---- obiekt - typ obiektu kodu powyżej; ---- kod - numer tego samego typu obiektu; local __FUNKCJA1=function(szablon,obiekt,kod) ---- Funkcja wykorzystywana do ewentualnego modyfikowania użytych szablonów i przedstawianiu jego kodem symbolicznym, lub zastępowania pewnych szablonów nagłówków wartością pustą; local szablon,wynik=SzablonyWywolywane(szablon,obiekt,kod); return szablon,wynik; end; local __FUNKCJA2=function(szablon,obiekt,kod) --- rozwijaj uzyskany szablon, dalej, gdy napotkasz, jeśli zostanie włączone zmienna indeksowania w postaci wartości logicznej; return czy_indeksowanie; end; </syntaxhighlight> Funkcja zwraca wartości, tzn. zmienną z przetworzenia nagłówkowego, bez usuniętych znaczników, stylów i znaków specjalnych, tzn. części otoczone pewnymi cudzysłowami z taką samą liczbą, więc pogrubienia i pochylenia tekstu: <syntaxhighlight lang="lua"> return naglowek, Znaczniki, SzablonyStylowe, ZnakiSpecjalne; </syntaxhighlight> Definicje tych zwróconych funkcji, tzn.: {{Code|Znaczniki}} {{Patrz|Znaczniki}}, {{Code|SzablonyStylowe}} {{Patrz|SzablonyStylowe}} i {{Code|ZnakiSpecjalne}} {{Patrz|ZnakiSpecjalne}}, którego opisy raczej przedstawiają ich nazwy, dokładnie one są udokumentowane tutaj: <syntaxhighlight lang="lua"> ---- tekst - tekst do przetworzenia; local function Znaczniki(tekst,jakie,__FUNKCJA1,__FUNKCJA2) ---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML;---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML; ---- funkcja do usuwania znaczników, tzn. w niej inne funkcje: __FUNKCJA1 - funkcja do zakodowywania tekstu przed usuwaniem znaczników, a __FUNKCJA2 - funkcja do odkodowania tego, co pozostało; tekst=p["UsuńZnaczniki"](tekst,jakie,__FUNKCJA1,__FUNKCJA2); return tekst; end; local function SzablonyStylowe(tekst) ---- funkcja do usuwania uruchomionych stylów, tzn. tych: <templatestyles src="..."/>, wtedy to staje się kodem parsera przetwarzanego za pomocą tekstu dla tego typu znacznika, kodami parsera mogą być też inne obiekty jak ramki Lua w Scribunto, ale nie muszą być takie, ale my rozważamy tutaj tylko jeden typ kodu parsera. tekst=p["UsuńSzablonyStylów"](tekst); return tekst; end; local function ZnakiSpecjalne(tekst) ---- funkcja do usuwania cudzysłowów w takich samych ilościach z prawej i z lewej strony danego fragmentu tekstu w nim; tekst=p["UsuńZnakiSpecjalne"](tekst); return tekst; end; </syntaxhighlight> Definicje tych funkcji znajdują się również w module: {{Code|{{ld2|Specjalne}}}}, które również przedstawiają inne funkcje do upraszczania tekstu, w tym nagłówka, ale nie tylko, bo dowolnego tekstu. === {{Śródtytuł|RefPrzypisowy}}{{Code|RefPrzypisowy}} === Mechanizm zamieniający kod referencji na jej wersję wyświetlaną na ekranie, czyli w nawiasie kwadratowym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local RefPrzypisowy=function(obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|obiekt}} {{Patrz|obiekt-ref}} - nazwa typu przypisu, czyli jak bez nazwy, czy też jak: '''uwaga''', * {{Code|kod}} {{Patrz|kod-ref}} - numer danego typu przypisu. Gdy {{LinkPatrz|obiekt-ref}} nie ma nazwy, wtedy w nawiasie kwadratowym będzie tylko numerek {{LinkPatrz|kod-ref}}, a jeśli ma nazwę, to nazwa oddzielona spacją z prawej strony, a po nim jest ten numerek. === Dalsza część funkcji - Tom I === Tutaj opowiemy o części wstępnej tej funkcji. ==== Ustalanie zmiennej nazwy modułu aktualnej, czy bieżącej ==== Funkcja ustawia zmienną: {{Code|czy_kodowanie}} {{Patrz|czy_kodowanie}}, na podstawie istnienia zmiennych: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} i {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. ==== Wyznaczanie nazwy modułu aktualnej, czy bieżącej, dla strony aktualnej, jeśli ona nie istnieje ==== Jeżeli zmienna {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} jest odpowiadającej wartości fdałszywej i mamy strona korzystaną, co określa parametr {{LinkPatrz|czy_artykul_korzystany}}, w postaci wartości prawdziwej, wtedy są liczone kolejne zmienne nazw na podstawie istnienia lub nieistnienia zmiennej {{Code|alternatywna}}, a jeśli ona jest prawdziwa, wtedy wybierane są zmienne z tą aktualną nazwą woluminu wynikłe z {{LinkZobaczTeż|strona_aktualna}}, przeciwnie z nazwą bieżącą woluminu,na podstawie tego, co wyświetla '''Stronicowy Parser''', te nazwy są ze sobą łączone, wtedy powstaje pełna nazwa strony, którą przyrównujemy do {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}}. Jeśli wartość {{LinkPatrz|czy_artykul_korzystany}} jest jednak fałszywa, w takim razie jest liczona {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} na podstawie wartości {{LinkPatrz|nazwa_strony}}. ==== Kodowanie '''HTML''' specjalnych znaków strony ==== Nazwę strony {{LinkPatrz|nazwa_strony}}, w której mogą występować specjalne znaki, które są niezrozumiałe z punktu widzenia '''HTML''', jeżeli np.z nich trzeba zbudować identyfikatory '''id''', a więc trzeba je zakodować, robimy to funkcją: {{Code|{{sr|#p.EncodeId|p=Html}}}}. ==== Zwracanie funkcji liczenia numeru nagłówka ==== Wyznaczamy funkcję: {{Code|HNumer}} {{Patrz|HNumer}}, która jest efektem zwrócenia przez: {{Code|{{sr|#p.LiczonyHNumer|p=StronicowyParser/Potrzebne}}}}. ==== Zamienianie szablonów nagłówków, czy nawet tych znaczników, na rozdziały równaniowe ==== Jeśli {{LinkPatrz|czy_kodowanie}} przyjmuje wartość prawdziwą, wtedy definiujemy funkcję: {{LinkŚródtytuł|SpecjalneWprowadzeniaTekstu}}. Dalej funkcja zamienia szablony: {{s|SpisTreści}} i {{s|HNumer}}, a także znaczniki: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, na ich wersję równaniową, aby dało się je rozpoznać jako rozdziały i było je łatwo wsadzić do szablonu takiego jak: {{s|Spis treści}} i inne podobne, za pomocą dwóch kolejnych funkcji wsadzonych do pewnej funkcji modułu {{m|Szablonowe}}, która służy do operacji na takich przypadkach. === Zmienna strony z nagłówkaami === Gdy jest podana zmienna: {{Code|tylko_naglowek}} {{LinkPatrz|tylko_naglowek}}, ma wartość prawdziwą, wtedy zmienna: {{Code|nazwa_strony_z_naglowkami}} {{Patrz|nazwa_strony_z_naglowkami}}, przybiera wartość pustą, przeciwnie gdy zmienna {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}} jest ciągiem pusty, wtedy to samo, w innym pozostałym przypadku jest to dokładnie {{LinkPatrz|nazwa_strony}}, gdzie przed nim znajduje się dwukropek {{Code|:}}. === Dalsza część funkcji - Tom II === Tu powiemy coś o iteratorze, który po zebraniu danych zwraca zmienną {{Code|nil}}, co odpowiada dla pętli, jej przerwaniu. ==== Definicja iteratora zbierania informacji o stronie ==== Aby uruchomić pętle na rzeczywistych danych zakodowanej, czy nie, stronie, trzeba otrzymać zmienną pętli {{Code|iterator}} {{Patrz|iterator}} i go wywoływać bezparametrowo w każdym okrążeniu pętli, aby tak się stało, to trzeba uruchomić funkcję: {{Code|{{sr|#p.IterTekst|p=StronicowyParser/Rozdziały}}}}, na tekście {{LinkPatrz|tekst_artykulu}}, traktując tekst, jakby nie był taki zakodowany, bo tutaj jedynie się liczą elementy niezakodowane, czyli w tym przypadku nagłówki z tekstem rozdziału. ==== Zbieranie informacji o stronie w pętli generowanej przez iterator ==== Będziemy tutaj opisywali pętlę generowaną przez jego iterator {{LinkPatrz|iterator}}. W każdym okrązeniu pętli otrzymujemy dane: * {{Code|naglowek_tab}} {{Patrz|naglowek_tab}} - gdzie pierwszy jego element to {{Code|naglowek}} {{LinkPatrz|naglowek}}, * {{Code|text_rozdzialu}} {{Patrz|text_rozdzialu}} - tekst rozdziału, * {{Code|poziom_rozdzialu}} {{Patrz|poziom_rozdzialu}} - poziom rozdziału. ===== Definicja nowe wartości zbierania uchwytów nagłówka w zmiennej numeracji ===== Deklaracja zmiennej {{Code|numeracja}} {{LinkPatrz|numeracja}} jest na zewnętrz pętli, w niej tworzymy jej nową wartość, którą jest tablica pusta. ==== Uzyskiwanie informacji z tekstu rozdziału nagłówka, i jego możliwych uchwytach, w poszczegolnym okrążeniu pętli, i zrzuceniu tam pojedynczego kodu problemu ==== Jeżeli {{ZobaczTeż|text_rozdzialu}} tekst strony jest zakodowany, to iterujemy po tekście {{LinkPatrz|text_rozdzialu}} w poszukiwaniu kodów bazy kodów zakodowanego tekstu, w tym celu wywołujemy pętlę: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, wtedy uzyskujemy trzy obiekty w każdym przebiegu pętli, tzn. {{Code|szablon}} {{LinkPatrz|szablon}}, {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, za pomocę tego uruchamiamy funkcję: {{LinkŚródtytuł|SzablonNaglowkujWTekscieRozdzialu}}. Jeżeli funkcja napotkała uchwyt szablonu: {{Code|{{s|Śródtytuł}}}}, wtedy jest zatrzymywana, w takim razie mamy informację o wystąpieniu niedozwolonego szablonu nagłówka w tekście. A jeżeli takiego szablonu tam nie ma, to układ iterator {{LinkPatrz|iterator}} iteruje aż do zakończenia danych. ==== Uzyskiwanie nagłówka i do niego identyfikatora '''id''' ==== ===== Tekst niezakodowany nagłówka ===== Gdy tekst nie jest zakodowany, wtedy zmienna: {{LinkPatrz|czy_kodowanie}}, ma wartość odpowiaadające fałszywej, wtedy dla tego nagłówka {{LinkPatrz|naglowek}} jest uruchamiana funkcja: {{Code|{{sr|#p.["PrzetwórzNagłówek"]|p=Specjalne}}}}, wtedy otrzymujemy dwie wartości: {{Code|nazwa_rozdzialu_w_artykule}} {{Patrz|nazwa_rozdzialu_w_artykule}} - zmienna idententyfikatora, {{Code|naglowek}} {{LinkPatrz|naglowek}} - zmienna nagłówka. Te dwie zmienne zostały maksymalnie rozwinięte, zostały przystosowane do tego, aby słuzyły do tego, co trzego zostały stworzone. ===== Tekst zakodowany nagłówka ===== Gdy jednak {{LinkPatrz|czy_kodowanie}} przyjełajednak wartość fałszywą, wtedy jest uruchamiana funkcja: {{LinkŚródtytuł|SzablonyWywolywaneOgolny}}, z której otrzymujemy: {{Code|naglowek}} {{LinkPatrz|naglowek}} - zmienna przetworzonego i maksymalnie rozwiniętego nagłówka, oraz zmienne funkcje: {{LinkPatrz|Znaczniki}}, {{LinkPatrz|SzablonyStylowe}} i {{LinkPatrz|ZnakiSpecjalne}}. Na podstawie defiicji: {{Code|nazwa_rozdzialu_w_artykule}} {{LinkPatrz|nazwa_rozdzialu_w_artykule}}, mamy: {{Code|naglowek}} {{LinkPatrz|naglowek}}. ====== Kompletowanie nagłówka ====== Ten nagłówek kompletujemy funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, usuwając szablony indeksowania {{LinkPatrz|p.szablony_indeksowania}}, a także znaczniki: {{Tag|li}}, {{Tag|ul}} i {{Tag|ol}}. ====== Kompletowanie identyfikatora nagłówka ====== Kompletując: {{Code|nazwa_rozdzialu_w_artykule}} {{LinkPatrz|nazwa_rozdzialu_w_artykule}}, rozwijamy wszystko, oprócz atrybutów, {{Code|obiekt}} {{Code|{{=}}}} {{Code|ATRYBUTY}}, a na szablonach wywołujemy funkcję: {{LinkŚródtytuł|SzablonyWywolywaneOgolny}}. Na identyfikatorze nagłówka {{LinkPatrz|nazwa_rozdzialu_w_artykule}} Wywołujemy kolejno lokalne funkcje: {{LinkPatrz|SzablonyStylowe}} - do usuwania rozwiniętych kodów stylów, {{LinkPatrz|ZnakiSpecjalne}} - do usuwania cudzysłowów, i {{LinkPatrz|Znaczniki}} - do usuwania znaczzników. ====== Gdy w kodzie identyfikatora nie ma symbolicznych szablonów ====== W tym przypadku uruchamiamy fukcję do dekodowania znaków '''HTML''', tzn. dziesiętnych, szesnastkowych i literowych, funkcją: {{Code|{{sr|#p.DecodeKoduHTMLZnaku|p=Html}}}}, a później kodujemy specjalne znaki identyfikatora sposobem: {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, przy pomocy kodów '''HTML''' dziesiętnych. ===== Usuwanie zbędnych znaków w identyfikatorze ===== Usuwane są potrójne i podwójne cudzysłowy {{Code|'}} oraz odstępy i dolne myślniki na końcach łańcucha, a wewnętrz jego kolejne je są zastępowane jedną spacją. ===== Referencje i wzory matematyczne ===== Referencje są zastępowane odpowiednio przy pomocy funkcji: {{LinkŚródtytuł|RefPrzypisowy}}, a wzory matematyczne, dla obiektów typu {{Code|POSTMATH}} {{Patrz|POSTMATH}}, które są zastępowane prawidłowo poprzez: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.text.encode|b=tak}}}}, przy pomocy: {{Code|{{sr|#p.NormaKoduZakodowanegoHtmlTekstu|p=Szablonowe}}}}, obiektem: {{Code|postMath}} {{Patrz|postMath}} z ośmioma znakami cyferkami na końcu tego, którym jest {{Code|kod}} {{LinkPatrz|kod}}. ===== Wstępne przygotowanie identyfikatora do końcowego skutecznego użytku ===== Dla danego identyfikatora one mogą się powtarzać, a identyfikator musi być unikalny, zatem trzeba napisać ich dodatkowe numerki, po policzeniu otrzymamy {{Code|numer_tego_samego_naglowka}} {{Patrz|numer_tego_samego_naglowka}}. ====== Tablica identyfikatora i nagłówka ====== Funkcja wykorzystuje tablicę: {{Code|tablica_powtarzajacych_sie_elementow}} {{Patrz|tablica_powtarzajacych_sie_elementow}}, aby policzyć numer powtarzającego się identyfikatora '''id'''. Dla {{LinkPatrz|numer_tego_samego_naglowka}} równego {{Code|1}}, tworzemy tablicę {{Code|elementy_linku}} {{Patrz|elementy_linku}}, którego pierwszym elementem jest: {{LinkPatrz|nazwa_rozdzialu_w_artykule}}, a drugim nagłówek {{LinkPatrz|naglowek}}, a w przypadku tego numerku innego niż podana liczba, to dajemy do identyfikatora na końcu ten numerek po dolnym myślniku. ====== Uzupełnianie zmiennej do identyfikacji uchwytu z odpowiednim nagłówkiem ====== Jeśli: {{LinkPatrz|obiekty}} i {{LinkPatrz|numeracja}}, istnieją, wtedy do tej pierwszej tablicy dodawane są wszystkie elementy o takim samym typie z {{LinkPatrz|numeracja}}. To dodawanie na końcu tablicy przedstawia się: <syntaxhighlight lang="lua"> for _,value_numeracja in ipairs(numeracja)do obiekty[#obiekty+1]={value_numeracja,{nazwa_strony_z_naglowkami,elementy_linku[1], elementy_linku[2]}}; end; </syntaxhighlight> ====== Tworzenie tablicy nagłówkami i indetyfikatorami ====== Jeśli {{Code|poziom_rozdzialu}} jest większy od zera, tzn. {{Code|> 0}} {{ZobaczTeż|>0}}, wtedy liczymy numer rozdziału przy pomocy funkcji: {{Code|HNumer}} {{LinkPatrz|HNumer}} liczony z: {{Code|poziom_rozdzialu}} {{LinkPatrz|poziom_rozdzialu}}, tworząc w ten sposób wynik w postaci zmiennej {{Code|numer_rozdzialu_ustalony}} {{Patrz|numer_rozdzialu_ustalony}}. ====== Rozdziały ewentualnie powtarzające się ====== Dla przypadku {{LinkZobaczTeż|>0}} mamy na sam koniec tablicy: {{Code|tablica_powtarzajacych_sie_elementow}} {{LinkPatrz|tablica_powtarzajacych_sie_elementow}}, dodajemy element identyfikatora '''id''' bez numerka, tzn.: {{Code|nazwa_rozdzialu_w_artykule}} {{LinkPatrz|nazwa_rozdzialu_w_artykule}}. ====== Tablica spisu treści ====== Jest tworzona tablica spisu: {{Code|tablica_spisu_tresci}} {{Patrz|tablica_spisu_tresci}}, jako pusta tablica, z później dodanym elementem o kluczu: {{Code|nazwa_strony}}, którym jest o wartości: {{LinkPatrz|nazwa_strony_z_naglowkami}}. Do tablicy: {{LinkPatrz|tablica_spisu_tresci}}, dodawane są elementy według schematu: <syntaxhighlight lang="lua"> tablica_spisu_tresci[#tablica_spisu_tresci+1]={elementy_linku,numer_rozdzialu_ustalony}; </syntaxhighlight> === Dalsza część funkcji - Tom III === Będziemy się tutaj zajmowali z tekstem przed pierwszym rozdziałem na stronie. ==== Nagłówek na samym początku strony ==== Gdy kodowanie jest jednak włączone, tzn.: {{LinkPatrz|czy_kodowanie}}, jest prawdziwe, i mamy artykuł korzystany, tzn.: {{LinkPatrz|czy_artykul_korzystany}}, i zaprzeczenie wyłowania funkcji: {{LinkPatrz|CzyJestTakiProblemJakoElementTablicy}}, przyjmuje wartość prawdziwą, to jeśli na samym początku znajduje się rozdział, wtedy funkcja zwraca wynik: {{LinkPatrz|tablica_spisu_tresci}}. ==== Tekst przed pierwszym rozdziałem ==== Wyznaczamy ten tekst, który będzie ukrywał się pod zmienną: {{Code|tekst_zerowy}} {{Patrz|tekst_zerowy}}, który jest tekstem przed pierwszym rozdziałem lub samym tekstem zakodowanego wikikodu {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}}. ===== Szablony nagłówka w tekście zerowym ===== W tym tekście iterujemy jak w punkcie: {{LinkZobaczTeż|text_rozdzialu}}, tylko zamiast {{LinkPatrz|text_rozdzialu}} jest {{LinkPatrz|tekst_zerowy}}. === Dalsza część funkcji - Tom IV === Zwracaną wartością tej funkcji jest: {{Code|tablica_spisu_tresci}} {{LinkPatrz|tablica_spisu_tresci}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> r2rw2ihvhe34su9bmg6y66a31r1g3pk 548363 548362 2026-07-26T13:11:06Z Persino 2851 /* Tablica spisu treści */ 548363 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}|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.PobieranieInformacjiRamkiRozpatrywanejStrony}}{{Code|p.PobieranieInformacjiRamkiRozpatrywanejStrony}} == Pobieranie danych z obiektu {{LinkPatrz|self}}, biorąc jego podtablicę o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiRamkiRozpatrywanejStrony(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa ramki tablicy transportu. == {{Śródtytuł|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}}{{Code|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}} == Funkcja uruchamiacz, główna funkcja dzięki, której ładują się informacje według modułu: {{Code|{{ld2|StronicowyParser/informacje}}}} (tam jest użyty). Ten ładowacz jest pokazany w module opis: {{Code|{{lr2|Moduły/StronicowyParser/informacje}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}. === {{Śródtytuł|DaneNazw}}{{Code|DaneNazw}} === Funkcja licząca nazwy podanej nazwy strony, tzn.: {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} {{Patrz|nazwa_artykulu}}, oraz zwracające te kolejno nazwy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function DaneNazw(pelna_nazwa_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|pelna_nazwa_strony}} {{Patrz|pelna_nazwa_strony}} - pełna nazwa strony. === Dalsza część funkcji - Tom I === ==== Tworzenie i inicjowanie początkowych tabel ==== Funkcja tworzy podtabele tabeli zmiennej obiektowej {{LinkPatrz|self}} o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, o wartości pustej. Następnie są tworzone podtabele puste w tej ostatniej o kluczach: {{Code|dane_analizy_stron}} {{Patrz|dane_analizy_stron}} i {{Code|licencja}}{{Patrz|licencja}}, oraz nilowe zmienne z tego samego, co ostatnie, o kluczu: {{Code|problemy}} {{Patrz|problemy}}. ==== Zmienne nazw strony bieżącej, czy nawet aktualnej, w zależności, czy istnieją odpowiednie ustawienia ==== Jest liczony adres strony, na której jest uruchomiona dana strona, wewnętrznej bezparametrowo według: {{Code|{{sr|#p["PełnaNazwaArtykułu"]|p=Książkowe}}}} {{Patrz|strona_aktualna}}, co z tego są liczone z niego: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, co z tego jest liczona pełna nazwa książki {{Code|pelna_nazwa_ksiazki}} {{Patrz|pelna_nazwa_ksiazki}}. ==== Zbieranie danych ustawień z: {{Code|.../config}}, jeśli istnieją ==== Jest liczony pełny adres ustawień: {{Code|pelna_nazwa_ksiazki_ustawienia}} {{Patrz|pelna_nazwa_ksiazki_ustawienia}}, według schematu: {{Code|"Szablon:Podręcznik/Ustawienia/"..pelna_nazwa_ksiazki}} {{Patrz|UstawieniaKsiążki}}. Co z tego jest sprawdzane, czy istnieje strona: {{Code|pelna_nazwa_ksiazki_ustawienia.."/config"}} {{Patrz|config}}, a jeśli tak, to wtedy wiemy, że to jest szablon, to go przedstawiamy w postaci szablonowej, licząc z: {{Code|{{sr|#p.NazwaSzablonu|p=Szablonowe}}}}. Dalej jest liczony ostatni wyliczony szablon z parametrem {{Code|książka}} {{Patrz|książka}}, dalej jeszcze raz, tym razem z parametrem: {{Code|artykuł}} {{Patrz|artykuł}} - te parametry przedstawiają parametry artykułu książkowego, skąd możemy ściągać stronę, by ją wyświetlić na stronie aktualnej, na pewno parametr {{LinkPatrz|książka}} nie może być parametrem składających z samych znaków odstępów, a jeśli tak jest, w takim razie z tych dwóch parametrów jest liczony parametr {{Code|strona}} {{Patrz|strona}}. Dalej liczymy, czy ona jest poprawnym adresem, używając funkcji: {{Code|{{sr|#p["CzyNiepoprawnaNazwa"]|p=Pudełko/Tom I}}}}. A jeżeli adres jest jednak poprawny, ta funkcja zwraca wartość odpowiadającej fałszywej wartości, wtedy jest liczony pełny adres strony, jeżeli ona jest względna z parametrów, tzn. parametr pierwszy: {{LinkPatrz|strona}}, i parametr drugi: {{LinkPatrz|strona_aktualna}}, co względem tej funkcji mamy już: {{LinkPatrz|strona}}, czyli po tej operacji (procedurze) policzyliśmy bezwzględny jego adres. ===== Liczenie nazw z parametru pełnej nazwy aktualnej, nie bieżącej, strony wynikłe z obliczeń z ustawień ===== Policzona wartość strony: {{LinkPatrz|strona}}, jest sprawdzana, czy adres (strona), pod którym ona się kryje, istnieje, a jeśli tak, to ten adres jest tylko formatowany. Porównujemy adres {{LinkPatrz|strona}} z {{LinkPatrz|strona_aktualna}}, czy przedstawiają nie ten sam adres, a jeżeli tak, to liczymy wszyskie nazwy strony, czyli dla bez {{Code|aktualna_}}, przyrównujemy do tego z tym początkiem, co odpowiada pełnej nazwie strony z {{Code|strona_aktualna}} {{LinkPatrz|strona_aktualna}} {{ZobaczTeż|strona_aktualna}}, i używając funkcji: {{LinkŚródtytuł|DaneNazw}}, ze zmiennej: {{Code|strona}} {{LinkPatrz|strona}} {{ZobaczTeż|strona}}. Te ostatnie nazwy są potrzebne do analizy strony bieżącej, nie aktualnej, tzn. na niej, jakie są szablony, jakie posiada spisy, jakie książki, a w nim spisy do nich, są dołączone. ====== Policzone nazwy strony aktualnej wpisane do ogólnej tablicy ====== A póżniej z adresów pliczonych wywołania, dotyczącej tego aktualnego, liczymy dla podtabeli: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienne o kluczach: {{Code|aktualna_nazwa_przestrzeni}} {{Patrz|aktualna_nazwa_przestrzeni}}, {{Code|aktualna_nazwa_przestrzeni_ksiazki}} {{Patrz|aktualna_nazwa_przestrzeni_ksiazki}}, {{Code|aktualna_nazwa_ksiazki}} {{Patrz|aktualna_nazwa_ksiazki}} i {{Code|aktualna_nazwa_artykulu}} {{Patrz|aktualna_nazwa_artykulu}}, mając zmienne nazw policzone z tego aktualnego. ===== Czy strona bieżąca, ale nie zbiorcza, jest wyświetlana na stronie aktualnej, czy może jest tylko stroną zbiorczą uruchomioną pod inną nazwą ===== Jeśli zmienne nazw są policzone z: {{LinkZobaczTeż|strona}} i {{LinkZobaczTeż|strona_aktualna}}, to wtedy kolejno porównujemy, czy któraś z nich jest nierówna, a jeśli tak, to wywołujemy szablon z parametru: {{Code|zastępcza}} {{ZobaczTeż|zastępcza}} - jest to, czy strona jest zbiorcza, o nazwie: {{LinkPatrz|config}}, czy powinna być wartością niepustą. A jak tak, to wyznaczamy z tablicy: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienną o kluczu: {{Code|alternatywna}} {{Patrz|alternatywna}}, co przyrównujemy jemu wartość logiczną z uzyskanego z szablonu z parametrem {{LinkZobaczTeż|zastępcza}}, a jeżeli ta zmienna przyjmuje wartość odpowiadająca fałszywej, wtedy zmienna z tej samej tablicy o kluczu: {{Code|inna_strona_aktualna_niz_biezaca}} {{Patrz|inna_strona_aktualna_niz_biezaca}} - jest to, czy strona jest inna niż zbiorcza, ale wyświetlana na innej stronie, przyjmuje wartość prawdziwą. === Dalsza część funkcji - Tom II === Tworzymy zmienną: {{Code|tablica_zmiennych}}, która jest tablicą pustą, którą uzupełniamy o elementy o kluczach: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}} - są to dane zebrane z bieżącej strony, i {{Code|linkobiekt}} {{Patrz|linkobiekt}} - są to dane zebrane o linkach na stronie odpowiadających poszczególnym obiektom. Uruchamiamy funkcję: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}, z której wyznaczamy parametr: {{Code|tabela_listy_danych_analizy_ksiazki}} - są to dane zebrane z bieżącej i innych stron skojarzonej z nim, te elementy są tylko w postaci nieprzetworzonej, ale przygotowanej. A jeśli ten parametr jest tabelką - a jeżeli nie jest, to nastąpił błąd przetwarzania, i funkcja nie idzie dalej w instrukcję warunkową, wtedy wywołujemy funkcję: {{Code|{{sr|#p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony|p=StronicowyParser/NumeracjaObiektówStron}}}}. === Dalsza część funkcji - Tom III === Na sam koniec funkcji zwracamy tablicę: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}} - ta zmienna zawiera dane w postaci przetworzonej policzonej, tzn. uchwytom są przydzielone numeracje, sprawdzane, czy uchwyty są policzone, są wyznaczone wszystkie kody problemów, które później są potrzebne do wyznaczania wszystkich kategorii błędów na stronie. == {{Śródtytuł|p.SpisRzeczyWedlePodanegoTekstu}}{{Code|p.SpisRzeczyWedlePodanegoTekstu}} == Funkcja generowania liczenia nagłówków strony, co na tej podstawie może być generowany '''spis treści''' strony. Funkcja przyporządkowuje uchwytom szablonów nagłówków ich identyfikatory i te nagłówki, w którym one leżą, jeżeli zmienna {{LinkPatrz|obiekty}} istnieje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SpisRzeczyWedlePodanegoTekstu(self,tekst_artykulu,nazwa_strony,czy_artykul_korzystany, tylko_naglowek,obiekty,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_obiektow_strony_danych_kodow_specjalnych_modul,KtorySzablonMaZwracacKategorie,wzory_zamiast_kodow,tabela_elementow_strony_kodow)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}} - tekst przetworzony, przygotowany ewentualnie przez pewną funkcję, rozważanego artykułu, * {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} - nazwa strony, danego spisu, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy strona jest bieżąca, * {{Code|tylko_naglowek}} {{Patrz|tylko_naglowek}} - pisz adresy stron z tylko nagłówkami '''#''', bez adresów stron, * {{Code|obiekty}} {{Patrz|obiekty}} - elementy tam zebrane, są wykorzystywane do analizy nagłówków poprzez szablon {{s|Śródtytuł}}, któremu temu nagłówkowi odpowjada pewien uchwyt, czy uchwyty, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}, * {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} - nazwa aktualna, czy bieżąca strony, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy zebranych informacji w postaci zakodowanej modułu {{m|Szablonowe}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tabela przeanalizowanych elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} {{Patrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} - tablica dwuwymiarowa kodów o kluczach: szablonów referencji: '''REF...''' i '''POSTMATH''' oraz ich elementu numeru kodu {{Code|kod}}, którego elementem jest kod tego elementu, * {{Code|KtorySzablonMaZwracacKategorie}} {{Patrz|KtorySzablonMaZwracacKategorie}} - tabela składająca się z trzech elementów, którego pierwszy element to: {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{Patrz|KtorySzablonMaZwracacKategorieNaglowek}} - funkcja dla szablonów problemów dla jak: {{s|Śródtytuł}}, w nagłówku, drugi: {{Code|KtorySzablonMaZwracacKategorieTekst}} {{Patrz|KtorySzablonMaZwracacKategorieTekst}} - funkcja dla tego typu szablonów, ale dla nich w tekście, nie w nagłówku, trzeci: {{Code|CzyJestTakiProblemJakoElementTablicy}} {{Patrz|CzyJestTakiProblemJakoElementTablicy}} - czy nie rozważać, dla rozdziałów zerowych, przeciwnie: ta funkcja może przyjmować wartość {{Code|nil}}, wartość zwracana tego elementu, bo to jest funkcja, zależy, czy jest ustawiony kod problemu: {{Code|nagłówek w tekście rozdziału w stronie korzystanej}} {{Patrz|nagłówek w tekście rozdziału w stronie korzystanej}}, a jeżeli jest taki, to ta funkcja przyjmuje zrzuconą wartość {{Code|true}}, * {{Code|wzory_zamiast_kodow}} {{Patrz|wzory_zamiast_kodow}} - rozważaj wzory według tablicy: {{LinkPatrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}}, lub koduj to według funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}} - to wykorzystuj w przypadku, gdy: {{LinkPatrz|nazwa_strony}}, istnieje, i jest wartością pustą, lub {{Code|{{sr|#p.NormaKoduZakodowanegoWikiTekstu|p=Szablonowe}}}} - przeciwnie, * {{Code|tabela_elementow_strony_kodow}} {{Patrz|tabela_elementow_strony_kodow}} - baza tabela z zapamiętanymi podtabelami, którego poszczególne elementy wykorzystywane w spisie posiadają w sobie tylko pierwszy element w postaci przetworzonego uchwytu, bo używamy tylko uchwytów szablonów nagłówków. === {{Śródtytuł|SpecjalneWprowadzeniaTekstu}}{{Code|SpecjalneWprowadzeniaTekstu}} === Funkcja zamieniające pewne szablony, czy znaczniki, na rozdziały równaniowe. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local SpecjalneWprowadzeniaTekstu=function(szablon,obiekt,kod,czy_szablon,czy_znacznik,czy_liczyc,funkcja1,funkcja2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} {{Patrz|szablon}} - zmienna (szablon), nie musi być to normalny szablon, * {{Code|obiekt}} {{Patrz|obiekt}} - zmienna, którego typu jest obiekt, * {{Code|kod}} {{Patrz|kod}} - numer obiektu typu {{LinkPatrz|obiekt}}, * {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy to jest szablon, * {{Code|czy_znacznik}} {{Patrz|czy_znacznik}} - czy to jest znacznik, * {{Code|czy_liczyc}} {{Patrz|czy_liczyc}} - czy funkcję liczyć w sposób złożony, szablony typu: {{s|SpisTreści}} - zamieniający go na znacznik, czy prosty, co na samym końcu uruchamiana jest funkcja: {{LinkPatrz|funkcja1}}, * {{Code|funkcja1}} {{Patrz|funkcja1}} - funkcja operująca na wygenerowanym pośrednio (dłuższe liczenie) lub bezpośrednio (krótsze) znaczniku, wychodząca z szablonu, i zamieniająca go na rozdział równaniowy, funkcja operująca dla szablonów: {{s|SpisTreści}} lub {{s|HNumer}}, * {{Code|funkcja2}} {{Patrz|funkcja2}} - funkcja operująca na znaczniku '''HTML''' nagłówka - typu jak: {{Tag|h1}}, i zamieniająca go na rozdział równaniowy. ==== {{Śródtytuł|ParametrNR}}{{Code|ParametrNR}} ==== Funkcja liczy dokładnie parametr dany o danym numerze, zbiór danych parametrów oznaczających to samo może być wiele, tylko że jedne mogą być ważniejsze od drugich. Definicja skrótowa funkcja: <syntaxhighlight lang="lua"> local function ParametrNR(numer)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer}} {{Patrz|numer}} - numer parametru. Funkcja wykorzystywuje funkcję do uruchomienia: {{Code|{{sr|#p.SpisRzeczySzablon|p=StronicowyParser/Potrzebne}}}}, do generowania parametrów, a właściwie ich wartości. ==== {{Śródtytuł|ObiektKodNumer}}{{Code|ObiektKodNumer}} ==== Funkcja dodająca do bazy danych kolejny element bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla danego obiektu element na samym końcu, po maksymalnym elemencie do niego. Funkcja liczy kod przy pomocy funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local ObiektKodNumer=function(szablon,obiekt)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}. ==== Dalszy opis funkcji ==== Dla {{LinkPatrz|czy_szablon}} prawdziwego dla szablonów sztucznego spisu treści, sprawdzanego przez tabelkę: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, dla danego szablonowego rozdziału generowanego według {{s|HNumer}}, jest on zamieniany na rozdział równaniowy poprzez funkcję: {{LinkPatrz|funkcja1}}. Ta tabela przedstawia się treścią: <syntaxhighlight lang="lua"> p.szablony_sztucznego_wprowadzenia_tekstu={ ["HNumer"]=1, }; </syntaxhighlight> Dla innych rozdziałów szablonowych, tym razem generowanego przez szablon {{s|SpisTreści}}, którego parametry są wyznaczane przez funkcję: {{LinkŚródtytuł|ParametrNR}}, tabelka parametrów opisująca to: <syntaxhighlight lang="lua"> p.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu={ ["SpisTreści"]={{"artykuł",1,},{"książka",2,},{"nazwa",3,},{"dodatek",4,},{"poziom",},}, }; </syntaxhighlight> Funkcja liczy artykuł, koloruje do niego link w: '''spisie treści''', na czerwona, wtedy generuje dodatkowy znacznik, z właściwością: {{Code|color:red}}, gdy on nie istnieje, i to wstawia do tabeli bazy, lub bez niego, wtedy bezposrednio generuje tekst równy nazwie tego szablonu, opakowany, lub nie, w zależności od istnienia. Do policzenia strony, czy ona istnieje, musi być przedtem zdekodowany funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, by później policzyć to sprawdzenie przy pomocy: {{Code|{{sr|#p.PoliczZbiory|p=Techniczne}}}}. W każdym bądź razie jest ruchumianiana funkcja: {{LinkPatrz|funkcja1}}. Gdy to nie jest szablon, tzn.: {{LinkPatrz|czy_szablon}}, jest fałszywe, ale {{LinkPatrz|czy_znacznik}} jest prawdziwe, to takie znaczniki, jak od: {{Tag|h1}} do {{Tag|h6}}, są zamieniane na czysty tekst. W takim razie wywoływana jest dla tego przypadku funkcja: {{LinkPatrz|funkcja2}}. Funkcja: {{LinkPatrz|funkcja1}}, jest dla szablonów nagłówków, a: {{LinkPatrz|funkcja2}}, dla znaczników nagłówków. Z tych generowanych czystych generowanych tekstów są tworzone w tekście rozdziały równaniowe, by później wygenerować '''spis treści''', właśnie z nimi - z tymi nagłówkami, a bardziej ściśle linkami do nich. === {{Śródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}{{Code|SzablonNaglowkujWNaglowkuRozdzialu}} === Fukcja do obsługi nagłówków {{LinkPatrz|Śródtytuł}} w nagłówku, nie w tekście poza nim. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWNaglowkuRozdzialu(szablon,obiekt,kod,powtorka,parametry_wywolania_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}, * {{Code|powtorka}} {{Patrz|powtorka}} - numer użycia takiego samego szablonu typu {{s|Śródtytuł}} {{Patrz|Śródtytuł}}, * {{Code|parametry_wywolania_szablonu}} {{Patrz|parametry_wywolania_szablonu}} - parametry szablonu wraz z ich wartościami, * {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} - nazwa szablonu wywołania, * {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} - modyfikatory szablonu. Funkcja sprawdza, czy szablon w nagłówku jest typu {{LinkPatrz|Śródtytuł}}, a jeżeli tak, to liczy jego uchwyt, najpierw wyznacza je z parametru o nazwie {{Code|uchwyt}} {{Patrz|uchwyt}}, dalej sprawdzane jest, czy taki uchwyt tak zdefiniowany istnieje, jeśli tak, to wydobywana jest jego przetworzona tabela z tym właśnie uchwytek, funkcja robi to względem numeru {{Code|kod}} {{LinkPatrz|kod}} tego szablonu na podstawie funkcji: {{Code|{{sr|#p.WydobywanieUchwytuZeiBezNumeracji|p=StronicowyParser/ZbieranieDanychStron}}}}. Jeżeli wydobyta tabela {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} nie istnieje, w takim razie jest ona dekodowana funkcją: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, a później jest traktowana jako adres '''URL''', tzn. jest dekodowana funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, dalej jest tworzona tabela pusta: {{LinkPatrz|lista_dwuelementowa}}, co dalej jest tam wstawiana do niej jako pierwszy element uzyskany uchwyt przetworzony. A jeśli jednak {{LinkPatrz|lista_dwuelementowa}} została wydobyta z naszej funkcji tabela, która istnieje, wtedy funkcja idzie, niż poprzednio, w inny krok instrukcji warunkowej, wtedy z tej tabeli jest wydobywany pierwszy element jako przetworzony wcześniej uchwyt. Gdy {{ZobaczTeż|uchwyt}} przetworzony uchwyt jest łańcuchem znaków niepusty, wtedy on jest dodawany w postaci tabeli, w której jest ten uchwyt, na sam koniec tabeli {{Code|numeracja}} {{Patrz|numeracja}}. Gdy liczba powtórzeń jest większa niż zero, wtedy jest wywoływana funkcja, przy którym mają być zwrócone kategorie, jeśli zostaną użyte, o nazwie {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}}. Gdy jednak uchwyt uzyskany nie istnieje, to wtedy jest to samo robione, co w: {{LinkZobaczTeż|uchwyt}}. Przed zwróceniem ile razy została dokonana powtórka, jest powiększany licznik powtorek, i to jest otrzymywane z tej funkcji. === {{Śródtytuł|SzablonNaglowkujWTekscieRozdzialu}}{{Code|SzablonNaglowkujWTekscieRozdzialu}} === Funkcja do analizy szablonów nagłówków w tekście rozdziału, nie w nagłówku. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWTekscieRozdzialu(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja sprawdza, czy tekst w bazie kodów jest typu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, w takim razie po wykryciu, że dla tego, że jest to wywołanie szablonowe, a nie instrukcja warukowa w wikikodzie w tekście, wtedy podobnie jest robione, co w funkcji: {{LinkŚródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}, tylko zamiast {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}} jest {{Code|KtorySzablonMaZwracacKategorieTekst}} {{LinkPatrz|KtorySzablonMaZwracacKategorieTekst}}. Przy wykryciu tam szablonu typu {{LinkPatrz|Śródtytuł}}, funkcja zawsze zwraca wartość {{Code|true}}, w innych przypadkach {{Code|false}}. W przypadku intrukcji warunkowej w wikikodzie i dla ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jest wtedy zwracana wartość {{Code|false}}. Funkcja w pozostałych przypadkach zwraca wartość logiczną {{Code|false}}. === {{Śródtytuł|SzablonyWywolywane}}{{Code|SzablonyWywolywane}} === Szablon zamieniający specjalne znaki szablonów, tzn.: {{Code|{{((}}}}, {{Code|{{))}}}}, {{Code|{{!}}}} i {{Code|{{=}}}}, kolejno na: {{Code|{{s|((}}}}, {{Code|{{s|))}}}}, {{Code|{{s|!}}}} i {{Code|{{s|{{=}}}}}}, takich {{ZobaczTeż|StronicowyParser}}, które zawierają wywołania '''Stronicowego Parsera''', czyli ramki typu: {{Code|{{m|StronicowyParser}}}}, czy: {{Code|{{m|StronicowyParser/}}}}, a inne są po prostu przypisywane. W przypadku linków, i nie tylko, tzn. dla szablonów {{LinkZobaczTeż|StronicowyParser}}, z innych stron niż korzystana, co jest trafnie oznaczone zaprzeczeniem parametru {{LinkPatrz|czy_artykul_korzystany}} są liczone parametry pudełkowe {{Code|{{m|Pudełko}}}}. Strony wskazane przez te parametry są analizowane, przy czym linki są przez inną funkcję, a inne już przez znów inną. Szablony nagłówków typu {{LinkPatrz|Śródtytuł}}, czy szablonów stronicowych otwierających i zamykających, one lub jego koledzy, tzn. ich: {{s|StronaStart}} i {{s|StronaKoniec}}, są zastępowane ciągiem pustym. Inne parametry opisane z tabeli {{Code|{{sr|#p.szablony_stronicowe_kontenerowe_formatowania_wzorowego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, są zastępowane ich zawartością, by uniknąć kontaktu nagłówków z tego typu szablonami. Szablony ideksowania określone tabelą: {{Code|{{sr|#p.szablony_indeksowania}}}} {{Patrz|p.szablony_indeksowania}}, nie są rozwijana z kodowania lub są, w zależności, czy zmienna: {{Code|czy_indeksowanie}} {{Patrz|czy_indeksowanie}}, ma wartość {{Code|true}} - tutaj są, czy odpowiadającej fałszywej wartości logicznej - a tutaj już nie. W przypadku instrukcji warunkowych, czy ramek {{lpg|Lua}} w {{lpg|Lua|Scribunto}}, one są rozwijane - kod tego jest zawartością {{LinkPatrz|szablon}}. W innych przypadkach funkcja zwraca wartość {{Code|nil}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywane(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. W powyższym opisie występują szablony opisane w: {{LinkPatrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, a jej definicja jest: <syntaxhighlight lang="lua"> p.szablony_stronicowe_kontenerowe_formatowania_wzorowego={ ["Formuła"]=1; }; </syntaxhighlight> Jest to szablon: {{s|Formuła}} i podobne, liniowe wstawiane do tekstu, ta tabela ma za zadanie zastąpić te szablony ich poszczególnym zawartościom, a ta funkcja, która ją wykorzystywuje się do tego przypadku, jest o nazwie: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}. Tabelą szablonów indeksowania, to są one zdefiniowane przez: {{LinkPatrz|p.szablony_indeksowania}}, a jej zawartość: <syntaxhighlight lang="lua"> p.szablony_indeksowania={ ["Kotwica"] =true, ["Indeksuj"]=true, }; </syntaxhighlight> Są to szablony kotwic: {{s|Kotwica}}, który jest szablonem liniowym, a {{s|Indeksuj}}, natomiast to blokowy. === {{Śródtytuł|SzablonyWywolywaneOgolny}}{{Code|SzablonyWywolywaneOgolny}} === Funkcja rozwija nagłówek, wydzielając z niego zwykły tekst, nie dopełniając pewnych operacji. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywaneOgolny(naglowek)...end; </syntaxhighlight> Parametry funkcji: * {{Code|naglowek}} {{Patrz|naglowek}} - tekst nagłówka napisu wprowadzenia tekstu. Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["WydzielZwykłyTekst"]|p=Specjalne}}}}, kod jej wywoływany jest z parametrami: <syntaxhighlight lang="lua"> local naglowek,Znaczniki,SzablonyStylowe,ZnakiSpecjalne=specjalne_modul["WydzielZwykłyTekst"]( { ---- tekst nagłówka; tekst=naglowek, ---- Nie wykorzystywuj w działaniu funkcji: Znaczniki, SzablonyStylowe, ZnakiSpecjalne; ["nagłówek"]=true, ---- Nie wykorzystuj dekodowania tekstu zakodowanego, bez rozwijania, ale wręcz przzeciwnie rozwijaj, pozostawiaj pewne szczególne kody przed rozkodowaniem; nieklasycznie=true, ---- Bazę kodowania weź z zewnątrz; kodowanie=false, ---- Wykorzystywana tablica kodowania tekstu modułu: Module:Szablonowe, zakodowanego z zewnątrz; ["tablica kodowania"]=tablica_analizy_obiektow_strony_dany_modul, },__FUNKCJA1,__FUNKCJA2); </syntaxhighlight> Ta funkcja wydziela zwykły tekst z nagłówka z szablonami zwykłymi i ramkami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, bez naruszenia działania innych elementów szablonowych, jak tagi, czyli: {{s|#tag:}}, które też współdziałają też w kodzie danego nagłówka. Również i z linkami wewnętrznymi i zewnętrznymi, z których wydziela się zwykły tekst, bo wiadomo, że one nie mogą się znaleźć w linkach '''spisu treści''', bo nie może być link w linku w nim, a one niezależnie jakie, bo to ze względu na {{Strong|HTML}} nie możliwe technologicznie. Definicje dwóch kolejnych funkcji zdefiniowanych powyżej: <syntaxhighlight lang="lua"> ---- szablon - kod obiektu kodu w wikikodzie; ---- obiekt - typ obiektu kodu powyżej; ---- kod - numer tego samego typu obiektu; local __FUNKCJA1=function(szablon,obiekt,kod) ---- Funkcja wykorzystywana do ewentualnego modyfikowania użytych szablonów i przedstawianiu jego kodem symbolicznym, lub zastępowania pewnych szablonów nagłówków wartością pustą; local szablon,wynik=SzablonyWywolywane(szablon,obiekt,kod); return szablon,wynik; end; local __FUNKCJA2=function(szablon,obiekt,kod) --- rozwijaj uzyskany szablon, dalej, gdy napotkasz, jeśli zostanie włączone zmienna indeksowania w postaci wartości logicznej; return czy_indeksowanie; end; </syntaxhighlight> Funkcja zwraca wartości, tzn. zmienną z przetworzenia nagłówkowego, bez usuniętych znaczników, stylów i znaków specjalnych, tzn. części otoczone pewnymi cudzysłowami z taką samą liczbą, więc pogrubienia i pochylenia tekstu: <syntaxhighlight lang="lua"> return naglowek, Znaczniki, SzablonyStylowe, ZnakiSpecjalne; </syntaxhighlight> Definicje tych zwróconych funkcji, tzn.: {{Code|Znaczniki}} {{Patrz|Znaczniki}}, {{Code|SzablonyStylowe}} {{Patrz|SzablonyStylowe}} i {{Code|ZnakiSpecjalne}} {{Patrz|ZnakiSpecjalne}}, którego opisy raczej przedstawiają ich nazwy, dokładnie one są udokumentowane tutaj: <syntaxhighlight lang="lua"> ---- tekst - tekst do przetworzenia; local function Znaczniki(tekst,jakie,__FUNKCJA1,__FUNKCJA2) ---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML;---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML; ---- funkcja do usuwania znaczników, tzn. w niej inne funkcje: __FUNKCJA1 - funkcja do zakodowywania tekstu przed usuwaniem znaczników, a __FUNKCJA2 - funkcja do odkodowania tego, co pozostało; tekst=p["UsuńZnaczniki"](tekst,jakie,__FUNKCJA1,__FUNKCJA2); return tekst; end; local function SzablonyStylowe(tekst) ---- funkcja do usuwania uruchomionych stylów, tzn. tych: <templatestyles src="..."/>, wtedy to staje się kodem parsera przetwarzanego za pomocą tekstu dla tego typu znacznika, kodami parsera mogą być też inne obiekty jak ramki Lua w Scribunto, ale nie muszą być takie, ale my rozważamy tutaj tylko jeden typ kodu parsera. tekst=p["UsuńSzablonyStylów"](tekst); return tekst; end; local function ZnakiSpecjalne(tekst) ---- funkcja do usuwania cudzysłowów w takich samych ilościach z prawej i z lewej strony danego fragmentu tekstu w nim; tekst=p["UsuńZnakiSpecjalne"](tekst); return tekst; end; </syntaxhighlight> Definicje tych funkcji znajdują się również w module: {{Code|{{ld2|Specjalne}}}}, które również przedstawiają inne funkcje do upraszczania tekstu, w tym nagłówka, ale nie tylko, bo dowolnego tekstu. === {{Śródtytuł|RefPrzypisowy}}{{Code|RefPrzypisowy}} === Mechanizm zamieniający kod referencji na jej wersję wyświetlaną na ekranie, czyli w nawiasie kwadratowym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local RefPrzypisowy=function(obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|obiekt}} {{Patrz|obiekt-ref}} - nazwa typu przypisu, czyli jak bez nazwy, czy też jak: '''uwaga''', * {{Code|kod}} {{Patrz|kod-ref}} - numer danego typu przypisu. Gdy {{LinkPatrz|obiekt-ref}} nie ma nazwy, wtedy w nawiasie kwadratowym będzie tylko numerek {{LinkPatrz|kod-ref}}, a jeśli ma nazwę, to nazwa oddzielona spacją z prawej strony, a po nim jest ten numerek. === Dalsza część funkcji - Tom I === Tutaj opowiemy o części wstępnej tej funkcji. ==== Ustalanie zmiennej nazwy modułu aktualnej, czy bieżącej ==== Funkcja ustawia zmienną: {{Code|czy_kodowanie}} {{Patrz|czy_kodowanie}}, na podstawie istnienia zmiennych: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} i {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. ==== Wyznaczanie nazwy modułu aktualnej, czy bieżącej, dla strony aktualnej, jeśli ona nie istnieje ==== Jeżeli zmienna {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} jest odpowiadającej wartości fdałszywej i mamy strona korzystaną, co określa parametr {{LinkPatrz|czy_artykul_korzystany}}, w postaci wartości prawdziwej, wtedy są liczone kolejne zmienne nazw na podstawie istnienia lub nieistnienia zmiennej {{Code|alternatywna}}, a jeśli ona jest prawdziwa, wtedy wybierane są zmienne z tą aktualną nazwą woluminu wynikłe z {{LinkZobaczTeż|strona_aktualna}}, przeciwnie z nazwą bieżącą woluminu,na podstawie tego, co wyświetla '''Stronicowy Parser''', te nazwy są ze sobą łączone, wtedy powstaje pełna nazwa strony, którą przyrównujemy do {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}}. Jeśli wartość {{LinkPatrz|czy_artykul_korzystany}} jest jednak fałszywa, w takim razie jest liczona {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} na podstawie wartości {{LinkPatrz|nazwa_strony}}. ==== Kodowanie '''HTML''' specjalnych znaków strony ==== Nazwę strony {{LinkPatrz|nazwa_strony}}, w której mogą występować specjalne znaki, które są niezrozumiałe z punktu widzenia '''HTML''', jeżeli np.z nich trzeba zbudować identyfikatory '''id''', a więc trzeba je zakodować, robimy to funkcją: {{Code|{{sr|#p.EncodeId|p=Html}}}}. ==== Zwracanie funkcji liczenia numeru nagłówka ==== Wyznaczamy funkcję: {{Code|HNumer}} {{Patrz|HNumer}}, która jest efektem zwrócenia przez: {{Code|{{sr|#p.LiczonyHNumer|p=StronicowyParser/Potrzebne}}}}. ==== Zamienianie szablonów nagłówków, czy nawet tych znaczników, na rozdziały równaniowe ==== Jeśli {{LinkPatrz|czy_kodowanie}} przyjmuje wartość prawdziwą, wtedy definiujemy funkcję: {{LinkŚródtytuł|SpecjalneWprowadzeniaTekstu}}. Dalej funkcja zamienia szablony: {{s|SpisTreści}} i {{s|HNumer}}, a także znaczniki: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, na ich wersję równaniową, aby dało się je rozpoznać jako rozdziały i było je łatwo wsadzić do szablonu takiego jak: {{s|Spis treści}} i inne podobne, za pomocą dwóch kolejnych funkcji wsadzonych do pewnej funkcji modułu {{m|Szablonowe}}, która służy do operacji na takich przypadkach. === Zmienna strony z nagłówkaami === Gdy jest podana zmienna: {{Code|tylko_naglowek}} {{LinkPatrz|tylko_naglowek}}, ma wartość prawdziwą, wtedy zmienna: {{Code|nazwa_strony_z_naglowkami}} {{Patrz|nazwa_strony_z_naglowkami}}, przybiera wartość pustą, przeciwnie gdy zmienna {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}} jest ciągiem pusty, wtedy to samo, w innym pozostałym przypadku jest to dokładnie {{LinkPatrz|nazwa_strony}}, gdzie przed nim znajduje się dwukropek {{Code|:}}. === Dalsza część funkcji - Tom II === Tu powiemy coś o iteratorze, który po zebraniu danych zwraca zmienną {{Code|nil}}, co odpowiada dla pętli, jej przerwaniu. ==== Definicja iteratora zbierania informacji o stronie ==== Aby uruchomić pętle na rzeczywistych danych zakodowanej, czy nie, stronie, trzeba otrzymać zmienną pętli {{Code|iterator}} {{Patrz|iterator}} i go wywoływać bezparametrowo w każdym okrążeniu pętli, aby tak się stało, to trzeba uruchomić funkcję: {{Code|{{sr|#p.IterTekst|p=StronicowyParser/Rozdziały}}}}, na tekście {{LinkPatrz|tekst_artykulu}}, traktując tekst, jakby nie był taki zakodowany, bo tutaj jedynie się liczą elementy niezakodowane, czyli w tym przypadku nagłówki z tekstem rozdziału. ==== Zbieranie informacji o stronie w pętli generowanej przez iterator ==== Będziemy tutaj opisywali pętlę generowaną przez jego iterator {{LinkPatrz|iterator}}. W każdym okrązeniu pętli otrzymujemy dane: * {{Code|naglowek_tab}} {{Patrz|naglowek_tab}} - gdzie pierwszy jego element to {{Code|naglowek}} {{LinkPatrz|naglowek}}, * {{Code|text_rozdzialu}} {{Patrz|text_rozdzialu}} - tekst rozdziału, * {{Code|poziom_rozdzialu}} {{Patrz|poziom_rozdzialu}} - poziom rozdziału. ===== Definicja nowe wartości zbierania uchwytów nagłówka w zmiennej numeracji ===== Deklaracja zmiennej {{Code|numeracja}} {{LinkPatrz|numeracja}} jest na zewnętrz pętli, w niej tworzymy jej nową wartość, którą jest tablica pusta. ==== Uzyskiwanie informacji z tekstu rozdziału nagłówka, i jego możliwych uchwytach, w poszczegolnym okrążeniu pętli, i zrzuceniu tam pojedynczego kodu problemu ==== Jeżeli {{ZobaczTeż|text_rozdzialu}} tekst strony jest zakodowany, to iterujemy po tekście {{LinkPatrz|text_rozdzialu}} w poszukiwaniu kodów bazy kodów zakodowanego tekstu, w tym celu wywołujemy pętlę: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, wtedy uzyskujemy trzy obiekty w każdym przebiegu pętli, tzn. {{Code|szablon}} {{LinkPatrz|szablon}}, {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, za pomocę tego uruchamiamy funkcję: {{LinkŚródtytuł|SzablonNaglowkujWTekscieRozdzialu}}. Jeżeli funkcja napotkała uchwyt szablonu: {{Code|{{s|Śródtytuł}}}}, wtedy jest zatrzymywana, w takim razie mamy informację o wystąpieniu niedozwolonego szablonu nagłówka w tekście. A jeżeli takiego szablonu tam nie ma, to układ iterator {{LinkPatrz|iterator}} iteruje aż do zakończenia danych. ==== Uzyskiwanie nagłówka i do niego identyfikatora '''id''' ==== ===== Tekst niezakodowany nagłówka ===== Gdy tekst nie jest zakodowany, wtedy zmienna: {{LinkPatrz|czy_kodowanie}}, ma wartość odpowiaadające fałszywej, wtedy dla tego nagłówka {{LinkPatrz|naglowek}} jest uruchamiana funkcja: {{Code|{{sr|#p.["PrzetwórzNagłówek"]|p=Specjalne}}}}, wtedy otrzymujemy dwie wartości: {{Code|nazwa_rozdzialu_w_artykule}} {{Patrz|nazwa_rozdzialu_w_artykule}} - zmienna idententyfikatora, {{Code|naglowek}} {{LinkPatrz|naglowek}} - zmienna nagłówka. Te dwie zmienne zostały maksymalnie rozwinięte, zostały przystosowane do tego, aby słuzyły do tego, co trzego zostały stworzone. ===== Tekst zakodowany nagłówka ===== Gdy jednak {{LinkPatrz|czy_kodowanie}} przyjełajednak wartość fałszywą, wtedy jest uruchamiana funkcja: {{LinkŚródtytuł|SzablonyWywolywaneOgolny}}, z której otrzymujemy: {{Code|naglowek}} {{LinkPatrz|naglowek}} - zmienna przetworzonego i maksymalnie rozwiniętego nagłówka, oraz zmienne funkcje: {{LinkPatrz|Znaczniki}}, {{LinkPatrz|SzablonyStylowe}} i {{LinkPatrz|ZnakiSpecjalne}}. Na podstawie defiicji: {{Code|nazwa_rozdzialu_w_artykule}} {{LinkPatrz|nazwa_rozdzialu_w_artykule}}, mamy: {{Code|naglowek}} {{LinkPatrz|naglowek}}. ====== Kompletowanie nagłówka ====== Ten nagłówek kompletujemy funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, usuwając szablony indeksowania {{LinkPatrz|p.szablony_indeksowania}}, a także znaczniki: {{Tag|li}}, {{Tag|ul}} i {{Tag|ol}}. ====== Kompletowanie identyfikatora nagłówka ====== Kompletując: {{Code|nazwa_rozdzialu_w_artykule}} {{LinkPatrz|nazwa_rozdzialu_w_artykule}}, rozwijamy wszystko, oprócz atrybutów, {{Code|obiekt}} {{Code|{{=}}}} {{Code|ATRYBUTY}}, a na szablonach wywołujemy funkcję: {{LinkŚródtytuł|SzablonyWywolywaneOgolny}}. Na identyfikatorze nagłówka {{LinkPatrz|nazwa_rozdzialu_w_artykule}} Wywołujemy kolejno lokalne funkcje: {{LinkPatrz|SzablonyStylowe}} - do usuwania rozwiniętych kodów stylów, {{LinkPatrz|ZnakiSpecjalne}} - do usuwania cudzysłowów, i {{LinkPatrz|Znaczniki}} - do usuwania znaczzników. ====== Gdy w kodzie identyfikatora nie ma symbolicznych szablonów ====== W tym przypadku uruchamiamy fukcję do dekodowania znaków '''HTML''', tzn. dziesiętnych, szesnastkowych i literowych, funkcją: {{Code|{{sr|#p.DecodeKoduHTMLZnaku|p=Html}}}}, a później kodujemy specjalne znaki identyfikatora sposobem: {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, przy pomocy kodów '''HTML''' dziesiętnych. ===== Usuwanie zbędnych znaków w identyfikatorze ===== Usuwane są potrójne i podwójne cudzysłowy {{Code|'}} oraz odstępy i dolne myślniki na końcach łańcucha, a wewnętrz jego kolejne je są zastępowane jedną spacją. ===== Referencje i wzory matematyczne ===== Referencje są zastępowane odpowiednio przy pomocy funkcji: {{LinkŚródtytuł|RefPrzypisowy}}, a wzory matematyczne, dla obiektów typu {{Code|POSTMATH}} {{Patrz|POSTMATH}}, które są zastępowane prawidłowo poprzez: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.text.encode|b=tak}}}}, przy pomocy: {{Code|{{sr|#p.NormaKoduZakodowanegoHtmlTekstu|p=Szablonowe}}}}, obiektem: {{Code|postMath}} {{Patrz|postMath}} z ośmioma znakami cyferkami na końcu tego, którym jest {{Code|kod}} {{LinkPatrz|kod}}. ===== Wstępne przygotowanie identyfikatora do końcowego skutecznego użytku ===== Dla danego identyfikatora one mogą się powtarzać, a identyfikator musi być unikalny, zatem trzeba napisać ich dodatkowe numerki, po policzeniu otrzymamy {{Code|numer_tego_samego_naglowka}} {{Patrz|numer_tego_samego_naglowka}}. ====== Tablica identyfikatora i nagłówka ====== Funkcja wykorzystuje tablicę: {{Code|tablica_powtarzajacych_sie_elementow}} {{Patrz|tablica_powtarzajacych_sie_elementow}}, aby policzyć numer powtarzającego się identyfikatora '''id'''. Dla {{LinkPatrz|numer_tego_samego_naglowka}} równego {{Code|1}}, tworzemy tablicę {{Code|elementy_linku}} {{Patrz|elementy_linku}}, którego pierwszym elementem jest: {{LinkPatrz|nazwa_rozdzialu_w_artykule}}, a drugim nagłówek {{LinkPatrz|naglowek}}, a w przypadku tego numerku innego niż podana liczba, to dajemy do identyfikatora na końcu ten numerek po dolnym myślniku. ====== Uzupełnianie zmiennej do identyfikacji uchwytu z odpowiednim nagłówkiem ====== Jeśli: {{LinkPatrz|obiekty}} i {{LinkPatrz|numeracja}}, istnieją, wtedy do tej pierwszej tablicy dodawane są wszystkie elementy o takim samym typie z {{LinkPatrz|numeracja}}. To dodawanie na końcu tablicy przedstawia się: <syntaxhighlight lang="lua"> for _,value_numeracja in ipairs(numeracja)do obiekty[#obiekty+1]={value_numeracja,{nazwa_strony_z_naglowkami,elementy_linku[1], elementy_linku[2]}}; end; </syntaxhighlight> ====== Tworzenie tablicy nagłówkami i indetyfikatorami ====== Jeśli {{Code|poziom_rozdzialu}} jest większy od zera, tzn. {{Code|> 0}} {{ZobaczTeż|>0}}, wtedy liczymy numer rozdziału przy pomocy funkcji: {{Code|HNumer}} {{LinkPatrz|HNumer}} liczony z: {{Code|poziom_rozdzialu}} {{LinkPatrz|poziom_rozdzialu}}, tworząc w ten sposób wynik w postaci zmiennej {{Code|numer_rozdzialu_ustalony}} {{Patrz|numer_rozdzialu_ustalony}}. ====== Rozdziały ewentualnie powtarzające się ====== Dla przypadku {{LinkZobaczTeż|>0}} mamy na sam koniec tablicy: {{Code|tablica_powtarzajacych_sie_elementow}} {{LinkPatrz|tablica_powtarzajacych_sie_elementow}}, dodajemy element identyfikatora '''id''' bez numerka, tzn.: {{Code|nazwa_rozdzialu_w_artykule}} {{LinkPatrz|nazwa_rozdzialu_w_artykule}}. ====== Tablica spisu treści ====== Dla przypadku {{LinkZobaczTeż|>0}} jest tworzona tablica spisu: {{Code|tablica_spisu_tresci}} {{Patrz|tablica_spisu_tresci}}, jako pusta tablica, z później dodanym elementem o kluczu: {{Code|nazwa_strony}}, którym jest o wartości: {{LinkPatrz|nazwa_strony_z_naglowkami}}. Do tablicy: {{LinkPatrz|tablica_spisu_tresci}}, dodawane są elementy według schematu: <syntaxhighlight lang="lua"> tablica_spisu_tresci[#tablica_spisu_tresci+1]={elementy_linku,numer_rozdzialu_ustalony}; </syntaxhighlight> === Dalsza część funkcji - Tom III === Będziemy się tutaj zajmowali z tekstem przed pierwszym rozdziałem na stronie. ==== Nagłówek na samym początku strony ==== Gdy kodowanie jest jednak włączone, tzn.: {{LinkPatrz|czy_kodowanie}}, jest prawdziwe, i mamy artykuł korzystany, tzn.: {{LinkPatrz|czy_artykul_korzystany}}, i zaprzeczenie wyłowania funkcji: {{LinkPatrz|CzyJestTakiProblemJakoElementTablicy}}, przyjmuje wartość prawdziwą, to jeśli na samym początku znajduje się rozdział, wtedy funkcja zwraca wynik: {{LinkPatrz|tablica_spisu_tresci}}. ==== Tekst przed pierwszym rozdziałem ==== Wyznaczamy ten tekst, który będzie ukrywał się pod zmienną: {{Code|tekst_zerowy}} {{Patrz|tekst_zerowy}}, który jest tekstem przed pierwszym rozdziałem lub samym tekstem zakodowanego wikikodu {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}}. ===== Szablony nagłówka w tekście zerowym ===== W tym tekście iterujemy jak w punkcie: {{LinkZobaczTeż|text_rozdzialu}}, tylko zamiast {{LinkPatrz|text_rozdzialu}} jest {{LinkPatrz|tekst_zerowy}}. === Dalsza część funkcji - Tom IV === Zwracaną wartością tej funkcji jest: {{Code|tablica_spisu_tresci}} {{LinkPatrz|tablica_spisu_tresci}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> akm6w3deqr01sl5drjsso9206g916zg 548364 548363 2026-07-26T13:11:57Z Persino 2851 /* Rozdziały ewentualnie powtarzające się */ 548364 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}|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.PobieranieInformacjiRamkiRozpatrywanejStrony}}{{Code|p.PobieranieInformacjiRamkiRozpatrywanejStrony}} == Pobieranie danych z obiektu {{LinkPatrz|self}}, biorąc jego podtablicę o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiRamkiRozpatrywanejStrony(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa ramki tablicy transportu. == {{Śródtytuł|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}}{{Code|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}} == Funkcja uruchamiacz, główna funkcja dzięki, której ładują się informacje według modułu: {{Code|{{ld2|StronicowyParser/informacje}}}} (tam jest użyty). Ten ładowacz jest pokazany w module opis: {{Code|{{lr2|Moduły/StronicowyParser/informacje}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}. === {{Śródtytuł|DaneNazw}}{{Code|DaneNazw}} === Funkcja licząca nazwy podanej nazwy strony, tzn.: {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} {{Patrz|nazwa_artykulu}}, oraz zwracające te kolejno nazwy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function DaneNazw(pelna_nazwa_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|pelna_nazwa_strony}} {{Patrz|pelna_nazwa_strony}} - pełna nazwa strony. === Dalsza część funkcji - Tom I === ==== Tworzenie i inicjowanie początkowych tabel ==== Funkcja tworzy podtabele tabeli zmiennej obiektowej {{LinkPatrz|self}} o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, o wartości pustej. Następnie są tworzone podtabele puste w tej ostatniej o kluczach: {{Code|dane_analizy_stron}} {{Patrz|dane_analizy_stron}} i {{Code|licencja}}{{Patrz|licencja}}, oraz nilowe zmienne z tego samego, co ostatnie, o kluczu: {{Code|problemy}} {{Patrz|problemy}}. ==== Zmienne nazw strony bieżącej, czy nawet aktualnej, w zależności, czy istnieją odpowiednie ustawienia ==== Jest liczony adres strony, na której jest uruchomiona dana strona, wewnętrznej bezparametrowo według: {{Code|{{sr|#p["PełnaNazwaArtykułu"]|p=Książkowe}}}} {{Patrz|strona_aktualna}}, co z tego są liczone z niego: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, co z tego jest liczona pełna nazwa książki {{Code|pelna_nazwa_ksiazki}} {{Patrz|pelna_nazwa_ksiazki}}. ==== Zbieranie danych ustawień z: {{Code|.../config}}, jeśli istnieją ==== Jest liczony pełny adres ustawień: {{Code|pelna_nazwa_ksiazki_ustawienia}} {{Patrz|pelna_nazwa_ksiazki_ustawienia}}, według schematu: {{Code|"Szablon:Podręcznik/Ustawienia/"..pelna_nazwa_ksiazki}} {{Patrz|UstawieniaKsiążki}}. Co z tego jest sprawdzane, czy istnieje strona: {{Code|pelna_nazwa_ksiazki_ustawienia.."/config"}} {{Patrz|config}}, a jeśli tak, to wtedy wiemy, że to jest szablon, to go przedstawiamy w postaci szablonowej, licząc z: {{Code|{{sr|#p.NazwaSzablonu|p=Szablonowe}}}}. Dalej jest liczony ostatni wyliczony szablon z parametrem {{Code|książka}} {{Patrz|książka}}, dalej jeszcze raz, tym razem z parametrem: {{Code|artykuł}} {{Patrz|artykuł}} - te parametry przedstawiają parametry artykułu książkowego, skąd możemy ściągać stronę, by ją wyświetlić na stronie aktualnej, na pewno parametr {{LinkPatrz|książka}} nie może być parametrem składających z samych znaków odstępów, a jeśli tak jest, w takim razie z tych dwóch parametrów jest liczony parametr {{Code|strona}} {{Patrz|strona}}. Dalej liczymy, czy ona jest poprawnym adresem, używając funkcji: {{Code|{{sr|#p["CzyNiepoprawnaNazwa"]|p=Pudełko/Tom I}}}}. A jeżeli adres jest jednak poprawny, ta funkcja zwraca wartość odpowiadającej fałszywej wartości, wtedy jest liczony pełny adres strony, jeżeli ona jest względna z parametrów, tzn. parametr pierwszy: {{LinkPatrz|strona}}, i parametr drugi: {{LinkPatrz|strona_aktualna}}, co względem tej funkcji mamy już: {{LinkPatrz|strona}}, czyli po tej operacji (procedurze) policzyliśmy bezwzględny jego adres. ===== Liczenie nazw z parametru pełnej nazwy aktualnej, nie bieżącej, strony wynikłe z obliczeń z ustawień ===== Policzona wartość strony: {{LinkPatrz|strona}}, jest sprawdzana, czy adres (strona), pod którym ona się kryje, istnieje, a jeśli tak, to ten adres jest tylko formatowany. Porównujemy adres {{LinkPatrz|strona}} z {{LinkPatrz|strona_aktualna}}, czy przedstawiają nie ten sam adres, a jeżeli tak, to liczymy wszyskie nazwy strony, czyli dla bez {{Code|aktualna_}}, przyrównujemy do tego z tym początkiem, co odpowiada pełnej nazwie strony z {{Code|strona_aktualna}} {{LinkPatrz|strona_aktualna}} {{ZobaczTeż|strona_aktualna}}, i używając funkcji: {{LinkŚródtytuł|DaneNazw}}, ze zmiennej: {{Code|strona}} {{LinkPatrz|strona}} {{ZobaczTeż|strona}}. Te ostatnie nazwy są potrzebne do analizy strony bieżącej, nie aktualnej, tzn. na niej, jakie są szablony, jakie posiada spisy, jakie książki, a w nim spisy do nich, są dołączone. ====== Policzone nazwy strony aktualnej wpisane do ogólnej tablicy ====== A póżniej z adresów pliczonych wywołania, dotyczącej tego aktualnego, liczymy dla podtabeli: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienne o kluczach: {{Code|aktualna_nazwa_przestrzeni}} {{Patrz|aktualna_nazwa_przestrzeni}}, {{Code|aktualna_nazwa_przestrzeni_ksiazki}} {{Patrz|aktualna_nazwa_przestrzeni_ksiazki}}, {{Code|aktualna_nazwa_ksiazki}} {{Patrz|aktualna_nazwa_ksiazki}} i {{Code|aktualna_nazwa_artykulu}} {{Patrz|aktualna_nazwa_artykulu}}, mając zmienne nazw policzone z tego aktualnego. ===== Czy strona bieżąca, ale nie zbiorcza, jest wyświetlana na stronie aktualnej, czy może jest tylko stroną zbiorczą uruchomioną pod inną nazwą ===== Jeśli zmienne nazw są policzone z: {{LinkZobaczTeż|strona}} i {{LinkZobaczTeż|strona_aktualna}}, to wtedy kolejno porównujemy, czy któraś z nich jest nierówna, a jeśli tak, to wywołujemy szablon z parametru: {{Code|zastępcza}} {{ZobaczTeż|zastępcza}} - jest to, czy strona jest zbiorcza, o nazwie: {{LinkPatrz|config}}, czy powinna być wartością niepustą. A jak tak, to wyznaczamy z tablicy: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienną o kluczu: {{Code|alternatywna}} {{Patrz|alternatywna}}, co przyrównujemy jemu wartość logiczną z uzyskanego z szablonu z parametrem {{LinkZobaczTeż|zastępcza}}, a jeżeli ta zmienna przyjmuje wartość odpowiadająca fałszywej, wtedy zmienna z tej samej tablicy o kluczu: {{Code|inna_strona_aktualna_niz_biezaca}} {{Patrz|inna_strona_aktualna_niz_biezaca}} - jest to, czy strona jest inna niż zbiorcza, ale wyświetlana na innej stronie, przyjmuje wartość prawdziwą. === Dalsza część funkcji - Tom II === Tworzymy zmienną: {{Code|tablica_zmiennych}}, która jest tablicą pustą, którą uzupełniamy o elementy o kluczach: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}} - są to dane zebrane z bieżącej strony, i {{Code|linkobiekt}} {{Patrz|linkobiekt}} - są to dane zebrane o linkach na stronie odpowiadających poszczególnym obiektom. Uruchamiamy funkcję: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}, z której wyznaczamy parametr: {{Code|tabela_listy_danych_analizy_ksiazki}} - są to dane zebrane z bieżącej i innych stron skojarzonej z nim, te elementy są tylko w postaci nieprzetworzonej, ale przygotowanej. A jeśli ten parametr jest tabelką - a jeżeli nie jest, to nastąpił błąd przetwarzania, i funkcja nie idzie dalej w instrukcję warunkową, wtedy wywołujemy funkcję: {{Code|{{sr|#p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony|p=StronicowyParser/NumeracjaObiektówStron}}}}. === Dalsza część funkcji - Tom III === Na sam koniec funkcji zwracamy tablicę: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}} - ta zmienna zawiera dane w postaci przetworzonej policzonej, tzn. uchwytom są przydzielone numeracje, sprawdzane, czy uchwyty są policzone, są wyznaczone wszystkie kody problemów, które później są potrzebne do wyznaczania wszystkich kategorii błędów na stronie. == {{Śródtytuł|p.SpisRzeczyWedlePodanegoTekstu}}{{Code|p.SpisRzeczyWedlePodanegoTekstu}} == Funkcja generowania liczenia nagłówków strony, co na tej podstawie może być generowany '''spis treści''' strony. Funkcja przyporządkowuje uchwytom szablonów nagłówków ich identyfikatory i te nagłówki, w którym one leżą, jeżeli zmienna {{LinkPatrz|obiekty}} istnieje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SpisRzeczyWedlePodanegoTekstu(self,tekst_artykulu,nazwa_strony,czy_artykul_korzystany, tylko_naglowek,obiekty,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_obiektow_strony_danych_kodow_specjalnych_modul,KtorySzablonMaZwracacKategorie,wzory_zamiast_kodow,tabela_elementow_strony_kodow)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}} - tekst przetworzony, przygotowany ewentualnie przez pewną funkcję, rozważanego artykułu, * {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} - nazwa strony, danego spisu, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy strona jest bieżąca, * {{Code|tylko_naglowek}} {{Patrz|tylko_naglowek}} - pisz adresy stron z tylko nagłówkami '''#''', bez adresów stron, * {{Code|obiekty}} {{Patrz|obiekty}} - elementy tam zebrane, są wykorzystywane do analizy nagłówków poprzez szablon {{s|Śródtytuł}}, któremu temu nagłówkowi odpowjada pewien uchwyt, czy uchwyty, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}, * {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} - nazwa aktualna, czy bieżąca strony, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy zebranych informacji w postaci zakodowanej modułu {{m|Szablonowe}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tabela przeanalizowanych elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} {{Patrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} - tablica dwuwymiarowa kodów o kluczach: szablonów referencji: '''REF...''' i '''POSTMATH''' oraz ich elementu numeru kodu {{Code|kod}}, którego elementem jest kod tego elementu, * {{Code|KtorySzablonMaZwracacKategorie}} {{Patrz|KtorySzablonMaZwracacKategorie}} - tabela składająca się z trzech elementów, którego pierwszy element to: {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{Patrz|KtorySzablonMaZwracacKategorieNaglowek}} - funkcja dla szablonów problemów dla jak: {{s|Śródtytuł}}, w nagłówku, drugi: {{Code|KtorySzablonMaZwracacKategorieTekst}} {{Patrz|KtorySzablonMaZwracacKategorieTekst}} - funkcja dla tego typu szablonów, ale dla nich w tekście, nie w nagłówku, trzeci: {{Code|CzyJestTakiProblemJakoElementTablicy}} {{Patrz|CzyJestTakiProblemJakoElementTablicy}} - czy nie rozważać, dla rozdziałów zerowych, przeciwnie: ta funkcja może przyjmować wartość {{Code|nil}}, wartość zwracana tego elementu, bo to jest funkcja, zależy, czy jest ustawiony kod problemu: {{Code|nagłówek w tekście rozdziału w stronie korzystanej}} {{Patrz|nagłówek w tekście rozdziału w stronie korzystanej}}, a jeżeli jest taki, to ta funkcja przyjmuje zrzuconą wartość {{Code|true}}, * {{Code|wzory_zamiast_kodow}} {{Patrz|wzory_zamiast_kodow}} - rozważaj wzory według tablicy: {{LinkPatrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}}, lub koduj to według funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}} - to wykorzystuj w przypadku, gdy: {{LinkPatrz|nazwa_strony}}, istnieje, i jest wartością pustą, lub {{Code|{{sr|#p.NormaKoduZakodowanegoWikiTekstu|p=Szablonowe}}}} - przeciwnie, * {{Code|tabela_elementow_strony_kodow}} {{Patrz|tabela_elementow_strony_kodow}} - baza tabela z zapamiętanymi podtabelami, którego poszczególne elementy wykorzystywane w spisie posiadają w sobie tylko pierwszy element w postaci przetworzonego uchwytu, bo używamy tylko uchwytów szablonów nagłówków. === {{Śródtytuł|SpecjalneWprowadzeniaTekstu}}{{Code|SpecjalneWprowadzeniaTekstu}} === Funkcja zamieniające pewne szablony, czy znaczniki, na rozdziały równaniowe. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local SpecjalneWprowadzeniaTekstu=function(szablon,obiekt,kod,czy_szablon,czy_znacznik,czy_liczyc,funkcja1,funkcja2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} {{Patrz|szablon}} - zmienna (szablon), nie musi być to normalny szablon, * {{Code|obiekt}} {{Patrz|obiekt}} - zmienna, którego typu jest obiekt, * {{Code|kod}} {{Patrz|kod}} - numer obiektu typu {{LinkPatrz|obiekt}}, * {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy to jest szablon, * {{Code|czy_znacznik}} {{Patrz|czy_znacznik}} - czy to jest znacznik, * {{Code|czy_liczyc}} {{Patrz|czy_liczyc}} - czy funkcję liczyć w sposób złożony, szablony typu: {{s|SpisTreści}} - zamieniający go na znacznik, czy prosty, co na samym końcu uruchamiana jest funkcja: {{LinkPatrz|funkcja1}}, * {{Code|funkcja1}} {{Patrz|funkcja1}} - funkcja operująca na wygenerowanym pośrednio (dłuższe liczenie) lub bezpośrednio (krótsze) znaczniku, wychodząca z szablonu, i zamieniająca go na rozdział równaniowy, funkcja operująca dla szablonów: {{s|SpisTreści}} lub {{s|HNumer}}, * {{Code|funkcja2}} {{Patrz|funkcja2}} - funkcja operująca na znaczniku '''HTML''' nagłówka - typu jak: {{Tag|h1}}, i zamieniająca go na rozdział równaniowy. ==== {{Śródtytuł|ParametrNR}}{{Code|ParametrNR}} ==== Funkcja liczy dokładnie parametr dany o danym numerze, zbiór danych parametrów oznaczających to samo może być wiele, tylko że jedne mogą być ważniejsze od drugich. Definicja skrótowa funkcja: <syntaxhighlight lang="lua"> local function ParametrNR(numer)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer}} {{Patrz|numer}} - numer parametru. Funkcja wykorzystywuje funkcję do uruchomienia: {{Code|{{sr|#p.SpisRzeczySzablon|p=StronicowyParser/Potrzebne}}}}, do generowania parametrów, a właściwie ich wartości. ==== {{Śródtytuł|ObiektKodNumer}}{{Code|ObiektKodNumer}} ==== Funkcja dodająca do bazy danych kolejny element bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla danego obiektu element na samym końcu, po maksymalnym elemencie do niego. Funkcja liczy kod przy pomocy funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local ObiektKodNumer=function(szablon,obiekt)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}. ==== Dalszy opis funkcji ==== Dla {{LinkPatrz|czy_szablon}} prawdziwego dla szablonów sztucznego spisu treści, sprawdzanego przez tabelkę: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, dla danego szablonowego rozdziału generowanego według {{s|HNumer}}, jest on zamieniany na rozdział równaniowy poprzez funkcję: {{LinkPatrz|funkcja1}}. Ta tabela przedstawia się treścią: <syntaxhighlight lang="lua"> p.szablony_sztucznego_wprowadzenia_tekstu={ ["HNumer"]=1, }; </syntaxhighlight> Dla innych rozdziałów szablonowych, tym razem generowanego przez szablon {{s|SpisTreści}}, którego parametry są wyznaczane przez funkcję: {{LinkŚródtytuł|ParametrNR}}, tabelka parametrów opisująca to: <syntaxhighlight lang="lua"> p.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu={ ["SpisTreści"]={{"artykuł",1,},{"książka",2,},{"nazwa",3,},{"dodatek",4,},{"poziom",},}, }; </syntaxhighlight> Funkcja liczy artykuł, koloruje do niego link w: '''spisie treści''', na czerwona, wtedy generuje dodatkowy znacznik, z właściwością: {{Code|color:red}}, gdy on nie istnieje, i to wstawia do tabeli bazy, lub bez niego, wtedy bezposrednio generuje tekst równy nazwie tego szablonu, opakowany, lub nie, w zależności od istnienia. Do policzenia strony, czy ona istnieje, musi być przedtem zdekodowany funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, by później policzyć to sprawdzenie przy pomocy: {{Code|{{sr|#p.PoliczZbiory|p=Techniczne}}}}. W każdym bądź razie jest ruchumianiana funkcja: {{LinkPatrz|funkcja1}}. Gdy to nie jest szablon, tzn.: {{LinkPatrz|czy_szablon}}, jest fałszywe, ale {{LinkPatrz|czy_znacznik}} jest prawdziwe, to takie znaczniki, jak od: {{Tag|h1}} do {{Tag|h6}}, są zamieniane na czysty tekst. W takim razie wywoływana jest dla tego przypadku funkcja: {{LinkPatrz|funkcja2}}. Funkcja: {{LinkPatrz|funkcja1}}, jest dla szablonów nagłówków, a: {{LinkPatrz|funkcja2}}, dla znaczników nagłówków. Z tych generowanych czystych generowanych tekstów są tworzone w tekście rozdziały równaniowe, by później wygenerować '''spis treści''', właśnie z nimi - z tymi nagłówkami, a bardziej ściśle linkami do nich. === {{Śródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}{{Code|SzablonNaglowkujWNaglowkuRozdzialu}} === Fukcja do obsługi nagłówków {{LinkPatrz|Śródtytuł}} w nagłówku, nie w tekście poza nim. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWNaglowkuRozdzialu(szablon,obiekt,kod,powtorka,parametry_wywolania_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}, * {{Code|powtorka}} {{Patrz|powtorka}} - numer użycia takiego samego szablonu typu {{s|Śródtytuł}} {{Patrz|Śródtytuł}}, * {{Code|parametry_wywolania_szablonu}} {{Patrz|parametry_wywolania_szablonu}} - parametry szablonu wraz z ich wartościami, * {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} - nazwa szablonu wywołania, * {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} - modyfikatory szablonu. Funkcja sprawdza, czy szablon w nagłówku jest typu {{LinkPatrz|Śródtytuł}}, a jeżeli tak, to liczy jego uchwyt, najpierw wyznacza je z parametru o nazwie {{Code|uchwyt}} {{Patrz|uchwyt}}, dalej sprawdzane jest, czy taki uchwyt tak zdefiniowany istnieje, jeśli tak, to wydobywana jest jego przetworzona tabela z tym właśnie uchwytek, funkcja robi to względem numeru {{Code|kod}} {{LinkPatrz|kod}} tego szablonu na podstawie funkcji: {{Code|{{sr|#p.WydobywanieUchwytuZeiBezNumeracji|p=StronicowyParser/ZbieranieDanychStron}}}}. Jeżeli wydobyta tabela {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} nie istnieje, w takim razie jest ona dekodowana funkcją: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, a później jest traktowana jako adres '''URL''', tzn. jest dekodowana funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, dalej jest tworzona tabela pusta: {{LinkPatrz|lista_dwuelementowa}}, co dalej jest tam wstawiana do niej jako pierwszy element uzyskany uchwyt przetworzony. A jeśli jednak {{LinkPatrz|lista_dwuelementowa}} została wydobyta z naszej funkcji tabela, która istnieje, wtedy funkcja idzie, niż poprzednio, w inny krok instrukcji warunkowej, wtedy z tej tabeli jest wydobywany pierwszy element jako przetworzony wcześniej uchwyt. Gdy {{ZobaczTeż|uchwyt}} przetworzony uchwyt jest łańcuchem znaków niepusty, wtedy on jest dodawany w postaci tabeli, w której jest ten uchwyt, na sam koniec tabeli {{Code|numeracja}} {{Patrz|numeracja}}. Gdy liczba powtórzeń jest większa niż zero, wtedy jest wywoływana funkcja, przy którym mają być zwrócone kategorie, jeśli zostaną użyte, o nazwie {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}}. Gdy jednak uchwyt uzyskany nie istnieje, to wtedy jest to samo robione, co w: {{LinkZobaczTeż|uchwyt}}. Przed zwróceniem ile razy została dokonana powtórka, jest powiększany licznik powtorek, i to jest otrzymywane z tej funkcji. === {{Śródtytuł|SzablonNaglowkujWTekscieRozdzialu}}{{Code|SzablonNaglowkujWTekscieRozdzialu}} === Funkcja do analizy szablonów nagłówków w tekście rozdziału, nie w nagłówku. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWTekscieRozdzialu(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja sprawdza, czy tekst w bazie kodów jest typu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, w takim razie po wykryciu, że dla tego, że jest to wywołanie szablonowe, a nie instrukcja warukowa w wikikodzie w tekście, wtedy podobnie jest robione, co w funkcji: {{LinkŚródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}, tylko zamiast {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}} jest {{Code|KtorySzablonMaZwracacKategorieTekst}} {{LinkPatrz|KtorySzablonMaZwracacKategorieTekst}}. Przy wykryciu tam szablonu typu {{LinkPatrz|Śródtytuł}}, funkcja zawsze zwraca wartość {{Code|true}}, w innych przypadkach {{Code|false}}. W przypadku intrukcji warunkowej w wikikodzie i dla ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jest wtedy zwracana wartość {{Code|false}}. Funkcja w pozostałych przypadkach zwraca wartość logiczną {{Code|false}}. === {{Śródtytuł|SzablonyWywolywane}}{{Code|SzablonyWywolywane}} === Szablon zamieniający specjalne znaki szablonów, tzn.: {{Code|{{((}}}}, {{Code|{{))}}}}, {{Code|{{!}}}} i {{Code|{{=}}}}, kolejno na: {{Code|{{s|((}}}}, {{Code|{{s|))}}}}, {{Code|{{s|!}}}} i {{Code|{{s|{{=}}}}}}, takich {{ZobaczTeż|StronicowyParser}}, które zawierają wywołania '''Stronicowego Parsera''', czyli ramki typu: {{Code|{{m|StronicowyParser}}}}, czy: {{Code|{{m|StronicowyParser/}}}}, a inne są po prostu przypisywane. W przypadku linków, i nie tylko, tzn. dla szablonów {{LinkZobaczTeż|StronicowyParser}}, z innych stron niż korzystana, co jest trafnie oznaczone zaprzeczeniem parametru {{LinkPatrz|czy_artykul_korzystany}} są liczone parametry pudełkowe {{Code|{{m|Pudełko}}}}. Strony wskazane przez te parametry są analizowane, przy czym linki są przez inną funkcję, a inne już przez znów inną. Szablony nagłówków typu {{LinkPatrz|Śródtytuł}}, czy szablonów stronicowych otwierających i zamykających, one lub jego koledzy, tzn. ich: {{s|StronaStart}} i {{s|StronaKoniec}}, są zastępowane ciągiem pustym. Inne parametry opisane z tabeli {{Code|{{sr|#p.szablony_stronicowe_kontenerowe_formatowania_wzorowego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, są zastępowane ich zawartością, by uniknąć kontaktu nagłówków z tego typu szablonami. Szablony ideksowania określone tabelą: {{Code|{{sr|#p.szablony_indeksowania}}}} {{Patrz|p.szablony_indeksowania}}, nie są rozwijana z kodowania lub są, w zależności, czy zmienna: {{Code|czy_indeksowanie}} {{Patrz|czy_indeksowanie}}, ma wartość {{Code|true}} - tutaj są, czy odpowiadającej fałszywej wartości logicznej - a tutaj już nie. W przypadku instrukcji warunkowych, czy ramek {{lpg|Lua}} w {{lpg|Lua|Scribunto}}, one są rozwijane - kod tego jest zawartością {{LinkPatrz|szablon}}. W innych przypadkach funkcja zwraca wartość {{Code|nil}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywane(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. W powyższym opisie występują szablony opisane w: {{LinkPatrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, a jej definicja jest: <syntaxhighlight lang="lua"> p.szablony_stronicowe_kontenerowe_formatowania_wzorowego={ ["Formuła"]=1; }; </syntaxhighlight> Jest to szablon: {{s|Formuła}} i podobne, liniowe wstawiane do tekstu, ta tabela ma za zadanie zastąpić te szablony ich poszczególnym zawartościom, a ta funkcja, która ją wykorzystywuje się do tego przypadku, jest o nazwie: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}. Tabelą szablonów indeksowania, to są one zdefiniowane przez: {{LinkPatrz|p.szablony_indeksowania}}, a jej zawartość: <syntaxhighlight lang="lua"> p.szablony_indeksowania={ ["Kotwica"] =true, ["Indeksuj"]=true, }; </syntaxhighlight> Są to szablony kotwic: {{s|Kotwica}}, który jest szablonem liniowym, a {{s|Indeksuj}}, natomiast to blokowy. === {{Śródtytuł|SzablonyWywolywaneOgolny}}{{Code|SzablonyWywolywaneOgolny}} === Funkcja rozwija nagłówek, wydzielając z niego zwykły tekst, nie dopełniając pewnych operacji. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywaneOgolny(naglowek)...end; </syntaxhighlight> Parametry funkcji: * {{Code|naglowek}} {{Patrz|naglowek}} - tekst nagłówka napisu wprowadzenia tekstu. Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["WydzielZwykłyTekst"]|p=Specjalne}}}}, kod jej wywoływany jest z parametrami: <syntaxhighlight lang="lua"> local naglowek,Znaczniki,SzablonyStylowe,ZnakiSpecjalne=specjalne_modul["WydzielZwykłyTekst"]( { ---- tekst nagłówka; tekst=naglowek, ---- Nie wykorzystywuj w działaniu funkcji: Znaczniki, SzablonyStylowe, ZnakiSpecjalne; ["nagłówek"]=true, ---- Nie wykorzystuj dekodowania tekstu zakodowanego, bez rozwijania, ale wręcz przzeciwnie rozwijaj, pozostawiaj pewne szczególne kody przed rozkodowaniem; nieklasycznie=true, ---- Bazę kodowania weź z zewnątrz; kodowanie=false, ---- Wykorzystywana tablica kodowania tekstu modułu: Module:Szablonowe, zakodowanego z zewnątrz; ["tablica kodowania"]=tablica_analizy_obiektow_strony_dany_modul, },__FUNKCJA1,__FUNKCJA2); </syntaxhighlight> Ta funkcja wydziela zwykły tekst z nagłówka z szablonami zwykłymi i ramkami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, bez naruszenia działania innych elementów szablonowych, jak tagi, czyli: {{s|#tag:}}, które też współdziałają też w kodzie danego nagłówka. Również i z linkami wewnętrznymi i zewnętrznymi, z których wydziela się zwykły tekst, bo wiadomo, że one nie mogą się znaleźć w linkach '''spisu treści''', bo nie może być link w linku w nim, a one niezależnie jakie, bo to ze względu na {{Strong|HTML}} nie możliwe technologicznie. Definicje dwóch kolejnych funkcji zdefiniowanych powyżej: <syntaxhighlight lang="lua"> ---- szablon - kod obiektu kodu w wikikodzie; ---- obiekt - typ obiektu kodu powyżej; ---- kod - numer tego samego typu obiektu; local __FUNKCJA1=function(szablon,obiekt,kod) ---- Funkcja wykorzystywana do ewentualnego modyfikowania użytych szablonów i przedstawianiu jego kodem symbolicznym, lub zastępowania pewnych szablonów nagłówków wartością pustą; local szablon,wynik=SzablonyWywolywane(szablon,obiekt,kod); return szablon,wynik; end; local __FUNKCJA2=function(szablon,obiekt,kod) --- rozwijaj uzyskany szablon, dalej, gdy napotkasz, jeśli zostanie włączone zmienna indeksowania w postaci wartości logicznej; return czy_indeksowanie; end; </syntaxhighlight> Funkcja zwraca wartości, tzn. zmienną z przetworzenia nagłówkowego, bez usuniętych znaczników, stylów i znaków specjalnych, tzn. części otoczone pewnymi cudzysłowami z taką samą liczbą, więc pogrubienia i pochylenia tekstu: <syntaxhighlight lang="lua"> return naglowek, Znaczniki, SzablonyStylowe, ZnakiSpecjalne; </syntaxhighlight> Definicje tych zwróconych funkcji, tzn.: {{Code|Znaczniki}} {{Patrz|Znaczniki}}, {{Code|SzablonyStylowe}} {{Patrz|SzablonyStylowe}} i {{Code|ZnakiSpecjalne}} {{Patrz|ZnakiSpecjalne}}, którego opisy raczej przedstawiają ich nazwy, dokładnie one są udokumentowane tutaj: <syntaxhighlight lang="lua"> ---- tekst - tekst do przetworzenia; local function Znaczniki(tekst,jakie,__FUNKCJA1,__FUNKCJA2) ---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML;---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML; ---- funkcja do usuwania znaczników, tzn. w niej inne funkcje: __FUNKCJA1 - funkcja do zakodowywania tekstu przed usuwaniem znaczników, a __FUNKCJA2 - funkcja do odkodowania tego, co pozostało; tekst=p["UsuńZnaczniki"](tekst,jakie,__FUNKCJA1,__FUNKCJA2); return tekst; end; local function SzablonyStylowe(tekst) ---- funkcja do usuwania uruchomionych stylów, tzn. tych: <templatestyles src="..."/>, wtedy to staje się kodem parsera przetwarzanego za pomocą tekstu dla tego typu znacznika, kodami parsera mogą być też inne obiekty jak ramki Lua w Scribunto, ale nie muszą być takie, ale my rozważamy tutaj tylko jeden typ kodu parsera. tekst=p["UsuńSzablonyStylów"](tekst); return tekst; end; local function ZnakiSpecjalne(tekst) ---- funkcja do usuwania cudzysłowów w takich samych ilościach z prawej i z lewej strony danego fragmentu tekstu w nim; tekst=p["UsuńZnakiSpecjalne"](tekst); return tekst; end; </syntaxhighlight> Definicje tych funkcji znajdują się również w module: {{Code|{{ld2|Specjalne}}}}, które również przedstawiają inne funkcje do upraszczania tekstu, w tym nagłówka, ale nie tylko, bo dowolnego tekstu. === {{Śródtytuł|RefPrzypisowy}}{{Code|RefPrzypisowy}} === Mechanizm zamieniający kod referencji na jej wersję wyświetlaną na ekranie, czyli w nawiasie kwadratowym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local RefPrzypisowy=function(obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|obiekt}} {{Patrz|obiekt-ref}} - nazwa typu przypisu, czyli jak bez nazwy, czy też jak: '''uwaga''', * {{Code|kod}} {{Patrz|kod-ref}} - numer danego typu przypisu. Gdy {{LinkPatrz|obiekt-ref}} nie ma nazwy, wtedy w nawiasie kwadratowym będzie tylko numerek {{LinkPatrz|kod-ref}}, a jeśli ma nazwę, to nazwa oddzielona spacją z prawej strony, a po nim jest ten numerek. === Dalsza część funkcji - Tom I === Tutaj opowiemy o części wstępnej tej funkcji. ==== Ustalanie zmiennej nazwy modułu aktualnej, czy bieżącej ==== Funkcja ustawia zmienną: {{Code|czy_kodowanie}} {{Patrz|czy_kodowanie}}, na podstawie istnienia zmiennych: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} i {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. ==== Wyznaczanie nazwy modułu aktualnej, czy bieżącej, dla strony aktualnej, jeśli ona nie istnieje ==== Jeżeli zmienna {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} jest odpowiadającej wartości fdałszywej i mamy strona korzystaną, co określa parametr {{LinkPatrz|czy_artykul_korzystany}}, w postaci wartości prawdziwej, wtedy są liczone kolejne zmienne nazw na podstawie istnienia lub nieistnienia zmiennej {{Code|alternatywna}}, a jeśli ona jest prawdziwa, wtedy wybierane są zmienne z tą aktualną nazwą woluminu wynikłe z {{LinkZobaczTeż|strona_aktualna}}, przeciwnie z nazwą bieżącą woluminu,na podstawie tego, co wyświetla '''Stronicowy Parser''', te nazwy są ze sobą łączone, wtedy powstaje pełna nazwa strony, którą przyrównujemy do {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}}. Jeśli wartość {{LinkPatrz|czy_artykul_korzystany}} jest jednak fałszywa, w takim razie jest liczona {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} na podstawie wartości {{LinkPatrz|nazwa_strony}}. ==== Kodowanie '''HTML''' specjalnych znaków strony ==== Nazwę strony {{LinkPatrz|nazwa_strony}}, w której mogą występować specjalne znaki, które są niezrozumiałe z punktu widzenia '''HTML''', jeżeli np.z nich trzeba zbudować identyfikatory '''id''', a więc trzeba je zakodować, robimy to funkcją: {{Code|{{sr|#p.EncodeId|p=Html}}}}. ==== Zwracanie funkcji liczenia numeru nagłówka ==== Wyznaczamy funkcję: {{Code|HNumer}} {{Patrz|HNumer}}, która jest efektem zwrócenia przez: {{Code|{{sr|#p.LiczonyHNumer|p=StronicowyParser/Potrzebne}}}}. ==== Zamienianie szablonów nagłówków, czy nawet tych znaczników, na rozdziały równaniowe ==== Jeśli {{LinkPatrz|czy_kodowanie}} przyjmuje wartość prawdziwą, wtedy definiujemy funkcję: {{LinkŚródtytuł|SpecjalneWprowadzeniaTekstu}}. Dalej funkcja zamienia szablony: {{s|SpisTreści}} i {{s|HNumer}}, a także znaczniki: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, na ich wersję równaniową, aby dało się je rozpoznać jako rozdziały i było je łatwo wsadzić do szablonu takiego jak: {{s|Spis treści}} i inne podobne, za pomocą dwóch kolejnych funkcji wsadzonych do pewnej funkcji modułu {{m|Szablonowe}}, która służy do operacji na takich przypadkach. === Zmienna strony z nagłówkaami === Gdy jest podana zmienna: {{Code|tylko_naglowek}} {{LinkPatrz|tylko_naglowek}}, ma wartość prawdziwą, wtedy zmienna: {{Code|nazwa_strony_z_naglowkami}} {{Patrz|nazwa_strony_z_naglowkami}}, przybiera wartość pustą, przeciwnie gdy zmienna {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}} jest ciągiem pusty, wtedy to samo, w innym pozostałym przypadku jest to dokładnie {{LinkPatrz|nazwa_strony}}, gdzie przed nim znajduje się dwukropek {{Code|:}}. === Dalsza część funkcji - Tom II === Tu powiemy coś o iteratorze, który po zebraniu danych zwraca zmienną {{Code|nil}}, co odpowiada dla pętli, jej przerwaniu. ==== Definicja iteratora zbierania informacji o stronie ==== Aby uruchomić pętle na rzeczywistych danych zakodowanej, czy nie, stronie, trzeba otrzymać zmienną pętli {{Code|iterator}} {{Patrz|iterator}} i go wywoływać bezparametrowo w każdym okrążeniu pętli, aby tak się stało, to trzeba uruchomić funkcję: {{Code|{{sr|#p.IterTekst|p=StronicowyParser/Rozdziały}}}}, na tekście {{LinkPatrz|tekst_artykulu}}, traktując tekst, jakby nie był taki zakodowany, bo tutaj jedynie się liczą elementy niezakodowane, czyli w tym przypadku nagłówki z tekstem rozdziału. ==== Zbieranie informacji o stronie w pętli generowanej przez iterator ==== Będziemy tutaj opisywali pętlę generowaną przez jego iterator {{LinkPatrz|iterator}}. W każdym okrązeniu pętli otrzymujemy dane: * {{Code|naglowek_tab}} {{Patrz|naglowek_tab}} - gdzie pierwszy jego element to {{Code|naglowek}} {{LinkPatrz|naglowek}}, * {{Code|text_rozdzialu}} {{Patrz|text_rozdzialu}} - tekst rozdziału, * {{Code|poziom_rozdzialu}} {{Patrz|poziom_rozdzialu}} - poziom rozdziału. ===== Definicja nowe wartości zbierania uchwytów nagłówka w zmiennej numeracji ===== Deklaracja zmiennej {{Code|numeracja}} {{LinkPatrz|numeracja}} jest na zewnętrz pętli, w niej tworzymy jej nową wartość, którą jest tablica pusta. ==== Uzyskiwanie informacji z tekstu rozdziału nagłówka, i jego możliwych uchwytach, w poszczegolnym okrążeniu pętli, i zrzuceniu tam pojedynczego kodu problemu ==== Jeżeli {{ZobaczTeż|text_rozdzialu}} tekst strony jest zakodowany, to iterujemy po tekście {{LinkPatrz|text_rozdzialu}} w poszukiwaniu kodów bazy kodów zakodowanego tekstu, w tym celu wywołujemy pętlę: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, wtedy uzyskujemy trzy obiekty w każdym przebiegu pętli, tzn. {{Code|szablon}} {{LinkPatrz|szablon}}, {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, za pomocę tego uruchamiamy funkcję: {{LinkŚródtytuł|SzablonNaglowkujWTekscieRozdzialu}}. Jeżeli funkcja napotkała uchwyt szablonu: {{Code|{{s|Śródtytuł}}}}, wtedy jest zatrzymywana, w takim razie mamy informację o wystąpieniu niedozwolonego szablonu nagłówka w tekście. A jeżeli takiego szablonu tam nie ma, to układ iterator {{LinkPatrz|iterator}} iteruje aż do zakończenia danych. ==== Uzyskiwanie nagłówka i do niego identyfikatora '''id''' ==== ===== Tekst niezakodowany nagłówka ===== Gdy tekst nie jest zakodowany, wtedy zmienna: {{LinkPatrz|czy_kodowanie}}, ma wartość odpowiaadające fałszywej, wtedy dla tego nagłówka {{LinkPatrz|naglowek}} jest uruchamiana funkcja: {{Code|{{sr|#p.["PrzetwórzNagłówek"]|p=Specjalne}}}}, wtedy otrzymujemy dwie wartości: {{Code|nazwa_rozdzialu_w_artykule}} {{Patrz|nazwa_rozdzialu_w_artykule}} - zmienna idententyfikatora, {{Code|naglowek}} {{LinkPatrz|naglowek}} - zmienna nagłówka. Te dwie zmienne zostały maksymalnie rozwinięte, zostały przystosowane do tego, aby słuzyły do tego, co trzego zostały stworzone. ===== Tekst zakodowany nagłówka ===== Gdy jednak {{LinkPatrz|czy_kodowanie}} przyjełajednak wartość fałszywą, wtedy jest uruchamiana funkcja: {{LinkŚródtytuł|SzablonyWywolywaneOgolny}}, z której otrzymujemy: {{Code|naglowek}} {{LinkPatrz|naglowek}} - zmienna przetworzonego i maksymalnie rozwiniętego nagłówka, oraz zmienne funkcje: {{LinkPatrz|Znaczniki}}, {{LinkPatrz|SzablonyStylowe}} i {{LinkPatrz|ZnakiSpecjalne}}. Na podstawie defiicji: {{Code|nazwa_rozdzialu_w_artykule}} {{LinkPatrz|nazwa_rozdzialu_w_artykule}}, mamy: {{Code|naglowek}} {{LinkPatrz|naglowek}}. ====== Kompletowanie nagłówka ====== Ten nagłówek kompletujemy funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, usuwając szablony indeksowania {{LinkPatrz|p.szablony_indeksowania}}, a także znaczniki: {{Tag|li}}, {{Tag|ul}} i {{Tag|ol}}. ====== Kompletowanie identyfikatora nagłówka ====== Kompletując: {{Code|nazwa_rozdzialu_w_artykule}} {{LinkPatrz|nazwa_rozdzialu_w_artykule}}, rozwijamy wszystko, oprócz atrybutów, {{Code|obiekt}} {{Code|{{=}}}} {{Code|ATRYBUTY}}, a na szablonach wywołujemy funkcję: {{LinkŚródtytuł|SzablonyWywolywaneOgolny}}. Na identyfikatorze nagłówka {{LinkPatrz|nazwa_rozdzialu_w_artykule}} Wywołujemy kolejno lokalne funkcje: {{LinkPatrz|SzablonyStylowe}} - do usuwania rozwiniętych kodów stylów, {{LinkPatrz|ZnakiSpecjalne}} - do usuwania cudzysłowów, i {{LinkPatrz|Znaczniki}} - do usuwania znaczzników. ====== Gdy w kodzie identyfikatora nie ma symbolicznych szablonów ====== W tym przypadku uruchamiamy fukcję do dekodowania znaków '''HTML''', tzn. dziesiętnych, szesnastkowych i literowych, funkcją: {{Code|{{sr|#p.DecodeKoduHTMLZnaku|p=Html}}}}, a później kodujemy specjalne znaki identyfikatora sposobem: {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, przy pomocy kodów '''HTML''' dziesiętnych. ===== Usuwanie zbędnych znaków w identyfikatorze ===== Usuwane są potrójne i podwójne cudzysłowy {{Code|'}} oraz odstępy i dolne myślniki na końcach łańcucha, a wewnętrz jego kolejne je są zastępowane jedną spacją. ===== Referencje i wzory matematyczne ===== Referencje są zastępowane odpowiednio przy pomocy funkcji: {{LinkŚródtytuł|RefPrzypisowy}}, a wzory matematyczne, dla obiektów typu {{Code|POSTMATH}} {{Patrz|POSTMATH}}, które są zastępowane prawidłowo poprzez: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.text.encode|b=tak}}}}, przy pomocy: {{Code|{{sr|#p.NormaKoduZakodowanegoHtmlTekstu|p=Szablonowe}}}}, obiektem: {{Code|postMath}} {{Patrz|postMath}} z ośmioma znakami cyferkami na końcu tego, którym jest {{Code|kod}} {{LinkPatrz|kod}}. ===== Wstępne przygotowanie identyfikatora do końcowego skutecznego użytku ===== Dla danego identyfikatora one mogą się powtarzać, a identyfikator musi być unikalny, zatem trzeba napisać ich dodatkowe numerki, po policzeniu otrzymamy {{Code|numer_tego_samego_naglowka}} {{Patrz|numer_tego_samego_naglowka}}. ====== Tablica identyfikatora i nagłówka ====== Funkcja wykorzystuje tablicę: {{Code|tablica_powtarzajacych_sie_elementow}} {{Patrz|tablica_powtarzajacych_sie_elementow}}, aby policzyć numer powtarzającego się identyfikatora '''id'''. Dla {{LinkPatrz|numer_tego_samego_naglowka}} równego {{Code|1}}, tworzemy tablicę {{Code|elementy_linku}} {{Patrz|elementy_linku}}, którego pierwszym elementem jest: {{LinkPatrz|nazwa_rozdzialu_w_artykule}}, a drugim nagłówek {{LinkPatrz|naglowek}}, a w przypadku tego numerku innego niż podana liczba, to dajemy do identyfikatora na końcu ten numerek po dolnym myślniku. ====== Uzupełnianie zmiennej do identyfikacji uchwytu z odpowiednim nagłówkiem ====== Jeśli: {{LinkPatrz|obiekty}} i {{LinkPatrz|numeracja}}, istnieją, wtedy do tej pierwszej tablicy dodawane są wszystkie elementy o takim samym typie z {{LinkPatrz|numeracja}}. To dodawanie na końcu tablicy przedstawia się: <syntaxhighlight lang="lua"> for _,value_numeracja in ipairs(numeracja)do obiekty[#obiekty+1]={value_numeracja,{nazwa_strony_z_naglowkami,elementy_linku[1], elementy_linku[2]}}; end; </syntaxhighlight> ====== Tworzenie tablicy nagłówkami i indetyfikatorami ====== Jeśli {{Code|poziom_rozdzialu}} jest większy od zera, tzn. {{Code|> 0}} {{ZobaczTeż|>0}}, wtedy liczymy numer rozdziału przy pomocy funkcji: {{Code|HNumer}} {{LinkPatrz|HNumer}} liczony z: {{Code|poziom_rozdzialu}} {{LinkPatrz|poziom_rozdzialu}}, tworząc w ten sposób wynik w postaci zmiennej {{Code|numer_rozdzialu_ustalony}} {{Patrz|numer_rozdzialu_ustalony}}. {{HNumer|1= ======= Rozdziały ewentualnie powtarzające się ======= }} Na sam koniec tablicy: {{Code|tablica_powtarzajacych_sie_elementow}} {{LinkPatrz|tablica_powtarzajacych_sie_elementow}}, dodajemy element identyfikatora '''id''' bez numerka, tzn.: {{Code|nazwa_rozdzialu_w_artykule}} {{LinkPatrz|nazwa_rozdzialu_w_artykule}}. ====== Tablica spisu treści ====== Dla przypadku {{LinkZobaczTeż|>0}} jest tworzona tablica spisu: {{Code|tablica_spisu_tresci}} {{Patrz|tablica_spisu_tresci}}, jako pusta tablica, z później dodanym elementem o kluczu: {{Code|nazwa_strony}}, którym jest o wartości: {{LinkPatrz|nazwa_strony_z_naglowkami}}. Do tablicy: {{LinkPatrz|tablica_spisu_tresci}}, dodawane są elementy według schematu: <syntaxhighlight lang="lua"> tablica_spisu_tresci[#tablica_spisu_tresci+1]={elementy_linku,numer_rozdzialu_ustalony}; </syntaxhighlight> === Dalsza część funkcji - Tom III === Będziemy się tutaj zajmowali z tekstem przed pierwszym rozdziałem na stronie. ==== Nagłówek na samym początku strony ==== Gdy kodowanie jest jednak włączone, tzn.: {{LinkPatrz|czy_kodowanie}}, jest prawdziwe, i mamy artykuł korzystany, tzn.: {{LinkPatrz|czy_artykul_korzystany}}, i zaprzeczenie wyłowania funkcji: {{LinkPatrz|CzyJestTakiProblemJakoElementTablicy}}, przyjmuje wartość prawdziwą, to jeśli na samym początku znajduje się rozdział, wtedy funkcja zwraca wynik: {{LinkPatrz|tablica_spisu_tresci}}. ==== Tekst przed pierwszym rozdziałem ==== Wyznaczamy ten tekst, który będzie ukrywał się pod zmienną: {{Code|tekst_zerowy}} {{Patrz|tekst_zerowy}}, który jest tekstem przed pierwszym rozdziałem lub samym tekstem zakodowanego wikikodu {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}}. ===== Szablony nagłówka w tekście zerowym ===== W tym tekście iterujemy jak w punkcie: {{LinkZobaczTeż|text_rozdzialu}}, tylko zamiast {{LinkPatrz|text_rozdzialu}} jest {{LinkPatrz|tekst_zerowy}}. === Dalsza część funkcji - Tom IV === Zwracaną wartością tej funkcji jest: {{Code|tablica_spisu_tresci}} {{LinkPatrz|tablica_spisu_tresci}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> djobw823d4geeuofkrwu46xua406su3 548365 548364 2026-07-26T13:12:36Z Persino 2851 /* Tablica spisu treści */ 548365 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}|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.PobieranieInformacjiRamkiRozpatrywanejStrony}}{{Code|p.PobieranieInformacjiRamkiRozpatrywanejStrony}} == Pobieranie danych z obiektu {{LinkPatrz|self}}, biorąc jego podtablicę o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiRamkiRozpatrywanejStrony(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa ramki tablicy transportu. == {{Śródtytuł|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}}{{Code|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}} == Funkcja uruchamiacz, główna funkcja dzięki, której ładują się informacje według modułu: {{Code|{{ld2|StronicowyParser/informacje}}}} (tam jest użyty). Ten ładowacz jest pokazany w module opis: {{Code|{{lr2|Moduły/StronicowyParser/informacje}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}. === {{Śródtytuł|DaneNazw}}{{Code|DaneNazw}} === Funkcja licząca nazwy podanej nazwy strony, tzn.: {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} {{Patrz|nazwa_artykulu}}, oraz zwracające te kolejno nazwy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function DaneNazw(pelna_nazwa_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|pelna_nazwa_strony}} {{Patrz|pelna_nazwa_strony}} - pełna nazwa strony. === Dalsza część funkcji - Tom I === ==== Tworzenie i inicjowanie początkowych tabel ==== Funkcja tworzy podtabele tabeli zmiennej obiektowej {{LinkPatrz|self}} o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, o wartości pustej. Następnie są tworzone podtabele puste w tej ostatniej o kluczach: {{Code|dane_analizy_stron}} {{Patrz|dane_analizy_stron}} i {{Code|licencja}}{{Patrz|licencja}}, oraz nilowe zmienne z tego samego, co ostatnie, o kluczu: {{Code|problemy}} {{Patrz|problemy}}. ==== Zmienne nazw strony bieżącej, czy nawet aktualnej, w zależności, czy istnieją odpowiednie ustawienia ==== Jest liczony adres strony, na której jest uruchomiona dana strona, wewnętrznej bezparametrowo według: {{Code|{{sr|#p["PełnaNazwaArtykułu"]|p=Książkowe}}}} {{Patrz|strona_aktualna}}, co z tego są liczone z niego: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, co z tego jest liczona pełna nazwa książki {{Code|pelna_nazwa_ksiazki}} {{Patrz|pelna_nazwa_ksiazki}}. ==== Zbieranie danych ustawień z: {{Code|.../config}}, jeśli istnieją ==== Jest liczony pełny adres ustawień: {{Code|pelna_nazwa_ksiazki_ustawienia}} {{Patrz|pelna_nazwa_ksiazki_ustawienia}}, według schematu: {{Code|"Szablon:Podręcznik/Ustawienia/"..pelna_nazwa_ksiazki}} {{Patrz|UstawieniaKsiążki}}. Co z tego jest sprawdzane, czy istnieje strona: {{Code|pelna_nazwa_ksiazki_ustawienia.."/config"}} {{Patrz|config}}, a jeśli tak, to wtedy wiemy, że to jest szablon, to go przedstawiamy w postaci szablonowej, licząc z: {{Code|{{sr|#p.NazwaSzablonu|p=Szablonowe}}}}. Dalej jest liczony ostatni wyliczony szablon z parametrem {{Code|książka}} {{Patrz|książka}}, dalej jeszcze raz, tym razem z parametrem: {{Code|artykuł}} {{Patrz|artykuł}} - te parametry przedstawiają parametry artykułu książkowego, skąd możemy ściągać stronę, by ją wyświetlić na stronie aktualnej, na pewno parametr {{LinkPatrz|książka}} nie może być parametrem składających z samych znaków odstępów, a jeśli tak jest, w takim razie z tych dwóch parametrów jest liczony parametr {{Code|strona}} {{Patrz|strona}}. Dalej liczymy, czy ona jest poprawnym adresem, używając funkcji: {{Code|{{sr|#p["CzyNiepoprawnaNazwa"]|p=Pudełko/Tom I}}}}. A jeżeli adres jest jednak poprawny, ta funkcja zwraca wartość odpowiadającej fałszywej wartości, wtedy jest liczony pełny adres strony, jeżeli ona jest względna z parametrów, tzn. parametr pierwszy: {{LinkPatrz|strona}}, i parametr drugi: {{LinkPatrz|strona_aktualna}}, co względem tej funkcji mamy już: {{LinkPatrz|strona}}, czyli po tej operacji (procedurze) policzyliśmy bezwzględny jego adres. ===== Liczenie nazw z parametru pełnej nazwy aktualnej, nie bieżącej, strony wynikłe z obliczeń z ustawień ===== Policzona wartość strony: {{LinkPatrz|strona}}, jest sprawdzana, czy adres (strona), pod którym ona się kryje, istnieje, a jeśli tak, to ten adres jest tylko formatowany. Porównujemy adres {{LinkPatrz|strona}} z {{LinkPatrz|strona_aktualna}}, czy przedstawiają nie ten sam adres, a jeżeli tak, to liczymy wszyskie nazwy strony, czyli dla bez {{Code|aktualna_}}, przyrównujemy do tego z tym początkiem, co odpowiada pełnej nazwie strony z {{Code|strona_aktualna}} {{LinkPatrz|strona_aktualna}} {{ZobaczTeż|strona_aktualna}}, i używając funkcji: {{LinkŚródtytuł|DaneNazw}}, ze zmiennej: {{Code|strona}} {{LinkPatrz|strona}} {{ZobaczTeż|strona}}. Te ostatnie nazwy są potrzebne do analizy strony bieżącej, nie aktualnej, tzn. na niej, jakie są szablony, jakie posiada spisy, jakie książki, a w nim spisy do nich, są dołączone. ====== Policzone nazwy strony aktualnej wpisane do ogólnej tablicy ====== A póżniej z adresów pliczonych wywołania, dotyczącej tego aktualnego, liczymy dla podtabeli: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienne o kluczach: {{Code|aktualna_nazwa_przestrzeni}} {{Patrz|aktualna_nazwa_przestrzeni}}, {{Code|aktualna_nazwa_przestrzeni_ksiazki}} {{Patrz|aktualna_nazwa_przestrzeni_ksiazki}}, {{Code|aktualna_nazwa_ksiazki}} {{Patrz|aktualna_nazwa_ksiazki}} i {{Code|aktualna_nazwa_artykulu}} {{Patrz|aktualna_nazwa_artykulu}}, mając zmienne nazw policzone z tego aktualnego. ===== Czy strona bieżąca, ale nie zbiorcza, jest wyświetlana na stronie aktualnej, czy może jest tylko stroną zbiorczą uruchomioną pod inną nazwą ===== Jeśli zmienne nazw są policzone z: {{LinkZobaczTeż|strona}} i {{LinkZobaczTeż|strona_aktualna}}, to wtedy kolejno porównujemy, czy któraś z nich jest nierówna, a jeśli tak, to wywołujemy szablon z parametru: {{Code|zastępcza}} {{ZobaczTeż|zastępcza}} - jest to, czy strona jest zbiorcza, o nazwie: {{LinkPatrz|config}}, czy powinna być wartością niepustą. A jak tak, to wyznaczamy z tablicy: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienną o kluczu: {{Code|alternatywna}} {{Patrz|alternatywna}}, co przyrównujemy jemu wartość logiczną z uzyskanego z szablonu z parametrem {{LinkZobaczTeż|zastępcza}}, a jeżeli ta zmienna przyjmuje wartość odpowiadająca fałszywej, wtedy zmienna z tej samej tablicy o kluczu: {{Code|inna_strona_aktualna_niz_biezaca}} {{Patrz|inna_strona_aktualna_niz_biezaca}} - jest to, czy strona jest inna niż zbiorcza, ale wyświetlana na innej stronie, przyjmuje wartość prawdziwą. === Dalsza część funkcji - Tom II === Tworzymy zmienną: {{Code|tablica_zmiennych}}, która jest tablicą pustą, którą uzupełniamy o elementy o kluczach: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}} - są to dane zebrane z bieżącej strony, i {{Code|linkobiekt}} {{Patrz|linkobiekt}} - są to dane zebrane o linkach na stronie odpowiadających poszczególnym obiektom. Uruchamiamy funkcję: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}, z której wyznaczamy parametr: {{Code|tabela_listy_danych_analizy_ksiazki}} - są to dane zebrane z bieżącej i innych stron skojarzonej z nim, te elementy są tylko w postaci nieprzetworzonej, ale przygotowanej. A jeśli ten parametr jest tabelką - a jeżeli nie jest, to nastąpił błąd przetwarzania, i funkcja nie idzie dalej w instrukcję warunkową, wtedy wywołujemy funkcję: {{Code|{{sr|#p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony|p=StronicowyParser/NumeracjaObiektówStron}}}}. === Dalsza część funkcji - Tom III === Na sam koniec funkcji zwracamy tablicę: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}} - ta zmienna zawiera dane w postaci przetworzonej policzonej, tzn. uchwytom są przydzielone numeracje, sprawdzane, czy uchwyty są policzone, są wyznaczone wszystkie kody problemów, które później są potrzebne do wyznaczania wszystkich kategorii błędów na stronie. == {{Śródtytuł|p.SpisRzeczyWedlePodanegoTekstu}}{{Code|p.SpisRzeczyWedlePodanegoTekstu}} == Funkcja generowania liczenia nagłówków strony, co na tej podstawie może być generowany '''spis treści''' strony. Funkcja przyporządkowuje uchwytom szablonów nagłówków ich identyfikatory i te nagłówki, w którym one leżą, jeżeli zmienna {{LinkPatrz|obiekty}} istnieje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SpisRzeczyWedlePodanegoTekstu(self,tekst_artykulu,nazwa_strony,czy_artykul_korzystany, tylko_naglowek,obiekty,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_obiektow_strony_danych_kodow_specjalnych_modul,KtorySzablonMaZwracacKategorie,wzory_zamiast_kodow,tabela_elementow_strony_kodow)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}} - tekst przetworzony, przygotowany ewentualnie przez pewną funkcję, rozważanego artykułu, * {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} - nazwa strony, danego spisu, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy strona jest bieżąca, * {{Code|tylko_naglowek}} {{Patrz|tylko_naglowek}} - pisz adresy stron z tylko nagłówkami '''#''', bez adresów stron, * {{Code|obiekty}} {{Patrz|obiekty}} - elementy tam zebrane, są wykorzystywane do analizy nagłówków poprzez szablon {{s|Śródtytuł}}, któremu temu nagłówkowi odpowjada pewien uchwyt, czy uchwyty, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}, * {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} - nazwa aktualna, czy bieżąca strony, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy zebranych informacji w postaci zakodowanej modułu {{m|Szablonowe}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tabela przeanalizowanych elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} {{Patrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} - tablica dwuwymiarowa kodów o kluczach: szablonów referencji: '''REF...''' i '''POSTMATH''' oraz ich elementu numeru kodu {{Code|kod}}, którego elementem jest kod tego elementu, * {{Code|KtorySzablonMaZwracacKategorie}} {{Patrz|KtorySzablonMaZwracacKategorie}} - tabela składająca się z trzech elementów, którego pierwszy element to: {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{Patrz|KtorySzablonMaZwracacKategorieNaglowek}} - funkcja dla szablonów problemów dla jak: {{s|Śródtytuł}}, w nagłówku, drugi: {{Code|KtorySzablonMaZwracacKategorieTekst}} {{Patrz|KtorySzablonMaZwracacKategorieTekst}} - funkcja dla tego typu szablonów, ale dla nich w tekście, nie w nagłówku, trzeci: {{Code|CzyJestTakiProblemJakoElementTablicy}} {{Patrz|CzyJestTakiProblemJakoElementTablicy}} - czy nie rozważać, dla rozdziałów zerowych, przeciwnie: ta funkcja może przyjmować wartość {{Code|nil}}, wartość zwracana tego elementu, bo to jest funkcja, zależy, czy jest ustawiony kod problemu: {{Code|nagłówek w tekście rozdziału w stronie korzystanej}} {{Patrz|nagłówek w tekście rozdziału w stronie korzystanej}}, a jeżeli jest taki, to ta funkcja przyjmuje zrzuconą wartość {{Code|true}}, * {{Code|wzory_zamiast_kodow}} {{Patrz|wzory_zamiast_kodow}} - rozważaj wzory według tablicy: {{LinkPatrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}}, lub koduj to według funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}} - to wykorzystuj w przypadku, gdy: {{LinkPatrz|nazwa_strony}}, istnieje, i jest wartością pustą, lub {{Code|{{sr|#p.NormaKoduZakodowanegoWikiTekstu|p=Szablonowe}}}} - przeciwnie, * {{Code|tabela_elementow_strony_kodow}} {{Patrz|tabela_elementow_strony_kodow}} - baza tabela z zapamiętanymi podtabelami, którego poszczególne elementy wykorzystywane w spisie posiadają w sobie tylko pierwszy element w postaci przetworzonego uchwytu, bo używamy tylko uchwytów szablonów nagłówków. === {{Śródtytuł|SpecjalneWprowadzeniaTekstu}}{{Code|SpecjalneWprowadzeniaTekstu}} === Funkcja zamieniające pewne szablony, czy znaczniki, na rozdziały równaniowe. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local SpecjalneWprowadzeniaTekstu=function(szablon,obiekt,kod,czy_szablon,czy_znacznik,czy_liczyc,funkcja1,funkcja2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} {{Patrz|szablon}} - zmienna (szablon), nie musi być to normalny szablon, * {{Code|obiekt}} {{Patrz|obiekt}} - zmienna, którego typu jest obiekt, * {{Code|kod}} {{Patrz|kod}} - numer obiektu typu {{LinkPatrz|obiekt}}, * {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy to jest szablon, * {{Code|czy_znacznik}} {{Patrz|czy_znacznik}} - czy to jest znacznik, * {{Code|czy_liczyc}} {{Patrz|czy_liczyc}} - czy funkcję liczyć w sposób złożony, szablony typu: {{s|SpisTreści}} - zamieniający go na znacznik, czy prosty, co na samym końcu uruchamiana jest funkcja: {{LinkPatrz|funkcja1}}, * {{Code|funkcja1}} {{Patrz|funkcja1}} - funkcja operująca na wygenerowanym pośrednio (dłuższe liczenie) lub bezpośrednio (krótsze) znaczniku, wychodząca z szablonu, i zamieniająca go na rozdział równaniowy, funkcja operująca dla szablonów: {{s|SpisTreści}} lub {{s|HNumer}}, * {{Code|funkcja2}} {{Patrz|funkcja2}} - funkcja operująca na znaczniku '''HTML''' nagłówka - typu jak: {{Tag|h1}}, i zamieniająca go na rozdział równaniowy. ==== {{Śródtytuł|ParametrNR}}{{Code|ParametrNR}} ==== Funkcja liczy dokładnie parametr dany o danym numerze, zbiór danych parametrów oznaczających to samo może być wiele, tylko że jedne mogą być ważniejsze od drugich. Definicja skrótowa funkcja: <syntaxhighlight lang="lua"> local function ParametrNR(numer)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer}} {{Patrz|numer}} - numer parametru. Funkcja wykorzystywuje funkcję do uruchomienia: {{Code|{{sr|#p.SpisRzeczySzablon|p=StronicowyParser/Potrzebne}}}}, do generowania parametrów, a właściwie ich wartości. ==== {{Śródtytuł|ObiektKodNumer}}{{Code|ObiektKodNumer}} ==== Funkcja dodająca do bazy danych kolejny element bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla danego obiektu element na samym końcu, po maksymalnym elemencie do niego. Funkcja liczy kod przy pomocy funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local ObiektKodNumer=function(szablon,obiekt)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}. ==== Dalszy opis funkcji ==== Dla {{LinkPatrz|czy_szablon}} prawdziwego dla szablonów sztucznego spisu treści, sprawdzanego przez tabelkę: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, dla danego szablonowego rozdziału generowanego według {{s|HNumer}}, jest on zamieniany na rozdział równaniowy poprzez funkcję: {{LinkPatrz|funkcja1}}. Ta tabela przedstawia się treścią: <syntaxhighlight lang="lua"> p.szablony_sztucznego_wprowadzenia_tekstu={ ["HNumer"]=1, }; </syntaxhighlight> Dla innych rozdziałów szablonowych, tym razem generowanego przez szablon {{s|SpisTreści}}, którego parametry są wyznaczane przez funkcję: {{LinkŚródtytuł|ParametrNR}}, tabelka parametrów opisująca to: <syntaxhighlight lang="lua"> p.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu={ ["SpisTreści"]={{"artykuł",1,},{"książka",2,},{"nazwa",3,},{"dodatek",4,},{"poziom",},}, }; </syntaxhighlight> Funkcja liczy artykuł, koloruje do niego link w: '''spisie treści''', na czerwona, wtedy generuje dodatkowy znacznik, z właściwością: {{Code|color:red}}, gdy on nie istnieje, i to wstawia do tabeli bazy, lub bez niego, wtedy bezposrednio generuje tekst równy nazwie tego szablonu, opakowany, lub nie, w zależności od istnienia. Do policzenia strony, czy ona istnieje, musi być przedtem zdekodowany funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, by później policzyć to sprawdzenie przy pomocy: {{Code|{{sr|#p.PoliczZbiory|p=Techniczne}}}}. W każdym bądź razie jest ruchumianiana funkcja: {{LinkPatrz|funkcja1}}. Gdy to nie jest szablon, tzn.: {{LinkPatrz|czy_szablon}}, jest fałszywe, ale {{LinkPatrz|czy_znacznik}} jest prawdziwe, to takie znaczniki, jak od: {{Tag|h1}} do {{Tag|h6}}, są zamieniane na czysty tekst. W takim razie wywoływana jest dla tego przypadku funkcja: {{LinkPatrz|funkcja2}}. Funkcja: {{LinkPatrz|funkcja1}}, jest dla szablonów nagłówków, a: {{LinkPatrz|funkcja2}}, dla znaczników nagłówków. Z tych generowanych czystych generowanych tekstów są tworzone w tekście rozdziały równaniowe, by później wygenerować '''spis treści''', właśnie z nimi - z tymi nagłówkami, a bardziej ściśle linkami do nich. === {{Śródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}{{Code|SzablonNaglowkujWNaglowkuRozdzialu}} === Fukcja do obsługi nagłówków {{LinkPatrz|Śródtytuł}} w nagłówku, nie w tekście poza nim. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWNaglowkuRozdzialu(szablon,obiekt,kod,powtorka,parametry_wywolania_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}, * {{Code|powtorka}} {{Patrz|powtorka}} - numer użycia takiego samego szablonu typu {{s|Śródtytuł}} {{Patrz|Śródtytuł}}, * {{Code|parametry_wywolania_szablonu}} {{Patrz|parametry_wywolania_szablonu}} - parametry szablonu wraz z ich wartościami, * {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} - nazwa szablonu wywołania, * {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} - modyfikatory szablonu. Funkcja sprawdza, czy szablon w nagłówku jest typu {{LinkPatrz|Śródtytuł}}, a jeżeli tak, to liczy jego uchwyt, najpierw wyznacza je z parametru o nazwie {{Code|uchwyt}} {{Patrz|uchwyt}}, dalej sprawdzane jest, czy taki uchwyt tak zdefiniowany istnieje, jeśli tak, to wydobywana jest jego przetworzona tabela z tym właśnie uchwytek, funkcja robi to względem numeru {{Code|kod}} {{LinkPatrz|kod}} tego szablonu na podstawie funkcji: {{Code|{{sr|#p.WydobywanieUchwytuZeiBezNumeracji|p=StronicowyParser/ZbieranieDanychStron}}}}. Jeżeli wydobyta tabela {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} nie istnieje, w takim razie jest ona dekodowana funkcją: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, a później jest traktowana jako adres '''URL''', tzn. jest dekodowana funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, dalej jest tworzona tabela pusta: {{LinkPatrz|lista_dwuelementowa}}, co dalej jest tam wstawiana do niej jako pierwszy element uzyskany uchwyt przetworzony. A jeśli jednak {{LinkPatrz|lista_dwuelementowa}} została wydobyta z naszej funkcji tabela, która istnieje, wtedy funkcja idzie, niż poprzednio, w inny krok instrukcji warunkowej, wtedy z tej tabeli jest wydobywany pierwszy element jako przetworzony wcześniej uchwyt. Gdy {{ZobaczTeż|uchwyt}} przetworzony uchwyt jest łańcuchem znaków niepusty, wtedy on jest dodawany w postaci tabeli, w której jest ten uchwyt, na sam koniec tabeli {{Code|numeracja}} {{Patrz|numeracja}}. Gdy liczba powtórzeń jest większa niż zero, wtedy jest wywoływana funkcja, przy którym mają być zwrócone kategorie, jeśli zostaną użyte, o nazwie {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}}. Gdy jednak uchwyt uzyskany nie istnieje, to wtedy jest to samo robione, co w: {{LinkZobaczTeż|uchwyt}}. Przed zwróceniem ile razy została dokonana powtórka, jest powiększany licznik powtorek, i to jest otrzymywane z tej funkcji. === {{Śródtytuł|SzablonNaglowkujWTekscieRozdzialu}}{{Code|SzablonNaglowkujWTekscieRozdzialu}} === Funkcja do analizy szablonów nagłówków w tekście rozdziału, nie w nagłówku. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWTekscieRozdzialu(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja sprawdza, czy tekst w bazie kodów jest typu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, w takim razie po wykryciu, że dla tego, że jest to wywołanie szablonowe, a nie instrukcja warukowa w wikikodzie w tekście, wtedy podobnie jest robione, co w funkcji: {{LinkŚródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}, tylko zamiast {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}} jest {{Code|KtorySzablonMaZwracacKategorieTekst}} {{LinkPatrz|KtorySzablonMaZwracacKategorieTekst}}. Przy wykryciu tam szablonu typu {{LinkPatrz|Śródtytuł}}, funkcja zawsze zwraca wartość {{Code|true}}, w innych przypadkach {{Code|false}}. W przypadku intrukcji warunkowej w wikikodzie i dla ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jest wtedy zwracana wartość {{Code|false}}. Funkcja w pozostałych przypadkach zwraca wartość logiczną {{Code|false}}. === {{Śródtytuł|SzablonyWywolywane}}{{Code|SzablonyWywolywane}} === Szablon zamieniający specjalne znaki szablonów, tzn.: {{Code|{{((}}}}, {{Code|{{))}}}}, {{Code|{{!}}}} i {{Code|{{=}}}}, kolejno na: {{Code|{{s|((}}}}, {{Code|{{s|))}}}}, {{Code|{{s|!}}}} i {{Code|{{s|{{=}}}}}}, takich {{ZobaczTeż|StronicowyParser}}, które zawierają wywołania '''Stronicowego Parsera''', czyli ramki typu: {{Code|{{m|StronicowyParser}}}}, czy: {{Code|{{m|StronicowyParser/}}}}, a inne są po prostu przypisywane. W przypadku linków, i nie tylko, tzn. dla szablonów {{LinkZobaczTeż|StronicowyParser}}, z innych stron niż korzystana, co jest trafnie oznaczone zaprzeczeniem parametru {{LinkPatrz|czy_artykul_korzystany}} są liczone parametry pudełkowe {{Code|{{m|Pudełko}}}}. Strony wskazane przez te parametry są analizowane, przy czym linki są przez inną funkcję, a inne już przez znów inną. Szablony nagłówków typu {{LinkPatrz|Śródtytuł}}, czy szablonów stronicowych otwierających i zamykających, one lub jego koledzy, tzn. ich: {{s|StronaStart}} i {{s|StronaKoniec}}, są zastępowane ciągiem pustym. Inne parametry opisane z tabeli {{Code|{{sr|#p.szablony_stronicowe_kontenerowe_formatowania_wzorowego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, są zastępowane ich zawartością, by uniknąć kontaktu nagłówków z tego typu szablonami. Szablony ideksowania określone tabelą: {{Code|{{sr|#p.szablony_indeksowania}}}} {{Patrz|p.szablony_indeksowania}}, nie są rozwijana z kodowania lub są, w zależności, czy zmienna: {{Code|czy_indeksowanie}} {{Patrz|czy_indeksowanie}}, ma wartość {{Code|true}} - tutaj są, czy odpowiadającej fałszywej wartości logicznej - a tutaj już nie. W przypadku instrukcji warunkowych, czy ramek {{lpg|Lua}} w {{lpg|Lua|Scribunto}}, one są rozwijane - kod tego jest zawartością {{LinkPatrz|szablon}}. W innych przypadkach funkcja zwraca wartość {{Code|nil}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywane(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. W powyższym opisie występują szablony opisane w: {{LinkPatrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, a jej definicja jest: <syntaxhighlight lang="lua"> p.szablony_stronicowe_kontenerowe_formatowania_wzorowego={ ["Formuła"]=1; }; </syntaxhighlight> Jest to szablon: {{s|Formuła}} i podobne, liniowe wstawiane do tekstu, ta tabela ma za zadanie zastąpić te szablony ich poszczególnym zawartościom, a ta funkcja, która ją wykorzystywuje się do tego przypadku, jest o nazwie: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}. Tabelą szablonów indeksowania, to są one zdefiniowane przez: {{LinkPatrz|p.szablony_indeksowania}}, a jej zawartość: <syntaxhighlight lang="lua"> p.szablony_indeksowania={ ["Kotwica"] =true, ["Indeksuj"]=true, }; </syntaxhighlight> Są to szablony kotwic: {{s|Kotwica}}, który jest szablonem liniowym, a {{s|Indeksuj}}, natomiast to blokowy. === {{Śródtytuł|SzablonyWywolywaneOgolny}}{{Code|SzablonyWywolywaneOgolny}} === Funkcja rozwija nagłówek, wydzielając z niego zwykły tekst, nie dopełniając pewnych operacji. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywaneOgolny(naglowek)...end; </syntaxhighlight> Parametry funkcji: * {{Code|naglowek}} {{Patrz|naglowek}} - tekst nagłówka napisu wprowadzenia tekstu. Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["WydzielZwykłyTekst"]|p=Specjalne}}}}, kod jej wywoływany jest z parametrami: <syntaxhighlight lang="lua"> local naglowek,Znaczniki,SzablonyStylowe,ZnakiSpecjalne=specjalne_modul["WydzielZwykłyTekst"]( { ---- tekst nagłówka; tekst=naglowek, ---- Nie wykorzystywuj w działaniu funkcji: Znaczniki, SzablonyStylowe, ZnakiSpecjalne; ["nagłówek"]=true, ---- Nie wykorzystuj dekodowania tekstu zakodowanego, bez rozwijania, ale wręcz przzeciwnie rozwijaj, pozostawiaj pewne szczególne kody przed rozkodowaniem; nieklasycznie=true, ---- Bazę kodowania weź z zewnątrz; kodowanie=false, ---- Wykorzystywana tablica kodowania tekstu modułu: Module:Szablonowe, zakodowanego z zewnątrz; ["tablica kodowania"]=tablica_analizy_obiektow_strony_dany_modul, },__FUNKCJA1,__FUNKCJA2); </syntaxhighlight> Ta funkcja wydziela zwykły tekst z nagłówka z szablonami zwykłymi i ramkami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, bez naruszenia działania innych elementów szablonowych, jak tagi, czyli: {{s|#tag:}}, które też współdziałają też w kodzie danego nagłówka. Również i z linkami wewnętrznymi i zewnętrznymi, z których wydziela się zwykły tekst, bo wiadomo, że one nie mogą się znaleźć w linkach '''spisu treści''', bo nie może być link w linku w nim, a one niezależnie jakie, bo to ze względu na {{Strong|HTML}} nie możliwe technologicznie. Definicje dwóch kolejnych funkcji zdefiniowanych powyżej: <syntaxhighlight lang="lua"> ---- szablon - kod obiektu kodu w wikikodzie; ---- obiekt - typ obiektu kodu powyżej; ---- kod - numer tego samego typu obiektu; local __FUNKCJA1=function(szablon,obiekt,kod) ---- Funkcja wykorzystywana do ewentualnego modyfikowania użytych szablonów i przedstawianiu jego kodem symbolicznym, lub zastępowania pewnych szablonów nagłówków wartością pustą; local szablon,wynik=SzablonyWywolywane(szablon,obiekt,kod); return szablon,wynik; end; local __FUNKCJA2=function(szablon,obiekt,kod) --- rozwijaj uzyskany szablon, dalej, gdy napotkasz, jeśli zostanie włączone zmienna indeksowania w postaci wartości logicznej; return czy_indeksowanie; end; </syntaxhighlight> Funkcja zwraca wartości, tzn. zmienną z przetworzenia nagłówkowego, bez usuniętych znaczników, stylów i znaków specjalnych, tzn. części otoczone pewnymi cudzysłowami z taką samą liczbą, więc pogrubienia i pochylenia tekstu: <syntaxhighlight lang="lua"> return naglowek, Znaczniki, SzablonyStylowe, ZnakiSpecjalne; </syntaxhighlight> Definicje tych zwróconych funkcji, tzn.: {{Code|Znaczniki}} {{Patrz|Znaczniki}}, {{Code|SzablonyStylowe}} {{Patrz|SzablonyStylowe}} i {{Code|ZnakiSpecjalne}} {{Patrz|ZnakiSpecjalne}}, którego opisy raczej przedstawiają ich nazwy, dokładnie one są udokumentowane tutaj: <syntaxhighlight lang="lua"> ---- tekst - tekst do przetworzenia; local function Znaczniki(tekst,jakie,__FUNKCJA1,__FUNKCJA2) ---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML;---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML; ---- funkcja do usuwania znaczników, tzn. w niej inne funkcje: __FUNKCJA1 - funkcja do zakodowywania tekstu przed usuwaniem znaczników, a __FUNKCJA2 - funkcja do odkodowania tego, co pozostało; tekst=p["UsuńZnaczniki"](tekst,jakie,__FUNKCJA1,__FUNKCJA2); return tekst; end; local function SzablonyStylowe(tekst) ---- funkcja do usuwania uruchomionych stylów, tzn. tych: <templatestyles src="..."/>, wtedy to staje się kodem parsera przetwarzanego za pomocą tekstu dla tego typu znacznika, kodami parsera mogą być też inne obiekty jak ramki Lua w Scribunto, ale nie muszą być takie, ale my rozważamy tutaj tylko jeden typ kodu parsera. tekst=p["UsuńSzablonyStylów"](tekst); return tekst; end; local function ZnakiSpecjalne(tekst) ---- funkcja do usuwania cudzysłowów w takich samych ilościach z prawej i z lewej strony danego fragmentu tekstu w nim; tekst=p["UsuńZnakiSpecjalne"](tekst); return tekst; end; </syntaxhighlight> Definicje tych funkcji znajdują się również w module: {{Code|{{ld2|Specjalne}}}}, które również przedstawiają inne funkcje do upraszczania tekstu, w tym nagłówka, ale nie tylko, bo dowolnego tekstu. === {{Śródtytuł|RefPrzypisowy}}{{Code|RefPrzypisowy}} === Mechanizm zamieniający kod referencji na jej wersję wyświetlaną na ekranie, czyli w nawiasie kwadratowym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local RefPrzypisowy=function(obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|obiekt}} {{Patrz|obiekt-ref}} - nazwa typu przypisu, czyli jak bez nazwy, czy też jak: '''uwaga''', * {{Code|kod}} {{Patrz|kod-ref}} - numer danego typu przypisu. Gdy {{LinkPatrz|obiekt-ref}} nie ma nazwy, wtedy w nawiasie kwadratowym będzie tylko numerek {{LinkPatrz|kod-ref}}, a jeśli ma nazwę, to nazwa oddzielona spacją z prawej strony, a po nim jest ten numerek. === Dalsza część funkcji - Tom I === Tutaj opowiemy o części wstępnej tej funkcji. ==== Ustalanie zmiennej nazwy modułu aktualnej, czy bieżącej ==== Funkcja ustawia zmienną: {{Code|czy_kodowanie}} {{Patrz|czy_kodowanie}}, na podstawie istnienia zmiennych: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} i {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. ==== Wyznaczanie nazwy modułu aktualnej, czy bieżącej, dla strony aktualnej, jeśli ona nie istnieje ==== Jeżeli zmienna {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} jest odpowiadającej wartości fdałszywej i mamy strona korzystaną, co określa parametr {{LinkPatrz|czy_artykul_korzystany}}, w postaci wartości prawdziwej, wtedy są liczone kolejne zmienne nazw na podstawie istnienia lub nieistnienia zmiennej {{Code|alternatywna}}, a jeśli ona jest prawdziwa, wtedy wybierane są zmienne z tą aktualną nazwą woluminu wynikłe z {{LinkZobaczTeż|strona_aktualna}}, przeciwnie z nazwą bieżącą woluminu,na podstawie tego, co wyświetla '''Stronicowy Parser''', te nazwy są ze sobą łączone, wtedy powstaje pełna nazwa strony, którą przyrównujemy do {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}}. Jeśli wartość {{LinkPatrz|czy_artykul_korzystany}} jest jednak fałszywa, w takim razie jest liczona {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} na podstawie wartości {{LinkPatrz|nazwa_strony}}. ==== Kodowanie '''HTML''' specjalnych znaków strony ==== Nazwę strony {{LinkPatrz|nazwa_strony}}, w której mogą występować specjalne znaki, które są niezrozumiałe z punktu widzenia '''HTML''', jeżeli np.z nich trzeba zbudować identyfikatory '''id''', a więc trzeba je zakodować, robimy to funkcją: {{Code|{{sr|#p.EncodeId|p=Html}}}}. ==== Zwracanie funkcji liczenia numeru nagłówka ==== Wyznaczamy funkcję: {{Code|HNumer}} {{Patrz|HNumer}}, która jest efektem zwrócenia przez: {{Code|{{sr|#p.LiczonyHNumer|p=StronicowyParser/Potrzebne}}}}. ==== Zamienianie szablonów nagłówków, czy nawet tych znaczników, na rozdziały równaniowe ==== Jeśli {{LinkPatrz|czy_kodowanie}} przyjmuje wartość prawdziwą, wtedy definiujemy funkcję: {{LinkŚródtytuł|SpecjalneWprowadzeniaTekstu}}. Dalej funkcja zamienia szablony: {{s|SpisTreści}} i {{s|HNumer}}, a także znaczniki: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, na ich wersję równaniową, aby dało się je rozpoznać jako rozdziały i było je łatwo wsadzić do szablonu takiego jak: {{s|Spis treści}} i inne podobne, za pomocą dwóch kolejnych funkcji wsadzonych do pewnej funkcji modułu {{m|Szablonowe}}, która służy do operacji na takich przypadkach. === Zmienna strony z nagłówkaami === Gdy jest podana zmienna: {{Code|tylko_naglowek}} {{LinkPatrz|tylko_naglowek}}, ma wartość prawdziwą, wtedy zmienna: {{Code|nazwa_strony_z_naglowkami}} {{Patrz|nazwa_strony_z_naglowkami}}, przybiera wartość pustą, przeciwnie gdy zmienna {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}} jest ciągiem pusty, wtedy to samo, w innym pozostałym przypadku jest to dokładnie {{LinkPatrz|nazwa_strony}}, gdzie przed nim znajduje się dwukropek {{Code|:}}. === Dalsza część funkcji - Tom II === Tu powiemy coś o iteratorze, który po zebraniu danych zwraca zmienną {{Code|nil}}, co odpowiada dla pętli, jej przerwaniu. ==== Definicja iteratora zbierania informacji o stronie ==== Aby uruchomić pętle na rzeczywistych danych zakodowanej, czy nie, stronie, trzeba otrzymać zmienną pętli {{Code|iterator}} {{Patrz|iterator}} i go wywoływać bezparametrowo w każdym okrążeniu pętli, aby tak się stało, to trzeba uruchomić funkcję: {{Code|{{sr|#p.IterTekst|p=StronicowyParser/Rozdziały}}}}, na tekście {{LinkPatrz|tekst_artykulu}}, traktując tekst, jakby nie był taki zakodowany, bo tutaj jedynie się liczą elementy niezakodowane, czyli w tym przypadku nagłówki z tekstem rozdziału. ==== Zbieranie informacji o stronie w pętli generowanej przez iterator ==== Będziemy tutaj opisywali pętlę generowaną przez jego iterator {{LinkPatrz|iterator}}. W każdym okrązeniu pętli otrzymujemy dane: * {{Code|naglowek_tab}} {{Patrz|naglowek_tab}} - gdzie pierwszy jego element to {{Code|naglowek}} {{LinkPatrz|naglowek}}, * {{Code|text_rozdzialu}} {{Patrz|text_rozdzialu}} - tekst rozdziału, * {{Code|poziom_rozdzialu}} {{Patrz|poziom_rozdzialu}} - poziom rozdziału. ===== Definicja nowe wartości zbierania uchwytów nagłówka w zmiennej numeracji ===== Deklaracja zmiennej {{Code|numeracja}} {{LinkPatrz|numeracja}} jest na zewnętrz pętli, w niej tworzymy jej nową wartość, którą jest tablica pusta. ==== Uzyskiwanie informacji z tekstu rozdziału nagłówka, i jego możliwych uchwytach, w poszczegolnym okrążeniu pętli, i zrzuceniu tam pojedynczego kodu problemu ==== Jeżeli {{ZobaczTeż|text_rozdzialu}} tekst strony jest zakodowany, to iterujemy po tekście {{LinkPatrz|text_rozdzialu}} w poszukiwaniu kodów bazy kodów zakodowanego tekstu, w tym celu wywołujemy pętlę: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, wtedy uzyskujemy trzy obiekty w każdym przebiegu pętli, tzn. {{Code|szablon}} {{LinkPatrz|szablon}}, {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, za pomocę tego uruchamiamy funkcję: {{LinkŚródtytuł|SzablonNaglowkujWTekscieRozdzialu}}. Jeżeli funkcja napotkała uchwyt szablonu: {{Code|{{s|Śródtytuł}}}}, wtedy jest zatrzymywana, w takim razie mamy informację o wystąpieniu niedozwolonego szablonu nagłówka w tekście. A jeżeli takiego szablonu tam nie ma, to układ iterator {{LinkPatrz|iterator}} iteruje aż do zakończenia danych. ==== Uzyskiwanie nagłówka i do niego identyfikatora '''id''' ==== ===== Tekst niezakodowany nagłówka ===== Gdy tekst nie jest zakodowany, wtedy zmienna: {{LinkPatrz|czy_kodowanie}}, ma wartość odpowiaadające fałszywej, wtedy dla tego nagłówka {{LinkPatrz|naglowek}} jest uruchamiana funkcja: {{Code|{{sr|#p.["PrzetwórzNagłówek"]|p=Specjalne}}}}, wtedy otrzymujemy dwie wartości: {{Code|nazwa_rozdzialu_w_artykule}} {{Patrz|nazwa_rozdzialu_w_artykule}} - zmienna idententyfikatora, {{Code|naglowek}} {{LinkPatrz|naglowek}} - zmienna nagłówka. Te dwie zmienne zostały maksymalnie rozwinięte, zostały przystosowane do tego, aby słuzyły do tego, co trzego zostały stworzone. ===== Tekst zakodowany nagłówka ===== Gdy jednak {{LinkPatrz|czy_kodowanie}} przyjełajednak wartość fałszywą, wtedy jest uruchamiana funkcja: {{LinkŚródtytuł|SzablonyWywolywaneOgolny}}, z której otrzymujemy: {{Code|naglowek}} {{LinkPatrz|naglowek}} - zmienna przetworzonego i maksymalnie rozwiniętego nagłówka, oraz zmienne funkcje: {{LinkPatrz|Znaczniki}}, {{LinkPatrz|SzablonyStylowe}} i {{LinkPatrz|ZnakiSpecjalne}}. Na podstawie defiicji: {{Code|nazwa_rozdzialu_w_artykule}} {{LinkPatrz|nazwa_rozdzialu_w_artykule}}, mamy: {{Code|naglowek}} {{LinkPatrz|naglowek}}. ====== Kompletowanie nagłówka ====== Ten nagłówek kompletujemy funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, usuwając szablony indeksowania {{LinkPatrz|p.szablony_indeksowania}}, a także znaczniki: {{Tag|li}}, {{Tag|ul}} i {{Tag|ol}}. ====== Kompletowanie identyfikatora nagłówka ====== Kompletując: {{Code|nazwa_rozdzialu_w_artykule}} {{LinkPatrz|nazwa_rozdzialu_w_artykule}}, rozwijamy wszystko, oprócz atrybutów, {{Code|obiekt}} {{Code|{{=}}}} {{Code|ATRYBUTY}}, a na szablonach wywołujemy funkcję: {{LinkŚródtytuł|SzablonyWywolywaneOgolny}}. Na identyfikatorze nagłówka {{LinkPatrz|nazwa_rozdzialu_w_artykule}} Wywołujemy kolejno lokalne funkcje: {{LinkPatrz|SzablonyStylowe}} - do usuwania rozwiniętych kodów stylów, {{LinkPatrz|ZnakiSpecjalne}} - do usuwania cudzysłowów, i {{LinkPatrz|Znaczniki}} - do usuwania znaczzników. ====== Gdy w kodzie identyfikatora nie ma symbolicznych szablonów ====== W tym przypadku uruchamiamy fukcję do dekodowania znaków '''HTML''', tzn. dziesiętnych, szesnastkowych i literowych, funkcją: {{Code|{{sr|#p.DecodeKoduHTMLZnaku|p=Html}}}}, a później kodujemy specjalne znaki identyfikatora sposobem: {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, przy pomocy kodów '''HTML''' dziesiętnych. ===== Usuwanie zbędnych znaków w identyfikatorze ===== Usuwane są potrójne i podwójne cudzysłowy {{Code|'}} oraz odstępy i dolne myślniki na końcach łańcucha, a wewnętrz jego kolejne je są zastępowane jedną spacją. ===== Referencje i wzory matematyczne ===== Referencje są zastępowane odpowiednio przy pomocy funkcji: {{LinkŚródtytuł|RefPrzypisowy}}, a wzory matematyczne, dla obiektów typu {{Code|POSTMATH}} {{Patrz|POSTMATH}}, które są zastępowane prawidłowo poprzez: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.text.encode|b=tak}}}}, przy pomocy: {{Code|{{sr|#p.NormaKoduZakodowanegoHtmlTekstu|p=Szablonowe}}}}, obiektem: {{Code|postMath}} {{Patrz|postMath}} z ośmioma znakami cyferkami na końcu tego, którym jest {{Code|kod}} {{LinkPatrz|kod}}. ===== Wstępne przygotowanie identyfikatora do końcowego skutecznego użytku ===== Dla danego identyfikatora one mogą się powtarzać, a identyfikator musi być unikalny, zatem trzeba napisać ich dodatkowe numerki, po policzeniu otrzymamy {{Code|numer_tego_samego_naglowka}} {{Patrz|numer_tego_samego_naglowka}}. ====== Tablica identyfikatora i nagłówka ====== Funkcja wykorzystuje tablicę: {{Code|tablica_powtarzajacych_sie_elementow}} {{Patrz|tablica_powtarzajacych_sie_elementow}}, aby policzyć numer powtarzającego się identyfikatora '''id'''. Dla {{LinkPatrz|numer_tego_samego_naglowka}} równego {{Code|1}}, tworzemy tablicę {{Code|elementy_linku}} {{Patrz|elementy_linku}}, którego pierwszym elementem jest: {{LinkPatrz|nazwa_rozdzialu_w_artykule}}, a drugim nagłówek {{LinkPatrz|naglowek}}, a w przypadku tego numerku innego niż podana liczba, to dajemy do identyfikatora na końcu ten numerek po dolnym myślniku. ====== Uzupełnianie zmiennej do identyfikacji uchwytu z odpowiednim nagłówkiem ====== Jeśli: {{LinkPatrz|obiekty}} i {{LinkPatrz|numeracja}}, istnieją, wtedy do tej pierwszej tablicy dodawane są wszystkie elementy o takim samym typie z {{LinkPatrz|numeracja}}. To dodawanie na końcu tablicy przedstawia się: <syntaxhighlight lang="lua"> for _,value_numeracja in ipairs(numeracja)do obiekty[#obiekty+1]={value_numeracja,{nazwa_strony_z_naglowkami,elementy_linku[1], elementy_linku[2]}}; end; </syntaxhighlight> ====== Tworzenie tablicy nagłówkami i indetyfikatorami ====== Jeśli {{Code|poziom_rozdzialu}} jest większy od zera, tzn. {{Code|> 0}} {{ZobaczTeż|>0}}, wtedy liczymy numer rozdziału przy pomocy funkcji: {{Code|HNumer}} {{LinkPatrz|HNumer}} liczony z: {{Code|poziom_rozdzialu}} {{LinkPatrz|poziom_rozdzialu}}, tworząc w ten sposób wynik w postaci zmiennej {{Code|numer_rozdzialu_ustalony}} {{Patrz|numer_rozdzialu_ustalony}}. {{HNumer|1= ======= Rozdziały ewentualnie powtarzające się ======= }} Na sam koniec tablicy: {{Code|tablica_powtarzajacych_sie_elementow}} {{LinkPatrz|tablica_powtarzajacych_sie_elementow}}, dodajemy element identyfikatora '''id''' bez numerka, tzn.: {{Code|nazwa_rozdzialu_w_artykule}} {{LinkPatrz|nazwa_rozdzialu_w_artykule}}. {{HNumer|1= ======= Tablica spisu treści ======= }} Jest tworzona tablica spisu: {{Code|tablica_spisu_tresci}} {{Patrz|tablica_spisu_tresci}}, jako pusta tablica, z później dodanym elementem o kluczu: {{Code|nazwa_strony}}, którym jest o wartości: {{LinkPatrz|nazwa_strony_z_naglowkami}}. Do tablicy: {{LinkPatrz|tablica_spisu_tresci}}, dodawane są elementy według schematu: <syntaxhighlight lang="lua"> tablica_spisu_tresci[#tablica_spisu_tresci+1]={elementy_linku,numer_rozdzialu_ustalony}; </syntaxhighlight> === Dalsza część funkcji - Tom III === Będziemy się tutaj zajmowali z tekstem przed pierwszym rozdziałem na stronie. ==== Nagłówek na samym początku strony ==== Gdy kodowanie jest jednak włączone, tzn.: {{LinkPatrz|czy_kodowanie}}, jest prawdziwe, i mamy artykuł korzystany, tzn.: {{LinkPatrz|czy_artykul_korzystany}}, i zaprzeczenie wyłowania funkcji: {{LinkPatrz|CzyJestTakiProblemJakoElementTablicy}}, przyjmuje wartość prawdziwą, to jeśli na samym początku znajduje się rozdział, wtedy funkcja zwraca wynik: {{LinkPatrz|tablica_spisu_tresci}}. ==== Tekst przed pierwszym rozdziałem ==== Wyznaczamy ten tekst, który będzie ukrywał się pod zmienną: {{Code|tekst_zerowy}} {{Patrz|tekst_zerowy}}, który jest tekstem przed pierwszym rozdziałem lub samym tekstem zakodowanego wikikodu {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}}. ===== Szablony nagłówka w tekście zerowym ===== W tym tekście iterujemy jak w punkcie: {{LinkZobaczTeż|text_rozdzialu}}, tylko zamiast {{LinkPatrz|text_rozdzialu}} jest {{LinkPatrz|tekst_zerowy}}. === Dalsza część funkcji - Tom IV === Zwracaną wartością tej funkcji jest: {{Code|tablica_spisu_tresci}} {{LinkPatrz|tablica_spisu_tresci}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> s6h69dacad7alxkqfpfk1dtauwaplve 548367 548365 2026-07-26T13:22:11Z Persino 2851 /* Tworzenie tablicy nagłówkami i indetyfikatorami */ 548367 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}|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.PobieranieInformacjiRamkiRozpatrywanejStrony}}{{Code|p.PobieranieInformacjiRamkiRozpatrywanejStrony}} == Pobieranie danych z obiektu {{LinkPatrz|self}}, biorąc jego podtablicę o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiRamkiRozpatrywanejStrony(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa ramki tablicy transportu. == {{Śródtytuł|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}}{{Code|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}} == Funkcja uruchamiacz, główna funkcja dzięki, której ładują się informacje według modułu: {{Code|{{ld2|StronicowyParser/informacje}}}} (tam jest użyty). Ten ładowacz jest pokazany w module opis: {{Code|{{lr2|Moduły/StronicowyParser/informacje}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}. === {{Śródtytuł|DaneNazw}}{{Code|DaneNazw}} === Funkcja licząca nazwy podanej nazwy strony, tzn.: {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} {{Patrz|nazwa_artykulu}}, oraz zwracające te kolejno nazwy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function DaneNazw(pelna_nazwa_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|pelna_nazwa_strony}} {{Patrz|pelna_nazwa_strony}} - pełna nazwa strony. === Dalsza część funkcji - Tom I === ==== Tworzenie i inicjowanie początkowych tabel ==== Funkcja tworzy podtabele tabeli zmiennej obiektowej {{LinkPatrz|self}} o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, o wartości pustej. Następnie są tworzone podtabele puste w tej ostatniej o kluczach: {{Code|dane_analizy_stron}} {{Patrz|dane_analizy_stron}} i {{Code|licencja}}{{Patrz|licencja}}, oraz nilowe zmienne z tego samego, co ostatnie, o kluczu: {{Code|problemy}} {{Patrz|problemy}}. ==== Zmienne nazw strony bieżącej, czy nawet aktualnej, w zależności, czy istnieją odpowiednie ustawienia ==== Jest liczony adres strony, na której jest uruchomiona dana strona, wewnętrznej bezparametrowo według: {{Code|{{sr|#p["PełnaNazwaArtykułu"]|p=Książkowe}}}} {{Patrz|strona_aktualna}}, co z tego są liczone z niego: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, co z tego jest liczona pełna nazwa książki {{Code|pelna_nazwa_ksiazki}} {{Patrz|pelna_nazwa_ksiazki}}. ==== Zbieranie danych ustawień z: {{Code|.../config}}, jeśli istnieją ==== Jest liczony pełny adres ustawień: {{Code|pelna_nazwa_ksiazki_ustawienia}} {{Patrz|pelna_nazwa_ksiazki_ustawienia}}, według schematu: {{Code|"Szablon:Podręcznik/Ustawienia/"..pelna_nazwa_ksiazki}} {{Patrz|UstawieniaKsiążki}}. Co z tego jest sprawdzane, czy istnieje strona: {{Code|pelna_nazwa_ksiazki_ustawienia.."/config"}} {{Patrz|config}}, a jeśli tak, to wtedy wiemy, że to jest szablon, to go przedstawiamy w postaci szablonowej, licząc z: {{Code|{{sr|#p.NazwaSzablonu|p=Szablonowe}}}}. Dalej jest liczony ostatni wyliczony szablon z parametrem {{Code|książka}} {{Patrz|książka}}, dalej jeszcze raz, tym razem z parametrem: {{Code|artykuł}} {{Patrz|artykuł}} - te parametry przedstawiają parametry artykułu książkowego, skąd możemy ściągać stronę, by ją wyświetlić na stronie aktualnej, na pewno parametr {{LinkPatrz|książka}} nie może być parametrem składających z samych znaków odstępów, a jeśli tak jest, w takim razie z tych dwóch parametrów jest liczony parametr {{Code|strona}} {{Patrz|strona}}. Dalej liczymy, czy ona jest poprawnym adresem, używając funkcji: {{Code|{{sr|#p["CzyNiepoprawnaNazwa"]|p=Pudełko/Tom I}}}}. A jeżeli adres jest jednak poprawny, ta funkcja zwraca wartość odpowiadającej fałszywej wartości, wtedy jest liczony pełny adres strony, jeżeli ona jest względna z parametrów, tzn. parametr pierwszy: {{LinkPatrz|strona}}, i parametr drugi: {{LinkPatrz|strona_aktualna}}, co względem tej funkcji mamy już: {{LinkPatrz|strona}}, czyli po tej operacji (procedurze) policzyliśmy bezwzględny jego adres. ===== Liczenie nazw z parametru pełnej nazwy aktualnej, nie bieżącej, strony wynikłe z obliczeń z ustawień ===== Policzona wartość strony: {{LinkPatrz|strona}}, jest sprawdzana, czy adres (strona), pod którym ona się kryje, istnieje, a jeśli tak, to ten adres jest tylko formatowany. Porównujemy adres {{LinkPatrz|strona}} z {{LinkPatrz|strona_aktualna}}, czy przedstawiają nie ten sam adres, a jeżeli tak, to liczymy wszyskie nazwy strony, czyli dla bez {{Code|aktualna_}}, przyrównujemy do tego z tym początkiem, co odpowiada pełnej nazwie strony z {{Code|strona_aktualna}} {{LinkPatrz|strona_aktualna}} {{ZobaczTeż|strona_aktualna}}, i używając funkcji: {{LinkŚródtytuł|DaneNazw}}, ze zmiennej: {{Code|strona}} {{LinkPatrz|strona}} {{ZobaczTeż|strona}}. Te ostatnie nazwy są potrzebne do analizy strony bieżącej, nie aktualnej, tzn. na niej, jakie są szablony, jakie posiada spisy, jakie książki, a w nim spisy do nich, są dołączone. ====== Policzone nazwy strony aktualnej wpisane do ogólnej tablicy ====== A póżniej z adresów pliczonych wywołania, dotyczącej tego aktualnego, liczymy dla podtabeli: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienne o kluczach: {{Code|aktualna_nazwa_przestrzeni}} {{Patrz|aktualna_nazwa_przestrzeni}}, {{Code|aktualna_nazwa_przestrzeni_ksiazki}} {{Patrz|aktualna_nazwa_przestrzeni_ksiazki}}, {{Code|aktualna_nazwa_ksiazki}} {{Patrz|aktualna_nazwa_ksiazki}} i {{Code|aktualna_nazwa_artykulu}} {{Patrz|aktualna_nazwa_artykulu}}, mając zmienne nazw policzone z tego aktualnego. ===== Czy strona bieżąca, ale nie zbiorcza, jest wyświetlana na stronie aktualnej, czy może jest tylko stroną zbiorczą uruchomioną pod inną nazwą ===== Jeśli zmienne nazw są policzone z: {{LinkZobaczTeż|strona}} i {{LinkZobaczTeż|strona_aktualna}}, to wtedy kolejno porównujemy, czy któraś z nich jest nierówna, a jeśli tak, to wywołujemy szablon z parametru: {{Code|zastępcza}} {{ZobaczTeż|zastępcza}} - jest to, czy strona jest zbiorcza, o nazwie: {{LinkPatrz|config}}, czy powinna być wartością niepustą. A jak tak, to wyznaczamy z tablicy: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienną o kluczu: {{Code|alternatywna}} {{Patrz|alternatywna}}, co przyrównujemy jemu wartość logiczną z uzyskanego z szablonu z parametrem {{LinkZobaczTeż|zastępcza}}, a jeżeli ta zmienna przyjmuje wartość odpowiadająca fałszywej, wtedy zmienna z tej samej tablicy o kluczu: {{Code|inna_strona_aktualna_niz_biezaca}} {{Patrz|inna_strona_aktualna_niz_biezaca}} - jest to, czy strona jest inna niż zbiorcza, ale wyświetlana na innej stronie, przyjmuje wartość prawdziwą. === Dalsza część funkcji - Tom II === Tworzymy zmienną: {{Code|tablica_zmiennych}}, która jest tablicą pustą, którą uzupełniamy o elementy o kluczach: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}} - są to dane zebrane z bieżącej strony, i {{Code|linkobiekt}} {{Patrz|linkobiekt}} - są to dane zebrane o linkach na stronie odpowiadających poszczególnym obiektom. Uruchamiamy funkcję: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}, z której wyznaczamy parametr: {{Code|tabela_listy_danych_analizy_ksiazki}} - są to dane zebrane z bieżącej i innych stron skojarzonej z nim, te elementy są tylko w postaci nieprzetworzonej, ale przygotowanej. A jeśli ten parametr jest tabelką - a jeżeli nie jest, to nastąpił błąd przetwarzania, i funkcja nie idzie dalej w instrukcję warunkową, wtedy wywołujemy funkcję: {{Code|{{sr|#p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony|p=StronicowyParser/NumeracjaObiektówStron}}}}. === Dalsza część funkcji - Tom III === Na sam koniec funkcji zwracamy tablicę: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}} - ta zmienna zawiera dane w postaci przetworzonej policzonej, tzn. uchwytom są przydzielone numeracje, sprawdzane, czy uchwyty są policzone, są wyznaczone wszystkie kody problemów, które później są potrzebne do wyznaczania wszystkich kategorii błędów na stronie. == {{Śródtytuł|p.SpisRzeczyWedlePodanegoTekstu}}{{Code|p.SpisRzeczyWedlePodanegoTekstu}} == Funkcja generowania liczenia nagłówków strony, co na tej podstawie może być generowany '''spis treści''' strony. Funkcja przyporządkowuje uchwytom szablonów nagłówków ich identyfikatory i te nagłówki, w którym one leżą, jeżeli zmienna {{LinkPatrz|obiekty}} istnieje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SpisRzeczyWedlePodanegoTekstu(self,tekst_artykulu,nazwa_strony,czy_artykul_korzystany, tylko_naglowek,obiekty,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_obiektow_strony_danych_kodow_specjalnych_modul,KtorySzablonMaZwracacKategorie,wzory_zamiast_kodow,tabela_elementow_strony_kodow)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}} - tekst przetworzony, przygotowany ewentualnie przez pewną funkcję, rozważanego artykułu, * {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} - nazwa strony, danego spisu, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy strona jest bieżąca, * {{Code|tylko_naglowek}} {{Patrz|tylko_naglowek}} - pisz adresy stron z tylko nagłówkami '''#''', bez adresów stron, * {{Code|obiekty}} {{Patrz|obiekty}} - elementy tam zebrane, są wykorzystywane do analizy nagłówków poprzez szablon {{s|Śródtytuł}}, któremu temu nagłówkowi odpowjada pewien uchwyt, czy uchwyty, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}, * {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} - nazwa aktualna, czy bieżąca strony, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy zebranych informacji w postaci zakodowanej modułu {{m|Szablonowe}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tabela przeanalizowanych elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} {{Patrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} - tablica dwuwymiarowa kodów o kluczach: szablonów referencji: '''REF...''' i '''POSTMATH''' oraz ich elementu numeru kodu {{Code|kod}}, którego elementem jest kod tego elementu, * {{Code|KtorySzablonMaZwracacKategorie}} {{Patrz|KtorySzablonMaZwracacKategorie}} - tabela składająca się z trzech elementów, którego pierwszy element to: {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{Patrz|KtorySzablonMaZwracacKategorieNaglowek}} - funkcja dla szablonów problemów dla jak: {{s|Śródtytuł}}, w nagłówku, drugi: {{Code|KtorySzablonMaZwracacKategorieTekst}} {{Patrz|KtorySzablonMaZwracacKategorieTekst}} - funkcja dla tego typu szablonów, ale dla nich w tekście, nie w nagłówku, trzeci: {{Code|CzyJestTakiProblemJakoElementTablicy}} {{Patrz|CzyJestTakiProblemJakoElementTablicy}} - czy nie rozważać, dla rozdziałów zerowych, przeciwnie: ta funkcja może przyjmować wartość {{Code|nil}}, wartość zwracana tego elementu, bo to jest funkcja, zależy, czy jest ustawiony kod problemu: {{Code|nagłówek w tekście rozdziału w stronie korzystanej}} {{Patrz|nagłówek w tekście rozdziału w stronie korzystanej}}, a jeżeli jest taki, to ta funkcja przyjmuje zrzuconą wartość {{Code|true}}, * {{Code|wzory_zamiast_kodow}} {{Patrz|wzory_zamiast_kodow}} - rozważaj wzory według tablicy: {{LinkPatrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}}, lub koduj to według funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}} - to wykorzystuj w przypadku, gdy: {{LinkPatrz|nazwa_strony}}, istnieje, i jest wartością pustą, lub {{Code|{{sr|#p.NormaKoduZakodowanegoWikiTekstu|p=Szablonowe}}}} - przeciwnie, * {{Code|tabela_elementow_strony_kodow}} {{Patrz|tabela_elementow_strony_kodow}} - baza tabela z zapamiętanymi podtabelami, którego poszczególne elementy wykorzystywane w spisie posiadają w sobie tylko pierwszy element w postaci przetworzonego uchwytu, bo używamy tylko uchwytów szablonów nagłówków. === {{Śródtytuł|SpecjalneWprowadzeniaTekstu}}{{Code|SpecjalneWprowadzeniaTekstu}} === Funkcja zamieniające pewne szablony, czy znaczniki, na rozdziały równaniowe. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local SpecjalneWprowadzeniaTekstu=function(szablon,obiekt,kod,czy_szablon,czy_znacznik,czy_liczyc,funkcja1,funkcja2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} {{Patrz|szablon}} - zmienna (szablon), nie musi być to normalny szablon, * {{Code|obiekt}} {{Patrz|obiekt}} - zmienna, którego typu jest obiekt, * {{Code|kod}} {{Patrz|kod}} - numer obiektu typu {{LinkPatrz|obiekt}}, * {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy to jest szablon, * {{Code|czy_znacznik}} {{Patrz|czy_znacznik}} - czy to jest znacznik, * {{Code|czy_liczyc}} {{Patrz|czy_liczyc}} - czy funkcję liczyć w sposób złożony, szablony typu: {{s|SpisTreści}} - zamieniający go na znacznik, czy prosty, co na samym końcu uruchamiana jest funkcja: {{LinkPatrz|funkcja1}}, * {{Code|funkcja1}} {{Patrz|funkcja1}} - funkcja operująca na wygenerowanym pośrednio (dłuższe liczenie) lub bezpośrednio (krótsze) znaczniku, wychodząca z szablonu, i zamieniająca go na rozdział równaniowy, funkcja operująca dla szablonów: {{s|SpisTreści}} lub {{s|HNumer}}, * {{Code|funkcja2}} {{Patrz|funkcja2}} - funkcja operująca na znaczniku '''HTML''' nagłówka - typu jak: {{Tag|h1}}, i zamieniająca go na rozdział równaniowy. ==== {{Śródtytuł|ParametrNR}}{{Code|ParametrNR}} ==== Funkcja liczy dokładnie parametr dany o danym numerze, zbiór danych parametrów oznaczających to samo może być wiele, tylko że jedne mogą być ważniejsze od drugich. Definicja skrótowa funkcja: <syntaxhighlight lang="lua"> local function ParametrNR(numer)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer}} {{Patrz|numer}} - numer parametru. Funkcja wykorzystywuje funkcję do uruchomienia: {{Code|{{sr|#p.SpisRzeczySzablon|p=StronicowyParser/Potrzebne}}}}, do generowania parametrów, a właściwie ich wartości. ==== {{Śródtytuł|ObiektKodNumer}}{{Code|ObiektKodNumer}} ==== Funkcja dodająca do bazy danych kolejny element bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla danego obiektu element na samym końcu, po maksymalnym elemencie do niego. Funkcja liczy kod przy pomocy funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local ObiektKodNumer=function(szablon,obiekt)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}. ==== Dalszy opis funkcji ==== Dla {{LinkPatrz|czy_szablon}} prawdziwego dla szablonów sztucznego spisu treści, sprawdzanego przez tabelkę: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, dla danego szablonowego rozdziału generowanego według {{s|HNumer}}, jest on zamieniany na rozdział równaniowy poprzez funkcję: {{LinkPatrz|funkcja1}}. Ta tabela przedstawia się treścią: <syntaxhighlight lang="lua"> p.szablony_sztucznego_wprowadzenia_tekstu={ ["HNumer"]=1, }; </syntaxhighlight> Dla innych rozdziałów szablonowych, tym razem generowanego przez szablon {{s|SpisTreści}}, którego parametry są wyznaczane przez funkcję: {{LinkŚródtytuł|ParametrNR}}, tabelka parametrów opisująca to: <syntaxhighlight lang="lua"> p.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu={ ["SpisTreści"]={{"artykuł",1,},{"książka",2,},{"nazwa",3,},{"dodatek",4,},{"poziom",},}, }; </syntaxhighlight> Funkcja liczy artykuł, koloruje do niego link w: '''spisie treści''', na czerwona, wtedy generuje dodatkowy znacznik, z właściwością: {{Code|color:red}}, gdy on nie istnieje, i to wstawia do tabeli bazy, lub bez niego, wtedy bezposrednio generuje tekst równy nazwie tego szablonu, opakowany, lub nie, w zależności od istnienia. Do policzenia strony, czy ona istnieje, musi być przedtem zdekodowany funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, by później policzyć to sprawdzenie przy pomocy: {{Code|{{sr|#p.PoliczZbiory|p=Techniczne}}}}. W każdym bądź razie jest ruchumianiana funkcja: {{LinkPatrz|funkcja1}}. Gdy to nie jest szablon, tzn.: {{LinkPatrz|czy_szablon}}, jest fałszywe, ale {{LinkPatrz|czy_znacznik}} jest prawdziwe, to takie znaczniki, jak od: {{Tag|h1}} do {{Tag|h6}}, są zamieniane na czysty tekst. W takim razie wywoływana jest dla tego przypadku funkcja: {{LinkPatrz|funkcja2}}. Funkcja: {{LinkPatrz|funkcja1}}, jest dla szablonów nagłówków, a: {{LinkPatrz|funkcja2}}, dla znaczników nagłówków. Z tych generowanych czystych generowanych tekstów są tworzone w tekście rozdziały równaniowe, by później wygenerować '''spis treści''', właśnie z nimi - z tymi nagłówkami, a bardziej ściśle linkami do nich. === {{Śródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}{{Code|SzablonNaglowkujWNaglowkuRozdzialu}} === Fukcja do obsługi nagłówków {{LinkPatrz|Śródtytuł}} w nagłówku, nie w tekście poza nim. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWNaglowkuRozdzialu(szablon,obiekt,kod,powtorka,parametry_wywolania_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}, * {{Code|powtorka}} {{Patrz|powtorka}} - numer użycia takiego samego szablonu typu {{s|Śródtytuł}} {{Patrz|Śródtytuł}}, * {{Code|parametry_wywolania_szablonu}} {{Patrz|parametry_wywolania_szablonu}} - parametry szablonu wraz z ich wartościami, * {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} - nazwa szablonu wywołania, * {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} - modyfikatory szablonu. Funkcja sprawdza, czy szablon w nagłówku jest typu {{LinkPatrz|Śródtytuł}}, a jeżeli tak, to liczy jego uchwyt, najpierw wyznacza je z parametru o nazwie {{Code|uchwyt}} {{Patrz|uchwyt}}, dalej sprawdzane jest, czy taki uchwyt tak zdefiniowany istnieje, jeśli tak, to wydobywana jest jego przetworzona tabela z tym właśnie uchwytek, funkcja robi to względem numeru {{Code|kod}} {{LinkPatrz|kod}} tego szablonu na podstawie funkcji: {{Code|{{sr|#p.WydobywanieUchwytuZeiBezNumeracji|p=StronicowyParser/ZbieranieDanychStron}}}}. Jeżeli wydobyta tabela {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} nie istnieje, w takim razie jest ona dekodowana funkcją: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, a później jest traktowana jako adres '''URL''', tzn. jest dekodowana funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, dalej jest tworzona tabela pusta: {{LinkPatrz|lista_dwuelementowa}}, co dalej jest tam wstawiana do niej jako pierwszy element uzyskany uchwyt przetworzony. A jeśli jednak {{LinkPatrz|lista_dwuelementowa}} została wydobyta z naszej funkcji tabela, która istnieje, wtedy funkcja idzie, niż poprzednio, w inny krok instrukcji warunkowej, wtedy z tej tabeli jest wydobywany pierwszy element jako przetworzony wcześniej uchwyt. Gdy {{ZobaczTeż|uchwyt}} przetworzony uchwyt jest łańcuchem znaków niepusty, wtedy on jest dodawany w postaci tabeli, w której jest ten uchwyt, na sam koniec tabeli {{Code|numeracja}} {{Patrz|numeracja}}. Gdy liczba powtórzeń jest większa niż zero, wtedy jest wywoływana funkcja, przy którym mają być zwrócone kategorie, jeśli zostaną użyte, o nazwie {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}}. Gdy jednak uchwyt uzyskany nie istnieje, to wtedy jest to samo robione, co w: {{LinkZobaczTeż|uchwyt}}. Przed zwróceniem ile razy została dokonana powtórka, jest powiększany licznik powtorek, i to jest otrzymywane z tej funkcji. === {{Śródtytuł|SzablonNaglowkujWTekscieRozdzialu}}{{Code|SzablonNaglowkujWTekscieRozdzialu}} === Funkcja do analizy szablonów nagłówków w tekście rozdziału, nie w nagłówku. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWTekscieRozdzialu(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja sprawdza, czy tekst w bazie kodów jest typu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, w takim razie po wykryciu, że dla tego, że jest to wywołanie szablonowe, a nie instrukcja warukowa w wikikodzie w tekście, wtedy podobnie jest robione, co w funkcji: {{LinkŚródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}, tylko zamiast {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}} jest {{Code|KtorySzablonMaZwracacKategorieTekst}} {{LinkPatrz|KtorySzablonMaZwracacKategorieTekst}}. Przy wykryciu tam szablonu typu {{LinkPatrz|Śródtytuł}}, funkcja zawsze zwraca wartość {{Code|true}}, w innych przypadkach {{Code|false}}. W przypadku intrukcji warunkowej w wikikodzie i dla ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jest wtedy zwracana wartość {{Code|false}}. Funkcja w pozostałych przypadkach zwraca wartość logiczną {{Code|false}}. === {{Śródtytuł|SzablonyWywolywane}}{{Code|SzablonyWywolywane}} === Szablon zamieniający specjalne znaki szablonów, tzn.: {{Code|{{((}}}}, {{Code|{{))}}}}, {{Code|{{!}}}} i {{Code|{{=}}}}, kolejno na: {{Code|{{s|((}}}}, {{Code|{{s|))}}}}, {{Code|{{s|!}}}} i {{Code|{{s|{{=}}}}}}, takich {{ZobaczTeż|StronicowyParser}}, które zawierają wywołania '''Stronicowego Parsera''', czyli ramki typu: {{Code|{{m|StronicowyParser}}}}, czy: {{Code|{{m|StronicowyParser/}}}}, a inne są po prostu przypisywane. W przypadku linków, i nie tylko, tzn. dla szablonów {{LinkZobaczTeż|StronicowyParser}}, z innych stron niż korzystana, co jest trafnie oznaczone zaprzeczeniem parametru {{LinkPatrz|czy_artykul_korzystany}} są liczone parametry pudełkowe {{Code|{{m|Pudełko}}}}. Strony wskazane przez te parametry są analizowane, przy czym linki są przez inną funkcję, a inne już przez znów inną. Szablony nagłówków typu {{LinkPatrz|Śródtytuł}}, czy szablonów stronicowych otwierających i zamykających, one lub jego koledzy, tzn. ich: {{s|StronaStart}} i {{s|StronaKoniec}}, są zastępowane ciągiem pustym. Inne parametry opisane z tabeli {{Code|{{sr|#p.szablony_stronicowe_kontenerowe_formatowania_wzorowego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, są zastępowane ich zawartością, by uniknąć kontaktu nagłówków z tego typu szablonami. Szablony ideksowania określone tabelą: {{Code|{{sr|#p.szablony_indeksowania}}}} {{Patrz|p.szablony_indeksowania}}, nie są rozwijana z kodowania lub są, w zależności, czy zmienna: {{Code|czy_indeksowanie}} {{Patrz|czy_indeksowanie}}, ma wartość {{Code|true}} - tutaj są, czy odpowiadającej fałszywej wartości logicznej - a tutaj już nie. W przypadku instrukcji warunkowych, czy ramek {{lpg|Lua}} w {{lpg|Lua|Scribunto}}, one są rozwijane - kod tego jest zawartością {{LinkPatrz|szablon}}. W innych przypadkach funkcja zwraca wartość {{Code|nil}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywane(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. W powyższym opisie występują szablony opisane w: {{LinkPatrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, a jej definicja jest: <syntaxhighlight lang="lua"> p.szablony_stronicowe_kontenerowe_formatowania_wzorowego={ ["Formuła"]=1; }; </syntaxhighlight> Jest to szablon: {{s|Formuła}} i podobne, liniowe wstawiane do tekstu, ta tabela ma za zadanie zastąpić te szablony ich poszczególnym zawartościom, a ta funkcja, która ją wykorzystywuje się do tego przypadku, jest o nazwie: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}. Tabelą szablonów indeksowania, to są one zdefiniowane przez: {{LinkPatrz|p.szablony_indeksowania}}, a jej zawartość: <syntaxhighlight lang="lua"> p.szablony_indeksowania={ ["Kotwica"] =true, ["Indeksuj"]=true, }; </syntaxhighlight> Są to szablony kotwic: {{s|Kotwica}}, który jest szablonem liniowym, a {{s|Indeksuj}}, natomiast to blokowy. === {{Śródtytuł|SzablonyWywolywaneOgolny}}{{Code|SzablonyWywolywaneOgolny}} === Funkcja rozwija nagłówek, wydzielając z niego zwykły tekst, nie dopełniając pewnych operacji. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywaneOgolny(naglowek)...end; </syntaxhighlight> Parametry funkcji: * {{Code|naglowek}} {{Patrz|naglowek}} - tekst nagłówka napisu wprowadzenia tekstu. Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["WydzielZwykłyTekst"]|p=Specjalne}}}}, kod jej wywoływany jest z parametrami: <syntaxhighlight lang="lua"> local naglowek,Znaczniki,SzablonyStylowe,ZnakiSpecjalne=specjalne_modul["WydzielZwykłyTekst"]( { ---- tekst nagłówka; tekst=naglowek, ---- Nie wykorzystywuj w działaniu funkcji: Znaczniki, SzablonyStylowe, ZnakiSpecjalne; ["nagłówek"]=true, ---- Nie wykorzystuj dekodowania tekstu zakodowanego, bez rozwijania, ale wręcz przzeciwnie rozwijaj, pozostawiaj pewne szczególne kody przed rozkodowaniem; nieklasycznie=true, ---- Bazę kodowania weź z zewnątrz; kodowanie=false, ---- Wykorzystywana tablica kodowania tekstu modułu: Module:Szablonowe, zakodowanego z zewnątrz; ["tablica kodowania"]=tablica_analizy_obiektow_strony_dany_modul, },__FUNKCJA1,__FUNKCJA2); </syntaxhighlight> Ta funkcja wydziela zwykły tekst z nagłówka z szablonami zwykłymi i ramkami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, bez naruszenia działania innych elementów szablonowych, jak tagi, czyli: {{s|#tag:}}, które też współdziałają też w kodzie danego nagłówka. Również i z linkami wewnętrznymi i zewnętrznymi, z których wydziela się zwykły tekst, bo wiadomo, że one nie mogą się znaleźć w linkach '''spisu treści''', bo nie może być link w linku w nim, a one niezależnie jakie, bo to ze względu na {{Strong|HTML}} nie możliwe technologicznie. Definicje dwóch kolejnych funkcji zdefiniowanych powyżej: <syntaxhighlight lang="lua"> ---- szablon - kod obiektu kodu w wikikodzie; ---- obiekt - typ obiektu kodu powyżej; ---- kod - numer tego samego typu obiektu; local __FUNKCJA1=function(szablon,obiekt,kod) ---- Funkcja wykorzystywana do ewentualnego modyfikowania użytych szablonów i przedstawianiu jego kodem symbolicznym, lub zastępowania pewnych szablonów nagłówków wartością pustą; local szablon,wynik=SzablonyWywolywane(szablon,obiekt,kod); return szablon,wynik; end; local __FUNKCJA2=function(szablon,obiekt,kod) --- rozwijaj uzyskany szablon, dalej, gdy napotkasz, jeśli zostanie włączone zmienna indeksowania w postaci wartości logicznej; return czy_indeksowanie; end; </syntaxhighlight> Funkcja zwraca wartości, tzn. zmienną z przetworzenia nagłówkowego, bez usuniętych znaczników, stylów i znaków specjalnych, tzn. części otoczone pewnymi cudzysłowami z taką samą liczbą, więc pogrubienia i pochylenia tekstu: <syntaxhighlight lang="lua"> return naglowek, Znaczniki, SzablonyStylowe, ZnakiSpecjalne; </syntaxhighlight> Definicje tych zwróconych funkcji, tzn.: {{Code|Znaczniki}} {{Patrz|Znaczniki}}, {{Code|SzablonyStylowe}} {{Patrz|SzablonyStylowe}} i {{Code|ZnakiSpecjalne}} {{Patrz|ZnakiSpecjalne}}, którego opisy raczej przedstawiają ich nazwy, dokładnie one są udokumentowane tutaj: <syntaxhighlight lang="lua"> ---- tekst - tekst do przetworzenia; local function Znaczniki(tekst,jakie,__FUNKCJA1,__FUNKCJA2) ---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML;---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML; ---- funkcja do usuwania znaczników, tzn. w niej inne funkcje: __FUNKCJA1 - funkcja do zakodowywania tekstu przed usuwaniem znaczników, a __FUNKCJA2 - funkcja do odkodowania tego, co pozostało; tekst=p["UsuńZnaczniki"](tekst,jakie,__FUNKCJA1,__FUNKCJA2); return tekst; end; local function SzablonyStylowe(tekst) ---- funkcja do usuwania uruchomionych stylów, tzn. tych: <templatestyles src="..."/>, wtedy to staje się kodem parsera przetwarzanego za pomocą tekstu dla tego typu znacznika, kodami parsera mogą być też inne obiekty jak ramki Lua w Scribunto, ale nie muszą być takie, ale my rozważamy tutaj tylko jeden typ kodu parsera. tekst=p["UsuńSzablonyStylów"](tekst); return tekst; end; local function ZnakiSpecjalne(tekst) ---- funkcja do usuwania cudzysłowów w takich samych ilościach z prawej i z lewej strony danego fragmentu tekstu w nim; tekst=p["UsuńZnakiSpecjalne"](tekst); return tekst; end; </syntaxhighlight> Definicje tych funkcji znajdują się również w module: {{Code|{{ld2|Specjalne}}}}, które również przedstawiają inne funkcje do upraszczania tekstu, w tym nagłówka, ale nie tylko, bo dowolnego tekstu. === {{Śródtytuł|RefPrzypisowy}}{{Code|RefPrzypisowy}} === Mechanizm zamieniający kod referencji na jej wersję wyświetlaną na ekranie, czyli w nawiasie kwadratowym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local RefPrzypisowy=function(obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|obiekt}} {{Patrz|obiekt-ref}} - nazwa typu przypisu, czyli jak bez nazwy, czy też jak: '''uwaga''', * {{Code|kod}} {{Patrz|kod-ref}} - numer danego typu przypisu. Gdy {{LinkPatrz|obiekt-ref}} nie ma nazwy, wtedy w nawiasie kwadratowym będzie tylko numerek {{LinkPatrz|kod-ref}}, a jeśli ma nazwę, to nazwa oddzielona spacją z prawej strony, a po nim jest ten numerek. === Dalsza część funkcji - Tom I === Tutaj opowiemy o części wstępnej tej funkcji. ==== Ustalanie zmiennej nazwy modułu aktualnej, czy bieżącej ==== Funkcja ustawia zmienną: {{Code|czy_kodowanie}} {{Patrz|czy_kodowanie}}, na podstawie istnienia zmiennych: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} i {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. ==== Wyznaczanie nazwy modułu aktualnej, czy bieżącej, dla strony aktualnej, jeśli ona nie istnieje ==== Jeżeli zmienna {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} jest odpowiadającej wartości fdałszywej i mamy strona korzystaną, co określa parametr {{LinkPatrz|czy_artykul_korzystany}}, w postaci wartości prawdziwej, wtedy są liczone kolejne zmienne nazw na podstawie istnienia lub nieistnienia zmiennej {{Code|alternatywna}}, a jeśli ona jest prawdziwa, wtedy wybierane są zmienne z tą aktualną nazwą woluminu wynikłe z {{LinkZobaczTeż|strona_aktualna}}, przeciwnie z nazwą bieżącą woluminu,na podstawie tego, co wyświetla '''Stronicowy Parser''', te nazwy są ze sobą łączone, wtedy powstaje pełna nazwa strony, którą przyrównujemy do {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}}. Jeśli wartość {{LinkPatrz|czy_artykul_korzystany}} jest jednak fałszywa, w takim razie jest liczona {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} na podstawie wartości {{LinkPatrz|nazwa_strony}}. ==== Kodowanie '''HTML''' specjalnych znaków strony ==== Nazwę strony {{LinkPatrz|nazwa_strony}}, w której mogą występować specjalne znaki, które są niezrozumiałe z punktu widzenia '''HTML''', jeżeli np.z nich trzeba zbudować identyfikatory '''id''', a więc trzeba je zakodować, robimy to funkcją: {{Code|{{sr|#p.EncodeId|p=Html}}}}. ==== Zwracanie funkcji liczenia numeru nagłówka ==== Wyznaczamy funkcję: {{Code|HNumer}} {{Patrz|HNumer}}, która jest efektem zwrócenia przez: {{Code|{{sr|#p.LiczonyHNumer|p=StronicowyParser/Potrzebne}}}}. ==== Zamienianie szablonów nagłówków, czy nawet tych znaczników, na rozdziały równaniowe ==== Jeśli {{LinkPatrz|czy_kodowanie}} przyjmuje wartość prawdziwą, wtedy definiujemy funkcję: {{LinkŚródtytuł|SpecjalneWprowadzeniaTekstu}}. Dalej funkcja zamienia szablony: {{s|SpisTreści}} i {{s|HNumer}}, a także znaczniki: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, na ich wersję równaniową, aby dało się je rozpoznać jako rozdziały i było je łatwo wsadzić do szablonu takiego jak: {{s|Spis treści}} i inne podobne, za pomocą dwóch kolejnych funkcji wsadzonych do pewnej funkcji modułu {{m|Szablonowe}}, która służy do operacji na takich przypadkach. === Zmienna strony z nagłówkaami === Gdy jest podana zmienna: {{Code|tylko_naglowek}} {{LinkPatrz|tylko_naglowek}}, ma wartość prawdziwą, wtedy zmienna: {{Code|nazwa_strony_z_naglowkami}} {{Patrz|nazwa_strony_z_naglowkami}}, przybiera wartość pustą, przeciwnie gdy zmienna {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}} jest ciągiem pusty, wtedy to samo, w innym pozostałym przypadku jest to dokładnie {{LinkPatrz|nazwa_strony}}, gdzie przed nim znajduje się dwukropek {{Code|:}}. === Dalsza część funkcji - Tom II === Tu powiemy coś o iteratorze, który po zebraniu danych zwraca zmienną {{Code|nil}}, co odpowiada dla pętli, jej przerwaniu. ==== Definicja iteratora zbierania informacji o stronie ==== Aby uruchomić pętle na rzeczywistych danych zakodowanej, czy nie, stronie, trzeba otrzymać zmienną pętli {{Code|iterator}} {{Patrz|iterator}} i go wywoływać bezparametrowo w każdym okrążeniu pętli, aby tak się stało, to trzeba uruchomić funkcję: {{Code|{{sr|#p.IterTekst|p=StronicowyParser/Rozdziały}}}}, na tekście {{LinkPatrz|tekst_artykulu}}, traktując tekst, jakby nie był taki zakodowany, bo tutaj jedynie się liczą elementy niezakodowane, czyli w tym przypadku nagłówki z tekstem rozdziału. ==== Zbieranie informacji o stronie w pętli generowanej przez iterator ==== Będziemy tutaj opisywali pętlę generowaną przez jego iterator {{LinkPatrz|iterator}}. W każdym okrązeniu pętli otrzymujemy dane: * {{Code|naglowek_tab}} {{Patrz|naglowek_tab}} - gdzie pierwszy jego element to {{Code|naglowek}} {{LinkPatrz|naglowek}}, * {{Code|text_rozdzialu}} {{Patrz|text_rozdzialu}} - tekst rozdziału, * {{Code|poziom_rozdzialu}} {{Patrz|poziom_rozdzialu}} - poziom rozdziału. ===== Definicja nowe wartości zbierania uchwytów nagłówka w zmiennej numeracji ===== Deklaracja zmiennej {{Code|numeracja}} {{LinkPatrz|numeracja}} jest na zewnętrz pętli, w niej tworzymy jej nową wartość, którą jest tablica pusta. ==== Uzyskiwanie informacji z tekstu rozdziału nagłówka, i jego możliwych uchwytach, w poszczegolnym okrążeniu pętli, i zrzuceniu tam pojedynczego kodu problemu ==== Jeżeli {{ZobaczTeż|text_rozdzialu}} tekst strony jest zakodowany, to iterujemy po tekście {{LinkPatrz|text_rozdzialu}} w poszukiwaniu kodów bazy kodów zakodowanego tekstu, w tym celu wywołujemy pętlę: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, wtedy uzyskujemy trzy obiekty w każdym przebiegu pętli, tzn. {{Code|szablon}} {{LinkPatrz|szablon}}, {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, za pomocę tego uruchamiamy funkcję: {{LinkŚródtytuł|SzablonNaglowkujWTekscieRozdzialu}}. Jeżeli funkcja napotkała uchwyt szablonu: {{Code|{{s|Śródtytuł}}}}, wtedy jest zatrzymywana, w takim razie mamy informację o wystąpieniu niedozwolonego szablonu nagłówka w tekście. A jeżeli takiego szablonu tam nie ma, to układ iterator {{LinkPatrz|iterator}} iteruje aż do zakończenia danych. ==== Uzyskiwanie nagłówka i do niego identyfikatora '''id''' ==== ===== Tekst niezakodowany nagłówka ===== Gdy tekst nie jest zakodowany, wtedy zmienna: {{LinkPatrz|czy_kodowanie}}, ma wartość odpowiaadające fałszywej, wtedy dla tego nagłówka {{LinkPatrz|naglowek}} jest uruchamiana funkcja: {{Code|{{sr|#p.["PrzetwórzNagłówek"]|p=Specjalne}}}}, wtedy otrzymujemy dwie wartości: {{Code|nazwa_rozdzialu_w_artykule}} {{Patrz|nazwa_rozdzialu_w_artykule}} - zmienna idententyfikatora, {{Code|naglowek}} {{LinkPatrz|naglowek}} - zmienna nagłówka. Te dwie zmienne zostały maksymalnie rozwinięte, zostały przystosowane do tego, aby słuzyły do tego, co trzego zostały stworzone. ===== Tekst zakodowany nagłówka ===== Gdy jednak {{LinkPatrz|czy_kodowanie}} przyjełajednak wartość fałszywą, wtedy jest uruchamiana funkcja: {{LinkŚródtytuł|SzablonyWywolywaneOgolny}}, z której otrzymujemy: {{Code|naglowek}} {{LinkPatrz|naglowek}} - zmienna przetworzonego i maksymalnie rozwiniętego nagłówka, oraz zmienne funkcje: {{LinkPatrz|Znaczniki}}, {{LinkPatrz|SzablonyStylowe}} i {{LinkPatrz|ZnakiSpecjalne}}. Na podstawie defiicji: {{Code|nazwa_rozdzialu_w_artykule}} {{LinkPatrz|nazwa_rozdzialu_w_artykule}}, mamy: {{Code|naglowek}} {{LinkPatrz|naglowek}}. ====== Kompletowanie nagłówka ====== Ten nagłówek kompletujemy funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, usuwając szablony indeksowania {{LinkPatrz|p.szablony_indeksowania}}, a także znaczniki: {{Tag|li}}, {{Tag|ul}} i {{Tag|ol}}. ====== Kompletowanie identyfikatora nagłówka ====== Kompletując: {{Code|nazwa_rozdzialu_w_artykule}} {{LinkPatrz|nazwa_rozdzialu_w_artykule}}, rozwijamy wszystko, oprócz atrybutów, {{Code|obiekt}} {{Code|{{=}}}} {{Code|ATRYBUTY}}, a na szablonach wywołujemy funkcję: {{LinkŚródtytuł|SzablonyWywolywaneOgolny}}. Na identyfikatorze nagłówka {{LinkPatrz|nazwa_rozdzialu_w_artykule}} Wywołujemy kolejno lokalne funkcje: {{LinkPatrz|SzablonyStylowe}} - do usuwania rozwiniętych kodów stylów, {{LinkPatrz|ZnakiSpecjalne}} - do usuwania cudzysłowów, i {{LinkPatrz|Znaczniki}} - do usuwania znaczzników. ====== Gdy w kodzie identyfikatora nie ma symbolicznych szablonów ====== W tym przypadku uruchamiamy fukcję do dekodowania znaków '''HTML''', tzn. dziesiętnych, szesnastkowych i literowych, funkcją: {{Code|{{sr|#p.DecodeKoduHTMLZnaku|p=Html}}}}, a później kodujemy specjalne znaki identyfikatora sposobem: {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, przy pomocy kodów '''HTML''' dziesiętnych. ===== Usuwanie zbędnych znaków w identyfikatorze ===== Usuwane są potrójne i podwójne cudzysłowy {{Code|'}} oraz odstępy i dolne myślniki na końcach łańcucha, a wewnętrz jego kolejne je są zastępowane jedną spacją. ===== Referencje i wzory matematyczne ===== Referencje są zastępowane odpowiednio przy pomocy funkcji: {{LinkŚródtytuł|RefPrzypisowy}}, a wzory matematyczne, dla obiektów typu {{Code|POSTMATH}} {{Patrz|POSTMATH}}, które są zastępowane prawidłowo poprzez: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.text.encode|b=tak}}}}, przy pomocy: {{Code|{{sr|#p.NormaKoduZakodowanegoHtmlTekstu|p=Szablonowe}}}}, obiektem: {{Code|postMath}} {{Patrz|postMath}} z ośmioma znakami cyferkami na końcu tego, którym jest {{Code|kod}} {{LinkPatrz|kod}}. ===== Wstępne przygotowanie identyfikatora do końcowego skutecznego użytku ===== Dla danego identyfikatora one mogą się powtarzać, a identyfikator musi być unikalny, zatem trzeba napisać ich dodatkowe numerki, po policzeniu otrzymamy {{Code|numer_tego_samego_naglowka}} {{Patrz|numer_tego_samego_naglowka}}. ====== Tablica identyfikatora i nagłówka ====== Funkcja wykorzystuje tablicę: {{Code|tablica_powtarzajacych_sie_elementow}} {{Patrz|tablica_powtarzajacych_sie_elementow}}, aby policzyć numer powtarzającego się identyfikatora '''id'''. Dla {{LinkPatrz|numer_tego_samego_naglowka}} równego {{Code|1}}, tworzemy tablicę {{Code|elementy_linku}} {{Patrz|elementy_linku}}, którego pierwszym elementem jest: {{LinkPatrz|nazwa_rozdzialu_w_artykule}}, a drugim nagłówek {{LinkPatrz|naglowek}}, a w przypadku tego numerku innego niż podana liczba, to dajemy do identyfikatora na końcu ten numerek po dolnym myślniku. ====== Uzupełnianie zmiennej do identyfikacji uchwytu z odpowiednim nagłówkiem ====== Jeśli: {{LinkPatrz|obiekty}} i {{LinkPatrz|numeracja}}, istnieją, wtedy do tej pierwszej tablicy dodawane są wszystkie elementy o takim samym typie z {{LinkPatrz|numeracja}}. To dodawanie na końcu tablicy przedstawia się: <syntaxhighlight lang="lua"> for _,value_numeracja in ipairs(numeracja)do obiekty[#obiekty+1]={value_numeracja,{nazwa_strony_z_naglowkami,elementy_linku[1], elementy_linku[2]}}; end; </syntaxhighlight> ====== Tworzenie tablicy nagłówkami i indetyfikatorami ====== Jeśli {{Code|poziom_rozdzialu}} jest większy od zera, tzn. {{Code|> 0}} {{ZobaczTeż|>0}}, wtedy liczymy numer rozdziału przy pomocy funkcji: {{Code|HNumer}} {{LinkPatrz|HNumer}} liczony z: {{Code|poziom_rozdzialu}} {{LinkPatrz|poziom_rozdzialu}}, tworząc w ten sposób wynik w postaci zmiennej {{Code|numer_rozdzialu_ustalony}} {{Patrz|numer_rozdzialu_ustalony}}. {{HNumer|1= ======= Rozdziały ewentualnie powtarzające się ======= }} Na sam koniec tablicy: {{Code|tablica_powtarzajacych_sie_elementow}} {{LinkPatrz|tablica_powtarzajacych_sie_elementow}}, dodajemy element identyfikatora '''id''' bez numerka, tzn.: {{Code|nazwa_rozdzialu_w_artykule}} {{LinkPatrz|nazwa_rozdzialu_w_artykule}}. {{HNumer|1= ======= Tablica spisu treści ======= }} Jest tworzona tablica spisu: {{Code|tablica_spisu_tresci}} {{Patrz|tablica_spisu_tresci}}, jako pusta tablica, z później dodanym elementem o kluczu: {{Code|nazwa_strony}} {{Patrz|tablica_spisu_tresci.nazwa_strony}}, którym jest o wartości: {{LinkPatrz|nazwa_strony_z_naglowkami}}. Do tablicy: {{LinkPatrz|tablica_spisu_tresci}}, dodawane są elementy według schematu: <syntaxhighlight lang="lua"> tablica_spisu_tresci[#tablica_spisu_tresci+1]={elementy_linku,numer_rozdzialu_ustalony}; </syntaxhighlight> === Dalsza część funkcji - Tom III === Będziemy się tutaj zajmowali z tekstem przed pierwszym rozdziałem na stronie. ==== Nagłówek na samym początku strony ==== Gdy kodowanie jest jednak włączone, tzn.: {{LinkPatrz|czy_kodowanie}}, jest prawdziwe, i mamy artykuł korzystany, tzn.: {{LinkPatrz|czy_artykul_korzystany}}, i zaprzeczenie wyłowania funkcji: {{LinkPatrz|CzyJestTakiProblemJakoElementTablicy}}, przyjmuje wartość prawdziwą, to jeśli na samym początku znajduje się rozdział, wtedy funkcja zwraca wynik: {{LinkPatrz|tablica_spisu_tresci}}. ==== Tekst przed pierwszym rozdziałem ==== Wyznaczamy ten tekst, który będzie ukrywał się pod zmienną: {{Code|tekst_zerowy}} {{Patrz|tekst_zerowy}}, który jest tekstem przed pierwszym rozdziałem lub samym tekstem zakodowanego wikikodu {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}}. ===== Szablony nagłówka w tekście zerowym ===== W tym tekście iterujemy jak w punkcie: {{LinkZobaczTeż|text_rozdzialu}}, tylko zamiast {{LinkPatrz|text_rozdzialu}} jest {{LinkPatrz|tekst_zerowy}}. === Dalsza część funkcji - Tom IV === Zwracaną wartością tej funkcji jest: {{Code|tablica_spisu_tresci}} {{LinkPatrz|tablica_spisu_tresci}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> dzpivcv5q105wvv1phra73m1boldq99